27 lines
1.3 KiB
JavaScript
27 lines
1.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.fromSharedConfigFiles = void 0;
|
|
const property_provider_1 = require("@aws-sdk/property-provider");
|
|
const shared_ini_file_loader_1 = require("@aws-sdk/shared-ini-file-loader");
|
|
const fromSharedConfigFiles = (configSelector, { preferredFile = "config", ...init } = {}) => async () => {
|
|
const profile = (0, shared_ini_file_loader_1.getProfileName)(init);
|
|
const { configFile, credentialsFile } = await (0, shared_ini_file_loader_1.loadSharedConfigFiles)(init);
|
|
const profileFromCredentials = credentialsFile[profile] || {};
|
|
const profileFromConfig = configFile[profile] || {};
|
|
const mergedProfile = preferredFile === "config"
|
|
? { ...profileFromCredentials, ...profileFromConfig }
|
|
: { ...profileFromConfig, ...profileFromCredentials };
|
|
try {
|
|
const configValue = configSelector(mergedProfile);
|
|
if (configValue === undefined) {
|
|
throw new Error();
|
|
}
|
|
return configValue;
|
|
}
|
|
catch (e) {
|
|
throw new property_provider_1.CredentialsProviderError(e.message ||
|
|
`Cannot load config for profile ${profile} in SDK configuration files with getter: ${configSelector}`);
|
|
}
|
|
};
|
|
exports.fromSharedConfigFiles = fromSharedConfigFiles;
|