@aws-cdk/integ-runner
Version:
CDK Integration Testing Tool
1,345 lines (1,327 loc) • 1.25 MB
JavaScript
"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