2023-08-25 01:33:46 -07:00
|
|
|
import type { SecretsProvider } from '@/Interfaces';
|
|
|
|
import { Service } from 'typedi';
|
|
|
|
import { InfisicalProvider } from './providers/infisical';
|
|
|
|
import { VaultProvider } from './providers/vault';
|
2024-03-28 02:15:58 -07:00
|
|
|
import { AwsSecretsManager } from './providers/aws-secrets/aws-secrets-manager';
|
2023-08-25 01:33:46 -07:00
|
|
|
|
|
|
|
@Service()
|
|
|
|
export class ExternalSecretsProviders {
|
|
|
|
providers: Record<string, { new (): SecretsProvider }> = {
|
2024-03-28 02:15:58 -07:00
|
|
|
awsSecretsManager: AwsSecretsManager,
|
2023-08-25 01:33:46 -07:00
|
|
|
infisical: InfisicalProvider,
|
|
|
|
vault: VaultProvider,
|
|
|
|
};
|
|
|
|
|
|
|
|
getProvider(name: string): { new (): SecretsProvider } | null {
|
|
|
|
return this.providers[name] ?? null;
|
|
|
|
}
|
|
|
|
|
|
|
|
hasProvider(name: string) {
|
|
|
|
return name in this.providers;
|
|
|
|
}
|
|
|
|
|
|
|
|
getAllProviders() {
|
|
|
|
return this.providers;
|
|
|
|
}
|
|
|
|
}
|