UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

34 lines 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const DEFAULT_INTERVAL = 1000; const DEFAULT_MAX_ATTEMPTS = 10; /** * Runs a function on an interval until the maximum number of attempts has * been reached. * * Default interval = 1000 milliseconds * Default maxAttempts = 10 * * @param fn - function to run * @param options - EventuallyOptions */ const eventually = async (call, options) => { const opts = { interval: options?.interval ? options.interval : DEFAULT_INTERVAL, maxAttempts: options?.maxAttempts ? options.maxAttempts : DEFAULT_MAX_ATTEMPTS, }; while (opts.maxAttempts-- >= 0) { try { return await call(); } catch (err) { if (opts.maxAttempts <= 0) throw err; } await wait(opts.interval); } throw new Error('An unexpected error has occurred.'); }; exports.default = eventually; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnR1YWxseS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV2ZW50dWFsbHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxNQUFNLElBQUksR0FBRyxDQUFDLEVBQVUsRUFBaUIsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDOUIsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFaEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFLLElBQXNCLEVBQUUsT0FBMkIsRUFBYyxFQUFFO0lBQzlGLE1BQU0sSUFBSSxHQUFHO1FBQ1gsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtRQUNqRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0tBQy9FLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQztnQkFBRSxNQUFNLEdBQUcsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0gbWF4QXR0ZW1wdHMgLSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHNcbiAqIEBwYXJhbSBpbnRlcnZhbCAtIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBvYnNlcnZlIGJldHdlZW4gYXR0ZW1wdHNcbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnR1YWxseU9wdGlvbnMgPSB7XG4gIG1heEF0dGVtcHRzPzogbnVtYmVyO1xuICBpbnRlcnZhbD86IG51bWJlcjtcbn07XG5cbmNvbnN0IHdhaXQgPSAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbmNvbnN0IERFRkFVTFRfSU5URVJWQUwgPSAxMDAwO1xuY29uc3QgREVGQVVMVF9NQVhfQVRURU1QVFMgPSAxMDtcblxuLyoqXG4gKiBSdW5zIGEgZnVuY3Rpb24gb24gYW4gaW50ZXJ2YWwgdW50aWwgdGhlIG1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRzIGhhc1xuICogYmVlbiByZWFjaGVkLlxuICpcbiAqIERlZmF1bHQgaW50ZXJ2YWwgPSAxMDAwIG1pbGxpc2Vjb25kc1xuICogRGVmYXVsdCBtYXhBdHRlbXB0cyA9IDEwXG4gKlxuICogQHBhcmFtIGZuIC0gZnVuY3Rpb24gdG8gcnVuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEV2ZW50dWFsbHlPcHRpb25zXG4gKi9cbmNvbnN0IGV2ZW50dWFsbHkgPSBhc3luYyA8VD4oY2FsbDogKCkgPT4gUHJvbWlzZTxUPiwgb3B0aW9ucz86IEV2ZW50dWFsbHlPcHRpb25zKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IG9wdHMgPSB7XG4gICAgaW50ZXJ2YWw6IG9wdGlvbnM/LmludGVydmFsID8gb3B0aW9ucy5pbnRlcnZhbCA6IERFRkFVTFRfSU5URVJWQUwsXG4gICAgbWF4QXR0ZW1wdHM6IG9wdGlvbnM/Lm1heEF0dGVtcHRzID8gb3B0aW9ucy5tYXhBdHRlbXB0cyA6IERFRkFVTFRfTUFYX0FUVEVNUFRTLFxuICB9O1xuXG4gIHdoaWxlIChvcHRzLm1heEF0dGVtcHRzLS0gPj0gMCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgY2FsbCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKG9wdHMubWF4QXR0ZW1wdHMgPD0gMCkgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBhd2FpdCB3YWl0KG9wdHMuaW50ZXJ2YWwpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdBbiB1bmV4cGVjdGVkIGVycm9yIGhhcyBvY2N1cnJlZC4nKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV2ZW50dWFsbHk7XG4iXX0=