@cloud-copilot/iam-collect 0.1.1 → 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 (202) hide show
  1. package/README.md +28 -6
  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 +23 -12
  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 +1 -1
  21. package/dist/cjs/config/defaultConfig.d.ts.map +1 -1
  22. package/dist/cjs/config/defaultConfig.js +43 -6
  23. package/dist/cjs/config/defaultConfig.js.map +1 -1
  24. package/dist/cjs/config/packageVersion.d.ts +1 -1
  25. package/dist/cjs/config/packageVersion.d.ts.map +1 -1
  26. package/dist/cjs/config/packageVersion.js +2 -2
  27. package/dist/cjs/config/packageVersion.js.map +1 -1
  28. package/dist/cjs/download/download.d.ts +3 -0
  29. package/dist/cjs/download/download.d.ts.map +1 -0
  30. package/dist/cjs/download/download.js +67 -0
  31. package/dist/cjs/download/download.js.map +1 -0
  32. package/dist/cjs/persistence/AwsIamStore.d.ts +95 -0
  33. package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -0
  34. package/dist/cjs/persistence/AwsIamStore.js +3 -0
  35. package/dist/cjs/persistence/AwsIamStore.js.map +1 -0
  36. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +20 -0
  37. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -0
  38. package/dist/cjs/persistence/file/FileSystemAdapter.js +77 -0
  39. package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -0
  40. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
  41. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
  42. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +96 -0
  43. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -0
  44. package/dist/cjs/persistence/util.d.ts +28 -0
  45. package/dist/cjs/persistence/util.d.ts.map +1 -0
  46. package/dist/cjs/persistence/util.js +46 -0
  47. package/dist/cjs/persistence/util.js.map +1 -0
  48. package/dist/cjs/regions.d.ts +3 -0
  49. package/dist/cjs/regions.d.ts.map +1 -0
  50. package/dist/cjs/regions.js +15 -0
  51. package/dist/cjs/regions.js.map +1 -0
  52. package/dist/cjs/services.d.ts +3 -0
  53. package/dist/cjs/services.d.ts.map +1 -0
  54. package/dist/cjs/services.js +5 -0
  55. package/dist/cjs/services.js.map +1 -0
  56. package/dist/cjs/syncs/iam/authorizationDetails.d.ts +104 -0
  57. package/dist/cjs/syncs/iam/authorizationDetails.d.ts.map +1 -0
  58. package/dist/cjs/syncs/iam/authorizationDetails.js +490 -0
  59. package/dist/cjs/syncs/iam/authorizationDetails.js.map +1 -0
  60. package/dist/cjs/syncs/lambda/lambda.d.ts +3 -0
  61. package/dist/cjs/syncs/lambda/lambda.d.ts.map +1 -0
  62. package/dist/cjs/syncs/lambda/lambda.js +54 -0
  63. package/dist/cjs/syncs/lambda/lambda.js.map +1 -0
  64. package/dist/cjs/syncs/sync.d.ts +27 -0
  65. package/dist/cjs/syncs/sync.d.ts.map +1 -0
  66. package/dist/cjs/syncs/sync.js +16 -0
  67. package/dist/cjs/syncs/sync.js.map +1 -0
  68. package/dist/cjs/syncs/syncMap.d.ts +17 -0
  69. package/dist/cjs/syncs/syncMap.d.ts.map +1 -0
  70. package/dist/cjs/syncs/syncMap.js +51 -0
  71. package/dist/cjs/syncs/syncMap.js.map +1 -0
  72. package/dist/cjs/utils/arn.d.ts +26 -0
  73. package/dist/cjs/utils/arn.d.ts.map +1 -0
  74. package/dist/cjs/utils/arn.js +60 -0
  75. package/dist/cjs/utils/arn.js.map +1 -0
  76. package/dist/cjs/utils/client-tools.d.ts +15 -0
  77. package/dist/cjs/utils/client-tools.d.ts.map +1 -0
  78. package/dist/cjs/utils/client-tools.js +42 -0
  79. package/dist/cjs/utils/client-tools.js.map +1 -0
  80. package/dist/cjs/utils/strings.d.ts +8 -0
  81. package/dist/cjs/utils/strings.d.ts.map +1 -0
  82. package/dist/cjs/utils/strings.js +19 -0
  83. package/dist/cjs/utils/strings.js.map +1 -0
  84. package/dist/cjs/utils/types.d.ts +2 -0
  85. package/dist/cjs/utils/types.d.ts.map +1 -0
  86. package/dist/cjs/utils/types.js +7 -0
  87. package/dist/cjs/utils/types.js.map +1 -0
  88. package/dist/esm/aws/ClientPool.d.ts +27 -0
  89. package/dist/esm/aws/ClientPool.d.ts.map +1 -0
  90. package/dist/esm/aws/ClientPool.js +50 -0
  91. package/dist/esm/aws/ClientPool.js.map +1 -0
  92. package/dist/esm/aws/auth.d.ts +16 -0
  93. package/dist/esm/aws/auth.d.ts.map +1 -0
  94. package/dist/esm/aws/auth.js +71 -0
  95. package/dist/esm/aws/auth.js.map +1 -0
  96. package/dist/esm/cli.js +46 -8
  97. package/dist/esm/cli.js.map +1 -1
  98. package/dist/esm/config/config.d.ts +23 -12
  99. package/dist/esm/config/config.d.ts.map +1 -1
  100. package/dist/esm/config/config.js +50 -7
  101. package/dist/esm/config/config.js.map +1 -1
  102. package/dist/esm/config/configFile.d.ts +16 -0
  103. package/dist/esm/config/configFile.d.ts.map +1 -0
  104. package/dist/esm/config/configFile.js +45 -0
  105. package/dist/esm/config/configFile.js.map +1 -0
  106. package/dist/esm/config/defaultConfig.d.ts +1 -1
  107. package/dist/esm/config/defaultConfig.d.ts.map +1 -1
  108. package/dist/esm/config/defaultConfig.js +44 -7
  109. package/dist/esm/config/defaultConfig.js.map +1 -1
  110. package/dist/esm/config/packageVersion.d.ts +1 -1
  111. package/dist/esm/config/packageVersion.d.ts.map +1 -1
  112. package/dist/esm/config/packageVersion.js +1 -1
  113. package/dist/esm/config/packageVersion.js.map +1 -1
  114. package/dist/esm/download/download.d.ts +3 -0
  115. package/dist/esm/download/download.d.ts.map +1 -0
  116. package/dist/esm/download/download.js +64 -0
  117. package/dist/esm/download/download.js.map +1 -0
  118. package/dist/esm/persistence/AwsIamStore.d.ts +95 -0
  119. package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -0
  120. package/dist/esm/persistence/AwsIamStore.js +2 -0
  121. package/dist/esm/persistence/AwsIamStore.js.map +1 -0
  122. package/dist/esm/persistence/file/FileSystemAdapter.d.ts +20 -0
  123. package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -0
  124. package/dist/esm/persistence/file/FileSystemAdapter.js +73 -0
  125. package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -0
  126. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
  127. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
  128. package/dist/esm/persistence/file/FileSystemAwsIamStore.js +89 -0
  129. package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -0
  130. package/dist/esm/persistence/util.d.ts +28 -0
  131. package/dist/esm/persistence/util.d.ts.map +1 -0
  132. package/dist/esm/persistence/util.js +41 -0
  133. package/dist/esm/persistence/util.js.map +1 -0
  134. package/dist/esm/regions.d.ts +3 -0
  135. package/dist/esm/regions.d.ts.map +1 -0
  136. package/dist/esm/regions.js +12 -0
  137. package/dist/esm/regions.js.map +1 -0
  138. package/dist/esm/services.d.ts +3 -0
  139. package/dist/esm/services.d.ts.map +1 -0
  140. package/dist/esm/services.js +2 -0
  141. package/dist/esm/services.js.map +1 -0
  142. package/dist/esm/syncs/iam/authorizationDetails.d.ts +104 -0
  143. package/dist/esm/syncs/iam/authorizationDetails.d.ts.map +1 -0
  144. package/dist/esm/syncs/iam/authorizationDetails.js +478 -0
  145. package/dist/esm/syncs/iam/authorizationDetails.js.map +1 -0
  146. package/dist/esm/syncs/lambda/lambda.d.ts +3 -0
  147. package/dist/esm/syncs/lambda/lambda.d.ts.map +1 -0
  148. package/dist/esm/syncs/lambda/lambda.js +51 -0
  149. package/dist/esm/syncs/lambda/lambda.js.map +1 -0
  150. package/dist/esm/syncs/sync.d.ts +27 -0
  151. package/dist/esm/syncs/sync.d.ts.map +1 -0
  152. package/dist/esm/syncs/sync.js +13 -0
  153. package/dist/esm/syncs/sync.js.map +1 -0
  154. package/dist/esm/syncs/syncMap.d.ts +17 -0
  155. package/dist/esm/syncs/syncMap.d.ts.map +1 -0
  156. package/dist/esm/syncs/syncMap.js +47 -0
  157. package/dist/esm/syncs/syncMap.js.map +1 -0
  158. package/dist/esm/utils/arn.d.ts +26 -0
  159. package/dist/esm/utils/arn.d.ts.map +1 -0
  160. package/dist/esm/utils/arn.js +56 -0
  161. package/dist/esm/utils/arn.js.map +1 -0
  162. package/dist/esm/utils/client-tools.d.ts +15 -0
  163. package/dist/esm/utils/client-tools.d.ts.map +1 -0
  164. package/dist/esm/utils/client-tools.js +38 -0
  165. package/dist/esm/utils/client-tools.js.map +1 -0
  166. package/dist/esm/utils/strings.d.ts +8 -0
  167. package/dist/esm/utils/strings.d.ts.map +1 -0
  168. package/dist/esm/utils/strings.js +16 -0
  169. package/dist/esm/utils/strings.js.map +1 -0
  170. package/dist/esm/utils/types.d.ts +2 -0
  171. package/dist/esm/utils/types.d.ts.map +1 -0
  172. package/dist/esm/utils/types.js +4 -0
  173. package/dist/esm/utils/types.js.map +1 -0
  174. package/package.json +81 -4
  175. package/dist/cjs/cli2.d.ts +0 -63
  176. package/dist/cjs/cli2.d.ts.map +0 -1
  177. package/dist/cjs/cli2.js +0 -41
  178. package/dist/cjs/cli2.js.map +0 -1
  179. package/dist/cjs/cli3.d.ts +0 -63
  180. package/dist/cjs/cli3.d.ts.map +0 -1
  181. package/dist/cjs/cli3.js +0 -41
  182. package/dist/cjs/cli3.js.map +0 -1
  183. package/dist/cjs/cliUtils.d.ts +0 -13
  184. package/dist/cjs/cliUtils.d.ts.map +0 -1
  185. package/dist/cjs/cliUtils.js +0 -43
  186. package/dist/cjs/cliUtils.js.map +0 -1
  187. package/dist/cjs/showHelp.d.ts +0 -2
  188. package/dist/cjs/showHelp.d.ts.map +0 -1
  189. package/dist/cjs/showHelp.js +0 -33
  190. package/dist/cjs/showHelp.js.map +0 -1
  191. package/dist/cjs/utils.d.ts +0 -8
  192. package/dist/cjs/utils.d.ts.map +0 -1
  193. package/dist/cjs/utils.js +0 -21
  194. package/dist/cjs/utils.js.map +0 -1
  195. package/dist/esm/cliUtils.d.ts +0 -13
  196. package/dist/esm/cliUtils.d.ts.map +0 -1
  197. package/dist/esm/cliUtils.js +0 -40
  198. package/dist/esm/cliUtils.js.map +0 -1
  199. package/dist/esm/utils.d.ts +0 -8
  200. package/dist/esm/utils.d.ts.map +0 -1
  201. package/dist/esm/utils.js +0 -18
  202. package/dist/esm/utils.js.map +0 -1
