@cloud-copilot/iam-expand 0.10.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +68 -81
- package/README.md +80 -29
- package/dist/cjs/cli.js +70 -49
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/cli_utils.d.ts +4 -16
- package/dist/cjs/cli_utils.d.ts.map +1 -1
- package/dist/cjs/cli_utils.js +11 -44
- package/dist/cjs/cli_utils.js.map +1 -1
- package/dist/cjs/expand.d.ts.map +1 -1
- package/dist/cjs/expand.js +9 -7
- package/dist/cjs/expand.js.map +1 -1
- package/dist/cjs/expand_file.d.ts +1 -1
- package/dist/cjs/expand_file.d.ts.map +1 -1
- package/dist/cjs/expand_file.js +5 -2
- package/dist/cjs/expand_file.js.map +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/invert.d.ts.map +1 -1
- package/dist/cjs/invert.js +10 -6
- package/dist/cjs/invert.js.map +1 -1
- package/dist/cjs/util.js +2 -2
- package/dist/cjs/util.js.map +1 -1
- package/dist/esm/cli.js +74 -53
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/cli_utils.d.ts +4 -16
- package/dist/esm/cli_utils.d.ts.map +1 -1
- package/dist/esm/cli_utils.js +12 -44
- package/dist/esm/cli_utils.js.map +1 -1
- package/dist/esm/expand.d.ts.map +1 -1
- package/dist/esm/expand.js +9 -7
- package/dist/esm/expand.js.map +1 -1
- package/dist/esm/expand_file.d.ts +1 -1
- package/dist/esm/expand_file.d.ts.map +1 -1
- package/dist/esm/expand_file.js +7 -4
- package/dist/esm/expand_file.js.map +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/invert.d.ts.map +1 -1
- package/dist/esm/invert.js +12 -8
- package/dist/esm/invert.js.map +1 -1
- package/dist/esm/util.js +2 -2
- package/dist/esm/util.js.map +1 -1
- package/package.json +72 -3
- package/dist/cjs/stdin.d.ts +0 -7
- package/dist/cjs/stdin.d.ts.map +0 -1
- package/dist/cjs/stdin.js +0 -36
- package/dist/cjs/stdin.js.map +0 -1
- package/dist/esm/stdin.d.ts +0 -7
- package/dist/esm/stdin.d.ts.map +0 -1
- package/dist/esm/stdin.js +0 -33
- package/dist/esm/stdin.js.map +0 -1
package/dist/esm/cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
2
|
+
import { parseCliArguments } from '@cloud-copilot/cli';
|
|
3
|
+
import { iamDataUpdatedAt, iamDataVersion } from '@cloud-copilot/iam-data';
|
|
4
|
+
import { invalidActionBehaviorForString, parseStdIn } from './cli_utils.js';
|
|
5
|
+
import { expandIamActions } from './expand.js';
|
|
6
|
+
import { invertIamActions } from './invert.js';
|
|
7
7
|
const dataPackage = '@cloud-copilot/iam-data';
|
|
8
8
|
const fiveDays = 432000000;
|
|
9
9
|
/**
|
|
@@ -34,31 +34,6 @@ async function checkDataAge() {
|
|
|
34
34
|
console.warn(` iam-expand --show-data-version`);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Print the usage of the CLI to the console
|
|
39
|
-
*/
|
|
40
|
-
function printUsage() {
|
|
41
|
-
console.log('No arguments provided or input from stdin.');
|
|
42
|
-
console.log('Usage:');
|
|
43
|
-
console.log(` ${commandName} [options] [action1] [action2] ...`);
|
|
44
|
-
console.log(` <input from stdout> | ${commandName} [options]`);
|
|
45
|
-
console.log('Action Expanding Options:');
|
|
46
|
-
console.log(' --expand-asterisk: Expand the * action to all actions');
|
|
47
|
-
console.log(' --error-on-invalid-format: Throw an error if the action string is not in the correct format');
|
|
48
|
-
console.log(' --error-on-invalid-service: Throw an error if a service is not found');
|
|
49
|
-
console.log(' --invalid-action-behavior: What to do when an invalid action is encountered:');
|
|
50
|
-
console.log(' --invalid-action-behavior=remove: Remove the invalid action');
|
|
51
|
-
console.log(' --invalid-action-behavior=include: Include the invalid action');
|
|
52
|
-
console.log(' --invalid-action-behavior=error: Throw an error if an invalid action is encountered');
|
|
53
|
-
console.log('Inverting Actions:');
|
|
54
|
-
console.log(' --invert: If not JSON, print the inverse of the actions provided');
|
|
55
|
-
console.log(' --invert-not-actions: If JSON, replace NotAction strings or arrays with Action arrays that have the inverse actions');
|
|
56
|
-
console.log('CLI Behavior Options:');
|
|
57
|
-
console.log(' --show-data-version: Print the version of the iam-data package being used and exit');
|
|
58
|
-
console.log(' --read-wait-ms: Milliseconds to wait for the first byte from stdin before timing out.');
|
|
59
|
-
console.log(' Example: --read-wait-ms=10_000');
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
37
|
/**
|
|
63
38
|
* Print a list of warnings to the console
|
|
64
39
|
*
|
|
@@ -69,20 +44,56 @@ function printWarnings(warnings) {
|
|
|
69
44
|
console.warn(`Notice: ${warning}`);
|
|
70
45
|
}
|
|
71
46
|
}
|
|
72
|
-
const args = process.argv.slice(2); // Ignore the first two elements
|
|
73
47
|
const actionStrings = [];
|
|
74
|
-
const optionStrings = [];
|
|
75
|
-
for (const arg of args) {
|
|
76
|
-
if (arg.startsWith('--')) {
|
|
77
|
-
optionStrings.push(arg);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
actionStrings.push(arg);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
48
|
async function run() {
|
|
84
|
-
const
|
|
85
|
-
|
|
49
|
+
const cli = parseCliArguments('iam-expand', {}, {
|
|
50
|
+
expandAsterisk: {
|
|
51
|
+
character: 'e',
|
|
52
|
+
description: 'Expand the * action to all actions',
|
|
53
|
+
values: 'none'
|
|
54
|
+
},
|
|
55
|
+
errorOnInvalidFormat: {
|
|
56
|
+
character: 'f',
|
|
57
|
+
description: 'Throw an error if the action string is not in the correct format',
|
|
58
|
+
values: 'none'
|
|
59
|
+
},
|
|
60
|
+
errorOnInvalidService: {
|
|
61
|
+
character: 's',
|
|
62
|
+
description: 'Throw an error if a service is not found',
|
|
63
|
+
values: 'none'
|
|
64
|
+
},
|
|
65
|
+
invalidActionBehavior: {
|
|
66
|
+
description: 'What to do when an invalid action is encountered',
|
|
67
|
+
values: 'single',
|
|
68
|
+
type: 'enum',
|
|
69
|
+
validValues: ['remove', 'include', 'error']
|
|
70
|
+
},
|
|
71
|
+
invert: {
|
|
72
|
+
character: 'i',
|
|
73
|
+
description: 'If not JSON, print the inverse of the actions provided',
|
|
74
|
+
values: 'none'
|
|
75
|
+
},
|
|
76
|
+
invertNotActions: {
|
|
77
|
+
character: 'n',
|
|
78
|
+
description: 'If JSON, replace NotAction strings or arrays with Action arrays that have the inverse actions',
|
|
79
|
+
values: 'none'
|
|
80
|
+
},
|
|
81
|
+
showDataVersion: {
|
|
82
|
+
character: 'v',
|
|
83
|
+
description: 'Print the version of the iam-data package being used and exit',
|
|
84
|
+
values: 'none'
|
|
85
|
+
},
|
|
86
|
+
readWaitMs: {
|
|
87
|
+
description: 'Milliseconds to wait for the first byte from stdin before timing out',
|
|
88
|
+
values: 'single',
|
|
89
|
+
type: 'number'
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
operandsName: 'action',
|
|
93
|
+
envPrefix: 'IAM_EXPAND',
|
|
94
|
+
allowOperandsFromStdin: true
|
|
95
|
+
});
|
|
96
|
+
if (cli.args.showDataVersion) {
|
|
86
97
|
const version = await iamDataVersion();
|
|
87
98
|
const updatedAt = await iamDataUpdatedAt();
|
|
88
99
|
console.log(`${dataPackage} version: ${version}`);
|
|
@@ -93,13 +104,20 @@ async function run() {
|
|
|
93
104
|
return;
|
|
94
105
|
}
|
|
95
106
|
const warnings = [];
|
|
107
|
+
const argsWithDefaults = {
|
|
108
|
+
...cli.args,
|
|
109
|
+
invalidActionBehavior: invalidActionBehaviorForString(cli.args.invalidActionBehavior)
|
|
110
|
+
};
|
|
111
|
+
actionStrings.push(...cli.operands);
|
|
96
112
|
if (actionStrings.length === 0) {
|
|
97
113
|
//If no actions are provided, read from stdin
|
|
98
|
-
const stdInResult = await parseStdIn(
|
|
114
|
+
const stdInResult = await parseStdIn(argsWithDefaults);
|
|
99
115
|
if (stdInResult.object) {
|
|
100
116
|
console.log(JSON.stringify(stdInResult.object, null, 2));
|
|
101
|
-
if (
|
|
102
|
-
printWarnings([
|
|
117
|
+
if (cli.args.invert) {
|
|
118
|
+
printWarnings([
|
|
119
|
+
'--invert is not supported when processing JSON, ignoring. Did you mean --invert-not-actions ?'
|
|
120
|
+
]);
|
|
103
121
|
}
|
|
104
122
|
await checkDataAge();
|
|
105
123
|
return;
|
|
@@ -107,7 +125,7 @@ async function run() {
|
|
|
107
125
|
else if (stdInResult.strings) {
|
|
108
126
|
const otherActions = stdInResult.strings;
|
|
109
127
|
if (otherActions.length > 0) {
|
|
110
|
-
if (
|
|
128
|
+
if (cli.args.expandAsterisk) {
|
|
111
129
|
warnings.push('--expand-asterisk is not supported when reading from stdin, ignoring.');
|
|
112
130
|
}
|
|
113
131
|
}
|
|
@@ -115,23 +133,26 @@ async function run() {
|
|
|
115
133
|
}
|
|
116
134
|
}
|
|
117
135
|
if (actionStrings.length > 0) {
|
|
118
|
-
if (
|
|
136
|
+
if (cli.args.invertNotActions) {
|
|
119
137
|
warnings.push('--invert-not-actions is only supported when processing JSON, ignoring.');
|
|
120
138
|
}
|
|
121
|
-
if (
|
|
122
|
-
await runAndPrint(() => invertIamActions(actionStrings,
|
|
139
|
+
if (cli.args.invert) {
|
|
140
|
+
await runAndPrint(() => invertIamActions(actionStrings, argsWithDefaults));
|
|
123
141
|
}
|
|
124
142
|
else {
|
|
125
|
-
await runAndPrint(() => expandIamActions(actionStrings,
|
|
143
|
+
await runAndPrint(() => expandIamActions(actionStrings, argsWithDefaults));
|
|
126
144
|
}
|
|
127
145
|
printWarnings(warnings);
|
|
128
146
|
await checkDataAge();
|
|
129
147
|
return;
|
|
130
148
|
}
|
|
131
|
-
|
|
149
|
+
cli.printHelp();
|
|
132
150
|
}
|
|
133
|
-
run()
|
|
151
|
+
run()
|
|
152
|
+
.catch((e) => {
|
|
134
153
|
console.error(e);
|
|
135
154
|
process.exit(1);
|
|
136
|
-
})
|
|
155
|
+
})
|
|
156
|
+
.then(() => { })
|
|
157
|
+
.finally(() => { });
|
|
137
158
|
//# sourceMappingURL=cli.js.map
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/cli_utils.d.ts
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
import { ExpandIamActionsOptions } from
|
|
2
|
-
import { ExpandJsonDocumentOptions } from
|
|
1
|
+
import { ExpandIamActionsOptions, InvalidActionBehavior } from './expand.js';
|
|
2
|
+
import { ExpandJsonDocumentOptions } from './expand_file.js';
|
|
3
3
|
interface CliOptions extends ExpandIamActionsOptions, ExpandJsonDocumentOptions {
|
|
4
4
|
invert: boolean;
|
|
5
5
|
showDataVersion: boolean;
|
|
6
|
-
readWaitMs:
|
|
6
|
+
readWaitMs: number | undefined;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Convert a dash-case string to camelCase
|
|
10
|
-
* @param str the string to convert
|
|
11
|
-
* @returns the camelCase string
|
|
12
|
-
*/
|
|
13
|
-
export declare function dashToCamelCase(str: string): string;
|
|
14
|
-
/**
|
|
15
|
-
* Convert an array of option strings to an object
|
|
16
|
-
*
|
|
17
|
-
* @param optionArgs the array of option strings to convert
|
|
18
|
-
* @returns the object representation of the options
|
|
19
|
-
*/
|
|
20
|
-
export declare function convertOptions(optionArgs: string[]): Partial<CliOptions>;
|
|
21
8
|
export declare function extractActionsFromLineOfInput(line: string): string[];
|
|
9
|
+
export declare function invalidActionBehaviorForString(behaviorString: string | undefined): InvalidActionBehavior | undefined;
|
|
22
10
|
/**
|
|
23
11
|
* Parse the actions from stdin
|
|
24
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli_utils.d.ts","sourceRoot":"","sources":["../../src/cli_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"cli_utils.d.ts","sourceRoot":"","sources":["../../src/cli_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAsB,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAEhF,UAAU,UAAW,SAAQ,uBAAuB,EAAE,yBAAyB;IAC7E,MAAM,EAAE,OAAO,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B;AAGD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKpE;AAED,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,qBAAqB,GAAG,SAAS,CAOnC;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAc/C"}
|
package/dist/esm/cli_utils.js
CHANGED
|
@@ -1,44 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
/**
|
|
5
|
-
* Convert a dash-case string to camelCase
|
|
6
|
-
* @param str the string to convert
|
|
7
|
-
* @returns the camelCase string
|
|
8
|
-
*/
|
|
9
|
-
export function dashToCamelCase(str) {
|
|
10
|
-
str = str.substring(2);
|
|
11
|
-
return str.replace(/-([a-z])/g, (g) => g[1].toUpperCase());
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Convert an array of option strings to an object
|
|
15
|
-
*
|
|
16
|
-
* @param optionArgs the array of option strings to convert
|
|
17
|
-
* @returns the object representation of the options
|
|
18
|
-
*/
|
|
19
|
-
export function convertOptions(optionArgs) {
|
|
20
|
-
const options = {};
|
|
21
|
-
for (const option of optionArgs) {
|
|
22
|
-
let key = option;
|
|
23
|
-
let value = true;
|
|
24
|
-
if (option.includes('=')) {
|
|
25
|
-
[key, value] = option.split('=');
|
|
26
|
-
}
|
|
27
|
-
options[dashToCamelCase(key)] = value;
|
|
28
|
-
}
|
|
29
|
-
if (typeof (options.invalidActionBehavior) === 'string') {
|
|
30
|
-
const behaviorString = options.invalidActionBehavior;
|
|
31
|
-
const cleanedInput = behaviorString.charAt(0).toUpperCase() + behaviorString.slice(1).toLowerCase();
|
|
32
|
-
const behavior = InvalidActionBehavior[cleanedInput];
|
|
33
|
-
if (behavior) {
|
|
34
|
-
options.invalidActionBehavior = behavior;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
delete options['invalidActionBehavior'];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return options;
|
|
41
|
-
}
|
|
1
|
+
import { readStdin } from '@cloud-copilot/cli';
|
|
2
|
+
import { InvalidActionBehavior } from './expand.js';
|
|
3
|
+
import { expandJsonDocument } from './expand_file.js';
|
|
42
4
|
const actionPattern = /\:?((\\u[0-9]{4}|[a-zA-Z0-9-])+:(\\u[0-9]{4}|[a-zA-Z0-9*\?]|)+)/g;
|
|
43
5
|
export function extractActionsFromLineOfInput(line) {
|
|
44
6
|
const matches = line.matchAll(actionPattern);
|
|
@@ -46,14 +8,20 @@ export function extractActionsFromLineOfInput(line) {
|
|
|
46
8
|
.filter((match) => !match[0].startsWith('arn:') && !match[0].startsWith(':'))
|
|
47
9
|
.map((match) => match[1]);
|
|
48
10
|
}
|
|
11
|
+
export function invalidActionBehaviorForString(behaviorString) {
|
|
12
|
+
if (!behaviorString) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const cleanedInput = behaviorString.charAt(0).toUpperCase() + behaviorString.slice(1).toLowerCase();
|
|
16
|
+
return InvalidActionBehavior[cleanedInput];
|
|
17
|
+
}
|
|
49
18
|
/**
|
|
50
19
|
* Parse the actions from stdin
|
|
51
20
|
*
|
|
52
21
|
* @returns an array of strings from stdin
|
|
53
22
|
*/
|
|
54
23
|
export async function parseStdIn(options) {
|
|
55
|
-
const
|
|
56
|
-
const data = await readStdin(delay);
|
|
24
|
+
const data = await readStdin(options.readWaitMs);
|
|
57
25
|
if (data.length === 0) {
|
|
58
26
|
return {};
|
|
59
27
|
}
|
|
@@ -63,7 +31,7 @@ export async function parseStdIn(options) {
|
|
|
63
31
|
}
|
|
64
32
|
catch (err) { }
|
|
65
33
|
const lines = data.split('\n');
|
|
66
|
-
const actions = lines.flatMap(line => extractActionsFromLineOfInput(line));
|
|
34
|
+
const actions = lines.flatMap((line) => extractActionsFromLineOfInput(line));
|
|
67
35
|
return { strings: actions };
|
|
68
36
|
}
|
|
69
37
|
//# sourceMappingURL=cli_utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli_utils.js","sourceRoot":"","sources":["../../src/cli_utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli_utils.js","sourceRoot":"","sources":["../../src/cli_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAA2B,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAA6B,MAAM,kBAAkB,CAAA;AAQhF,MAAM,aAAa,GAAG,kEAAkE,CAAA;AACxF,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SACvB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,cAAkC;IAElC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,YAAY,GAChB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAChF,OAAO,qBAAqB,CAAC,YAAkD,CAAC,CAAA;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAA4B;IAE5B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAClE,OAAO,EAAE,MAAM,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC,CAAA,CAAC;IAErB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC7B,CAAC"}
|
package/dist/esm/expand.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../src/expand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../src/expand.ts"],"names":[],"mappings":"AASA,oBAAY,qBAAqB;IAC/B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAA;IAE7B;;;;OAIG;IACH,qBAAqB,EAAE,OAAO,CAAA;IAE9B;;;;;;;OAOG;IACH,qBAAqB,EAAE,qBAAqB,CAAA;CAC7C;AASD;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,qBAAqB,EAAE,MAAM,GAAG,MAAM,EAAE,EACxC,eAAe,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACjD,OAAO,CAAC,MAAM,EAAE,CAAC,CA4FnB"}
|
package/dist/esm/expand.js
CHANGED
|
@@ -10,7 +10,7 @@ const defaultOptions = {
|
|
|
10
10
|
expandAsterisk: false,
|
|
11
11
|
errorOnInvalidFormat: false,
|
|
12
12
|
errorOnInvalidService: false,
|
|
13
|
-
invalidActionBehavior: InvalidActionBehavior.Remove
|
|
13
|
+
invalidActionBehavior: InvalidActionBehavior.Remove
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* Expands an IAM action string that contains wildcards.
|
|
@@ -45,7 +45,7 @@ export async function expandIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
45
45
|
const serviceKeys = await iamServiceKeys();
|
|
46
46
|
for await (const service of serviceKeys) {
|
|
47
47
|
const serviceActions = await iamActionsForService(service);
|
|
48
|
-
allActions.push(...serviceActions.map(action => `${service}:${action}`));
|
|
48
|
+
allActions.push(...serviceActions.map((action) => `${service}:${action}`));
|
|
49
49
|
}
|
|
50
50
|
return allActions;
|
|
51
51
|
}
|
|
@@ -64,8 +64,8 @@ export async function expandIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
64
64
|
}
|
|
65
65
|
return [];
|
|
66
66
|
}
|
|
67
|
-
const [service, wildcardActions] = parts.map(part => part.toLowerCase());
|
|
68
|
-
if (!await iamServiceExists(service)) {
|
|
67
|
+
const [service, wildcardActions] = parts.map((part) => part.toLowerCase());
|
|
68
|
+
if (!(await iamServiceExists(service))) {
|
|
69
69
|
if (options.errorOnInvalidService) {
|
|
70
70
|
throw new Error(`Service not found: ${service}`);
|
|
71
71
|
}
|
|
@@ -73,13 +73,13 @@ export async function expandIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
73
73
|
}
|
|
74
74
|
if (wildcardActions.match(allAsterisksPattern)) {
|
|
75
75
|
const actionsForService = await iamActionsForService(service);
|
|
76
|
-
return actionsForService.map(action => `${service}:${action}`);
|
|
76
|
+
return actionsForService.map((action) => `${service}:${action}`);
|
|
77
77
|
}
|
|
78
78
|
if (!actionString.includes('*') && !actionString.includes('?')) {
|
|
79
79
|
const actionExists = await iamActionExists(service, wildcardActions);
|
|
80
80
|
if (actionExists) {
|
|
81
81
|
const details = await iamActionDetails(service, wildcardActions);
|
|
82
|
-
return [service +
|
|
82
|
+
return [service + ':' + details.name];
|
|
83
83
|
}
|
|
84
84
|
if (options.invalidActionBehavior === InvalidActionBehavior.Remove) {
|
|
85
85
|
return [];
|
|
@@ -97,7 +97,9 @@ export async function expandIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
97
97
|
}
|
|
98
98
|
const allActions = await iamActionsForService(service);
|
|
99
99
|
const regex = convertStringToPattern(wildcardActions);
|
|
100
|
-
const matchingActions = allActions
|
|
100
|
+
const matchingActions = allActions
|
|
101
|
+
.filter((action) => regex.test(action))
|
|
102
|
+
.map((action) => `${service}:${action}`);
|
|
101
103
|
matchingActions.sort();
|
|
102
104
|
return matchingActions;
|
|
103
105
|
}
|
package/dist/esm/expand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/expand.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/expand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand_file.d.ts","sourceRoot":"","sources":["../../src/expand_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,uBAAuB,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"expand_file.d.ts","sourceRoot":"","sources":["../../src/expand_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAGvE,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACxE,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAMD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,EAC3C,QAAQ,EAAE,GAAG,EACb,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,GAAG,CAAC,CAmCd"}
|
package/dist/esm/expand_file.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { expandIamActions } from
|
|
2
|
-
import { invertIamActions } from
|
|
1
|
+
import { expandIamActions } from './expand.js';
|
|
2
|
+
import { invertIamActions } from './invert.js';
|
|
3
3
|
const defaultOptions = {
|
|
4
4
|
invertNotActions: false
|
|
5
5
|
};
|
|
@@ -27,7 +27,9 @@ export async function expandJsonDocument(options, document, key) {
|
|
|
27
27
|
return results;
|
|
28
28
|
}
|
|
29
29
|
if (typeof document === 'object' && document !== null) {
|
|
30
|
-
if (options.invertNotActions &&
|
|
30
|
+
if (options.invertNotActions &&
|
|
31
|
+
document.NotAction &&
|
|
32
|
+
isStringOrArrayofStrings(document.NotAction)) {
|
|
31
33
|
document.Action = invertIamActions(document.NotAction);
|
|
32
34
|
delete document.NotAction;
|
|
33
35
|
}
|
|
@@ -45,6 +47,7 @@ export async function expandJsonDocument(options, document, key) {
|
|
|
45
47
|
* @returns
|
|
46
48
|
*/
|
|
47
49
|
function isStringOrArrayofStrings(value) {
|
|
48
|
-
return typeof value === 'string' ||
|
|
50
|
+
return (typeof value === 'string' ||
|
|
51
|
+
(Array.isArray(value) && value.length > 0 && typeof value[0] === 'string'));
|
|
49
52
|
}
|
|
50
53
|
//# sourceMappingURL=expand_file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand_file.js","sourceRoot":"","sources":["../../src/expand_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"expand_file.js","sourceRoot":"","sources":["../../src/expand_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAM9C,MAAM,cAAc,GAAwD;IAC1E,gBAAgB,EAAE,KAAK;CACxB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA2C,EAC3C,QAAa,EACb,GAAY;IAEZ,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAA;IAE3C,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QAC5C,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,IACE,OAAO,CAAC,gBAAgB;YACxB,QAAQ,CAAC,SAAS;YAClB,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5C,CAAC;YACD,QAAQ,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YACtD,OAAO,QAAQ,CAAC,SAAS,CAAA;QAC3B,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QACvE,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAU;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAC3E,CAAA;AACH,CAAC"}
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EACL,gBAAgB,EAGjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAkC,MAAM,kBAAkB,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/esm/invert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../src/invert.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;
|
|
1
|
+
{"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../src/invert.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;CAAG;AAI3C,wBAAsB,gBAAgB,CACpC,qBAAqB,EAAE,MAAM,GAAG,MAAM,EAAE,EACxC,eAAe,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACjD,OAAO,CAAC,MAAM,EAAE,CAAC,CA0DnB"}
|
package/dist/esm/invert.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iamActionsForService, iamServiceKeys } from
|
|
2
|
-
import { allAsterisksPattern, convertStringToPattern } from
|
|
1
|
+
import { iamActionsForService, iamServiceKeys } from '@cloud-copilot/iam-data';
|
|
2
|
+
import { allAsterisksPattern, convertStringToPattern } from './util.js';
|
|
3
3
|
const defaultOptions = {};
|
|
4
4
|
export async function invertIamActions(actionStringOrStrings, overrideOptions) {
|
|
5
5
|
const options = { ...defaultOptions, ...overrideOptions };
|
|
@@ -9,7 +9,9 @@ export async function invertIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
9
9
|
let allActionsFound = false;
|
|
10
10
|
const servicesToExclude = new Set();
|
|
11
11
|
const excludePatterns = {};
|
|
12
|
-
const actionsToInvert = Array.isArray(actionStringOrStrings)
|
|
12
|
+
const actionsToInvert = Array.isArray(actionStringOrStrings)
|
|
13
|
+
? actionStringOrStrings
|
|
14
|
+
: [actionStringOrStrings];
|
|
13
15
|
for (const action of actionsToInvert) {
|
|
14
16
|
if (action.match(allAsterisksPattern)) {
|
|
15
17
|
allActionsFound = true;
|
|
@@ -19,7 +21,7 @@ export async function invertIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
19
21
|
if (parts.length !== 2) {
|
|
20
22
|
continue;
|
|
21
23
|
}
|
|
22
|
-
const [service, wildcardActions] = parts.map(part => part.toLowerCase());
|
|
24
|
+
const [service, wildcardActions] = parts.map((part) => part.toLowerCase());
|
|
23
25
|
if (wildcardActions.match(allAsterisksPattern)) {
|
|
24
26
|
servicesToExclude.add(service);
|
|
25
27
|
continue;
|
|
@@ -40,11 +42,13 @@ export async function invertIamActions(actionStringOrStrings, overrideOptions) {
|
|
|
40
42
|
const serviceActions = await iamActionsForService(serviceKey);
|
|
41
43
|
const excludePatternsForService = excludePatterns[serviceKey] || [];
|
|
42
44
|
if (excludePatternsForService.length === 0) {
|
|
43
|
-
return serviceActions.map(action => `${serviceKey}:${action}`);
|
|
45
|
+
return serviceActions.map((action) => `${serviceKey}:${action}`);
|
|
44
46
|
}
|
|
45
|
-
return serviceActions
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
return serviceActions
|
|
48
|
+
.filter((action) => {
|
|
49
|
+
return !excludePatternsForService.some((pattern) => action.match(pattern));
|
|
50
|
+
})
|
|
51
|
+
.map((action) => `${serviceKey}:${action}`);
|
|
48
52
|
}));
|
|
49
53
|
return Array.from(new Set(actionLists.flat())).sort();
|
|
50
54
|
}
|
package/dist/esm/invert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invert.js","sourceRoot":"","sources":["../../src/invert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"invert.js","sourceRoot":"","sources":["../../src/invert.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/util.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const allAsterisksPattern = /^\*+$/i;
|
|
2
2
|
export function convertStringToPattern(actionString) {
|
|
3
|
-
const pattern =
|
|
3
|
+
const pattern = '^' + actionString.replace(/\?/g, '.').replace(/\*/g, '.*?') + '$';
|
|
4
4
|
return new RegExp(pattern, 'i');
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
@@ -10,7 +10,7 @@ export function convertStringToPattern(actionString) {
|
|
|
10
10
|
* @returns The string with any escaped unicode characters replaced with their actual characters
|
|
11
11
|
*/
|
|
12
12
|
export function unescapeUnicodeCharacters(str) {
|
|
13
|
-
return str.replace(/\\u([\dA-Fa-f]{4
|
|
13
|
+
return str.replace(/\\u([\dA-Fa-f]{4})/gi, (match, code) => {
|
|
14
14
|
return String.fromCharCode(parseInt(code, 16));
|
|
15
15
|
});
|
|
16
16
|
}
|
package/dist/esm/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAA;AAE3C,MAAM,UAAU,sBAAsB,CAAC,YAAoB;IACzD,MAAM,OAAO,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAA;IAClF,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,GAAG,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAA;AAE3C,MAAM,UAAU,sBAAsB,CAAC,YAAoB;IACzD,MAAM,OAAO,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAA;IAClF,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACzD,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|