@cloud-copilot/iam-policy 0.0.1 → 0.0.3
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/README.md +93 -58
- package/dist/actions/action.d.ts +51 -0
- package/dist/actions/action.d.ts.map +1 -0
- package/dist/actions/action.js +33 -0
- package/dist/actions/action.js.map +1 -0
- package/dist/actions/actions.test.d.ts +2 -0
- package/dist/actions/actions.test.d.ts.map +1 -0
- package/dist/actions/actions.test.js +91 -0
- package/dist/actions/actions.test.js.map +1 -0
- package/dist/cjs/conditions/condition.d.ts +3 -2
- package/dist/cjs/conditions/condition.d.ts.map +1 -1
- package/dist/cjs/conditions/condition.js +2 -1
- package/dist/cjs/conditions/condition.js.map +1 -1
- 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 +31 -0
- package/dist/cjs/conditions/conditionOperation.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/policies/policy.js +1 -1
- package/dist/cjs/policies/policy.js.map +1 -1
- package/dist/cjs/statements/statement.d.ts +7 -1
- package/dist/cjs/statements/statement.d.ts.map +1 -1
- package/dist/cjs/statements/statement.js +6 -1
- package/dist/cjs/statements/statement.js.map +1 -1
- package/dist/conditions/condition.d.ts +16 -0
- package/dist/conditions/condition.d.ts.map +1 -0
- package/dist/conditions/condition.js +25 -0
- package/dist/conditions/condition.js.map +1 -0
- package/dist/conditions/conditionOperation.d.ts +31 -0
- package/dist/conditions/conditionOperation.d.ts.map +1 -0
- package/dist/conditions/conditionOperation.js +31 -0
- package/dist/conditions/conditionOperation.js.map +1 -0
- package/dist/esm/conditions/condition.d.ts +3 -2
- package/dist/esm/conditions/condition.d.ts.map +1 -1
- package/dist/esm/conditions/condition.js +2 -1
- package/dist/esm/conditions/condition.js.map +1 -1
- 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 +26 -0
- package/dist/esm/conditions/conditionOperation.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/policies/policy.js +1 -1
- package/dist/esm/policies/policy.js.map +1 -1
- package/dist/esm/statements/statement.d.ts +7 -1
- package/dist/esm/statements/statement.d.ts.map +1 -1
- package/dist/esm/statements/statement.js +5 -1
- package/dist/esm/statements/statement.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +9 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +14 -0
- package/dist/parser.js.map +1 -0
- package/dist/policies/policy.d.ts +14 -0
- package/dist/policies/policy.d.ts.map +1 -0
- package/dist/policies/policy.js +21 -0
- package/dist/policies/policy.js.map +1 -0
- package/dist/policies/policy.test.d.ts +2 -0
- package/dist/policies/policy.test.d.ts.map +1 -0
- package/dist/policies/policy.test.js +74 -0
- package/dist/policies/policy.test.js.map +1 -0
- package/dist/principals/principal.d.ts +21 -0
- package/dist/principals/principal.d.ts.map +1 -0
- package/dist/principals/principal.js +35 -0
- package/dist/principals/principal.js.map +1 -0
- package/dist/resources/resource.d.ts +20 -0
- package/dist/resources/resource.d.ts.map +1 -0
- package/dist/resources/resource.js +18 -0
- package/dist/resources/resource.js.map +1 -0
- package/dist/resources/resource.test.d.ts +2 -0
- package/dist/resources/resource.test.d.ts.map +1 -0
- package/dist/resources/resource.test.js +35 -0
- package/dist/resources/resource.test.js.map +1 -0
- package/dist/statements/statement.d.ts +146 -0
- package/dist/statements/statement.d.ts.map +1 -0
- package/dist/statements/statement.js +121 -0
- package/dist/statements/statement.js.map +1 -0
- package/dist/statements/statement.test.d.ts +2 -0
- package/dist/statements/statement.test.d.ts.map +1 -0
- package/dist/statements/statement.test.js +479 -0
- package/dist/statements/statement.test.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
@@ -0,0 +1,16 @@
|
|
1
|
+
import { ConditionOperation } from "./conditionOperation.js";
|
2
|
+
export interface Condition {
|
3
|
+
operation(): ConditionOperation;
|
4
|
+
conditionKey(): string;
|
5
|
+
conditionValues(): string[];
|
6
|
+
}
|
7
|
+
export declare class ConditionImpl implements Condition {
|
8
|
+
private readonly op;
|
9
|
+
private readonly key;
|
10
|
+
private readonly values;
|
11
|
+
constructor(op: string, key: string, values: string | string[]);
|
12
|
+
operation(): ConditionOperation;
|
13
|
+
conditionKey(): string;
|
14
|
+
conditionValues(): string[];
|
15
|
+
}
|
16
|
+
//# sourceMappingURL=condition.d.ts.map
|
@@ -0,0 +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"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ConditionImpl = void 0;
|
4
|
+
const conditionOperation_js_1 = require("./conditionOperation.js");
|
5
|
+
class ConditionImpl {
|
6
|
+
op;
|
7
|
+
key;
|
8
|
+
values;
|
9
|
+
constructor(op, key, values) {
|
10
|
+
this.op = op;
|
11
|
+
this.key = key;
|
12
|
+
this.values = values;
|
13
|
+
}
|
14
|
+
operation() {
|
15
|
+
return new conditionOperation_js_1.ConditionOperationImpl(this.op);
|
16
|
+
}
|
17
|
+
conditionKey() {
|
18
|
+
return this.key;
|
19
|
+
}
|
20
|
+
conditionValues() {
|
21
|
+
return typeof this.values === 'string' ? [this.values] : this.values;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
exports.ConditionImpl = ConditionImpl;
|
25
|
+
//# sourceMappingURL=condition.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../src/conditions/condition.ts"],"names":[],"mappings":";;;AAAA,mEAAoF;AAQpF,MAAa,aAAa;IACK;IAA6B;IAA8B;IAAxF,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE9G,SAAS;QACd,OAAO,IAAI,8CAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,eAAe;QACpB,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtE,CAAC;CACF;AAdD,sCAcC"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
export type SetOperator = 'ForAllValues' | 'ForAnyValue';
|
2
|
+
/**
|
3
|
+
* ConditionOperation is a string that represents the operation of a condition.
|
4
|
+
*/
|
5
|
+
export interface ConditionOperation {
|
6
|
+
/**
|
7
|
+
* Returns the set modifier if present.
|
8
|
+
*/
|
9
|
+
setOperator(): SetOperator | undefined;
|
10
|
+
/**
|
11
|
+
* Returns the base operator of the condition without the set modifier or IfExists.
|
12
|
+
*/
|
13
|
+
baseOperator(): string;
|
14
|
+
/**
|
15
|
+
* Returns true if the condition operation ends with IfExists.
|
16
|
+
*/
|
17
|
+
isIfExists(): boolean;
|
18
|
+
/**
|
19
|
+
* Returns the raw string of the condition operation.
|
20
|
+
*/
|
21
|
+
value(): string;
|
22
|
+
}
|
23
|
+
export declare class ConditionOperationImpl implements ConditionOperation {
|
24
|
+
private readonly op;
|
25
|
+
constructor(op: string);
|
26
|
+
setOperator(): SetOperator | undefined;
|
27
|
+
isIfExists(): boolean;
|
28
|
+
baseOperator(): string;
|
29
|
+
value(): string;
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=conditionOperation.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"conditionOperation.d.ts","sourceRoot":"","sources":["../../src/conditions/conditionOperation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,aAAa,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,WAAW,IAAI,WAAW,GAAG,SAAS,CAAA;IAEtC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAA;IAEtB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAA;IAErB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;CAChB;AAID,qBAAa,sBAAuB,YAAW,kBAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM;IAEhC,WAAW,IAAI,WAAW,GAAG,SAAS;IAOtC,UAAU,IAAI,OAAO;IAIrB,YAAY,IAAI,MAAM;IAQtB,KAAK,IAAI,MAAM;CAIvB"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ConditionOperationImpl = void 0;
|
4
|
+
const ifExistsSlice = 'IfExists'.length * -1;
|
5
|
+
class ConditionOperationImpl {
|
6
|
+
op;
|
7
|
+
constructor(op) {
|
8
|
+
this.op = op;
|
9
|
+
}
|
10
|
+
setOperator() {
|
11
|
+
if (!this.op.includes(':')) {
|
12
|
+
return undefined;
|
13
|
+
}
|
14
|
+
return this.op.split(':').at(0);
|
15
|
+
}
|
16
|
+
isIfExists() {
|
17
|
+
return this.op.endsWith('IfExists');
|
18
|
+
}
|
19
|
+
baseOperator() {
|
20
|
+
const base = this.op.split(':').at(-1);
|
21
|
+
if (base?.endsWith('IfExists')) {
|
22
|
+
return base.slice(0, ifExistsSlice);
|
23
|
+
}
|
24
|
+
return base;
|
25
|
+
}
|
26
|
+
value() {
|
27
|
+
return this.op;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
exports.ConditionOperationImpl = ConditionOperationImpl;
|
31
|
+
//# sourceMappingURL=conditionOperation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"conditionOperation.js","sourceRoot":"","sources":["../../src/conditions/conditionOperation.ts"],"names":[],"mappings":";;;AA2BA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAE5C,MAAa,sBAAsB;IACJ;IAA7B,YAA6B,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAEpC,WAAW;QAChB,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB,CAAA;IAChD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;IAEM,YAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;QACvC,IAAG,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;CAEF;AA1BD,wDA0BC"}
|
@@ -1,5 +1,6 @@
|
|
1
|
+
import { ConditionOperation } from "./conditionOperation.js";
|
1
2
|
export interface Condition {
|
2
|
-
operation():
|
3
|
+
operation(): ConditionOperation;
|
3
4
|
conditionKey(): string;
|
4
5
|
conditionValues(): string[];
|
5
6
|
}
|
@@ -8,7 +9,7 @@ export declare class ConditionImpl implements Condition {
|
|
8
9
|
private readonly key;
|
9
10
|
private readonly values;
|
10
11
|
constructor(op: string, key: string, values: string | string[]);
|
11
|
-
operation():
|
12
|
+
operation(): ConditionOperation;
|
12
13
|
conditionKey(): string;
|
13
14
|
conditionValues(): string[];
|
14
15
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,
|
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,3 +1,4 @@
|
|
1
|
+
import { ConditionOperationImpl } from "./conditionOperation.js";
|
1
2
|
export class ConditionImpl {
|
2
3
|
constructor(op, key, values) {
|
3
4
|
this.op = op;
|
@@ -5,7 +6,7 @@ export class ConditionImpl {
|
|
5
6
|
this.values = values;
|
6
7
|
}
|
7
8
|
operation() {
|
8
|
-
return this.op;
|
9
|
+
return new ConditionOperationImpl(this.op);
|
9
10
|
}
|
10
11
|
conditionKey() {
|
11
12
|
return this.key;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/conditions/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAQpF,MAAM,OAAO,aAAa;IACxB,YAA6B,EAAU,EAAmB,GAAW,EAAmB,MAAyB;QAApF,OAAE,GAAF,EAAE,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE9G,SAAS;QACd,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,eAAe;QACpB,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACtE,CAAC;CACF"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
export type SetOperator = 'ForAllValues' | 'ForAnyValue';
|
2
|
+
/**
|
3
|
+
* ConditionOperation is a string that represents the operation of a condition.
|
4
|
+
*/
|
5
|
+
export interface ConditionOperation {
|
6
|
+
/**
|
7
|
+
* Returns the set modifier if present.
|
8
|
+
*/
|
9
|
+
setOperator(): SetOperator | undefined;
|
10
|
+
/**
|
11
|
+
* Returns the base operator of the condition without the set modifier or IfExists.
|
12
|
+
*/
|
13
|
+
baseOperator(): string;
|
14
|
+
/**
|
15
|
+
* Returns true if the condition operation ends with IfExists.
|
16
|
+
*/
|
17
|
+
isIfExists(): boolean;
|
18
|
+
/**
|
19
|
+
* Returns the raw string of the condition operation.
|
20
|
+
*/
|
21
|
+
value(): string;
|
22
|
+
}
|
23
|
+
export declare class ConditionOperationImpl implements ConditionOperation {
|
24
|
+
private readonly op;
|
25
|
+
constructor(op: string);
|
26
|
+
setOperator(): SetOperator | undefined;
|
27
|
+
isIfExists(): boolean;
|
28
|
+
baseOperator(): string;
|
29
|
+
value(): string;
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=conditionOperation.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"conditionOperation.d.ts","sourceRoot":"","sources":["../../../src/conditions/conditionOperation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,aAAa,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,WAAW,IAAI,WAAW,GAAG,SAAS,CAAA;IAEtC;;OAEG;IACH,YAAY,IAAI,MAAM,CAAA;IAEtB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAA;IAErB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;CAChB;AAID,qBAAa,sBAAuB,YAAW,kBAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM;IAEhC,WAAW,IAAI,WAAW,GAAG,SAAS;IAOtC,UAAU,IAAI,OAAO;IAIrB,YAAY,IAAI,MAAM;IAQtB,KAAK,IAAI,MAAM;CAIvB"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
const ifExistsSlice = 'IfExists'.length * -1;
|
2
|
+
export class ConditionOperationImpl {
|
3
|
+
constructor(op) {
|
4
|
+
this.op = op;
|
5
|
+
}
|
6
|
+
setOperator() {
|
7
|
+
if (!this.op.includes(':')) {
|
8
|
+
return undefined;
|
9
|
+
}
|
10
|
+
return this.op.split(':').at(0);
|
11
|
+
}
|
12
|
+
isIfExists() {
|
13
|
+
return this.op.endsWith('IfExists');
|
14
|
+
}
|
15
|
+
baseOperator() {
|
16
|
+
const base = this.op.split(':').at(-1);
|
17
|
+
if (base?.endsWith('IfExists')) {
|
18
|
+
return base.slice(0, ifExistsSlice);
|
19
|
+
}
|
20
|
+
return base;
|
21
|
+
}
|
22
|
+
value() {
|
23
|
+
return this.op;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=conditionOperation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"conditionOperation.js","sourceRoot":"","sources":["../../../src/conditions/conditionOperation.ts"],"names":[],"mappings":"AA2BA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAE5C,MAAM,OAAO,sBAAsB;IACjC,YAA6B,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAEpC,WAAW;QAChB,IAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB,CAAA;IAChD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;IAEM,YAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;QACvC,IAAG,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;CAEF"}
|
package/dist/esm/index.d.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
export type { Action, ActionType, ServiceAction, WildcardAction } from './actions/action.js';
|
2
2
|
export type { Condition } from './conditions/condition.js';
|
3
|
+
export type { ConditionOperation, SetOperator } from './conditions/conditionOperation.js';
|
3
4
|
export { loadPolicy } from './parser.js';
|
4
5
|
export type { Policy } from './policies/policy.js';
|
5
6
|
export type { Principal, PrincipalType } from './principals/principal.js';
|
package/dist/esm/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA"}
|
package/dist/esm/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA"}
|
@@ -10,7 +10,7 @@ export class PolicyImpl {
|
|
10
10
|
return this.policyObject.Id;
|
11
11
|
}
|
12
12
|
statements() {
|
13
|
-
return [this.policyObject.Statement].flat().map((statement) => new StatementImpl(statement));
|
13
|
+
return [this.policyObject.Statement].flat().map((statement, index) => new StatementImpl(statement, index + 1));
|
14
14
|
}
|
15
15
|
}
|
16
16
|
//# sourceMappingURL=policy.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAQrE,MAAM,OAAO,UAAU;IACrB,YAA6B,YAAiB;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAE3C,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAQrE,MAAM,OAAO,UAAU;IACrB,YAA6B,YAAiB;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAE3C,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IACrH,CAAC;CACF"}
|
@@ -6,6 +6,10 @@ import { Resource } from "../resources/resource.js";
|
|
6
6
|
* Represents a statement in an IAM policy
|
7
7
|
*/
|
8
8
|
export interface Statement {
|
9
|
+
/**
|
10
|
+
* The index of the statement in the policy, starts from 1
|
11
|
+
*/
|
12
|
+
index(): number;
|
9
13
|
/**
|
10
14
|
* The optional Sid (Statement ID) for a statement
|
11
15
|
*/
|
@@ -114,7 +118,9 @@ export interface NotPrincipalStatement extends Statement {
|
|
114
118
|
*/
|
115
119
|
export declare class StatementImpl implements Statement, ActionStatement, NotActionStatement, ResourceStatement, NotResourceStatement, PrincipalStatement {
|
116
120
|
private readonly statementObject;
|
117
|
-
|
121
|
+
private readonly _index;
|
122
|
+
constructor(statementObject: any, _index: number);
|
123
|
+
index(): number;
|
118
124
|
sid(): string | undefined;
|
119
125
|
effect(): string;
|
120
126
|
isAllow(): boolean;
|
@@ -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;AACzD,OAAO,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAgC,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,QAAQ,EAAgB,MAAM,0BAA0B,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,SAAS;
|
1
|
+
{"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAgC,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,QAAQ,EAAgB,MAAM,0BAA0B,CAAA;AAEjE;;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;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IAEnD;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE,CAAA;IAEvB;;OAEG;IACH,yBAAyB,IAAI,OAAO,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IAEtD;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE,CAAA;CAC7B;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB;IACnI,OAAO,CAAC,QAAQ,CAAC,eAAe;IAAO,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAA7C,eAAe,EAAE,GAAG,EAAmB,MAAM,EAAE,MAAM;IAE3E,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;IAIlD,uBAAuB,IAAI,IAAI,IAAI,qBAAqB;IAIxD,UAAU,IAAI,SAAS,EAAE;IAOzB,aAAa,IAAI,SAAS,EAAE;IAOnC;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAcrB,iBAAiB,IAAI,IAAI,IAAI,eAAe;IAI5C,oBAAoB,IAAI,IAAI,IAAI,kBAAkB;IAIlD,OAAO,IAAI,MAAM,EAAE;IAOnB,UAAU,IAAI,MAAM,EAAE;IAOtB,mBAAmB,IAAI,IAAI,IAAI,iBAAiB;IAIhD,sBAAsB,IAAI,IAAI,IAAI,oBAAoB;IAItD,SAAS,IAAI,QAAQ,EAAE;IAOvB,YAAY,IAAI,QAAQ,EAAE;IAO1B,yBAAyB,IAAI,OAAO;IAOpC,UAAU,IAAI,SAAS,EAAE;CAWjC"}
|
@@ -6,8 +6,12 @@ import { ResourceImpl } from "../resources/resource.js";
|
|
6
6
|
* Implementation of the Statement interface and all its sub-interfaces
|
7
7
|
*/
|
8
8
|
export class StatementImpl {
|
9
|
-
constructor(statementObject) {
|
9
|
+
constructor(statementObject, _index) {
|
10
10
|
this.statementObject = statementObject;
|
11
|
+
this._index = _index;
|
12
|
+
}
|
13
|
+
index() {
|
14
|
+
return this._index;
|
11
15
|
}
|
12
16
|
sid() {
|
13
17
|
return this.statementObject.Sid;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAa,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAa,aAAa,EAAiB,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAY,YAAY,EAAE,MAAM,0BAA0B,CAAA;
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/statements/statement.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
export type { Action, ActionType, ServiceAction, WildcardAction } from './actions/action.js';
|
2
|
+
export type { Condition } from './conditions/condition.js';
|
3
|
+
export type { ConditionOperation, SetOperator } from './conditions/conditionOperation.js';
|
4
|
+
export { loadPolicy } from './parser.js';
|
5
|
+
export type { Policy } from './policies/policy.js';
|
6
|
+
export type { Principal, PrincipalType } from './principals/principal.js';
|
7
|
+
export type { Resource } from './resources/resource.js';
|
8
|
+
export type { ActionStatement, NotActionStatement, NotPrincipalStatement, NotResourceStatement, PrincipalStatement, ResourceStatement, Statement } from './statements/statement.js';
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA"}
|
package/dist/index.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.loadPolicy = void 0;
|
4
|
+
var parser_js_1 = require("./parser.js");
|
5
|
+
Object.defineProperty(exports, "loadPolicy", { enumerable: true, get: function () { return parser_js_1.loadPolicy; } });
|
6
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAGA,yCAAwC;AAA/B,uGAAA,UAAU,OAAA"}
|
package/dist/parser.d.ts
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
import { PolicyImpl } from "./policies/policy.js";
|
2
|
+
/**
|
3
|
+
* Load a Policy from a policy document
|
4
|
+
*
|
5
|
+
* @param policyDocument the policy document JSON object
|
6
|
+
* @returns the Policy object for the backing policy document
|
7
|
+
*/
|
8
|
+
export declare function loadPolicy(policyDocument: any): PolicyImpl;
|
9
|
+
//# sourceMappingURL=parser.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,cAAc,EAAE,GAAG,cAE7C"}
|
package/dist/parser.js
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.loadPolicy = loadPolicy;
|
4
|
+
const policy_js_1 = require("./policies/policy.js");
|
5
|
+
/**
|
6
|
+
* Load a Policy from a policy document
|
7
|
+
*
|
8
|
+
* @param policyDocument the policy document JSON object
|
9
|
+
* @returns the Policy object for the backing policy document
|
10
|
+
*/
|
11
|
+
function loadPolicy(policyDocument) {
|
12
|
+
return new policy_js_1.PolicyImpl(policyDocument);
|
13
|
+
}
|
14
|
+
//# sourceMappingURL=parser.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";;AAQA,gCAEC;AAVD,oDAAkD;AAElD;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,cAAmB;IAC1C,OAAO,IAAI,sBAAU,CAAC,cAAc,CAAC,CAAC;AAC1C,CAAC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { Statement } from '../statements/statement.js';
|
2
|
+
export interface Policy {
|
3
|
+
version(): string | undefined;
|
4
|
+
id(): string | undefined;
|
5
|
+
statements(): Statement[];
|
6
|
+
}
|
7
|
+
export declare class PolicyImpl {
|
8
|
+
private readonly policyObject;
|
9
|
+
constructor(policyObject: any);
|
10
|
+
version(): string | undefined;
|
11
|
+
id(): string | undefined;
|
12
|
+
statements(): Statement[];
|
13
|
+
}
|
14
|
+
//# sourceMappingURL=policy.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policies/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAA;AAErE,MAAM,WAAW,MAAM;IACrB,OAAO,IAAI,MAAM,GAAG,SAAS,CAAA;IAC7B,EAAE,IAAI,MAAM,GAAG,SAAS,CAAA;IACxB,UAAU,IAAI,SAAS,EAAE,CAAA;CAC1B;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,GAAG;IAEvC,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,EAAE,IAAI,MAAM,GAAG,SAAS;IAIxB,UAAU,IAAI,SAAS,EAAE;CAGjC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.PolicyImpl = void 0;
|
4
|
+
const statement_js_1 = require("../statements/statement.js");
|
5
|
+
class PolicyImpl {
|
6
|
+
policyObject;
|
7
|
+
constructor(policyObject) {
|
8
|
+
this.policyObject = policyObject;
|
9
|
+
}
|
10
|
+
version() {
|
11
|
+
return this.policyObject.Version;
|
12
|
+
}
|
13
|
+
id() {
|
14
|
+
return this.policyObject.Id;
|
15
|
+
}
|
16
|
+
statements() {
|
17
|
+
return [this.policyObject.Statement].flat().map((statement) => new statement_js_1.StatementImpl(statement));
|
18
|
+
}
|
19
|
+
}
|
20
|
+
exports.PolicyImpl = PolicyImpl;
|
21
|
+
//# sourceMappingURL=policy.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policies/policy.ts"],"names":[],"mappings":";;;AAAA,6DAAqE;AAQrE,MAAa,UAAU;IACQ;IAA7B,YAA6B,YAAiB;QAAjB,iBAAY,GAAZ,YAAY,CAAK;IAAG,CAAC;IAE3C,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;IAClC,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7B,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,IAAI,4BAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IACnG,CAAC;CACF;AAdD,gCAcC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"policy.test.d.ts","sourceRoot":"","sources":["../../src/policies/policy.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const vitest_1 = require("vitest");
|
4
|
+
const policy_js_1 = require("./policy.js");
|
5
|
+
(0, vitest_1.describe)("PolicyImpl", () => {
|
6
|
+
(0, vitest_1.describe)("version", () => {
|
7
|
+
(0, vitest_1.it)("should return the version", () => {
|
8
|
+
// Given a policy object
|
9
|
+
const policyObject = {
|
10
|
+
Version: "2012-10-17"
|
11
|
+
};
|
12
|
+
// When a PolicyImpl is created
|
13
|
+
const policy = new policy_js_1.PolicyImpl(policyObject);
|
14
|
+
// Then the version should be the version
|
15
|
+
(0, vitest_1.expect)(policy.version()).toBe(policyObject.Version);
|
16
|
+
});
|
17
|
+
});
|
18
|
+
(0, vitest_1.describe)("id", () => {
|
19
|
+
(0, vitest_1.it)("should return the id", () => {
|
20
|
+
// Given a policy object
|
21
|
+
const policyObject = {
|
22
|
+
Id: "MyPolicy"
|
23
|
+
};
|
24
|
+
// When a PolicyImpl is created
|
25
|
+
const policy = new policy_js_1.PolicyImpl(policyObject);
|
26
|
+
// Then the id should be the id
|
27
|
+
(0, vitest_1.expect)(policy.id()).toBe(policyObject.Id);
|
28
|
+
});
|
29
|
+
});
|
30
|
+
(0, vitest_1.describe)("statements", () => {
|
31
|
+
(0, vitest_1.it)('should return the statement when there is only one statement', () => {
|
32
|
+
// Given a policy object with a single statement in an object
|
33
|
+
const policyObject = {
|
34
|
+
Statement: {
|
35
|
+
Sid: 'Lonely',
|
36
|
+
Effect: "Allow",
|
37
|
+
Action: "s3:GetObject",
|
38
|
+
Resource: "arn:aws:s3:::my_corporate_bucket/*"
|
39
|
+
}
|
40
|
+
};
|
41
|
+
// When a PolicyImpl is created
|
42
|
+
const policy = new policy_js_1.PolicyImpl(policyObject);
|
43
|
+
// Then the statements should be an array with one statement
|
44
|
+
(0, vitest_1.expect)(policy.statements().length).toBe(1);
|
45
|
+
(0, vitest_1.expect)(policy.statements()[0].sid()).toBe('Lonely');
|
46
|
+
});
|
47
|
+
(0, vitest_1.it)('should return the statements when there are multiple statements', () => {
|
48
|
+
// Given a policy object with multiple statements in an array
|
49
|
+
const policyObject = {
|
50
|
+
Statement: [
|
51
|
+
{
|
52
|
+
Sid: 'First',
|
53
|
+
Effect: "Allow",
|
54
|
+
Action: "s3:GetObject",
|
55
|
+
Resource: "arn:aws:s3:::my_corporate_bucket/*"
|
56
|
+
},
|
57
|
+
{
|
58
|
+
Sid: 'Second',
|
59
|
+
Effect: "Deny",
|
60
|
+
Action: "s3:GetObject",
|
61
|
+
Resource: "arn:aws:s3:::my_corporate_bucket/secret_plans.txt"
|
62
|
+
}
|
63
|
+
]
|
64
|
+
};
|
65
|
+
// When a PolicyImpl is created
|
66
|
+
const policy = new policy_js_1.PolicyImpl(policyObject);
|
67
|
+
// Then the statements should be an array with two statements
|
68
|
+
(0, vitest_1.expect)(policy.statements().length).toBe(2);
|
69
|
+
(0, vitest_1.expect)(policy.statements()[0].sid()).toBe('First');
|
70
|
+
(0, vitest_1.expect)(policy.statements()[1].sid()).toBe('Second');
|
71
|
+
});
|
72
|
+
});
|
73
|
+
});
|
74
|
+
//# sourceMappingURL=policy.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"policy.test.js","sourceRoot":"","sources":["../../src/policies/policy.test.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
export type PrincipalType = 'AWS' | 'Service' | 'Federated' | 'CanonicalUser';
|
2
|
+
export interface Principal {
|
3
|
+
type(): PrincipalType;
|
4
|
+
value(): string;
|
5
|
+
}
|
6
|
+
export declare class PrincipalImpl {
|
7
|
+
private readonly principalType;
|
8
|
+
private readonly principalId;
|
9
|
+
constructor(principalType: PrincipalType, principalId: string);
|
10
|
+
value(): string;
|
11
|
+
type(): PrincipalType;
|
12
|
+
}
|
13
|
+
export declare class AwsPrincipal extends PrincipalImpl {
|
14
|
+
}
|
15
|
+
export declare class ServicePrincipal extends PrincipalImpl {
|
16
|
+
}
|
17
|
+
export declare class FederatedPrincipal extends PrincipalImpl {
|
18
|
+
}
|
19
|
+
export declare class CanonicalUserPrincipal extends PrincipalImpl {
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=principal.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../src/principals/principal.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,CAAA;AAE7E,MAAM,WAAW,SAAS;IACxB,IAAI,IAAI,aAAa,CAAA;IACrB,KAAK,IAAI,MAAM,CAAA;CAChB;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,aAAa;IAAiB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAA1D,aAAa,EAAE,aAAa,EAAmB,WAAW,EAAE,MAAM;IAExF,KAAK,IAAI,MAAM;IAIf,IAAI,IAAI,aAAa;CAG7B;AAGD,qBAAa,YAAa,SAAQ,aAAa;CAC9C;AAGD,qBAAa,gBAAiB,SAAQ,aAAa;CAClD;AAGD,qBAAa,kBAAmB,SAAQ,aAAa;CACpD;AAGD,qBAAa,sBAAuB,SAAQ,aAAa;CACxD"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CanonicalUserPrincipal = exports.FederatedPrincipal = exports.ServicePrincipal = exports.AwsPrincipal = exports.PrincipalImpl = void 0;
|
4
|
+
class PrincipalImpl {
|
5
|
+
principalType;
|
6
|
+
principalId;
|
7
|
+
constructor(principalType, principalId) {
|
8
|
+
this.principalType = principalType;
|
9
|
+
this.principalId = principalId;
|
10
|
+
}
|
11
|
+
value() {
|
12
|
+
return this.principalId;
|
13
|
+
}
|
14
|
+
type() {
|
15
|
+
return this.principalType;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
exports.PrincipalImpl = PrincipalImpl;
|
19
|
+
//AWS
|
20
|
+
class AwsPrincipal extends PrincipalImpl {
|
21
|
+
}
|
22
|
+
exports.AwsPrincipal = AwsPrincipal;
|
23
|
+
//Service
|
24
|
+
class ServicePrincipal extends PrincipalImpl {
|
25
|
+
}
|
26
|
+
exports.ServicePrincipal = ServicePrincipal;
|
27
|
+
//Federated
|
28
|
+
class FederatedPrincipal extends PrincipalImpl {
|
29
|
+
}
|
30
|
+
exports.FederatedPrincipal = FederatedPrincipal;
|
31
|
+
//CanonicalUser
|
32
|
+
class CanonicalUserPrincipal extends PrincipalImpl {
|
33
|
+
}
|
34
|
+
exports.CanonicalUserPrincipal = CanonicalUserPrincipal;
|
35
|
+
//# sourceMappingURL=principal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"principal.js","sourceRoot":"","sources":["../../src/principals/principal.ts"],"names":[],"mappings":";;;AAOA,MAAa,aAAa;IACK;IAA+C;IAA5E,YAA6B,aAA4B,EAAmB,WAAmB;QAAlE,kBAAa,GAAb,aAAa,CAAe;QAAmB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAE5F,KAAK;QACV,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;CACF;AAVD,sCAUC;AAED,KAAK;AACL,MAAa,YAAa,SAAQ,aAAa;CAC9C;AADD,oCACC;AAED,SAAS;AACT,MAAa,gBAAiB,SAAQ,aAAa;CAClD;AADD,4CACC;AAED,WAAW;AACX,MAAa,kBAAmB,SAAQ,aAAa;CACpD;AADD,gDACC;AAED,eAAe;AACf,MAAa,sBAAuB,SAAQ,aAAa;CACxD;AADD,wDACC"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/**
|
2
|
+
* A resource string in an IAM policy
|
3
|
+
*/
|
4
|
+
export interface Resource {
|
5
|
+
/**
|
6
|
+
* The raw string of the resource
|
7
|
+
*/
|
8
|
+
value(): string;
|
9
|
+
/**
|
10
|
+
* Whether the resource is all resources: `"*"`
|
11
|
+
*/
|
12
|
+
isAllResources(): boolean;
|
13
|
+
}
|
14
|
+
export declare class ResourceImpl implements Resource {
|
15
|
+
private readonly rawValue;
|
16
|
+
constructor(rawValue: string);
|
17
|
+
value(): string;
|
18
|
+
isAllResources(): boolean;
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=resource.d.ts.map
|