package/README.md CHANGED
@@ -1,23 +1,45 @@
1
- # iam-download
1
+ # iam-collect
2
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.
3
+ [![NPM Version](https://img.shields.io/npm/v/@cloud-copilot/iam-collect.svg?logo=nodedotjs)](https://www.npmjs.com/package/@cloud-copilot/iam-collect) [![License: AGPL v3](https://img.shields.io/github/license/cloud-copilot/iam-collect)](LICENSE.txt) [![GuardDog](https://github.com/cloud-copilot/iam-collect/actions/workflows/guarddog.yml/badge.svg)](https://github.com/cloud-copilot/iam-collect/actions/workflows/guarddog.yml) [![Known Vulnerabilities](https://snyk.io/test/github/cloud-copilot/iam-collect/badge.svg?targetFile=package.json&style=flat-square)](https://snyk.io/test/github/cloud-copilot/iam-collect?targetFile=package.json)
4
+
5
+ Get every possible policy in any set of AWS accounts. This is built to run out of the box in simple use cases, and also work in terribly oppressive environments with a little more configuration. If you want to analyze IAM data at scale this is what you've been looking for.
4
6
 
5
7
  # BETA
6
8
 
7
9
  This is still in beta, commands and configuration options are likely to change.
8
10
 
11
+ ## Quick Start
12
+
13
+ By default, iam-collect will use the credentials configured in your environment. If you have the permissions in the SID `CollectIAMData` in the [example Policy](aws/collect-policy.json) everything will work for the current account you have credentials for.
14
+
15
+ ```bash
16
+ npm install -g @cloud-copilot/iam-collect
17
+ # Create a default configuration file
18
+ iam-collect init
19
+ # Download iam data from the current account to `./iam-data`
20
+ iam-collect download
21
+ ```
22
+
9
23
  ## Installation
10
24
 
11
25
  ```bash
12
- npm install -g @cloud-copilot/iam-download
26
+ npm install -g @cloud-copilot/iam-collect
13
27
  ```
14
28
 
15
29
  ## Initialization
16
30
 
17
- First you need to initialize the configuration file. This will create a commented iam-download.jsonc file with comments for the different elements.
31
+ First you need to initialize the configuration file. This will create a commented iam-collect.jsonc file with comments for the different elements.
32
+
33
+ ```bash
34
+ iam-collect init
35
+ ```
36
+
37
+ This will create a file called `iam-collect.jsonc` in the current directory with a simple default configuration and many comments on how to customize the configuration.
38
+
39
+ ## Downloading IAM Data
18
40
 
19
41
  ```bash
20
- iam-download init
42
+ iam-collect download
21
43
  ```
22
44
 
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.
45
+ This will download the IAM data from the current account to the `./iam-data` directory. You can change the output directory by modifying the `path` property in the `storage` configuration.
@@ -0,0 +1,27 @@
1
+ import type { Client } from '@smithy/smithy-client';
2
+ import { AwsCredentialIdentityWithMetaData } from './auth.js';
3
+ type ClientConstructor<T> = new (args: any) => T;
4
+ type AnyClient = Client<any, any, any, any>;
5
+ export declare class AwsClientPool {
6
+ static defaultInstance: AwsClientPool;
7
+ private clientCache;
8
+ /**
9
+ * Returns a client of the specified type with the specified credentials and region.
10
+ * Will create a new client if one does not already exist in the cache.
11
+ *
12
+ * @param ClientType The client constructor to create an instance of.
13
+ * @param credentials The credentials to use for the client.
14
+ * @param region The region to use for the client.
15
+ * @returns A client of the specified type with the specified credentials and region.
16
+ */
17
+ client<T extends AnyClient>(ClientType: ClientConstructor<T>, credentials: AwsCredentialIdentityWithMetaData, region: string | undefined, endpoint: string | undefined): T;
18
+ private getCacheKey;
19
+ /**
20
+ * Destroys all clients in the pool and empties the cache.
21
+ *
22
+ * NOT THREAD SAFE, this should only be called when all other operations are complete.
23
+ */
24
+ clear(): void;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=ClientPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientPool.d.ts","sourceRoot":"","sources":["../../../src/aws/ClientPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,EAAE,iCAAiC,EAAE,MAAM,WAAW,CAAA;AAE7D,KAAK,iBAAiB,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,CAAA;AAChD,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE3C,qBAAa,aAAa;IACxB,OAAc,eAAe,gBAAsB;IAEnD,OAAO,CAAC,WAAW,CAA+B;IAElD;;;;;;;;OAQG;IACI,MAAM,CAAC,CAAC,SAAS,SAAS,EAC/B,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAChC,WAAW,EAAE,iCAAiC,EAC9C,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,CAAC;IAmBJ,OAAO,CAAC,WAAW;IASnB;;;;OAIG;IACI,KAAK,IAAI,IAAI;CAQrB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AwsClientPool = void 0;
4
+ const util_retry_1 = require("@smithy/util-retry");
5
+ class AwsClientPool {
6
+ static defaultInstance = new AwsClientPool();
7
+ clientCache = new Map();
8
+ /**
9
+ * Returns a client of the specified type with the specified credentials and region.
10
+ * Will create a new client if one does not already exist in the cache.
11
+ *
12
+ * @param ClientType The client constructor to create an instance of.
13
+ * @param credentials The credentials to use for the client.
14
+ * @param region The region to use for the client.
15
+ * @returns A client of the specified type with the specified credentials and region.
16
+ */
17
+ client(ClientType, credentials, region, endpoint) {
18
+ const cacheKey = this.getCacheKey(ClientType, credentials, region, endpoint);
19
+ if (!this.clientCache.has(cacheKey)) {
20
+ // logInfo('CreatingNewAwsClient', undefined, { cacheKey })
21
+ const client = new ClientType({
22
+ credentials,
23
+ region,
24
+ maxAttempts: 10,
25
+ retryMode: util_retry_1.RETRY_MODES.ADAPTIVE
26
+ });
27
+ this.clientCache.set(cacheKey, client);
28
+ }
29
+ else {
30
+ // logInfo('ReusingAwsClient', undefined, { cacheKey })
31
+ }
32
+ return this.clientCache.get(cacheKey);
33
+ }
34
+ getCacheKey(ClientType, credentials, region, endpoint) {
35
+ return `${ClientType.name}:${credentials.accountId}:${region}:${endpoint}`;
36
+ }
37
+ /**
38
+ * Destroys all clients in the pool and empties the cache.
39
+ *
40
+ * NOT THREAD SAFE, this should only be called when all other operations are complete.
41
+ */
42
+ clear() {
43
+ this.clientCache.forEach((client) => {
44
+ if (typeof client.destroy === 'function') {
45
+ client.destroy();
46
+ }
47
+ });
48
+ this.clientCache.clear();
49
+ }
50
+ }
51
+ exports.AwsClientPool = AwsClientPool;
52
+ //# sourceMappingURL=ClientPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientPool.js","sourceRoot":"","sources":["../../../src/aws/ClientPool.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAMhD,MAAa,aAAa;IACjB,MAAM,CAAC,eAAe,GAAG,IAAI,aAAa,EAAE,CAAA;IAE3C,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAA;IAElD;;;;;;;;OAQG;IACI,MAAM,CACX,UAAgC,EAChC,WAA8C,EAC9C,MAA0B,EAC1B,QAA4B;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAE5E,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,2DAA2D;YAC3D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;gBAC5B,WAAW;gBACX,MAAM;gBACN,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,wBAAW,CAAC,QAAQ;aAChC,CAAC,CAAA;YACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,uDAAuD;QACzD,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAM,CAAA;IAC5C,CAAC;IAEO,WAAW,CACjB,UAAgC,EAChC,WAA8C,EAC9C,MAA0B,EAC1B,QAA4B;QAE5B,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,SAAS,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAA;IAC5E,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,EAAE,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;;AA3DH,sCA4DC"}
@@ -0,0 +1,16 @@
1
+ import { AwsCredentialIdentity } from '@aws-sdk/types';
2
+ import { AuthConfig } from '../config/config.js';
3
+ export interface AwsCredentialIdentityWithMetaData extends AwsCredentialIdentity {
4
+ partition: string;
5
+ accountId: string;
6
+ }
7
+ export interface CollectIdentityProvider {
8
+ getCredentials: () => Promise<AwsCredentialIdentityWithMetaData>;
9
+ }
10
+ export declare function getDefaultCredentials(): Promise<AwsCredentialIdentity>;
11
+ export declare function getCredentials(accountId: string, authConfig: AuthConfig | undefined): Promise<AwsCredentialIdentityWithMetaData>;
12
+ export declare function getTokenInfo(credentials: AwsCredentialIdentity): Promise<{
13
+ accountId: string;
14
+ partition: string;
15
+ }>;
16
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/aws/auth.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,MAAM,WAAW,iCAAkC,SAAQ,qBAAqB;IAC9E,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,iCAAiC,CAAC,CAAA;CACjE;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAG5E;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GAAG,SAAS,GACjC,OAAO,CAAC,iCAAiC,CAAC,CAyD5C;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC9E,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAC,CAYD"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultCredentials = getDefaultCredentials;
4
+ exports.getCredentials = getCredentials;
5
+ exports.getTokenInfo = getTokenInfo;
6
+ const client_sts_1 = require("@aws-sdk/client-sts");
7
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
8
+ const strings_js_1 = require("../utils/strings.js");
9
+ async function getDefaultCredentials() {
10
+ const provider = (0, credential_providers_1.fromNodeProviderChain)();
11
+ return provider();
12
+ }
13
+ async function getCredentials(accountId, authConfig) {
14
+ //If there is no auth config specific to that account, use the default auth config
15
+ if (!authConfig) {
16
+ const provider = (0, credential_providers_1.fromNodeProviderChain)();
17
+ const credentials = await provider();
18
+ const tokenInfo = await getTokenInfo(credentials);
19
+ if (tokenInfo.accountId !== accountId) {
20
+ throw new Error(`No auth config found for account ${accountId} and no default auth config found. The account ID of the current credentials does not match.`);
21
+ }
22
+ return {
23
+ ...credentials,
24
+ accountId: tokenInfo.accountId,
25
+ partition: tokenInfo.partition
26
+ };
27
+ }
28
+ let credentials = undefined;
29
+ if (authConfig.profile) {
30
+ const provider = (0, credential_providers_1.fromIni)({ profile: authConfig.profile });
31
+ credentials = await provider();
32
+ }
33
+ else {
34
+ const provider = (0, credential_providers_1.fromNodeProviderChain)();
35
+ credentials = await provider();
36
+ }
37
+ const sessionInfo = await getTokenInfo(credentials);
38
+ if (authConfig.role) {
39
+ const roleProvider = (0, credential_providers_1.fromTemporaryCredentials)({
40
+ // Optional. The master credentials used to get and refresh temporary credentials from AWS STS.
41
+ // If skipped, it uses the default credential resolved by internal STS client.
42
+ masterCredentials: credentials,
43
+ // Required. Options passed to STS AssumeRole operation.
44
+ params: {
45
+ // Required. ARN of role to assume.
46
+ RoleArn: `arn:${sessionInfo.partition}:iam::${accountId}:role/${authConfig.role.pathAndName}`,
47
+ ExternalId: authConfig.role.externalId,
48
+ // Optional. An identifier for the assumed role session. If skipped, it generates a random
49
+ // session name with prefix of 'aws-sdk-js-'.
50
+ RoleSessionName: authConfig.role.sessionName || `iam-collect-${(0, strings_js_1.randomCharacters)()}`
51
+ // Optional. The duration, in seconds, of the role session.
52
+ }
53
+ });
54
+ credentials = await roleProvider();
55
+ }
56
+ else if (sessionInfo.accountId != accountId) {
57
+ // If the account ID from the credentials doesn't match the expected account ID and no role is specified
58
+ // throw an error to indicate that the credentials do not match the expected account
59
+ throw new Error(`The credentials provided do not match the expected account ID ${accountId}. Found ${sessionInfo.accountId}. Please check your auth configuration.`);
60
+ }
61
+ return { ...credentials, accountId, partition: sessionInfo.partition };
62
+ }
63
+ async function getTokenInfo(credentials) {
64
+ const stsClient = new client_sts_1.STSClient({ credentials });
65
+ const command = new client_sts_1.GetCallerIdentityCommand({});
66
+ const response = await stsClient.send(command);
67
+ const accountId = response.Account;
68
+ const arn = response.Arn;
69
+ const arnParts = arn.split(':');
70
+ const partition = arnParts[1];
71
+ return {
72
+ accountId: accountId,
73
+ partition: partition
74
+ };
75
+ }
76
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/aws/auth.ts"],"names":[],"mappings":"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"}
package/dist/cjs/cli.js CHANGED
@@ -1,17 +1,49 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- const cliUtils_js_1 = require("./cliUtils.js");
4
+ const cli_1 = require("@cloud-copilot/cli");
5
+ const configFile_js_1 = require("./config/configFile.js");
5
6
  const createConfigFile_js_1 = require("./config/createConfigFile.js");
6
7
  const defaultConfig_js_1 = require("./config/defaultConfig.js");
8
+ const download_js_1 = require("./download/download.js");
7
9
  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') {
10
+ // const parsedArgs = parseCliArguments(rawArgs)
11
+ const cli = (0, cli_1.parseCliArguments)('iam-collect', {
12
+ init: {
13
+ description: 'Initialize the iam-collect configuration file',
14
+ options: {}
15
+ },
16
+ download: {
17
+ description: 'Download IAM data',
18
+ options: {
19
+ configFiles: {
20
+ type: 'string',
21
+ description: 'The configuration files to use',
22
+ values: 'multiple'
23
+ },
24
+ accountIds: {
25
+ type: 'string',
26
+ description: 'The account IDs to download from',
27
+ values: 'multiple'
28
+ },
29
+ regions: {
30
+ type: 'string',
31
+ description: 'The regions to download from',
32
+ values: 'multiple'
33
+ },
34
+ services: {
35
+ type: 'string',
36
+ description: 'The services to download',
37
+ values: 'multiple'
38
+ }
39
+ }
40
+ }
41
+ }, {}, {
42
+ envPrefix: 'IAM_COLLECT',
43
+ showHelpIfNoArgs: true,
44
+ requireSubcommand: true
45
+ });
46
+ if (cli.subcommand === 'init') {
15
47
  if ((0, defaultConfig_js_1.defaultConfigExists)()) {
16
48
  console.error('Configuration file already exists');
17
49
  process.exit(1);
@@ -20,4 +52,10 @@ if (command === 'init') {
20
52
  (0, createConfigFile_js_1.createDefaultConfiguration)();
21
53
  process.exit(0);
22
54
  }
55
+ else if (cli.subcommand === 'download') {
56
+ const defaultConfig = './iam-collect.jsonc';
57
+ const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
58
+ const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
59
+ (0, download_js_1.downloadData)(configs, cli.args.accountIds, cli.args.regions, cli.args.services);
60
+ }
23
61
  //# sourceMappingURL=cli.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA,4CAAsD;AACtD,0DAAwD;AACxD,sEAAyE;AACzE,gEAA+D;AAC/D,wDAAqD;AAErD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;AACtE,gDAAgD;AAEhD,MAAM,GAAG,GAAG,IAAA,uBAAiB,EAC3B,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,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;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,IAAA,+BAAe,EAAC,WAAW,CAAC,CAAA;IAC5C,IAAA,0BAAY,EAAC,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 {
@@ -55,20 +54,32 @@ interface AccountConfig extends BaseConfig {
55
54
  }
56
55
  export interface TopLevelConfig extends BaseConfig {
57
56
  name?: string;
58
- iamDownloadVersion: string;
59
- storage: StorageConfig;
57
+ iamCollectVersion: string;
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,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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.servicesForAccount = servicesForAccount;
4
4
  exports.regionsForService = regionsForService;
5
5
  exports.accountServiceRegionConfig = accountServiceRegionConfig;
6
+ exports.getAccountAuthConfig = getAccountAuthConfig;
7
+ exports.getStorageConfig = getStorageConfig;
6
8
  function servicesForAccount(account, configs, allServices) {
7
9
  let services = allServices;
8
10
  for (const config of configs) {
@@ -67,8 +69,20 @@ function regionsForService(service, account, configs, allRegions) {
67
69
  }
68
70
  return regions;
69
71
  }
70
- function accountServiceRegionConfig(service, account, region, configs) {
71
- let result = {};
72
+ // export function defaultStsRegion(configs: TopLevelConfig[]): string {
73
+ // for (const config of configs) {
74
+ // if (config.regions?.included) {
75
+ // return config.regions.included[0]
76
+ // }
77
+ // }
78
+ // return 'us-east-1'
79
+ // }
80
+ function accountServiceRegionConfig(service, accountId, region, configs) {
81
+ let result = {
82
+ accountId: accountId,
83
+ service,
84
+ region
85
+ };
72
86
  for (const config of configs) {
73
87
  if (config.auth) {
74
88
  result.auth = config.auth;
@@ -76,7 +90,7 @@ function accountServiceRegionConfig(service, account, region, configs) {
76
90
  const serviceConfig = config.serviceConfigs?.[service];
77
91
  if (serviceConfig) {
78
92
  if (serviceConfig.auth) {
79
- result.auth = serviceConfig.auth;
93
+ result.auth = { ...result.auth, ...serviceConfig.auth };
80
94
  }
81
95
  if (serviceConfig.endpoint) {
82
96
  result.endpoint = serviceConfig.endpoint;
@@ -84,14 +98,14 @@ function accountServiceRegionConfig(service, account, region, configs) {
84
98
  const regionConfig = serviceConfig.regionConfigs?.[region];
85
99
  if (regionConfig) {
86
100
  if (regionConfig.auth) {
87
- result.auth = regionConfig.auth;
101
+ result.auth = { ...result.auth, ...regionConfig.auth };
88
102
  }
89
103
  if (regionConfig.endpoint) {
90
104
  result.endpoint = regionConfig.endpoint;
91
105
  }
92
106
  }
93
107
  }
94
- const accountConfig = config.accounts?.[account];
108
+ const accountConfig = config.accounts?.[accountId];
95
109
  if (accountConfig) {
96
110
  if (accountConfig.auth) {
97
111
  result.auth = accountConfig.auth;
@@ -99,7 +113,7 @@ function accountServiceRegionConfig(service, account, region, configs) {
99
113
  const accountServiceConfig = accountConfig.serviceConfigs?.[service];
100
114
  if (accountServiceConfig) {
101
115
  if (accountServiceConfig.auth) {
102
- result.auth = accountServiceConfig.auth;
116
+ result.auth = { ...result.auth, ...accountServiceConfig.auth };
103
117
  }
104
118
  if (accountServiceConfig.endpoint) {
105
119
  result.endpoint = accountServiceConfig.endpoint;
@@ -107,7 +121,7 @@ function accountServiceRegionConfig(service, account, region, configs) {
107
121
  const accountRegionConfig = accountServiceConfig.regionConfigs?.[region];
108
122
  if (accountRegionConfig) {
109
123
  if (accountRegionConfig.auth) {
110
- result.auth = accountRegionConfig.auth;
124
+ result.auth = { ...result.auth, ...accountRegionConfig.auth };
111
125
  }
112
126
  if (accountRegionConfig.endpoint) {
113
127
  result.endpoint = accountRegionConfig.endpoint;
@@ -118,4 +132,35 @@ function accountServiceRegionConfig(service, account, region, configs) {
118
132
  }
119
133
  return result;
120
134
  }
135
+ /**
136
+ * Get the auth config for a specific account
137
+ *
138
+ * @param accountId the account id to get the auth config for
139
+ * @param configs the configs to search
140
+ * @returns the auth config for the account, or undefined if not found
141
+ */
142
+ function getAccountAuthConfig(accountId, configs) {
143
+ let result = undefined;
144
+ for (const config of configs) {
145
+ if (config.auth) {
146
+ result = config.auth;
147
+ }
148
+ const accountConfig = config.accounts?.[accountId];
149
+ if (accountConfig?.auth) {
150
+ result = { ...(result || {}), ...accountConfig.auth };
151
+ }
152
+ }
153
+ return result;
154
+ }
155
+ function getStorageConfig(configs) {
156
+ const reverseConfigs = [...configs].reverse();
157
+ // Iterate through the configs to find the first storage config
158
+ for (const config of reverseConfigs) {
159
+ if (config.storage) {
160
+ return config.storage;
161
+ }
162
+ }
163
+ // Return undefined if no storage config is found
164
+ return undefined;
165
+ }
121
166
  //# 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,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadConfigFiles = loadConfigFiles;
4
+ exports.loadConfigFile = loadConfigFile;
5
+ const fs_1 = require("fs");
6
+ const jsonc_parser_1 = require("jsonc-parser");
7
+ const path_1 = require("path");
8
+ /**
9
+ * Gets the current directory the process is running in
10
+ *
11
+ * @returns the current directory
12
+ */
13
+ function getCurrentDirectory() {
14
+ return process.cwd();
15
+ }
16
+ /**
17
+ * Load config files from the given paths
18
+ *
19
+ * @param paths the paths to the config files
20
+ * @returns the loaded config files
21
+ */
22
+ function loadConfigFiles(paths) {
23
+ return paths.map(loadConfigFile);
24
+ }
25
+ /**
26
+ * Load a config file from the given path
27
+ *
28
+ * @param path the path to the config file
29
+ * @returns the loaded config file
30
+ */
31
+ function loadConfigFile(path) {
32
+ const absPath = getAbsolutePath(path);
33
+ const contents = (0, fs_1.readFileSync)(absPath, 'utf-8');
34
+ const parsed = (0, jsonc_parser_1.parse)(contents);
35
+ return parsed;
36
+ }
37
+ /**
38
+ * Get the absolute path to a configuration file
39
+ *
40
+ * @param path - The path to the configuration file
41
+ * @returns the absolute path to the configuration file
42
+ */
43
+ function getAbsolutePath(path) {
44
+ if (path.startsWith('.')) {
45
+ return (0, path_1.resolve)(getCurrentDirectory(), path);
46
+ }
47
+ return (0, path_1.resolve)(path);
48
+ }
49
+ //# sourceMappingURL=configFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":";;AAoBA,0CAEC;AAQD,wCAKC;AAnCD,2BAAiC;AACjC,+CAAoC;AACpC,+BAA8B;AAG9B;;;;GAIG;AACH,SAAS,mBAAmB;IAC1B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAe;IAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,IAAA,oBAAK,EAAC,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,IAAA,cAAO,EAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,CAAA;AACtB,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const defaultConfigFileName = "iam-download.jsonc";
1
+ export declare const defaultConfigFileName = "iam-collect.jsonc";
2
2
  /**
3
3
  * Get the full path to the config file.
4
4
  *
@@ -1 +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"}
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"}