@cloud-copilot/iam-collect
Version:
Collect IAM information from AWS Accounts
107 lines • 5.92 kB
TypeScript
import { type AwsIamStore, type OrganizationPolicyType, type ResourceTypeParts } from '../AwsIamStore.js';
import { type PathBasedPersistenceAdapter } from '../PathBasedPersistenceAdapter.js';
export declare class FileSystemAwsIamStore implements AwsIamStore {
private readonly baseFolder;
private readonly separator;
private fsAdapter;
constructor(baseFolder: string, partition: string, separator: string, fsAdapter: PathBasedPersistenceAdapter);
private organizationPath;
private organizationMetadataPath;
private organizationalUnitsPath;
private organizationalUnitPath;
private organizationPoliciesPath;
private organizationPolicyPath;
private organizationPolicyMetadataPath;
private organizationalUnitMetadataPath;
private accountsPath;
private accountPath;
private accountMetadataPath;
private buildResourcePath;
private buildMetadataPath;
/**
* Root RAM folder for a given account.
*/
private ramRootPath;
/**
* Folder under ramRootPath for a specific region (or 'global').
*/
private ramRegionPath;
/**
* File name for a given resource ARN: replace ':' and '/' with '-'
*/
private ramFileNameForArn;
/**
* Full path to the RAM policy file for this ARN in region.
*/
private ramPolicyFilePath;
/**
* Get the path to the indexes directory.
*
* @returns The path to the indexes directory.
*/
private indexesPath;
/**
* The path to the index file for a given index name.
*
* @param indexName the name of the index
* @returns The path to the index file.
*/
private indexPath;
saveResourceMetadata(accountId: string, arn: string, metadataType: string, data: string | any): Promise<void>;
listResourceMetadata(accountId: string, arn: string): Promise<string[]>;
getResourceMetadata<T, D extends T>(accountId: string, arn: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
deleteResourceMetadata(accountId: string, arn: string, metadataType: string): Promise<void>;
deleteResource(accountId: string, arn: string): Promise<void>;
listResources(accountId: string, options: ResourceTypeParts): Promise<string[]>;
findResourceMetadata<T>(accountId: string, options: ResourceTypeParts): Promise<T[]>;
syncResourceList(accountId: string, options: ResourceTypeParts, desiredResources: string[]): Promise<void>;
deleteAccountMetadata(accountId: string, metadataType: string): Promise<void>;
saveAccountMetadata(accountId: string, metadataType: string, data: any): Promise<void>;
getAccountMetadata<T, D extends T>(accountId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
getOrganizationMetadata<T, D extends T>(organizationId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
saveOrganizationMetadata(organizationId: string, metadataType: string, data: any): Promise<void>;
deleteOrganizationMetadata(organizationId: string, metadataType: string): Promise<void>;
listOrganizationalUnits(organizationId: string): Promise<string[]>;
deleteOrganizationalUnitMetadata(organizationId: string, ouId: string, metadataType: string): Promise<void>;
saveOrganizationalUnitMetadata(organizationId: string, ouId: string, metadataType: string, data: any): Promise<void>;
getOrganizationalUnitMetadata<T, D extends T>(organizationId: string, ouId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
deleteOrganizationalUnit(organizationId: string, ouId: string): Promise<void>;
deleteOrganizationPolicyMetadata(organizationId: string, policyType: OrganizationPolicyType, policyId: string, metadataType: string): Promise<void>;
saveOrganizationPolicyMetadata(organizationId: string, policyType: OrganizationPolicyType, policyId: string, metadataType: string, data: any): Promise<void>;
getOrganizationPolicyMetadata<T, D extends T>(organizationId: string, policyType: OrganizationPolicyType, policyId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
deleteOrganizationPolicy(organizationId: string, policyType: OrganizationPolicyType, policyId: string): Promise<void>;
listOrganizationPolicies(organizationId: string, policyType: OrganizationPolicyType): Promise<string[]>;
syncRamResources(accountId: string, region: string | undefined, arns: string[]): Promise<void>;
saveRamResource(accountId: string, arn: string, data: any): Promise<void>;
getRamResource<T, D extends T>(accountId: string, arn: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
listAccountIds(): Promise<string[]>;
getIndex<T>(indexName: string, defaultValue: T): Promise<{
data: T;
lockId: string;
}>;
saveIndex(indexName: string, data: any, lockId: string): Promise<boolean>;
writeBatch(fn: () => Promise<void>): Promise<void>;
/**
* Checks if a given content value is empty.
*
* @param content The content to check.
* @returns true if the content is empty, false otherwise.
*/
private isEmptyContent;
/**
* Read the content of a file or return a default value if the file does not exist.
*
* @param filePath the path to the file
* @param defaultValue the default value to return if the file does not exist
* @returns the content of the file or the default value
*/
private contentOrDefault;
/**
* Either saves the provided data to a file or deletes the file if the data is empty.
*
* @param filePath the path to the file
* @param data the data to save in the file
*/
private saveOrDeleteFile;
}
//# sourceMappingURL=FileSystemAwsIamStore.d.ts.map