@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.
- package/README.md +28 -6
- package/dist/cjs/aws/ClientPool.d.ts +27 -0
- package/dist/cjs/aws/ClientPool.d.ts.map +1 -0
- package/dist/cjs/aws/ClientPool.js +52 -0
- package/dist/cjs/aws/ClientPool.js.map +1 -0
- package/dist/cjs/aws/auth.d.ts +16 -0
- package/dist/cjs/aws/auth.d.ts.map +1 -0
- package/dist/cjs/aws/auth.js +76 -0
- package/dist/cjs/aws/auth.js.map +1 -0
- package/dist/cjs/cli.js +46 -8
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/config/config.d.ts +23 -12
- package/dist/cjs/config/config.d.ts.map +1 -1
- package/dist/cjs/config/config.js +52 -7
- package/dist/cjs/config/config.js.map +1 -1
- package/dist/cjs/config/configFile.d.ts +16 -0
- package/dist/cjs/config/configFile.d.ts.map +1 -0
- package/dist/cjs/config/configFile.js +49 -0
- package/dist/cjs/config/configFile.js.map +1 -0
- package/dist/cjs/config/defaultConfig.d.ts +1 -1
- package/dist/cjs/config/defaultConfig.d.ts.map +1 -1
- package/dist/cjs/config/defaultConfig.js +43 -6
- package/dist/cjs/config/defaultConfig.js.map +1 -1
- package/dist/cjs/config/packageVersion.d.ts +1 -1
- package/dist/cjs/config/packageVersion.d.ts.map +1 -1
- package/dist/cjs/config/packageVersion.js +2 -2
- package/dist/cjs/config/packageVersion.js.map +1 -1
- package/dist/cjs/download/download.d.ts +3 -0
- package/dist/cjs/download/download.d.ts.map +1 -0
- package/dist/cjs/download/download.js +67 -0
- package/dist/cjs/download/download.js.map +1 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts +95 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -0
- package/dist/cjs/persistence/AwsIamStore.js +3 -0
- package/dist/cjs/persistence/AwsIamStore.js.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +20 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.js +77 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +96 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -0
- package/dist/cjs/persistence/util.d.ts +28 -0
- package/dist/cjs/persistence/util.d.ts.map +1 -0
- package/dist/cjs/persistence/util.js +46 -0
- package/dist/cjs/persistence/util.js.map +1 -0
- package/dist/cjs/regions.d.ts +3 -0
- package/dist/cjs/regions.d.ts.map +1 -0
- package/dist/cjs/regions.js +15 -0
- package/dist/cjs/regions.js.map +1 -0
- package/dist/cjs/services.d.ts +3 -0
- package/dist/cjs/services.d.ts.map +1 -0
- package/dist/cjs/services.js +5 -0
- package/dist/cjs/services.js.map +1 -0
- package/dist/cjs/syncs/iam/authorizationDetails.d.ts +104 -0
- package/dist/cjs/syncs/iam/authorizationDetails.d.ts.map +1 -0
- package/dist/cjs/syncs/iam/authorizationDetails.js +490 -0
- package/dist/cjs/syncs/iam/authorizationDetails.js.map +1 -0
- package/dist/cjs/syncs/lambda/lambda.d.ts +3 -0
- package/dist/cjs/syncs/lambda/lambda.d.ts.map +1 -0
- package/dist/cjs/syncs/lambda/lambda.js +54 -0
- package/dist/cjs/syncs/lambda/lambda.js.map +1 -0
- package/dist/cjs/syncs/sync.d.ts +27 -0
- package/dist/cjs/syncs/sync.d.ts.map +1 -0
- package/dist/cjs/syncs/sync.js +16 -0
- package/dist/cjs/syncs/sync.js.map +1 -0
- package/dist/cjs/syncs/syncMap.d.ts +17 -0
- package/dist/cjs/syncs/syncMap.d.ts.map +1 -0
- package/dist/cjs/syncs/syncMap.js +51 -0
- package/dist/cjs/syncs/syncMap.js.map +1 -0
- package/dist/cjs/utils/arn.d.ts +26 -0
- package/dist/cjs/utils/arn.d.ts.map +1 -0
- package/dist/cjs/utils/arn.js +60 -0
- package/dist/cjs/utils/arn.js.map +1 -0
- package/dist/cjs/utils/client-tools.d.ts +15 -0
- package/dist/cjs/utils/client-tools.d.ts.map +1 -0
- package/dist/cjs/utils/client-tools.js +42 -0
- package/dist/cjs/utils/client-tools.js.map +1 -0
- package/dist/cjs/utils/strings.d.ts +8 -0
- package/dist/cjs/utils/strings.d.ts.map +1 -0
- package/dist/cjs/utils/strings.js +19 -0
- package/dist/cjs/utils/strings.js.map +1 -0
- package/dist/cjs/utils/types.d.ts +2 -0
- package/dist/cjs/utils/types.d.ts.map +1 -0
- package/dist/cjs/utils/types.js +7 -0
- package/dist/cjs/utils/types.js.map +1 -0
- package/dist/esm/aws/ClientPool.d.ts +27 -0
- package/dist/esm/aws/ClientPool.d.ts.map +1 -0
- package/dist/esm/aws/ClientPool.js +50 -0
- package/dist/esm/aws/ClientPool.js.map +1 -0
- package/dist/esm/aws/auth.d.ts +16 -0
- package/dist/esm/aws/auth.d.ts.map +1 -0
- package/dist/esm/aws/auth.js +71 -0
- package/dist/esm/aws/auth.js.map +1 -0
- package/dist/esm/cli.js +46 -8
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config/config.d.ts +23 -12
- package/dist/esm/config/config.d.ts.map +1 -1
- package/dist/esm/config/config.js +50 -7
- package/dist/esm/config/config.js.map +1 -1
- package/dist/esm/config/configFile.d.ts +16 -0
- package/dist/esm/config/configFile.d.ts.map +1 -0
- package/dist/esm/config/configFile.js +45 -0
- package/dist/esm/config/configFile.js.map +1 -0
- package/dist/esm/config/defaultConfig.d.ts +1 -1
- package/dist/esm/config/defaultConfig.d.ts.map +1 -1
- package/dist/esm/config/defaultConfig.js +44 -7
- package/dist/esm/config/defaultConfig.js.map +1 -1
- package/dist/esm/config/packageVersion.d.ts +1 -1
- package/dist/esm/config/packageVersion.d.ts.map +1 -1
- package/dist/esm/config/packageVersion.js +1 -1
- package/dist/esm/config/packageVersion.js.map +1 -1
- package/dist/esm/download/download.d.ts +3 -0
- package/dist/esm/download/download.d.ts.map +1 -0
- package/dist/esm/download/download.js +64 -0
- package/dist/esm/download/download.js.map +1 -0
- package/dist/esm/persistence/AwsIamStore.d.ts +95 -0
- package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -0
- package/dist/esm/persistence/AwsIamStore.js +2 -0
- package/dist/esm/persistence/AwsIamStore.js.map +1 -0
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts +20 -0
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -0
- package/dist/esm/persistence/file/FileSystemAdapter.js +73 -0
- package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js +89 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -0
- package/dist/esm/persistence/util.d.ts +28 -0
- package/dist/esm/persistence/util.d.ts.map +1 -0
- package/dist/esm/persistence/util.js +41 -0
- package/dist/esm/persistence/util.js.map +1 -0
- package/dist/esm/regions.d.ts +3 -0
- package/dist/esm/regions.d.ts.map +1 -0
- package/dist/esm/regions.js +12 -0
- package/dist/esm/regions.js.map +1 -0
- package/dist/esm/services.d.ts +3 -0
- package/dist/esm/services.d.ts.map +1 -0
- package/dist/esm/services.js +2 -0
- package/dist/esm/services.js.map +1 -0
- package/dist/esm/syncs/iam/authorizationDetails.d.ts +104 -0
- package/dist/esm/syncs/iam/authorizationDetails.d.ts.map +1 -0
- package/dist/esm/syncs/iam/authorizationDetails.js +478 -0
- package/dist/esm/syncs/iam/authorizationDetails.js.map +1 -0
- package/dist/esm/syncs/lambda/lambda.d.ts +3 -0
- package/dist/esm/syncs/lambda/lambda.d.ts.map +1 -0
- package/dist/esm/syncs/lambda/lambda.js +51 -0
- package/dist/esm/syncs/lambda/lambda.js.map +1 -0
- package/dist/esm/syncs/sync.d.ts +27 -0
- package/dist/esm/syncs/sync.d.ts.map +1 -0
- package/dist/esm/syncs/sync.js +13 -0
- package/dist/esm/syncs/sync.js.map +1 -0
- package/dist/esm/syncs/syncMap.d.ts +17 -0
- package/dist/esm/syncs/syncMap.d.ts.map +1 -0
- package/dist/esm/syncs/syncMap.js +47 -0
- package/dist/esm/syncs/syncMap.js.map +1 -0
- package/dist/esm/utils/arn.d.ts +26 -0
- package/dist/esm/utils/arn.d.ts.map +1 -0
- package/dist/esm/utils/arn.js +56 -0
- package/dist/esm/utils/arn.js.map +1 -0
- package/dist/esm/utils/client-tools.d.ts +15 -0
- package/dist/esm/utils/client-tools.d.ts.map +1 -0
- package/dist/esm/utils/client-tools.js +38 -0
- package/dist/esm/utils/client-tools.js.map +1 -0
- package/dist/esm/utils/strings.d.ts +8 -0
- package/dist/esm/utils/strings.d.ts.map +1 -0
- package/dist/esm/utils/strings.js +16 -0
- package/dist/esm/utils/strings.js.map +1 -0
- package/dist/esm/utils/types.d.ts +2 -0
- package/dist/esm/utils/types.d.ts.map +1 -0
- package/dist/esm/utils/types.js +4 -0
- package/dist/esm/utils/types.js.map +1 -0
- package/package.json +81 -4
- package/dist/cjs/cli2.d.ts +0 -63
- package/dist/cjs/cli2.d.ts.map +0 -1
- package/dist/cjs/cli2.js +0 -41
- package/dist/cjs/cli2.js.map +0 -1
- package/dist/cjs/cli3.d.ts +0 -63
- package/dist/cjs/cli3.d.ts.map +0 -1
- package/dist/cjs/cli3.js +0 -41
- package/dist/cjs/cli3.js.map +0 -1
- package/dist/cjs/cliUtils.d.ts +0 -13
- package/dist/cjs/cliUtils.d.ts.map +0 -1
- package/dist/cjs/cliUtils.js +0 -43
- package/dist/cjs/cliUtils.js.map +0 -1
- package/dist/cjs/showHelp.d.ts +0 -2
- package/dist/cjs/showHelp.d.ts.map +0 -1
- package/dist/cjs/showHelp.js +0 -33
- package/dist/cjs/showHelp.js.map +0 -1
- package/dist/cjs/utils.d.ts +0 -8
- package/dist/cjs/utils.d.ts.map +0 -1
- package/dist/cjs/utils.js +0 -21
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/cliUtils.d.ts +0 -13
- package/dist/esm/cliUtils.d.ts.map +0 -1
- package/dist/esm/cliUtils.js +0 -40
- package/dist/esm/cliUtils.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -8
- package/dist/esm/utils.d.ts.map +0 -1
- package/dist/esm/utils.js +0 -18
- package/dist/esm/utils.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,23 +1,45 @@
|
|
|
1
|
-
# iam-
|
|
1
|
+
# iam-collect
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@cloud-copilot/iam-collect) [](LICENSE.txt) [](https://github.com/cloud-copilot/iam-collect/actions/workflows/guarddog.yml) [](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-
|
|
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-
|
|
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
|
|
42
|
+
iam-collect download
|
|
21
43
|
```
|
|
22
44
|
|
|
23
|
-
This will
|
|
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
|
|
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 =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
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
|
package/dist/cjs/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
59
|
-
storage
|
|
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 =
|
|
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,
|
|
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;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,IAAI,CAAC,EAAE;QACL;;WAEG;QACH,WAAW,EAAE,MAAM,CAAA;QAEnB;;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,GAAG;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;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,CAAC,EAAE,aAAa,CAAA;IACvB,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,UAAU,EAAE,CAAA;AACtC,KAAK,wBAAwB,GAAG,MAAM,EAAE,CAAA;AAiBxC,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,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;AAYD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EAAE,GACxB,kCAAkC,CA4DpC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EAAE,GACxB,UAAU,GAAG,SAAS,CAYxB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,aAAa,GAAG,SAAS,CAUrF"}
|
|
@@ -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
|
|
71
|
-
|
|
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?.[
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":";;AAqGA,gDA+BC;AAED,8CA+CC;AAYD,gEAiEC;AASD,oDAeC;AAED,4CAUC;AAjMD,SAAgB,kBAAkB,CAChC,OAAe,EACf,OAAyB,EACzB,WAAqB;IAErB,IAAI,QAAQ,GAAG,WAAW,CAAA;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC9B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA;QACrC,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC9B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QACxF,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;QAC5D,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC7B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAA8B,CAAA;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAC/B,OAAe,EACf,OAAe,EACf,OAAyB,EACzB,UAAoB;IAEpB,IAAI,OAAO,GAAG,UAAU,CAAA;IACxB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAA;QACnC,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAA;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACpC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAA;YAC1C,CAAC;YACD,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACpC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,OAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1F,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAA;QAChD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACpC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAA;YAC1C,CAAC;YACD,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACpC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,OAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1F,CAAC;YAED,MAAM,eAAe,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAA;YAC/D,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;oBACtC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAA;gBAC5C,CAAC;gBACD,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;oBACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,OAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC5F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,wEAAwE;AACxE,oCAAoC;AACpC,sCAAsC;AACtC,0CAA0C;AAC1C,QAAQ;AACR,MAAM;AAEN,uBAAuB;AACvB,IAAI;AAEJ,SAAgB,0BAA0B,CACxC,OAAe,EACf,SAAiB,EACjB,MAAc,EACd,OAAyB;IAEzB,IAAI,MAAM,GAAuC;QAC/C,SAAS,EAAE,SAAS;QACpB,OAAO;QACP,MAAM;KACP,CAAA;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QAC3B,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAA;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;YACzD,CAAC;YACD,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;YAC1C,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAA;YAC1D,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;gBACxD,CAAC;gBACD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC1B,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAA;YAClC,CAAC;YAED,MAAM,oBAAoB,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAA;YACpE,IAAI,oBAAoB,EAAE,CAAC;gBACzB,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAA;gBAChE,CAAC;gBACD,IAAI,oBAAoB,CAAC,QAAQ,EAAE,CAAC;oBAClC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAA;gBACjD,CAAC;gBAED,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAA;gBACxE,IAAI,mBAAmB,EAAE,CAAC;oBACxB,IAAI,mBAAmB,CAAC,IAAI,EAAE,CAAC;wBAC7B,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAA;oBAC/D,CAAC;oBACD,IAAI,mBAAmB,CAAC,QAAQ,EAAE,CAAC;wBACjC,MAAM,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAA;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,SAAiB,EACjB,OAAyB;IAEzB,IAAI,MAAM,GAA2B,SAAS,CAAA;IAC9C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAA;QACtB,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC;YACxB,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;QACvD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAyB;IACxD,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;IAC7C,+DAA+D;IAC/D,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,OAAO,CAAA;QACvB,CAAC;IACH,CAAC;IACD,iDAAiD;IACjD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,
|
|
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"}
|