@cloud-copilot/iam-collect 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/README.md +21 -1
  2. package/dist/cjs/aws/ClientPool.d.ts +27 -0
  3. package/dist/cjs/aws/ClientPool.d.ts.map +1 -0
  4. package/dist/cjs/aws/ClientPool.js +52 -0
  5. package/dist/cjs/aws/ClientPool.js.map +1 -0
  6. package/dist/cjs/aws/auth.d.ts +16 -0
  7. package/dist/cjs/aws/auth.d.ts.map +1 -0
  8. package/dist/cjs/aws/auth.js +76 -0
  9. package/dist/cjs/aws/auth.js.map +1 -0
  10. package/dist/cjs/cli.js +46 -8
  11. package/dist/cjs/cli.js.map +1 -1
  12. package/dist/cjs/config/config.d.ts +22 -11
  13. package/dist/cjs/config/config.d.ts.map +1 -1
  14. package/dist/cjs/config/config.js +52 -7
  15. package/dist/cjs/config/config.js.map +1 -1
  16. package/dist/cjs/config/configFile.d.ts +16 -0
  17. package/dist/cjs/config/configFile.d.ts.map +1 -0
  18. package/dist/cjs/config/configFile.js +49 -0
  19. package/dist/cjs/config/configFile.js.map +1 -0
  20. package/dist/cjs/config/defaultConfig.d.ts.map +1 -1
  21. package/dist/cjs/config/defaultConfig.js +38 -1
  22. package/dist/cjs/config/defaultConfig.js.map +1 -1
  23. package/dist/cjs/download/download.d.ts +3 -0
  24. package/dist/cjs/download/download.d.ts.map +1 -0
  25. package/dist/cjs/download/download.js +67 -0
  26. package/dist/cjs/download/download.js.map +1 -0
  27. package/dist/cjs/persistence/AwsIamStore.d.ts +95 -0
  28. package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -0
  29. package/dist/cjs/persistence/AwsIamStore.js +3 -0
  30. package/dist/cjs/persistence/AwsIamStore.js.map +1 -0
  31. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +20 -0
  32. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -0
  33. package/dist/cjs/persistence/file/FileSystemAdapter.js +77 -0
  34. package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -0
  35. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
  36. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
  37. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +96 -0
  38. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -0
  39. package/dist/cjs/persistence/util.d.ts +28 -0
  40. package/dist/cjs/persistence/util.d.ts.map +1 -0
  41. package/dist/cjs/persistence/util.js +46 -0
  42. package/dist/cjs/persistence/util.js.map +1 -0
  43. package/dist/cjs/regions.d.ts +3 -0
  44. package/dist/cjs/regions.d.ts.map +1 -0
  45. package/dist/cjs/regions.js +15 -0
  46. package/dist/cjs/regions.js.map +1 -0
  47. package/dist/cjs/services.d.ts +3 -0
  48. package/dist/cjs/services.d.ts.map +1 -0
  49. package/dist/cjs/services.js +5 -0
  50. package/dist/cjs/services.js.map +1 -0
  51. package/dist/cjs/syncs/iam/authorizationDetails.d.ts +104 -0
  52. package/dist/cjs/syncs/iam/authorizationDetails.d.ts.map +1 -0
  53. package/dist/cjs/syncs/iam/authorizationDetails.js +490 -0
  54. package/dist/cjs/syncs/iam/authorizationDetails.js.map +1 -0
  55. package/dist/cjs/syncs/lambda/lambda.d.ts +3 -0
  56. package/dist/cjs/syncs/lambda/lambda.d.ts.map +1 -0
  57. package/dist/cjs/syncs/lambda/lambda.js +54 -0
  58. package/dist/cjs/syncs/lambda/lambda.js.map +1 -0
  59. package/dist/cjs/syncs/sync.d.ts +27 -0
  60. package/dist/cjs/syncs/sync.d.ts.map +1 -0
  61. package/dist/cjs/syncs/sync.js +16 -0
  62. package/dist/cjs/syncs/sync.js.map +1 -0
  63. package/dist/cjs/syncs/syncMap.d.ts +17 -0
  64. package/dist/cjs/syncs/syncMap.d.ts.map +1 -0
  65. package/dist/cjs/syncs/syncMap.js +51 -0
  66. package/dist/cjs/syncs/syncMap.js.map +1 -0
  67. package/dist/cjs/utils/arn.d.ts +26 -0
  68. package/dist/cjs/utils/arn.d.ts.map +1 -0
  69. package/dist/cjs/utils/arn.js +60 -0
  70. package/dist/cjs/utils/arn.js.map +1 -0
  71. package/dist/cjs/utils/client-tools.d.ts +15 -0
  72. package/dist/cjs/utils/client-tools.d.ts.map +1 -0
  73. package/dist/cjs/utils/client-tools.js +42 -0
  74. package/dist/cjs/utils/client-tools.js.map +1 -0
  75. package/dist/cjs/utils/strings.d.ts +8 -0
  76. package/dist/cjs/utils/strings.d.ts.map +1 -0
  77. package/dist/cjs/utils/strings.js +19 -0
  78. package/dist/cjs/utils/strings.js.map +1 -0
  79. package/dist/cjs/utils/types.d.ts +2 -0
  80. package/dist/cjs/utils/types.d.ts.map +1 -0
  81. package/dist/cjs/utils/types.js +7 -0
  82. package/dist/cjs/utils/types.js.map +1 -0
  83. package/dist/esm/aws/ClientPool.d.ts +27 -0
  84. package/dist/esm/aws/ClientPool.d.ts.map +1 -0
  85. package/dist/esm/aws/ClientPool.js +50 -0
  86. package/dist/esm/aws/ClientPool.js.map +1 -0
  87. package/dist/esm/aws/auth.d.ts +16 -0
  88. package/dist/esm/aws/auth.d.ts.map +1 -0
  89. package/dist/esm/aws/auth.js +71 -0
  90. package/dist/esm/aws/auth.js.map +1 -0
  91. package/dist/esm/cli.js +46 -8
  92. package/dist/esm/cli.js.map +1 -1
  93. package/dist/esm/config/config.d.ts +22 -11
  94. package/dist/esm/config/config.d.ts.map +1 -1
  95. package/dist/esm/config/config.js +50 -7
  96. package/dist/esm/config/config.js.map +1 -1
  97. package/dist/esm/config/configFile.d.ts +16 -0
  98. package/dist/esm/config/configFile.d.ts.map +1 -0
  99. package/dist/esm/config/configFile.js +45 -0
  100. package/dist/esm/config/configFile.js.map +1 -0
  101. package/dist/esm/config/defaultConfig.d.ts.map +1 -1
  102. package/dist/esm/config/defaultConfig.js +38 -1
  103. package/dist/esm/config/defaultConfig.js.map +1 -1
  104. package/dist/esm/download/download.d.ts +3 -0
  105. package/dist/esm/download/download.d.ts.map +1 -0
  106. package/dist/esm/download/download.js +64 -0
  107. package/dist/esm/download/download.js.map +1 -0
  108. package/dist/esm/persistence/AwsIamStore.d.ts +95 -0
  109. package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -0
  110. package/dist/esm/persistence/AwsIamStore.js +2 -0
  111. package/dist/esm/persistence/AwsIamStore.js.map +1 -0
  112. package/dist/esm/persistence/file/FileSystemAdapter.d.ts +20 -0
  113. package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -0
  114. package/dist/esm/persistence/file/FileSystemAdapter.js +73 -0
  115. package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -0
  116. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
  117. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
  118. package/dist/esm/persistence/file/FileSystemAwsIamStore.js +89 -0
  119. package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -0
  120. package/dist/esm/persistence/util.d.ts +28 -0
  121. package/dist/esm/persistence/util.d.ts.map +1 -0
  122. package/dist/esm/persistence/util.js +41 -0
  123. package/dist/esm/persistence/util.js.map +1 -0
  124. package/dist/esm/regions.d.ts +3 -0
  125. package/dist/esm/regions.d.ts.map +1 -0
  126. package/dist/esm/regions.js +12 -0
  127. package/dist/esm/regions.js.map +1 -0
  128. package/dist/esm/services.d.ts +3 -0
  129. package/dist/esm/services.d.ts.map +1 -0
  130. package/dist/esm/services.js +2 -0
  131. package/dist/esm/services.js.map +1 -0
  132. package/dist/esm/syncs/iam/authorizationDetails.d.ts +104 -0
  133. package/dist/esm/syncs/iam/authorizationDetails.d.ts.map +1 -0
  134. package/dist/esm/syncs/iam/authorizationDetails.js +478 -0
  135. package/dist/esm/syncs/iam/authorizationDetails.js.map +1 -0
  136. package/dist/esm/syncs/lambda/lambda.d.ts +3 -0
  137. package/dist/esm/syncs/lambda/lambda.d.ts.map +1 -0
  138. package/dist/esm/syncs/lambda/lambda.js +51 -0
  139. package/dist/esm/syncs/lambda/lambda.js.map +1 -0
  140. package/dist/esm/syncs/sync.d.ts +27 -0
  141. package/dist/esm/syncs/sync.d.ts.map +1 -0
  142. package/dist/esm/syncs/sync.js +13 -0
  143. package/dist/esm/syncs/sync.js.map +1 -0
  144. package/dist/esm/syncs/syncMap.d.ts +17 -0
  145. package/dist/esm/syncs/syncMap.d.ts.map +1 -0
  146. package/dist/esm/syncs/syncMap.js +47 -0
  147. package/dist/esm/syncs/syncMap.js.map +1 -0
  148. package/dist/esm/utils/arn.d.ts +26 -0
  149. package/dist/esm/utils/arn.d.ts.map +1 -0
  150. package/dist/esm/utils/arn.js +56 -0
  151. package/dist/esm/utils/arn.js.map +1 -0
  152. package/dist/esm/utils/client-tools.d.ts +15 -0
  153. package/dist/esm/utils/client-tools.d.ts.map +1 -0
  154. package/dist/esm/utils/client-tools.js +38 -0
  155. package/dist/esm/utils/client-tools.js.map +1 -0
  156. package/dist/esm/utils/strings.d.ts +8 -0
  157. package/dist/esm/utils/strings.d.ts.map +1 -0
  158. package/dist/esm/utils/strings.js +16 -0
  159. package/dist/esm/utils/strings.js.map +1 -0
  160. package/dist/esm/utils/types.d.ts +2 -0
  161. package/dist/esm/utils/types.d.ts.map +1 -0
  162. package/dist/esm/utils/types.js +4 -0
  163. package/dist/esm/utils/types.js.map +1 -0
  164. package/package.json +13 -1
  165. package/dist/cjs/cliUtils.d.ts +0 -13
  166. package/dist/cjs/cliUtils.d.ts.map +0 -1
  167. package/dist/cjs/cliUtils.js +0 -43
  168. package/dist/cjs/cliUtils.js.map +0 -1
  169. package/dist/esm/cliUtils.d.ts +0 -13
  170. package/dist/esm/cliUtils.d.ts.map +0 -1
  171. package/dist/esm/cliUtils.js +0 -40
  172. package/dist/esm/cliUtils.js.map +0 -1
