@cloud-copilot/iam-policy 0.1.4 → 0.1.5-1

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 (73) 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/index.d.ts +1 -1
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +2 -1
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/parser.d.ts +2 -1
  18. package/dist/cjs/parser.d.ts.map +1 -1
  19. package/dist/cjs/parser.js +5 -1
  20. package/dist/cjs/parser.js.map +1 -1
  21. package/dist/cjs/policies/policy.d.ts +28 -3
  22. package/dist/cjs/policies/policy.d.ts.map +1 -1
  23. package/dist/cjs/policies/policy.js +26 -2
  24. package/dist/cjs/policies/policy.js.map +1 -1
  25. package/dist/cjs/principals/principal.d.ts +7 -1
  26. package/dist/cjs/principals/principal.d.ts.map +1 -1
  27. package/dist/cjs/principals/principal.js +9 -0
  28. package/dist/cjs/principals/principal.js.map +1 -1
  29. package/dist/cjs/resources/resource.d.ts +7 -1
  30. package/dist/cjs/resources/resource.d.ts.map +1 -1
  31. package/dist/cjs/resources/resource.js +8 -0
  32. package/dist/cjs/resources/resource.js.map +1 -1
  33. package/dist/cjs/statements/statement.d.ts +112 -12
  34. package/dist/cjs/statements/statement.d.ts.map +1 -1
  35. package/dist/cjs/statements/statement.js +112 -7
  36. package/dist/cjs/statements/statement.js.map +1 -1
  37. package/dist/esm/actions/action.d.ts +7 -1
  38. package/dist/esm/actions/action.d.ts.map +1 -1
  39. package/dist/esm/actions/action.js +8 -0
  40. package/dist/esm/actions/action.js.map +1 -1
  41. package/dist/esm/annotations/annotations.d.ts +55 -0
  42. package/dist/esm/annotations/annotations.d.ts.map +1 -0
  43. package/dist/esm/annotations/annotations.js +24 -0
  44. package/dist/esm/annotations/annotations.js.map +1 -0
  45. package/dist/esm/conditions/condition.d.ts +29 -1
  46. package/dist/esm/conditions/condition.d.ts.map +1 -1
  47. package/dist/esm/conditions/condition.js +11 -0
  48. package/dist/esm/conditions/condition.js.map +1 -1
  49. package/dist/esm/index.d.ts +1 -1
  50. package/dist/esm/index.d.ts.map +1 -1
  51. package/dist/esm/index.js +1 -1
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/parser.d.ts +2 -1
  54. package/dist/esm/parser.d.ts.map +1 -1
  55. package/dist/esm/parser.js +4 -1
  56. package/dist/esm/parser.js.map +1 -1
  57. package/dist/esm/policies/policy.d.ts +28 -3
  58. package/dist/esm/policies/policy.d.ts.map +1 -1
  59. package/dist/esm/policies/policy.js +23 -2
  60. package/dist/esm/policies/policy.js.map +1 -1
  61. package/dist/esm/principals/principal.d.ts +7 -1
  62. package/dist/esm/principals/principal.d.ts.map +1 -1
  63. package/dist/esm/principals/principal.js +8 -0
  64. package/dist/esm/principals/principal.js.map +1 -1
  65. package/dist/esm/resources/resource.d.ts +7 -1
  66. package/dist/esm/resources/resource.d.ts.map +1 -1
  67. package/dist/esm/resources/resource.js +8 -0
  68. package/dist/esm/resources/resource.js.map +1 -1
  69. package/dist/esm/statements/statement.d.ts +112 -12
  70. package/dist/esm/statements/statement.d.ts.map +1 -1
  71. package/dist/esm/statements/statement.js +103 -7
  72. package/dist/esm/statements/statement.js.map +1 -1
  73. package/package.json +1 -2
