@cloud-copilot/iam-collect 0.1.52 → 0.1.54
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/dist/cjs/cli.js +49 -2
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/config/config.d.ts +11 -1
- package/dist/cjs/config/config.d.ts.map +1 -1
- package/dist/cjs/config/config.js +21 -5
- package/dist/cjs/config/config.js.map +1 -1
- package/dist/cjs/config/defaultConfig.d.ts.map +1 -1
- package/dist/cjs/config/defaultConfig.js +13 -1
- package/dist/cjs/config/defaultConfig.js.map +1 -1
- package/dist/cjs/download/download.d.ts +1 -1
- package/dist/cjs/download/download.d.ts.map +1 -1
- package/dist/cjs/download/download.js +37 -14
- package/dist/cjs/download/download.js.map +1 -1
- package/dist/cjs/index/index.d.ts +4 -0
- package/dist/cjs/index/index.d.ts.map +1 -0
- package/dist/cjs/index/index.js +42 -0
- package/dist/cjs/index/index.js.map +1 -0
- package/dist/cjs/indexing/indexMap.d.ts +10 -0
- package/dist/cjs/indexing/indexMap.d.ts.map +1 -0
- package/dist/cjs/indexing/indexMap.js +32 -0
- package/dist/cjs/indexing/indexMap.js.map +1 -0
- package/dist/cjs/indexing/indexer.d.ts +37 -0
- package/dist/cjs/indexing/indexer.d.ts.map +1 -0
- package/dist/cjs/indexing/indexer.js +3 -0
- package/dist/cjs/indexing/indexer.js.map +1 -0
- package/dist/cjs/indexing/indexers/accountOrgs.d.ts +3 -0
- package/dist/cjs/indexing/indexers/accountOrgs.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/accountOrgs.js +41 -0
- package/dist/cjs/indexing/indexers/accountOrgs.js.map +1 -0
- package/dist/cjs/indexing/indexers/apigateways.d.ts +3 -0
- package/dist/cjs/indexing/indexers/apigateways.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/apigateways.js +54 -0
- package/dist/cjs/indexing/indexers/apigateways.js.map +1 -0
- package/dist/cjs/indexing/indexers/buckets.d.ts +8 -0
- package/dist/cjs/indexing/indexers/buckets.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/buckets.js +40 -0
- package/dist/cjs/indexing/indexers/buckets.js.map +1 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.d.ts +3 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.js +57 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.js.map +1 -0
- package/dist/cjs/indexing/runIndexers.d.ts +33 -0
- package/dist/cjs/indexing/runIndexers.d.ts.map +1 -0
- package/dist/cjs/indexing/runIndexers.js +86 -0
- package/dist/cjs/indexing/runIndexers.js.map +1 -0
- package/dist/cjs/jobs/jobQueue.d.ts.map +1 -0
- package/dist/cjs/jobs/jobQueue.js.map +1 -0
- package/dist/cjs/jobs/util.d.ts.map +1 -0
- package/dist/cjs/jobs/util.js.map +1 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts +36 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -1
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.d.ts +16 -0
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.js +70 -0
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.js.map +1 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.d.ts +38 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.js +3 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.js.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +29 -1
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -1
- package/dist/cjs/persistence/file/FileSystemAdapter.js +70 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -1
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +22 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +53 -1
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -1
- package/dist/cjs/services.d.ts +7 -0
- package/dist/cjs/services.d.ts.map +1 -1
- package/dist/cjs/services.js +10 -0
- package/dist/cjs/services.js.map +1 -1
- package/dist/cjs/syncs/ec2/vpcEndpoints.d.ts.map +1 -1
- package/dist/cjs/syncs/ec2/vpcEndpoints.js +23 -2
- package/dist/cjs/syncs/ec2/vpcEndpoints.js.map +1 -1
- package/dist/cjs/syncs/organizations/organizations.d.ts.map +1 -1
- package/dist/cjs/syncs/organizations/organizations.js +18 -0
- package/dist/cjs/syncs/organizations/organizations.js.map +1 -1
- package/dist/cjs/syncs/s3/buckets.d.ts.map +1 -1
- package/dist/cjs/syncs/s3/buckets.js +4 -2
- package/dist/cjs/syncs/s3/buckets.js.map +1 -1
- package/dist/cjs/syncs/syncMap.d.ts.map +1 -1
- package/dist/cjs/syncs/syncMap.js +4 -12
- package/dist/cjs/syncs/syncMap.js.map +1 -1
- package/dist/esm/cli.js +49 -2
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config/config.d.ts +11 -1
- package/dist/esm/config/config.d.ts.map +1 -1
- package/dist/esm/config/config.js +20 -5
- package/dist/esm/config/config.js.map +1 -1
- package/dist/esm/config/defaultConfig.d.ts.map +1 -1
- package/dist/esm/config/defaultConfig.js +13 -1
- package/dist/esm/config/defaultConfig.js.map +1 -1
- package/dist/esm/download/download.d.ts +1 -1
- package/dist/esm/download/download.d.ts.map +1 -1
- package/dist/esm/download/download.js +35 -12
- package/dist/esm/download/download.js.map +1 -1
- package/dist/esm/index/index.d.ts +4 -0
- package/dist/esm/index/index.d.ts.map +1 -0
- package/dist/esm/index/index.js +39 -0
- package/dist/esm/index/index.js.map +1 -0
- package/dist/esm/indexing/indexMap.d.ts +10 -0
- package/dist/esm/indexing/indexMap.d.ts.map +1 -0
- package/dist/esm/indexing/indexMap.js +29 -0
- package/dist/esm/indexing/indexMap.js.map +1 -0
- package/dist/esm/indexing/indexer.d.ts +37 -0
- package/dist/esm/indexing/indexer.d.ts.map +1 -0
- package/dist/esm/indexing/indexer.js +2 -0
- package/dist/esm/indexing/indexer.js.map +1 -0
- package/dist/esm/indexing/indexers/accountOrgs.d.ts +3 -0
- package/dist/esm/indexing/indexers/accountOrgs.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/accountOrgs.js +38 -0
- package/dist/esm/indexing/indexers/accountOrgs.js.map +1 -0
- package/dist/esm/indexing/indexers/apigateways.d.ts +3 -0
- package/dist/esm/indexing/indexers/apigateways.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/apigateways.js +51 -0
- package/dist/esm/indexing/indexers/apigateways.js.map +1 -0
- package/dist/esm/indexing/indexers/buckets.d.ts +8 -0
- package/dist/esm/indexing/indexers/buckets.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/buckets.js +37 -0
- package/dist/esm/indexing/indexers/buckets.js.map +1 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.d.ts +3 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.js +54 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.js.map +1 -0
- package/dist/esm/indexing/runIndexers.d.ts +33 -0
- package/dist/esm/indexing/runIndexers.d.ts.map +1 -0
- package/dist/esm/indexing/runIndexers.js +83 -0
- package/dist/esm/indexing/runIndexers.js.map +1 -0
- package/dist/esm/jobs/jobQueue.d.ts.map +1 -0
- package/dist/esm/jobs/jobQueue.js.map +1 -0
- package/dist/esm/jobs/util.d.ts.map +1 -0
- package/dist/esm/jobs/util.js.map +1 -0
- package/dist/esm/persistence/AwsIamStore.d.ts +36 -0
- package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -1
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.d.ts +16 -0
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.js +68 -0
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.js.map +1 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.d.ts +38 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.js +2 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.js.map +1 -0
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts +29 -1
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -1
- package/dist/esm/persistence/file/FileSystemAdapter.js +71 -1
- package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -1
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +22 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js +53 -1
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -1
- package/dist/esm/services.d.ts +7 -0
- package/dist/esm/services.d.ts.map +1 -1
- package/dist/esm/services.js +9 -0
- package/dist/esm/services.js.map +1 -1
- package/dist/esm/syncs/ec2/vpcEndpoints.d.ts.map +1 -1
- package/dist/esm/syncs/ec2/vpcEndpoints.js +23 -2
- package/dist/esm/syncs/ec2/vpcEndpoints.js.map +1 -1
- package/dist/esm/syncs/organizations/organizations.d.ts.map +1 -1
- package/dist/esm/syncs/organizations/organizations.js +18 -0
- package/dist/esm/syncs/organizations/organizations.js.map +1 -1
- package/dist/esm/syncs/s3/buckets.d.ts.map +1 -1
- package/dist/esm/syncs/s3/buckets.js +4 -2
- package/dist/esm/syncs/s3/buckets.js.map +1 -1
- package/dist/esm/syncs/syncMap.d.ts.map +1 -1
- package/dist/esm/syncs/syncMap.js +1 -9
- package/dist/esm/syncs/syncMap.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/download/jobQueue.d.ts.map +0 -1
- package/dist/cjs/download/jobQueue.js.map +0 -1
- package/dist/cjs/download/util.d.ts.map +0 -1
- package/dist/cjs/download/util.js.map +0 -1
- package/dist/esm/download/jobQueue.d.ts.map +0 -1
- package/dist/esm/download/jobQueue.js.map +0 -1
- package/dist/esm/download/util.d.ts.map +0 -1
- package/dist/esm/download/util.js.map +0 -1
- /package/dist/cjs/{download → jobs}/jobQueue.d.ts +0 -0
- /package/dist/cjs/{download → jobs}/jobQueue.js +0 -0
- /package/dist/cjs/{download → jobs}/util.d.ts +0 -0
- /package/dist/cjs/{download → jobs}/util.js +0 -0
- /package/dist/esm/{download → jobs}/jobQueue.d.ts +0 -0
- /package/dist/esm/{download → jobs}/jobQueue.js +0 -0
- /package/dist/esm/{download → jobs}/util.d.ts +0 -0
- /package/dist/esm/{download → jobs}/util.js +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const indexName = 'accounts-to-orgs';
|
|
2
|
+
export const AccountOrganizationIndexer = {
|
|
3
|
+
awsService: 'organizations',
|
|
4
|
+
name: 'accountsToOrganizations',
|
|
5
|
+
getCache: async (storage) => {
|
|
6
|
+
const data = await storage.getIndex(indexName, {});
|
|
7
|
+
return data;
|
|
8
|
+
},
|
|
9
|
+
saveCache: async (storage, cache, lockId) => {
|
|
10
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
11
|
+
},
|
|
12
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
13
|
+
const orgForAccount = await storage.getAccountMetadata(accountId, 'organization', undefined);
|
|
14
|
+
const organizationId = orgForAccount?.organizationId;
|
|
15
|
+
// If the account is not a organization management account, we don't need to update the cache
|
|
16
|
+
if (!organizationId) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
20
|
+
// Remove all existing accounts for the organization
|
|
21
|
+
for (const key of currentCacheKeys) {
|
|
22
|
+
if (existingCache[key] == organizationId) {
|
|
23
|
+
delete existingCache[key];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const currentInfo = await storage.getOrganizationMetadata(organizationId, 'accounts');
|
|
27
|
+
// If there are no accounts for the org, return
|
|
28
|
+
if (!currentInfo) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
//Add the current accounts to the cache
|
|
32
|
+
const currentAccounts = Object.keys(currentInfo);
|
|
33
|
+
for (const account of currentAccounts) {
|
|
34
|
+
existingCache[account] = organizationId;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=accountOrgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountOrgs.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/accountOrgs.ts"],"names":[],"mappings":"AAMA,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAEpC,MAAM,CAAC,MAAM,0BAA0B,GAAoC;IACzE,UAAU,EAAE,eAAe;IAC3B,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,kBAAkB,CACpD,SAAS,EACT,cAAc,EACd,SAAS,CACV,CAAA;QAED,MAAM,cAAc,GAAG,aAAa,EAAE,cAAc,CAAA;QAEpD,6FAA6F;QAC7F,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,oDAAoD;QACpD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;gBACzC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QACrF,+CAA+C;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,GAAG,cAAc,CAAA;QACzC,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apigateways.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/apigateways.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAQvC,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkD7D,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { splitArnParts } from '../../utils/arn.js';
|
|
2
|
+
const indexName = 'apigateways-to-accounts';
|
|
3
|
+
export const ApiGatewayIndexer = {
|
|
4
|
+
awsService: 'apigateway',
|
|
5
|
+
name: 'apigatewaysToAccounts',
|
|
6
|
+
getCache: async (storage) => {
|
|
7
|
+
const data = await storage.getIndex(indexName, {});
|
|
8
|
+
return data;
|
|
9
|
+
},
|
|
10
|
+
saveCache: async (storage, cache, lockId) => {
|
|
11
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
12
|
+
},
|
|
13
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
14
|
+
const regionsSet = new Set(regions);
|
|
15
|
+
const matchesRegion = (region) => {
|
|
16
|
+
return region && (regionsSet.size == 0 || regionsSet.has(region));
|
|
17
|
+
};
|
|
18
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
19
|
+
// Remove all existing gateways for the account in the specified regions
|
|
20
|
+
for (const key of currentCacheKeys) {
|
|
21
|
+
const arnParts = splitArnParts(key);
|
|
22
|
+
if (existingCache[key] == accountId && matchesRegion(arnParts.region)) {
|
|
23
|
+
delete existingCache[key];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const currentGateways = [];
|
|
27
|
+
if (regions.length == 0) {
|
|
28
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
29
|
+
service: 'apigateway',
|
|
30
|
+
region: '*',
|
|
31
|
+
resourceType: 'restapis'
|
|
32
|
+
});
|
|
33
|
+
currentGateways.push(...gateways);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
for (const region of regions) {
|
|
37
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
38
|
+
service: 'apigateway',
|
|
39
|
+
region: region,
|
|
40
|
+
resourceType: 'restapis'
|
|
41
|
+
});
|
|
42
|
+
currentGateways.push(...gateways);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Add the new gateways to the cache
|
|
46
|
+
for (const gateway of currentGateways) {
|
|
47
|
+
existingCache[gateway.arn] = accountId;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=apigateways.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apigateways.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/apigateways.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOlD,MAAM,SAAS,GAAG,yBAAyB,CAAA;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAoC;IAChE,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,wEAAwE;QACxE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAyB,EAAE,CAAA;QAEhD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAqB,SAAS,EAAE;gBACjF,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,UAAU;aACzB,CAAC,CAAA;YACF,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAqB,SAAS,EAAE;oBACjF,OAAO,EAAE,YAAY;oBACrB,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,UAAU;iBACzB,CAAC,CAAA;gBACF,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;QACxC,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/buckets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAUD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAqClE,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const indexName = 'buckets-to-accounts';
|
|
2
|
+
export const S3BucketIndexer = {
|
|
3
|
+
awsService: 's3',
|
|
4
|
+
name: 'bucketsToAccounts',
|
|
5
|
+
getCache: async (storage) => {
|
|
6
|
+
const data = await storage.getIndex(indexName, {});
|
|
7
|
+
return data;
|
|
8
|
+
},
|
|
9
|
+
saveCache: async (storage, cache, lockId) => {
|
|
10
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
11
|
+
},
|
|
12
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
13
|
+
const regionsSet = new Set(regions);
|
|
14
|
+
const matchesRegion = (region) => {
|
|
15
|
+
return region && (regionsSet.size == 0 || regionsSet.has(region));
|
|
16
|
+
};
|
|
17
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
18
|
+
// Remove all existing buckets for the account in the specified regions
|
|
19
|
+
for (const key of currentCacheKeys) {
|
|
20
|
+
if (existingCache[key].accountId == accountId && matchesRegion(existingCache[key].region)) {
|
|
21
|
+
delete existingCache[key];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const currentBuckets = await storage.findResourceMetadata(accountId, {
|
|
25
|
+
service: 's3'
|
|
26
|
+
});
|
|
27
|
+
for (const bucket of currentBuckets) {
|
|
28
|
+
if (matchesRegion(bucket.region)) {
|
|
29
|
+
existingCache[bucket.name] = {
|
|
30
|
+
accountId: accountId,
|
|
31
|
+
region: bucket.region
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=buckets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/buckets.ts"],"names":[],"mappings":"AAaA,MAAM,SAAS,GAAG,qBAAqB,CAAA;AAEvC,MAAM,CAAC,MAAM,eAAe,GAA2C;IACrE,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,uEAAuE;QACvE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1F,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAiB,SAAS,EAAE;YACnF,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;oBAC3B,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAO;iBACvB,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpcEndpoints.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/vpcEndpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AASvC,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAqDhE,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { splitArnParts } from '../../utils/arn.js';
|
|
2
|
+
const indexName = 'vpcs-to-endpoints';
|
|
3
|
+
export const VpcEndpointIndexer = {
|
|
4
|
+
awsService: 'ec2',
|
|
5
|
+
name: 'vpcsToEndpoints',
|
|
6
|
+
getCache: async (storage) => {
|
|
7
|
+
const data = await storage.getIndex(indexName, {});
|
|
8
|
+
return data;
|
|
9
|
+
},
|
|
10
|
+
saveCache: async (storage, cache, lockId) => {
|
|
11
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
12
|
+
},
|
|
13
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
14
|
+
const regionsSet = new Set(regions);
|
|
15
|
+
const matchesRegion = (region) => {
|
|
16
|
+
return region && (regionsSet.size == 0 || regionsSet.has(region));
|
|
17
|
+
};
|
|
18
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
19
|
+
// Remove all existing vpcs for the account in the specified regions
|
|
20
|
+
for (const key of currentCacheKeys) {
|
|
21
|
+
const arnParts = splitArnParts(key);
|
|
22
|
+
if (arnParts.accountId == accountId && matchesRegion(arnParts.region)) {
|
|
23
|
+
delete existingCache[key];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const currentEndpoints = [];
|
|
27
|
+
if (regions.length == 0) {
|
|
28
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
29
|
+
service: 'ec2',
|
|
30
|
+
region: '*',
|
|
31
|
+
resourceType: 'vpc-endpoint'
|
|
32
|
+
});
|
|
33
|
+
currentEndpoints.push(...gateways);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
for (const region of regions) {
|
|
37
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
38
|
+
service: 'ec2',
|
|
39
|
+
region: region,
|
|
40
|
+
resourceType: 'vpc-endpoint'
|
|
41
|
+
});
|
|
42
|
+
currentEndpoints.push(...gateways);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (const endpoint of currentEndpoints) {
|
|
46
|
+
const vpcId = endpoint.vpc;
|
|
47
|
+
if (!existingCache[vpcId]) {
|
|
48
|
+
existingCache[vpcId] = [];
|
|
49
|
+
}
|
|
50
|
+
existingCache[vpcId].push(endpoint.arn);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=vpcEndpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpcEndpoints.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/vpcEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQlD,MAAM,SAAS,GAAG,mBAAmB,CAAA;AAErC,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,oEAAoE;QACpE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAA0B,EAAE,CAAA;QAElD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAsB,SAAS,EAAE;gBAClF,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc;aAC7B,CAAC,CAAA;YACF,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAsB,SAAS,EAAE;oBAClF,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,cAAc;iBAC7B,CAAC,CAAA;gBACF,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;YAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;YAC3B,CAAC;YACD,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { StorageConfig } from '../config/config.js';
|
|
2
|
+
import { JobResult } from '../jobs/jobQueue.js';
|
|
3
|
+
import { Indexer } from './indexer.js';
|
|
4
|
+
/**
|
|
5
|
+
* An index job to run.
|
|
6
|
+
*/
|
|
7
|
+
export interface IndexJob {
|
|
8
|
+
/**
|
|
9
|
+
* The indexer to run.
|
|
10
|
+
*/
|
|
11
|
+
indexer: Indexer<any>;
|
|
12
|
+
/**
|
|
13
|
+
* The account ID to run the indexer for.
|
|
14
|
+
*/
|
|
15
|
+
accountId: string;
|
|
16
|
+
/**
|
|
17
|
+
* The regions to run the indexer for.
|
|
18
|
+
*/
|
|
19
|
+
regions: string[];
|
|
20
|
+
/**
|
|
21
|
+
* The partition to run the indexer for.
|
|
22
|
+
*/
|
|
23
|
+
partition: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run index jobs in parallel with a specified concurrency.
|
|
27
|
+
*
|
|
28
|
+
* @param indexJobs the index jobs to run
|
|
29
|
+
* @param storageConfig the storage configuration to use
|
|
30
|
+
* @param concurrency the number of jobs to run in parallel
|
|
31
|
+
*/
|
|
32
|
+
export declare function runIndexJobs(indexJobs: IndexJob[], storageConfig: StorageConfig, concurrency: number): Promise<JobResult<void, Record<string, unknown>>[]>;
|
|
33
|
+
//# sourceMappingURL=runIndexers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runIndexers.d.ts","sourceRoot":"","sources":["../../../src/indexing/runIndexers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAO,SAAS,EAAW,MAAM,qBAAqB,CAAA;AAG7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,QAAQ,EAAE,EACrB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAiDrD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { runJobs } from '../jobs/jobQueue.js';
|
|
2
|
+
import { createStorageClient } from '../persistence/util.js';
|
|
3
|
+
import { log } from '../utils/log.js';
|
|
4
|
+
/**
|
|
5
|
+
* Run index jobs in parallel with a specified concurrency.
|
|
6
|
+
*
|
|
7
|
+
* @param indexJobs the index jobs to run
|
|
8
|
+
* @param storageConfig the storage configuration to use
|
|
9
|
+
* @param concurrency the number of jobs to run in parallel
|
|
10
|
+
*/
|
|
11
|
+
export async function runIndexJobs(indexJobs, storageConfig, concurrency) {
|
|
12
|
+
const sortedJobs = new Map();
|
|
13
|
+
for (const job of indexJobs) {
|
|
14
|
+
const partition = job.partition;
|
|
15
|
+
const indexerName = job.indexer.name;
|
|
16
|
+
if (!sortedJobs.has(partition)) {
|
|
17
|
+
sortedJobs.set(partition, new Map());
|
|
18
|
+
}
|
|
19
|
+
const partitionJobs = sortedJobs.get(partition);
|
|
20
|
+
if (!partitionJobs.has(indexerName)) {
|
|
21
|
+
partitionJobs.set(indexerName, []);
|
|
22
|
+
}
|
|
23
|
+
partitionJobs.get(indexerName).push(job);
|
|
24
|
+
}
|
|
25
|
+
const jobs = [];
|
|
26
|
+
for (const [partition, partitionJobs] of sortedJobs.entries()) {
|
|
27
|
+
for (const [indexerName, indexerJobs] of partitionJobs.entries()) {
|
|
28
|
+
if (indexerJobs.length === 0) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
jobs.push({
|
|
32
|
+
properties: {
|
|
33
|
+
partition,
|
|
34
|
+
indexerName,
|
|
35
|
+
numIndexers: indexerJobs.length
|
|
36
|
+
},
|
|
37
|
+
execute: async (context) => {
|
|
38
|
+
log.debug('Running indexers', { workerId: context.workerId, ...context.properties });
|
|
39
|
+
await runIndexers(partition, storageConfig, indexerJobs);
|
|
40
|
+
log.trace('Finished indexers', { workerId: context.workerId, ...context.properties });
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
log.debug('Starting indexing', { jobs: jobs.length, concurrency });
|
|
46
|
+
const indexResults = await runJobs(jobs, concurrency);
|
|
47
|
+
const failedIndexes = indexResults.filter((r) => r.status === 'rejected');
|
|
48
|
+
if (failedIndexes.length > 0) {
|
|
49
|
+
log.error('Some indexers failed', { failedJobs: failedIndexes.length });
|
|
50
|
+
for (const failedJob of failedIndexes) {
|
|
51
|
+
log.error('Indexer failed', failedJob.reason, failedJob.properties);
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`Failed to index some data. See logs for details.`);
|
|
54
|
+
}
|
|
55
|
+
log.info('Finished indexing', { jobs: jobs.length });
|
|
56
|
+
return indexResults;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run a set of the same indexer jobs for a given partition.
|
|
60
|
+
* All jobs must use the same indexer
|
|
61
|
+
*
|
|
62
|
+
* @param partition the partition to run the indexer for
|
|
63
|
+
* @param storageConfig the storage configuration to use
|
|
64
|
+
* @param indexerJobs the indexer jobs to run
|
|
65
|
+
*/
|
|
66
|
+
async function runIndexers(partition, storageConfig, indexerJobs) {
|
|
67
|
+
let saved = false;
|
|
68
|
+
let saveAttempts = 0;
|
|
69
|
+
const indexer = indexerJobs[0].indexer;
|
|
70
|
+
const storage = createStorageClient(storageConfig, partition);
|
|
71
|
+
while (!saved && saveAttempts < 3) {
|
|
72
|
+
const cache = await indexer.getCache(storage);
|
|
73
|
+
for (const job of indexerJobs) {
|
|
74
|
+
await indexer.updateCache(cache.data, job.accountId, job.regions, storage);
|
|
75
|
+
}
|
|
76
|
+
saved = await indexer.saveCache(storage, cache.data, cache.lockId);
|
|
77
|
+
saveAttempts++;
|
|
78
|
+
}
|
|
79
|
+
if (!saved) {
|
|
80
|
+
throw new Error(`Failed to save indexer ${indexer.name} after ${saveAttempts} attempts`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=runIndexers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runIndexers.js","sourceRoot":"","sources":["../../../src/indexing/runIndexers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobQueue.d.ts","sourceRoot":"","sources":["../../../src/jobs/jobQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IACtB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,CAAC,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,CAAC,CAAA;CAAE,CAAA;AAEtD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD;;;;;OAKG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,UAAU,EAAE,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAE9D;;OAEG;IACH,UAAU,EAAE,CAAC,CAAA;CACd;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAgC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobQueue.js","sourceRoot":"","sources":["../../../src/jobs/jobQueue.ts"],"names":[],"mappings":"AA+BA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAiB,EACjB,WAAmB;IAEnB,MAAM,OAAO,GAAsB,EAAE,CAAA;IACrC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,oFAAoF;IACpF,KAAK,UAAU,MAAM,CAAC,QAAgB;QACpC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,SAAS,EAAE,CAAA;YACrB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAM;YAE5B,MAAM,OAAO,GAAe;gBAC1B,QAAQ;aACT,CAAA;YAED,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;gBACnF,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;YAC7E,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IAEnC,iCAAiC;IACjC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAE1B,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/jobs/util.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/jobs/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AAEzB;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -87,6 +87,10 @@ export interface AwsIamStore {
|
|
|
87
87
|
* @returns A list of resource identifiers (e.g., role names or ARNs).
|
|
88
88
|
*/
|
|
89
89
|
listResources(accountId: string, options: ResourceTypeParts): Promise<string[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Find all metadata for resource that meet a given set of criteria.
|
|
92
|
+
*/
|
|
93
|
+
findResourceMetadata<T>(accountId: string, options: ResourceTypeParts): Promise<T[]>;
|
|
90
94
|
/**
|
|
91
95
|
* Synchronizes the list of stored resources with the provided list.
|
|
92
96
|
* This method can be used to remove resources that no longer exist in the account.
|
|
@@ -119,6 +123,14 @@ export interface AwsIamStore {
|
|
|
119
123
|
* @param defaultValue the default value to return if the metadata is not found
|
|
120
124
|
*/
|
|
121
125
|
getAccountMetadata<T, D extends T>(accountId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
|
|
126
|
+
/**
|
|
127
|
+
* Get metadata for an AWS Organization
|
|
128
|
+
*
|
|
129
|
+
* @param organizationId the AWS organization ID
|
|
130
|
+
* @param metadataType the type of metadata to retrieve (e.g., "metadata")
|
|
131
|
+
* @param defaultValue the default value to return if the metadata is not found
|
|
132
|
+
*/
|
|
133
|
+
getOrganizationMetadata<T, D extends T>(organizationId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
|
|
122
134
|
/**
|
|
123
135
|
* Save metadata for an AWS Organization
|
|
124
136
|
*
|
|
@@ -243,5 +255,29 @@ export interface AwsIamStore {
|
|
|
243
255
|
* @returns The resource data if found, otherwise the default value if provided, otherwise undefined
|
|
244
256
|
*/
|
|
245
257
|
getRamResource<T, D extends T>(accountId: string, arn: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
|
|
258
|
+
/**
|
|
259
|
+
* List the account IDs that have directories in the store
|
|
260
|
+
*/
|
|
261
|
+
listAccountIds(): Promise<string[]>;
|
|
262
|
+
/**
|
|
263
|
+
* Get an index for a given index name.
|
|
264
|
+
*
|
|
265
|
+
* @param indexName the name of the index to retrieve
|
|
266
|
+
* @param defaultValue the default value to return if the index is not found
|
|
267
|
+
* @return the index data and lock ID
|
|
268
|
+
*/
|
|
269
|
+
getIndex<T>(indexName: string, defaultValue: T): Promise<{
|
|
270
|
+
data: T;
|
|
271
|
+
lockId: string;
|
|
272
|
+
}>;
|
|
273
|
+
/**
|
|
274
|
+
* Save an index with an optimistic locking check
|
|
275
|
+
*
|
|
276
|
+
* @param indexName the name of the index to save
|
|
277
|
+
* @param data the index data to save
|
|
278
|
+
* @param lockId the lock ID to use for optimistic locking
|
|
279
|
+
* @return true if the index was saved successfully, false if there was an optimistic locking failure
|
|
280
|
+
*/
|
|
281
|
+
saveIndex<T>(indexName: string, data: T, lockId: string): Promise<boolean>;
|
|
246
282
|
}
|
|
247
283
|
//# sourceMappingURL=AwsIamStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwsIamStore.d.ts","sourceRoot":"","sources":["../../../src/persistence/AwsIamStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AwsIamStore.d.ts","sourceRoot":"","sources":["../../../src/persistence/AwsIamStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PathBasedPersistenceAdapter } from './PathBasedPersistenceAdapter.js';
|
|
2
|
+
export declare class InMemoryPathBasedPersistenceAdapter implements PathBasedPersistenceAdapter {
|
|
3
|
+
private fileSystem;
|
|
4
|
+
writeFile(filePath: string, data: string | Buffer): Promise<void>;
|
|
5
|
+
writeWithOptimisticLock(filePath: string, data: string | Buffer, lockId: string): Promise<boolean>;
|
|
6
|
+
readFile(filePath: string): Promise<string | undefined>;
|
|
7
|
+
readFileWithHash(filePath: string): Promise<{
|
|
8
|
+
data: string;
|
|
9
|
+
hash: string;
|
|
10
|
+
} | undefined>;
|
|
11
|
+
deleteFile(filePath: string): Promise<void>;
|
|
12
|
+
deleteDirectory(dirPath: string): Promise<void>;
|
|
13
|
+
listDirectory(dirPath: string): Promise<string[]>;
|
|
14
|
+
findWithPattern(baseDir: string, pathParts: string[], filename: string): Promise<string[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=InMemoryPathBasedPersistenceAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryPathBasedPersistenceAdapter.d.ts","sourceRoot":"","sources":["../../../src/persistence/InMemoryPathBasedPersistenceAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAE9E,qBAAa,mCAAoC,YAAW,2BAA2B;IACrF,OAAO,CAAC,UAAU,CAA6B;IAEzC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IASb,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIvD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAcvF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcjD,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAiBjG"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
export class InMemoryPathBasedPersistenceAdapter {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.fileSystem = {};
|
|
5
|
+
}
|
|
6
|
+
async writeFile(filePath, data) {
|
|
7
|
+
this.fileSystem[filePath] = data.toString();
|
|
8
|
+
}
|
|
9
|
+
async writeWithOptimisticLock(filePath, data, lockId) {
|
|
10
|
+
const currentData = await this.readFileWithHash(filePath);
|
|
11
|
+
if (currentData && currentData.hash !== lockId) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
await this.writeFile(filePath, data);
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
async readFile(filePath) {
|
|
18
|
+
return this.fileSystem[filePath];
|
|
19
|
+
}
|
|
20
|
+
async readFileWithHash(filePath) {
|
|
21
|
+
const contents = this.fileSystem[filePath];
|
|
22
|
+
if (!contents) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const hash = createHash('sha256');
|
|
26
|
+
hash.update(contents);
|
|
27
|
+
return {
|
|
28
|
+
data: contents,
|
|
29
|
+
hash: hash.digest('hex')
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async deleteFile(filePath) {
|
|
33
|
+
delete this.fileSystem[filePath];
|
|
34
|
+
}
|
|
35
|
+
async deleteDirectory(dirPath) {
|
|
36
|
+
for (const key in this.fileSystem) {
|
|
37
|
+
if (key.startsWith(dirPath + '/')) {
|
|
38
|
+
delete this.fileSystem[key];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async listDirectory(dirPath) {
|
|
43
|
+
const keys = Object.keys(this.fileSystem).filter((key) => key.startsWith(dirPath + '/'));
|
|
44
|
+
const allMatches = new Set(keys.map((key) => key
|
|
45
|
+
.slice(dirPath.length + 1)
|
|
46
|
+
.split('/')
|
|
47
|
+
.at(0)));
|
|
48
|
+
return Array.from(allMatches);
|
|
49
|
+
}
|
|
50
|
+
async findWithPattern(baseDir, pathParts, filename) {
|
|
51
|
+
//convert the parts to a regex where some parts may have "*"
|
|
52
|
+
const regexParts = pathParts.map((part) => {
|
|
53
|
+
if (part === '*') {
|
|
54
|
+
return '[^/]+';
|
|
55
|
+
}
|
|
56
|
+
return part;
|
|
57
|
+
});
|
|
58
|
+
const regex = new RegExp(`^${baseDir}/(${regexParts.join('/')})/${filename}$`);
|
|
59
|
+
const result = [];
|
|
60
|
+
for (const key in this.fileSystem) {
|
|
61
|
+
if (regex.test(key)) {
|
|
62
|
+
result.push(this.fileSystem[key]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=InMemoryPathBasedPersistenceAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryPathBasedPersistenceAdapter.js","sourceRoot":"","sources":["../../../src/persistence/InMemoryPathBasedPersistenceAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface PathBasedPersistenceAdapter {
|
|
2
|
+
/**
|
|
3
|
+
* Ensure the directory exists and write data to a file
|
|
4
|
+
*/
|
|
5
|
+
writeFile(filePath: string, data: string | Buffer): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Write with optimistic locking: only overwrite if current hash matches lockId
|
|
8
|
+
*/
|
|
9
|
+
writeWithOptimisticLock(filePath: string, data: string | Buffer, lockId: string): Promise<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Read a file’s contents; return undefined if it does not exist
|
|
12
|
+
*/
|
|
13
|
+
readFile(filePath: string): Promise<string | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* Read a file’s contents and compute its SHA‑256 hash; return undefined if missing
|
|
16
|
+
*/
|
|
17
|
+
readFileWithHash(filePath: string): Promise<{
|
|
18
|
+
data: string;
|
|
19
|
+
hash: string;
|
|
20
|
+
} | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* Delete a single file; ignore if it doesn’t exist
|
|
23
|
+
*/
|
|
24
|
+
deleteFile(filePath: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Recursively delete a directory; ignore if it doesn’t exist
|
|
27
|
+
*/
|
|
28
|
+
deleteDirectory(dirPath: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* List top‐level entries in a directory; return empty array if missing
|
|
31
|
+
*/
|
|
32
|
+
listDirectory(dirPath: string): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Find files matching a pattern under baseDir, with wildcards in pathParts
|
|
35
|
+
*/
|
|
36
|
+
findWithPattern(baseDir: string, pathParts: string[], filename: string): Promise<string[]>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=PathBasedPersistenceAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathBasedPersistenceAdapter.d.ts","sourceRoot":"","sources":["../../../src/persistence/PathBasedPersistenceAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAElG;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAEvD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAEvF;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3C;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAEjD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC3F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathBasedPersistenceAdapter.js","sourceRoot":"","sources":["../../../src/persistence/PathBasedPersistenceAdapter.ts"],"names":[],"mappings":""}
|