@cloud-copilot/iam-policy 0.1.3 → 0.1.5-0

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 (71) hide show
  1. package/dist/cjs/actions/action.d.ts +7 -1
  2. package/dist/cjs/actions/action.d.ts.map +1 -1
  3. package/dist/cjs/actions/action.js +9 -0
  4. package/dist/cjs/actions/action.js.map +1 -1
  5. package/dist/cjs/annotations/annotations.d.ts +55 -0
  6. package/dist/cjs/annotations/annotations.d.ts.map +1 -0
  7. package/dist/cjs/annotations/annotations.js +29 -0
  8. package/dist/cjs/annotations/annotations.js.map +1 -0
  9. package/dist/cjs/conditions/condition.d.ts +29 -1
  10. package/dist/cjs/conditions/condition.d.ts.map +1 -1
  11. package/dist/cjs/conditions/condition.js +11 -0
  12. package/dist/cjs/conditions/condition.js.map +1 -1
  13. package/dist/cjs/parser.d.ts +2 -1
  14. package/dist/cjs/parser.d.ts.map +1 -1
  15. package/dist/cjs/parser.js +5 -1
  16. package/dist/cjs/parser.js.map +1 -1
  17. package/dist/cjs/policies/policy.d.ts +28 -3
  18. package/dist/cjs/policies/policy.d.ts.map +1 -1
  19. package/dist/cjs/policies/policy.js +26 -2
  20. package/dist/cjs/policies/policy.js.map +1 -1
  21. package/dist/cjs/principals/principal.d.ts +7 -1
  22. package/dist/cjs/principals/principal.d.ts.map +1 -1
  23. package/dist/cjs/principals/principal.js +9 -0
  24. package/dist/cjs/principals/principal.js.map +1 -1
  25. package/dist/cjs/resources/resource.d.ts +7 -1
  26. package/dist/cjs/resources/resource.d.ts.map +1 -1
  27. package/dist/cjs/resources/resource.js +8 -0
  28. package/dist/cjs/resources/resource.js.map +1 -1
  29. package/dist/cjs/statements/statement.d.ts +112 -12
  30. package/dist/cjs/statements/statement.d.ts.map +1 -1
  31. package/dist/cjs/statements/statement.js +112 -7
  32. package/dist/cjs/statements/statement.js.map +1 -1
  33. package/dist/cjs/validate/validate.d.ts.map +1 -1
  34. package/dist/cjs/validate/validate.js +76 -1
  35. package/dist/cjs/validate/validate.js.map +1 -1
  36. package/dist/esm/actions/action.d.ts +7 -1
  37. package/dist/esm/actions/action.d.ts.map +1 -1
  38. package/dist/esm/actions/action.js +8 -0
  39. package/dist/esm/actions/action.js.map +1 -1
  40. package/dist/esm/annotations/annotations.d.ts +55 -0
  41. package/dist/esm/annotations/annotations.d.ts.map +1 -0
  42. package/dist/esm/annotations/annotations.js +24 -0
  43. package/dist/esm/annotations/annotations.js.map +1 -0
  44. package/dist/esm/conditions/condition.d.ts +29 -1
  45. package/dist/esm/conditions/condition.d.ts.map +1 -1
  46. package/dist/esm/conditions/condition.js +11 -0
  47. package/dist/esm/conditions/condition.js.map +1 -1
  48. package/dist/esm/parser.d.ts +2 -1
  49. package/dist/esm/parser.d.ts.map +1 -1
  50. package/dist/esm/parser.js +4 -1
  51. package/dist/esm/parser.js.map +1 -1
  52. package/dist/esm/policies/policy.d.ts +28 -3
  53. package/dist/esm/policies/policy.d.ts.map +1 -1
  54. package/dist/esm/policies/policy.js +23 -2
  55. package/dist/esm/policies/policy.js.map +1 -1
  56. package/dist/esm/principals/principal.d.ts +7 -1
  57. package/dist/esm/principals/principal.d.ts.map +1 -1
  58. package/dist/esm/principals/principal.js +8 -0
  59. package/dist/esm/principals/principal.js.map +1 -1
  60. package/dist/esm/resources/resource.d.ts +7 -1
  61. package/dist/esm/resources/resource.d.ts.map +1 -1
  62. package/dist/esm/resources/resource.js +8 -0
  63. package/dist/esm/resources/resource.js.map +1 -1
  64. package/dist/esm/statements/statement.d.ts +112 -12
  65. package/dist/esm/statements/statement.d.ts.map +1 -1
  66. package/dist/esm/statements/statement.js +103 -7
  67. package/dist/esm/statements/statement.js.map +1 -1
  68. package/dist/esm/validate/validate.d.ts.map +1 -1
  69. package/dist/esm/validate/validate.js +76 -1
  70. package/dist/esm/validate/validate.js.map +1 -1
  71. package/package.json +1 -2
@@ -1,3 +1,4 @@
1
+ import { Annotated, Annotations } from "../annotations/annotations.js";
1
2
  export type ActionType = 'service' | 'wildcard';
