@cloud-copilot/iam-collect 0.1.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.
Files changed (73) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +23 -0
  3. package/dist/cjs/cli.d.ts +3 -0
  4. package/dist/cjs/cli.d.ts.map +1 -0
  5. package/dist/cjs/cli.js +23 -0
  6. package/dist/cjs/cli.js.map +1 -0
  7. package/dist/cjs/cli2.d.ts +63 -0
  8. package/dist/cjs/cli2.d.ts.map +1 -0
  9. package/dist/cjs/cli2.js +41 -0
  10. package/dist/cjs/cli2.js.map +1 -0
  11. package/dist/cjs/cli3.d.ts +63 -0
  12. package/dist/cjs/cli3.d.ts.map +1 -0
  13. package/dist/cjs/cli3.js +41 -0
  14. package/dist/cjs/cli3.js.map +1 -0
  15. package/dist/cjs/cliUtils.d.ts +13 -0
  16. package/dist/cjs/cliUtils.d.ts.map +1 -0
  17. package/dist/cjs/cliUtils.js +43 -0
  18. package/dist/cjs/cliUtils.js.map +1 -0
  19. package/dist/cjs/config/config.d.ts +74 -0
  20. package/dist/cjs/config/config.d.ts.map +1 -0
  21. package/dist/cjs/config/config.js +121 -0
  22. package/dist/cjs/config/config.js.map +1 -0
  23. package/dist/cjs/config/createConfigFile.d.ts +5 -0
  24. package/dist/cjs/config/createConfigFile.d.ts.map +1 -0
  25. package/dist/cjs/config/createConfigFile.js +17 -0
  26. package/dist/cjs/config/createConfigFile.js.map +1 -0
  27. package/dist/cjs/config/defaultConfig.d.ts +14 -0
  28. package/dist/cjs/config/defaultConfig.d.ts.map +1 -0
  29. package/dist/cjs/config/defaultConfig.js +83 -0
  30. package/dist/cjs/config/defaultConfig.js.map +1 -0
  31. package/dist/cjs/config/packageVersion.d.ts +12 -0
  32. package/dist/cjs/config/packageVersion.d.ts.map +1 -0
  33. package/dist/cjs/config/packageVersion.js +41 -0
  34. package/dist/cjs/config/packageVersion.js.map +1 -0
  35. package/dist/cjs/package.json +3 -0
  36. package/dist/cjs/showHelp.d.ts +2 -0
  37. package/dist/cjs/showHelp.d.ts.map +1 -0
  38. package/dist/cjs/showHelp.js +33 -0
  39. package/dist/cjs/showHelp.js.map +1 -0
  40. package/dist/cjs/utils.d.ts +8 -0
  41. package/dist/cjs/utils.d.ts.map +1 -0
  42. package/dist/cjs/utils.js +21 -0
  43. package/dist/cjs/utils.js.map +1 -0
  44. package/dist/esm/cli.d.ts +3 -0
  45. package/dist/esm/cli.d.ts.map +1 -0
  46. package/dist/esm/cli.js +21 -0
  47. package/dist/esm/cli.js.map +1 -0
  48. package/dist/esm/cliUtils.d.ts +13 -0
  49. package/dist/esm/cliUtils.d.ts.map +1 -0
  50. package/dist/esm/cliUtils.js +40 -0
  51. package/dist/esm/cliUtils.js.map +1 -0
  52. package/dist/esm/config/config.d.ts +74 -0
  53. package/dist/esm/config/config.d.ts.map +1 -0
  54. package/dist/esm/config/config.js +116 -0
  55. package/dist/esm/config/config.js.map +1 -0
  56. package/dist/esm/config/createConfigFile.d.ts +5 -0
  57. package/dist/esm/config/createConfigFile.d.ts.map +1 -0
  58. package/dist/esm/config/createConfigFile.js +14 -0
  59. package/dist/esm/config/createConfigFile.js.map +1 -0
  60. package/dist/esm/config/defaultConfig.d.ts +14 -0
  61. package/dist/esm/config/defaultConfig.d.ts.map +1 -0
  62. package/dist/esm/config/defaultConfig.js +77 -0
  63. package/dist/esm/config/defaultConfig.js.map +1 -0
  64. package/dist/esm/config/packageVersion.d.ts +12 -0
  65. package/dist/esm/config/packageVersion.d.ts.map +1 -0
  66. package/dist/esm/config/packageVersion.js +37 -0
  67. package/dist/esm/config/packageVersion.js.map +1 -0
  68. package/dist/esm/package.json +3 -0
  69. package/dist/esm/utils.d.ts +8 -0
  70. package/dist/esm/utils.d.ts.map +1 -0
  71. package/dist/esm/utils.js +18 -0
  72. package/dist/esm/utils.js.map +1 -0
  73. package/package.json +45 -0
