UNPKG

@aws-cdk/integ-runner

Version:

CDK Integration Testing Tool

57 lines 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProxyAgentProvider = void 0; const fs = require("fs-extra"); const proxy_agent_1 = require("proxy-agent"); /** * Cached provider for proxy-aware HTTP agents. * * Reuses the same ProxyAgent instance for identical configurations * to avoid creating multiple agents across engine instances. */ class ProxyAgentProvider { /** * Get or create a ProxyAgent for the given options. * Returns a cached instance if one already exists for the same configuration. */ static getOrCreate(options = {}) { const key = JSON.stringify([options.proxyAddress, options.caBundlePath]); const cached = ProxyAgentProvider.cache.get(key); if (cached) { return cached; } const getProxyForUrl = options.proxyAddress != null ? () => Promise.resolve(options.proxyAddress) : undefined; const agent = new proxy_agent_1.ProxyAgent({ ca: tryReadCaBundle(options.caBundlePath), getProxyForUrl, }); ProxyAgentProvider.cache.set(key, agent); return agent; } /** * Clear the cache. Intended for testing only. */ static clearCache() { ProxyAgentProvider.cache.clear(); } static cache = new Map(); } exports.ProxyAgentProvider = ProxyAgentProvider; /** * Try to read a CA bundle from the given path, or from the AWS_CA_BUNDLE environment variable. */ function tryReadCaBundle(bundlePath) { const resolvedPath = bundlePath ?? process.env.AWS_CA_BUNDLE ?? process.env.aws_ca_bundle; if (!resolvedPath) { return undefined; } try { return fs.readFileSync(resolvedPath, 'utf-8'); } catch { return undefined; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHktYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm94eS1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsNkNBQXlDO0FBcUJ6Qzs7Ozs7R0FLRztBQUNILE1BQWEsa0JBQWtCO0lBQzdCOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBNkIsRUFBRTtRQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUV6RSxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ2pELENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFhLENBQUM7WUFDOUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLE1BQU0sS0FBSyxHQUFHLElBQUksd0JBQVUsQ0FBQztZQUMzQixFQUFFLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDekMsY0FBYztTQUNmLENBQUMsQ0FBQztRQUVILGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFVBQVU7UUFDdEIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDOztBQWpDaEUsZ0RBa0NDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxVQUFtQjtJQUMxQyxNQUFNLFlBQVksR0FBRyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDMUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IFByb3h5QWdlbnQgfSBmcm9tICdwcm94eS1hZ2VudCc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBwcm94eSBhZ2VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5QWdlbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb3h5IGFkZHJlc3MgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUHJveHlBZ2VudCBhdXRvLWRldGVjdHMgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHByb3h5QWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwYXRoIHRvIGEgY2VydGlmaWNhdGUgYnVuZGxlIHRoYXQgY29udGFpbnMgYSBjZXJ0IHRvIGJlIHRydXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVhZHMgZnJvbSBBV1NfQ0FfQlVORExFIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqL1xuICByZWFkb25seSBjYUJ1bmRsZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FjaGVkIHByb3ZpZGVyIGZvciBwcm94eS1hd2FyZSBIVFRQIGFnZW50cy5cbiAqXG4gKiBSZXVzZXMgdGhlIHNhbWUgUHJveHlBZ2VudCBpbnN0YW5jZSBmb3IgaWRlbnRpY2FsIGNvbmZpZ3VyYXRpb25zXG4gKiB0byBhdm9pZCBjcmVhdGluZyBtdWx0aXBsZSBhZ2VudHMgYWNyb3NzIGVuZ2luZSBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm94eUFnZW50UHJvdmlkZXIge1xuICAvKipcbiAgICogR2V0IG9yIGNyZWF0ZSBhIFByb3h5QWdlbnQgZm9yIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgKiBSZXR1cm5zIGEgY2FjaGVkIGluc3RhbmNlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHNhbWUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUob3B0aW9uczogUHJveHlBZ2VudE9wdGlvbnMgPSB7fSk6IFByb3h5QWdlbnQge1xuICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtvcHRpb25zLnByb3h5QWRkcmVzcywgb3B0aW9ucy5jYUJ1bmRsZVBhdGhdKTtcblxuICAgIGNvbnN0IGNhY2hlZCA9IFByb3h5QWdlbnRQcm92aWRlci5jYWNoZS5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkO1xuICAgIH1cblxuICAgIGNvbnN0IGdldFByb3h5Rm9yVXJsID0gb3B0aW9ucy5wcm94eUFkZHJlc3MgIT0gbnVsbFxuICAgICAgPyAoKSA9PiBQcm9taXNlLnJlc29sdmUob3B0aW9ucy5wcm94eUFkZHJlc3MhKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhZ2VudCA9IG5ldyBQcm94eUFnZW50KHtcbiAgICAgIGNhOiB0cnlSZWFkQ2FCdW5kbGUob3B0aW9ucy5jYUJ1bmRsZVBhdGgpLFxuICAgICAgZ2V0UHJveHlGb3JVcmwsXG4gICAgfSk7XG5cbiAgICBQcm94eUFnZW50UHJvdmlkZXIuY2FjaGUuc2V0KGtleSwgYWdlbnQpO1xuICAgIHJldHVybiBhZ2VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgY2FjaGUuIEludGVuZGVkIGZvciB0ZXN0aW5nIG9ubHkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgUHJveHlBZ2VudFByb3ZpZGVyLmNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBQcm94eUFnZW50PigpO1xufVxuXG4vKipcbiAqIFRyeSB0byByZWFkIGEgQ0EgYnVuZGxlIGZyb20gdGhlIGdpdmVuIHBhdGgsIG9yIGZyb20gdGhlIEFXU19DQV9CVU5ETEUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKi9cbmZ1bmN0aW9uIHRyeVJlYWRDYUJ1bmRsZShidW5kbGVQYXRoPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWRQYXRoID0gYnVuZGxlUGF0aCA/PyBwcm9jZXNzLmVudi5BV1NfQ0FfQlVORExFID8/IHByb2Nlc3MuZW52LmF3c19jYV9idW5kbGU7XG4gIGlmICghcmVzb2x2ZWRQYXRoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocmVzb2x2ZWRQYXRoLCAndXRmLTgnKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19