2
3
  /**
3
4
  * An Action string in an IAM policy
@@ -20,6 +21,8 @@ export interface Action {
20
21
  */
21
22
  isServiceAction(): this is ServiceAction;
22
23
  }
24
+ export interface AnnotatedAction extends Action, Annotated {
25
+ }
23
26
  /**
24
27
  * A wildcard action: `"*"`
25
28
  */
@@ -46,9 +49,12 @@ export interface ServiceAction extends Action {
46
49
  */
47
50
  action(): string;
48
51
  }
49
- export declare class ActionImpl implements Action, WildcardAction, ServiceAction {
52
+ export declare class ActionImpl implements Action, AnnotatedAction, WildcardAction, ServiceAction {
50
53
  private readonly rawValue;
54
+ private readonly annotationStore;
51
55
  constructor(rawValue: string);
56
+ addAnnotation(key: string, value: string): void;
57
+ getAnnotations(): Annotations;
52
58
  type(): ActionType;
53
59
  wildcardValue(): '*';
54
60
  value(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/actions/action.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,IAAI,UAAU,CAAA;IAElB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,gBAAgB,IAAI,IAAI,IAAI,cAAc,CAAA;IAE1C;;OAEG;IACH,eAAe,IAAI,IAAI,IAAI,aAAa,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C;;;;OAIG;IACH,aAAa,IAAI,GAAG,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;CACjB;AAED,qBAAa,UAAW,YAAW,MAAM,EAAG,cAAc,EAAE,aAAa;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEtC,IAAI,IAAI,UAAU;IAOlB,aAAa,IAAI,GAAG;IAIpB,KAAK,IAAI,MAAM;IAIf,gBAAgB,IAAI,IAAI,IAAI,cAAc;IAI1C,eAAe,IAAI,IAAI,IAAI,aAAa;IAIxC,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/actions/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAA;AAGvF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,IAAI,UAAU,CAAA;IAElB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,gBAAgB,IAAI,IAAI,IAAI,cAAc,CAAA;IAE1C;;OAEG;IACH,eAAe,IAAI,IAAI,IAAI,aAAa,CAAA;CACzC;AAED,MAAM,WAAW,eAAgB,SAAQ,MAAM,EAAE,SAAS;CAEzD;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C;;;;OAIG;IACH,aAAa,IAAI,GAAG,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;CACjB;AAED,qBAAa,UAAW,YAAW,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa;IAG3E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;gBACpB,QAAQ,EAAE,MAAM;IAItC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,IAAI,WAAW;IAI7B,IAAI,IAAI,UAAU;IAOlB,aAAa,IAAI,GAAG;IAIpB,KAAK,IAAI,MAAM;IAIf,gBAAgB,IAAI,IAAI,IAAI,cAAc;IAI1C,eAAe,IAAI,IAAI,IAAI,aAAa;IAIxC,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;CAGxB"}
@@ -1,11 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActionImpl = void 0;
4
+ const annotations_js_1 = require("../annotations/annotations.js");
4
5
  const utils_js_1 = require("../utils.js");
5
6
  class ActionImpl {
6
7
  rawValue;
8
+ annotationStore;
7
9
  constructor(rawValue) {
8
10
  this.rawValue = rawValue;
11
+ this.annotationStore = new annotations_js_1.AnnotationStore();
12
+ }
13
+ addAnnotation(key, value) {
14
+ this.annotationStore.addAnnotation(key, value);
15
+ }
16
+ getAnnotations() {
17
+ return this.annotationStore;
9
18
  }
10
19
  type() {
11
20
  if ((0, utils_js_1.isAllWildcards)(this.rawValue)) {
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/actions/action.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AA0D5C,MAAa,UAAU;IACQ;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAE1C,IAAI;QACT,IAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,aAAa;QAClB,OAAO,GAAG,CAAA;IACZ,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,CAAA;IACnC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAA;IAClC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAA;IACnD,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AAjCD,gCAiCC"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/actions/action.ts"],"names":[],"mappings":";;;AAAA,kEAAuF;AACvF,0CAA4C;AA8D5C,MAAa,UAAU;IAGQ;IADZ,eAAe,CAAiB;IACjD,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,gCAAe,EAAE,CAAA;IAC9C,CAAC;IAEM,aAAa,CAAC,GAAW,EAAE,KAAa;QAC7C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAEM,IAAI;QACT,IAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,aAAa;QAClB,OAAO,GAAG,CAAA;IACZ,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,CAAA;IACnC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAA;IAClC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAA;IACnD,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AA7CD,gCA6CC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The annotations on a policy element
3
+ */
4
+ export interface Annotations {
5
+ /**
6
+ * The string keys that have annotations
7
+ *
8
+ * @returns the keys that have annotations
9
+ */
10
+ keys(): string[];
11
+ /**
12
+ * Get the values for a key
13
+ *
14
+ * @param key the key to get the values for
15
+ * @returns the values for the key or an empty array if the key does not exist
16
+ */
17
+ values(key: string): string[];
18
+ /**
19
+ * Checks if a key is present in the annotations
20
+ *
21
+ * @param key the key to check
22
+ * @returns true if the key is present, false otherwise
23
+ */
24
+ hasKey(key: string): boolean;
25
+ }
26
+ /**
27
+ * A store for policy annotations
28
+ */
29
+ export declare class AnnotationStore implements Annotations {
30
+ private annotations;
31
+ constructor();
32
+ addAnnotation(key: string, value: string): void;
33
+ keys(): string[];
34
+ hasKey(key: string): boolean;
35
+ values(key: string): string[];
36
+ }
37
+ /**
38
+ * Standard methods for an object that can be annotated
39
+ */
40
+ export interface Annotated {
41
+ /**
42
+ * Add an annotation to the object
43
+ *
44
+ * @param key the key of the annotation
45
+ * @param value the value of the annotation
46
+ */
47
+ addAnnotation(key: string, value: string): void;
48
+ /**
49
+ * Get the annotations on the object
50
+ *
51
+ * @returns the annotations on the object
52
+ */
53
+ getAnnotations(): Annotations;
54
+ }
55
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/annotations/annotations.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,WAAW,WAAW;IAE1B;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE,CAAA;IAEhB;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAC7B;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,WAAW,CAA2B;;IAK9C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAOxC,IAAI,IAAI,MAAM,EAAE;IAIhB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;CAG9B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IAExB;;;;;OAKG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAE/C;;;;OAIG;IACH,cAAc,IAAI,WAAW,CAAA;CAC9B"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnnotationStore = void 0;
4
+ /**
5
+ * A store for policy annotations
6
+ */
7
+ class AnnotationStore {
8
+ annotations;
9
+ constructor() {
10
+ this.annotations = {};
11
+ }
12
+ addAnnotation(key, value) {
13
+ if (!this.annotations[key]) {
14
+ this.annotations[key] = [];
15
+ }
16
+ this.annotations[key].push(value);
17
+ }
18
+ keys() {
19
+ return Object.keys(this.annotations);
20
+ }
21
+ hasKey(key) {
22
+ return this.annotations[key] !== undefined;
23
+ }
24
+ values(key) {
25
+ return this.annotations[key] || [];
26
+ }
27
+ }
28
+ exports.AnnotationStore = AnnotationStore;
29
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/annotations/annotations.ts"],"names":[],"mappings":";;;AA8BA;;GAEG;AACH,MAAa,eAAe;IAClB,WAAW,CAA2B;IAC9C;QACE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;CACF;AAxBD,0CAwBC"}
@@ -1,16 +1,44 @@
1
+ import { Annotated, Annotations } from "../annotations/annotations.js";
1
2
  import { ConditionOperation } from "./conditionOperation.js";
2
3
  export interface Condition {
4
+ /**
5
+ * Returns the operation of the condition. For example "StringEquals" or "StringLike".
6
+ *
7
+ * @returns the operation of the condition.
8
+ */
3
9
  operation(): ConditionOperation;
10
+ /**
11
+ * Returns the key of the condition. For example "aws:PrincipalOrgID".
12
+ *
13
+ * @returns the condition key of the action
14
+ */
4
15
  conditionKey(): string;
16
+ /**
17
+ * Returns the values of the condition. For example ["o-1234567890abcdef0"].
18
+ *
19
+ * @returns the values of the condition.
20
+ */
5
21
  conditionValues(): string[];
22
+ /**
23
+ * Checks if the the condition values are an array.
24
+ *
25
+ * @returns true if the condition values are an array, false otherwise.
26
+ */
27
+ valueIsArray(): boolean;
6
28
  }
7
- export declare class ConditionImpl implements Condition {
29
+ export interface AnnotatedCondition extends Condition, Annotated {
30
+ }
31
+ export declare class ConditionImpl implements Condition, AnnotatedCondition {
8
32
  private readonly op;
9
33
  private readonly key;
10
34
  private readonly values;
35
+ private readonly annotations;
11
36
  constructor(op: string, key: string, values: string | string[]);
37
+ addAnnotation(key: string, value: string): void;
38
+ getAnnotations(): Annotations;
12
39
  operation(): ConditionOperation;
13
40
  conditionKey(): string;
14
41
  conditionValues(): string[];
42
+ valueIsArray(): boolean;
15
43
  }
16
44
  //# sourceMappingURL=condition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAA;AAEpF,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,kBAAkB,CAAA;IAC/B,YAAY,IAAI,MAAM,CAAA;IACtB,eAAe,IAAI,MAAM,EAAE,CAAA;CAC5B;AAED,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAjE,EAAE,EAAE,MAAM,EAAmB,GAAG,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAE1G,SAAS,IAAI,kBAAkB;IAI/B,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM,EAAE;CAGnC"}
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAA;AAEpF,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,SAAS,IAAI,kBAAkB,CAAA;IAE/B;;;;OAIG;IACH,YAAY,IAAI,MAAM,CAAA;IAEtB;;;;OAIG;IACH,eAAe,IAAI,MAAM,EAAE,CAAA;IAE3B;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,EAAE,SAAS;CAAG;AAEnE,qBAAa,aAAc,YAAW,SAAS,EAAE,kBAAkB;IAGrD,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;IAD9F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;gBACxC,EAAE,EAAE,MAAM,EAAmB,GAAG,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAE1G,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,IAAI,WAAW;IAI7B,SAAS,IAAI,kBAAkB;IAI/B,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM,EAAE;IAI3B,YAAY,IAAI,OAAO;CAK/B"}
@@ -1,16 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConditionImpl = void 0;
4
+ const annotations_js_1 = require("../annotations/annotations.js");
4
5
  const conditionOperation_js_1 = require("./conditionOperation.js");
5
6
  class ConditionImpl {
6
7
  op;
7
8
  key;
8
9
  values;
10
+ annotations = new annotations_js_1.AnnotationStore();
9
11
  constructor(op, key, values) {
10
12
  this.op = op;
11
13
  this.key = key;
12
14
  this.values = values;
13
15
  }
16
+ addAnnotation(key, value) {
17
+ this.annotations.addAnnotation(key, value);
18
+ }
19
+ getAnnotations() {
20
+ return this.annotations;
21
+ }
14
22
  operation() {
15
23
  return new conditionOperation_js_1.ConditionOperationImpl(this.op);
16
24
  }
@@ -20,6 +28,9 @@ class ConditionImpl {
20
28
  conditionValues() {
21
29
  return typeof this.values === 'string' ? [this.values] : this.values;
22
30
  }
31
+ valueIsArray() {
32
+ return Array.isArray(this.values);
33
+ }
23
34
  }
24
35
  exports.ConditionImpl = ConditionImpl;
25
36
  //# sourceMappingURL=condition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":";;;AAAA,mEAAoF;AAQpF,MAAa,aAAa;IACK;IAA6B;IAA8B;IAAxF,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE9G,SAAS;QACd,OAAO,IAAI,8CAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,eAAe;QACpB,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtE,CAAC;CACF;AAdD,sCAcC"}
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":";;;AAAA,kEAAuF;AACvF,mEAAoF;AAkCpF,MAAa,aAAa;IAGK;IAA6B;IAA8B;IADvE,WAAW,GAAoB,IAAI,gCAAe,EAAE,CAAA;IACrE,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE9G,aAAa,CAAC,GAAW,EAAE,KAAa;QAC7C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC5C,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,8CAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,eAAe;QACpB,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtE,CAAC;IAEM,YAAY;QACjB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;CAGF;AA9BD,sCA8BC"}
@@ -1,4 +1,4 @@
1
- import { Policy } from "./policies/policy.js";
1
+ import { AnnotatedPolicy, type Policy } from "./policies/policy.js";
2
2
  /**
3
3
  * Load a Policy from a policy document
4
4
  *
@@ -6,4 +6,5 @@ import { Policy } from "./policies/policy.js";
6
6
  * @returns the Policy object for the backing policy document
7
7
  */
8
8
  export declare function loadPolicy(policyDocument: any): Policy;
9
+ export declare function loadAnnotatedPolicy(policyDocument: any): AnnotatedPolicy;
9
10
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,cAAc,EAAE,GAAG,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,cAAc,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,GAAG,GAAG,eAAe,CAExE"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.loadPolicy = loadPolicy;
4
+ exports.loadAnnotatedPolicy = loadAnnotatedPolicy;
4
5
  const policy_js_1 = require("./policies/policy.js");
5
6
  /**
6
7
  * Load a Policy from a policy document
@@ -9,6 +10,9 @@ const policy_js_1 = require("./policies/policy.js");
9
10
  * @returns the Policy object for the backing policy document
10
11
  */
11
12
  function loadPolicy(policyDocument) {
12
- return new policy_js_1.PolicyImpl(policyDocument);
13
+ return new policy_js_1.PolicyImpl(policyDocument, false);
14
+ }
15
+ function loadAnnotatedPolicy(policyDocument) {
16
+ return new policy_js_1.PolicyImpl(policyDocument, true);
13
17
  }
14
18
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":";;AAQA,gCAEC;AAVD,oDAA0D;AAE1D;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,cAAmB;IAC5C,OAAO,IAAI,sBAAU,CAAC,cAAc,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":";;AAQA,gCAEC;AAED,kDAEC;AAdD,oDAAgF;AAEhF;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,cAAmB;IAC5C,OAAO,IAAI,sBAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,mBAAmB,CAAC,cAAmB;IACrD,OAAO,IAAI,sBAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,14 +1,39 @@
1
- import { Statement } from '../statements/statement.js';
1
+ import { Annotated, Annotations } from '../annotations/annotations.js';
2
+ import { AnnotatedStatement, Statement } from '../statements/statement.js';
2
3
  export interface Policy {
4
+ /**
5
+ * The version of the policy
6
+ */
3
7
  version(): string | undefined;
8
+ /**
9
+ * The ID of the policy
10
+ */
4
11
  id(): string | undefined;
12
+ /**
13
+ * The statements in the policy
14
+ */
5
15
  statements(): Statement[];
16
+ /**
17
+ * Whether the statement is an array
18
+ */
19
+ statementIsArray(): boolean;
6
20
  }
7
- export declare class PolicyImpl {
21
+ export interface AnnotatedPolicy extends Policy, Annotated {
22
+ statements(): AnnotatedStatement[];
23
+ }
24
+ export declare class PolicyImpl implements Policy, AnnotatedPolicy {
8
25
  private readonly policyObject;
9
- constructor(policyObject: any);
26
+ private readonly stateful;
27
+ private readonly annotationStore;
28
+ private statementsCache;
29
+ constructor(policyObject: any, stateful: boolean);
10
30
  version(): string | undefined;
11
31
  id(): string | undefined;
12
32
  statements(): Statement[];
33
+ statements(): AnnotatedStatement[];
34
+ private newStatements;
35
+ addAnnotation(key: string, value: string): void;
36
+ getAnnotations(): Annotations;
37
+ statementIsArray(): boolean;
13
38
  }
14
39
  //# sourceMappingURL=policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AAErE,MAAM,WAAW,MAAM;IACrB,OAAO,IAAI,MAAM,GAAG,SAAS,CAAA;IAC7B,EAAE,IAAI,MAAM,GAAG,SAAS,CAAA;IACxB,UAAU,IAAI,SAAS,EAAE,CAAA;CAC1B;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,GAAG;IAEvC,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,EAAE,IAAI,MAAM,GAAG,SAAS;IAIxB,UAAU,IAAI,SAAS,EAAE;CAGjC"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AAEzF,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,OAAO,IAAI,MAAM,GAAG,SAAS,CAAA;IAE7B;;OAEG;IACH,EAAE,IAAI,MAAM,GAAG,SAAS,CAAA;IAExB;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE,CAAA;IAEzB;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,MAAM,EAAE,SAAS;IACxD,UAAU,IAAI,kBAAkB,EAAE,CAAA;CACnC;AAED,qBAAa,UAAW,YAAW,MAAM,EAAE,eAAe;IAI5C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFzE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,eAAe,CAAyB;gBACnB,YAAY,EAAE,GAAG,EAAmB,QAAQ,EAAE,OAAO;IAI3E,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,EAAE,IAAI,MAAM,GAAG,SAAS;IAIxB,UAAU,IAAI,SAAS,EAAE;IACzB,UAAU,IAAI,kBAAkB,EAAE;IAYzC,OAAO,CAAC,aAAa;IAId,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,IAAI,WAAW;IAI7B,gBAAgB,IAAI,OAAO;CAGnC"}
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PolicyImpl = void 0;
4
+ const annotations_js_1 = require("../annotations/annotations.js");
4
5
  const statement_js_1 = require("../statements/statement.js");
5
6
  class PolicyImpl {
6
7
  policyObject;
7
- constructor(policyObject) {
8
+ stateful;
9
+ annotationStore;
10
+ statementsCache;
11
+ constructor(policyObject, stateful) {
8
12
  this.policyObject = policyObject;
13
+ this.stateful = stateful;
14
+ this.annotationStore = new annotations_js_1.AnnotationStore();
9
15
  }
10
16
  version() {
11
17
  return this.policyObject.Version;
@@ -14,7 +20,25 @@ class PolicyImpl {
14
20
  return this.policyObject.Id;
15
21
  }
16
22
  statements() {
17
- return [this.policyObject.Statement].flat().map((statement, index) => new statement_js_1.StatementImpl(statement, index + 1));
23
+ if (!this.stateful) {
24
+ return this.newStatements();
25
+ }
26
+ if (!this.statementsCache) {
27
+ this.statementsCache = this.newStatements();
28
+ }
29
+ return this.statementsCache;
30
+ }
31
+ newStatements() {
32
+ return [this.policyObject.Statement].flat().map((statement, index) => new statement_js_1.StatementImpl(statement, index + 1, this.stateful));
33
+ }
34
+ addAnnotation(key, value) {
35
+ this.annotationStore.addAnnotation(key, value);
36
+ }
37
+ getAnnotations() {
38
+ return this.annotationStore;
39
+ }
40
+ statementIsArray() {
41
+ return Array.isArray(this.policyObject.Statement);
18
42
  }
19
43
  }
20
44
  exports.PolicyImpl = PolicyImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":";;;AAAA,6DAAqE;AAQrE,MAAa,UAAU;IACQ;IAA7B,YAA6B,YAAiB;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAE3C,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,4BAAa,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IACrH,CAAC;CACF;AAdD,gCAcC"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":";;;AAAA,kEAAuF;AACvF,6DAAyF;AA4BzF,MAAa,UAAU;IAIQ;IAAoC;IAFhD,eAAe,CAAiB;IACzC,eAAe,CAAyB;IAChD,YAA6B,YAAiB,EAAmB,QAAiB;QAArD,iBAAY,GAAZ,YAAY,CAAK;QAAmB,aAAQ,GAAR,QAAQ,CAAS;QAChF,IAAI,CAAC,eAAe,GAAG,IAAI,gCAAe,EAAE,CAAA;IAC9C,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAIM,UAAU;QACf,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;QAC7B,CAAC;QAED,IAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAEO,aAAa;QACnB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,4BAAa,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IACpI,CAAC;IAEM,aAAa,CAAC,GAAW,EAAE,KAAa;QAC7C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAEM,gBAAgB;QACrB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IACnD,CAAC;CACF;AA5CD,gCA4CC"}
@@ -1,3 +1,4 @@
1
+ import { Annotated, Annotations } from "../annotations/annotations.js";
1
2
  export type PrincipalType = 'AWS' | 'Service' | 'Federated' | 'CanonicalUser';
2
3
  /**
3
4
  * A Principal in a policy statement
@@ -40,6 +41,8 @@ export interface Principal {
40
41
  */
41
42
  isAccountPrincipal(): this is AccountPrincipal;
42
43
  }
44
+ export interface AnnotatedPrincipal extends Principal, Annotated {
45
+ }
43
46
  /**
44
47
  * A wildcard principal: `"*"`
45
48
  */
@@ -98,10 +101,13 @@ export interface CanonicalUserPrincipal extends Principal {
98
101
  */
99
102
  canonicalUser(): string;
100
103
  }
101
- export declare class PrincipalImpl implements Principal, WildcardPrincipal, AccountPrincipal, UniqueIdPrincipal, AwsPrincipal, ServicePrincipal, FederatedPrincipal, CanonicalUserPrincipal {
104
+ export declare class PrincipalImpl implements Principal, AnnotatedPrincipal, WildcardPrincipal, AccountPrincipal, UniqueIdPrincipal, AwsPrincipal, ServicePrincipal, FederatedPrincipal, CanonicalUserPrincipal {
102
105
  private readonly principalType;
103
106
  private readonly principalId;
107
+ private readonly annotationStore;
104
108
  constructor(principalType: PrincipalType, principalId: string);
109
+ addAnnotation(key: string, value: string): void;
110
+ getAnnotations(): Annotations;
105
111
  value(): string;
106
112
  type(): PrincipalType;
107
113
  isWildcardPrincipal(): this is WildcardPrincipal;
@@ -1 +1 @@
1
- {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../src/principals/principal.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,CAAA;AAE7E;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,IAAI,aAAa,CAAA;IAErB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAA;IAEhD;;OAEG;IACH,kBAAkB,IAAI,IAAI,IAAI,gBAAgB,CAAA;IAE9C;;OAEG;IACH,cAAc,IAAI,IAAI,IAAI,YAAY,CAAA;IAEtC;;OAEG;IACH,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAA;IAEhD;;OAEG;IACH,oBAAoB,IAAI,IAAI,IAAI,kBAAkB,CAAA;IAElD;;OAEG;IACH,wBAAwB,IAAI,IAAI,IAAI,sBAAsB,CAAA;IAE1D;;OAEG;IACH,kBAAkB,IAAI,IAAI,IAAI,gBAAgB,CAAA;CAE/C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,QAAQ,IAAI,GAAG,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAEjD;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,GAAG,IAAI,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,QAAQ,IAAI,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAEjD;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD;;OAEG;IACH,aAAa,IAAI,MAAM,CAAA;CACxB;AAMD,qBAAa,aAAc,YAAW,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB;IACrK,OAAO,CAAC,QAAQ,CAAC,aAAa;IAAiB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAA1D,aAAa,EAAE,aAAa,EAAmB,WAAW,EAAE,MAAM;IAExF,KAAK,IAAI,MAAM;IAIf,IAAI,IAAI,aAAa;IAIrB,mBAAmB,IAAI,IAAI,IAAI,iBAAiB;IAIhD,kBAAkB,IAAI,IAAI,IAAI,gBAAgB;IAO9C,mBAAmB,IAAI,IAAI,IAAI,iBAAiB;IAOhD,cAAc,IAAI,IAAI,IAAI,YAAY;IAQtC,kBAAkB,IAAI,IAAI,IAAI,gBAAgB;IAI9C,oBAAoB,IAAI,IAAI,IAAI,kBAAkB;IAIlD,wBAAwB,IAAI,IAAI,IAAI,sBAAsB;IAI1D,QAAQ,IAAI,GAAG;IAOf,SAAS,IAAI,MAAM;IAUnB,QAAQ,IAAI,MAAM;IAOlB,GAAG,IAAI,MAAM;IAOb,OAAO,IAAI,MAAM;IAOjB,SAAS,IAAI,MAAM;IAOnB,aAAa,IAAI,MAAM;CAO/B"}
1
+ {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../src/principals/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAA;AAEvF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,CAAA;AAE7E;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,IAAI,aAAa,CAAA;IAErB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAA;IAEhD;;OAEG;IACH,kBAAkB,IAAI,IAAI,IAAI,gBAAgB,CAAA;IAE9C;;OAEG;IACH,cAAc,IAAI,IAAI,IAAI,YAAY,CAAA;IAEtC;;OAEG;IACH,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAA;IAEhD;;OAEG;IACH,oBAAoB,IAAI,IAAI,IAAI,kBAAkB,CAAA;IAElD;;OAEG;IACH,wBAAwB,IAAI,IAAI,IAAI,sBAAsB,CAAA;IAE1D;;OAEG;IACH,kBAAkB,IAAI,IAAI,IAAI,gBAAgB,CAAA;CAE/C;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,EAAE,SAAS;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,QAAQ,IAAI,GAAG,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAEjD;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,GAAG,IAAI,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,QAAQ,IAAI,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAEjD;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD;;OAEG;IACH,aAAa,IAAI,MAAM,CAAA;CACxB;AAMD,qBAAa,aAAc,YAAW,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB;IAGzL,OAAO,CAAC,QAAQ,CAAC,aAAa;IAAiB,OAAO,CAAC,QAAQ,CAAC,WAAW;IADvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;gBACpB,aAAa,EAAE,aAAa,EAAmB,WAAW,EAAE,MAAM;IAIxF,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,IAAI,WAAW;IAI7B,KAAK,IAAI,MAAM;IAIf,IAAI,IAAI,aAAa;IAIrB,mBAAmB,IAAI,IAAI,IAAI,iBAAiB;IAIhD,kBAAkB,IAAI,IAAI,IAAI,gBAAgB;IAO9C,mBAAmB,IAAI,IAAI,IAAI,iBAAiB;IAOhD,cAAc,IAAI,IAAI,IAAI,YAAY;IAQtC,kBAAkB,IAAI,IAAI,IAAI,gBAAgB;IAI9C,oBAAoB,IAAI,IAAI,IAAI,kBAAkB;IAIlD,wBAAwB,IAAI,IAAI,IAAI,sBAAsB;IAI1D,QAAQ,IAAI,GAAG;IAOf,SAAS,IAAI,MAAM;IAUnB,QAAQ,IAAI,MAAM;IAOlB,GAAG,IAAI,MAAM;IAOb,OAAO,IAAI,MAAM;IAOjB,SAAS,IAAI,MAAM;IAOnB,aAAa,IAAI,MAAM;CAO/B"}
@@ -1,15 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PrincipalImpl = void 0;
4
+ const annotations_js_1 = require("../annotations/annotations.js");
4
5
  const accountIdRegex = /^[0-9]{12}$/;
5
6
  const accountArnRegex = /^arn:.*?:iam::[0-9]{12}:root$/;
6
7
  const uniqueIdRegex = /^A[0-9A-Z]+$/;
7
8
  class PrincipalImpl {
8
9
  principalType;
9
10
  principalId;
11
+ annotationStore;
10
12
  constructor(principalType, principalId) {
11
13
  this.principalType = principalType;
12
14
  this.principalId = principalId;
15
+ this.annotationStore = new annotations_js_1.AnnotationStore();
16
+ }
17
+ addAnnotation(key, value) {
18
+ this.annotationStore.addAnnotation(key, value);
19
+ }
20
+ getAnnotations() {
21
+ return this.annotationStore;
13
22
  }
14
23
  value() {
15
24
  return this.principalId;
@@ -1 +1 @@
1
- {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principals/principal.ts"],"names":[],"mappings":";;;AAwHA,MAAM,cAAc,GAAG,aAAa,CAAA;AACpC,MAAM,eAAe,GAAG,+BAA+B,CAAA;AACvD,MAAM,aAAa,GAAG,cAAc,CAAA;AAEpC,MAAa,aAAa;IACK;IAA+C;IAA5E,YAA6B,aAA4B,EAAmB,WAAmB;QAAlE,kBAAa,GAAb,aAAa,CAAe;QAAmB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAE5F,KAAK;QACV,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,CAAA;IACjE,CAAC;IAEM,kBAAkB;QACvB,IAAG,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACxF,CAAC;IAEM,mBAAmB;QACxB,IAAG,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7C,CAAC;IAEM,cAAc;QACnB,IAAG,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,OAAO,GAAQ,IAAI,CAAA;QACzB,OAAO,OAAO,CAAC,WAAW,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAA;IACtG,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,CAAA;IACzC,CAAC;IAEM,oBAAoB;QACzB,OAAO,IAAI,CAAC,aAAa,KAAK,WAAW,CAAA;IAC3C,CAAC;IAEM,wBAAwB;QAC7B,OAAO,IAAI,CAAC,aAAa,KAAK,eAAe,CAAA;IAC/C,CAAC;IAEM,QAAQ;QACb,IAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAA;QAChH,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAEM,SAAS;QACd,IAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAA;QAChH,CAAC;QACD,IAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,QAAQ;QACb,IAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;QACjH,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,GAAG;QACR,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAA;QAClG,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,OAAO;QACZ,IAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;QAC7G,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,SAAS;QACd,IAAG,IAAI,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAA;QACnH,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,aAAa;QAClB,IAAG,IAAI,CAAC,aAAa,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAA;QAChI,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;CAEF;AArGD,sCAqGC"}
1
+ {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principals/principal.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Annotated, Annotations } from "../annotations/annotations.js";
1
2
  /**
2
3
  * A resource string in an IAM policy
3
4
  */
@@ -15,6 +16,8 @@ export interface Resource {
15
16
  */
16
17
  isArnResource(): this is ArnResource;
17
18
  }
19
+ export interface AnnotatedResource extends Resource, Annotated {
20
+ }
18
21
  export interface ArnResource extends Resource {
19
22
  /**
20
23
  * The partition of the ARN
@@ -37,9 +40,12 @@ export interface ArnResource extends Resource {
37
40
  */
38
41
  resource(): string;
39
42
  }
40
- export declare class ResourceImpl implements Resource, ArnResource {
43
+ export declare class ResourceImpl implements Resource, AnnotatedResource, ArnResource {
41
44
  private readonly rawValue;
45
+ private readonly annotationStore;
42
46
  constructor(rawValue: string);
47
+ addAnnotation(key: string, value: string): void;
48
+ getAnnotations(): Annotations;
43
49
  partition(): string;
44
50
  service(): string;
45
51
  region(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,cAAc,IAAI,OAAO,CAAA;IAEzB;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI,WAAW,CAAA;CACrC;AAED,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;IAEnB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAA;CACnB;AAGD,qBAAa,YAAa,YAAW,QAAQ,EAAE,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE7C,SAAS,IAAI,MAAM;IAOnB,OAAO,IAAI,MAAM;IAOjB,MAAM,IAAI,MAAM;IAOhB,OAAO,IAAI,MAAM;IAOjB,QAAQ,IAAI,MAAM;IAOlB,KAAK,IAAI,MAAM;IAIf,cAAc,IAAI,OAAO;IAIzB,aAAa,IAAI,IAAI,IAAI,WAAW;CAGrC"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAC;AAGxF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,cAAc,IAAI,OAAO,CAAA;IAEzB;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI,WAAW,CAAA;CACrC;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,EAAE,SAAS;CAAG;AAEjE,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C;;OAEG;IACH,SAAS,IAAI,MAAM,CAAA;IAEnB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAA;CACnB;AAGD,qBAAa,YAAa,YAAW,QAAQ,EAAE,iBAAiB,EAAE,WAAW;IAE/D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;gBAC7C,QAAQ,EAAE,MAAM;IAG7C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,IAAI,WAAW;IAI7B,SAAS,IAAI,MAAM;IAOnB,OAAO,IAAI,MAAM;IAOjB,MAAM,IAAI,MAAM;IAOhB,OAAO,IAAI,MAAM;IAOjB,QAAQ,IAAI,MAAM;IAOlB,KAAK,IAAI,MAAM;IAIf,cAAc,IAAI,OAAO;IAIzB,aAAa,IAAI,IAAI,IAAI,WAAW;CAGrC"}
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResourceImpl = void 0;
4
+ const annotations_js_1 = require("../annotations/annotations.js");
4
5
  const utils_js_1 = require("../utils.js");
5
6
  class ResourceImpl {
6
7
  rawValue;
8
+ annotationStore = new annotations_js_1.AnnotationStore();
7
9
  constructor(rawValue) {
8
10
  this.rawValue = rawValue;
9
11
  }
12
+ addAnnotation(key, value) {
13
+ this.annotationStore.addAnnotation(key, value);
14
+ }
15
+ getAnnotations() {
16
+ return this.annotationStore;
17
+ }
10
18
  partition() {
11
19
  if (!this.isArnResource()) {
12
20
  throw new Error('Called partition on a resource without an ARN, use isArnResource before calling partition');
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":";;;AAAA,0CAA6C;AAkD7C,MAAa,YAAY;IACM;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjD,SAAS;QACP,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;QAC9G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,MAAM;QACJ,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAA;QACxG,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAA;QAC5G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,OAAO,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,aAAa;QACX,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;CACF;AAjDD,oCAiDC"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":";;;AAAA,kEAAwF;AACxF,0CAA6C;AAoD7C,MAAa,YAAY;IAEM;IADZ,eAAe,GAAoB,IAAI,gCAAe,EAAE,CAAC;IAC1E,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAGjD,aAAa,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED,SAAS;QACP,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;QAC9G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,MAAM;QACJ,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAA;QACxG,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAA;QAC5G,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,OAAO,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,aAAa;QACX,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;CACF;AA3DD,oCA2DC"}