< Summary - Envilder CLI

Information
Class: src/envilder/core/infrastructure/aws/AwsSecretProviderFactory.ts
Assembly: Default
File(s): src/envilder/core/infrastructure/aws/AwsSecretProviderFactory.ts
Tag: 427_29134414720
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 38
Line coverage: 100%
Branch coverage
87%
Covered branches: 7
Total branches: 8
Branch coverage: 87.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

src/envilder/core/infrastructure/aws/AwsSecretProviderFactory.ts

#LineLine coverage
 1import { SSM } from '@aws-sdk/client-ssm';
 2import { STS } from '@aws-sdk/client-sts';
 3import type { MapFileConfig } from '../../domain/MapFileConfig.js';
 4import type { ILogger } from '../../domain/ports/ILogger.js';
 5import type { ISecretProvider } from '../../domain/ports/ISecretProvider.js';
 6import { AwsSsmSecretProvider } from './AwsSsmSecretProvider.js';
 7
 8export async function resolveRegionWithFallback(
 9  profile?: string,
 10): Promise<string> {
 411  if (process.env.AWS_REGION) {
 112    return process.env.AWS_REGION;
 13  }
 314  if (process.env.AWS_DEFAULT_REGION) {
 115    return process.env.AWS_DEFAULT_REGION;
 16  }
 217  try {
 218    return await new SSM(profile ? { profile } : {}).config.region();
 19  } catch {
 120    return 'us-east-1';
 21  }
 22}
 23
 24export function createAwsSecretProvider(
 25  config: MapFileConfig,
 26  logger: ILogger,
 27): ISecretProvider {
 2628  const { profile } = config;
 2629  const region = () => resolveRegionWithFallback(profile);
 2630  const clientConfig = profile ? { profile, region } : { region };
 2631  const ssm = new SSM(clientConfig);
 2632  const sts = new STS({
 33    ...clientConfig,
 34    maxAttempts: 1,
 35    requestHandler: { requestTimeout: 2000 },
 36  });
 2637  return new AwsSsmSecretProvider(ssm, logger, sts, profile);
 38}