UNPKG

@aws-cdk/integ-runner

Version:

CDK Integration Testing Tool

1,345 lines (1,327 loc) 1.25 MB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // ../../../node_modules/workerpool/src/requireFoolWebpack.js var require_requireFoolWebpack = __commonJS({ "../../../node_modules/workerpool/src/requireFoolWebpack.js"(exports, module) { var requireFoolWebpack = eval( `typeof require !== 'undefined' ? require : function (module) { throw new Error('Module " + module + " not found.') }` ); module.exports = requireFoolWebpack; } }); // ../../../node_modules/workerpool/src/environment.js var require_environment = __commonJS({ "../../../node_modules/workerpool/src/environment.js"(exports2, module2) { var requireFoolWebpack2 = require_requireFoolWebpack(); var isNode = function(nodeProcess) { return typeof nodeProcess !== "undefined" && nodeProcess.versions != null && nodeProcess.versions.node != null; }; module2.exports.isNode = isNode; module2.exports.platform = typeof process !== "undefined" && isNode(process) ? "node" : "browser"; var worker_threads = tryRequireFoolWebpack("worker_threads"); module2.exports.isMainThread = module2.exports.platform === "node" ? (!worker_threads || worker_threads.isMainThread) && !process.connected : typeof Window !== "undefined"; module2.exports.cpus = module2.exports.platform === "browser" ? self.navigator.hardwareConcurrency : requireFoolWebpack2("os").cpus().length; function tryRequireFoolWebpack(module3) { try { return requireFoolWebpack2(module3); } catch (err) { return null; } } } }); // ../../../node_modules/workerpool/src/Promise.js var require_Promise = __commonJS({ "../../../node_modules/workerpool/src/Promise.js"(exports2, module2) { "use strict"; function Promise2(handler, parent) { var me = this; if (!(this instanceof Promise2)) { throw new SyntaxError("Constructor must be called with the new operator"); } if (typeof handler !== "function") { throw new SyntaxError("Function parameter handler(resolve, reject) missing"); } var _onSuccess = []; var _onFail = []; this.resolved = false; this.rejected = false; this.pending = true; var _process = function(onSuccess, onFail) { _onSuccess.push(onSuccess); _onFail.push(onFail); }; this.then = function(onSuccess, onFail) { return new Promise2(function(resolve3, reject) { var s = onSuccess ? _then(onSuccess, resolve3, reject) : resolve3; var f = onFail ? _then(onFail, resolve3, reject) : reject; _process(s, f); }, me); }; var _resolve = function(result) { me.resolved = true; me.rejected = false; me.pending = false; _onSuccess.forEach(function(fn) { fn(result); }); _process = function(onSuccess, onFail) { onSuccess(result); }; _resolve = _reject = function() { }; return me; }; var _reject = function(error2) { me.resolved = false; me.rejected = true; me.pending = false; _onFail.forEach(function(fn) { fn(error2); }); _process = function(onSuccess, onFail) { onFail(error2); }; _resolve = _reject = function() { }; return me; }; this.cancel = function() { if (parent) { parent.cancel(); } else { _reject(new CancellationError()); } return me; }; this.timeout = function(delay) { if (parent) { parent.timeout(delay); } else { var timer = setTimeout(function() { _reject(new TimeoutError("Promise timed out after " + delay + " ms")); }, delay); me.always(function() { clearTimeout(timer); }); } return me; }; handler(function(result) { _resolve(result); }, function(error2) { _reject(error2); }); } function _then(callback, resolve3, reject) { return function(result) { try { var res = callback(result); if (res && typeof res.then === "function" && typeof res["catch"] === "function") { res.then(resolve3, reject); } else { resolve3(res); } } catch (error2) { reject(error2); } }; } Promise2.prototype["catch"] = function(onFail) { return this.then(null, onFail); }; Promise2.prototype.always = function(fn) { return this.then(fn, fn); }; Promise2.all = function(promises) { return new Promise2(function(resolve3, reject) { var remaining = promises.length, results = []; if (remaining) { promises.forEach(function(p, i) { p.then(function(result) { results[i] = result; remaining--; if (remaining == 0) { resolve3(results); } }, function(error2) { remaining = 0; reject(error2); }); }); } else { resolve3(results); } }); }; Promise2.defer = function() { var resolver = {}; resolver.promise = new Promise2(function(resolve3, reject) { resolver.resolve = resolve3; resolver.reject = reject; }); return resolver; }; function CancellationError(message) { this.message = message || "promise cancelled"; this.stack = new Error().stack; } CancellationError.prototype = new Error(); CancellationError.prototype.constructor = Error; CancellationError.prototype.name = "CancellationError"; Promise2.CancellationError = CancellationError; function TimeoutError(message) { this.message = message || "timeout exceeded"; this.stack = new Error().stack; } TimeoutError.prototype = new Error(); TimeoutError.prototype.constructor = Error; TimeoutError.prototype.name = "TimeoutError"; Promise2.TimeoutError = TimeoutError; module2.exports = Promise2; } }); // ../../../node_modules/workerpool/src/generated/embeddedWorker.js var require_embeddedWorker = __commonJS({ "../../../node_modules/workerpool/src/generated/embeddedWorker.js"(exports2, module2) { module2.exports = `!function(){var __webpack_modules__={577:function(e){e.exports=function(e,r){this.message=e,this.transfer=r}}},__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];return void 0!==r||(r=__webpack_module_cache__[e]={exports:{}},__webpack_modules__[e](r,r.exports,__webpack_require__)),r.exports}var __webpack_exports__={};!function(){var exports=__webpack_exports__,__webpack_unused_export__;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Transfer=__webpack_require__(577),requireFoolWebpack=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \\" + module + \\" not found.') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}},WorkerThreads,parentPort;if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,function(e){r(e.data)})},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(error){if("object"!==_typeof(error)||null===error||"MODULE_NOT_FOUND"!==error.code)throw error}WorkerThreads&&null!==WorkerThreads.parentPort?(parentPort=WorkerThreads.parentPort,worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)):(worker.on=process.on.bind(process),worker.send=function(e){process.send(e)},worker.on("disconnect",function(){process.exit(1)})),worker.exit=process.exit.bind(process)}function convertError(o){return Object.getOwnPropertyNames(o).reduce(function(e,r){return Object.defineProperty(e,r,{value:o[r],enumerable:!0})},{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){e=new Function("return ("+e+").apply(null, arguments);");return e.apply(e,r)},worker.methods.methods=function(){return Object.keys(worker.methods)},worker.terminationHandler=void 0,worker.cleanupAndExit=function(e){function r(){worker.exit(e)}if(!worker.terminationHandler)return r();var o=worker.terminationHandler(e);isPromise(o)?o.then(r,r):r()};var currentRequestId=null;worker.on("message",function(r){if(r===TERMINATE_METHOD_ID)return worker.cleanupAndExit(0);try{var e=worker.methods[r.method];if(!e)throw new Error('Unknown method "'+r.method+'"');currentRequestId=r.id;var o=e.apply(e,r.params);isPromise(o)?o.then(function(e){e instanceof Transfer?worker.send({id:r.id,result:e.message,error:null},e.transfer):worker.send({id:r.id,result:e,error:null}),currentRequestId=null}).catch(function(e){worker.send({id:r.id,result:null,error:convertError(e)}),currentRequestId=null}):(o instanceof Transfer?worker.send({id:r.id,result:o.message,error:null},o.transfer):worker.send({id:r.id,result:o,error:null}),currentRequestId=null)}catch(e){worker.send({id:r.id,result:null,error:convertError(e)})}}),worker.register=function(e,r){if(e)for(var o in e)e.hasOwnProperty(o)&&(worker.methods[o]=e[o]);r&&(worker.terminationHandler=r.onTerminate),worker.send("ready")},worker.emit=function(e){currentRequestId&&(e instanceof Transfer?worker.send({id:currentRequestId,isEvent:!0,payload:e.message},e.transfer):worker.send({id:currentRequestId,isEvent:!0,payload:e}))},__webpack_unused_export__=worker.register,worker.emit}()}();`; } }); // ../../../node_modules/workerpool/src/WorkerHandler.js var require_WorkerHandler = __commonJS({ "../../../node_modules/workerpool/src/WorkerHandler.js"(exports2, module2) { "use strict"; var Promise2 = require_Promise(); var environment = require_environment(); var requireFoolWebpack2 = require_requireFoolWebpack(); var TERMINATE_METHOD_ID2 = "__workerpool-terminate__"; function ensureWorkerThreads() { var WorkerThreads2 = tryRequireWorkerThreads(); if (!WorkerThreads2) { throw new Error("WorkerPool: workerType = 'thread' is not supported, Node >= 11.7.0 required"); } return WorkerThreads2; } function ensureWebWorker() { if (typeof Worker !== "function" && (typeof Worker !== "object" || typeof Worker.prototype.constructor !== "function")) { throw new Error("WorkerPool: Web Workers not supported"); } } function tryRequireWorkerThreads() { try { return requireFoolWebpack2("worker_threads"); } catch (error2) { if (typeof error2 === "object" && error2 !== null && error2.code === "MODULE_NOT_FOUND") { return null; } else { throw error2; } } } function getDefaultWorker() { if (environment.platform === "browser") { if (typeof Blob === "undefined") { throw new Error("Blob not supported by the browser"); } if (!window.URL || typeof window.URL.createObjectURL !== "function") { throw new Error("URL.createObjectURL not supported by the browser"); } var blob = new Blob([require_embeddedWorker()], { type: "text/javascript" }); return window.URL.createObjectURL(blob); } else { return __dirname + "/worker.js"; } } function setupWorker(script, options) { if (options.workerType === "web") { ensureWebWorker(); return setupBrowserWorker(script, options.workerOpts, Worker); } else if (options.workerType === "thread") { WorkerThreads2 = ensureWorkerThreads(); return setupWorkerThreadWorker(script, WorkerThreads2, options.workerThreadOpts); } else if (options.workerType === "process" || !options.workerType) { return setupProcessWorker(script, resolveForkOptions(options), requireFoolWebpack2("child_process")); } else { if (environment.platform === "browser") { ensureWebWorker(); return setupBrowserWorker(script, options.workerOpts, Worker); } else { var WorkerThreads2 = tryRequireWorkerThreads(); if (WorkerThreads2) { return setupWorkerThreadWorker(script, WorkerThreads2, options.workerThreadOpts); } else { return setupProcessWorker(script, resolveForkOptions(options), requireFoolWebpack2("child_process")); } } } } function setupBrowserWorker(script, workerOpts, Worker2) { var worker3 = new Worker2(script, workerOpts); worker3.isBrowserWorker = true; worker3.on = function(event, callback) { this.addEventListener(event, function(message) { callback(message.data); }); }; worker3.send = function(message, transfer) { this.postMessage(message, transfer); }; return worker3; } function setupWorkerThreadWorker(script, WorkerThreads2, workerThreadOptions) { var worker3 = new WorkerThreads2.Worker(script, { stdout: false, // automatically pipe worker.STDOUT to process.STDOUT stderr: false, // automatically pipe worker.STDERR to process.STDERR ...workerThreadOptions }); worker3.isWorkerThread = true; worker3.send = function(message, transfer) { this.postMessage(message, transfer); }; worker3.kill = function() { this.terminate(); return true; }; worker3.disconnect = function() { this.terminate(); }; return worker3; } function setupProcessWorker(script, options, child_process) { var worker3 = child_process.fork( script, options.forkArgs, options.forkOpts ); var send = worker3.send; worker3.send = function(message) { return send.call(worker3, message); }; worker3.isChildProcess = true; return worker3; } function resolveForkOptions(opts) { opts = opts || {}; var processExecArgv = process.execArgv.join(" "); var inspectorActive = processExecArgv.indexOf("--inspect") !== -1; var debugBrk = processExecArgv.indexOf("--debug-brk") !== -1; var execArgv = []; if (inspectorActive) { execArgv.push("--inspect=" + opts.debugPort); if (debugBrk) { execArgv.push("--debug-brk"); } } process.execArgv.forEach(function(arg) { if (arg.indexOf("--max-old-space-size") > -1) { execArgv.push(arg); } }); return Object.assign({}, opts, { forkArgs: opts.forkArgs, forkOpts: Object.assign({}, opts.forkOpts, { execArgv: (opts.forkOpts && opts.forkOpts.execArgv || []).concat(execArgv) }) }); } function objectToError(obj) { var temp = new Error(""); var props = Object.keys(obj); for (var i = 0; i < props.length; i++) { temp[props[i]] = obj[props[i]]; } return temp; } function WorkerHandler(script, _options) { var me = this; var options = _options || {}; this.script = script || getDefaultWorker(); this.worker = setupWorker(this.script, options); this.debugPort = options.debugPort; this.forkOpts = options.forkOpts; this.forkArgs = options.forkArgs; this.workerOpts = options.workerOpts; this.workerThreadOpts = options.workerThreadOpts; this.workerTerminateTimeout = options.workerTerminateTimeout; if (!script) { this.worker.ready = true; } this.requestQueue = []; this.worker.on("message", function(response) { if (me.terminated) { return; } if (typeof response === "string" && response === "ready") { me.worker.ready = true; dispatchQueuedRequests(); } else { var id = response.id; var task = me.processing[id]; if (task !== void 0) { if (response.isEvent) { if (task.options && typeof task.options.on === "function") { task.options.on(response.payload); } } else { delete me.processing[id]; if (me.terminating === true) { me.terminate(); } if (response.error) { task.resolver.reject(objectToError(response.error)); } else { task.resolver.resolve(response.result); } } } } }); function onError(error2) { me.terminated = true; for (var id in me.processing) { if (me.processing[id] !== void 0) { me.processing[id].resolver.reject(error2); } } me.processing = /* @__PURE__ */ Object.create(null); } function dispatchQueuedRequests() { for (const request of me.requestQueue.splice(0)) { me.worker.send(request.message, request.transfer); } } var worker3 = this.worker; this.worker.on("error", onError); this.worker.on("exit", function(exitCode, signalCode) { var message = "Workerpool Worker terminated Unexpectedly\n"; message += " exitCode: `" + exitCode + "`\n"; message += " signalCode: `" + signalCode + "`\n"; message += " workerpool.script: `" + me.script + "`\n"; message += " spawnArgs: `" + worker3.spawnargs + "`\n"; message += " spawnfile: `" + worker3.spawnfile + "`\n"; message += " stdout: `" + worker3.stdout + "`\n"; message += " stderr: `" + worker3.stderr + "`\n"; onError(new Error(message)); }); this.processing = /* @__PURE__ */ Object.create(null); this.terminating = false; this.terminated = false; this.cleaning = false; this.terminationHandler = null; this.lastId = 0; } WorkerHandler.prototype.methods = function() { return this.exec("methods"); }; WorkerHandler.prototype.exec = function(method, params, resolver, options) { if (!resolver) { resolver = Promise2.defer(); } var id = ++this.lastId; this.processing[id] = { id, resolver, options }; var request = { message: { id, method, params }, transfer: options && options.transfer }; if (this.terminated) { resolver.reject(new Error("Worker is terminated")); } else if (this.worker.ready) { this.worker.send(request.message, request.transfer); } else { this.requestQueue.push(request); } var me = this; return resolver.promise.catch(function(error2) { if (error2 instanceof Promise2.CancellationError || error2 instanceof Promise2.TimeoutError) { delete me.processing[id]; return me.terminateAndNotify(true).then(function() { throw error2; }, function(err) { throw err; }); } else { throw error2; } }); }; WorkerHandler.prototype.busy = function() { return this.cleaning || Object.keys(this.processing).length > 0; }; WorkerHandler.prototype.terminate = function(force, callback) { var me = this; if (force) { for (var id in this.processing) { if (this.processing[id] !== void 0) { this.processing[id].resolver.reject(new Error("Worker terminated")); } } this.processing = /* @__PURE__ */ Object.create(null); } if (typeof callback === "function") { this.terminationHandler = callback; } if (!this.busy()) { var cleanup = function(err) { me.terminated = true; me.cleaning = false; if (me.worker != null && me.worker.removeAllListeners) { me.worker.removeAllListeners("message"); } me.worker = null; me.terminating = false; if (me.terminationHandler) { me.terminationHandler(err, me); } else if (err) { throw err; } }; if (this.worker) { if (typeof this.worker.kill === "function") { if (this.worker.killed) { cleanup(new Error("worker already killed!")); return; } var cleanExitTimeout = setTimeout(function() { if (me.worker) { me.worker.kill(); } }, this.workerTerminateTimeout); this.worker.once("exit", function() { clearTimeout(cleanExitTimeout); if (me.worker) { me.worker.killed = true; } cleanup(); }); if (this.worker.ready) { this.worker.send(TERMINATE_METHOD_ID2); } else { this.requestQueue.push({ message: TERMINATE_METHOD_ID2 }); } this.cleaning = true; return; } else if (typeof this.worker.terminate === "function") { this.worker.terminate(); this.worker.killed = true; } else { throw new Error("Failed to terminate worker"); } } cleanup(); } else { this.terminating = true; } }; WorkerHandler.prototype.terminateAndNotify = function(force, timeout) { var resolver = Promise2.defer(); if (timeout) { resolver.promise.timeout(timeout); } this.terminate(force, function(err, worker3) { if (err) { resolver.reject(err); } else { resolver.resolve(worker3); } }); return resolver.promise; }; module2.exports = WorkerHandler; module2.exports._tryRequireWorkerThreads = tryRequireWorkerThreads; module2.exports._setupProcessWorker = setupProcessWorker; module2.exports._setupBrowserWorker = setupBrowserWorker; module2.exports._setupWorkerThreadWorker = setupWorkerThreadWorker; module2.exports.ensureWorkerThreads = ensureWorkerThreads; } }); // ../../../node_modules/workerpool/src/debug-port-allocator.js var require_debug_port_allocator = __commonJS({ "../../../node_modules/workerpool/src/debug-port-allocator.js"(exports2, module2) { "use strict"; var MAX_PORTS = 65535; module2.exports = DebugPortAllocator; function DebugPortAllocator() { this.ports = /* @__PURE__ */ Object.create(null); this.length = 0; } DebugPortAllocator.prototype.nextAvailableStartingAt = function(starting) { while (this.ports[starting] === true) { starting++; } if (starting >= MAX_PORTS) { throw new Error("WorkerPool debug port limit reached: " + starting + ">= " + MAX_PORTS); } this.ports[starting] = true; this.length++; return starting; }; DebugPortAllocator.prototype.releasePort = function(port) { delete this.ports[port]; this.length--; }; } }); // ../../../node_modules/workerpool/src/Pool.js var require_Pool = __commonJS({ "../../../node_modules/workerpool/src/Pool.js"(exports2, module2) { var Promise2 = require_Promise(); var WorkerHandler = require_WorkerHandler(); var environment = require_environment(); var DebugPortAllocator = require_debug_port_allocator(); var DEBUG_PORT_ALLOCATOR = new DebugPortAllocator(); function Pool(script, options) { if (typeof script === "string") { this.script = script || null; } else { this.script = null; options = script; } this.workers = []; this.tasks = []; options = options || {}; this.forkArgs = Object.freeze(options.forkArgs || []); this.forkOpts = Object.freeze(options.forkOpts || {}); this.workerOpts = Object.freeze(options.workerOpts || {}); this.workerThreadOpts = Object.freeze(options.workerThreadOpts || {}); this.debugPortStart = options.debugPortStart || 43210; this.nodeWorker = options.nodeWorker; this.workerType = options.workerType || options.nodeWorker || "auto"; this.maxQueueSize = options.maxQueueSize || Infinity; this.workerTerminateTimeout = options.workerTerminateTimeout || 1e3; this.onCreateWorker = options.onCreateWorker || (() => null); this.onTerminateWorker = options.onTerminateWorker || (() => null); if (options && "maxWorkers" in options) { validateMaxWorkers(options.maxWorkers); this.maxWorkers = options.maxWorkers; } else { this.maxWorkers = Math.max((environment.cpus || 4) - 1, 1); } if (options && "minWorkers" in options) { if (options.minWorkers === "max") { this.minWorkers = this.maxWorkers; } else { validateMinWorkers(options.minWorkers); this.minWorkers = options.minWorkers; this.maxWorkers = Math.max(this.minWorkers, this.maxWorkers); } this._ensureMinWorkers(); } this._boundNext = this._next.bind(this); if (this.workerType === "thread") { WorkerHandler.ensureWorkerThreads(); } } Pool.prototype.exec = function(method, params, options) { if (params && !Array.isArray(params)) { throw new TypeError('Array expected as argument "params"'); } if (typeof method === "string") { var resolver = Promise2.defer(); if (this.tasks.length >= this.maxQueueSize) { throw new Error("Max queue size of " + this.maxQueueSize + " reached"); } var tasks = this.tasks; var task = { method, params, resolver, timeout: null, options }; tasks.push(task); var originalTimeout = resolver.promise.timeout; resolver.promise.timeout = function timeout(delay) { if (tasks.indexOf(task) !== -1) { task.timeout = delay; return resolver.promise; } else { return originalTimeout.call(resolver.promise, delay); } }; this._next(); return resolver.promise; } else if (typeof method === "function") { return this.exec("run", [String(method), params]); } else { throw new TypeError('Function or string expected as argument "method"'); } }; Pool.prototype.proxy = function() { if (arguments.length > 0) { throw new Error("No arguments expected"); } var pool = this; return this.exec("methods").then(function(methods) { var proxy = {}; methods.forEach(function(method) { proxy[method] = function() { return pool.exec(method, Array.prototype.slice.call(arguments)); }; }); return proxy; }); }; Pool.prototype._next = function() { if (this.tasks.length > 0) { var worker3 = this._getWorker(); if (worker3) { var me = this; var task = this.tasks.shift(); if (task.resolver.promise.pending) { var promise = worker3.exec(task.method, task.params, task.resolver, task.options).then(me._boundNext).catch(function() { if (worker3.terminated) { return me._removeWorker(worker3); } }).then(function() { me._next(); }); if (typeof task.timeout === "number") { promise.timeout(task.timeout); } } else { me._next(); } } } }; Pool.prototype._getWorker = function() { var workers = this.workers; for (var i = 0; i < workers.length; i++) { var worker3 = workers[i]; if (worker3.busy() === false) { return worker3; } } if (workers.length < this.maxWorkers) { worker3 = this._createWorkerHandler(); workers.push(worker3); return worker3; } return null; }; Pool.prototype._removeWorker = function(worker3) { var me = this; DEBUG_PORT_ALLOCATOR.releasePort(worker3.debugPort); this._removeWorkerFromList(worker3); this._ensureMinWorkers(); return new Promise2(function(resolve3, reject) { worker3.terminate(false, function(err) { me.onTerminateWorker({ forkArgs: worker3.forkArgs, forkOpts: worker3.forkOpts, workerThreadOpts: worker3.workerThreadOpts, script: worker3.script }); if (err) { reject(err); } else { resolve3(worker3); } }); }); }; Pool.prototype._removeWorkerFromList = function(worker3) { var index = this.workers.indexOf(worker3); if (index !== -1) { this.workers.splice(index, 1); } }; Pool.prototype.terminate = function(force, timeout) { var me = this; this.tasks.forEach(function(task) { task.resolver.reject(new Error("Pool terminated")); }); this.tasks.length = 0; var f = function(worker3) { DEBUG_PORT_ALLOCATOR.releasePort(worker3.debugPort); this._removeWorkerFromList(worker3); }; var removeWorker = f.bind(this); var promises = []; var workers = this.workers.slice(); workers.forEach(function(worker3) { var termPromise = worker3.terminateAndNotify(force, timeout).then(removeWorker).always(function() { me.onTerminateWorker({ forkArgs: worker3.forkArgs, forkOpts: worker3.forkOpts, workerThreadOpts: worker3.workerThreadOpts, script: worker3.script }); }); promises.push(termPromise); }); return Promise2.all(promises); }; Pool.prototype.stats = function() { var totalWorkers = this.workers.length; var busyWorkers = this.workers.filter(function(worker3) { return worker3.busy(); }).length; return { totalWorkers, busyWorkers, idleWorkers: totalWorkers - busyWorkers, pendingTasks: this.tasks.length, activeTasks: busyWorkers }; }; Pool.prototype._ensureMinWorkers = function() { if (this.minWorkers) { for (var i = this.workers.length; i < this.minWorkers; i++) { this.workers.push(this._createWorkerHandler()); } } }; Pool.prototype._createWorkerHandler = function() { const overriddenParams = this.onCreateWorker({ forkArgs: this.forkArgs, forkOpts: this.forkOpts, workerOpts: this.workerOpts, workerThreadOpts: this.workerThreadOpts, script: this.script }) || {}; return new WorkerHandler(overriddenParams.script || this.script, { forkArgs: overriddenParams.forkArgs || this.forkArgs, forkOpts: overriddenParams.forkOpts || this.forkOpts, workerOpts: overriddenParams.workerOpts || this.workerOpts, workerThreadOpts: overriddenParams.workerThreadOpts || this.workerThreadOpts, debugPort: DEBUG_PORT_ALLOCATOR.nextAvailableStartingAt(this.debugPortStart), workerType: this.workerType, workerTerminateTimeout: this.workerTerminateTimeout }); }; function validateMaxWorkers(maxWorkers) { if (!isNumber(maxWorkers) || !isInteger(maxWorkers) || maxWorkers < 1) { throw new TypeError("Option maxWorkers must be an integer number >= 1"); } } function validateMinWorkers(minWorkers) { if (!isNumber(minWorkers) || !isInteger(minWorkers) || minWorkers < 0) { throw new TypeError("Option minWorkers must be an integer number >= 0"); } } function isNumber(value) { return typeof value === "number"; } function isInteger(value) { return Math.round(value) == value; } module2.exports = Pool; } }); // ../../../node_modules/workerpool/src/transfer.js var require_transfer = __commonJS({ "../../../node_modules/workerpool/src/transfer.js"(exports2, module2) { function Transfer2(message, transfer) { this.message = message; this.transfer = transfer; } module2.exports = Transfer2; } }); // ../../../node_modules/workerpool/src/worker.js var require_worker = __commonJS({ "../../../node_modules/workerpool/src/worker.js"(exports, module) { var Transfer = require_transfer(); var requireFoolWebpack = eval( `typeof require !== 'undefined' ? require : function (module) { throw new Error('Module " + module + " not found.') }` ); var TERMINATE_METHOD_ID = "__workerpool-terminate__"; var worker = { exit: function() { } }; if (typeof self !== "undefined" && typeof postMessage === "function" && typeof addEventListener === "function") { worker.on = function(event, callback) { addEventListener(event, function(message) { callback(message.data); }); }; worker.send = function(message) { postMessage(message); }; } else if (typeof process !== "undefined") { try { WorkerThreads = requireFoolWebpack("worker_threads"); } catch (error2) { if (typeof error2 === "object" && error2 !== null && error2.code === "MODULE_NOT_FOUND") { } else { throw error2; } } if (WorkerThreads && /* if there is a parentPort, we are in a WorkerThread */ WorkerThreads.parentPort !== null) { parentPort = WorkerThreads.parentPort; worker.send = parentPort.postMessage.bind(parentPort); worker.on = parentPort.on.bind(parentPort); worker.exit = process.exit.bind(process); } else { worker.on = process.on.bind(process); worker.send = function(message) { process.send(message); }; worker.on("disconnect", function() { process.exit(1); }); worker.exit = process.exit.bind(process); } } else { throw new Error("Script must be executed as a worker"); } var WorkerThreads; var parentPort; function convertError(error2) { return Object.getOwnPropertyNames(error2).reduce(function(product, name) { return Object.defineProperty(product, name, { value: error2[name], enumerable: true }); }, {}); } function isPromise(value) { return value && typeof value.then === "function" && typeof value.catch === "function"; } worker.methods = {}; worker.methods.run = function run(fn, args) { var f = new Function("return (" + fn + ").apply(null, arguments);"); return f.apply(f, args); }; worker.methods.methods = function methods() { return Object.keys(worker.methods); }; worker.terminationHandler = void 0; worker.cleanupAndExit = function(code) { var _exit = function() { worker.exit(code); }; if (!worker.terminationHandler) { return _exit(); } var result = worker.terminationHandler(code); if (isPromise(result)) { result.then(_exit, _exit); } else { _exit(); } }; var currentRequestId = null; worker.on("message", function(request) { if (request === TERMINATE_METHOD_ID) { return worker.cleanupAndExit(0); } try { var method = worker.methods[request.method]; if (method) { currentRequestId = request.id; var result = method.apply(method, request.params); if (isPromise(result)) { result.then(function(result2) { if (result2 instanceof Transfer) { worker.send({ id: request.id, result: result2.message, error: null }, result2.transfer); } else { worker.send({ id: request.id, result: result2, error: null }); } currentRequestId = null; }).catch(function(err) { worker.send({ id: request.id, result: null, error: convertError(err) }); currentRequestId = null; }); } else { if (result instanceof Transfer) { worker.send({ id: request.id, result: result.message, error: null }, result.transfer); } else { worker.send({ id: request.id, result, error: null }); } currentRequestId = null; } } else { throw new Error('Unknown method "' + request.method + '"'); } } catch (err) { worker.send({ id: request.id, result: null, error: convertError(err) }); } }); worker.register = function(methods, options) { if (methods) { for (var name in methods) { if (methods.hasOwnProperty(name)) { worker.methods[name] = methods[name]; } } } if (options) { worker.terminationHandler = options.onTerminate; } worker.send("ready"); }; worker.emit = function(payload) { if (currentRequestId) { if (payload instanceof Transfer) { worker.send({ id: currentRequestId, isEvent: true, payload: payload.message }, payload.transfer); return; } worker.send({ id: currentRequestId, isEvent: true, payload }); } }; if (typeof exports !== "undefined") { exports.add = worker.register; exports.emit = worker.emit; } } }); // ../../../node_modules/workerpool/src/index.js var require_src = __commonJS({ "../../../node_modules/workerpool/src/index.js"(exports2) { var environment = require_environment(); exports2.pool = function pool(script, options) { var Pool = require_Pool(); return new Pool(script, options); }; exports2.worker = function worker3(methods, options) { var worker4 = require_worker(); worker4.add(methods, options); }; exports2.workerEmit = function workerEmit3(payload) { var worker3 = require_worker(); worker3.emit(payload); }; exports2.Promise = require_Promise(); exports2.Transfer = require_transfer(); exports2.platform = environment.platform; exports2.isMainThread = environment.isMainThread; exports2.cpus = environment.cpus; } }); // ../cdk-cli-wrapper/lib/commands/synth.ts var init_synth = __esm({ "../cdk-cli-wrapper/lib/commands/synth.ts"() { "use strict"; } }); // ../cdk-cli-wrapper/lib/commands/common.ts var RequireApproval; var init_common = __esm({ "../cdk-cli-wrapper/lib/commands/common.ts"() { "use strict"; RequireApproval = /* @__PURE__ */ ((RequireApproval4) => { RequireApproval4["NEVER"] = "never"; RequireApproval4["ANYCHANGE"] = "any-change"; RequireApproval4["BROADENING"] = "broadening"; return RequireApproval4; })(RequireApproval || {}); } }); // ../cdk-cli-wrapper/lib/commands/deploy.ts var HotswapMode, StackActivityProgress; var init_deploy = __esm({ "../cdk-cli-wrapper/lib/commands/deploy.ts"() { "use strict"; HotswapMode = /* @__PURE__ */ ((HotswapMode3) => { HotswapMode3["FALL_BACK"] = "fall-back"; HotswapMode3["HOTSWAP_ONLY"] = "hotswap-only"; HotswapMode3["FULL_DEPLOYMENT"] = "full-deployment"; return HotswapMode3; })(HotswapMode || {}); StackActivityProgress = /* @__PURE__ */ ((StackActivityProgress3) => { StackActivityProgress3["BAR"] = "bar"; StackActivityProgress3["EVENTS"] = "events"; return StackActivityProgress3; })(StackActivityProgress || {}); } }); // ../cdk-cli-wrapper/lib/commands/destroy.ts var init_destroy = __esm({ "../cdk-cli-wrapper/lib/commands/destroy.ts"() { "use strict"; } }); // ../cdk-cli-wrapper/lib/commands/list.ts var init_list = __esm({ "../cdk-cli-wrapper/lib/commands/list.ts"() { "use strict"; } }); // ../cdk-cli-wrapper/lib/commands/index.ts var commands_exports = {}; __export(commands_exports, { HotswapMode: () => HotswapMode, RequireApproval: () => RequireApproval, StackActivityProgress: () => StackActivityProgress }); var init_commands = __esm({ "../cdk-cli-wrapper/lib/commands/index.ts"() { "use strict"; init_synth(); init_common(); init_deploy(); init_destroy(); init_list(); } }); // ../cdk-cli-wrapper/lib/utils.ts function exec(commandLine, options = {}) { const proc = (0, import_child_process.spawnSync)(commandLine[0], commandLine.slice(1), { stdio: ["ignore", "pipe", options.verbose ? "inherit" : "pipe"], // inherit STDERR in verbose mode env: { ...process.env, ...options.env }, cwd: options.cwd }); if (proc.error) { throw proc.error; } if (proc.status !== 0) { if (process.stderr) { process.stderr.write(proc.stderr); } throw new Error(`Command exited with ${proc.status ? `status ${proc.status}` : `signal ${proc.signal}`}`); } const output = proc.stdout.toString("utf-8").trim(); try { if (options.json) { if (output.length === 0) { return {}; } return JSON.parse(output); } return output; } catch { console.error("Not JSON: " + output); throw new Error("Command output is not JSON"); } } function watch(commandLine, options = {}) { const proc = (0, import_child_process.spawn)(commandLine[0], commandLine.slice(1), { stdio: ["ignore", "pipe", options.verbose ? "inherit" : "pipe"], // inherit STDERR in verbose mode env: { ...process.env, ...options.env }, cwd: options.cwd }); proc.on("error", (err) => { throw err; }); return proc; } var import_child_process; var init_utils = __esm({ "../cdk-cli-wrapper/lib/utils.ts"() { "use strict"; import_child_process = require("child_process"); } }); // ../cdk-cli-wrapper/lib/cdk-wrapper.ts var cdk_wrapper_exports = {}; __export(cdk_wrapper_exports, { CdkCliWrapper: () => CdkCliWrapper }); function renderMapArrayArg(flag, parameters) { const params = []; for (const [key, value] of Object.entries(parameters)) { params.push(`${key}=${value}`); } return renderArrayArg(flag, params); } function renderArrayArg(flag, values) { let args = []; for (const value of values ?? []) { args.push(flag, value); } return args; } function renderBooleanArg(val, arg) { if (arg) { return [`--${val}`]; } else if (arg === void 0) { return []; } else { return [`--no-${val}`]; } } var CdkCliWrapper; var init_cdk_wrapper = __esm({ "../cdk-cli-wrapper/lib/cdk-wrapper.ts"() { "use strict"; init_commands(); init_utils(); CdkCliWrapper = class { constructor(options) { this.directory = options.directory; this.env = options.env; this.showOutput = options.showOutput ?? false; try { this.cdk = options.cdkExecutable ?? "cdk"; } catch { throw new Error(`could not resolve path to cdk executable: "${options.cdkExecutable ?? "cdk"}"`); } } validateArgs(options) { if (!options.stacks && !options.all) { throw new Error('one of "app" or "stacks" must be provided'); } } list(options) { const listCommandArgs = [ ...renderBooleanArg("long", options.long), ...this.createDefaultArguments(options) ]; return exec([this.cdk, "ls", ...listCommandArgs], { cwd: this.directory, verbose: this.showOutput, env: this.env }); } /** * cdk deploy */ deploy(options) { const deployCommandArgs = [ ...renderBooleanArg("ci", options.ci), ...renderBooleanArg("execute", options.execute), ...renderBooleanArg("exclusively", options.exclusively), ...renderBooleanArg("force", options.force), ...renderBooleanArg("previous-parameters", options.usePreviousParameters), ...renderBooleanArg("rollback", options.rollback), ...renderBooleanArg("staging", options.staging), ...options.reuseAssets ? renderArrayArg("--reuse-assets", options.reuseAssets) : [], ...options.notificationArns ? renderArrayArg("--notification-arns", options.notificationArns) : [], ...options.parameters ? renderMapArrayArg("--parameters", options.parameters) : [], ...options.outputsFile ? ["--outputs-file", options.outputsFile] : [], ...options.requireApproval ? ["--require-approval", options.requireApproval] : [], ...options.changeSetName ? ["--change-set-name", options.changeSetName] : [], ...options.toolkitStackName ? ["--toolkit-stack-name", options.toolkitStackName] : [], ...options.progress ? ["--progress", options.progress] : ["--progress", "events" /* EVENTS */], ...options.deploymentMethod ? ["--method", options.deploymentMethod] : [], ...options.concurrency ? ["--concurrency", options.concurrency.toString()] : [], ...this.createDefaultArguments(options) ]; exec([this.cdk, "deploy", ...deployCommandArgs], { cwd: this.directory, verbose: this.showOutput, env: this.env }); } watch(options) { let hotswap; switch (options.hotswap) { case "fall-back" /* FALL_BACK */: hotswap = "--hotswap-fallback"; break; case "hotswap-only" /* HOTSWAP_ONLY */: hotswap = "--hotswap"; break; default: hotswap = "--hotswap-fallback"; break; } const deployCommandArgs = [ "--watch", ...renderBooleanArg("ci", options.ci), ...renderBooleanArg("execute", options.execute), ...renderBooleanArg("exclusively", options.exclusively), ...renderBooleanArg("force", options.force), ...renderBooleanArg("previous-parameters", options.usePreviousParameters), ...renderBooleanArg("rollback", options.rollback), ...renderBooleanArg("staging", options.staging), ...renderBooleanArg("logs", options.traceLogs), hotswap, ...options.reuseAssets ? renderArrayArg("--reuse-assets", options.reuseAssets) : [], ...options.notificationArns ? renderArrayArg("--notification-arns", options.notificationArns) : [], ...options.parameters ? renderMapArrayArg("--parameters", options.parameters) : [], ...options.outputsFile ? ["--outputs-file", options.outputsFile] : [], ...options.requireApproval ? ["--require-approval", options.requireApproval] : [], ...options.changeSetName ? ["--change-set-name", options.changeSetName] : [], ...options.toolkitStackName ? ["--toolkit-stack-name", options.toolkitStackName] : [], ...options.progress ? ["--progress", options.progress] : ["--progress", "events" /* EVENTS */], ...options.deploymentMethod ? ["--method", options.deploymentMethod] : [], ...this.createDefaultArguments(options) ]; return watch([this.cdk, "deploy", ...deployCommandArgs], { cwd: this.directory, verbose: this.showOutput, env: this.env }); } /** * cdk destroy */ destroy(options) { const dest