@@ -1,7 +1,8 @@
1
- import { Action } from "../actions/action.js";
2
- import { Condition } from "../conditions/condition.js";
3
- import { Principal } from "../principals/principal.js";
4
- import { Resource } from "../resources/resource.js";
1
+ import { Action, AnnotatedAction } from "../actions/action.js";
2
+ import { Annotated, Annotations } from "../annotations/annotations.js";
3
+ import { AnnotatedCondition, Condition } from "../conditions/condition.js";
4
+ import { AnnotatedPrincipal, Principal } from "../principals/principal.js";
5
+ import { AnnotatedResource, Resource } from "../resources/resource.js";
5
6
  /**
6
7
  * Represents a statement in an IAM policy
7
8
  */
@@ -55,6 +56,15 @@ export interface Statement {
55
56
  */
56
57
  isNotResourceStatement(): this is NotResourceStatement;
57
58
  }
59
+ export interface AnnotatedStatement extends Annotated, Statement {
60
+ isActionStatement(): this is AnnotatedActionStatement;
61
+ isNotActionStatement(): this is AnnotatedNotActionStatement;
62
+ isPrincipalStatement(): this is AnnotatedPrincipalStatement;
63
+ isNotPrincipalStatement(): this is AnnotatedNotPrincipalStatement;
64
+ isResourceStatement(): this is AnnotatedResourceStatement;
65
+ isNotResourceStatement(): this is AnnotatedNotResourceStatement;
66
+ conditions(): AnnotatedCondition[];
67
+ }
58
68
  /**
59
69
  * Represents a statement in an IAM policy that has Action
60
70
  */
@@ -63,6 +73,16 @@ export interface ActionStatement extends Statement {
63
73
  * The actions for the statement
64
74
  */
65
75
  actions(): Action[];
76
+ /**
77
+ * Is the Action element an array of strings
78
+ */
79
+ actionIsArray(): boolean;
80
+ }
81
+ /**
82
+ * Represents a statement in an IAM policy that has Action and is annotated
83
+ */
84
+ export interface AnnotatedActionStatement extends Annotated, ActionStatement {
85
+ actions(): AnnotatedAction[];
66
86
  }
67
87
  /**
68
88
  * Represents a statement in an IAM policy that has NotAction
@@ -72,6 +92,16 @@ export interface NotActionStatement extends Statement {
72
92
  * The not actions for the statement
73
93
  */
74
94
  notActions(): Action[];
95
+ /**
96
+ * Is the NotAction element an array of strings
97
+ */
98
+ notActionIsArray(): boolean;
99
+ }
100
+ /**
101
+ * Represents a statement in an IAM policy that has NotAction and is annotated
102
+ */
103
+ export interface AnnotatedNotActionStatement extends Annotated, NotActionStatement {
104
+ notActions(): AnnotatedAction[];
75
105
  }
76
106
  /**
77
107
  * Represents a statement in an IAM policy that has Resource
@@ -82,9 +112,16 @@ export interface ResourceStatement extends Statement {
82
112
  */
83
113
  resources(): Resource[];
84
114
  /**
85
- * Is the resource element exactly a single wildcard: `"*"`
115
+ * Is the Resource element exactly a single wildcard: `"*"`
86
116
  */
87
117
  hasSingleResourceWildcard(): boolean;
118
+ /**
119
+ * Is the Resource element an array of strings
120
+ */
121
+ resourceIsArray(): boolean;
122
+ }
123
+ export interface AnnotatedResourceStatement extends Annotated, ResourceStatement {
124
+ resources(): AnnotatedResource[];
88
125
  }
89
126
  /**
90
127
  * Represents a statement in an IAM policy that has NotResource
@@ -94,6 +131,17 @@ export interface NotResourceStatement extends Statement {
94
131
  * The not resources for the statement
95
132
  */
96
133
  notResources(): Resource[];
134
+ /**
135
+ * Is the NotResource element exactly a single wildcard: `"*"`
136
+ */
137
+ hasSingleNotResourceWildcard(): boolean;
138
+ /**
139
+ * Is the resource element an array of strings
140
+ */
141
+ notResourceIsArray(): boolean;
142
+ }
143
+ export interface AnnotatedNotResourceStatement extends Annotated, NotResourceStatement {
144
+ notResources(): AnnotatedResource[];
97
145
  }
