aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
24 lines • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeCachingProvider = makeCachingProvider;
exports.credentialsAboutToExpire = credentialsAboutToExpire;
const property_provider_1 = require("@smithy/property-provider");
/**
* Wrap a credential provider in a cache
*
* Some credential providers in the SDKv3 are cached (the default Node
* chain, specifically) but most others are not.
*
* Since we want to avoid duplicate calls to `AssumeRole`, or duplicate
* MFA prompts or what have you, we are going to liberally wrap providers
* in caches which will return the cached value until it expires.
*/
function makeCachingProvider(provider) {
return (0, property_provider_1.memoize)(provider, credentialsAboutToExpire, (token) => !!token.expiration);
}
function credentialsAboutToExpire(token) {
const expiryMarginSecs = 5;
// token.expiration is sometimes null
return !!token.expiration && token.expiration.getTime() - Date.now() < expiryMarginSecs * 1000;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItY2FjaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb3ZpZGVyLWNhY2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxrREFNQztBQUVELDREQUlDO0FBekJELGlFQUFvRDtBQUdwRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxRQUF1QztJQUN6RSxPQUFPLElBQUEsMkJBQU8sRUFDWixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDOUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxLQUE0QjtJQUNuRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUMzQixxQ0FBcUM7SUFDckMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDakcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lbW9pemUgfSBmcm9tICdAc21pdGh5L3Byb3BlcnR5LXByb3ZpZGVyJztcbmltcG9ydCB7IEF3c0NyZWRlbnRpYWxJZGVudGl0eSwgQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfSBmcm9tICdAc21pdGh5L3R5cGVzJztcblxuLyoqXG4gKiBXcmFwIGEgY3JlZGVudGlhbCBwcm92aWRlciBpbiBhIGNhY2hlXG4gKlxuICogU29tZSBjcmVkZW50aWFsIHByb3ZpZGVycyBpbiB0aGUgU0RLdjMgYXJlIGNhY2hlZCAodGhlIGRlZmF1bHQgTm9kZVxuICogY2hhaW4sIHNwZWNpZmljYWxseSkgYnV0IG1vc3Qgb3RoZXJzIGFyZSBub3QuXG4gKlxuICogU2luY2Ugd2Ugd2FudCB0byBhdm9pZCBkdXBsaWNhdGUgY2FsbHMgdG8gYEFzc3VtZVJvbGVgLCBvciBkdXBsaWNhdGVcbiAqIE1GQSBwcm9tcHRzIG9yIHdoYXQgaGF2ZSB5b3UsIHdlIGFyZSBnb2luZyB0byBsaWJlcmFsbHkgd3JhcCBwcm92aWRlcnNcbiAqIGluIGNhY2hlcyB3aGljaCB3aWxsIHJldHVybiB0aGUgY2FjaGVkIHZhbHVlIHVudGlsIGl0IGV4cGlyZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FjaGluZ1Byb3ZpZGVyKHByb3ZpZGVyOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcik6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHtcbiAgcmV0dXJuIG1lbW9pemUoXG4gICAgcHJvdmlkZXIsXG4gICAgY3JlZGVudGlhbHNBYm91dFRvRXhwaXJlLFxuICAgICh0b2tlbikgPT4gISF0b2tlbi5leHBpcmF0aW9uLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlZGVudGlhbHNBYm91dFRvRXhwaXJlKHRva2VuOiBBd3NDcmVkZW50aWFsSWRlbnRpdHkpIHtcbiAgY29uc3QgZXhwaXJ5TWFyZ2luU2VjcyA9IDU7XG4gIC8vIHRva2VuLmV4cGlyYXRpb24gaXMgc29tZXRpbWVzIG51bGxcbiAgcmV0dXJuICEhdG9rZW4uZXhwaXJhdGlvbiAmJiB0b2tlbi5leHBpcmF0aW9uLmdldFRpbWUoKSAtIERhdGUubm93KCkgPCBleHBpcnlNYXJnaW5TZWNzICogMTAwMDtcbn1cbiJdfQ==