@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,7 +1,15 @@
1
+ import { AnnotationStore } from "../annotations/annotations.js";
1
2
  import { isAllWildcards } from "../utils.js";
2
3
  export class ActionImpl {
3
4
  constructor(rawValue) {
4
5
  this.rawValue = rawValue;
6
+ this.annotationStore = new AnnotationStore();
7
+ }
8
+ addAnnotation(key, value) {
9
+ this.annotationStore.addAnnotation(key, value);
10
+ }
11
+ getAnnotations() {
12
+ return this.annotationStore;
5
13
  }
6
14
  type() {
7
15
  if (isAllWildcards(this.rawValue)) {
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/actions/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AA0D5C,MAAM,OAAO,UAAU;IACrB,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAE1C,IAAI;QACT,IAAG,cAAc,CAAC,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"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/actions/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AA8D5C,MAAM,OAAO,UAAU;IAGrB,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,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,cAAc,CAAC,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"}
@@ -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,24 @@
1
+ /**
2
+ * A store for policy annotations
3
+ */
4
+ export class AnnotationStore {
5
+ constructor() {
6
+ this.annotations = {};
7
+ }
8
+ addAnnotation(key, value) {
9
+ if (!this.annotations[key]) {
10
+ this.annotations[key] = [];
11
+ }
12
+ this.annotations[key].push(value);
13
+ }
14
+ keys() {
15
+ return Object.keys(this.annotations);
16
+ }
17
+ hasKey(key) {
18
+ return this.annotations[key] !== undefined;
19
+ }
20
+ values(key) {
21
+ return this.annotations[key] || [];
22
+ }
23
+ }
24
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/annotations/annotations.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,MAAM,OAAO,eAAe;IAE1B;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"}
@@ -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,9 +1,17 @@
1
+ import { AnnotationStore } from "../annotations/annotations.js";
1
2
  import { ConditionOperationImpl } from "./conditionOperation.js";
2
3
  export class ConditionImpl {
3
4
  constructor(op, key, values) {
4
5
  this.op = op;
5
6
  this.key = key;
6
7
  this.values = values;
8
+ this.annotations = new AnnotationStore();
9
+ }
10
+ addAnnotation(key, value) {
11
+ this.annotations.addAnnotation(key, value);
12
+ }
13
+ getAnnotations() {
14
+ return this.annotations;
7
15
  }
8
16
  operation() {
9
17
  return new ConditionOperationImpl(this.op);
@@ -14,5 +22,8 @@ export class ConditionImpl {
14
22
  conditionValues() {
15
23
  return typeof this.values === 'string' ? [this.values] : this.values;
16
24
  }
25
+ valueIsArray() {
26
+ return Array.isArray(this.values);
27
+ }
17
28
  }
18
29
  //# sourceMappingURL=condition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAQpF,MAAM,OAAO,aAAa;IACxB,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,sBAAsB,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"}
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACvF,OAAO,EAAsB,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAkCpF,MAAM,OAAO,aAAa;IAGxB,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;QADhG,gBAAW,GAAoB,IAAI,eAAe,EAAE,CAAA;IAC+C,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,sBAAsB,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"}
@@ -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"}
@@ -6,6 +6,9 @@ import { PolicyImpl } from "./policies/policy.js";
6
6
  * @returns the Policy object for the backing policy document
7
7
  */
8
8
  export function loadPolicy(policyDocument) {
9
- return new PolicyImpl(policyDocument);
9
+ return new PolicyImpl(policyDocument, false);
10
+ }
11
+ export function loadAnnotatedPolicy(policyDocument) {
12
+ return new PolicyImpl(policyDocument, true);
10
13
  }
11
14
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,cAAmB;IAC5C,OAAO,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,cAAmB;IAC5C,OAAO,IAAI,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,cAAmB;IACrD,OAAO,IAAI,UAAU,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,7 +1,10 @@
1
+ import { AnnotationStore } from '../annotations/annotations.js';
1
2
  import { StatementImpl } from '../statements/statement.js';
2
3
  export class PolicyImpl {
3
- constructor(policyObject) {
4
+ constructor(policyObject, stateful) {
4
5
  this.policyObject = policyObject;
6
+ this.stateful = stateful;
7
+ this.annotationStore = new AnnotationStore();
5
8
  }
6
9
  version() {
7
10
  return this.policyObject.Version;
@@ -10,7 +13,25 @@ export class PolicyImpl {
10
13
  return this.policyObject.Id;
11
14
  }
12
15
  statements() {
13
- return [this.policyObject.Statement].flat().map((statement, index) => new StatementImpl(statement, index + 1));
16
+ if (!this.stateful) {
17
+ return this.newStatements();
18
+ }
19
+ if (!this.statementsCache) {
20
+ this.statementsCache = this.newStatements();
21
+ }
22
+ return this.statementsCache;
23
+ }
24
+ newStatements() {
25
+ return [this.policyObject.Statement].flat().map((statement, index) => new StatementImpl(statement, index + 1, this.stateful));
26
+ }
27
+ addAnnotation(key, value) {
28
+ this.annotationStore.addAnnotation(key, value);
29
+ }
30
+ getAnnotations() {
31
+ return this.annotationStore;
32
+ }
33
+ statementIsArray() {
34
+ return Array.isArray(this.policyObject.Statement);
14
35
  }
15
36
  }
16
37
  //# sourceMappingURL=policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAQrE,MAAM,OAAO,UAAU;IACrB,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,aAAa,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IACrH,CAAC;CACF"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACvF,OAAO,EAAiC,aAAa,EAAE,MAAM,4BAA4B,CAAA;AA4BzF,MAAM,OAAO,UAAU;IAIrB,YAA6B,YAAiB,EAAmB,QAAiB;QAArD,iBAAY,GAAZ,YAAY,CAAK;QAAmB,aAAQ,GAAR,QAAQ,CAAS;QAChF,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,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,aAAa,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"}
@@ -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,3 +1,4 @@
1
+ import { AnnotationStore } from "../annotations/annotations.js";
1
2
  const accountIdRegex = /^[0-9]{12}$/;
2
3
  const accountArnRegex = /^arn:.*?:iam::[0-9]{12}:root$/;
3
4
  const uniqueIdRegex = /^A[0-9A-Z]+$/;
@@ -5,6 +6,13 @@ export class PrincipalImpl {
5
6
  constructor(principalType, principalId) {
6
7
  this.principalType = principalType;
7
8
  this.principalId = principalId;
9
+ this.annotationStore = new AnnotationStore();
10
+ }
11
+ addAnnotation(key, value) {
12
+ this.annotationStore.addAnnotation(key, value);
13
+ }
14
+ getAnnotations() {
15
+ return this.annotationStore;
8
16
  }
9
17
  value() {
10
18
  return this.principalId;
@@ -1 +1 @@
1
- {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principals/principal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principals/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,+BAA+B,CAAA;AA6HvF,MAAM,cAAc,GAAG,aAAa,CAAA;AACpC,MAAM,eAAe,GAAG,+BAA+B,CAAA;AACvD,MAAM,aAAa,GAAG,cAAc,CAAA;AAEpC,MAAM,OAAO,aAAa;IAGxB,YAA6B,aAA4B,EAAmB,WAAmB;QAAlE,kBAAa,GAAb,aAAa,CAAe;QAAmB,gBAAW,GAAX,WAAW,CAAQ;QAC7F,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,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,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"}
@@ -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,7 +1,15 @@
1
+ import { AnnotationStore } from "../annotations/annotations.js";
1
2
  import { isAllWildcards } from "../utils.js";
2
3
  export class ResourceImpl {
3
4
  constructor(rawValue) {
4
5
  this.rawValue = rawValue;
6
+ this.annotationStore = new AnnotationStore();
7
+ }
8
+ addAnnotation(key, value) {
9
+ this.annotationStore.addAnnotation(key, value);
10
+ }
11
+ getAnnotations() {
12
+ return this.annotationStore;
5
13
  }
6
14
  partition() {
7
15
  if (!this.isArnResource()) {
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkD7C,MAAM,OAAO,YAAY;IACvB,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,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,aAAa;QACX,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoD7C,MAAM,OAAO,YAAY;IAEvB,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAD5B,oBAAe,GAAoB,IAAI,eAAe,EAAE,CAAC;IAC1B,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,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,aAAa;QACX,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;CACF"}