40 lines
2.3 KiB
JavaScript
40 lines
2.3 KiB
JavaScript
|
import { fromEnv } from "@aws-sdk/credential-provider-env";
|
||
|
import { chain, CredentialsProviderError, memoize } from "@smithy/property-provider";
|
||
|
import { ENV_PROFILE } from "@smithy/shared-ini-file-loader";
|
||
|
import { remoteProvider } from "./remoteProvider";
|
||
|
export const defaultProvider = (init = {}) => memoize(chain(...(init.profile || process.env[ENV_PROFILE]
|
||
|
? []
|
||
|
: [
|
||
|
async () => {
|
||
|
init.logger?.debug("@aws-sdk/credential-provider-node", "defaultProvider::fromEnv");
|
||
|
return fromEnv(init)();
|
||
|
},
|
||
|
]), async () => {
|
||
|
init.logger?.debug("@aws-sdk/credential-provider-node", "defaultProvider::fromSSO");
|
||
|
const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;
|
||
|
if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {
|
||
|
throw new CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).");
|
||
|
}
|
||
|
const { fromSSO } = await import("@aws-sdk/credential-provider-sso");
|
||
|
return fromSSO(init)();
|
||
|
}, async () => {
|
||
|
init.logger?.debug("@aws-sdk/credential-provider-node", "defaultProvider::fromIni");
|
||
|
const { fromIni } = await import("@aws-sdk/credential-provider-ini");
|
||
|
return fromIni(init)();
|
||
|
}, async () => {
|
||
|
init.logger?.debug("@aws-sdk/credential-provider-node", "defaultProvider::fromProcess");
|
||
|
const { fromProcess } = await import("@aws-sdk/credential-provider-process");
|
||
|
return fromProcess(init)();
|
||
|
}, async () => {
|
||
|
init.logger?.debug("@aws-sdk/credential-provider-node", "defaultProvider::fromTokenFile");
|
||
|
const { fromTokenFile } = await import("@aws-sdk/credential-provider-web-identity");
|
||
|
return fromTokenFile(init)();
|
||
|
}, async () => {
|
||
|
init.logger?.debug("@aws-sdk/credential-provider-node", "defaultProvider::remoteProvider");
|
||
|
return (await remoteProvider(init))();
|
||
|
}, async () => {
|
||
|
throw new CredentialsProviderError("Could not load credentials from any providers", false);
|
||
|
}), credentialsTreatedAsExpired, credentialsWillNeedRefresh);
|
||
|
export const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined;
|
||
|
export const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000;
|