@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.
- package/dist/cjs/actions/action.d.ts +7 -1
- package/dist/cjs/actions/action.d.ts.map +1 -1
- package/dist/cjs/actions/action.js +9 -0
- package/dist/cjs/actions/action.js.map +1 -1
- package/dist/cjs/annotations/annotations.d.ts +55 -0
- package/dist/cjs/annotations/annotations.d.ts.map +1 -0
- package/dist/cjs/annotations/annotations.js +29 -0
- package/dist/cjs/annotations/annotations.js.map +1 -0
- package/dist/cjs/conditions/condition.d.ts +29 -1
- package/dist/cjs/conditions/condition.d.ts.map +1 -1
- package/dist/cjs/conditions/condition.js +11 -0
- package/dist/cjs/conditions/condition.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parser.d.ts +2 -1
- package/dist/cjs/parser.d.ts.map +1 -1
- package/dist/cjs/parser.js +5 -1
- package/dist/cjs/parser.js.map +1 -1
- package/dist/cjs/policies/policy.d.ts +28 -3
- package/dist/cjs/policies/policy.d.ts.map +1 -1
- package/dist/cjs/policies/policy.js +26 -2
- package/dist/cjs/policies/policy.js.map +1 -1
- package/dist/cjs/principals/principal.d.ts +7 -1
- package/dist/cjs/principals/principal.d.ts.map +1 -1
- package/dist/cjs/principals/principal.js +9 -0
- package/dist/cjs/principals/principal.js.map +1 -1
- package/dist/cjs/resources/resource.d.ts +7 -1
- package/dist/cjs/resources/resource.d.ts.map +1 -1
- package/dist/cjs/resources/resource.js +8 -0
- package/dist/cjs/resources/resource.js.map +1 -1
- package/dist/cjs/statements/statement.d.ts +112 -12
- package/dist/cjs/statements/statement.d.ts.map +1 -1
- package/dist/cjs/statements/statement.js +112 -7
- package/dist/cjs/statements/statement.js.map +1 -1
- package/dist/esm/actions/action.d.ts +7 -1
- package/dist/esm/actions/action.d.ts.map +1 -1
- package/dist/esm/actions/action.js +8 -0
- package/dist/esm/actions/action.js.map +1 -1
- package/dist/esm/annotations/annotations.d.ts +55 -0
- package/dist/esm/annotations/annotations.d.ts.map +1 -0
- package/dist/esm/annotations/annotations.js +24 -0
- package/dist/esm/annotations/annotations.js.map +1 -0
- package/dist/esm/conditions/condition.d.ts +29 -1
- package/dist/esm/conditions/condition.d.ts.map +1 -1
- package/dist/esm/conditions/condition.js +11 -0
- package/dist/esm/conditions/condition.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parser.d.ts +2 -1
- package/dist/esm/parser.d.ts.map +1 -1
- package/dist/esm/parser.js +4 -1
- package/dist/esm/parser.js.map +1 -1
- package/dist/esm/policies/policy.d.ts +28 -3
- package/dist/esm/policies/policy.d.ts.map +1 -1
- package/dist/esm/policies/policy.js +23 -2
- package/dist/esm/policies/policy.js.map +1 -1
- package/dist/esm/principals/principal.d.ts +7 -1
- package/dist/esm/principals/principal.d.ts.map +1 -1
- package/dist/esm/principals/principal.js +8 -0
- package/dist/esm/principals/principal.js.map +1 -1
- package/dist/esm/resources/resource.d.ts +7 -1
- package/dist/esm/resources/resource.d.ts.map +1 -1
- package/dist/esm/resources/resource.js +8 -0
- package/dist/esm/resources/resource.js.map +1 -1
- package/dist/esm/statements/statement.d.ts +112 -12
- package/dist/esm/statements/statement.d.ts.map +1 -1
- package/dist/esm/statements/statement.js +103 -7
- package/dist/esm/statements/statement.js.map +1 -1
- package/package.json +1 -2
@@ -1,7 +1,8 @@
|
|
1
|
-
import { Action } from "../actions/action.js";
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import {
|
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
|
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
|
-
|
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
|
142
|
-
isNotActionStatement(): this is
|
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
|
-
|
146
|
-
|
233
|
+
notActions(): AnnotatedAction[];
|
234
|
+
private createNewNotActions;
|
235
|
+
notActionIsArray(): boolean;
|
236
|
+
isResourceStatement(): this is AnnotatedResourceStatement;
|
237
|
+
isNotResourceStatement(): this is AnnotatedNotResourceStatement;
|
147
238
|
resources(): Resource[];
|
148
|
-
|
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":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAA;
|
1
|
+
{"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
|
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
109
|
-
|
110
|
-
|
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.
|
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":";;;AAAA,
|
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":"
|
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;
|
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
|
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;
|
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
|