@cloud-copilot/iam-policy 0.0.2 → 0.0.4
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 +75 -7
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -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/cjs/validate/validate.d.ts +6 -0
- package/dist/cjs/validate/validate.d.ts.map +1 -0
- package/dist/cjs/validate/validate.js +147 -0
- package/dist/cjs/validate/validate.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 +1 -0
- 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/esm/validate/validate.d.ts +6 -0
- package/dist/esm/validate/validate.d.ts.map +1 -0
- package/dist/esm/validate/validate.js +144 -0
- package/dist/esm/validate/validate.js.map +1 -0
- package/package.json +1 -1
- package/dist/actions/action.d.ts +0 -51
- package/dist/actions/action.d.ts.map +0 -1
- package/dist/actions/action.js +0 -33
- package/dist/actions/action.js.map +0 -1
- package/dist/actions/actions.test.d.ts +0 -2
- package/dist/actions/actions.test.d.ts.map +0 -1
- package/dist/actions/actions.test.js +0 -91
- package/dist/actions/actions.test.js.map +0 -1
- package/dist/cjs/conditions/conditions.d.ts +0 -15
- package/dist/cjs/conditions/conditions.d.ts.map +0 -1
- package/dist/cjs/conditions/conditions.js +0 -24
- package/dist/cjs/conditions/conditions.js.map +0 -1
- package/dist/cjs/principals/principals.d.ts +0 -21
- package/dist/cjs/principals/principals.d.ts.map +0 -1
- package/dist/cjs/principals/principals.js +0 -35
- package/dist/cjs/principals/principals.js.map +0 -1
- package/dist/conditions/condition.d.ts +0 -16
- package/dist/conditions/condition.d.ts.map +0 -1
- package/dist/conditions/condition.js +0 -25
- package/dist/conditions/condition.js.map +0 -1
- package/dist/conditions/conditionOperation.d.ts +0 -31
- package/dist/conditions/conditionOperation.d.ts.map +0 -1
- package/dist/conditions/conditionOperation.js +0 -31
- package/dist/conditions/conditionOperation.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/parser.d.ts +0 -9
- package/dist/parser.d.ts.map +0 -1
- package/dist/parser.js +0 -14
- package/dist/parser.js.map +0 -1
- package/dist/policies/policy.d.ts +0 -14
- package/dist/policies/policy.d.ts.map +0 -1
- package/dist/policies/policy.js +0 -21
- package/dist/policies/policy.js.map +0 -1
- package/dist/policies/policy.test.d.ts +0 -2
- package/dist/policies/policy.test.d.ts.map +0 -1
- package/dist/policies/policy.test.js +0 -74
- package/dist/policies/policy.test.js.map +0 -1
- package/dist/principals/principal.d.ts +0 -21
- package/dist/principals/principal.d.ts.map +0 -1
- package/dist/principals/principal.js +0 -35
- package/dist/principals/principal.js.map +0 -1
- package/dist/resources/resource.d.ts +0 -20
- package/dist/resources/resource.d.ts.map +0 -1
- package/dist/resources/resource.js +0 -18
- package/dist/resources/resource.js.map +0 -1
- package/dist/resources/resource.test.d.ts +0 -2
- package/dist/resources/resource.test.d.ts.map +0 -1
- package/dist/resources/resource.test.js +0 -35
- package/dist/resources/resource.test.js.map +0 -1
- package/dist/statements/statement.d.ts +0 -146
- package/dist/statements/statement.d.ts.map +0 -1
- package/dist/statements/statement.js +0 -121
- package/dist/statements/statement.js.map +0 -1
- package/dist/statements/statement.test.d.ts +0 -2
- package/dist/statements/statement.test.d.ts.map +0 -1
- package/dist/statements/statement.test.js +0 -479
- package/dist/statements/statement.test.js.map +0 -1
- package/dist/utils.d.ts +0 -8
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -13
- package/dist/utils.js.map +0 -1
@@ -0,0 +1,144 @@
|
|
1
|
+
const allowedPolicyKeys = new Set(['Version', 'Statement', 'Id']);
|
2
|
+
const allowedStatementKeys = new Set(['Sid', 'Effect', 'Action', 'NotAction', 'Resource', 'NotResource', 'Principal', 'NotPrincipal', 'Condition']);
|
3
|
+
const allowedPrincipalKeys = new Set(['AWS', 'Service', 'Federated', 'CanonicalUser']);
|
4
|
+
export function validatePolicySyntax(policyDocument) {
|
5
|
+
const allErrors = [];
|
6
|
+
if (typeof policyDocument !== 'object') {
|
7
|
+
return [{ path: '', message: `Policy must be an object, received type ${typeof policyDocument}` }];
|
8
|
+
}
|
9
|
+
else if (Array.isArray(policyDocument)) {
|
10
|
+
return [{ path: '', message: 'Policy must be an object, received an array' }];
|
11
|
+
}
|
12
|
+
allErrors.push(...validateKeys(policyDocument, allowedPolicyKeys, ''));
|
13
|
+
allErrors.push(...validateDataTypeIfExists(policyDocument.Version, 'Version', 'string'));
|
14
|
+
allErrors.push(...validateDataTypeIfExists(policyDocument.Id, 'Id', 'string'));
|
15
|
+
if (!policyDocument.Statement) {
|
16
|
+
allErrors.push({
|
17
|
+
path: 'Statement',
|
18
|
+
message: 'Statement is required',
|
19
|
+
});
|
20
|
+
}
|
21
|
+
allErrors.push(...validateTypeOrArrayOfTypeIfExists(policyDocument.Statement, 'Statement', ['object']));
|
22
|
+
if (typeof policyDocument.Statement === 'object' && !Array.isArray(policyDocument.Statement)) {
|
23
|
+
allErrors.push(...validateStatement(policyDocument.Statement, 'Statement'));
|
24
|
+
}
|
25
|
+
else if (Array.isArray(policyDocument.Statement)) {
|
26
|
+
for (let i = 0; i < policyDocument.Statement.length; i++) {
|
27
|
+
allErrors.push(...validateStatement(policyDocument.Statement[i], `Statement[${i}]`));
|
28
|
+
}
|
29
|
+
}
|
30
|
+
return allErrors;
|
31
|
+
}
|
32
|
+
function validateStatement(statement, path) {
|
33
|
+
const statementErrors = [];
|
34
|
+
statementErrors.push(...validateKeys(statement, allowedStatementKeys, path));
|
35
|
+
statementErrors.push(...validateDataTypeIfExists(statement.Sid, `${path}.Sid`, 'string'));
|
36
|
+
if (statement.Effect !== 'Allow' && statement.Effect !== 'Deny') {
|
37
|
+
statementErrors.push({ path: `${path}.Effect`, message: `Effect must be present and exactly "Allow" or "Deny"` });
|
38
|
+
}
|
39
|
+
statementErrors.push(...validateTypeOrArrayOfTypeIfExists(statement.Action, `${path}.Action`, 'string'));
|
40
|
+
statementErrors.push(...validateTypeOrArrayOfTypeIfExists(statement.NotAction, `${path}.NotAction`, 'string'));
|
41
|
+
statementErrors.push(...validateTypeOrArrayOfTypeIfExists(statement.Resource, `${path}.Resource`, 'string'));
|
42
|
+
statementErrors.push(...validateTypeOrArrayOfTypeIfExists(statement.NotResource, `${path}.NotResource`, 'string'));
|
43
|
+
statementErrors.push(...validateDataTypeIfExists(statement.Principal, `${path}.Principal`, ['string', 'object']));
|
44
|
+
statementErrors.push(...validateDataTypeIfExists(statement.NotPrincipal, `${path}.NotPrincipal`, ['string', 'object']));
|
45
|
+
statementErrors.push(...validatePrincipal(statement.Principal, `${path}.Principal`));
|
46
|
+
statementErrors.push(...validatePrincipal(statement.NotPrincipal, `${path}.NotPrincipal`));
|
47
|
+
statementErrors.push(...validateCondition(statement.Condition, `${path}.Condition`));
|
48
|
+
return statementErrors;
|
49
|
+
}
|
50
|
+
function validatePrincipal(principal, path) {
|
51
|
+
const principalErrors = [];
|
52
|
+
if (principal === undefined || typeof principal === 'string') {
|
53
|
+
return [];
|
54
|
+
}
|
55
|
+
if (typeof principal === 'object') {
|
56
|
+
principalErrors.push(...validateKeys(principal, allowedPrincipalKeys, path));
|
57
|
+
principalErrors.push(...validateTypeOrArrayOfTypeIfExists(principal.AWS, `${path}.AWS`, 'string'));
|
58
|
+
principalErrors.push(...validateTypeOrArrayOfTypeIfExists(principal.Service, `${path}.Service`, 'string'));
|
59
|
+
principalErrors.push(...validateTypeOrArrayOfTypeIfExists(principal.Federated, `${path}.Federated`, 'string'));
|
60
|
+
principalErrors.push(...validateTypeOrArrayOfTypeIfExists(principal.CanonicalUser, `${path}.CanonicalUser`, 'string'));
|
61
|
+
}
|
62
|
+
return principalErrors;
|
63
|
+
}
|
64
|
+
function validateCondition(condition, path) {
|
65
|
+
const conditionErrors = [];
|
66
|
+
if (condition === undefined) {
|
67
|
+
return [];
|
68
|
+
}
|
69
|
+
conditionErrors.push(...validateDataTypeIfExists(condition, path, 'object'));
|
70
|
+
if (typeof condition !== 'object') {
|
71
|
+
return conditionErrors;
|
72
|
+
}
|
73
|
+
else if (Array.isArray(condition)) {
|
74
|
+
conditionErrors.push({
|
75
|
+
message: 'Condition must be an object, found an array',
|
76
|
+
path
|
77
|
+
});
|
78
|
+
return conditionErrors;
|
79
|
+
}
|
80
|
+
const conditionOperators = Object.keys(condition);
|
81
|
+
for (const operator of conditionOperators) {
|
82
|
+
conditionErrors.push(...validateDataTypeIfExists(condition[operator], `${path}.${operator}`, 'object'));
|
83
|
+
if (Array.isArray(condition[operator])) {
|
84
|
+
conditionErrors.push({
|
85
|
+
message: 'Condition operator must be an object, found an array',
|
86
|
+
path: `${path}.${operator}`
|
87
|
+
});
|
88
|
+
}
|
89
|
+
if (typeof condition[operator] === 'object' && !Array.isArray(condition[operator])) {
|
90
|
+
const conditionKeys = Object.keys(condition[operator]);
|
91
|
+
for (const key of conditionKeys) {
|
92
|
+
conditionErrors.push(...validateTypeOrArrayOfTypeIfExists(condition[operator][key], `${path}.${operator}.${key}`, 'string'));
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
return conditionErrors;
|
97
|
+
}
|
98
|
+
function validateKeys(object, allowedKeys, path) {
|
99
|
+
const keyErrors = [];
|
100
|
+
if (path != '') {
|
101
|
+
path = `${path}.`;
|
102
|
+
}
|
103
|
+
for (const key of Object.keys(object)) {
|
104
|
+
if (!allowedKeys.has(key)) {
|
105
|
+
keyErrors.push({
|
106
|
+
message: `Invalid key ${key}`,
|
107
|
+
path: `${path}${key}`
|
108
|
+
});
|
109
|
+
}
|
110
|
+
}
|
111
|
+
return keyErrors;
|
112
|
+
}
|
113
|
+
function validateTypeOrArrayOfTypeIfExists(value, path, allowedTypes) {
|
114
|
+
if (value === undefined) {
|
115
|
+
return [];
|
116
|
+
}
|
117
|
+
allowedTypes = Array.isArray(allowedTypes) ? allowedTypes : [allowedTypes];
|
118
|
+
const arrayOfTypeErrors = [];
|
119
|
+
if (!Array.isArray(value)) {
|
120
|
+
return validateDataTypeIfExists(value, path, allowedTypes);
|
121
|
+
}
|
122
|
+
else {
|
123
|
+
for (let i = 0; i < value.length; i++) {
|
124
|
+
arrayOfTypeErrors.push(...validateDataTypeIfExists(value[i], `${path}[${i}]`, allowedTypes));
|
125
|
+
}
|
126
|
+
}
|
127
|
+
return arrayOfTypeErrors;
|
128
|
+
}
|
129
|
+
function validateDataTypeIfExists(value, path, allowedDataTypes) {
|
130
|
+
if (value === undefined) {
|
131
|
+
return [];
|
132
|
+
}
|
133
|
+
allowedDataTypes = Array.isArray(allowedDataTypes) ? allowedDataTypes : [allowedDataTypes];
|
134
|
+
const errors = [];
|
135
|
+
const foundDataType = typeof value;
|
136
|
+
if (!allowedDataTypes.includes(foundDataType)) {
|
137
|
+
errors.push({
|
138
|
+
message: `Found data type ${foundDataType} allowed type(s) are ${allowedDataTypes.join(', ')}`,
|
139
|
+
path
|
140
|
+
});
|
141
|
+
}
|
142
|
+
return errors;
|
143
|
+
}
|
144
|
+
//# sourceMappingURL=validate.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/validate/validate.ts"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAE,CAAC,CAAA;AACnE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAA;AACpJ,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAA;AAGvF,MAAM,UAAU,oBAAoB,CAAC,cAAmB;IACtD,MAAM,SAAS,GAAsB,EAAE,CAAA;IACvC,IAAG,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,2CAA2C,OAAO,cAAc,EAAE,EAAC,CAAC,CAAA;IAClG,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAC,CAAC,CAAA;IAC7E,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,cAAc,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAA;IAEtE,SAAS,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxF,SAAS,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9E,IAAG,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,uBAAuB;SACjC,CAAC,CAAA;IACJ,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACvG,IAAG,OAAO,cAAc,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5F,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAC7E,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAc,EAAE,IAAY;IACrD,MAAM,eAAe,GAAsB,EAAE,CAAA;IAC7C,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5E,eAAe,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IACzF,IAAG,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/D,eAAe,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,IAAI,SAAS,EAAE,OAAO,EAAE,sDAAsD,EAAC,CAAC,CAAA;IACjH,CAAC;IAED,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxG,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9G,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC5G,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAA;IAElH,eAAe,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IACjH,eAAe,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IACvH,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAA;IACpF,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAA;IAE1F,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAA;IACpF,OAAO,eAAe,CAAA;AAExB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAc,EAAE,IAAY;IACrD,MAAM,eAAe,GAAsB,EAAE,CAAA;IAE7C,IAAG,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAG,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAA;QAC5E,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;QAClG,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC1G,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC9G,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxH,CAAC;IAED,OAAO,eAAe,CAAA;AAExB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAc,EAAE,IAAY;IACrD,MAAM,eAAe,GAAsB,EAAE,CAAA;IAC7C,IAAG,SAAS,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAA;IACX,CAAC;IACD,eAAe,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC5E,IAAG,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,eAAe,CAAA;IACxB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,eAAe,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,6CAA6C;YACtD,IAAI;SACL,CAAC,CAAA;QACF,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjD,KAAI,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;QACzC,eAAe,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,IAAI,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;QACvG,IAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACtC,eAAe,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,sDAAsD;gBAC/D,IAAI,EAAE,GAAG,IAAI,IAAI,QAAQ,EAAE;aAC5B,CAAC,CAAA;QACJ,CAAC;QAED,IAAG,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;YACtD,KAAI,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAC/B,eAAe,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC9H,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,MAAW,EAAE,WAAwB,EAAE,IAAY;IACvE,MAAM,SAAS,GAAsB,EAAE,CAAA;IACvC,IAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QACd,IAAI,GAAG,GAAG,IAAI,GAAG,CAAA;IACnB,CAAC;IAED,KAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,IAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,eAAe,GAAG,EAAE;gBAC7B,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE;aACtB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,iCAAiC,CAAC,KAAU,EAAE,IAAY,EAAE,YAA6C;IAChH,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAE,YAAY,CAAE,CAAA;IAC5E,MAAM,iBAAiB,GAAsB,EAAE,CAAA;IAC/C,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;IAC5D,CAAC;SAAM,CAAC;QACN,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAU,EAAE,IAAY,EAAE,gBAAiD;IAC3G,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAE,gBAAgB,CAAE,CAAA;IAC5F,MAAM,MAAM,GAAsB,EAAE,CAAA;IACpC,MAAM,aAAa,GAAG,OAAO,KAAK,CAAA;IAClC,IAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAA+B,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,mBAAmB,aAAa,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9F,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/package.json
CHANGED
package/dist/actions/action.d.ts
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
export type ActionType = 'service' | 'wildcard';
|
2
|
-
/**
|
3
|
-
* An Action string in an IAM policy
|
4
|
-
*/
|
5
|
-
export interface Action {
|
6
|
-
/**
|
7
|
-
* The type of actions
|
8
|
-
*/
|
9
|
-
type(): ActionType;
|
10
|
-
/**
|
11
|
-
* The raw string of the action
|
12
|
-
*/
|
13
|
-
value(): string;
|
14
|
-
/**
|
15
|
-
* Whether the action is a wildcard action: `"*"`
|
16
|
-
*/
|
17
|
-
isWildcardAction(): boolean;
|
18
|
-
/**
|
19
|
-
* Whether the action is a service action: `"service:Action"`
|
20
|
-
*/
|
21
|
-
isServiceAction(): boolean;
|
22
|
-
}
|
23
|
-
/**
|
24
|
-
* A wildcard action: `"*"`
|
25
|
-
*/
|
26
|
-
export interface WildcardAction extends Action {
|
27
|
-
}
|
28
|
-
/**
|
29
|
-
* A service action: `"service:Action"`
|
30
|
-
*/
|
31
|
-
export interface ServiceAction extends Action {
|
32
|
-
/**
|
33
|
-
* The service of the action
|
34
|
-
*/
|
35
|
-
service(): string;
|
36
|
-
/**
|
37
|
-
* The action within the service
|
38
|
-
*/
|
39
|
-
action(): string;
|
40
|
-
}
|
41
|
-
export declare class ActionImpl implements Action, WildcardAction, ServiceAction {
|
42
|
-
private readonly rawValue;
|
43
|
-
constructor(rawValue: string);
|
44
|
-
type(): ActionType;
|
45
|
-
value(): string;
|
46
|
-
isWildcardAction(): this is WildcardAction;
|
47
|
-
isServiceAction(): this is ServiceAction;
|
48
|
-
service(): string;
|
49
|
-
action(): string;
|
50
|
-
}
|
51
|
-
//# sourceMappingURL=action.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/actions/action.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,IAAI,UAAU,CAAA;IAElB;;OAEG;IACH,KAAK,IAAI,MAAM,CAAA;IAEf;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAA;IAE3B;;OAEG;IACH,eAAe,IAAI,OAAO,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAA;CACjB;AAED,qBAAa,UAAW,YAAW,MAAM,EAAG,cAAc,EAAE,aAAa;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEtC,IAAI,IAAI,UAAU;IAOlB,KAAK,IAAI,MAAM;IAIf,gBAAgB,IAAI,IAAI,IAAI,cAAc;IAI1C,eAAe,IAAI,IAAI,IAAI,aAAa;IAIxC,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;CAGxB"}
|
package/dist/actions/action.js
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ActionImpl = void 0;
|
4
|
-
const utils_js_1 = require("../utils.js");
|
5
|
-
class ActionImpl {
|
6
|
-
rawValue;
|
7
|
-
constructor(rawValue) {
|
8
|
-
this.rawValue = rawValue;
|
9
|
-
}
|
10
|
-
type() {
|
11
|
-
if ((0, utils_js_1.isAllWildcards)(this.rawValue)) {
|
12
|
-
return 'wildcard';
|
13
|
-
}
|
14
|
-
return 'service';
|
15
|
-
}
|
16
|
-
value() {
|
17
|
-
return this.rawValue;
|
18
|
-
}
|
19
|
-
isWildcardAction() {
|
20
|
-
return this.type() === 'wildcard';
|
21
|
-
}
|
22
|
-
isServiceAction() {
|
23
|
-
return this.type() === 'service';
|
24
|
-
}
|
25
|
-
service() {
|
26
|
-
return this.rawValue.split(':')[0];
|
27
|
-
}
|
28
|
-
action() {
|
29
|
-
return this.rawValue.split(':')[1];
|
30
|
-
}
|
31
|
-
}
|
32
|
-
exports.ActionImpl = ActionImpl;
|
33
|
-
//# sourceMappingURL=action.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/actions/action.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAkD5C,MAAa,UAAU;IACQ;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAE1C,IAAI;QACT,IAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,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,CAAC,CAAA;IACpC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AA7BD,gCA6BC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"actions.test.d.ts","sourceRoot":"","sources":["../../src/actions/actions.test.ts"],"names":[],"mappings":""}
|
@@ -1,91 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
const vitest_1 = require("vitest");
|
4
|
-
const action_js_1 = require("./action.js");
|
5
|
-
(0, vitest_1.describe)('ActionImpl', () => {
|
6
|
-
(0, vitest_1.describe)('type', () => {
|
7
|
-
(0, vitest_1.it)('should return wildcard when all wildcards', () => {
|
8
|
-
// Given an action wildcard
|
9
|
-
const actionString = "*";
|
10
|
-
// When an ActionImpl is created
|
11
|
-
const action = new action_js_1.ActionImpl(actionString);
|
12
|
-
// Assert
|
13
|
-
(0, vitest_1.expect)(action.type()).toBe('wildcard');
|
14
|
-
});
|
15
|
-
(0, vitest_1.it)('should return service when not all wildcards', () => {
|
16
|
-
// Given an action string
|
17
|
-
const actionString = "s3:GetObject";
|
18
|
-
// When an ActionImpl is created
|
19
|
-
const action = new action_js_1.ActionImpl(actionString);
|
20
|
-
// Assert
|
21
|
-
(0, vitest_1.expect)(action.type()).toBe('service');
|
22
|
-
});
|
23
|
-
});
|
24
|
-
(0, vitest_1.describe)('value', () => {
|
25
|
-
(0, vitest_1.it)('should return the value', () => {
|
26
|
-
// Given an action string
|
27
|
-
const actionString = "s3:GetObject";
|
28
|
-
// When an ActionImpl is created
|
29
|
-
const action = new action_js_1.ActionImpl(actionString);
|
30
|
-
// Assert
|
31
|
-
(0, vitest_1.expect)(action.value()).toBe(actionString);
|
32
|
-
});
|
33
|
-
});
|
34
|
-
(0, vitest_1.describe)('isWildcardAction', () => {
|
35
|
-
(0, vitest_1.it)('should return true when wildcard', () => {
|
36
|
-
// Given an action wildcard
|
37
|
-
const actionString = "*";
|
38
|
-
// When an ActionImpl is created
|
39
|
-
const action = new action_js_1.ActionImpl(actionString);
|
40
|
-
// Assert
|
41
|
-
(0, vitest_1.expect)(action.isWildcardAction()).toBe(true);
|
42
|
-
});
|
43
|
-
(0, vitest_1.it)('should return false when not wildcard', () => {
|
44
|
-
// Given an action string
|
45
|
-
const actionString = "s3:GetObject";
|
46
|
-
// When an ActionImpl is created
|
47
|
-
const action = new action_js_1.ActionImpl(actionString);
|
48
|
-
// Assert
|
49
|
-
(0, vitest_1.expect)(action.isWildcardAction()).toBe(false);
|
50
|
-
});
|
51
|
-
});
|
52
|
-
(0, vitest_1.describe)('isServiceAction', () => {
|
53
|
-
(0, vitest_1.it)('should return true when service', () => {
|
54
|
-
// Given an action string
|
55
|
-
const actionString = "s3:GetObject";
|
56
|
-
// When an ActionImpl is created
|
57
|
-
const action = new action_js_1.ActionImpl(actionString);
|
58
|
-
// Assert
|
59
|
-
(0, vitest_1.expect)(action.isServiceAction()).toBe(true);
|
60
|
-
});
|
61
|
-
(0, vitest_1.it)('should return false when not service', () => {
|
62
|
-
// Given an action wildcard
|
63
|
-
const actionString = "*";
|
64
|
-
// When an ActionImpl is created
|
65
|
-
const action = new action_js_1.ActionImpl(actionString);
|
66
|
-
// Assert
|
67
|
-
(0, vitest_1.expect)(action.isServiceAction()).toBe(false);
|
68
|
-
});
|
69
|
-
});
|
70
|
-
(0, vitest_1.describe)('service', () => {
|
71
|
-
(0, vitest_1.it)('should return the service', () => {
|
72
|
-
// Given an action string
|
73
|
-
const actionString = "s3:GetObject";
|
74
|
-
// When an ActionImpl is created
|
75
|
-
const action = new action_js_1.ActionImpl(actionString);
|
76
|
-
// Assert
|
77
|
-
(0, vitest_1.expect)(action.service()).toBe('s3');
|
78
|
-
});
|
79
|
-
});
|
80
|
-
(0, vitest_1.describe)('action', () => {
|
81
|
-
(0, vitest_1.it)('should return the action', () => {
|
82
|
-
// Given an action string
|
83
|
-
const actionString = "s3:GetObject";
|
84
|
-
// When an ActionImpl is created
|
85
|
-
const action = new action_js_1.ActionImpl(actionString);
|
86
|
-
// Assert
|
87
|
-
(0, vitest_1.expect)(action.action()).toBe('GetObject');
|
88
|
-
});
|
89
|
-
});
|
90
|
-
});
|
91
|
-
//# sourceMappingURL=actions.test.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"actions.test.js","sourceRoot":"","sources":["../../src/actions/actions.test.ts"],"names":[],"mappings":"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"}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
export interface Condition {
|
2
|
-
operation(): string;
|
3
|
-
conditionKey(): string;
|
4
|
-
conditionValues(): string[];
|
5
|
-
}
|
6
|
-
export declare class ConditionImpl implements Condition {
|
7
|
-
private readonly op;
|
8
|
-
private readonly key;
|
9
|
-
private readonly values;
|
10
|
-
constructor(op: string, key: string, values: string | string[]);
|
11
|
-
operation(): string;
|
12
|
-
conditionKey(): string;
|
13
|
-
conditionValues(): string[];
|
14
|
-
}
|
15
|
-
//# sourceMappingURL=conditions.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../../src/conditions/conditions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,MAAM,CAAA;IACnB,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,MAAM;IAInB,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM,EAAE;CAGnC"}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ConditionImpl = void 0;
|
4
|
-
class ConditionImpl {
|
5
|
-
op;
|
6
|
-
key;
|
7
|
-
values;
|
8
|
-
constructor(op, key, values) {
|
9
|
-
this.op = op;
|
10
|
-
this.key = key;
|
11
|
-
this.values = values;
|
12
|
-
}
|
13
|
-
operation() {
|
14
|
-
return this.op;
|
15
|
-
}
|
16
|
-
conditionKey() {
|
17
|
-
return this.key;
|
18
|
-
}
|
19
|
-
conditionValues() {
|
20
|
-
return typeof this.values === 'string' ? [this.values] : this.values;
|
21
|
-
}
|
22
|
-
}
|
23
|
-
exports.ConditionImpl = ConditionImpl;
|
24
|
-
//# sourceMappingURL=conditions.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../src/conditions/conditions.ts"],"names":[],"mappings":";;;AAMA,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,CAAC,EAAE,CAAA;IAChB,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"}
|
@@ -1,21 +0,0 @@
|
|
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=principals.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"principals.d.ts","sourceRoot":"","sources":["../../../src/principals/principals.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"}
|
@@ -1,35 +0,0 @@
|
|
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=principals.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"principals.js","sourceRoot":"","sources":["../../../src/principals/principals.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"}
|
@@ -1,16 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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,25 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1,31 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1,31 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
package/dist/index.d.ts
DELETED
@@ -1,9 +0,0 @@
|
|
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
|
package/dist/index.d.ts.map
DELETED
@@ -1 +0,0 @@
|
|
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
DELETED
@@ -1,6 +0,0 @@
|
|
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
|
package/dist/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAGA,yCAAwC;AAA/B,uGAAA,UAAU,OAAA"}
|