package/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # iam-download
2
+
3
+ Download IAM data from AWS. This is built to run out of the box in simple use cases, and also work in terribly oppresive environments with a little more configuration. If you want to analyze IAM data at scale this is what you've been looking for.
4
+
5
+ # BETA
6
+
7
+ This is still in beta, commands and configuration options are likely to change.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g @cloud-copilot/iam-download
13
+ ```
14
+
15
+ ## Initialization
16
+
17
+ First you need to initialize the configuration file. This will create a commented iam-download.jsonc file with comments for the different elements.
18
+
19
+ ```bash
20
+ iam-download init
21
+ ```
22
+
23
+ This will create a file called `iam-download.jsonc` in the current directory with a simple default configuration and many comments on how to customize the configuration.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const cliUtils_js_1 = require("./cliUtils.js");
5
+ const createConfigFile_js_1 = require("./config/createConfigFile.js");
6
+ const defaultConfig_js_1 = require("./config/defaultConfig.js");
7
+ const rawArgs = process.argv.slice(2); // Ignore the first two elements
8
+ const parsedArgs = (0, cliUtils_js_1.parseCliArguments)(rawArgs);
9
+ if (parsedArgs.unrecognizedParams) {
10
+ console.error(`Unrecognized parameters: ${parsedArgs.unrecognizedParams.join(', ')}`);
11
+ process.exit(1);
12
+ }
13
+ const command = parsedArgs.cliArguments?.command || 'download';
14
+ if (command === 'init') {
15
+ if ((0, defaultConfig_js_1.defaultConfigExists)()) {
16
+ console.error('Configuration file already exists');
17
+ process.exit(1);
18
+ }
19
+ console.log('Initializing...');
20
+ (0, createConfigFile_js_1.createDefaultConfiguration)();
21
+ process.exit(0);
22
+ }
23
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA,+CAAiD;AACjD,sEAAyE;AACzE,gEAA+D;AAE/D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;AACtE,MAAM,UAAU,GAAG,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAA;AAE7C,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,4BAA4B,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,UAAU,CAAA;AAE9D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;IACvB,IAAI,IAAA,sCAAmB,GAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,IAAA,gDAA0B,GAAE,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
@@ -0,0 +1,63 @@
1
+ type OptionConfig2 = {
2
+ type: 'string' | 'number' | 'boolean';
3
+ values: 'single' | 'multiple';
4
+ description: string;
5
+ character?: string;
6
+ };
7
+ type Config2<T extends Record<string, OptionConfig2>> = T;
8
+ type ParsedArgs<T extends Record<string, OptionConfig2>> = {
9
+ [K in keyof T]: T[K]['type'] extends 'string' ? T[K]['values'] extends 'single' ? string : string[] : T[K]['type'] extends 'number' ? number : T[K]['type'] extends 'boolean' ? boolean : never;
10
+ };
11
+ declare const config: {
12
+ regions: {
13
+ type: "string";
14
+ values: "multiple";
15
+ description: string;
16
+ };
17
+ account: {
18
+ type: "string";
19
+ values: "single";
20
+ description: string;
21
+ };
22
+ ssl: {
23
+ type: "boolean";
24
+ values: "single";
25
+ description: string;
26
+ character: string;
27
+ };
28
+ port: {
29
+ type: "number";
30
+ values: "single";
31
+ description: string;
32
+ };
33
+ };
34
+ declare const args: {
35
+ regions: string;
36
+ account: string;
37
+ ssl: string;
38
+ port: string;
39
+ };
40
+ declare const parsed: ParsedArgs<{
41
+ regions: {
42
+ type: "string";
43
+ values: "multiple";
44
+ description: string;
45
+ };
46
+ account: {
47
+ type: "string";
48
+ values: "single";
49
+ description: string;
50
+ };
51
+ ssl: {
52
+ type: "boolean";
53
+ values: "single";
54
+ description: string;
55
+ character: string;
56
+ };
57
+ port: {
58
+ type: "number";
59
+ values: "single";
60
+ description: string;
61
+ };
62
+ }>;
63
+ //# sourceMappingURL=cli2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli2.d.ts","sourceRoot":"","sources":["../../src/cli2.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;AAMzD,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACzC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,QAAQ,GAC7B,MAAM,GACN,MAAM,EAAE,GACV,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GAC3B,MAAM,GACN,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,SAAS,GAC5B,OAAO,GACP,KAAK;CACd,CAAA;AAwBD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAKV,CAAA;AAEF,QAAA,MAAM,IAAI;;;;;CAKT,CAAA;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;EAA+B,CAAA"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ function createConfig(config) {
3
+ return config;
4
+ }
5
+ function parseArguments(config, args // Simulating parsed CLI arguments
6
+ ) {
7
+ const result = {};
8
+ for (const key in config) {
9
+ const option = config[key];
10
+ const value = args[key];
11
+ if (option.type === 'string') {
12
+ result[key] = value;
13
+ }
14
+ else if (option.type === 'number') {
15
+ result[key] = value ? parseFloat(value) : NaN;
16
+ }
17
+ else if (option.type === 'boolean') {
18
+ // result[key] = value === ('true' as any)
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ const config = createConfig({
24
+ regions: { type: 'string', values: 'multiple', description: 'Regions to deploy to' },
25
+ account: { type: 'string', values: 'single', description: 'AWS account to deploy to' },
26
+ ssl: { type: 'boolean', values: 'single', description: 'Enable SSL', character: 's' },
27
+ port: { type: 'number', values: 'single', description: 'Port to listen on' }
28
+ });
29
+ const args = {
30
+ regions: 'us-west-1',
31
+ account: '123456789012',
32
+ ssl: 'true',
33
+ port: '8080'
34
+ };
35
+ const parsed = parseArguments(config, args);
36
+ // TypeScript ensures correct types:
37
+ console.log(parsed.regions); // string
38
+ console.log(parsed.account); // string
39
+ console.log(parsed.ssl); // boolean
40
+ console.log(parsed.port); // number
41
+ //# sourceMappingURL=cli2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli2.js","sourceRoot":"","sources":["../../src/cli2.ts"],"names":[],"mappings":";AASA,SAAS,YAAY,CAA0C,MAAS;IACtE,OAAO,MAAM,CAAA;AACf,CAAC;AAcD,SAAS,cAAc,CACrB,MAAkB,EAClB,IAA4B,CAAC,kCAAkC;;IAE/D,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAY,CAAA;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,GAAW,CAAA;QACxD,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,MAAuB,CAAA;AAChC,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACpF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACtF,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;IACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;CAC7E,CAAC,CAAA;AAEF,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;CACb,CAAA;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAE3C,oCAAoC;AACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,UAAU;AAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,SAAS"}
@@ -0,0 +1,63 @@
1
+ type OptionConfig3 = {
2
+ type: 'string' | 'number' | 'boolean';
3
+ values: 'single' | 'multiple';
4
+ description: string;
5
+ character?: string;
6
+ };
7
+ type Config2<T extends Record<string, OptionConfig3>> = T;
8
+ type ParsedArgs<T extends Record<string, OptionConfig3>> = {
9
+ [K in keyof T]: T[K]['type'] extends 'string' ? T[K]['values'] extends 'single' ? string : string[] : T[K]['type'] extends 'number' ? number : T[K]['type'] extends 'boolean' ? boolean : never;
10
+ };
11
+ declare const config: {
12
+ regions: {
13
+ type: "string";
14
+ values: "multiple";
15
+ description: string;
16
+ };
17
+ account: {
18
+ type: "string";
19
+ values: "single";
20
+ description: string;
21
+ };
22
+ ssl: {
23
+ type: "boolean";
24
+ values: "single";
25
+ description: string;
26
+ character: string;
27
+ };
28
+ port: {
29
+ type: "number";
30
+ values: "single";
31
+ description: string;
32
+ };
33
+ };
34
+ declare const args: {
35
+ regions: string;
36
+ account: string;
37
+ ssl: string;
38
+ port: string;
39
+ };
40
+ declare const parsed: ParsedArgs<{
41
+ regions: {
42
+ type: "string";
43
+ values: "multiple";
44
+ description: string;
45
+ };
46
+ account: {
47
+ type: "string";
48
+ values: "single";
49
+ description: string;
50
+ };
51
+ ssl: {
52
+ type: "boolean";
53
+ values: "single";
54
+ description: string;
55
+ character: string;
56
+ };
57
+ port: {
58
+ type: "number";
59
+ values: "single";
60
+ description: string;
61
+ };
62
+ }>;
63
+ //# sourceMappingURL=cli3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli3.d.ts","sourceRoot":"","sources":["../../src/cli3.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;AAMzD,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACzC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,QAAQ,GAC7B,MAAM,GACN,MAAM,EAAE,GACV,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GAC3B,MAAM,GACN,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,SAAS,GAC5B,OAAO,GACP,KAAK;CACd,CAAA;AAwBD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAKV,CAAA;AAEF,QAAA,MAAM,IAAI;;;;;CAKT,CAAA;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;EAA+B,CAAA"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ function createConfig(config) {
3
+ return config;
4
+ }
5
+ function parseArguments(config, args // Simulating parsed CLI arguments
6
+ ) {
7
+ const result = {};
8
+ for (const key in config) {
9
+ const option = config[key];
10
+ const value = args[key];
11
+ if (option.type === 'string') {
12
+ result[key] = value;
13
+ }
14
+ else if (option.type === 'number') {
15
+ result[key] = value ? parseFloat(value) : NaN;
16
+ }
17
+ else if (option.type === 'boolean') {
18
+ // result[key] = value === ('true' as any)
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ const config = createConfig({
24
+ regions: { type: 'string', values: 'multiple', description: 'Regions to deploy to' },
25
+ account: { type: 'string', values: 'single', description: 'AWS account to deploy to' },
26
+ ssl: { type: 'boolean', values: 'single', description: 'Enable SSL', character: 's' },
27
+ port: { type: 'number', values: 'single', description: 'Port to listen on' }
28
+ });
29
+ const args = {
30
+ regions: 'us-west-1',
31
+ account: '123456789012',
32
+ ssl: 'true',
33
+ port: '8080'
34
+ };
35
+ const parsed = parseArguments(config, args);
36
+ // TypeScript ensures correct types:
37
+ console.log(parsed.regions); // string
38
+ console.log(parsed.account); // string
39
+ console.log(parsed.ssl); // boolean
40
+ console.log(parsed.port); // number
41
+ //# sourceMappingURL=cli3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli3.js","sourceRoot":"","sources":["../../src/cli3.ts"],"names":[],"mappings":";AASA,SAAS,YAAY,CAA0C,MAAS;IACtE,OAAO,MAAM,CAAA;AACf,CAAC;AAcD,SAAS,cAAc,CACrB,MAAkB,EAClB,IAA4B,CAAC,kCAAkC;;IAE/D,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAY,CAAA;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,GAAW,CAAA;QACxD,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,MAAuB,CAAA;AAChC,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACpF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACtF,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;IACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;CAC7E,CAAC,CAAA;AAEF,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;CACb,CAAA;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAE3C,oCAAoC;AACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,UAAU;AAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,SAAS"}
@@ -0,0 +1,13 @@
1
+ interface CliArguments {
2
+ command: string | undefined;
3
+ regions?: string[];
4
+ services?: string[];
5
+ }
6
+ interface ParsedCliArguments {
7
+ unrecognizedParams?: string[];
8
+ noParams?: boolean;
9
+ cliArguments?: CliArguments;
10
+ }
11
+ export declare function parseCliArguments(args: string[]): ParsedCliArguments;
12
+ export {};
13
+ //# sourceMappingURL=cliUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliUtils.d.ts","sourceRoot":"","sources":["../../src/cliUtils.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,UAAU,kBAAkB;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAyCpE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCliArguments = parseCliArguments;
4
+ const allowedArguments = new Set(['regions', 'services', 'accounts']);
5
+ function parseCliArguments(args) {
6
+ if (args.length == 0) {
7
+ return {
8
+ noParams: true
9
+ };
10
+ }
11
+ const firstArg = args[0];
12
+ let command = undefined;
13
+ let unrecognizedParams = [];
14
+ if (!firstArg.startsWith('--')) {
15
+ command = firstArg;
16
+ args = args.slice(1);
17
+ }
18
+ const cliArguments = {
19
+ command: command
20
+ };
21
+ let currentArgType;
22
+ for (let i = 0; i < args.length; i++) {
23
+ const arg = args[i];
24
+ if (arg.startsWith('--')) {
25
+ currentArgType = arg.slice(2);
26
+ if (!allowedArguments.has(currentArgType)) {
27
+ unrecognizedParams.push(arg);
28
+ currentArgType = undefined;
29
+ }
30
+ }
31
+ else {
32
+ if (currentArgType) {
33
+ cliArguments[currentArgType] = cliArguments[currentArgType] || [];
34
+ cliArguments[currentArgType].push(arg);
35
+ }
36
+ }
37
+ }
38
+ return {
39
+ cliArguments,
40
+ unrecognizedParams: unrecognizedParams.length > 0 ? unrecognizedParams : undefined
41
+ };
42
+ }
43
+ //# sourceMappingURL=cliUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliUtils.js","sourceRoot":"","sources":["../../src/cliUtils.ts"],"names":[],"mappings":";;AAcA,8CAyCC;AAvDD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAcrE,SAAgB,iBAAiB,CAAC,IAAc;IAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,IAAI;SACf,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,OAAO,GAAG,SAAS,CAAA;IACvB,IAAI,kBAAkB,GAAa,EAAE,CAAA;IACrC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,QAAQ,CAAA;QAClB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED,MAAM,YAAY,GAAiB;QACjC,OAAO,EAAE,OAAO;KACjB,CAAA;IAED,IAAI,cAAkD,CAAA;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAA2B,CAAA;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,cAAc,GAAG,SAAS,CAAA;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,cAAc,EAAE,CAAC;gBACnB,YAAY,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;gBACjE,YAAY,CAAC,cAAc,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY;QACZ,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;KACnF,CAAA;AACH,CAAC"}
@@ -0,0 +1,74 @@
1
+ interface AuthConfig {
2
+ /**
3
+ * The profile to use when authenticating with AWS. If not present, the default AWS SDK credential resolution chain will be used.
4
+ */
5
+ profile?: string;
6
+ role?: {
7
+ /**
8
+ * The path and name of the role to assume. Required if using a role.
9
+ */
10
+ pathAndName: 'path/role-name';
11
+ /**
12
+ * The account to assume the role in. Optional, if not present the account of the current principal will be used.
13
+ */
14
+ account?: string;
15
+ /**
16
+ * Optional, the external id to use when assuming the role.
17
+ */
18
+ externalId?: string;
19
+ /**
20
+ * Optional, the session name to use when assuming the role.
21
+ */
22
+ sessionName?: string;
23
+ };
24
+ }
25
+ export interface FileSystemStorageConfig {
26
+ type: 'file';
27
+ path: string;
28
+ }
29
+ export interface S3StorageConfig {
30
+ type: 's3';
31
+ bucket: string;
32
+ prefix?: string;
33
+ region: string;
34
+ endpoint?: string;
35
+ auth?: AuthConfig;
36
+ }
37
+ export type StorageConfig = FileSystemStorageConfig | S3StorageConfig;
38
+ interface BaseConfig {
39
+ regions?: {
40
+ included?: string[];
41
+ excluded?: string[];
42
+ };
43
+ services?: {
44
+ included?: string[];
45
+ excluded?: string[];
46
+ };
47
+ auth?: AuthConfig;
48
+ }
49
+ interface ServiceConfig extends BaseConfig {
50
+ endpoint?: string;
51
+ regionConfigs?: Record<string, Omit<ServiceConfig, 'regionConfigs'>>;
52
+ }
53
+ interface AccountConfig extends BaseConfig {
54
+ serviceConfigs?: Record<string, ServiceConfig>;
55
+ }
56
+ export interface TopLevelConfig extends BaseConfig {
57
+ name?: string;
58
+ iamDownloadVersion: string;
59
+ storage: StorageConfig;
60
+ auth?: AuthConfig;
61
+ accounts?: Record<string, AccountConfig>;
62
+ serviceConfigs?: Record<string, ServiceConfig>;
63
+ }
64
+ type ServicesForAccount = string[];
65
+ type RegionsForAccountService = string[];
66
+ interface ResolvedAccountServiceRegionConfig {
67
+ auth?: AuthConfig;
68
+ endpoint?: string;
69
+ }
70
+ export declare function servicesForAccount(account: string, configs: TopLevelConfig[], allServices: string[]): ServicesForAccount;
71
+ export declare function regionsForService(service: string, account: string, configs: TopLevelConfig[], allRegions: string[]): RegionsForAccountService;
72
+ export declare function accountServiceRegionConfig(service: string, account: string, region: string, configs: TopLevelConfig[]): ResolvedAccountServiceRegionConfig;
73
+ export {};
74
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,IAAI,CAAC,EAAE;QACL;;WAEG;QACH,WAAW,EAAE,gBAAgB,CAAA;QAE7B;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG,eAAe,CAAA;AAErE,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;IACD,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,UAAU,aAAc,SAAQ,UAAU;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAA;CACrE;AAED,UAAU,aAAc,SAAQ,UAAU;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC/C;AAED,KAAK,kBAAkB,GAAG,MAAM,EAAE,CAAA;AAClC,KAAK,wBAAwB,GAAG,MAAM,EAAE,CAAA;AAiBxC,UAAU,kCAAkC;IAC1C,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EAAE,EACzB,WAAW,EAAE,MAAM,EAAE,GACpB,kBAAkB,CA2BpB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,GACnB,wBAAwB,CA0C1B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EAAE,GACxB,kCAAkC,CAwDpC"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.servicesForAccount = servicesForAccount;
4
+ exports.regionsForService = regionsForService;
5
+ exports.accountServiceRegionConfig = accountServiceRegionConfig;
6
+ function servicesForAccount(account, configs, allServices) {
7
+ let services = allServices;
8
+ for (const config of configs) {
9
+ if (config.services?.included) {
10
+ services = config.services.included;
11
+ }
12
+ if (config.services?.excluded) {
13
+ services = services.filter((service) => !config.services.excluded?.includes(service));
14
+ }
15
+ const accountServices = config.accounts?.[account]?.services;
16
+ if (accountServices) {
17
+ if (accountServices.included) {
18
+ for (const service of accountServices.included) {
19
+ if (!services.includes(service)) {
20
+ services.push(service);
21
+ }
22
+ }
23
+ }
24
+ if (accountServices.excluded) {
25
+ services = services.filter((service) => !accountServices.excluded?.includes(service));
26
+ }
27
+ }
28
+ }
29
+ return services;
30
+ }
31
+ function regionsForService(service, account, configs, allRegions) {
32
+ let regions = allRegions;
33
+ for (const config of configs) {
34
+ if (config.regions?.included) {
35
+ regions = config.regions.included;
36
+ }
37
+ if (config.regions?.excluded) {
38
+ regions = regions.filter((region) => !config.regions.excluded?.includes(region));
39
+ }
40
+ const serviceConfig = config.serviceConfigs?.[service];
41
+ if (serviceConfig) {
42
+ if (serviceConfig.regions?.included) {
43
+ regions = serviceConfig.regions.included;
44
+ }
45
+ if (serviceConfig.regions?.excluded) {
46
+ regions = regions.filter((region) => !serviceConfig.regions.excluded?.includes(region));
47
+ }
48
+ }
49
+ const accountConfig = config.accounts?.[account];
50
+ if (accountConfig) {
51
+ if (accountConfig.regions?.included) {
52
+ regions = accountConfig.regions.included;
53
+ }
54
+ if (accountConfig.regions?.excluded) {
55
+ regions = regions.filter((region) => !accountConfig.regions.excluded?.includes(region));
56
+ }
57
+ const accountServices = accountConfig.serviceConfigs?.[service];
58
+ if (accountServices) {
59
+ if (accountServices.regions?.included) {
60
+ regions = accountServices.regions.included;
61
+ }
62
+ if (accountServices.regions?.excluded) {
63
+ regions = regions.filter((region) => !accountServices.regions.excluded?.includes(region));
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return regions;
69
+ }
70
+ function accountServiceRegionConfig(service, account, region, configs) {
71
+ let result = {};
72
+ for (const config of configs) {
73
+ if (config.auth) {
74
+ result.auth = config.auth;
75
+ }
76
+ const serviceConfig = config.serviceConfigs?.[service];
77
+ if (serviceConfig) {
78
+ if (serviceConfig.auth) {
79
+ result.auth = serviceConfig.auth;
80
+ }
81
+ if (serviceConfig.endpoint) {
82
+ result.endpoint = serviceConfig.endpoint;
83
+ }
84
+ const regionConfig = serviceConfig.regionConfigs?.[region];
85
+ if (regionConfig) {
86
+ if (regionConfig.auth) {
87
+ result.auth = regionConfig.auth;
88
+ }
89
+ if (regionConfig.endpoint) {
90
+ result.endpoint = regionConfig.endpoint;
91
+ }
92
+ }
93
+ }
94
+ const accountConfig = config.accounts?.[account];
95
+ if (accountConfig) {
96
+ if (accountConfig.auth) {
97
+ result.auth = accountConfig.auth;
98
+ }
99
+ const accountServiceConfig = accountConfig.serviceConfigs?.[service];
100
+ if (accountServiceConfig) {
101
+ if (accountServiceConfig.auth) {
102
+ result.auth = accountServiceConfig.auth;
103
+ }
104
+ if (accountServiceConfig.endpoint) {
105
+ result.endpoint = accountServiceConfig.endpoint;
106
+ }
107
+ const accountRegionConfig = accountServiceConfig.regionConfigs?.[region];
108
+ if (accountRegionConfig) {
109
+ if (accountRegionConfig.auth) {
110
+ result.auth = accountRegionConfig.auth;
111
+ }
112
+ if (accountRegionConfig.endpoint) {
113
+ result.endpoint = accountRegionConfig.endpoint;
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ return result;
120
+ }
121
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Create a default configuration file.
3
+ */
4
+ export declare function createDefaultConfiguration(): void;
5
+ //# sourceMappingURL=createConfigFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createConfigFile.d.ts","sourceRoot":"","sources":["../../../src/config/createConfigFile.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,0BAA0B,SAQzC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDefaultConfiguration = createDefaultConfiguration;
4
+ const fs_1 = require("fs");
5
+ const defaultConfig_js_1 = require("./defaultConfig.js");
6
+ /**
7
+ * Create a default configuration file.
8
+ */
9
+ function createDefaultConfiguration() {
10
+ if ((0, defaultConfig_js_1.defaultConfigExists)()) {
11
+ throw new Error('Configuration file already exists');
12
+ }
13
+ const configContent = (0, defaultConfig_js_1.getDefaultConfig)();
14
+ // Write the default configuration to a file
15
+ (0, fs_1.writeFileSync)((0, defaultConfig_js_1.fullDefaultConfigPath)(), configContent);
16
+ }
17
+ //# sourceMappingURL=createConfigFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createConfigFile.js","sourceRoot":"","sources":["../../../src/config/createConfigFile.ts"],"names":[],"mappings":";;AAMA,gEAQC;AAdD,2BAAkC;AAClC,yDAAiG;AAEjG;;GAEG;AACH,SAAgB,0BAA0B;IACxC,IAAI,IAAA,sCAAmB,GAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,mCAAgB,GAAE,CAAA;IACxC,4CAA4C;IAC5C,IAAA,kBAAa,EAAC,IAAA,wCAAqB,GAAE,EAAE,aAAa,CAAC,CAAA;AACvD,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare const defaultConfigFileName = "iam-download.jsonc";
2
+ /**
3
+ * Get the full path to the config file.
4
+ *
5
+ * @returns The full path to the config file.
6
+ */
7
+ export declare function fullDefaultConfigPath(): string;
8
+ /**
9
+ *
10
+ * @returns Whether the default config file exists
11
+ */
12
+ export declare function defaultConfigExists(): boolean;
13
+ export declare function getDefaultConfig(): string;
14
+ //# sourceMappingURL=defaultConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,uBAAuB,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAyDD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}