@actsecurity/iam-policy 0.1.109
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/LICENSE.txt +661 -0
- package/README.md +244 -0
- package/dist/cjs/actions/action.d.ts +68 -0
- package/dist/cjs/actions/action.d.ts.map +1 -0
- package/dist/cjs/actions/action.js +41 -0
- package/dist/cjs/actions/action.js.map +1 -0
- package/dist/cjs/conditions/condition.d.ts +62 -0
- package/dist/cjs/conditions/condition.d.ts.map +1 -0
- package/dist/cjs/conditions/condition.js +43 -0
- package/dist/cjs/conditions/condition.js.map +1 -0
- package/dist/cjs/conditions/conditionOperation.d.ts +31 -0
- package/dist/cjs/conditions/conditionOperation.d.ts.map +1 -0
- package/dist/cjs/conditions/conditionOperation.js +39 -0
- package/dist/cjs/conditions/conditionOperation.js.map +1 -0
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lint/lint.d.ts +41 -0
- package/dist/cjs/lint/lint.d.ts.map +1 -0
- package/dist/cjs/lint/lint.js +190 -0
- package/dist/cjs/lint/lint.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/parser.d.ts +13 -0
- package/dist/cjs/parser.d.ts.map +1 -0
- package/dist/cjs/parser.js +22 -0
- package/dist/cjs/parser.js.map +1 -0
- package/dist/cjs/policies/policy.d.ts +41 -0
- package/dist/cjs/policies/policy.d.ts.map +1 -0
- package/dist/cjs/policies/policy.js +40 -0
- package/dist/cjs/policies/policy.js.map +1 -0
- package/dist/cjs/principals/principal.d.ts +122 -0
- package/dist/cjs/principals/principal.d.ts.map +1 -0
- package/dist/cjs/principals/principal.js +101 -0
- package/dist/cjs/principals/principal.js.map +1 -0
- package/dist/cjs/resources/resource.d.ts +60 -0
- package/dist/cjs/resources/resource.d.ts.map +1 -0
- package/dist/cjs/resources/resource.js +56 -0
- package/dist/cjs/resources/resource.js.map +1 -0
- package/dist/cjs/statements/statement.d.ts +227 -0
- package/dist/cjs/statements/statement.d.ts.map +1 -0
- package/dist/cjs/statements/statement.js +236 -0
- package/dist/cjs/statements/statement.js.map +1 -0
- package/dist/cjs/utils.d.ts +55 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +100 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/validate/testutil.d.ts +3 -0
- package/dist/cjs/validate/testutil.d.ts.map +1 -0
- package/dist/cjs/validate/testutil.js +21 -0
- package/dist/cjs/validate/testutil.js.map +1 -0
- package/dist/cjs/validate/validate.d.ts +16 -0
- package/dist/cjs/validate/validate.d.ts.map +1 -0
- package/dist/cjs/validate/validate.js +361 -0
- package/dist/cjs/validate/validate.js.map +1 -0
- package/dist/cjs/validate/validateTypes.d.ts +53 -0
- package/dist/cjs/validate/validateTypes.d.ts.map +1 -0
- package/dist/cjs/validate/validateTypes.js +224 -0
- package/dist/cjs/validate/validateTypes.js.map +1 -0
- package/dist/cjs/validatedPolicy.d.ts +40 -0
- package/dist/cjs/validatedPolicy.d.ts.map +1 -0
- package/dist/cjs/validatedPolicy.js +30 -0
- package/dist/cjs/validatedPolicy.js.map +1 -0
- package/dist/esm/actions/action.d.ts +68 -0
- package/dist/esm/actions/action.d.ts.map +1 -0
- package/dist/esm/actions/action.js +35 -0
- package/dist/esm/actions/action.js.map +1 -0
- package/dist/esm/conditions/condition.d.ts +62 -0
- package/dist/esm/conditions/condition.d.ts.map +1 -0
- package/dist/esm/conditions/condition.js +35 -0
- package/dist/esm/conditions/condition.js.map +1 -0
- package/dist/esm/conditions/conditionOperation.d.ts +31 -0
- package/dist/esm/conditions/conditionOperation.d.ts.map +1 -0
- package/dist/esm/conditions/conditionOperation.js +34 -0
- package/dist/esm/conditions/conditionOperation.js.map +1 -0
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lint/lint.d.ts +41 -0
- package/dist/esm/lint/lint.d.ts.map +1 -0
- package/dist/esm/lint/lint.js +184 -0
- package/dist/esm/lint/lint.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/parser.d.ts +13 -0
- package/dist/esm/parser.d.ts.map +1 -0
- package/dist/esm/parser.js +19 -0
- package/dist/esm/parser.js.map +1 -0
- package/dist/esm/policies/policy.d.ts +41 -0
- package/dist/esm/policies/policy.d.ts.map +1 -0
- package/dist/esm/policies/policy.js +34 -0
- package/dist/esm/policies/policy.js.map +1 -0
- package/dist/esm/principals/principal.d.ts +122 -0
- package/dist/esm/principals/principal.d.ts.map +1 -0
- package/dist/esm/principals/principal.js +95 -0
- package/dist/esm/principals/principal.js.map +1 -0
- package/dist/esm/resources/resource.d.ts +60 -0
- package/dist/esm/resources/resource.d.ts.map +1 -0
- package/dist/esm/resources/resource.js +50 -0
- package/dist/esm/resources/resource.js.map +1 -0
- package/dist/esm/statements/statement.d.ts +227 -0
- package/dist/esm/statements/statement.d.ts.map +1 -0
- package/dist/esm/statements/statement.js +229 -0
- package/dist/esm/statements/statement.js.map +1 -0
- package/dist/esm/utils.d.ts +55 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +92 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/validate/testutil.d.ts +3 -0
- package/dist/esm/validate/testutil.d.ts.map +1 -0
- package/dist/esm/validate/testutil.js +19 -0
- package/dist/esm/validate/testutil.js.map +1 -0
- package/dist/esm/validate/validate.d.ts +16 -0
- package/dist/esm/validate/validate.d.ts.map +1 -0
- package/dist/esm/validate/validate.js +358 -0
- package/dist/esm/validate/validate.js.map +1 -0
- package/dist/esm/validate/validateTypes.d.ts +53 -0
- package/dist/esm/validate/validateTypes.d.ts.map +1 -0
- package/dist/esm/validate/validateTypes.js +215 -0
- package/dist/esm/validate/validateTypes.js.map +1 -0
- package/dist/esm/validatedPolicy.d.ts +40 -0
- package/dist/esm/validatedPolicy.d.ts.map +1 -0
- package/dist/esm/validatedPolicy.js +26 -0
- package/dist/esm/validatedPolicy.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceImpl = void 0;
|
|
4
|
+
const utils_js_1 = require("../utils.js");
|
|
5
|
+
class ResourceImpl {
|
|
6
|
+
rawValue;
|
|
7
|
+
otherProps;
|
|
8
|
+
constructor(rawValue, otherProps) {
|
|
9
|
+
this.rawValue = rawValue;
|
|
10
|
+
this.otherProps = otherProps;
|
|
11
|
+
}
|
|
12
|
+
path() {
|
|
13
|
+
return this.otherProps.path;
|
|
14
|
+
}
|
|
15
|
+
partition() {
|
|
16
|
+
if (!this.isArnResource()) {
|
|
17
|
+
throw new Error('Called partition on a resource without an ARN, use isArnResource before calling partition');
|
|
18
|
+
}
|
|
19
|
+
return (0, utils_js_1.delimitedSegmentAt)(this.value(), ':', 1);
|
|
20
|
+
}
|
|
21
|
+
service() {
|
|
22
|
+
if (!this.isArnResource()) {
|
|
23
|
+
throw new Error('Called service on a resource without an ARN, use isArnResource before calling service');
|
|
24
|
+
}
|
|
25
|
+
return (0, utils_js_1.delimitedSegmentAt)(this.value(), ':', 2);
|
|
26
|
+
}
|
|
27
|
+
region() {
|
|
28
|
+
if (!this.isArnResource()) {
|
|
29
|
+
throw new Error('Called region on a resource without an ARN, use isArnResource before calling region');
|
|
30
|
+
}
|
|
31
|
+
return (0, utils_js_1.delimitedSegmentAt)(this.value(), ':', 3);
|
|
32
|
+
}
|
|
33
|
+
account() {
|
|
34
|
+
if (!this.isArnResource()) {
|
|
35
|
+
throw new Error('Called account on a resource without an ARN, use isArnResource before calling account');
|
|
36
|
+
}
|
|
37
|
+
return (0, utils_js_1.delimitedSegmentAt)(this.value(), ':', 4);
|
|
38
|
+
}
|
|
39
|
+
resource() {
|
|
40
|
+
if (!this.isArnResource()) {
|
|
41
|
+
throw new Error('Called resource on a resource without an ARN, use isArnResource before calling resource');
|
|
42
|
+
}
|
|
43
|
+
return (0, utils_js_1.delimitedSegmentRemainder)(this.value(), ':', 5);
|
|
44
|
+
}
|
|
45
|
+
value() {
|
|
46
|
+
return this.rawValue;
|
|
47
|
+
}
|
|
48
|
+
isAllResources() {
|
|
49
|
+
return (0, utils_js_1.isAllWildcards)(this.rawValue);
|
|
50
|
+
}
|
|
51
|
+
isArnResource() {
|
|
52
|
+
return !this.isAllResources();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.ResourceImpl = ResourceImpl;
|
|
56
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resources/resource.ts"],"names":[],"mappings":";;;AAAA,0CAA2F;AAsD3F,MAAa,YAAY;IAEJ;IACA;IAFnB,YACmB,QAAgB,EAChB,UAEhB;QAHgB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAE1B;IACA,CAAC;IAEJ,IAAI;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IAC7B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAA;QACH,CAAC;QACD,OAAO,IAAA,6BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAE,CAAA;IAClD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAA;QACH,CAAC;QACD,OAAO,IAAA,6BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAE,CAAA;IAClD,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAA;QACH,CAAC;QACD,OAAO,IAAA,6BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAE,CAAA;IAClD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAA;QACH,CAAC;QACD,OAAO,IAAA,6BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAE,CAAA;IAClD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAA;QACH,CAAC;QACD,OAAO,IAAA,oCAAyB,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAE,CAAA;IACzD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,cAAc;QACZ,OAAO,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,aAAa;QACX,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAA;IAC/B,CAAC;CACF;AApED,oCAoEC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { type Action } from '../actions/action.js';
|
|
2
|
+
import { type Condition } from '../conditions/condition.js';
|
|
3
|
+
import { type Principal } from '../principals/principal.js';
|
|
4
|
+
import { type Resource } from '../resources/resource.js';
|
|
5
|
+
/**
|
|
6
|
+
* Represents a statement in an IAM policy
|
|
7
|
+
*/
|
|
8
|
+
export interface Statement {
|
|
9
|
+
/**
|
|
10
|
+
* The index of the statement in the policy, starts from 1
|
|
11
|
+
*/
|
|
12
|
+
index(): number;
|
|
13
|
+
/**
|
|
14
|
+
* The optional Sid (Statement ID) for a statement
|
|
15
|
+
*/
|
|
16
|
+
sid(): string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* The effect of the statement, either 'Allow' or 'Deny'
|
|
19
|
+
*/
|
|
20
|
+
effect(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Is the statement an Allow statement
|
|
23
|
+
*/
|
|
24
|
+
isAllow(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Is the statement a Deny statement
|
|
27
|
+
*/
|
|
28
|
+
isDeny(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The conditions of the statement as a map similar to the AWS IAM policy document.
|
|
31
|
+
* In this case all condition values are arrays, instead of strings or arrays.
|
|
32
|
+
*/
|
|
33
|
+
conditionMap(): Record<string, Record<string, string[]>> | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* The conditions for the statement
|
|
36
|
+
*/
|
|
37
|
+
conditions(): Condition[];
|
|
38
|
+
/**
|
|
39
|
+
* Does the statement have a Principal
|
|
40
|
+
*/
|
|
41
|
+
isPrincipalStatement(): this is PrincipalStatement;
|
|
42
|
+
/**
|
|
43
|
+
* Does the statement have a NotPrincipal
|
|
44
|
+
*/
|
|
45
|
+
isNotPrincipalStatement(): this is NotPrincipalStatement;
|
|
46
|
+
/**
|
|
47
|
+
* Does the statement have an Action
|
|
48
|
+
*/
|
|
49
|
+
isActionStatement(): this is ActionStatement;
|
|
50
|
+
/**
|
|
51
|
+
* Does the statement have a NotAction
|
|
52
|
+
*/
|
|
53
|
+
isNotActionStatement(): this is NotActionStatement;
|
|
54
|
+
/**
|
|
55
|
+
* Does the statement have a Resource
|
|
56
|
+
*/
|
|
57
|
+
isResourceStatement(): this is ResourceStatement;
|
|
58
|
+
/**
|
|
59
|
+
* Does the statement have a NotResource
|
|
60
|
+
*/
|
|
61
|
+
isNotResourceStatement(): this is NotResourceStatement;
|
|
62
|
+
/**
|
|
63
|
+
* The path to the statement in the policy
|
|
64
|
+
*/
|
|
65
|
+
path(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Returns the raw policy object
|
|
68
|
+
*/
|
|
69
|
+
toJSON(): any;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Represents a statement in an IAM policy that has Action
|
|
73
|
+
*/
|
|
74
|
+
export interface ActionStatement extends Statement {
|
|
75
|
+
/**
|
|
76
|
+
* The actions for the statement
|
|
77
|
+
*/
|
|
78
|
+
actions(): Action[];
|
|
79
|
+
/**
|
|
80
|
+
* Is the Action element an array of strings
|
|
81
|
+
*/
|
|
82
|
+
actionIsArray(): boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Represents a statement in an IAM policy that has NotAction
|
|
86
|
+
*/
|
|
87
|
+
export interface NotActionStatement extends Statement {
|
|
88
|
+
/**
|
|
89
|
+
* The not actions for the statement
|
|
90
|
+
*/
|
|
91
|
+
notActions(): Action[];
|
|
92
|
+
/**
|
|
93
|
+
* Is the NotAction element an array of strings
|
|
94
|
+
*/
|
|
95
|
+
notActionIsArray(): boolean;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Represents a statement in an IAM policy that has Resource
|
|
99
|
+
*/
|
|
100
|
+
export interface ResourceStatement extends Statement {
|
|
101
|
+
/**
|
|
102
|
+
* The resources for the statement
|
|
103
|
+
*/
|
|
104
|
+
resources(): Resource[];
|
|
105
|
+
/**
|
|
106
|
+
* Is the Resource element exactly a single wildcard: `"*"`
|
|
107
|
+
*/
|
|
108
|
+
hasSingleResourceWildcard(): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Is the Resource element an array of strings
|
|
111
|
+
*/
|
|
112
|
+
resourceIsArray(): boolean;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Represents a statement in an IAM policy that has NotResource
|
|
116
|
+
*/
|
|
117
|
+
export interface NotResourceStatement extends Statement {
|
|
118
|
+
/**
|
|
119
|
+
* The not resources for the statement
|
|
120
|
+
*/
|
|
121
|
+
notResources(): Resource[];
|
|
122
|
+
/**
|
|
123
|
+
* Is the NotResource element exactly a single wildcard: `"*"`
|
|
124
|
+
*/
|
|
125
|
+
hasSingleNotResourceWildcard(): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Is the resource element an array of strings
|
|
128
|
+
*/
|
|
129
|
+
notResourceIsArray(): boolean;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Represents a statement in an IAM policy that has Principal
|
|
133
|
+
*/
|
|
134
|
+
export interface PrincipalStatement extends Statement {
|
|
135
|
+
/**
|
|
136
|
+
* The principals for the statement
|
|
137
|
+
*/
|
|
138
|
+
principals(): Principal[];
|
|
139
|
+
/**
|
|
140
|
+
* Is the Principal type is an array of strings
|
|
141
|
+
*
|
|
142
|
+
* @param principalType the type of the Principal such as "AWS", "Service", etc.
|
|
143
|
+
* @returns true if the principal type is an array of strings in the raw policy
|
|
144
|
+
*/
|
|
145
|
+
principalTypeIsArray(principalType: string): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Is the Principal element a single wildcard: `"*"`
|
|
148
|
+
*/
|
|
149
|
+
hasSingleWildcardPrincipal(): boolean;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Represents a statement in an IAM policy that has NotPrincipal
|
|
153
|
+
*/
|
|
154
|
+
export interface NotPrincipalStatement extends Statement {
|
|
155
|
+
/**
|
|
156
|
+
* The not principals for the statement
|
|
157
|
+
*/
|
|
158
|
+
notPrincipals(): Principal[];
|
|
159
|
+
/**
|
|
160
|
+
* Is the NotPrincipal type is an array of strings
|
|
161
|
+
*
|
|
162
|
+
* @param notPrincipalType the type of the NotPrincipal such as "AWS", "Service", etc.
|
|
163
|
+
* @returns true if the NotPrincipal type is an array of strings in the raw policy
|
|
164
|
+
*/
|
|
165
|
+
notPrincipalTypeIsArray(notPrincipalType: string): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Is the NotPrincipal element a single wildcard: `"*"`
|
|
168
|
+
*/
|
|
169
|
+
hasSingleWildcardNotPrincipal(): boolean;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Implementation of the Statement interface and all its sub-interfaces
|
|
173
|
+
*/
|
|
174
|
+
export declare class StatementImpl implements Statement, ActionStatement, NotActionStatement, ResourceStatement, NotResourceStatement, PrincipalStatement {
|
|
175
|
+
private readonly statementObject;
|
|
176
|
+
private readonly _index;
|
|
177
|
+
private readonly otherProps;
|
|
178
|
+
constructor(statementObject: any, _index: number, otherProps: {
|
|
179
|
+
path: string;
|
|
180
|
+
});
|
|
181
|
+
index(): number;
|
|
182
|
+
path(): string;
|
|
183
|
+
sid(): string | undefined;
|
|
184
|
+
effect(): string;
|
|
185
|
+
isAllow(): boolean;
|
|
186
|
+
isDeny(): boolean;
|
|
187
|
+
isPrincipalStatement(): this is PrincipalStatement;
|
|
188
|
+
isNotPrincipalStatement(): this is NotPrincipalStatement;
|
|
189
|
+
principals(): Principal[];
|
|
190
|
+
principalTypeIsArray(principalType: string): boolean;
|
|
191
|
+
hasSingleWildcardPrincipal(): boolean;
|
|
192
|
+
notPrincipals(): Principal[];
|
|
193
|
+
notPrincipalTypeIsArray(notPrincipalType: string): boolean;
|
|
194
|
+
hasSingleWildcardNotPrincipal(): boolean;
|
|
195
|
+
toJSON(): any;
|
|
196
|
+
/**
|
|
197
|
+
* Parse the principal object into PrincipalImpl objects.
|
|
198
|
+
*
|
|
199
|
+
* This is non trivial and we don't want to implement this in each function.
|
|
200
|
+
*
|
|
201
|
+
* @param principals the Principal or NotPrincipal object ot parse
|
|
202
|
+
* @returns the backing principals for a Principal or NotPrincipal object
|
|
203
|
+
*/
|
|
204
|
+
private parsePrincipalObject;
|
|
205
|
+
isActionStatement(): this is ActionStatement;
|
|
206
|
+
isNotActionStatement(): this is NotActionStatement;
|
|
207
|
+
actions(): Action[];
|
|
208
|
+
private createNewActions;
|
|
209
|
+
actionIsArray(): boolean;
|
|
210
|
+
notActions(): Action[];
|
|
211
|
+
private createNewNotActions;
|
|
212
|
+
notActionIsArray(): boolean;
|
|
213
|
+
isResourceStatement(): this is ResourceStatement;
|
|
214
|
+
isNotResourceStatement(): this is NotResourceStatement;
|
|
215
|
+
resources(): Resource[];
|
|
216
|
+
private createNewResources;
|
|
217
|
+
hasSingleResourceWildcard(): boolean;
|
|
218
|
+
resourceIsArray(): boolean;
|
|
219
|
+
notResources(): Resource[];
|
|
220
|
+
private createNewNotResources;
|
|
221
|
+
notResourceIsArray(): boolean;
|
|
222
|
+
hasSingleNotResourceWildcard(): boolean;
|
|
223
|
+
conditionMap(): Record<string, Record<string, string[]>> | undefined;
|
|
224
|
+
conditions(): Condition[];
|
|
225
|
+
private createNewConditions;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=statement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatementImpl = void 0;
|
|
4
|
+
const action_js_1 = require("../actions/action.js");
|
|
5
|
+
const condition_js_1 = require("../conditions/condition.js");
|
|
6
|
+
const principal_js_1 = require("../principals/principal.js");
|
|
7
|
+
const resource_js_1 = require("../resources/resource.js");
|
|
8
|
+
/**
|
|
9
|
+
* Implementation of the Statement interface and all its sub-interfaces
|
|
10
|
+
*/
|
|
11
|
+
class StatementImpl {
|
|
12
|
+
statementObject;
|
|
13
|
+
_index;
|
|
14
|
+
otherProps;
|
|
15
|
+
constructor(statementObject, _index, otherProps) {
|
|
16
|
+
this.statementObject = statementObject;
|
|
17
|
+
this._index = _index;
|
|
18
|
+
this.otherProps = otherProps;
|
|
19
|
+
}
|
|
20
|
+
index() {
|
|
21
|
+
return this._index;
|
|
22
|
+
}
|
|
23
|
+
path() {
|
|
24
|
+
return this.otherProps.path;
|
|
25
|
+
}
|
|
26
|
+
sid() {
|
|
27
|
+
return this.statementObject.Sid;
|
|
28
|
+
}
|
|
29
|
+
effect() {
|
|
30
|
+
return this.statementObject.Effect;
|
|
31
|
+
}
|
|
32
|
+
isAllow() {
|
|
33
|
+
return this.effect() === 'Allow';
|
|
34
|
+
}
|
|
35
|
+
isDeny() {
|
|
36
|
+
return this.effect() === 'Deny';
|
|
37
|
+
}
|
|
38
|
+
isPrincipalStatement() {
|
|
39
|
+
return this.statementObject.Principal !== undefined;
|
|
40
|
+
}
|
|
41
|
+
isNotPrincipalStatement() {
|
|
42
|
+
return this.statementObject.NotPrincipal !== undefined;
|
|
43
|
+
}
|
|
44
|
+
principals() {
|
|
45
|
+
if (!this.isPrincipalStatement()) {
|
|
46
|
+
throw new Error('Called principals on a statement without Principal, use isPrincipalStatement before calling principals');
|
|
47
|
+
}
|
|
48
|
+
return this.parsePrincipalObject(this.statementObject.Principal);
|
|
49
|
+
}
|
|
50
|
+
principalTypeIsArray(principalType) {
|
|
51
|
+
if (!this.isPrincipalStatement()) {
|
|
52
|
+
throw new Error('Called principalTypeIsArray on a statement without Principal, use isPrincipalStatement before calling principalTypeIsArray');
|
|
53
|
+
}
|
|
54
|
+
return (typeof this.statementObject.Principal === 'object' &&
|
|
55
|
+
Array.isArray(this.statementObject.Principal[principalType]));
|
|
56
|
+
}
|
|
57
|
+
hasSingleWildcardPrincipal() {
|
|
58
|
+
if (!this.isPrincipalStatement()) {
|
|
59
|
+
throw new Error('Called hasSingleWildcardPrincipal on a statement without Principal, use isPrincipalStatement before calling hasSingleWildcardPrincipal');
|
|
60
|
+
}
|
|
61
|
+
return this.statementObject.Principal === '*';
|
|
62
|
+
}
|
|
63
|
+
notPrincipals() {
|
|
64
|
+
if (!this.isNotPrincipalStatement()) {
|
|
65
|
+
throw new Error('Called notPrincipals on a statement without NotPrincipal, use isNotPrincipalStatement before calling notPrincipals');
|
|
66
|
+
}
|
|
67
|
+
return this.parsePrincipalObject(this.statementObject.NotPrincipal);
|
|
68
|
+
}
|
|
69
|
+
notPrincipalTypeIsArray(notPrincipalType) {
|
|
70
|
+
if (!this.isNotPrincipalStatement()) {
|
|
71
|
+
throw new Error('Called notPrincipalTypeIsArray on a statement without NotPrincipal, use isNotPrincipalStatement before calling notPrincipalTypeIsArray');
|
|
72
|
+
}
|
|
73
|
+
return (typeof this.statementObject.NotPrincipal === 'object' &&
|
|
74
|
+
Array.isArray(this.statementObject.NotPrincipal[notPrincipalType]));
|
|
75
|
+
}
|
|
76
|
+
hasSingleWildcardNotPrincipal() {
|
|
77
|
+
if (!this.isNotPrincipalStatement()) {
|
|
78
|
+
throw new Error('Called hasSingleWildcardNotPrincipal on a statement without NotPrincipal, use isNotPrincipalStatement before calling hasSingleWildcardNotPrincipal');
|
|
79
|
+
}
|
|
80
|
+
return this.statementObject.NotPrincipal === '*';
|
|
81
|
+
}
|
|
82
|
+
toJSON() {
|
|
83
|
+
return this.statementObject;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse the principal object into PrincipalImpl objects.
|
|
87
|
+
*
|
|
88
|
+
* This is non trivial and we don't want to implement this in each function.
|
|
89
|
+
*
|
|
90
|
+
* @param principals the Principal or NotPrincipal object ot parse
|
|
91
|
+
* @returns the backing principals for a Principal or NotPrincipal object
|
|
92
|
+
*/
|
|
93
|
+
parsePrincipalObject(principals) {
|
|
94
|
+
if (typeof principals === 'string') {
|
|
95
|
+
return [new principal_js_1.PrincipalImpl('AWS', principals)];
|
|
96
|
+
}
|
|
97
|
+
return Object.entries(principals)
|
|
98
|
+
.map(([principalType, principalValue]) => {
|
|
99
|
+
if (typeof principalValue === 'string') {
|
|
100
|
+
return new principal_js_1.PrincipalImpl(principalType, principalValue);
|
|
101
|
+
}
|
|
102
|
+
return Object.entries(principalValue).map(([key, value]) => {
|
|
103
|
+
return new principal_js_1.PrincipalImpl(principalType, value);
|
|
104
|
+
});
|
|
105
|
+
})
|
|
106
|
+
.flat();
|
|
107
|
+
}
|
|
108
|
+
isActionStatement() {
|
|
109
|
+
return this.statementObject.Action !== undefined;
|
|
110
|
+
}
|
|
111
|
+
isNotActionStatement() {
|
|
112
|
+
return this.statementObject.NotAction !== undefined;
|
|
113
|
+
}
|
|
114
|
+
actions() {
|
|
115
|
+
if (!this.isActionStatement()) {
|
|
116
|
+
throw new Error('Called actions on a statement without Action, use isActionStatement before calling actions');
|
|
117
|
+
}
|
|
118
|
+
return this.createNewActions();
|
|
119
|
+
}
|
|
120
|
+
createNewActions() {
|
|
121
|
+
if (!this.actionIsArray()) {
|
|
122
|
+
return [new action_js_1.ActionImpl(this.statementObject.Action, { path: `${this.path()}.Action` })];
|
|
123
|
+
}
|
|
124
|
+
return [this.statementObject.Action].flat().map((action, index) => {
|
|
125
|
+
return new action_js_1.ActionImpl(action, { path: `${this.path()}.Action[${index}]` });
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
actionIsArray() {
|
|
129
|
+
return Array.isArray(this.statementObject.Action);
|
|
130
|
+
}
|
|
131
|
+
notActions() {
|
|
132
|
+
if (!this.isNotActionStatement()) {
|
|
133
|
+
throw new Error('Called notActions on a statement without NotAction, use isNotActionStatement before calling notActions');
|
|
134
|
+
}
|
|
135
|
+
return this.createNewNotActions();
|
|
136
|
+
}
|
|
137
|
+
createNewNotActions() {
|
|
138
|
+
if (!this.notActionIsArray()) {
|
|
139
|
+
return [new action_js_1.ActionImpl(this.statementObject.NotAction, { path: `${this.path()}.NotAction` })];
|
|
140
|
+
}
|
|
141
|
+
return [this.statementObject.NotAction].flat().map((action, index) => {
|
|
142
|
+
return new action_js_1.ActionImpl(action, { path: `${this.path()}.NotAction[${index}]` });
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
notActionIsArray() {
|
|
146
|
+
return Array.isArray(this.statementObject.NotAction);
|
|
147
|
+
}
|
|
148
|
+
isResourceStatement() {
|
|
149
|
+
return this.statementObject.Resource !== undefined;
|
|
150
|
+
}
|
|
151
|
+
isNotResourceStatement() {
|
|
152
|
+
return this.statementObject.NotResource !== undefined;
|
|
153
|
+
}
|
|
154
|
+
resources() {
|
|
155
|
+
if (!this.isResourceStatement()) {
|
|
156
|
+
throw new Error('Called resources on a statement without Resource, use isResourceStatement before calling resources');
|
|
157
|
+
}
|
|
158
|
+
return this.createNewResources();
|
|
159
|
+
}
|
|
160
|
+
createNewResources() {
|
|
161
|
+
if (!this.resourceIsArray()) {
|
|
162
|
+
return [new resource_js_1.ResourceImpl(this.statementObject.Resource, { path: `${this.path()}.Resource` })];
|
|
163
|
+
}
|
|
164
|
+
return [this.statementObject.Resource].flat().map((resource, index) => {
|
|
165
|
+
return new resource_js_1.ResourceImpl(resource, { path: `${this.path()}.Resource[${index}]` });
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
hasSingleResourceWildcard() {
|
|
169
|
+
if (!this.isResourceStatement()) {
|
|
170
|
+
throw new Error('Called hasSingleResourceWildcard on a statement without Resource, use isResourceStatement before calling hasSingleResourceWildcard');
|
|
171
|
+
}
|
|
172
|
+
return this.statementObject.Resource === '*';
|
|
173
|
+
}
|
|
174
|
+
resourceIsArray() {
|
|
175
|
+
return Array.isArray(this.statementObject.Resource);
|
|
176
|
+
}
|
|
177
|
+
notResources() {
|
|
178
|
+
if (!this.isNotResourceStatement()) {
|
|
179
|
+
throw new Error('Called notResources on a statement without NotResource, use isNotResourceStatement before calling notResources');
|
|
180
|
+
}
|
|
181
|
+
return this.createNewNotResources();
|
|
182
|
+
}
|
|
183
|
+
createNewNotResources() {
|
|
184
|
+
if (!this.notResourceIsArray()) {
|
|
185
|
+
return [
|
|
186
|
+
new resource_js_1.ResourceImpl(this.statementObject.NotResource, { path: `${this.path()}.NotResource` })
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
return [this.statementObject.NotResource].flat().map((resource, index) => {
|
|
190
|
+
return new resource_js_1.ResourceImpl(resource, { path: `${this.path()}.NotResource[${index}]` });
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
notResourceIsArray() {
|
|
194
|
+
return Array.isArray(this.statementObject.NotResource);
|
|
195
|
+
}
|
|
196
|
+
hasSingleNotResourceWildcard() {
|
|
197
|
+
if (!this.isNotResourceStatement()) {
|
|
198
|
+
throw new Error('Called hasSingleNotResourceWildcard on a statement without NotResource, use isNotResourceStatement before calling hasSingleNotResourceWildcard');
|
|
199
|
+
}
|
|
200
|
+
return this.statementObject.NotResource === '*';
|
|
201
|
+
}
|
|
202
|
+
conditionMap() {
|
|
203
|
+
if (!this.statementObject.Condition) {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
const result = {};
|
|
207
|
+
for (const key of Object.keys(this.statementObject.Condition)) {
|
|
208
|
+
const value = this.statementObject.Condition[key];
|
|
209
|
+
result[key] = {};
|
|
210
|
+
for (const subKey of Object.keys(value)) {
|
|
211
|
+
const subValue = value[subKey];
|
|
212
|
+
result[key][subKey] = Array.isArray(subValue) ? subValue : [subValue];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
conditions() {
|
|
218
|
+
return this.createNewConditions();
|
|
219
|
+
}
|
|
220
|
+
createNewConditions() {
|
|
221
|
+
if (!this.statementObject.Condition) {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
return Object.entries(this.statementObject.Condition)
|
|
225
|
+
.map(([opKey, opValue]) => {
|
|
226
|
+
return Object.entries(opValue).map(([condKey, condValue]) => {
|
|
227
|
+
return new condition_js_1.ConditionImpl(opKey, condKey, condValue, {
|
|
228
|
+
conditionPath: `${this.path()}.Condition`
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
})
|
|
232
|
+
.flat();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.StatementImpl = StatementImpl;
|
|
236
|
+
//# sourceMappingURL=statement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a string is all wildcards(*)
|
|
3
|
+
*
|
|
4
|
+
* @param value The value to check if it is a wildcard
|
|
5
|
+
* @returns True if the value is all wildcards, false otherwise
|
|
6
|
+
*/
|
|
7
|
+
export declare function isAllWildcards(value: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Returns the segment at the requested zero-based index without allocating an
|
|
10
|
+
* array for every segment in the value.
|
|
11
|
+
*
|
|
12
|
+
* @param value - the delimited string to read from
|
|
13
|
+
* @param delimiter - the delimiter that separates segments
|
|
14
|
+
* @param segmentIndex - the zero-based segment index to return
|
|
15
|
+
* @returns the requested segment, or undefined when the index is not present
|
|
16
|
+
*/
|
|
17
|
+
export declare function delimitedSegmentAt(value: string, delimiter: string, segmentIndex: number): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the last segment of a delimited string without allocating an array for
|
|
20
|
+
* all preceding segments.
|
|
21
|
+
*
|
|
22
|
+
* @param value - the delimited string to read from
|
|
23
|
+
* @param delimiter - the delimiter that separates segments
|
|
24
|
+
* @returns the final segment after the last delimiter, or the whole value if no delimiter exists
|
|
25
|
+
*/
|
|
26
|
+
export declare function lastDelimitedSegment(value: string, delimiter: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the remainder of a delimited string starting at the requested
|
|
29
|
+
* zero-based segment index.
|
|
30
|
+
*
|
|
31
|
+
* @param value - the delimited string to read from
|
|
32
|
+
* @param delimiter - the delimiter that separates segments
|
|
33
|
+
* @param segmentIndex - the zero-based segment index where the remainder starts
|
|
34
|
+
* @returns the substring starting at the requested segment, or undefined when the segment is not present
|
|
35
|
+
*/
|
|
36
|
+
export declare function delimitedSegmentRemainder(value: string, delimiter: string, segmentIndex: number): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Compares two strings without case sensitivity and without lowercasing either
|
|
39
|
+
* value first.
|
|
40
|
+
*
|
|
41
|
+
* @param first - the first string to compare
|
|
42
|
+
* @param second - the second string to compare
|
|
43
|
+
* @returns true when both strings match case-insensitively
|
|
44
|
+
*/
|
|
45
|
+
export declare function caseInsensitiveEquals(first: string, second: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Checks whether a value ends with a suffix without case sensitivity and
|
|
48
|
+
* without lowercasing the value first.
|
|
49
|
+
*
|
|
50
|
+
* @param value - the value to check
|
|
51
|
+
* @param suffix - the suffix to compare against the end of the value
|
|
52
|
+
* @returns true when the value ends with the suffix case-insensitively
|
|
53
|
+
*/
|
|
54
|
+
export declare function caseInsensitiveEndsWith(value: string, suffix: string): boolean;
|
|
55
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAepB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAUpB;AAID;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9E"}
|