function createDefaultResolvers()

in lib/index.js [26:72]


function createDefaultResolvers(libraryOptions) {
  // The core environment resolver is used to make sure that the
  // right variables are used for KeyVault or other boostrapping
  const environmentProvider = libraryOptions.environmentProvider || painlessConfigAsCode(libraryOptions);

  try {
    environmentProvider.get(); // for init
  } catch (ignoreError) {
    console.warn(ignoreError);
  }
  const environmentOptions = {
    provider: environmentProvider,
  };
  const volumeResolver = volumeConfigurationResolver(environmentOptions);
  const keyVaultOptions = {
    getClientCredentials: async () => {
      unshiftOptionalVariable(keyVaultClientIdFallbacks, environmentProvider, 'KEYVAULT_CLIENT_ID_KEY');
      unshiftOptionalVariable(keyVaultClientSecretFallbacks, environmentProvider, 'KEYVAULT_CLIENT_SECRET_KEY');
      async function getEnvironmentOrVolumeValue(fallbacks) {
        let value = getEnvironmentValue(environmentProvider, fallbacks);
        const asVolumeFile = volumeResolver.isVolumeFile(value);
        if (asVolumeFile) {
          value = await volumeResolver.resolveVolumeFile(environmentProvider, asVolumeFile);
        }
        return value;
      }
      const clientId = await getEnvironmentOrVolumeValue(keyVaultClientIdFallbacks);
      const clientSecret = await getEnvironmentOrVolumeValue(keyVaultClientSecretFallbacks);
      if (clientId && clientSecret) {
        return {
          clientId: clientId,
          clientSecret: clientSecret,
        };
      }
    },
  };

  const resolvers = [
    environmentConfigurationResolver(environmentOptions).resolveObjectVariables,
    volumeResolver.resolveVolumeFiles,
    keyVaultConfigurationResolver(keyVaultOptions).getObjectSecrets,
  ];

  resolvers.environment = environmentProvider;

  return resolvers;
}