98
146
  /**
99
147
  * Represents a statement in an IAM policy that has Principal
@@ -103,6 +151,16 @@ export interface PrincipalStatement extends Statement {
103
151
  * The principals for the statement
104
152
  */
105
153
  principals(): Principal[];
154
+ /**
155
+ * Is the Principal type is an array of strings
156
+ *
157
+ * @param principalType the type of the Principal such as "AWS", "Service", etc.
158
+ * @returns true if the principal type is an array of strings in the raw policy
159
+ */
160
+ principalTypeIsArray(principalType: string): boolean;
161
+ }
162
+ export interface AnnotatedPrincipalStatement extends Annotated, PrincipalStatement {
163
+ principals(): AnnotatedPrincipal[];
106
164
  }
107
165
  /**
108
166
  * Represents a statement in an IAM policy that has NotPrincipal
@@ -112,23 +170,50 @@ export interface NotPrincipalStatement extends Statement {
112
170
  * The not principals for the statement
113
171
  */
114
172
  notPrincipals(): Principal[];
173
+ /**
174
+ * Is the NotPrincipal type is an array of strings
175
+ *
176
+ * @param notPrincipalType the type of the NotPrincipal such as "AWS", "Service", etc.
177
+ * @returns true if the NotPrincipal type is an array of strings in the raw policy
178
+ */
179
+ notPrincipalTypeIsArray(notPrincipalType: string): boolean;
180
+ }
181
+ export interface AnnotatedNotPrincipalStatement extends Annotated, NotPrincipalStatement {
182
+ notPrincipals(): AnnotatedPrincipal[];
115
183
  }
116
184
  /**
117
185
  * Implementation of the Statement interface and all its sub-interfaces
118
186
  */