package/dist/esm/cli.js CHANGED
@@ -1,15 +1,47 @@
1
1
  #!/usr/bin/env node
2
- import { parseCliArguments } from './cliUtils.js';
2
+ import { parseCliArguments } from '@cloud-copilot/cli';
3
+ import { loadConfigFiles } from './config/configFile.js';
3
4
  import { createDefaultConfiguration } from './config/createConfigFile.js';
4
5
  import { defaultConfigExists } from './config/defaultConfig.js';
6
+ import { downloadData } from './download/download.js';
5
7
  const rawArgs = process.argv.slice(2); // Ignore the first two elements
6
- const parsedArgs = parseCliArguments(rawArgs);
7
- if (parsedArgs.unrecognizedParams) {
8
- console.error(`Unrecognized parameters: ${parsedArgs.unrecognizedParams.join(', ')}`);
9
- process.exit(1);
10
- }
11
- const command = parsedArgs.cliArguments?.command || 'download';
12
- if (command === 'init') {
8
+ // const parsedArgs = parseCliArguments(rawArgs)
9
+ const cli = parseCliArguments('iam-collect', {
10
+ init: {
11
+ description: 'Initialize the iam-collect configuration file',
12
+ options: {}
13
+ },
14
+ download: {
15
+ description: 'Download IAM data',
16
+ options: {
17
+ configFiles: {
18
+ type: 'string',
19
+ description: 'The configuration files to use',
20
+ values: 'multiple'
21
+ },
22
+ accountIds: {
23
+ type: 'string',
24
+ description: 'The account IDs to download from',
25
+ values: 'multiple'
26
+ },
27
+ regions: {
28
+ type: 'string',
29
+ description: 'The regions to download from',
30
+ values: 'multiple'
31
+ },
32
+ services: {
33
+ type: 'string',
34
+ description: 'The services to download',
35
+ values: 'multiple'
36
+ }
37
+ }
38
+ }
39
+ }, {}, {
40
+ envPrefix: 'IAM_COLLECT',
41
+ showHelpIfNoArgs: true,
42
+ requireSubcommand: true
43
+ });
44
+ if (cli.subcommand === 'init') {
13
45
  if (defaultConfigExists()) {
14
46
  console.error('Configuration file already exists');
15
47
  process.exit(1);
@@ -18,4 +50,10 @@ if (command === 'init') {
18
50
  createDefaultConfiguration();
19
51
  process.exit(0);
20
52
  }
53
+ else if (cli.subcommand === 'download') {
54
+ const defaultConfig = './iam-collect.jsonc';
55
+ const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
56
+ const configs = loadConfigFiles(configFiles);
57
+ downloadData(configs, cli.args.accountIds, cli.args.regions, cli.args.services);
58
+ }
21
59
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;AACtE,MAAM,UAAU,GAAG,iBAAiB,CAAC,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,mBAAmB,EAAE,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,0BAA0B,EAAE,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;AACtE,gDAAgD;AAEhD,MAAM,GAAG,GAAG,iBAAiB,CAC3B,aAAa,EACb;IACE,IAAI,EAAE;QACJ,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,EAAE;KACZ;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE;YACP,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;gBAC7C,MAAM,EAAE,UAAU;aACnB;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;gBAC/C,MAAM,EAAE,UAAU;aACnB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;gBAC3C,MAAM,EAAE,UAAU;aACnB;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;gBACvC,MAAM,EAAE,UAAU;aACnB;SACF;KACF;CACF,EACD,EAAE,EACF;IACE,SAAS,EAAE,aAAa;IACxB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;CACxB,CACF,CAAA;AAED,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;IAC9B,IAAI,mBAAmB,EAAE,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,0BAA0B,EAAE,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;KAAM,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,qBAAqB,CAAA;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IAC7F,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;IAC5C,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACjF,CAAC"}
@@ -1,4 +1,5 @@
1
- interface AuthConfig {
1
+ import { AwsService } from '../services.js';
2
+ export interface AuthConfig {
2
3
  /**
3
4
  * The profile to use when authenticating with AWS. If not present, the default AWS SDK credential resolution chain will be used.
4
5
  */
@@ -7,11 +8,7 @@ interface AuthConfig {
7
8
  /**
8
9
  * The path and name of the role to assume. Required if using a role.
9
10
  */
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;
11
+ pathAndName: string;
15
12
  /**
16
13
  * Optional, the external id to use when assuming the role.
17
14
  */
@@ -32,7 +29,9 @@ export interface S3StorageConfig {
32
29
  prefix?: string;
33
30
  region: string;
34
31
  endpoint?: string;
35
- auth?: AuthConfig;
32
+ auth?: AuthConfig & {
33
+ accountId: string;
34
+ };
36
35
  }
37
36
  export type StorageConfig = FileSystemStorageConfig | S3StorageConfig;
38
37
  interface BaseConfig {
@@ -56,19 +55,31 @@ interface AccountConfig extends BaseConfig {
56
55
  export interface TopLevelConfig extends BaseConfig {
57
56
  name?: string;
58
57
  iamCollectVersion: string;
59
- storage: StorageConfig;
58
+ storage?: StorageConfig;
60
59
  auth?: AuthConfig;
61
60
  accounts?: Record<string, AccountConfig>;
62
61
  serviceConfigs?: Record<string, ServiceConfig>;
63
62
  }
64
- type ServicesForAccount = string[];
63
+ type ServicesForAccount = AwsService[];
65
64
  type RegionsForAccountService = string[];
66
- interface ResolvedAccountServiceRegionConfig {
65
+ export interface ResolvedAccountServiceRegionConfig {
66
+ accountId: string;
67
+ service: string;
68
+ region: string;
67
69
  auth?: AuthConfig;
68
70
  endpoint?: string;
69
71
  }
70
72
  export declare function servicesForAccount(account: string, configs: TopLevelConfig[], allServices: string[]): ServicesForAccount;
71
73
  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;
74
+ export declare function accountServiceRegionConfig(service: string, accountId: string, region: string, configs: TopLevelConfig[]): ResolvedAccountServiceRegionConfig;
75
+ /**
76
+ * Get the auth config for a specific account
77
+ *
78
+ * @param accountId the account id to get the auth config for
79
+ * @param configs the configs to search
80
+ * @returns the auth config for the account, or undefined if not found
81
+ */
82
+ export declare function getAccountAuthConfig(accountId: string, configs: TopLevelConfig[]): AuthConfig | undefined;
83
+ export declare function getStorageConfig(configs: TopLevelConfig[]): StorageConfig | undefined;
73
84
  export {};
74
85
  //# sourceMappingURL=config.d.ts.map
@@ -1 +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,iBAAiB,EAAE,MAAM,CAAA;IACzB,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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -62,8 +62,20 @@ export function regionsForService(service, account, configs, allRegions) {
62
62
  }
63
63
  return regions;
64
64
  }
65
- export function accountServiceRegionConfig(service, account, region, configs) {
66
- let result = {};
65
+ // export function defaultStsRegion(configs: TopLevelConfig[]): string {
66
+ // for (const config of configs) {
67
+ // if (config.regions?.included) {
68
+ // return config.regions.included[0]
69
+ // }
70
+ // }
71
+ // return 'us-east-1'
72
+ // }
73
+ export function accountServiceRegionConfig(service, accountId, region, configs) {
74
+ let result = {
75
+ accountId: accountId,
76
+ service,
77
+ region
78
+ };
67
79
  for (const config of configs) {
68
80
  if (config.auth) {
69
81
  result.auth = config.auth;
@@ -71,7 +83,7 @@ export function accountServiceRegionConfig(service, account, region, configs) {
71
83
  const serviceConfig = config.serviceConfigs?.[service];
72
84
  if (serviceConfig) {
73
85
  if (serviceConfig.auth) {
74
- result.auth = serviceConfig.auth;
86
+ result.auth = { ...result.auth, ...serviceConfig.auth };
75
87
  }
76
88
  if (serviceConfig.endpoint) {
77
89
  result.endpoint = serviceConfig.endpoint;
@@ -79,14 +91,14 @@ export function accountServiceRegionConfig(service, account, region, configs) {
79
91
  const regionConfig = serviceConfig.regionConfigs?.[region];
80
92
  if (regionConfig) {
81
93
  if (regionConfig.auth) {
82
- result.auth = regionConfig.auth;
94
+ result.auth = { ...result.auth, ...regionConfig.auth };
83
95
  }
84
96
  if (regionConfig.endpoint) {
85
97
  result.endpoint = regionConfig.endpoint;
86
98
  }
87
99
  }
88
100
  }
89
- const accountConfig = config.accounts?.[account];
101
+ const accountConfig = config.accounts?.[accountId];
90
102
  if (accountConfig) {
91
103
  if (accountConfig.auth) {
92
104
  result.auth = accountConfig.auth;
@@ -94,7 +106,7 @@ export function accountServiceRegionConfig(service, account, region, configs) {
94
106
  const accountServiceConfig = accountConfig.serviceConfigs?.[service];
95
107
  if (accountServiceConfig) {
96
108
  if (accountServiceConfig.auth) {
97
- result.auth = accountServiceConfig.auth;
109
+ result.auth = { ...result.auth, ...accountServiceConfig.auth };
98
110
  }
99
111
  if (accountServiceConfig.endpoint) {
100
112
  result.endpoint = accountServiceConfig.endpoint;
@@ -102,7 +114,7 @@ export function accountServiceRegionConfig(service, account, region, configs) {
102
114
  const accountRegionConfig = accountServiceConfig.regionConfigs?.[region];
103
115
  if (accountRegionConfig) {
104
116
  if (accountRegionConfig.auth) {
105
- result.auth = accountRegionConfig.auth;
117
+ result.auth = { ...result.auth, ...accountRegionConfig.auth };
106
118
  }
107
119
  if (accountRegionConfig.endpoint) {
108
120
  result.endpoint = accountRegionConfig.endpoint;
@@ -113,4 +125,35 @@ export function accountServiceRegionConfig(service, account, region, configs) {
113
125
  }
114
126
  return result;
115
127
  }
128
+ /**
129
+ * Get the auth config for a specific account
130
+ *
131
+ * @param accountId the account id to get the auth config for
132
+ * @param configs the configs to search
133
+ * @returns the auth config for the account, or undefined if not found
134
+ */
135
+ export function getAccountAuthConfig(accountId, configs) {
136
+ let result = undefined;
137
+ for (const config of configs) {
138
+ if (config.auth) {
139
+ result = config.auth;
140
+ }
141
+ const accountConfig = config.accounts?.[accountId];
142
+ if (accountConfig?.auth) {
143
+ result = { ...(result || {}), ...accountConfig.auth };
144
+ }
145
+ }
146
+ return result;
147
+ }
148
+ export function getStorageConfig(configs) {
149
+ const reverseConfigs = [...configs].reverse();
150
+ // Iterate through the configs to find the first storage config
151
+ for (const config of reverseConfigs) {
152
+ if (config.storage) {
153
+ return config.storage;
154
+ }
155
+ }
156
+ // Return undefined if no storage config is found
157
+ return undefined;
158
+ }
116
159
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { TopLevelConfig } from './config.js';
2
+ /**
3
+ * Load config files from the given paths
4
+ *
5
+ * @param paths the paths to the config files
6
+ * @returns the loaded config files
7
+ */
8
+ export declare function loadConfigFiles(paths: string[]): TopLevelConfig[];
9
+ /**
10
+ * Load a config file from the given path
11
+ *
12
+ * @param path the path to the config file
13
+ * @returns the loaded config file
14
+ */
15
+ export declare function loadConfigFile(path: string): TopLevelConfig;
16
+ //# sourceMappingURL=configFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFile.d.ts","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAW5C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAK3D"}
@@ -0,0 +1,45 @@
1
+ import { readFileSync } from 'fs';
2
+ import { parse } from 'jsonc-parser';
3
+ import { resolve } from 'path';
4
+ /**
5
+ * Gets the current directory the process is running in
6
+ *
7
+ * @returns the current directory
8
+ */
9
+ function getCurrentDirectory() {
10
+ return process.cwd();
11
+ }
12
+ /**
13
+ * Load config files from the given paths
14
+ *
15
+ * @param paths the paths to the config files
16
+ * @returns the loaded config files
17
+ */
18
+ export function loadConfigFiles(paths) {
19
+ return paths.map(loadConfigFile);
20
+ }
21
+ /**
22
+ * Load a config file from the given path
23
+ *
24
+ * @param path the path to the config file
25
+ * @returns the loaded config file
26
+ */
27
+ export function loadConfigFile(path) {
28
+ const absPath = getAbsolutePath(path);
29
+ const contents = readFileSync(absPath, 'utf-8');
30
+ const parsed = parse(contents);
31
+ return parsed;
32
+ }
33
+ /**
34
+ * Get the absolute path to a configuration file
35
+ *
36
+ * @param path - The path to the configuration file
37
+ * @returns the absolute path to the configuration file
38
+ */
39
+ function getAbsolutePath(path) {
40
+ if (path.startsWith('.')) {
41
+ return resolve(getCurrentDirectory(), path);
42
+ }
43
+ return resolve(path);
44
+ }
45
+ //# sourceMappingURL=configFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B;;;;GAIG;AACH,SAAS,mBAAmB;IAC1B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAExD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAyDD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
1
+ {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAExD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AA8FD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
@@ -27,7 +27,7 @@ const defaultConfig = `
27
27
  "storage": {
28
28
  "type": "file",
29
29
  //If this starts with a '.', it is relative to the config file, otherwise it is an absolute path.
30
- "rootPath": "./"
30
+ "path": "./collect"
31
31
  }
32
32
 
33
33
  /*
@@ -41,10 +41,47 @@ const defaultConfig = `
41
41
  //Optional auth configuration, see https://github.com/cloud-copilot/iam-collect/docs/Authentication.md
42
42
  "auth": {
43
43
  //The type of authentication to use
44
+ // Can include accountId
45
+ "accountId": "123456789012"
44
46
  }
45
47
  },
46
48
  */
47
49
 
50
+ /*
51
+ Optionally specify separate configurations for accounts:
52
+ "accounts": {
53
+ "123456789012": {
54
+ //Optional auth for the account:
55
+ "auth": {
56
+ //The type of authentication to use
57
+ },
58
+ "regions": {
59
+ //Optional regions to include, if empty all regions are included
60
+ // "included": ["us-east-1", "us-west-1"],
61
+ //Optional regions to exclude, if empty no regions are excluded. You can use it with included, but that wouldn't make much sense.
62
+ // "excluded": ["us-west-2"]
63
+ },
64
+
65
+ "serviceConfigs" : {
66
+ "s3": {
67
+ "endpoint": "https://s3.us-west-2.amazonaws.com", // Optional endpoint if using a specific VPC endpoint
68
+ "auth": {
69
+ //Override auth for a specific service
70
+ }
71
+ regionConfigs: {
72
+ "us-west-1": {
73
+ //Optional configuration for the region
74
+ endpoint: "https://s3.us-west-1.amazonaws.com", // Optional endpoint if using a specific VPC endpoint
75
+ }
76
+ }
77
+ }
78
+ }
79
+
80
+
81
+ }
82
+
83
+ */
84
+
48
85
  // Optional block, by default all regions returned by ec2:DescribeRegions with 'opt-in-not-required' or 'opted-in' are included
49
86
  // If regions are specified in the CLI, this is ignored
50
87
  // "regions": {
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDrB,CAAA;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0FrB,CAAA;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TopLevelConfig } from '../config/config.js';
2
+ export declare function downloadData(configs: TopLevelConfig[], accountIds: string[], regions: string[], services: string[]): Promise<void>;
3
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,cAAc,EACf,MAAM,qBAAqB,CAAA;AAO5B,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAgEf"}
@@ -0,0 +1,64 @@
1
+ import { getCredentials, getDefaultCredentials, getTokenInfo } from '../aws/auth.js';
2
+ import { accountServiceRegionConfig, getAccountAuthConfig, getStorageConfig, regionsForService, servicesForAccount } from '../config/config.js';
3
+ import { FileSystemAwsIamStore } from '../persistence/file/FileSystemAwsIamStore.js';
4
+ import { getEnabledRegions } from '../regions.js';
5
+ import { allServices } from '../services.js';
6
+ import { getGlobalSyncsForService, getRegionalSyncsForService } from '../syncs/syncMap.js';
7
+ export async function downloadData(configs, accountIds, regions, services) {
8
+ if (accountIds.length === 0) {
9
+ const defaultCredentials = await getDefaultCredentials();
10
+ const tokenInfo = await getTokenInfo(defaultCredentials);
11
+ accountIds = [tokenInfo.accountId];
12
+ }
13
+ const storageConfig = getStorageConfig(configs);
14
+ if (!storageConfig) {
15
+ throw new Error('No storage configuration found. Cannot download data.');
16
+ }
17
+ for (const accountId of accountIds) {
18
+ console.log(`Downloading data for account ${accountId}`);
19
+ const authForAccount = getAccountAuthConfig(accountId, configs);
20
+ const credentials = await getCredentials(accountId, authForAccount);
21
+ let enabledRegions = [];
22
+ if (regions.length === 0) {
23
+ enabledRegions = await getEnabledRegions(credentials);
24
+ // console.log(`Enabled regions for account ${accountId}:`, enabledRegions)
25
+ }
26
+ const storage = createStorageClient(storageConfig, credentials.partition);
27
+ if (services.length === 0) {
28
+ services = allServices;
29
+ }
30
+ const enabledServices = servicesForAccount(accountId, configs, services);
31
+ for (const service of enabledServices) {
32
+ console.log(`Service ${service} for account ${accountId}`);
33
+ const serviceRegions = regionsForService(service, accountId, configs, enabledRegions);
34
+ //Go through global syncs for the service
35
+ const globalSyncs = getGlobalSyncsForService(service);
36
+ const globalRegion = serviceRegions.at(0);
37
+ const globalConfig = accountServiceRegionConfig(service, accountId, globalRegion, configs);
38
+ const globalCredentials = await getCredentials(accountId, globalConfig.auth);
39
+ for (const globalSync of globalSyncs) {
40
+ await globalSync.execute(accountId, globalRegion, globalCredentials, storage, globalConfig.endpoint);
41
+ }
42
+ //Go through regional syncs for the service
43
+ for (const region of serviceRegions) {
44
+ console.log(`Service ${service} for account ${accountId} in region ${region}`);
45
+ const regionalSyncs = getRegionalSyncsForService(service);
46
+ if (regionalSyncs.length === 0) {
47
+ continue;
48
+ }
49
+ const asrConfig = accountServiceRegionConfig(service, accountId, region, configs);
50
+ const regionalCredentials = await getCredentials(accountId, asrConfig.auth);
51
+ for (const sync of regionalSyncs) {
52
+ await sync.execute(accountId, region, regionalCredentials, storage, asrConfig.endpoint);
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ function createStorageClient(storageConfig, partition) {
59
+ if (storageConfig.type === 'file') {
60
+ return new FileSystemAwsIamStore(storageConfig.path, partition);
61
+ }
62
+ throw new Error(`Unsupported storage type: ${storageConfig.type}. Supported types are: file.`);
63
+ }
64
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * The parts of the a resource type that can be used for categories.
3
+ */
4
+ export interface ResourceTypeParts {
5
+ /**
6
+ * The AWS partition (e.g., "aws", "aws-cn", "aws-gov").
7
+ */
8
+ partition?: string;
9
+ /**
10
+ * Optional AWS account ID. This can be used to specify a particular account.
11
+ */
12
+ account?: string;
13
+ /**
14
+ * The AWS service (e.g., "iam", "s3", "ec2").
15
+ */
16
+ service: string;
17
+ /**
18
+ * For regional services, this should be specified.
19
+ */
20
+ region?: string;
21
+ /**
22
+ * The type of resource being referenced (e.g., "roles", "users", "buckets").
23
+ *
24
+ * Optional for for legacy resource types like s3 buckets or sqs queues where the resource type is not explicitly defined in the ARN.
25
+ */
26
+ resourceType?: string;
27
+ }
28
+ /**
29
+ * An interface for persisting AWS resource metadata.
30
+ * Implementations can be backed by S3 or the local file system.
31
+ */
32
+ export interface AwsIamStore {
33
+ /**
34
+ * Saves metadata for a given AWS resource.
35
+ *
36
+ * If the data is any form of empty content (undefined, null, empty string, empty object, or empty array)
37
+ * then the data will not be persisted and the existing metadata for that key will be deleted instead.
38
+ *
39
+ * @param accountId - The AWS account ID where the resource exists.
40
+ * @param arn - The ARN of the resource.
41
+ * @param metadataType - A key representing the metadata type (e.g., "trust-policy", "inline-policies").
42
+ * @param data - The metadata content to save (as a string or Buffer).
43
+ */
44
+ saveResourceMetadata(accountId: string, arn: string, metadataType: string, data: string | any): Promise<void>;
45
+ /**
46
+ * Retrieves a list of metadata types for a given AWS resource.
47
+ *
48
+ * @param accountId - The AWS account ID where the resource exists.
49
+ * @param arn - The ARN of the resource.
50
+ * @returns An array of metadata types (e.g., ["trust-policy", "inline-policies"]).
51
+ */
52
+ listResourceMetadata(accountId: string, arn: string): Promise<string[]>;
53
+ /**
54
+ * Retrieves metadata for a given AWS resource.
55
+ *
56
+ * @param accountId - The AWS account ID where the resource exists.
57
+ * @param arn - The ARN of the resource.
58
+ * @param metadataType - The key representing the metadata type.
59
+ * @returns The content of the metadata, as a string.
60
+ */
61
+ getResourceMetadata<T, D extends T>(accountId: string, arn: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
62
+ /**
63
+ * Deletes metadata for a given AWS resource.
64
+ *
65
+ * @param accountId - The AWS account ID where the resource exists.
66
+ * @param arn - The ARN of the resource.
67
+ * @param metadataType - The metadata type to delete.
68
+ */
69
+ deleteResourceMetadata(accountId: string, arn: string, metadataType: string): Promise<void>;
70
+ /**
71
+ * Deletes all data for a given AWS resource
72
+ *
73
+ * @param accountId - The AWS account ID where the resource exists.
74
+ * @param arn - The ARN of the resource.
75
+ */
76
+ deleteResource(accountId: string, arn: string): Promise<void>;
77
+ /**
78
+ * Lists resources based on partition, account, service, region, and resource type.
79
+ *
80
+ * @param accountId - The AWS account ID to list resources for.
81
+ * @param options - the resource type parts to list resources for.
82
+ * @returns A list of resource identifiers (e.g., role names or ARNs).
83
+ */
84
+ listResources(accountId: string, options: ResourceTypeParts): Promise<string[]>;
85
+ /**
86
+ * Synchronizes the list of stored resources with the provided list.
87
+ * This method can be used to remove resources that no longer exist in the account.
88
+ *
89
+ * @param accountId - The AWS account ID to list resources for.
90
+ * @param options - the resource type parts to sync in advance
91
+ * @param desiredResources - The list of resource arns that should exist.
92
+ */
93
+ syncResourceList(accountId: string, options: ResourceTypeParts, desiredResources: string[]): Promise<void>;
94
+ }
95
+ //# sourceMappingURL=AwsIamStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsIamStore.d.ts","sourceRoot":"","sources":["../../../src/persistence/AwsIamStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;OAUG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GAAG,GAAG,GACjB,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAEvE;;;;;;;OAOG;IACH,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAChC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,CAAC,GACf,OAAO,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAA;IAEnD;;;;;;OAMG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3F;;;;;OAKG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7D;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAE/E;;;;;;;OAOG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AwsIamStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsIamStore.js","sourceRoot":"","sources":["../../../src/persistence/AwsIamStore.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ export declare class FileSystemAdapter {
2
+ writeFile(filePath: string, data: string | Buffer): Promise<void>;
3
+ /**
4
+ * Read the contents of a file. If the file does not exist, return undefined.
5
+ *
6
+ * @param filePath The path to the file to read
7
+ * @returns The contents of the file as a string, or undefined if the file does not exist.
8
+ */
9
+ readFile(filePath: string): Promise<string | undefined>;
10
+ deleteFile(filePath: string): Promise<void>;
11
+ deleteDirectory(dirPath: string): Promise<void>;
12
+ /**
13
+ * List the contents of a directory. Will return the names of the subdirectories and files without the full path.
14
+ *
15
+ * @param dirPath The path to the directory to list
16
+ * @returns An array of strings representing the names of the subdirectories or files in the specified directory.
17
+ */
18
+ listDirectory(dirPath: string): Promise<string[]>;
19
+ }
20
+ //# sourceMappingURL=FileSystemAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystemAdapter.d.ts","sourceRoot":"","sources":["../../../../src/persistence/file/FileSystemAdapter.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAiB;IACtB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvE;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUvD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAmBxD"}