@cloud-copilot/iam-shrink 0.1.11 → 0.1.12
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/CHANGELOG.md +7 -0
- package/README.md +24 -0
- package/dist/cjs/shrink.d.ts +4 -4
- package/dist/cjs/shrink.d.ts.map +1 -1
- package/dist/cjs/shrink.js +39 -15
- package/dist/cjs/shrink.js.map +1 -1
- package/dist/esm/shrink.d.ts +4 -4
- package/dist/esm/shrink.d.ts.map +1 -1
- package/dist/esm/shrink.js +40 -16
- package/dist/esm/shrink.js.map +1 -1
- package/package.json +1 -1
- package/src/shrink.test.ts +202 -9
- package/src/shrink.ts +49 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [0.1.12](https://github.com/cloud-copilot/iam-shrink/compare/v0.1.11...v0.1.12) (2025-04-14)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* Retain existing wildcards from input ([5f7fac8](https://github.com/cloud-copilot/iam-shrink/commit/5f7fac8369d1b233fddec95beb668dd3df4e9c39))
|
|
7
|
+
|
|
1
8
|
## [0.1.11](https://github.com/cloud-copilot/iam-shrink/compare/v0.1.10...v0.1.11) (2025-04-12)
|
|
2
9
|
|
|
3
10
|
## [0.1.10](https://github.com/cloud-copilot/iam-shrink/compare/v0.1.9...v0.1.10) (2025-04-10)
|
package/README.md
CHANGED
|
@@ -18,6 +18,30 @@ IAM Actions are camel cased into a number of words. For example:
|
|
|
18
18
|
|
|
19
19
|
IAM Shrink will only replace one word at a time and will never replace part of a word. So for instance `s3:GetObject` will never get shrunk to something like `s3:*et*`. This is to balance size reduction with readability.
|
|
20
20
|
|
|
21
|
+
## Existing Wildcards
|
|
22
|
+
|
|
23
|
+
If your input already contains wildcards, they will be preserved. For example:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
cat "s3:Get*Tagging" | iam-shrink
|
|
27
|
+
# Output
|
|
28
|
+
s3:Get*Tagging
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Existing wildcards will be removed under three conditions:
|
|
32
|
+
|
|
33
|
+
1. If the wildcard does not match any actual actions and effectively does nothing. For instance if you input `s3:Get*NonExistentAction`, it will be removed.
|
|
34
|
+
2. If the wildcard is redundant or can be replaced with a more general wildcard. For instance if you input `s3:GetObject*` and `s3:Get*`, only `s3:Get*` will be kept.
|
|
35
|
+
3. If the shrink process finds a smaller wildcard that replaces the existing one. For instance if you input `s3:GetObject*`, but during the shrink process iam-shrink finds is valid `s3:Get*`, `s3:GetObject*` will be removed.
|
|
36
|
+
|
|
37
|
+
## Removing Preexisting Wildcards
|
|
38
|
+
|
|
39
|
+
If you want to remove all existing wildcards from you policy you can use [iam-expand](https://github.com/cloud-copilot/iam-expand) before using iam-shrink.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
curl "https://government-secrets.s3.amazonaws.com/secret-policy.json" | iam-expand | iam-shrink
|
|
43
|
+
```
|
|
44
|
+
|
|
21
45
|
## Use in Browser
|
|
22
46
|
|
|
23
47
|
[https://iam.cloudcopilot.io/tools/iam-shrink](https://iam.cloudcopilot.io/tools/iam-shrink)
|
package/dist/cjs/shrink.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export declare function groupActionsByService(actions: string[]): Map<string, {
|
|
|
49
49
|
* @param iterations the number of iterations to run the shrink operations
|
|
50
50
|
* @returns the smallest list of patterns that when compared to possibleActions will match only the desiredActions and no others
|
|
51
51
|
*/
|
|
52
|
-
export declare function shrinkResolvedList(desiredActions: string[], possibleActions: string[], iterations: number): string[];
|
|
52
|
+
export declare function shrinkResolvedList(desiredActions: string[], possibleActions: string[], actionsToNotShrink: Set<string>, iterations: number): string[];
|
|
53
53
|
/**
|
|
54
54
|
* Shrink the list of desired actions for while excluding the undesired actions
|
|
55
55
|
*
|
|
@@ -58,9 +58,9 @@ export declare function shrinkResolvedList(desiredActions: string[], possibleAct
|
|
|
58
58
|
* @param deep if true, will shrink based on all common sequences, otherwise will only shrink based on the most common sequence
|
|
59
59
|
* @returns the smallest list of actions that will match only the desiredActions and not match any of the undesiredActions or any actions not specified by desiredActions.
|
|
60
60
|
*/
|
|
61
|
-
export declare function shrinkIteration(desiredActions: string[], undesiredActions: string[], deep: boolean): string[];
|
|
61
|
+
export declare function shrinkIteration(desiredActions: string[], undesiredActions: string[], actionsToNotShrink: Set<string>, deep: boolean): string[];
|
|
62
62
|
/**
|
|
63
|
-
* Reduces a
|
|
63
|
+
* Reduces a single action into a smaller number of parts by replace one part at a time with an asterisk
|
|
64
64
|
* and validating that there are no undesired actions that match the new action
|
|
65
65
|
*
|
|
66
66
|
* @param desiredAction the action to reduce
|
|
@@ -70,7 +70,7 @@ export declare function shrinkIteration(desiredActions: string[], undesiredActio
|
|
|
70
70
|
*/
|
|
71
71
|
export declare function reduceAction(desiredAction: string, sequence: string, undesiredActions: string[]): string;
|
|
72
72
|
/**
|
|
73
|
-
* Consolidate
|
|
73
|
+
* Consolidate multiple consecutive asterisks into a single asterisk
|
|
74
74
|
*
|
|
75
75
|
* @param wildcardAction the action to collapse
|
|
76
76
|
* @returns the action with consecutive asterisks collapsed into a single asterisk
|
package/dist/cjs/shrink.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shrink.d.ts","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AACrF,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAMpD,CAAA;AAYD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"shrink.d.ts","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AACrF,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAMpD,CAAA;AAYD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CA+EnB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EAAE,GAChB,GAAG,CAAC,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAWlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EAAE,EACxB,eAAe,EAAE,MAAM,EAAE,EACzB,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC/B,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAiCV;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,OAAO,GACZ,MAAM,EAAE,CAyBV;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,CAoER;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAQjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc5F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EAAE,GAChB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAc3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBxE;AAkED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAK/E"}
|
package/dist/cjs/shrink.js
CHANGED
|
@@ -59,23 +59,45 @@ async function shrink(desiredPatterns, shrinkOptions) {
|
|
|
59
59
|
}
|
|
60
60
|
const reducibleAccessLevelsSet = new Set(options.levels);
|
|
61
61
|
const wildCard = desiredPatterns.find((pattern) => collapseAsterisks(pattern) === '*');
|
|
62
|
-
if (wildCard
|
|
62
|
+
if (wildCard) {
|
|
63
63
|
return ['*'];
|
|
64
64
|
}
|
|
65
|
+
const patterns = [];
|
|
66
|
+
for (const pattern of desiredPatterns) {
|
|
67
|
+
if (pattern.includes('*') || pattern.includes('?')) {
|
|
68
|
+
const matchesAnything = await (0, iam_expand_1.matchesAnyAction)(pattern);
|
|
69
|
+
if (matchesAnything) {
|
|
70
|
+
patterns.push(pattern);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
65
74
|
const targetActions = await (0, iam_expand_1.expandIamActions)(desiredPatterns);
|
|
66
75
|
const expandedActionsByService = groupActionsByService(targetActions);
|
|
76
|
+
const patternsByService = groupActionsByService(patterns);
|
|
67
77
|
const services = Array.from(expandedActionsByService.keys()).sort();
|
|
68
78
|
const reducedActions = [];
|
|
69
79
|
for (const service of services) {
|
|
70
80
|
const desiredActions = expandedActionsByService.get(service);
|
|
81
|
+
const desiredPatternsForService = patternsByService.get(service) || {
|
|
82
|
+
withService: [],
|
|
83
|
+
withoutService: []
|
|
84
|
+
};
|
|
85
|
+
//Every possible action
|
|
71
86
|
const possibleActions = mapActions(await (0, iam_expand_1.expandIamActions)(`${service}:*`));
|
|
72
|
-
|
|
73
|
-
const
|
|
87
|
+
//Remove from the list of desired actions anything that matches a user defined pattern
|
|
88
|
+
const desiredActionsAfterPatterns = desiredActions.withoutService.filter((action) => {
|
|
89
|
+
return !desiredPatternsForService.withoutService.some((pattern) => (0, iam_expand_1.actionMatchesPattern)(action, pattern));
|
|
90
|
+
});
|
|
91
|
+
const filteredActions = await filterActionsByAccessLevel(service, desiredActionsAfterPatterns, reducibleAccessLevelsSet);
|
|
92
|
+
const reducedServiceActions = shrinkResolvedList(consolidateWildcardPatterns([
|
|
93
|
+
...filteredActions.reducibleActions,
|
|
94
|
+
...desiredPatternsForService.withoutService
|
|
95
|
+
]), possibleActions, new Set(desiredPatternsForService.withoutService), options.iterations);
|
|
74
96
|
//Validation
|
|
75
|
-
const reducedServiceActionsWithService = [
|
|
97
|
+
const reducedServiceActionsWithService = consolidateWildcardPatterns([
|
|
76
98
|
...reducedServiceActions.map((action) => `${service}:${action}`),
|
|
77
99
|
...filteredActions.unreducibleActions.map((action) => `${service}:${action}`)
|
|
78
|
-
].sort();
|
|
100
|
+
]).sort();
|
|
79
101
|
const invalidMatch = await (0, validate_js_1.validateShrinkResults)(desiredActions.withService, reducedServiceActionsWithService);
|
|
80
102
|
if (invalidMatch) {
|
|
81
103
|
throw new errors_js_1.ShrinkValidationError(desiredPatterns, invalidMatch);
|
|
@@ -124,19 +146,19 @@ function groupActionsByService(actions) {
|
|
|
124
146
|
* @param iterations the number of iterations to run the shrink operations
|
|
125
147
|
* @returns the smallest list of patterns that when compared to possibleActions will match only the desiredActions and no others
|
|
126
148
|
*/
|
|
127
|
-
function shrinkResolvedList(desiredActions, possibleActions, iterations) {
|
|
149
|
+
function shrinkResolvedList(desiredActions, possibleActions, actionsToNotShrink, iterations) {
|
|
128
150
|
const desiredActionSet = new Set(desiredActions);
|
|
129
151
|
const undesiredActions = possibleActions.filter((action) => !desiredActionSet.has(action));
|
|
130
152
|
if (undesiredActions.length === 0) {
|
|
131
153
|
// If there are no undesired actions, that means we want all actions
|
|
132
154
|
return ['*'];
|
|
133
155
|
}
|
|
134
|
-
// Iteratively shrink based on the most
|
|
156
|
+
// Iteratively shrink based on the most common sequence until we can't shrink anymore
|
|
135
157
|
let previousActionListLength = desiredActions.length;
|
|
136
158
|
let actionList = desiredActions.slice();
|
|
137
159
|
do {
|
|
138
160
|
previousActionListLength = actionList.length;
|
|
139
|
-
actionList = shrinkIteration(actionList, undesiredActions, false);
|
|
161
|
+
actionList = shrinkIteration(actionList, undesiredActions, actionsToNotShrink, false);
|
|
140
162
|
iterations = iterations - 1;
|
|
141
163
|
if (iterations <= 0) {
|
|
142
164
|
return actionList;
|
|
@@ -145,7 +167,7 @@ function shrinkResolvedList(desiredActions, possibleActions, iterations) {
|
|
|
145
167
|
// Iteratively shrink based on all common sequences until we can't shrink anymore
|
|
146
168
|
do {
|
|
147
169
|
previousActionListLength = actionList.length;
|
|
148
|
-
actionList = shrinkIteration(actionList, undesiredActions, true);
|
|
170
|
+
actionList = shrinkIteration(actionList, undesiredActions, actionsToNotShrink, true);
|
|
149
171
|
iterations = iterations - 1;
|
|
150
172
|
if (iterations <= 0) {
|
|
151
173
|
return actionList;
|
|
@@ -161,9 +183,11 @@ function shrinkResolvedList(desiredActions, possibleActions, iterations) {
|
|
|
161
183
|
* @param deep if true, will shrink based on all common sequences, otherwise will only shrink based on the most common sequence
|
|
162
184
|
* @returns the smallest list of actions that will match only the desiredActions and not match any of the undesiredActions or any actions not specified by desiredActions.
|
|
163
185
|
*/
|
|
164
|
-
function shrinkIteration(desiredActions, undesiredActions, deep) {
|
|
186
|
+
function shrinkIteration(desiredActions, undesiredActions, actionsToNotShrink, deep) {
|
|
165
187
|
// Find all common words in the strings in the desiredActions array
|
|
166
|
-
const commonSequences = findCommonSequences(desiredActions
|
|
188
|
+
const commonSequences = findCommonSequences(desiredActions.filter((a) => !actionsToNotShrink.has(a))
|
|
189
|
+
// desiredActions
|
|
190
|
+
).filter((sequence) => sequence.sequence != '*');
|
|
167
191
|
commonSequences.sort((a, b) => {
|
|
168
192
|
return b.frequency - a.frequency;
|
|
169
193
|
});
|
|
@@ -177,7 +201,7 @@ function shrinkIteration(desiredActions, undesiredActions, deep) {
|
|
|
177
201
|
return reducedActions;
|
|
178
202
|
}
|
|
179
203
|
/**
|
|
180
|
-
* Reduces a
|
|
204
|
+
* Reduces a single action into a smaller number of parts by replace one part at a time with an asterisk
|
|
181
205
|
* and validating that there are no undesired actions that match the new action
|
|
182
206
|
*
|
|
183
207
|
* @param desiredAction the action to reduce
|
|
@@ -231,7 +255,7 @@ function reduceAction(desiredAction, sequence, undesiredActions) {
|
|
|
231
255
|
const tempString = collapseAsterisks(tempArray.join(''));
|
|
232
256
|
const problemMatch = wildcardActionMatchesAnyString(tempString, undesiredActions);
|
|
233
257
|
if (problemMatch) {
|
|
234
|
-
//This replacement cased a
|
|
258
|
+
//This replacement cased a problem match, so revert it before going backwards in the strings
|
|
235
259
|
tempArray[i] = testArray[i];
|
|
236
260
|
// Stopping here seems to work the best
|
|
237
261
|
break;
|
|
@@ -253,7 +277,7 @@ function reduceAction(desiredAction, sequence, undesiredActions) {
|
|
|
253
277
|
return shorterValue;
|
|
254
278
|
}
|
|
255
279
|
/**
|
|
256
|
-
* Consolidate
|
|
280
|
+
* Consolidate multiple consecutive asterisks into a single asterisk
|
|
257
281
|
*
|
|
258
282
|
* @param wildcardAction the action to collapse
|
|
259
283
|
* @returns the action with consecutive asterisks collapsed into a single asterisk
|
|
@@ -395,7 +419,7 @@ function optionAccessLevelForDataAccessLevel(accessLevel) {
|
|
|
395
419
|
throw new Error(`Unknown access level: ${accessLevel}`);
|
|
396
420
|
}
|
|
397
421
|
/**
|
|
398
|
-
* Filter actions into
|
|
422
|
+
* Filter actions into reducible and unreducible based on the provided access levels
|
|
399
423
|
*
|
|
400
424
|
* @param service the service the actions belong to
|
|
401
425
|
* @param actions the list of actions to filter
|
package/dist/cjs/shrink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shrink.js","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":";;;AAiDA,wBAqDC;AAQD,gCAEC;AAYD,sDAaC;AAWD,gDAqCC;AAUD,0CA2BC;AAWD,oCAwEC;AAQD,8CAEC;AAQD,wDAIC;AASD,wEAQC;AAYD,oDAKC;AASD,0CAcC;AAQD,kDAgBC;AAYD,kEAsBC;AAwED,8CAKC;AAvgBD,sDAA0D;AAC1D,0DAA4D;AAC5D,2CAAmD;AACnD,+CAAqD;AAGxC,QAAA,qBAAqB,GAAwB;IACxD,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,aAAa;CACd,CAAA;AAID,MAAM,cAAc,GAAqD;IACvE,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,aAAa;CACxC,CAAA;AAQD,MAAM,cAAc,GAAkB;IACpC,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,6BAAqB;CAC9B,CAAA;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,MAAM,CAC1B,eAAyB,EACzB,aAAsC;IAEtC,mCAAmC;IACnC,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa,EAAE,CAAA;IACvD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,GAAG,6BAAqB,CAAA;IACxC,CAAC;IACD,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;IACtF,IAAI,QAAQ,IAAI,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAgB,EAAC,eAAe,CAAC,CAAA;IAC7D,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAA;IACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEnE,MAAM,cAAc,GAAa,EAAE,CAAA;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAA;QAC7D,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,IAAA,6BAAgB,EAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAA;QAC1E,MAAM,eAAe,GAAG,MAAM,0BAA0B,CACtD,OAAO,EACP,cAAc,CAAC,cAAc,EAC7B,wBAAwB,CACzB,CAAA;QAED,MAAM,qBAAqB,GAAG,kBAAkB,CAC9C,eAAe,CAAC,gBAAgB,EAChC,eAAe,EACf,OAAO,CAAC,UAAU,CACnB,CAAA;QAED,YAAY;QACZ,MAAM,gCAAgC,GAAG;YACvC,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;YAChE,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;SAC9E,CAAC,IAAI,EAAE,CAAA;QAER,MAAM,YAAY,GAAG,MAAM,IAAA,mCAAqB,EAC9C,cAAc,CAAC,WAAW,EAC1B,gCAAgC,CACjC,CAAA;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,iCAAqB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;QAChE,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,GAAG,gCAAgC,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,OAAiB;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,OAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+D,CAAA;IACzF,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QAC/B,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAA;QAClE,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvD,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IACF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,cAAwB,EACxB,eAAyB,EACzB,UAAkB;IAElB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAA;IAChD,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAE1F,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,oEAAoE;QACpE,OAAO,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,sFAAsF;IACtF,IAAI,wBAAwB,GAAG,cAAc,CAAC,MAAM,CAAA;IACpD,IAAI,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;IAEvC,GAAG,CAAC;QACF,wBAAwB,GAAG,UAAU,CAAC,MAAM,CAAA;QAC5C,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACjE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAA;QAC3B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC,QAAQ,UAAU,CAAC,MAAM,GAAG,wBAAwB,EAAC;IAEtD,iFAAiF;IACjF,GAAG,CAAC;QACF,wBAAwB,GAAG,UAAU,CAAC,MAAM,CAAA;QAC5C,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAA;QAChE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAA;QAC3B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC,QAAQ,UAAU,CAAC,MAAM,GAAG,wBAAwB,EAAC;IAEtD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC7B,cAAwB,EACxB,gBAA0B,EAC1B,IAAa;IAEb,mEAAmE;IACnE,MAAM,eAAe,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,MAAM,CAChE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CACvC,CAAA;IACD,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE/E,mDAAmD;IACnD,IAAI,cAAc,GAAG,cAAc,CAAA;IACnC,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;QAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,IAAI,GAAG,CACL,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAC1F,CACF,CAAA;QACD,cAAc,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,aAAqB,EACrB,QAAgB,EAChB,gBAA0B;IAE1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAA;IACrD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAA;IACtB,CAAC;IACD,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnD,IAAI,YAAY,GAAG,aAAa,CAAA;IAEhC,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QACnC,6HAA6H;QAC7H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACxD,MAAM,YAAY,GAAG,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;YACjF,IAAI,YAAY,EAAE,CAAC;gBACjB,uCAAuC;gBACvC,MAAK;YACP,CAAC;YACD,YAAY,GAAG,UAAU,CAAA;QAC3B,CAAC;QAED,sBAAsB;IACxB,CAAC;SAAM,IAAI,eAAe,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,gBAAgB;QAChB,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QACnC,8FAA8F;QAC9F,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACxD,MAAM,YAAY,GAAG,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;YACjF,IAAI,YAAY,EAAE,CAAC;gBACjB,uCAAuC;gBACvC,MAAK;YACP,CAAC;YAED,YAAY,GAAG,UAAU,CAAA;QAC3B,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAC/B,mBAAmB;QACnB,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QACnC,8FAA8F;QAC9F,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACxD,MAAM,YAAY,GAAG,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;YACjF,IAAI,YAAY,EAAE,CAAC;gBACjB,2FAA2F;gBAC3F,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC3B,uCAAuC;gBACvC,MAAK;YACP,CAAC;YACD,YAAY,GAAG,UAAU,CAAA;QAC3B,CAAC;QACD,8FAA8F;QAC9F,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACxD,MAAM,YAAY,GAAG,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;YACjF,IAAI,YAAY,EAAE,CAAC;gBACjB,uCAAuC;gBACvC,MAAK;YACP,CAAC;YACD,YAAY,GAAG,UAAU,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,cAAsB;IACtD,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,cAAsB;IAC3D,cAAc,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAA;IAChE,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,8BAA8B,CAAC,cAAsB,EAAE,OAAiB;IACtF,MAAM,KAAK,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAA;IACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,8FAA8F;IAC9F,oDAAoD;IACpD,sEAAsE;IACtE,OAAO,KAAK,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;AACrF,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,UAAoB,EAAE,OAAiB;IACrE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAChD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,KAAK,EAAE,CAAA;YACT,CAAC;QACH,CAAC,CAAC,CAAA;QACF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,cAAc,CAAA;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,OAAiB;IAEjB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IACvC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1E,MAAM,MAAM,GAAU,EAAE,CAAA;IACxB,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,2BAA2B,CAAC,QAAkB;IAC5D,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAE5C,IAAI,oBAAoB,GAAa,EAAE,CAAA;IACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,kCAAkC;QAClC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAC1E,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CACtC,CAAA;QACD,IAAI,wBAAwB,EAAE,CAAC;YAC7B,SAAQ;QACV,CAAC;QAED,mDAAmD;QACnD,oBAAoB,GAAG,oBAAoB,CAAC,MAAM,CAChD,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CACzD,CAAA;QAED,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,QAAgB;IACvD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;IAClE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mCAAmC,CAC1C,WAAkC;IAElC,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;GAOG;AAEH,KAAK,UAAU,0BAA0B,CACvC,OAAe,EACf,OAAiB,EACjB,qBAA6C;IAE7C,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAA;IAC9D,CAAC;IAED,MAAM,gBAAgB,GAAa,EAAE,CAAA;IACrC,MAAM,kBAAkB,GAAa,EAAE,CAAA;IAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACvD,MAAM,WAAW,GAAG,mCAAmC,CACrD,OAAO,CAAC,WAAoC,CAC7C,CAAA;QACD,IAAI,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,YAAoC;IACpE,OAAO,CACL,YAAY,CAAC,IAAI,IAAI,6BAAqB,CAAC,MAAM;QACjD,CAAC,6BAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACjE,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"shrink.js","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/shrink.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export declare function groupActionsByService(actions: string[]): Map<string, {
|
|
|
49
49
|
* @param iterations the number of iterations to run the shrink operations
|
|
50
50
|
* @returns the smallest list of patterns that when compared to possibleActions will match only the desiredActions and no others
|
|
51
51
|
*/
|
|
52
|
-
export declare function shrinkResolvedList(desiredActions: string[], possibleActions: string[], iterations: number): string[];
|
|
52
|
+
export declare function shrinkResolvedList(desiredActions: string[], possibleActions: string[], actionsToNotShrink: Set<string>, iterations: number): string[];
|
|
53
53
|
/**
|
|
54
54
|
* Shrink the list of desired actions for while excluding the undesired actions
|
|
55
55
|
*
|
|
@@ -58,9 +58,9 @@ export declare function shrinkResolvedList(desiredActions: string[], possibleAct
|
|
|
58
58
|
* @param deep if true, will shrink based on all common sequences, otherwise will only shrink based on the most common sequence
|
|
59
59
|
* @returns the smallest list of actions that will match only the desiredActions and not match any of the undesiredActions or any actions not specified by desiredActions.
|
|
60
60
|
*/
|
|
61
|
-
export declare function shrinkIteration(desiredActions: string[], undesiredActions: string[], deep: boolean): string[];
|
|
61
|
+
export declare function shrinkIteration(desiredActions: string[], undesiredActions: string[], actionsToNotShrink: Set<string>, deep: boolean): string[];
|
|
62
62
|
/**
|
|
63
|
-
* Reduces a
|
|
63
|
+
* Reduces a single action into a smaller number of parts by replace one part at a time with an asterisk
|
|
64
64
|
* and validating that there are no undesired actions that match the new action
|
|
65
65
|
*
|
|
66
66
|
* @param desiredAction the action to reduce
|
|
@@ -70,7 +70,7 @@ export declare function shrinkIteration(desiredActions: string[], undesiredActio
|
|
|
70
70
|
*/
|
|
71
71
|
export declare function reduceAction(desiredAction: string, sequence: string, undesiredActions: string[]): string;
|
|
72
72
|
/**
|
|
73
|
-
* Consolidate
|
|
73
|
+
* Consolidate multiple consecutive asterisks into a single asterisk
|
|
74
74
|
*
|
|
75
75
|
* @param wildcardAction the action to collapse
|
|
76
76
|
* @returns the action with consecutive asterisks collapsed into a single asterisk
|
package/dist/esm/shrink.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shrink.d.ts","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AACrF,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAMpD,CAAA;AAYD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"shrink.d.ts","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AACrF,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAMpD,CAAA;AAYD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CA+EnB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EAAE,GAChB,GAAG,CAAC,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAWlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EAAE,EACxB,eAAe,EAAE,MAAM,EAAE,EACzB,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC/B,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAiCV;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,OAAO,GACZ,MAAM,EAAE,CAyBV;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,CAoER;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAQjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc5F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EAAE,GAChB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAc3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBxE;AAkED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAK/E"}
|
package/dist/esm/shrink.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { iamActionDetails } from '@cloud-copilot/iam-data';
|
|
2
|
-
import { expandIamActions } from '@cloud-copilot/iam-expand';
|
|
2
|
+
import { actionMatchesPattern, expandIamActions, matchesAnyAction } from '@cloud-copilot/iam-expand';
|
|
3
3
|
import { ShrinkValidationError } from './errors.js';
|
|
4
4
|
import { validateShrinkResults } from './validate.js';
|
|
5
5
|
export const allActionAccessLevels = [
|
|
@@ -42,23 +42,45 @@ export async function shrink(desiredPatterns, shrinkOptions) {
|
|
|
42
42
|
}
|
|
43
43
|
const reducibleAccessLevelsSet = new Set(options.levels);
|
|
44
44
|
const wildCard = desiredPatterns.find((pattern) => collapseAsterisks(pattern) === '*');
|
|
45
|
-
if (wildCard
|
|
45
|
+
if (wildCard) {
|
|
46
46
|
return ['*'];
|
|
47
47
|
}
|
|
48
|
+
const patterns = [];
|
|
49
|
+
for (const pattern of desiredPatterns) {
|
|
50
|
+
if (pattern.includes('*') || pattern.includes('?')) {
|
|
51
|
+
const matchesAnything = await matchesAnyAction(pattern);
|
|
52
|
+
if (matchesAnything) {
|
|
53
|
+
patterns.push(pattern);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
48
57
|
const targetActions = await expandIamActions(desiredPatterns);
|
|
49
58
|
const expandedActionsByService = groupActionsByService(targetActions);
|
|
59
|
+
const patternsByService = groupActionsByService(patterns);
|
|
50
60
|
const services = Array.from(expandedActionsByService.keys()).sort();
|
|
51
61
|
const reducedActions = [];
|
|
52
62
|
for (const service of services) {
|
|
53
63
|
const desiredActions = expandedActionsByService.get(service);
|
|
64
|
+
const desiredPatternsForService = patternsByService.get(service) || {
|
|
65
|
+
withService: [],
|
|
66
|
+
withoutService: []
|
|
67
|
+
};
|
|
68
|
+
//Every possible action
|
|
54
69
|
const possibleActions = mapActions(await expandIamActions(`${service}:*`));
|
|
55
|
-
|
|
56
|
-
const
|
|
70
|
+
//Remove from the list of desired actions anything that matches a user defined pattern
|
|
71
|
+
const desiredActionsAfterPatterns = desiredActions.withoutService.filter((action) => {
|
|
72
|
+
return !desiredPatternsForService.withoutService.some((pattern) => actionMatchesPattern(action, pattern));
|
|
73
|
+
});
|
|
74
|
+
const filteredActions = await filterActionsByAccessLevel(service, desiredActionsAfterPatterns, reducibleAccessLevelsSet);
|
|
75
|
+
const reducedServiceActions = shrinkResolvedList(consolidateWildcardPatterns([
|
|
76
|
+
...filteredActions.reducibleActions,
|
|
77
|
+
...desiredPatternsForService.withoutService
|
|
78
|
+
]), possibleActions, new Set(desiredPatternsForService.withoutService), options.iterations);
|
|
57
79
|
//Validation
|
|
58
|
-
const reducedServiceActionsWithService = [
|
|
80
|
+
const reducedServiceActionsWithService = consolidateWildcardPatterns([
|
|
59
81
|
...reducedServiceActions.map((action) => `${service}:${action}`),
|
|
60
82
|
...filteredActions.unreducibleActions.map((action) => `${service}:${action}`)
|
|
61
|
-
].sort();
|
|
83
|
+
]).sort();
|
|
62
84
|
const invalidMatch = await validateShrinkResults(desiredActions.withService, reducedServiceActionsWithService);
|
|
63
85
|
if (invalidMatch) {
|
|
64
86
|
throw new ShrinkValidationError(desiredPatterns, invalidMatch);
|
|
@@ -107,19 +129,19 @@ export function groupActionsByService(actions) {
|
|
|
107
129
|
* @param iterations the number of iterations to run the shrink operations
|
|
108
130
|
* @returns the smallest list of patterns that when compared to possibleActions will match only the desiredActions and no others
|
|
109
131
|
*/
|
|
110
|
-
export function shrinkResolvedList(desiredActions, possibleActions, iterations) {
|
|
132
|
+
export function shrinkResolvedList(desiredActions, possibleActions, actionsToNotShrink, iterations) {
|
|
111
133
|
const desiredActionSet = new Set(desiredActions);
|
|
112
134
|
const undesiredActions = possibleActions.filter((action) => !desiredActionSet.has(action));
|
|
113
135
|
if (undesiredActions.length === 0) {
|
|
114
136
|
// If there are no undesired actions, that means we want all actions
|
|
115
137
|
return ['*'];
|
|
116
138
|
}
|
|
117
|
-
// Iteratively shrink based on the most
|
|
139
|
+
// Iteratively shrink based on the most common sequence until we can't shrink anymore
|
|
118
140
|
let previousActionListLength = desiredActions.length;
|
|
119
141
|
let actionList = desiredActions.slice();
|
|
120
142
|
do {
|
|
121
143
|
previousActionListLength = actionList.length;
|
|
122
|
-
actionList = shrinkIteration(actionList, undesiredActions, false);
|
|
144
|
+
actionList = shrinkIteration(actionList, undesiredActions, actionsToNotShrink, false);
|
|
123
145
|
iterations = iterations - 1;
|
|
124
146
|
if (iterations <= 0) {
|
|
125
147
|
return actionList;
|
|
@@ -128,7 +150,7 @@ export function shrinkResolvedList(desiredActions, possibleActions, iterations)
|
|
|
128
150
|
// Iteratively shrink based on all common sequences until we can't shrink anymore
|
|
129
151
|
do {
|
|
130
152
|
previousActionListLength = actionList.length;
|
|
131
|
-
actionList = shrinkIteration(actionList, undesiredActions, true);
|
|
153
|
+
actionList = shrinkIteration(actionList, undesiredActions, actionsToNotShrink, true);
|
|
132
154
|
iterations = iterations - 1;
|
|
133
155
|
if (iterations <= 0) {
|
|
134
156
|
return actionList;
|
|
@@ -144,9 +166,11 @@ export function shrinkResolvedList(desiredActions, possibleActions, iterations)
|
|
|
144
166
|
* @param deep if true, will shrink based on all common sequences, otherwise will only shrink based on the most common sequence
|
|
145
167
|
* @returns the smallest list of actions that will match only the desiredActions and not match any of the undesiredActions or any actions not specified by desiredActions.
|
|
146
168
|
*/
|
|
147
|
-
export function shrinkIteration(desiredActions, undesiredActions, deep) {
|
|
169
|
+
export function shrinkIteration(desiredActions, undesiredActions, actionsToNotShrink, deep) {
|
|
148
170
|
// Find all common words in the strings in the desiredActions array
|
|
149
|
-
const commonSequences = findCommonSequences(desiredActions
|
|
171
|
+
const commonSequences = findCommonSequences(desiredActions.filter((a) => !actionsToNotShrink.has(a))
|
|
172
|
+
// desiredActions
|
|
173
|
+
).filter((sequence) => sequence.sequence != '*');
|
|
150
174
|
commonSequences.sort((a, b) => {
|
|
151
175
|
return b.frequency - a.frequency;
|
|
152
176
|
});
|
|
@@ -160,7 +184,7 @@ export function shrinkIteration(desiredActions, undesiredActions, deep) {
|
|
|
160
184
|
return reducedActions;
|
|
161
185
|
}
|
|
162
186
|
/**
|
|
163
|
-
* Reduces a
|
|
187
|
+
* Reduces a single action into a smaller number of parts by replace one part at a time with an asterisk
|
|
164
188
|
* and validating that there are no undesired actions that match the new action
|
|
165
189
|
*
|
|
166
190
|
* @param desiredAction the action to reduce
|
|
@@ -214,7 +238,7 @@ export function reduceAction(desiredAction, sequence, undesiredActions) {
|
|
|
214
238
|
const tempString = collapseAsterisks(tempArray.join(''));
|
|
215
239
|
const problemMatch = wildcardActionMatchesAnyString(tempString, undesiredActions);
|
|
216
240
|
if (problemMatch) {
|
|
217
|
-
//This replacement cased a
|
|
241
|
+
//This replacement cased a problem match, so revert it before going backwards in the strings
|
|
218
242
|
tempArray[i] = testArray[i];
|
|
219
243
|
// Stopping here seems to work the best
|
|
220
244
|
break;
|
|
@@ -236,7 +260,7 @@ export function reduceAction(desiredAction, sequence, undesiredActions) {
|
|
|
236
260
|
return shorterValue;
|
|
237
261
|
}
|
|
238
262
|
/**
|
|
239
|
-
* Consolidate
|
|
263
|
+
* Consolidate multiple consecutive asterisks into a single asterisk
|
|
240
264
|
*
|
|
241
265
|
* @param wildcardAction the action to collapse
|
|
242
266
|
* @returns the action with consecutive asterisks collapsed into a single asterisk
|
|
@@ -378,7 +402,7 @@ function optionAccessLevelForDataAccessLevel(accessLevel) {
|
|
|
378
402
|
throw new Error(`Unknown access level: ${accessLevel}`);
|
|
379
403
|
}
|
|
380
404
|
/**
|
|
381
|
-
* Filter actions into
|
|
405
|
+
* Filter actions into reducible and unreducible based on the provided access levels
|
|
382
406
|
*
|
|
383
407
|
* @param service the service the actions belong to
|
|
384
408
|
* @param actions the list of actions to filter
|
package/dist/esm/shrink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shrink.js","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shrink.js","sourceRoot":"","sources":["../../src/shrink.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/shrink.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { iamActionDetails } from '@cloud-copilot/iam-data'
|
|
2
|
-
import { expandIamActions } from '@cloud-copilot/iam-expand'
|
|
2
|
+
import { expandIamActions, matchesAnyAction } from '@cloud-copilot/iam-expand'
|
|
3
3
|
import { beforeEach } from 'node:test'
|
|
4
4
|
import { describe, expect, it, vi } from 'vitest'
|
|
5
5
|
import {
|
|
@@ -80,7 +80,7 @@ describe('shrink.ts', () => {
|
|
|
80
80
|
expect(result).toEqual(['*Object*'])
|
|
81
81
|
})
|
|
82
82
|
|
|
83
|
-
it('should not
|
|
83
|
+
it('should not over consolidate in the middle', () => {
|
|
84
84
|
//Given the wildcard actions
|
|
85
85
|
const actions = [
|
|
86
86
|
'Delete*Tagging',
|
|
@@ -105,6 +105,25 @@ describe('shrink.ts', () => {
|
|
|
105
105
|
].sort()
|
|
106
106
|
)
|
|
107
107
|
})
|
|
108
|
+
|
|
109
|
+
it('should consolidate multiple patterns', () => {
|
|
110
|
+
//Given a list of wildcard actions
|
|
111
|
+
const actions = [
|
|
112
|
+
's3:List*',
|
|
113
|
+
's3:ListB*',
|
|
114
|
+
's3:ListBu*',
|
|
115
|
+
's3:ListBuc*',
|
|
116
|
+
's3:ListBuck*',
|
|
117
|
+
's3:ListBucke*',
|
|
118
|
+
's3:ListBucket*'
|
|
119
|
+
]
|
|
120
|
+
|
|
121
|
+
//When we consolidate the actions
|
|
122
|
+
const result = consolidateWildcardPatterns(actions)
|
|
123
|
+
|
|
124
|
+
//Then we should get an array of consolidated actions
|
|
125
|
+
expect(result.sort()).toEqual(['s3:List*'].sort())
|
|
126
|
+
})
|
|
108
127
|
})
|
|
109
128
|
|
|
110
129
|
describe('countSubstrings', () => {
|
|
@@ -345,7 +364,7 @@ describe('shrink.ts', () => {
|
|
|
345
364
|
const undesiredActions = ['GetObjectAcl', 'PutObjectTagging']
|
|
346
365
|
|
|
347
366
|
//When we shrink the actions
|
|
348
|
-
const result = shrinkIteration(actions, undesiredActions, false)
|
|
367
|
+
const result = shrinkIteration(actions, undesiredActions, new Set(), false)
|
|
349
368
|
|
|
350
369
|
//Then we should get the reduced actions
|
|
351
370
|
expect(result).toEqual([
|
|
@@ -368,7 +387,7 @@ describe('shrink.ts', () => {
|
|
|
368
387
|
const undesiredActions = ['GetObjectAcl', 'PutObjectTagging']
|
|
369
388
|
|
|
370
389
|
//When we shrink the actions
|
|
371
|
-
const result = shrinkIteration(actions, undesiredActions, true)
|
|
390
|
+
const result = shrinkIteration(actions, undesiredActions, new Set(), true)
|
|
372
391
|
|
|
373
392
|
//Then we should get the reduced actions
|
|
374
393
|
expect(result).toEqual(['PutObjectTagging', 'Get*Tagging', '*Version*'])
|
|
@@ -388,7 +407,7 @@ describe('shrink.ts', () => {
|
|
|
388
407
|
const possibleActions = actions.slice(0)
|
|
389
408
|
|
|
390
409
|
//When we shrink the actions
|
|
391
|
-
const result = shrinkResolvedList(actions, possibleActions, Infinity)
|
|
410
|
+
const result = shrinkResolvedList(actions, possibleActions, new Set(), Infinity)
|
|
392
411
|
|
|
393
412
|
//Then we should get a wildcard
|
|
394
413
|
expect(result).toEqual(['*'])
|
|
@@ -413,7 +432,7 @@ describe('shrink.ts', () => {
|
|
|
413
432
|
]
|
|
414
433
|
|
|
415
434
|
//When we shrink the actions
|
|
416
|
-
const result = shrinkResolvedList(actions, possibleActions, 2)
|
|
435
|
+
const result = shrinkResolvedList(actions, possibleActions, new Set(), 2)
|
|
417
436
|
|
|
418
437
|
//Then we should get the reduced actions
|
|
419
438
|
expect(result.sort()).toEqual(['*Tagging', 'Get*VersionAcl'])
|
|
@@ -438,7 +457,7 @@ describe('shrink.ts', () => {
|
|
|
438
457
|
]
|
|
439
458
|
|
|
440
459
|
//When we shrink the actions
|
|
441
|
-
const result = shrinkResolvedList(actions, possibleActions, Infinity)
|
|
460
|
+
const result = shrinkResolvedList(actions, possibleActions, new Set(), Infinity)
|
|
442
461
|
|
|
443
462
|
//Then we should get the reduced actions
|
|
444
463
|
expect(result.sort()).toEqual(['*Tagging', '*VersionAcl'])
|
|
@@ -585,7 +604,7 @@ describe('shrink.ts', () => {
|
|
|
585
604
|
expect(result).toEqual(['*'])
|
|
586
605
|
})
|
|
587
606
|
|
|
588
|
-
it('should
|
|
607
|
+
it('should return an all actions wildcard if one is provided and all accessLevels are reducible', async () => {
|
|
589
608
|
//Given a list of actions that includes a global wildcard
|
|
590
609
|
const actions = ['*', 's3:GetObjectTagging', 's3:PutObjectTagging']
|
|
591
610
|
|
|
@@ -600,7 +619,7 @@ describe('shrink.ts', () => {
|
|
|
600
619
|
const result = await shrink(actions, { levels: ['read'] })
|
|
601
620
|
|
|
602
621
|
//Then we should get back the single wildcard
|
|
603
|
-
expect(result
|
|
622
|
+
expect(result).toEqual(['*'])
|
|
604
623
|
})
|
|
605
624
|
|
|
606
625
|
it('should return an all actions wildcard if a string of multiple asterisks is included', async () => {
|
|
@@ -665,6 +684,180 @@ describe('shrink.ts', () => {
|
|
|
665
684
|
].sort()
|
|
666
685
|
)
|
|
667
686
|
})
|
|
687
|
+
|
|
688
|
+
it('should leave input wildcards from the original in place', async () => {
|
|
689
|
+
//Given a list of actions with input wildcards
|
|
690
|
+
const actions = [
|
|
691
|
+
's3:GetObjectTagging',
|
|
692
|
+
's3:PutObjectTagging',
|
|
693
|
+
's3:GetBucketTagging',
|
|
694
|
+
's3:GetObjectVersionAcl',
|
|
695
|
+
's3:List*'
|
|
696
|
+
]
|
|
697
|
+
|
|
698
|
+
//and the wildcard matches an action
|
|
699
|
+
vi.mocked(matchesAnyAction).mockResolvedValue(true)
|
|
700
|
+
|
|
701
|
+
//When shrink is called
|
|
702
|
+
const result = await shrink(actions, { iterations: 1 })
|
|
703
|
+
|
|
704
|
+
//Then we should get the reduced actions with input wildcards in place
|
|
705
|
+
expect(result.sort()).toEqual(['s3:Get*', 's3:List*', 's3:PutObjectTagging'].sort())
|
|
706
|
+
})
|
|
707
|
+
|
|
708
|
+
it('should remove input wildcards that match no existing actions', async () => {
|
|
709
|
+
//Given a list of actions with input wildcards that don't match any existing actions
|
|
710
|
+
const actions = [
|
|
711
|
+
's3:GetObjectTagging',
|
|
712
|
+
's3:GetObject',
|
|
713
|
+
's3:GetObjectVersionAcl',
|
|
714
|
+
's3:GetObjectVersions',
|
|
715
|
+
's3:PutObjectTagging',
|
|
716
|
+
's3:PutObject',
|
|
717
|
+
's3:PutObjectVersionAcl',
|
|
718
|
+
's3:PutObjectVersions',
|
|
719
|
+
's3:GetBucketTagging',
|
|
720
|
+
's3:GetObjectVersionAcl',
|
|
721
|
+
's3:ListAllMyBuckets',
|
|
722
|
+
's3:ListBucket',
|
|
723
|
+
's3:ListBucketVersions',
|
|
724
|
+
's3:*NonExistent*'
|
|
725
|
+
]
|
|
726
|
+
//and the wildcard matches no actions
|
|
727
|
+
vi.mocked(matchesAnyAction).mockResolvedValue(false)
|
|
728
|
+
mockExpandIamActions.mockImplementation(async (actions: string | string[]) => {
|
|
729
|
+
return [actions].flat().filter((action) => action !== 's3:*NonExistent*')
|
|
730
|
+
})
|
|
731
|
+
|
|
732
|
+
//When shrink is called
|
|
733
|
+
const result = await shrink(actions, { iterations: 1, levels: ['list', 'read'] })
|
|
734
|
+
|
|
735
|
+
//Then we should get the reduced actions with input wildcards removed
|
|
736
|
+
expect(result.sort()).toEqual(
|
|
737
|
+
[
|
|
738
|
+
's3:Get*',
|
|
739
|
+
's3:ListAllMyBuckets',
|
|
740
|
+
's3:ListBucket',
|
|
741
|
+
's3:ListBucketVersions',
|
|
742
|
+
's3:PutObject',
|
|
743
|
+
's3:PutObjectTagging',
|
|
744
|
+
's3:PutObjectVersionAcl',
|
|
745
|
+
's3:PutObjectVersions'
|
|
746
|
+
].sort()
|
|
747
|
+
)
|
|
748
|
+
})
|
|
749
|
+
|
|
750
|
+
it('should remove input wildcards that are redundant', async () => {
|
|
751
|
+
//Given a list of actions with input wildcards
|
|
752
|
+
const actions = [
|
|
753
|
+
's3:GetObjectTagging',
|
|
754
|
+
's3:PutObjectTagging',
|
|
755
|
+
's3:GetBucketTagging',
|
|
756
|
+
's3:GetObjectVersionAcl',
|
|
757
|
+
's3:List*',
|
|
758
|
+
's3:ListB*',
|
|
759
|
+
's3:ListBu*',
|
|
760
|
+
's3:ListBuc*',
|
|
761
|
+
's3:ListBuck*',
|
|
762
|
+
's3:ListBucke*',
|
|
763
|
+
's3:ListBucket*'
|
|
764
|
+
]
|
|
765
|
+
|
|
766
|
+
//and the wildcard matches an action
|
|
767
|
+
vi.mocked(matchesAnyAction).mockResolvedValue(true)
|
|
768
|
+
|
|
769
|
+
//When shrink is called
|
|
770
|
+
const result = await shrink(actions, { iterations: 1 })
|
|
771
|
+
|
|
772
|
+
//Then we should get the reduced actions with input wildcards in place
|
|
773
|
+
expect(result.sort()).toEqual(['s3:Get*', 's3:List*', 's3:PutObjectTagging'].sort())
|
|
774
|
+
})
|
|
775
|
+
|
|
776
|
+
it('should consolidate duplicate wildcards, even if that level is ignored', async () => {
|
|
777
|
+
//Given a list of actions with List wildcards
|
|
778
|
+
const actions = [
|
|
779
|
+
's3:GetObjectTagging',
|
|
780
|
+
's3:PutObjectTagging',
|
|
781
|
+
's3:GetBucketTagging',
|
|
782
|
+
's3:GetObjectVersionAcl',
|
|
783
|
+
's3:List*',
|
|
784
|
+
's3:ListB*',
|
|
785
|
+
's3:ListBu*',
|
|
786
|
+
's3:ListBuc*',
|
|
787
|
+
's3:ListBuck*',
|
|
788
|
+
's3:ListBucke*',
|
|
789
|
+
's3:ListBucket*'
|
|
790
|
+
]
|
|
791
|
+
|
|
792
|
+
//and the wildcards match an action
|
|
793
|
+
vi.mocked(matchesAnyAction).mockResolvedValue(true)
|
|
794
|
+
mockExpandIamActions.mockImplementation(async (implActions: string | string[]) => {
|
|
795
|
+
return [
|
|
796
|
+
's3:GetObjectTagging',
|
|
797
|
+
's3:PutObjectTagging',
|
|
798
|
+
's3:GetBucketTagging',
|
|
799
|
+
's3:GetObjectVersionAcl',
|
|
800
|
+
's3:ListBucket'
|
|
801
|
+
]
|
|
802
|
+
})
|
|
803
|
+
mockIamActionDetails.mockImplementation(async (service: string, action: string) => {
|
|
804
|
+
if (action.startsWith('Get')) {
|
|
805
|
+
return { accessLevel: 'Read' }
|
|
806
|
+
}
|
|
807
|
+
if (action.startsWith('Put')) {
|
|
808
|
+
return { accessLevel: 'Write' }
|
|
809
|
+
}
|
|
810
|
+
if (action.startsWith('List')) {
|
|
811
|
+
return { accessLevel: 'List' }
|
|
812
|
+
}
|
|
813
|
+
return { accessLevel: 'other' } as any
|
|
814
|
+
})
|
|
815
|
+
|
|
816
|
+
//When shrink is called
|
|
817
|
+
const result = await shrink(actions, { iterations: 1, levels: ['write'] })
|
|
818
|
+
|
|
819
|
+
//Then we should get the reduced actions with existing input wildcards in place
|
|
820
|
+
expect(result.sort()).toEqual(
|
|
821
|
+
[
|
|
822
|
+
's3:GetBucketTagging',
|
|
823
|
+
's3:GetObjectTagging',
|
|
824
|
+
's3:GetObjectVersionAcl',
|
|
825
|
+
's3:List*',
|
|
826
|
+
's3:Put*'
|
|
827
|
+
].sort()
|
|
828
|
+
)
|
|
829
|
+
})
|
|
830
|
+
|
|
831
|
+
it('should leave input wildcards no matter how ugly', async () => {
|
|
832
|
+
//Given a list of actions with input wildcards
|
|
833
|
+
const actions = [
|
|
834
|
+
's3:GetObjectTagging',
|
|
835
|
+
's3:PutObjectTagging',
|
|
836
|
+
's3:GetBucketTagging',
|
|
837
|
+
's3:GetObjectVersionAcl',
|
|
838
|
+
's3:List*',
|
|
839
|
+
's3:*t*Object*',
|
|
840
|
+
's3:CreateMultiRegionAccessPoint'
|
|
841
|
+
]
|
|
842
|
+
|
|
843
|
+
//and the wildcard matches an action
|
|
844
|
+
vi.mocked(matchesAnyAction).mockResolvedValue(true)
|
|
845
|
+
|
|
846
|
+
mockExpandIamActions.mockImplementation(async (implActions: string | string[]) => {
|
|
847
|
+
if (implActions == 's3:*') {
|
|
848
|
+
return [...actions, 's3:CreateAccessGrantsInstance']
|
|
849
|
+
}
|
|
850
|
+
return actions
|
|
851
|
+
})
|
|
852
|
+
|
|
853
|
+
//When shrink is called
|
|
854
|
+
const result = await shrink(actions, { iterations: 1 })
|
|
855
|
+
|
|
856
|
+
//Then we should get the reduced actions with input wildcards in place
|
|
857
|
+
expect(result.sort()).toEqual(
|
|
858
|
+
['s3:List*', 's3:*t*Object*', 's3:Create*Point', 's3:GetBucketTagging'].sort()
|
|
859
|
+
)
|
|
860
|
+
})
|
|
668
861
|
})
|
|
669
862
|
|
|
670
863
|
describe('isAllAccessLevels', () => {
|
package/src/shrink.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { iamActionDetails } from '@cloud-copilot/iam-data'
|
|
2
|
-
import { expandIamActions } from '@cloud-copilot/iam-expand'
|
|
2
|
+
import { actionMatchesPattern, expandIamActions, matchesAnyAction } from '@cloud-copilot/iam-expand'
|
|
3
3
|
import { ShrinkValidationError } from './errors.js'
|
|
4
4
|
import { validateShrinkResults } from './validate.js'
|
|
5
5
|
|
|
@@ -59,35 +59,64 @@ export async function shrink(
|
|
|
59
59
|
const reducibleAccessLevelsSet = new Set(options.levels)
|
|
60
60
|
|
|
61
61
|
const wildCard = desiredPatterns.find((pattern) => collapseAsterisks(pattern) === '*')
|
|
62
|
-
if (wildCard
|
|
62
|
+
if (wildCard) {
|
|
63
63
|
return ['*']
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
const patterns = []
|
|
67
|
+
for (const pattern of desiredPatterns) {
|
|
68
|
+
if (pattern.includes('*') || pattern.includes('?')) {
|
|
69
|
+
const matchesAnything = await matchesAnyAction(pattern)
|
|
70
|
+
if (matchesAnything) {
|
|
71
|
+
patterns.push(pattern)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
66
76
|
const targetActions = await expandIamActions(desiredPatterns)
|
|
67
77
|
const expandedActionsByService = groupActionsByService(targetActions)
|
|
78
|
+
const patternsByService = groupActionsByService(patterns)
|
|
68
79
|
const services = Array.from(expandedActionsByService.keys()).sort()
|
|
69
80
|
|
|
70
81
|
const reducedActions: string[] = []
|
|
71
82
|
for (const service of services) {
|
|
72
83
|
const desiredActions = expandedActionsByService.get(service)!
|
|
84
|
+
const desiredPatternsForService = patternsByService.get(service) || {
|
|
85
|
+
withService: [],
|
|
86
|
+
withoutService: []
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
//Every possible action
|
|
73
90
|
const possibleActions = mapActions(await expandIamActions(`${service}:*`))
|
|
91
|
+
|
|
92
|
+
//Remove from the list of desired actions anything that matches a user defined pattern
|
|
93
|
+
const desiredActionsAfterPatterns = desiredActions.withoutService.filter((action) => {
|
|
94
|
+
return !desiredPatternsForService.withoutService.some((pattern) =>
|
|
95
|
+
actionMatchesPattern(action, pattern)
|
|
96
|
+
)
|
|
97
|
+
})
|
|
98
|
+
|
|
74
99
|
const filteredActions = await filterActionsByAccessLevel(
|
|
75
100
|
service,
|
|
76
|
-
|
|
101
|
+
desiredActionsAfterPatterns,
|
|
77
102
|
reducibleAccessLevelsSet
|
|
78
103
|
)
|
|
79
104
|
|
|
80
105
|
const reducedServiceActions = shrinkResolvedList(
|
|
81
|
-
|
|
106
|
+
consolidateWildcardPatterns([
|
|
107
|
+
...filteredActions.reducibleActions,
|
|
108
|
+
...desiredPatternsForService.withoutService
|
|
109
|
+
]),
|
|
82
110
|
possibleActions,
|
|
111
|
+
new Set(desiredPatternsForService.withoutService),
|
|
83
112
|
options.iterations
|
|
84
113
|
)
|
|
85
114
|
|
|
86
115
|
//Validation
|
|
87
|
-
const reducedServiceActionsWithService = [
|
|
116
|
+
const reducedServiceActionsWithService = consolidateWildcardPatterns([
|
|
88
117
|
...reducedServiceActions.map((action) => `${service}:${action}`),
|
|
89
118
|
...filteredActions.unreducibleActions.map((action) => `${service}:${action}`)
|
|
90
|
-
].sort()
|
|
119
|
+
]).sort()
|
|
91
120
|
|
|
92
121
|
const invalidMatch = await validateShrinkResults(
|
|
93
122
|
desiredActions.withService,
|
|
@@ -149,6 +178,7 @@ export function groupActionsByService(
|
|
|
149
178
|
export function shrinkResolvedList(
|
|
150
179
|
desiredActions: string[],
|
|
151
180
|
possibleActions: string[],
|
|
181
|
+
actionsToNotShrink: Set<string>,
|
|
152
182
|
iterations: number
|
|
153
183
|
): string[] {
|
|
154
184
|
const desiredActionSet = new Set(desiredActions)
|
|
@@ -159,13 +189,13 @@ export function shrinkResolvedList(
|
|
|
159
189
|
return ['*']
|
|
160
190
|
}
|
|
161
191
|
|
|
162
|
-
// Iteratively shrink based on the most
|
|
192
|
+
// Iteratively shrink based on the most common sequence until we can't shrink anymore
|
|
163
193
|
let previousActionListLength = desiredActions.length
|
|
164
194
|
let actionList = desiredActions.slice()
|
|
165
195
|
|
|
166
196
|
do {
|
|
167
197
|
previousActionListLength = actionList.length
|
|
168
|
-
actionList = shrinkIteration(actionList, undesiredActions, false)
|
|
198
|
+
actionList = shrinkIteration(actionList, undesiredActions, actionsToNotShrink, false)
|
|
169
199
|
iterations = iterations - 1
|
|
170
200
|
if (iterations <= 0) {
|
|
171
201
|
return actionList
|
|
@@ -175,7 +205,7 @@ export function shrinkResolvedList(
|
|
|
175
205
|
// Iteratively shrink based on all common sequences until we can't shrink anymore
|
|
176
206
|
do {
|
|
177
207
|
previousActionListLength = actionList.length
|
|
178
|
-
actionList = shrinkIteration(actionList, undesiredActions, true)
|
|
208
|
+
actionList = shrinkIteration(actionList, undesiredActions, actionsToNotShrink, true)
|
|
179
209
|
iterations = iterations - 1
|
|
180
210
|
if (iterations <= 0) {
|
|
181
211
|
return actionList
|
|
@@ -196,12 +226,15 @@ export function shrinkResolvedList(
|
|
|
196
226
|
export function shrinkIteration(
|
|
197
227
|
desiredActions: string[],
|
|
198
228
|
undesiredActions: string[],
|
|
229
|
+
actionsToNotShrink: Set<string>,
|
|
199
230
|
deep: boolean
|
|
200
231
|
): string[] {
|
|
201
232
|
// Find all common words in the strings in the desiredActions array
|
|
202
|
-
const commonSequences = findCommonSequences(
|
|
203
|
-
(
|
|
204
|
-
|
|
233
|
+
const commonSequences = findCommonSequences(
|
|
234
|
+
desiredActions.filter((a) => !actionsToNotShrink.has(a))
|
|
235
|
+
// desiredActions
|
|
236
|
+
).filter((sequence) => sequence.sequence != '*')
|
|
237
|
+
|
|
205
238
|
commonSequences.sort((a, b) => {
|
|
206
239
|
return b.frequency - a.frequency
|
|
207
240
|
})
|
|
@@ -223,7 +256,7 @@ export function shrinkIteration(
|
|
|
223
256
|
}
|
|
224
257
|
|
|
225
258
|
/**
|
|
226
|
-
* Reduces a
|
|
259
|
+
* Reduces a single action into a smaller number of parts by replace one part at a time with an asterisk
|
|
227
260
|
* and validating that there are no undesired actions that match the new action
|
|
228
261
|
*
|
|
229
262
|
* @param desiredAction the action to reduce
|
|
@@ -282,7 +315,7 @@ export function reduceAction(
|
|
|
282
315
|
const tempString = collapseAsterisks(tempArray.join(''))
|
|
283
316
|
const problemMatch = wildcardActionMatchesAnyString(tempString, undesiredActions)
|
|
284
317
|
if (problemMatch) {
|
|
285
|
-
//This replacement cased a
|
|
318
|
+
//This replacement cased a problem match, so revert it before going backwards in the strings
|
|
286
319
|
tempArray[i] = testArray[i]
|
|
287
320
|
// Stopping here seems to work the best
|
|
288
321
|
break
|
|
@@ -306,7 +339,7 @@ export function reduceAction(
|
|
|
306
339
|
}
|
|
307
340
|
|
|
308
341
|
/**
|
|
309
|
-
* Consolidate
|
|
342
|
+
* Consolidate multiple consecutive asterisks into a single asterisk
|
|
310
343
|
*
|
|
311
344
|
* @param wildcardAction the action to collapse
|
|
312
345
|
* @returns the action with consecutive asterisks collapsed into a single asterisk
|
|
@@ -471,7 +504,7 @@ function optionAccessLevelForDataAccessLevel(
|
|
|
471
504
|
}
|
|
472
505
|
|
|
473
506
|
/**
|
|
474
|
-
* Filter actions into
|
|
507
|
+
* Filter actions into reducible and unreducible based on the provided access levels
|
|
475
508
|
*
|
|
476
509
|
* @param service the service the actions belong to
|
|
477
510
|
* @param actions the list of actions to filter
|