119
- export declare class StatementImpl implements Statement, ActionStatement, NotActionStatement, ResourceStatement, NotResourceStatement, PrincipalStatement {
187
+ export declare class StatementImpl implements Statement, AnnotatedStatement, ActionStatement, AnnotatedStatement, NotActionStatement, ResourceStatement, NotResourceStatement, PrincipalStatement {
120
188
  private readonly statementObject;
121
189
  private readonly _index;
122
- constructor(statementObject: any, _index: number);
190
+ private readonly stateful;
191
+ private readonly annotationStore;
192
+ private actionCache;
193
+ private notActionCache;
194
+ private principalCache;
195
+ private notPrincipalCache;
196
+ private resourceCache;
197
+ private notResourceCache;
198
+ private conditionCache;
199
+ constructor(statementObject: any, _index: number, stateful: boolean);
200
+ addAnnotation(key: string, value: string): void;
201
+ getAnnotations(): Annotations;
123
202
  index(): number;
124
203
  sid(): string | undefined;
125
204
  effect(): string;
126
205
  isAllow(): boolean;
127
206
  isDeny(): boolean;
128
207
  isPrincipalStatement(): this is PrincipalStatement;
208
+ isPrincipalStatement(): this is AnnotatedPrincipalStatement;
129
209
  isNotPrincipalStatement(): this is NotPrincipalStatement;
210
+ isNotPrincipalStatement(): this is AnnotatedNotPrincipalStatement;
130
211
  principals(): Principal[];
212
+ principals(): AnnotatedPrincipal[];
213
+ principalTypeIsArray(principalType: string): boolean;
131
214
  notPrincipals(): Principal[];
215
+ notPrincipals(): AnnotatedPrincipal[];
216
+ notPrincipalTypeIsArray(notPrincipalType: string): boolean;
132
217
  /**
133
218
  * Parse the principal object into PrincipalImpl objects.
134
219
  *
@@ -138,15 +223,30 @@ export declare class StatementImpl implements Statement, ActionStatement, NotAct
138
223
  * @returns the backing principals for a Principal or NotPrincipal object
139
224
  */
140
225
  private parsePrincipalObject;
141
- isActionStatement(): this is ActionStatement;
142
- isNotActionStatement(): this is NotActionStatement;
226
+ isActionStatement(): this is AnnotatedActionStatement;
227
+ isNotActionStatement(): this is AnnotatedNotActionStatement;
143
228
  actions(): Action[];
229
+ actions(): AnnotatedAction[];
230
+ private createNewActions;
231
+ actionIsArray(): boolean;
144
232
  notActions(): Action[];
145
- isResourceStatement(): this is ResourceStatement;
146
- isNotResourceStatement(): this is NotResourceStatement;
233
+ notActions(): AnnotatedAction[];
234
+ private createNewNotActions;
235
+ notActionIsArray(): boolean;
236
+ isResourceStatement(): this is AnnotatedResourceStatement;
237
+ isNotResourceStatement(): this is AnnotatedNotResourceStatement;
147
238
  resources(): Resource[];
148
- notResources(): Resource[];
239
+ resources(): AnnotatedResource[];
240
+ private createNewResources;
149
241
  hasSingleResourceWildcard(): boolean;
242
+ resourceIsArray(): boolean;
243
+ notResources(): Resource[];
244
+ notResources(): AnnotatedResource[];
245
+ private createNewNotResources;
246
+ notResourceIsArray(): boolean;
247
+ hasSingleNotResourceWildcard(): boolean;
150
248
  conditions(): Condition[];
249
+ conditions(): AnnotatedCondition[];
250
+ private createNewConditions;
151
251
  }
152
252
  //# sourceMappingURL=statement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,+BAA+B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAgC,MAAM,4BAA4B,CAAA;AACxG,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAgB,MAAM,0BAA0B,CAAA;AAOpF;;GAEG;AACH,MAAM,WAAW,SAAS;IAExB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,GAAG,IAAI,MAAM,GAAG,SAAS,CAAA;IAEzB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAA;IAElB;;OAEG;IACH,MAAM,IAAI,OAAO,CAAA;IAEjB;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE,CAAA;IAEzB;;OAEG;IACH,oBAAoB,IAAI,IAAI,IAAI,kBAAkB,CAAA;IAElD;;OAEG;IACH,uBAAuB,IAAI,IAAI,IAAI,qBAAqB,CAAA;IAExD;;OAEG;IACH,iBAAiB,IAAI,IAAI,IAAI,eAAe,CAAA;IAE5C;;OAEG;IACH,oBAAoB,IAAI,IAAI,IAAI,kBAAkB,CAAA;IAElD;;OAEG;IACH,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAA;IAEhD;;OAEG;IACH,sBAAsB,IAAI,IAAI,IAAI,oBAAoB,CAAA;CACvD;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,EAAE,SAAS;IAC9D,iBAAiB,IAAI,IAAI,IAAI,wBAAwB,CAAA;IACrD,oBAAoB,IAAI,IAAI,IAAI,2BAA2B,CAAA;IAC3D,oBAAoB,IAAI,IAAI,IAAI,2BAA2B,CAAA;IAC3D,uBAAuB,IAAI,IAAI,IAAI,8BAA8B,CAAA;IACjE,mBAAmB,IAAI,IAAI,IAAI,0BAA0B,CAAA;IACzD,sBAAsB,IAAI,IAAI,IAAI,6BAA6B,CAAA;IAC/D,UAAU,IAAI,kBAAkB,EAAE,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAAA;IAEnB;;OAEG;IACH,aAAa,IAAI,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,SAAS,EAAE,eAAe;IAC1E,OAAO,IAAI,eAAe,EAAE,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IAEnD;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE,CAAA;IAEtB;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,SAAS,EAAE,kBAAkB;IAChF,UAAU,IAAI,eAAe,EAAE,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE,CAAA;IAEvB;;OAEG;IACH,yBAAyB,IAAI,OAAO,CAAA;IAEpC;;OAEG;IACH,eAAe,IAAI,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,0BAA2B,SAAQ,SAAS,EAAE,iBAAiB;IAC9E,SAAS,IAAI,iBAAiB,EAAE,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE,CAAA;IAE1B;;OAEG;IACH,4BAA4B,IAAI,OAAO,CAAA;IAEvC;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,6BAA8B,SAAQ,SAAS,EAAE,oBAAoB;IACpF,YAAY,IAAI,iBAAiB,EAAE,CAAA;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE,CAAA;IAEzB;;;;;OAKG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAA;CACrD;AAED,MAAM,WAAW,2BAA4B,SAAQ,SAAS,EAAE,kBAAkB;IAChF,UAAU,IAAI,kBAAkB,EAAE,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IAEtD;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE,CAAA;IAE1B;;;;;KAKC;IACH,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAA;CAC3D;AAED,MAAM,WAAW,8BAA+B,SAAQ,SAAS,EAAE,qBAAqB;IACtF,aAAa,IAAI,kBAAkB,EAAE,CAAA;CACtC;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB;IAU3K,OAAO,CAAC,QAAQ,CAAC,eAAe;IAAO,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAU,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR7G,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,cAAc,CAAyB;gBAClB,eAAe,EAAE,GAAG,EAAmB,MAAM,EAAE,MAAM,EAAmB,QAAQ,EAAE,OAAO;IAI/G,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,IAAI,WAAW;IAI7B,KAAK,IAAI,MAAM;IAIf,GAAG,IAAI,MAAM,GAAG,SAAS;IAIzB,MAAM,IAAI,MAAM;IAIhB,OAAO,IAAI,OAAO;IAIlB,MAAM,IAAI,OAAO;IAIjB,oBAAoB,IAAI,IAAI,IAAI,kBAAkB;IAClD,oBAAoB,IAAI,IAAI,IAAI,2BAA2B;IAK3D,uBAAuB,IAAI,IAAI,IAAI,qBAAqB;IACxD,uBAAuB,IAAI,IAAI,IAAI,8BAA8B;IAKjE,UAAU,IAAI,SAAS,EAAE;IACzB,UAAU,IAAI,kBAAkB,EAAE;IAclC,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAOpD,aAAa,IAAI,SAAS,EAAE;IAC5B,aAAa,IAAI,kBAAkB,EAAE;IAcrC,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;IAOjE;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAcrB,iBAAiB,IAAI,IAAI,IAAI,wBAAwB;IAKrD,oBAAoB,IAAI,IAAI,IAAI,2BAA2B;IAK3D,OAAO,IAAI,MAAM,EAAE;IACnB,OAAO,IAAI,eAAe,EAAE;IAcnC,OAAO,CAAC,gBAAgB;IAIjB,aAAa,IAAI,OAAO;IAIxB,UAAU,IAAI,MAAM,EAAE;IACtB,UAAU,IAAI,eAAe,EAAE;IActC,OAAO,CAAC,mBAAmB;IAIpB,gBAAgB,IAAI,OAAO;IAI3B,mBAAmB,IAAI,IAAI,IAAI,0BAA0B;IAKzD,sBAAsB,IAAI,IAAI,IAAI,6BAA6B;IAK/D,SAAS,IAAI,QAAQ,EAAE;IACvB,SAAS,IAAI,iBAAiB,EAAE;IAcvC,OAAO,CAAC,kBAAkB;IAInB,yBAAyB,IAAI,OAAO;IAOpC,eAAe,IAAI,OAAO;IAI1B,YAAY,IAAI,QAAQ,EAAE;IAC1B,YAAY,IAAI,iBAAiB,EAAE;IAc1C,OAAO,CAAC,qBAAqB;IAItB,kBAAkB,IAAI,OAAO;IAI7B,4BAA4B,IAAI,OAAO;IAQvC,UAAU,IAAI,SAAS,EAAE;IACzB,UAAU,IAAI,kBAAkB,EAAE;IAWzC,OAAO,CAAC,mBAAmB;CAW5B"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StatementImpl = void 0;
4
4
  const action_js_1 = require("../actions/action.js");
5
+ const annotations_js_1 = require("../annotations/annotations.js");
5
6
  const condition_js_1 = require("../conditions/condition.js");
6
7
  const principal_js_1 = require("../principals/principal.js");
7
8
  const resource_js_1 = require("../resources/resource.js");
@@ -11,9 +12,26 @@ const resource_js_1 = require("../resources/resource.js");
11
12
  class StatementImpl {
12
13
  statementObject;
13
14
  _index;
14
- constructor(statementObject, _index) {
15
+ stateful;
16
+ annotationStore;
17
+ actionCache;
18
+ notActionCache;
19
+ principalCache;
20
+ notPrincipalCache;
21
+ resourceCache;
22
+ notResourceCache;
23
+ conditionCache;
24
+ constructor(statementObject, _index, stateful) {
15
25
  this.statementObject = statementObject;
16
26
  this._index = _index;
27
+ this.stateful = stateful;
28
+ this.annotationStore = new annotations_js_1.AnnotationStore();
29
+ }
30
+ addAnnotation(key, value) {
31
+ this.annotationStore.addAnnotation(key, value);
32
+ }
33
+ getAnnotations() {
34
+ return this.annotationStore;
17
35
  }
18
36
  index() {
19
37
  return this._index;
@@ -40,13 +58,37 @@ class StatementImpl {
40
58
  if (!this.isPrincipalStatement()) {
41
59
  throw new Error('Called principals on a statement without Principal, use isPrincipalStatement before calling principals');
42
60
  }
43
- return this.parsePrincipalObject(this.statementObject.Principal);
61
+ if (!this.stateful) {
62
+ return this.parsePrincipalObject(this.statementObject.Principal);
63
+ }
64
+ if (!this.principalCache) {
65
+ this.principalCache = this.parsePrincipalObject(this.statementObject.Principal);
66
+ }
67
+ return this.principalCache;
68
+ }
69
+ principalTypeIsArray(principalType) {
70
+ if (!this.isPrincipalStatement()) {
71
+ throw new Error('Called principalTypeIsArray on a statement without Principal, use isPrincipalStatement before calling principalTypeIsArray');
72
+ }
73
+ return typeof this.statementObject.Principal === "object" && Array.isArray(this.statementObject.Principal[principalType]);
44
74
  }
45
75
  notPrincipals() {
46
76
  if (!this.isNotPrincipalStatement()) {
47
77
  throw new Error('Called notPrincipals on a statement without NotPrincipal, use isNotPrincipalStatement before calling notPrincipals');
48
78
  }
49
- return this.parsePrincipalObject(this.statementObject.NotPrincipal);
79
+ if (!this.stateful) {
80
+ return this.parsePrincipalObject(this.statementObject.NotPrincipal);
81
+ }
82
+ if (!this.notPrincipalCache) {
83
+ this.notPrincipalCache = this.parsePrincipalObject(this.statementObject.NotPrincipal);
84
+ }
85
+ return this.notPrincipalCache;
86
+ }
87
+ notPrincipalTypeIsArray(notPrincipalType) {
88
+ if (!this.isNotPrincipalStatement()) {
89
+ throw new Error('Called notPrincipalTypeIsArray on a statement without NotPrincipal, use isNotPrincipalStatement before calling notPrincipalTypeIsArray');
90
+ }
91
+ return typeof this.statementObject.NotPrincipal === "object" && Array.isArray(this.statementObject.NotPrincipal[notPrincipalType]);
50
92
  }
51
93
  /**
52
94
  * Parse the principal object into PrincipalImpl objects.
@@ -79,14 +121,38 @@ class StatementImpl {
79
121
  if (!this.isActionStatement()) {
80
122
  throw new Error('Called actions on a statement without Action, use isActionStatement before calling actions');
81
123
  }
124
+ if (!this.stateful) {
125
+ return this.createNewActions();
126
+ }
127
+ if (!this.actionCache) {
128
+ this.actionCache = this.createNewActions();
129
+ }
130
+ return this.actionCache;
131
+ }
132
+ createNewActions() {
82
133
  return [this.statementObject.Action].flat().map((action) => new action_js_1.ActionImpl(action));
83
134
  }
135
+ actionIsArray() {
136
+ return Array.isArray(this.statementObject.Action);
137
+ }
84
138
  notActions() {
85
139
  if (!this.isNotActionStatement()) {
86
140
  throw new Error('Called notActions on a statement without NotAction, use isNotActionStatement before calling notActions');
87
141
  }
142
+ if (!this.stateful) {
143
+ return this.createNewNotActions();
144
+ }
145
+ if (!this.notActionCache) {
146
+ this.notActionCache = this.createNewNotActions();
147
+ }
148
+ return this.notActionCache;
149
+ }
150
+ createNewNotActions() {
88
151
  return [this.statementObject.NotAction].flat().map((action) => new action_js_1.ActionImpl(action));
89
152
  }
153
+ notActionIsArray() {
154
+ return Array.isArray(this.statementObject.NotAction);
155
+ }
90
156
  isResourceStatement() {
91
157
  return this.statementObject.Resource !== undefined;
92
158
  }
@@ -97,21 +163,60 @@ class StatementImpl {
97
163
  if (!this.isResourceStatement()) {
98
164
  throw new Error('Called resources on a statement without Resource, use isResourceStatement before calling resources');
99
165
  }
166
+ if (!this.stateful) {
167
+ return this.createNewResources();
168
+ }
169
+ if (!this.resourceCache) {
170
+ this.resourceCache = this.createNewResources();
171
+ }
172
+ return this.resourceCache;
173
+ }
174
+ createNewResources() {
100
175
  return [this.statementObject.Resource].flat().map((resource) => new resource_js_1.ResourceImpl(resource));
101
176
  }
177
+ hasSingleResourceWildcard() {
178
+ if (!this.isResourceStatement()) {
179
+ throw new Error('Called hasSingleResourceWildcard on a statement without Resource, use isResourceStatement before calling hasSingleResourceWildcard');
180
+ }
181
+ return this.statementObject.Resource === '*';
182
+ }
183
+ resourceIsArray() {
184
+ return Array.isArray(this.statementObject.Resource);
185
+ }
102
186
  notResources() {
103
187
  if (!this.isNotResourceStatement()) {
104
188
  throw new Error('Called notResources on a statement without NotResource, use isNotResourceStatement before calling notResources');
105
189
  }
190
+ if (!this.stateful) {
191
+ return this.createNewNotResources();
192
+ }
193
+ if (!this.notResourceCache) {
194
+ this.notResourceCache = this.createNewNotResources();
195
+ }
196
+ return this.notResourceCache;
197
+ }
198
+ createNewNotResources() {
106
199
  return [this.statementObject.NotResource].flat().map((resource) => new resource_js_1.ResourceImpl(resource));
107
200
  }
108
- hasSingleResourceWildcard() {
109
- if (!this.isResourceStatement()) {
110
- throw new Error('Called hasSingleResourceWildcard on a statement without Resource, use isResourceStatement before calling hasSingleResourceWildcard');
201
+ notResourceIsArray() {
202
+ return Array.isArray(this.statementObject.NotResource);
203
+ }
204
+ hasSingleNotResourceWildcard() {
205
+ if (!this.isNotResourceStatement()) {
206
+ throw new Error('Called hasSingleNotResourceWildcard on a statement without NotResource, use isNotResourceStatement before calling hasSingleNotResourceWildcard');
111
207
  }
112
- return this.isResourceStatement() && this.statementObject.Resource === '*';
208
+ return this.statementObject.NotResource === '*';
113
209
  }
114
210
  conditions() {
211
+ if (!this.stateful) {
212
+ return this.createNewConditions();
213
+ }
214
+ if (!this.conditionCache) {
215
+ this.conditionCache = this.createNewConditions();
216
+ }
217
+ return this.conditionCache;
218
+ }
219
+ createNewConditions() {
115
220
  if (!this.statementObject.Condition) {
116
221
  return [];
117
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
@@ -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,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