Socket
Socket
Sign inDemoInstall

bree

Package Overview
Dependencies
Maintainers
4
Versions
100
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bree - npm Package Compare versions

Comparing version 6.4.0 to 6.5.0

10

lib/job-builder.js

@@ -31,3 +31,5 @@ "use strict";

if (isSANB(job)) {
var path = join(config.root, job.endsWith('.js') || job.endsWith('.mjs') ? job : "".concat(job, ".").concat(config.defaultExtension));
var path = join(config.root, config.acceptedExtensions.some(function (ext) {
return job.endsWith(ext);
}) ? job : "".concat(job, ".").concat(config.defaultExtension));
var jobObject = {

@@ -76,3 +78,5 @@ name: job,

} else {
var _path3 = isSANB(job.path) ? job.path : join(config.root, job.name.endsWith('.js') || job.name.endsWith('.mjs') ? job.name : "".concat(job.name, ".").concat(config.defaultExtension));
var _path3 = isSANB(job.path) ? job.path : join(config.root, config.acceptedExtensions.some(function (ext) {
return job.name.endsWith(ext);
}) ? job.name : "".concat(job.name, ".").concat(config.defaultExtension));

@@ -128,2 +132,2 @@ if (isValidPath(_path3)) {

module.exports = buildJob;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9qb2ItYnVpbGRlci5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiam9pbiIsImlzU0FOQiIsImlzVmFsaWRQYXRoIiwiYm9vbGVhbiIsImxhdGVyIiwiaXNTY2hlZHVsZSIsInBhcnNlVmFsdWUiLCJkYXRlIiwibG9jYWxUaW1lIiwiYnVpbGRKb2IiLCJqb2IiLCJjb25maWciLCJwYXRoIiwicm9vdCIsImVuZHNXaXRoIiwiZGVmYXVsdEV4dGVuc2lvbiIsImpvYk9iamVjdCIsIm5hbWUiLCJ0aW1lb3V0IiwiaW50ZXJ2YWwiLCJ0aW1lem9uZSIsInRvU3RyaW5nIiwid29ya2VyIiwiZXZhbCIsImNyb24iLCJwYXJzZSIsImhhc1NlY29uZHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7ZUFBaUJBLE9BQU8sQ0FBQyxNQUFELEM7SUFBaEJDLEksWUFBQUEsSTs7QUFDUixJQUFNQyxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUF0Qjs7QUFDQSxJQUFNRyxXQUFXLEdBQUdILE9BQU8sQ0FBQyxlQUFELENBQTNCOztnQkFDb0JBLE9BQU8sQ0FBQyxTQUFELEM7SUFBbkJJLE8sYUFBQUEsTzs7QUFDUixJQUFNQyxLQUFLLEdBQUdMLE9BQU8sQ0FBQyxlQUFELENBQXJCOztnQkFDbUNBLE9BQU8sQ0FBQyxhQUFELEM7SUFBbENNLFUsYUFBQUEsVTtJQUFZQyxVLGFBQUFBLFU7O0FBRXBCRixLQUFLLENBQUNHLElBQU4sQ0FBV0MsU0FBWCxHLENBRUE7O0FBQ0EsSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQ0MsR0FBRCxFQUFNQyxNQUFOLEVBQWlCO0FBQ2hDLE1BQUlWLE1BQU0sQ0FBQ1MsR0FBRCxDQUFWLEVBQWlCO0FBQ2YsUUFBTUUsSUFBSSxHQUFHWixJQUFJLENBQ2ZXLE1BQU0sQ0FBQ0UsSUFEUSxFQUVmSCxHQUFHLENBQUNJLFFBQUosQ0FBYSxLQUFiLEtB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RFosS0FFQSxPQUFPVCxHQUFHLENBQUNTLFFBQVgsS0FBd0IsV0FGeEIsSUFHQSxPQUFPVCxHQUFHLENBQUNjLElBQVgsS0FBb0IsV0FIcEIsSUFJQSxPQUFPZCxHQUFHLENBQUNILElBQVgsS0FBb0IsV0FMdEIsRUFNRTtBQUNBRyxJQUFBQSxHQUFHLENBQUNTLFFBQUosR0FBZVIsTUFBTSxDQUFDUSxRQUF0QjtBQUNEOztBQUVELE1BQUlsQixNQUFNLENBQUNVLE1BQU0sQ0FBQ1MsUUFBUixDQUFOLElBQTJCLENBQUNWLEdBQUcsQ0FBQ1UsUUFBcEMsRUFBOEM7QUFDNUNWLElBQUFBLEdBQUcsQ0FBQ1UsUUFBSixHQUFlVCxNQUFNLENBQUNTLFFBQXRCO0FBQ0Q7O0FBRUQsU0FBT1YsR0FBUDtBQUNELENBOUhEOztBQWdJQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnJCLFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBpc1NBTkIgPSByZXF1aXJlKCdpcy1zdHJpbmctYW5kLW5vdC1ibGFuaycpO1xuY29uc3QgaXNWYWxpZFBhdGggPSByZXF1aXJlKCdpcy12YWxpZC1wYXRoJyk7XG5jb25zdCB7IGJvb2xlYW4gfSA9IHJlcXVpcmUoJ2Jvb2xlYW4nKTtcbmNvbnN0IGxhdGVyID0gcmVxdWlyZSgnQGJyZWVqcy9sYXRlcicpO1xuY29uc3QgeyBpc1NjaGVkdWxlLCBwYXJzZVZhbHVlIH0gPSByZXF1aXJlKCcuL2pvYi11dGlscycpO1xuXG5sYXRlci5kYXRlLmxvY2FsVGltZSgpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuY29uc3QgYnVpbGRKb2IgPSAoam9iLCBjb25maWcpID0+IHtcbiAgaWYgKGlzU0FOQihqb2IpKSB7XG4gICAgY29uc3QgcGF0aCA9IGpvaW4oXG4gICAgICBjb25maWcucm9vdCxcbiAgICAgIGpvYi5lbmRzV2l0aCgnLmpzJykgfHwgam9iLmVuZHNXaXRoKCcubWpzJylcbiAgICAgICAgPyBqb2JcbiAgICAgICAgOiBgJHtqb2J9LiR7Y29uZmlnLmRlZmF1bHRFeHRlbnNpb259YFxuICAgICk7XG5cbiAgICBjb25zdCBqb2JPYmplY3QgPSB7XG4gICAgICBuYW1lOiBqb2IsXG4gICAgICBwYXRoLFxuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQsXG4gICAgICBpbnRlcnZhbDogY29uZmlnLmludGVydmFsXG4gICAgfTtcbiAgICBpZiAoaXNTQU5CKGNvbmZpZy50aW1lem9uZSkpIHtcbiAgICAgIGpvYk9iamVjdC50aW1lem9uZSA9IGNvbmZpZy50aW1lem9uZTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9iT2JqZWN0O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBqb2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBwYXRoID0gYCgke2pvYi50b1N0cmluZygpfSkoKWA7XG5cbiAgICBjb25zdCBqb2JPYmplY3QgPSB7XG4gICAgICBuYW1lOiBqb2IubmFtZSxcbiAgICAgIHBhdGgsXG4gICAgICB3b3JrZXI6IHsgZXZhbDogdHJ1ZSB9LFxuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQsXG4gICAgICBpbnRlcnZhbDogY29uZmlnLmludGVydmFsXG4gICAgfTtcbiAgICBpZiAoaXNTQU5CKGNvbmZpZy50aW1lem9uZSkpIHtcbiAgICAgIGpvYk9iamVjdC50aW1lem9uZSA9IGNvbmZpZy50aW1lem9uZTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9iT2JqZWN0O1xuICB9XG5cbiAgLy8gUHJvY2VzcyBqb2IucGF0aFxuICBpZiAodHlwZW9mIGpvYi5wYXRoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcGF0aCA9IGAoJHtqb2IucGF0aC50b1N0cmluZygpfSkoKWA7XG5cbiAgICBqb2IucGF0aCA9IHBhdGg7XG4gICAgam9iLndvcmtlciA9IHtcbiAgICAgIGV2YWw6IHRydWUsXG4gICAgICAuLi5qb2Iud29ya2VyXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXRoID0gaXNTQU5CKGpvYi5wYXRoKVxuICAgICAgPyBqb2IucGF0aFxuICAgICAgOiBqb2luKFxuICAgICAgICAgIGNvbmZpZy5yb290LFxuICAgICAgICAgIGpvYi5uYW1lLmVuZHNXaXRoKCcuanMnKSB8fCBqb2IubmFtZS5lbmRzV2l0aCgnLm1qcycpXG4gICAgICAgICAgICA/IGpvYi5uYW1lXG4gICAgICAgICAgICA6IGAke2pvYi5uYW1lfS4ke2NvbmZpZy5kZWZhdWx0RXh0ZW5zaW9ufWBcbiAgICAgICAgKTtcblxuICAgIGlmIChpc1ZhbGlkUGF0aChwYXRoKSkge1xuICAgICAgam9iLnBhdGggPSBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3N1bWUgdGhhdCBpdCdzIGEgdHJhbnNmb3JtZWQgZXZhbCBzdHJpbmdcbiAgICAgIGpvYi53b3JrZXIgPSB7XG4gICAgICAgIGV2YWw6IHRydWUsXG4gICAgICAgIC4uLmpvYi53b3JrZXJcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBqb2IudGltZW91dCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqb2IudGltZW91dCA9IHBhcnNlVmFsdWUoam9iLnRpbWVvdXQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBqb2IuaW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgam9iLmludGVydmFsID0gcGFyc2VWYWx1ZShqb2IuaW50ZXJ2YWwpO1xuICB9XG5cbiAgLy8gQnVpbGQgY3JvblxuICBpZiAodHlwZW9mIGpvYi5jcm9uICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChpc1NjaGVkdWxlKGpvYi5jcm9uKSkge1xuICAgICAgam9iLmludGVydmFsID0gam9iLmNyb247XG4gICAgICAvLyBEZWxldGUgam9iLmNyb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGpvYi5pbnRlcnZhbCA9IGxhdGVyLnBhcnNlLmNyb24oXG4gICAgICAgIGpvYi5jcm9uLFxuICAgICAgICBib29sZWFuKFxuICAgICAgICAgIHR5cGVvZiBqb2IuaGFzU2Vjb25kcyA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gY29uZmlnLmhhc1NlY29uZHNcbiAgICAgICAgICAgIDogam9iLmhhc1NlY29uZHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aW1lb3V0IHdhcyB1bmRlZmluZWQsIGNyb24gd2FzIHVuZGVmaW5lZCxcbiAgLy8gYW5kIGRhdGUgd2FzIHVuZGVmaW5lZCB0aGVuIHNldCB0aGUgZGVmYXVsdFxuICAvLyAoYXMgbG9uZyBhcyB0aGUgZGVmYXVsdCB0aW1lb3V0IGlzID49IDApXG4gIGlmIChcbiAgICBOdW1iZXIuaXNGaW5pdGUoY29uZmlnLnRpbWVvdXQpICYmXG4gICAgY29uZmlnLnRpbWVvdXQgPj0gMCAmJlxuICAgIHR5cGVvZiBqb2IudGltZW91dCA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygam9iLmNyb24gPT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGpvYi5kYXRlID09PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBqb2IuaW50ZXJ2YWwgPT09ICd1bmRlZmluZWQnXG4gICkge1xuICAgIGpvYi50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG4gIH1cblxuICAvLyBJZiBpbnRlcnZhbCB3YXMgdW5kZWZpbmVkLCBjcm9uIHdhcyB1bmRlZmluZWQsXG4gIC8vIGFuZCBkYXRlIHdhcyB1bmRlZmluZWQgdGhlbiBzZXQgdGhlIGRlZmF1bHRcbiAgLy8gKGFzIGxvbmcgYXMgdGhlIGRlZmF1bHQgaW50ZXJ2YWwgaXMgPiAwLCBvciBpdCB3YXMgYSBzY2hlZHVsZSwgb3IgaXQgd2FzIHZhbGlkKVxuICBpZiAoXG4gICAgKChOdW1iZXIuaXNGaW5pdGUoY29uZmlnLmludGVydmFsKSAmJiBjb25maWcuaW50ZXJ2YWwgPiAwKSB8fFxuICAgICAgaXNTY2hlZHVsZShjb25maWcuaW50ZXJ2YWwpKSAmJlxuICAgIHR5cGVvZiBqb2IuaW50ZXJ2YWwgPT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGpvYi5jcm9uID09PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBqb2IuZGF0ZSA9PT0gJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgam9iLmludGVydmFsID0gY29uZmlnLmludGVydmFsO1xuICB9XG5cbiAgaWYgKGlzU0FOQihjb25maWcudGltZXpvbmUpICYmICFqb2IudGltZXpvbmUpIHtcbiAgICBqb2IudGltZXpvbmUgPSBjb25maWcudGltZXpvbmU7XG4gIH1cblxuICByZXR1cm4gam9iO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBidWlsZEpvYjtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9qb2ItYnVpbGRlci5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiam9pbiIsImlzU0FOQiIsImlzVmFsaWRQYXRoIiwiYm9vbGVhbiIsImxhdGVyIiwiaXNTY2hlZHVsZSIsInBhcnNlVmFsdWUiLCJkYXRlIiwibG9jYWxUaW1lIiwiYnVpbGRKb2IiLCJqb2IiLCJjb25maWciLCJwYXRoIiwicm9vdCIsImFjY2VwdGVkRXh0ZW5zaW9ucyIsInNvbWUiLCJleHQiLCJlbmRzV2l0aCIsImRlZmF1bHRFeHRlbnNpb24iLCJqb2JPYmplY3QiLCJuYW1lIiwidGltZW91dCIsImludGVydmFsIiwidGltZXpvbmUiLCJ0b1N0cmluZyIsIndvcmtlciIsImV2YWwiLCJjcm9uIiwicGFyc2UiLCJoYXNTZWNvbmRzIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O2VBQWlCQSxPQUFPLENBQUMsTUFBRCxDO0lBQWhCQyxJLFlBQUFBLEk7O0FBQ1IsSUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUMseUJBQUQsQ0FBdEI7O0FBQ0EsSUFBTUcsV0FBVyxHQUFHSCxPQUFPLENBQUMsZUFBRCxDQUEzQjs7Z0JBQ29CQSxPQUFPLENBQUMsU0FBRCxDO0lBQW5CSSxPLGFBQUFBLE87O0FBQ1IsSUFBTUMsS0FBSyxHQUFHTCxPQUFPLENBQUMsZUFBRCxDQUFyQjs7Z0JBQ21DQSxPQUFPLENBQUMsYUFBRCxDO0lBQWxDTSxVLGFBQUFBLFU7SUFBWUMsVSxhQUFBQSxVOztBQUVwQkYsS0FBSyxDQUFDRyxJQUFOLENBQVdDLFNBQVgsRyxDQUVBOztBQUNBLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUNDLEdBQUQsRUFBTUMsTUFBTixFQUFpQjtBQUNoQyxNQUFJVixNQUFNLENBQUNTLEdBQUQsQ0FBVixFQUFpQjtBQUNmLFFBQU1FLElBQUksR0FBR1osSUFBSSxDQUNmVyxNQUFNLENBQUNFLElBRFEs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QU0sQ0FBQ0MsUUFBUCxDQUFnQnBCLE1BQU0sQ0FBQ1csUUFBdkIsS0FBb0NYLE1BQU0sQ0FBQ1csUUFBUCxHQUFrQixDQUF2RCxJQUNDakIsVUFBVSxDQUFDTSxNQUFNLENBQUNXLFFBQVIsQ0FEWixLQUVBLE9BQU9aLEdBQUcsQ0FBQ1ksUUFBWCxLQUF3QixXQUZ4QixJQUdBLE9BQU9aLEdBQUcsQ0FBQ2lCLElBQVgsS0FBb0IsV0FIcEIsSUFJQSxPQUFPakIsR0FBRyxDQUFDSCxJQUFYLEtBQW9CLFdBTHRCLEVBTUU7QUFDQUcsSUFBQUEsR0FBRyxDQUFDWSxRQUFKLEdBQWVYLE1BQU0sQ0FBQ1csUUFBdEI7QUFDRDs7QUFFRCxNQUFJckIsTUFBTSxDQUFDVSxNQUFNLENBQUNZLFFBQVIsQ0FBTixJQUEyQixDQUFDYixHQUFHLENBQUNhLFFBQXBDLEVBQThDO0FBQzVDYixJQUFBQSxHQUFHLENBQUNhLFFBQUosR0FBZVosTUFBTSxDQUFDWSxRQUF0QjtBQUNEOztBQUVELFNBQU9iLEdBQVA7QUFDRCxDQTlIRDs7QUFnSUFzQixNQUFNLENBQUNDLE9BQVAsR0FBaUJ4QixRQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgam9pbiB9ID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgaXNTQU5CID0gcmVxdWlyZSgnaXMtc3RyaW5nLWFuZC1ub3QtYmxhbmsnKTtcbmNvbnN0IGlzVmFsaWRQYXRoID0gcmVxdWlyZSgnaXMtdmFsaWQtcGF0aCcpO1xuY29uc3QgeyBib29sZWFuIH0gPSByZXF1aXJlKCdib29sZWFuJyk7XG5jb25zdCBsYXRlciA9IHJlcXVpcmUoJ0BicmVlanMvbGF0ZXInKTtcbmNvbnN0IHsgaXNTY2hlZHVsZSwgcGFyc2VWYWx1ZSB9ID0gcmVxdWlyZSgnLi9qb2ItdXRpbHMnKTtcblxubGF0ZXIuZGF0ZS5sb2NhbFRpbWUoKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmNvbnN0IGJ1aWxkSm9iID0gKGpvYiwgY29uZmlnKSA9PiB7XG4gIGlmIChpc1NBTkIoam9iKSkge1xuICAgIGNvbnN0IHBhdGggPSBqb2luKFxuICAgICAgY29uZmlnLnJvb3QsXG4gICAgICBjb25maWcuYWNjZXB0ZWRFeHRlbnNpb25zLnNvbWUoKGV4dCkgPT4gam9iLmVuZHNXaXRoKGV4dCkpXG4gICAgICAgID8gam9iXG4gICAgICAgIDogYCR7am9ifS4ke2NvbmZpZy5kZWZhdWx0RXh0ZW5zaW9ufWBcbiAgICApO1xuXG4gICAgY29uc3Qgam9iT2JqZWN0ID0ge1xuICAgICAgbmFtZTogam9iLFxuICAgICAgcGF0aCxcbiAgICAgIHRpbWVvdXQ6IGNvbmZpZy50aW1lb3V0LFxuICAgICAgaW50ZXJ2YWw6IGNvbmZpZy5pbnRlcnZhbFxuICAgIH07XG4gICAgaWYgKGlzU0FOQihjb25maWcudGltZXpvbmUpKSB7XG4gICAgICBqb2JPYmplY3QudGltZXpvbmUgPSBjb25maWcudGltZXpvbmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvYk9iamVjdDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygam9iID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcGF0aCA9IGAoJHtqb2IudG9TdHJpbmcoKX0pKClgO1xuXG4gICAgY29uc3Qgam9iT2JqZWN0ID0ge1xuICAgICAgbmFtZTogam9iLm5hbWUsXG4gICAgICBwYXRoLFxuICAgICAgd29ya2VyOiB7IGV2YWw6IHRydWUgfSxcbiAgICAgIHRpbWVvdXQ6IGNvbmZpZy50aW1lb3V0LFxuICAgICAgaW50ZXJ2YWw6IGNvbmZpZy5pbnRlcnZhbFxuICAgIH07XG4gICAgaWYgKGlzU0FOQihjb25maWcudGltZXpvbmUpKSB7XG4gICAgICBqb2JPYmplY3QudGltZXpvbmUgPSBjb25maWcudGltZXpvbmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvYk9iamVjdDtcbiAgfVxuXG4gIC8vIFByb2Nlc3Mgam9iLnBhdGhcbiAgaWYgKHR5cGVvZiBqb2IucGF0aCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHBhdGggPSBgKCR7am9iLnBhdGgudG9TdHJpbmcoKX0pKClgO1xuXG4gICAgam9iLnBhdGggPSBwYXRoO1xuICAgIGpvYi53b3JrZXIgPSB7XG4gICAgICBldmFsOiB0cnVlLFxuICAgICAgLi4uam9iLndvcmtlclxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGF0aCA9IGlzU0FOQihqb2IucGF0aClcbiAgICAgID8gam9iLnBhdGhcbiAgICAgIDogam9pbihcbiAgICAgICAgICBjb25maWcucm9vdCxcbiAgICAgICAgICBjb25maWcuYWNjZXB0ZWRFeHRlbnNpb25zLnNvbWUoKGV4dCkgPT4gam9iLm5hbWUuZW5kc1dpdGgoZXh0KSlcbiAgICAgICAgICAgID8gam9iLm5hbWVcbiAgICAgICAgICAgIDogYCR7am9iLm5hbWV9LiR7Y29uZmlnLmRlZmF1bHRFeHRlbnNpb259YFxuICAgICAgICApO1xuXG4gICAgaWYgKGlzVmFsaWRQYXRoKHBhdGgpKSB7XG4gICAgICBqb2IucGF0aCA9IHBhdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFzc3VtZSB0aGF0IGl0J3MgYSB0cmFuc2Zvcm1lZCBldmFsIHN0cmluZ1xuICAgICAgam9iLndvcmtlciA9IHtcbiAgICAgICAgZXZhbDogdHJ1ZSxcbiAgICAgICAgLi4uam9iLndvcmtlclxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGpvYi50aW1lb3V0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGpvYi50aW1lb3V0ID0gcGFyc2VWYWx1ZShqb2IudGltZW91dCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGpvYi5pbnRlcnZhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqb2IuaW50ZXJ2YWwgPSBwYXJzZVZhbHVlKGpvYi5pbnRlcnZhbCk7XG4gIH1cblxuICAvLyBCdWlsZCBjcm9uXG4gIGlmICh0eXBlb2Ygam9iLmNyb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKGlzU2NoZWR1bGUoam9iLmNyb24pKSB7XG4gICAgICBqb2IuaW50ZXJ2YWwgPSBqb2IuY3JvbjtcbiAgICAgIC8vIERlbGV0ZSBqb2IuY3JvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgam9iLmludGVydmFsID0gbGF0ZXIucGFyc2UuY3JvbihcbiAgICAgICAgam9iLmNyb24sXG4gICAgICAgIGJvb2xlYW4oXG4gICAgICAgICAgdHlwZW9mIGpvYi5oYXNTZWNvbmRzID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBjb25maWcuaGFzU2Vjb25kc1xuICAgICAgICAgICAgOiBqb2IuaGFzU2Vjb25kc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRpbWVvdXQgd2FzIHVuZGVmaW5lZCwgY3JvbiB3YXMgdW5kZWZpbmVkLFxuICAvLyBhbmQgZGF0ZSB3YXMgdW5kZWZpbmVkIHRoZW4gc2V0IHRoZSBkZWZhdWx0XG4gIC8vIChhcyBsb25nIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQgaXMgPj0gMClcbiAgaWYgKFxuICAgIE51bWJlci5pc0Zpbml0ZShjb25maWcudGltZW91dCkgJiZcbiAgICBjb25maWcudGltZW91dCA+PSAwICYmXG4gICAgdHlwZW9mIGpvYi50aW1lb3V0ID09PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBqb2IuY3JvbiA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygam9iLmRhdGUgPT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGpvYi5pbnRlcnZhbCA9PT0gJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgam9iLnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcbiAgfVxuXG4gIC8vIElmIGludGVydmFsIHdhcyB1bmRlZmluZWQsIGNyb24gd2FzIHVuZGVmaW5lZCxcbiAgLy8gYW5kIGRhdGUgd2FzIHVuZGVmaW5lZCB0aGVuIHNldCB0aGUgZGVmYXVsdFxuICAvLyAoYXMgbG9uZyBhcyB0aGUgZGVmYXVsdCBpbnRlcnZhbCBpcyA+IDAsIG9yIGl0IHdhcyBhIHNjaGVkdWxlLCBvciBpdCB3YXMgdmFsaWQpXG4gIGlmIChcbiAgICAoKE51bWJlci5pc0Zpbml0ZShjb25maWcuaW50ZXJ2YWwpICYmIGNvbmZpZy5pbnRlcnZhbCA+IDApIHx8XG4gICAgICBpc1NjaGVkdWxlKGNvbmZpZy5pbnRlcnZhbCkpICYmXG4gICAgdHlwZW9mIGpvYi5pbnRlcnZhbCA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygam9iLmNyb24gPT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGpvYi5kYXRlID09PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICBqb2IuaW50ZXJ2YWwgPSBjb25maWcuaW50ZXJ2YWw7XG4gIH1cblxuICBpZiAoaXNTQU5CKGNvbmZpZy50aW1lem9uZSkgJiYgIWpvYi50aW1lem9uZSkge1xuICAgIGpvYi50aW1lem9uZSA9IGNvbmZpZy50aW1lem9uZTtcbiAgfVxuXG4gIHJldHVybiBqb2I7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkSm9iO1xuIl19

@@ -61,3 +61,5 @@ "use strict";

var path = join(config.root, job.endsWith('.js') || job.endsWith('.mjs') ? job : "".concat(job, ".").concat(config.defaultExtension));
var path = join(config.root, config.acceptedExtensions.some(function (ext) {
return job.endsWith(ext);
}) ? job : "".concat(job, ".").concat(config.defaultExtension));
/* istanbul ignore next */

@@ -100,3 +102,5 @@

// Validate path
var _path = isSANB(job.path) ? job.path : join(config.root, job.name.endsWith('.js') || job.name.endsWith('.mjs') ? job.name : "".concat(job.name, ".").concat(config.defaultExtension));
var _path = isSANB(job.path) ? job.path : join(config.root, config.acceptedExtensions.some(function (ext) {
return job.name.endsWith(ext);
}) ? job.name : "".concat(job.name, ".").concat(config.defaultExtension));

@@ -204,4 +208,5 @@ if (isValidPath(_path)) {

return errors;
};
}; // eslint-disable-next-line complexity
var validate = function validate(job, i, names, config) {

@@ -295,2 +300,2 @@ var errors = validateJobName(job, i, names);

module.exports.cronValidateWithSeconds = cronValidateWithSeconds;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9qb2ItdmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImpvaW4iLCJjb21iaW5lRXJyb3JzIiwiY3JvbiIsImlzU0FOQiIsImlzVmFsaWRQYXRoIiwidGhyZWFkcyIsImdldE5hbWUiLCJpc1NjaGVkdWxlIiwicGFyc2VWYWx1ZSIsInZhbGlkYXRlUmVzZXJ2ZWRKb2JOYW1lIiwibmFtZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJ2YWxpZGF0ZVN0cmluZ0pvYiIsImpvYiIsImkiLCJjb25maWciLCJlcnJvcnMiLCJqb2JOYW1lRXJyb3IiLCJyb290IiwicHVzaCIsInBhdGgiLCJlbmRzV2l0aCIsImRlZmF1bHRFeHRlbnNpb24iLCJicm93c2VyIiwic3RhdHMiLCJzdGF0U3luYyIsImlzRmlsZSIsInZhbGlkYXRlRnVuY3Rpb25Kb2IiLCJ0b1N0cmluZyIsImxlbmd0aCIsInZhbGlkYXRlSm9iUGF0aCIsInByZWZpeCIsImVyciIsImNyb25WYWxpZGF0ZVdpdGhTZWNvbmRzIiwicHJlc2V0IiwiY3JvblZhbGlkYXRlIiwib3ZlcnJpZGUiLCJ1c2VTZWNvbmRzIiwidmFsaWRhdGVDcm9uIiwiaGFzU2Vjb25kcyIsInJlc3VsdCIsImlzVmFsaWQiLCJnZXRFcnJvciIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZUpvYk5hbWUiLCJyZXNlcnZlZE5hbWVzIiwidmFsaWRhdGUiLCJuYW1lcyIsImludGVydmFsIiwidGltZW91dCIsImRhdGUiLCJEYXRlIiwiZm9yRWFjaCIsInByb3AiLCJjbG9zZVdvcmtlckFmdGVyTXMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsb3NlV29ya2Vyc0FmdGVyTXMiLCJ0aW1lem9uZSIsInRvTG9jYWxlU3RyaW5nIiwidGltZVpvbmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQU1BLEVBQUUsR0FBR0MsT0FBTyxDQUFDLElBQUQsQ0FBbEI7O2VB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QUR2RSxDQURGLEVBR0U7QUFDQXRDLElBQUFBLE1BQU0sQ0FBQ0csSUFBUCxDQUNFLElBQUlSLEtBQUosV0FDS29CLE1BREwsMERBQzJEbEIsR0FBRyxDQUFDNEMsbUJBRC9ELHVDQURGO0FBS0Q7O0FBRUQsTUFBSXZELE1BQU0sQ0FBQ1csR0FBRyxDQUFDNkMsUUFBTCxDQUFOLElBQXdCLENBQUMsQ0FBQyxPQUFELEVBQVUsUUFBVixFQUFvQmhELFFBQXBCLENBQTZCRyxHQUFHLENBQUM2QyxRQUFqQyxDQUE3QixFQUF5RTtBQUN2RSxRQUFJO0FBQ0Y7QUFDQTtBQUNBLFVBQUlQLElBQUosR0FBV1EsY0FBWCxDQUEwQixJQUExQixFQUFnQztBQUFFQyxRQUFBQSxRQUFRLEVBQUUvQyxHQUFHLENBQUM2QztBQUFoQixPQUFoQztBQUNELEtBSkQsQ0FJRSxnQkFBTTtBQUNOMUMsTUFBQUEsTUFBTSxDQUFDRyxJQUFQLENBQ0UsSUFBSVIsS0FBSixXQUNLb0IsTUFETCxnRUFDaUVsQixHQUFHLENBQUM2QyxRQURyRSxFQURGO0FBS0Q7QUFDRjs7QUFFRCxNQUFJMUMsTUFBTSxDQUFDYSxNQUFQLEdBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLFVBQU03QixhQUFhLENBQUNnQixNQUFELENBQW5CO0FBQ0Q7QUFDRixDQXBIRDs7QUFzSEE2QyxNQUFNLENBQUNDLE9BQVAsR0FBaUJoQixRQUFqQjtBQUNBZSxNQUFNLENBQUNDLE9BQVAsQ0FBZTdCLHVCQUFmLEdBQXlDQSx1QkFBekMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5jb25zdCB7IGpvaW4gfSA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGNvbWJpbmVFcnJvcnMgPSByZXF1aXJlKCdjb21iaW5lLWVycm9ycycpO1xuY29uc3QgY3JvbiA9IHJlcXVpcmUoJ2Nyb24tdmFsaWRhdGUnKTtcbmNvbnN0IGlzU0FOQiA9IHJlcXVpcmUoJ2lzLXN0cmluZy1hbmQtbm90LWJsYW5rJyk7XG5jb25zdCBpc1ZhbGlkUGF0aCA9IHJlcXVpcmUoJ2lzLXZhbGlkLXBhdGgnKTtcbmNvbnN0IHRocmVhZHMgPSByZXF1aXJlKCdidGhyZWFkcycpO1xuXG5jb25zdCB7IGdldE5hbWUsIGlzU2NoZWR1bGUsIHBhcnNlVmFsdWUgfSA9IHJlcXVpcmUoJy4vam9iLXV0aWxzJyk7XG5cbmNvbnN0IHZhbGlkYXRlUmVzZXJ2ZWRKb2JOYW1lID0gKG5hbWUpID0+IHtcbiAgLy8gRG9uJ3QgYWxsb3cgYSBqb2IgdG8gaGF2ZSB0aGUgYGluZGV4YCBmaWxlIG5hbWVcbiAgaWYgKFsnaW5kZXgnLCAnaW5kZXguanMnLCAnaW5kZXgubWpzJ10uaW5jbHVkZXMobmFtZSkpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgJ1lvdSBjYW5ub3QgdXNlIHRoZSByZXNlcnZlZCBqb2IgbmFtZSBvZiBcImluZGV4XCIsIFwiaW5kZXguanNcIiwgbm9yIFwiaW5kZXgubWpzXCInXG4gICAgKTtcbiAgfVxufTtcblxuY29uc3QgdmFsaWRhdGVTdHJpbmdKb2IgPSAoam9iLCBpLCBjb25maWcpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gW107XG5cbiAgY29uc3Qgam9iTmFtZUVycm9yID0gdmFsaWRhdGVSZXNlcnZlZEpvYk5hbWUoam9iKTtcbiAgaWYgKGpvYk5hbWVFcnJvcikge1xuICAgIHRocm93IGpvYk5hbWVFcnJvcjtcbiAgfVxuXG4gIGlmICghY29uZmlnLnJvb3QpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYEpvYiAjJHtcbiAgICAgICAgICBpICsgMVxuICAgICAgICB9IFwiJHtqb2J9XCIgcmVxdWlyZXMgcm9vdCBkaXJlY3Rvcnkgb3B0aW9uIHRvIGF1dG8tcG9wdWxhdGUgcGF0aGBcbiAgICAgIClcbiAgICApO1xuICAgIHRocm93IGNvbWJpbmVFcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBqb2luKFxuICAgIGNvbmZpZy5yb290LFxuICAgIGpvYi5lbmRzV2l0aCgnLmpzJykgfHwgam9iLmVuZHNXaXRoKCcubWpzJylcbiAgICAgID8gam9iXG4gICAgICA6IGAke2pvYn0uJHtjb25maWcuZGVmYXVsdEV4dGVuc2lvbn1gXG4gICk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCF0aHJlYWRzLmJyb3dzZXIpIHtcbiAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKHBhdGgpO1xuICAgIGlmICghc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSm9iICMke2kgKyAxfSBcIiR7am9ifVwiIHBhdGggbWlzc2luZzogJHtwYXRofWApO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgdmFsaWRhdGVGdW5jdGlvbkpvYiA9IChqb2IsIGkpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gW107XG5cbiAgY29uc3QgcGF0aCA9IGAoJHtqb2IudG9TdHJpbmcoKX0pKClgO1xuICAvLyBDYW4ndCBiZSBhIGJ1aWx0LWluIG9yIGJvdW5kIGZ1bmN0aW9uXG4gIGlmIChwYXRoLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihgSm9iICMke2kgKyAxfSBjYW4ndCBiZSBhIGJvdW5kIG9yIGJ1aWx0LWluIGZ1bmN0aW9uYClcbiAgICApO1xuICB9XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgY29tYmluZUVycm9ycyhlcnJvcnMpO1xuICB9XG59O1xuXG5jb25zdCB2YWxpZGF0ZUpvYlBhdGggPSAoam9iLCBwcmVmaXgsIGNvbmZpZykgPT4ge1xuICBjb25zdCBlcnJvcnMgPSBbXTtcblxuICBpZiAodHlwZW9mIGpvYi5wYXRoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcGF0aCA9IGAoJHtqb2IucGF0aC50b1N0cmluZygpfSkoKWA7XG5cbiAgICAvLyBDYW4ndCBiZSBhIGJ1aWx0LWluIG9yIGJvdW5kIGZ1bmN0aW9uXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGAke3ByZWZpeH0gY2FuJ3QgYmUgYSBib3VuZCBvciBidWlsdC1pbiBmdW5jdGlvbmApKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzU0FOQihqb2IucGF0aCkgJiYgIWNvbmZpZy5yb290KSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGAke3ByZWZpeH0gcmVxdWlyZXMgcm9vdCBkaXJlY3Rvcnkgb3B0aW9uIHRvIGF1dG8tcG9wdWxhdGUgcGF0aGBcbiAgICAgIClcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIFZhbGlkYXRlIHBhdGhcbiAgICBjb25zdCBwYXRoID0gaXNTQU5CKGpvYi5wYXRoKVxuICAgICAgPyBqb2IucGF0aFxuICAgICAgOiBqb2luKFxuICAgICAgICAgIGNvbmZpZy5yb290LFxuICAgICAgICAgIGpvYi5uYW1lLmVuZHNXaXRoKCcuanMnKSB8fCBqb2IubmFtZS5lbmRzV2l0aCgnLm1qcycpXG4gICAgICAgICAgICA/IGpvYi5uYW1lXG4gICAgICAgICAgICA6IGAke2pvYi5uYW1lfS4ke2NvbmZpZy5kZWZhdWx0RXh0ZW5zaW9ufWBcbiAgICAgICAgKTtcbiAgICBpZiAoaXNWYWxpZFBhdGgocGF0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmICghdGhyZWFkcy5icm93c2VyKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhwYXRoKTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWRlcHRoXG4gICAgICAgICAgaWYgKCFzdGF0cy5pc0ZpbGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ByZWZpeH0gcGF0aCBtaXNzaW5nOiAke3BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufTtcblxuY29uc3QgY3JvblZhbGlkYXRlV2l0aFNlY29uZHMgPSAoam9iLCBjb25maWcpID0+IHtcbiAgY29uc3QgcHJlc2V0ID1cbiAgICBqb2IuY3JvblZhbGlkYXRlICYmIGpvYi5jcm9uVmFsaWRhdGUucHJlc2V0XG4gICAgICA/IGpvYi5jcm9uVmFsaWRhdGUucHJlc2V0XG4gICAgICA6IGNvbmZpZy5jcm9uVmFsaWRhdGUgJiYgY29uZmlnLmNyb25WYWxpZGF0ZS5wcmVzZXRcbiAgICAgID8gY29uZmlnLmNyb25WYWxpZGF0ZS5wcmVzZXRcbiAgICAgIDogJ2RlZmF1bHQnO1xuICBjb25zdCBvdmVycmlkZSA9IHtcbiAgICAuLi4oY29uZmlnLmNyb25WYWxpZGF0ZSAmJiBjb25maWcuY3JvblZhbGlkYXRlLm92ZXJyaWRlXG4gICAgICA/IGNvbmZpZy5jcm9uVmFsaWRhdGUub3ZlcnJpZGVcbiAgICAgIDoge30pLFxuICAgIC4uLihqb2IuY3JvblZhbGlkYXRlICYmIGpvYi5jcm9uVmFsaWRhdGUub3ZlcnJpZGVcbiAgICAgID8gam9iLmNyb25WYWxpZGF0ZS5vdmVycmlkZVxuICAgICAgOiB7fSksXG4gICAgdXNlU2Vjb25kczogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLmNyb25WYWxpZGF0ZSxcbiAgICAuLi5qb2IuY3JvblZhbGlkYXRlLFxuICAgIHByZXNldCxcbiAgICBvdmVycmlkZVxuICB9O1xufTtcblxuY29uc3QgdmFsaWRhdGVDcm9uID0gKGpvYiwgcHJlZml4LCBjb25maWcpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gW107XG5cbiAgaWYgKCFpc1NjaGVkdWxlKGpvYi5jcm9uKSkge1xuICAgIC8vIElmIGBoYXNTZWNvbmRzYCB3YXMgYHRydWVgIHRoZW4gc2V0IGBjcm9uVmFsaWRhdGVgIGFuZCBpbmhlcml0IGFueSBleGlzdGluZyBvcHRpb25zXG4gICAgY29uc3QgY3JvblZhbGlkYXRlID0gam9iLmhhc1NlY29uZHNcbiAgICAgID8gY3JvblZhbGlkYXRlV2l0aFNlY29uZHMoam9iLCBjb25maWcpXG4gICAgICA6IGNvbmZpZy5jcm9uVmFsaWRhdGU7XG5cbiAgICAvL1xuICAgIC8vIHZhbGlkYXRlIGNyb24gcGF0dGVyblxuICAgIC8vIChtdXN0IHN1cHBvcnQgcGF0dGVybnMgc3VjaCBhcyBgKiAqIEwgKiAqYCBhbmQgYDAgMC81IDE0ICogKiA/YCAoYW5kIGFsaWFzZXMgdG9vKVxuICAgIC8vXG4gICAgLy8gIDxodHRwczovL2dpdGh1Yi5jb20vQWlyZm9vb3gvY3Jvbi12YWxpZGF0ZS9pc3N1ZXMvNjc+XG4gICAgLy9cbiAgICBjb25zdCByZXN1bHQgPSBjcm9uKGpvYi5jcm9uLCBjcm9uVmFsaWRhdGUpO1xuXG4gICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKSB7XG4gICAgICAvLyBOT1RFOiBpdCBpcyBhbHdheXMgdmFsaWRcbiAgICAgIC8vIGNvbnN0IHNjaGVkdWxlID0gbGF0ZXIuc2NoZWR1bGUoXG4gICAgICAvLyAgIGxhdGVyLnBhcnNlLmNyb24oXG4gICAgICAvLyAgICAgam9iLmNyb24sXG4gICAgICAvLyAgICAgYm9vbGVhbihcbiAgICAgIC8vICAgICAgIHR5cGVvZiBqb2IuaGFzU2Vjb25kcyA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgIC8vICAgICAgICAgPyBjb25maWcuaGFzU2Vjb25kc1xuICAgICAgLy8gICAgICAgICA6IGpvYi5oYXNTZWNvbmRzXG4gICAgICAvLyAgICAgKVxuICAgICAgLy8gICApXG4gICAgICAvLyApO1xuICAgICAgLy8gaWYgKHNjaGVkdWxlLmlzVmFsaWQoKSkge1xuICAgICAgLy8gICBqb2IuaW50ZXJ2YWwgPSBzY2hlZHVsZTtcbiAgICAgIC8vIH0gLy8gZWxzZSB7XG4gICAgICAvLyAgIGVycm9ycy5wdXNoKFxuICAgICAgLy8gICAgIG5ldyBFcnJvcihcbiAgICAgIC8vICAgICAgIGAke3ByZWZpeH0gaGFkIGFuIGludmFsaWQgY3JvbiBzY2hlZHVsZSAoc2VlIDxodHRwczovL2Nyb250YWIuZ3VydT4gaWYgeW91IG5lZWQgaGVscClgXG4gICAgICAvLyAgICAgKVxuICAgICAgLy8gICApO1xuICAgICAgLy8gfVxuXG4gICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0LmdldEVycm9yKCkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgbmV3IEVycm9yKGAke3ByZWZpeH0gaGFkIGFuIGludmFsaWQgY3JvbiBwYXR0ZXJuOiAke21lc3NhZ2V9YClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufTtcblxuY29uc3QgdmFsaWRhdGVKb2JOYW1lID0gKGpvYiwgaSwgcmVzZXJ2ZWROYW1lcykgPT4ge1xuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgY29uc3QgbmFtZSA9IGdldE5hbWUoam9iKTtcblxuICBpZiAoIW5hbWUpIHtcbiAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEpvYiAjJHtpICsgMX0gaXMgbWlzc2luZyBhIG5hbWVgKSk7XG4gIH1cblxuICAvLyBUaHJvdyBhbiBlcnJvciBpZiBkdXBsaWNhdGUgam9iIG5hbWVzXG4gIGlmIChyZXNlcnZlZE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoYEpvYiAjJHtpICsgMX0gaGFzIGEgZHVwbGljYXRlIGpvYiBuYW1lIG9mICR7Z2V0TmFtZShqb2IpfWApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59O1xuXG5jb25zdCB2YWxpZGF0ZSA9IChqb2IsIGksIG5hbWVzLCBjb25maWcpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVKb2JOYW1lKGpvYiwgaSwgbmFtZXMpO1xuXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IGNvbWJpbmVFcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIC8vIFN1cHBvcnQgYSBzaW1wbGUgc3RyaW5nIHdoaWNoIHdlIHdpbGwgdHJhbnNmb3JtIHRvIGhhdmUgYSBwYXRoXG4gIGlmIChpc1NBTkIoam9iKSkge1xuICAgIHJldHVybiB2YWxpZGF0ZVN0cmluZ0pvYihqb2IsIGksIGNvbmZpZyk7XG4gIH1cblxuICAvLyBKb2IgaXMgYSBmdW5jdGlvblxuICBpZiAodHlwZW9mIGpvYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWxpZGF0ZUZ1bmN0aW9uSm9iKGpvYiwgaSk7XG4gIH1cblxuICAvLyBVc2UgYSBwcmVmaXggZm9yIGVycm9yc1xuICBjb25zdCBwcmVmaXggPSBgSm9iICMke2kgKyAxfSBuYW1lZCBcIiR7am9iLm5hbWV9XCJgO1xuXG4gIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlSm9iUGF0aChqb2IsIHByZWZpeCwgY29uZmlnKSk7XG5cbiAgLy8gRG9uJ3QgYWxsb3cgdXNlcnMgdG8gbWl4IGludGVydmFsIEFORCBjcm9uXG4gIGlmICh0eXBlb2Ygam9iLmludGVydmFsICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygam9iLmNyb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoYCR7cHJlZml4fSBjYW5ub3QgaGF2ZSBib3RoIGludGVydmFsIGFuZCBjcm9uIGNvbmZpZ3VyYXRpb25gKVxuICAgICk7XG4gIH1cblxuICAvLyBEb24ndCBhbGxvdyB1c2VycyB0byBtaXggdGltZW91dCBBTkQgZGF0ZVxuICBpZiAodHlwZW9mIGpvYi50aW1lb3V0ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygam9iLmRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGAke3ByZWZpeH0gY2Fubm90IGhhdmUgYm90aCB0aW1lb3V0IGFuZCBkYXRlYCkpO1xuICB9XG5cbiAgY29uc3Qgam9iTmFtZUVycm9yID0gdmFsaWRhdGVSZXNlcnZlZEpvYk5hbWUoam9iLm5hbWUpO1xuICBpZiAoam9iTmFtZUVycm9yKSB7XG4gICAgZXJyb3JzLnB1c2goam9iTmFtZUVycm9yKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGRhdGVcbiAgaWYgKHR5cGVvZiBqb2IuZGF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgIShqb2IuZGF0ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGAke3ByZWZpeH0gaGFkIGFuIGludmFsaWQgRGF0ZSBvZiAke2pvYi5kYXRlfWApKTtcbiAgfVxuXG4gIFsndGltZW91dCcsICdpbnRlcnZhbCddLmZvckVhY2goKHByb3ApID0+IHtcbiAgICBpZiAodHlwZW9mIGpvYltwcm9wXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlVmFsdWUoam9iW3Byb3BdKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBjb21iaW5lRXJyb3JzKFtcbiAgICAgICAgICAgIG5ldyBFcnJvcihgJHtwcmVmaXh9IGhhZCBhbiBpbnZhbGlkICR7cHJvcH0gb2YgJHtqb2IudGltZW91dH1gKSxcbiAgICAgICAgICAgIGVyclxuICAgICAgICAgIF0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBWYWxpZGF0ZSBoYXNTZWNvbmRzXG4gIGlmIChcbiAgICB0eXBlb2Ygam9iLmhhc1NlY29uZHMgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGpvYi5oYXNTZWNvbmRzICE9PSAnYm9vbGVhbidcbiAgKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGAke3ByZWZpeH0gaGFkIGhhc1NlY29uZHMgdmFsdWUgb2YgJHtqb2IuaGFzU2Vjb25kc30gKGl0IG11c3QgYmUgYSBCb29sZWFuKWBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgY3JvblZhbGlkYXRlXG4gIGlmIChcbiAgICB0eXBlb2Ygam9iLmNyb25WYWxpZGF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygam9iLmNyb25WYWxpZGF0ZSAhPT0gJ29iamVjdCdcbiAgKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGAke3ByZWZpeH0gaGFkIGNyb25WYWxpZGF0ZSB2YWx1ZSBzZXQsIGJ1dCBpdCBtdXN0IGJlIGFuIE9iamVjdGBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBqb2IuY3JvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZUNyb24oam9iLCBwcmVmaXgsIGNvbmZpZykpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgY2xvc2VXb3JrZXJBZnRlck1zXG4gIGlmIChcbiAgICB0eXBlb2Ygam9iLmNsb3NlV29ya2VyQWZ0ZXJNcyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoIU51bWJlci5pc0Zpbml0ZShqb2IuY2xvc2VXb3JrZXJBZnRlck1zKSB8fCBqb2IuY2xvc2VXb3JrZXJBZnRlck1zIDw9IDApXG4gICkge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgbmV3IEVycm9yKFxuICAgICAgICBgJHtwcmVmaXh9IGhhZCBhbiBpbnZhbGlkIGNsb3NlV29ya2Vyc0FmdGVyTXMgdmFsdWUgb2YgJHtqb2IuY2xvc2VXb3JrZXJzQWZ0ZXJNc30gKGl0IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyID4gMClgXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1NBTkIoam9iLnRpbWV6b25lKSAmJiAhWydsb2NhbCcsICdzeXN0ZW0nXS5pbmNsdWRlcyhqb2IudGltZXpvbmUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGAudG9Mb2NhbGVTdHJpbmcoKWAgd2lsbCB0aHJvdyBhIGBSYW5nZUVycm9yYCBpZiBgdGltZVpvbmVgIHN0cmluZ1xuICAgICAgLy8gaXMgYm9ndXMgb3Igbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQuXG4gICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCdpYScsIHsgdGltZVpvbmU6IGpvYi50aW1lem9uZSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7cHJlZml4fSBoYWQgYW4gaW52YWxpZCBvciB1bnN1cHBvcnRlZCB0aW1lem9uZSBzcGVjaWZpZWQ6ICR7am9iLnRpbWV6b25lfWBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBjb21iaW5lRXJyb3JzKGVycm9ycyk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsaWRhdGU7XG5tb2R1bGUuZXhwb3J0cy5jcm9uVmFsaWRhdGVXaXRoU2Vjb25kcyA9IGNyb25WYWxpZGF0ZVdpdGhTZWNvbmRzO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9qb2ItdmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImpvaW4iLCJjb21iaW5lRXJyb3JzIiwiY3JvbiIsImlzU0FOQiIsImlzVmFsaWRQYXRoIiwidGhyZWFkcyIsImdldE5hbWUiLCJpc1NjaGVkdWxlIiwicGFyc2VWYWx1ZSIsInZhbGlkYXRlUmVzZXJ2ZWRKb2JOYW1lIiwibmFtZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJ2YWxpZGF0ZVN0cmluZ0pvYiIsImpvYiIsImkiLCJjb25maWciLCJlcnJvcnMiLCJqb2JOYW1lRXJyb3IiLCJyb290IiwicHVzaCIsInBhdGgiLCJhY2NlcHRlZEV4dGVuc2lvbnMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJkZWZhdWx0RXh0ZW5zaW9uIiwiYnJvd3NlciIsInN0YXRzIiwic3RhdFN5bmMiLCJpc0ZpbGUiLCJ2YWxpZGF0ZUZ1bmN0aW9uSm9iIiwidG9TdHJpbmciLCJsZW5ndGgiLCJ2YWxpZGF0ZUpvYlBhdGgiLCJwcmVmaXgiLCJlcnIiLCJjcm9uVmFsaWRhdGVXaXRoU2Vjb25kcyIsInByZXNldCIsImNyb25WYWxpZGF0ZSIsIm92ZXJyaWRlIiwidXNlU2Vjb25kcyIsInZhbGlkYXRlQ3JvbiIsImhhc1NlY29uZHMiLCJyZXN1bHQiLCJpc1ZhbGlkIiwiZ2V0RXJyb3IiLCJtZXNzYWdlIiwidmFsaWRhdGVKb2JOYW1lIiwicmVzZXJ2ZWROYW1lcyIsInZhbGlkYXRlIiwibmFtZXMiLCJpbnRlcnZhbCIsInRpbWVvdXQiLCJkYXRlIiwiRGF0ZSIsImZvckVhY2giLCJwcm9wIiwiY2xvc2VXb3JrZXJBZnRlck1zIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJjbG9zZVdvcmtlcnNBZnRlck1zIiwidGltZXpvbmUiLCJ0b0xvY2FsZVN0cmluZyIsInRpbWVab25lIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFNQSxF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NEMsa0JBQVgsS0FBa0MsV0FBbEMsS0FDQyxDQUFDQyxNQUFNLENBQUNDLFFBQVAsQ0FBZ0I5QyxHQUFHLENBQUM0QyxrQkFBcEIsQ0FBRCxJQUE0QzVDLEdBQUcsQ0FBQzRDLGtCQUFKLElBQTBCLENBRHZFLENBREYsRUFHRTtBQUNBekMsSUFBQUEsTUFBTSxDQUFDRyxJQUFQLENBQ0UsSUFBSVIsS0FBSixXQUNLdUIsTUFETCwwREFDMkRyQixHQUFHLENBQUMrQyxtQkFEL0QsdUNBREY7QUFLRDs7QUFFRCxNQUFJMUQsTUFBTSxDQUFDVyxHQUFHLENBQUNnRCxRQUFMLENBQU4sSUFBd0IsQ0FBQyxDQUFDLE9BQUQsRUFBVSxRQUFWLEVBQW9CbkQsUUFBcEIsQ0FBNkJHLEdBQUcsQ0FBQ2dELFFBQWpDLENBQTdCLEVBQXlFO0FBQ3ZFLFFBQUk7QUFDRjtBQUNBO0FBQ0EsVUFBSVAsSUFBSixHQUFXUSxjQUFYLENBQTBCLElBQTFCLEVBQWdDO0FBQUVDLFFBQUFBLFFBQVEsRUFBRWxELEdBQUcsQ0FBQ2dEO0FBQWhCLE9BQWhDO0FBQ0QsS0FKRCxDQUlFLGdCQUFNO0FBQ043QyxNQUFBQSxNQUFNLENBQUNHLElBQVAsQ0FDRSxJQUFJUixLQUFKLFdBQ0t1QixNQURMLGdFQUNpRXJCLEdBQUcsQ0FBQ2dELFFBRHJFLEVBREY7QUFLRDtBQUNGOztBQUVELE1BQUk3QyxNQUFNLENBQUNnQixNQUFQLEdBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLFVBQU1oQyxhQUFhLENBQUNnQixNQUFELENBQW5CO0FBQ0Q7QUFDRixDQXBIRDs7QUFzSEFnRCxNQUFNLENBQUNDLE9BQVAsR0FBaUJoQixRQUFqQjtBQUNBZSxNQUFNLENBQUNDLE9BQVAsQ0FBZTdCLHVCQUFmLEdBQXlDQSx1QkFBekMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5jb25zdCB7IGpvaW4gfSA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGNvbWJpbmVFcnJvcnMgPSByZXF1aXJlKCdjb21iaW5lLWVycm9ycycpO1xuY29uc3QgY3JvbiA9IHJlcXVpcmUoJ2Nyb24tdmFsaWRhdGUnKTtcbmNvbnN0IGlzU0FOQiA9IHJlcXVpcmUoJ2lzLXN0cmluZy1hbmQtbm90LWJsYW5rJyk7XG5jb25zdCBpc1ZhbGlkUGF0aCA9IHJlcXVpcmUoJ2lzLXZhbGlkLXBhdGgnKTtcbmNvbnN0IHRocmVhZHMgPSByZXF1aXJlKCdidGhyZWFkcycpO1xuXG5jb25zdCB7IGdldE5hbWUsIGlzU2NoZWR1bGUsIHBhcnNlVmFsdWUgfSA9IHJlcXVpcmUoJy4vam9iLXV0aWxzJyk7XG5cbmNvbnN0IHZhbGlkYXRlUmVzZXJ2ZWRKb2JOYW1lID0gKG5hbWUpID0+IHtcbiAgLy8gRG9uJ3QgYWxsb3cgYSBqb2IgdG8gaGF2ZSB0aGUgYGluZGV4YCBmaWxlIG5hbWVcbiAgaWYgKFsnaW5kZXgnLCAnaW5kZXguanMnLCAnaW5kZXgubWpzJ10uaW5jbHVkZXMobmFtZSkpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgJ1lvdSBjYW5ub3QgdXNlIHRoZSByZXNlcnZlZCBqb2IgbmFtZSBvZiBcImluZGV4XCIsIFwiaW5kZXguanNcIiwgbm9yIFwiaW5kZXgubWpzXCInXG4gICAgKTtcbiAgfVxufTtcblxuY29uc3QgdmFsaWRhdGVTdHJpbmdKb2IgPSAoam9iLCBpLCBjb25maWcpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gW107XG5cbiAgY29uc3Qgam9iTmFtZUVycm9yID0gdmFsaWRhdGVSZXNlcnZlZEpvYk5hbWUoam9iKTtcbiAgaWYgKGpvYk5hbWVFcnJvcikge1xuICAgIHRocm93IGpvYk5hbWVFcnJvcjtcbiAgfVxuXG4gIGlmICghY29uZmlnLnJvb3QpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYEpvYiAjJHtcbiAgICAgICAgICBpICsgMVxuICAgICAgICB9IFwiJHtqb2J9XCIgcmVxdWlyZXMgcm9vdCBkaXJlY3Rvcnkgb3B0aW9uIHRvIGF1dG8tcG9wdWxhdGUgcGF0aGBcbiAgICAgIClcbiAgICApO1xuICAgIHRocm93IGNvbWJpbmVFcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBqb2luKFxuICAgIGNvbmZpZy5yb290LFxuICAgIGNvbmZpZy5hY2NlcHRlZEV4dGVuc2lvbnMuc29tZSgoZXh0KSA9PiBqb2IuZW5kc1dpdGgoZXh0KSlcbiAgICAgID8gam9iXG4gICAgICA6IGAke2pvYn0uJHtjb25maWcuZGVmYXVsdEV4dGVuc2lvbn1gXG4gICk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCF0aHJlYWRzLmJyb3dzZXIpIHtcbiAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKHBhdGgpO1xuICAgIGlmICghc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSm9iICMke2kgKyAxfSBcIiR7am9ifVwiIHBhdGggbWlzc2luZzogJHtwYXRofWApO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgdmFsaWRhdGVGdW5jdGlvbkpvYiA9IChqb2IsIGkpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gW107XG5cbiAgY29uc3QgcGF0aCA9IGAoJHtqb2IudG9TdHJpbmcoKX0pKClgO1xuICAvLyBDYW4ndCBiZSBhIGJ1aWx0LWluIG9yIGJvdW5kIGZ1bmN0aW9uXG4gIGlmIChwYXRoLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihgSm9iICMke2kgKyAxfSBjYW4ndCBiZSBhIGJvdW5kIG9yIGJ1aWx0LWluIGZ1bmN0aW9uYClcbiAgICApO1xuICB9XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgY29tYmluZUVycm9ycyhlcnJvcnMpO1xuICB9XG59O1xuXG5jb25zdCB2YWxpZGF0ZUpvYlBhdGggPSAoam9iLCBwcmVmaXgsIGNvbmZpZykgPT4ge1xuICBjb25zdCBlcnJvcnMgPSBbXTtcblxuICBpZiAodHlwZW9mIGpvYi5wYXRoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcGF0aCA9IGAoJHtqb2IucGF0aC50b1N0cmluZygpfSkoKWA7XG5cbiAgICAvLyBDYW4ndCBiZSBhIGJ1aWx0LWluIG9yIGJvdW5kIGZ1bmN0aW9uXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGAke3ByZWZpeH0gY2FuJ3QgYmUgYSBib3VuZCBvciBidWlsdC1pbiBmdW5jdGlvbmApKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzU0FOQihqb2IucGF0aCkgJiYgIWNvbmZpZy5yb290KSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGAke3ByZWZpeH0gcmVxdWlyZXMgcm9vdCBkaXJlY3Rvcnkgb3B0aW9uIHRvIGF1dG8tcG9wdWxhdGUgcGF0aGBcbiAgICAgIClcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIFZhbGlkYXRlIHBhdGhcbiAgICBjb25zdCBwYXRoID0gaXNTQU5CKGpvYi5wYXRoKVxuICAgICAgPyBqb2IucGF0aFxuICAgICAgOiBqb2luKFxuICAgICAgICAgIGNvbmZpZy5yb290LFxuICAgICAgICAgIGNvbmZpZy5hY2NlcHRlZEV4dGVuc2lvbnMuc29tZSgoZXh0KSA9PiBqb2IubmFtZS5lbmRzV2l0aChleHQpKVxuICAgICAgICAgICAgPyBqb2IubmFtZVxuICAgICAgICAgICAgOiBgJHtqb2IubmFtZX0uJHtjb25maWcuZGVmYXVsdEV4dGVuc2lvbn1gXG4gICAgICAgICk7XG4gICAgaWYgKGlzVmFsaWRQYXRoKHBhdGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoIXRocmVhZHMuYnJvd3Nlcikge1xuICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMocGF0aCk7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICAgIGlmICghc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcmVmaXh9IHBhdGggbWlzc2luZzogJHtwYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG5cbmNvbnN0IGNyb25WYWxpZGF0ZVdpdGhTZWNvbmRzID0gKGpvYiwgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHByZXNldCA9XG4gICAgam9iLmNyb25WYWxpZGF0ZSAmJiBqb2IuY3JvblZhbGlkYXRlLnByZXNldFxuICAgICAgPyBqb2IuY3JvblZhbGlkYXRlLnByZXNldFxuICAgICAgOiBjb25maWcuY3JvblZhbGlkYXRlICYmIGNvbmZpZy5jcm9uVmFsaWRhdGUucHJlc2V0XG4gICAgICA/IGNvbmZpZy5jcm9uVmFsaWRhdGUucHJlc2V0XG4gICAgICA6ICdkZWZhdWx0JztcbiAgY29uc3Qgb3ZlcnJpZGUgPSB7XG4gICAgLi4uKGNvbmZpZy5jcm9uVmFsaWRhdGUgJiYgY29uZmlnLmNyb25WYWxpZGF0ZS5vdmVycmlkZVxuICAgICAgPyBjb25maWcuY3JvblZhbGlkYXRlLm92ZXJyaWRlXG4gICAgICA6IHt9KSxcbiAgICAuLi4oam9iLmNyb25WYWxpZGF0ZSAmJiBqb2IuY3JvblZhbGlkYXRlLm92ZXJyaWRlXG4gICAgICA/IGpvYi5jcm9uVmFsaWRhdGUub3ZlcnJpZGVcbiAgICAgIDoge30pLFxuICAgIHVzZVNlY29uZHM6IHRydWVcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZy5jcm9uVmFsaWRhdGUsXG4gICAgLi4uam9iLmNyb25WYWxpZGF0ZSxcbiAgICBwcmVzZXQsXG4gICAgb3ZlcnJpZGVcbiAgfTtcbn07XG5cbmNvbnN0IHZhbGlkYXRlQ3JvbiA9IChqb2IsIHByZWZpeCwgY29uZmlnKSA9PiB7XG4gIGNvbnN0IGVycm9ycyA9IFtdO1xuXG4gIGlmICghaXNTY2hlZHVsZShqb2IuY3JvbikpIHtcbiAgICAvLyBJZiBgaGFzU2Vjb25kc2Agd2FzIGB0cnVlYCB0aGVuIHNldCBgY3JvblZhbGlkYXRlYCBhbmQgaW5oZXJpdCBhbnkgZXhpc3Rpbmcgb3B0aW9uc1xuICAgIGNvbnN0IGNyb25WYWxpZGF0ZSA9IGpvYi5oYXNTZWNvbmRzXG4gICAgICA/IGNyb25WYWxpZGF0ZVdpdGhTZWNvbmRzKGpvYiwgY29uZmlnKVxuICAgICAgOiBjb25maWcuY3JvblZhbGlkYXRlO1xuXG4gICAgLy9cbiAgICAvLyB2YWxpZGF0ZSBjcm9uIHBhdHRlcm5cbiAgICAvLyAobXVzdCBzdXBwb3J0IHBhdHRlcm5zIHN1Y2ggYXMgYCogKiBMICogKmAgYW5kIGAwIDAvNSAxNCAqICogP2AgKGFuZCBhbGlhc2VzIHRvbylcbiAgICAvL1xuICAgIC8vICA8aHR0cHM6Ly9naXRodWIuY29tL0FpcmZvb294L2Nyb24tdmFsaWRhdGUvaXNzdWVzLzY3PlxuICAgIC8vXG4gICAgY29uc3QgcmVzdWx0ID0gY3Jvbihqb2IuY3JvbiwgY3JvblZhbGlkYXRlKTtcblxuICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkge1xuICAgICAgLy8gTk9URTogaXQgaXMgYWx3YXlzIHZhbGlkXG4gICAgICAvLyBjb25zdCBzY2hlZHVsZSA9IGxhdGVyLnNjaGVkdWxlKFxuICAgICAgLy8gICBsYXRlci5wYXJzZS5jcm9uKFxuICAgICAgLy8gICAgIGpvYi5jcm9uLFxuICAgICAgLy8gICAgIGJvb2xlYW4oXG4gICAgICAvLyAgICAgICB0eXBlb2Ygam9iLmhhc1NlY29uZHMgPT09ICd1bmRlZmluZWQnXG4gICAgICAvLyAgICAgICAgID8gY29uZmlnLmhhc1NlY29uZHNcbiAgICAgIC8vICAgICAgICAgOiBqb2IuaGFzU2Vjb25kc1xuICAgICAgLy8gICAgIClcbiAgICAgIC8vICAgKVxuICAgICAgLy8gKTtcbiAgICAgIC8vIGlmIChzY2hlZHVsZS5pc1ZhbGlkKCkpIHtcbiAgICAgIC8vICAgam9iLmludGVydmFsID0gc2NoZWR1bGU7XG4gICAgICAvLyB9IC8vIGVsc2Uge1xuICAgICAgLy8gICBlcnJvcnMucHVzaChcbiAgICAgIC8vICAgICBuZXcgRXJyb3IoXG4gICAgICAvLyAgICAgICBgJHtwcmVmaXh9IGhhZCBhbiBpbnZhbGlkIGNyb24gc2NoZWR1bGUgKHNlZSA8aHR0cHM6Ly9jcm9udGFiLmd1cnU+IGlmIHlvdSBuZWVkIGhlbHApYFxuICAgICAgLy8gICAgIClcbiAgICAgIC8vICAgKTtcbiAgICAgIC8vIH1cblxuICAgICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIHJlc3VsdC5nZXRFcnJvcigpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgIG5ldyBFcnJvcihgJHtwcmVmaXh9IGhhZCBhbiBpbnZhbGlkIGNyb24gcGF0dGVybjogJHttZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG5cbmNvbnN0IHZhbGlkYXRlSm9iTmFtZSA9IChqb2IsIGksIHJlc2VydmVkTmFtZXMpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gW107XG4gIGNvbnN0IG5hbWUgPSBnZXROYW1lKGpvYik7XG5cbiAgaWYgKCFuYW1lKSB7XG4gICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBKb2IgIyR7aSArIDF9IGlzIG1pc3NpbmcgYSBuYW1lYCkpO1xuICB9XG5cbiAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgZHVwbGljYXRlIGpvYiBuYW1lc1xuICBpZiAocmVzZXJ2ZWROYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgbmV3IEVycm9yKGBKb2IgIyR7aSArIDF9IGhhcyBhIGR1cGxpY2F0ZSBqb2IgbmFtZSBvZiAke2dldE5hbWUoam9iKX1gKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmNvbnN0IHZhbGlkYXRlID0gKGpvYiwgaSwgbmFtZXMsIGNvbmZpZykgPT4ge1xuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZUpvYk5hbWUoam9iLCBpLCBuYW1lcyk7XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgY29tYmluZUVycm9ycyhlcnJvcnMpO1xuICB9XG5cbiAgLy8gU3VwcG9ydCBhIHNpbXBsZSBzdHJpbmcgd2hpY2ggd2Ugd2lsbCB0cmFuc2Zvcm0gdG8gaGF2ZSBhIHBhdGhcbiAgaWYgKGlzU0FOQihqb2IpKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlU3RyaW5nSm9iKGpvYiwgaSwgY29uZmlnKTtcbiAgfVxuXG4gIC8vIEpvYiBpcyBhIGZ1bmN0aW9uXG4gIGlmICh0eXBlb2Ygam9iID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRnVuY3Rpb25Kb2Ioam9iLCBpKTtcbiAgfVxuXG4gIC8vIFVzZSBhIHByZWZpeCBmb3IgZXJyb3JzXG4gIGNvbnN0IHByZWZpeCA9IGBKb2IgIyR7aSArIDF9IG5hbWVkIFwiJHtqb2IubmFtZX1cImA7XG5cbiAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVKb2JQYXRoKGpvYiwgcHJlZml4LCBjb25maWcpKTtcblxuICAvLyBEb24ndCBhbGxvdyB1c2VycyB0byBtaXggaW50ZXJ2YWwgQU5EIGNyb25cbiAgaWYgKHR5cGVvZiBqb2IuaW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqb2IuY3JvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihgJHtwcmVmaXh9IGNhbm5vdCBoYXZlIGJvdGggaW50ZXJ2YWwgYW5kIGNyb24gY29uZmlndXJhdGlvbmApXG4gICAgKTtcbiAgfVxuXG4gIC8vIERvbid0IGFsbG93IHVzZXJzIHRvIG1peCB0aW1lb3V0IEFORCBkYXRlXG4gIGlmICh0eXBlb2Ygam9iLnRpbWVvdXQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqb2IuZGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYCR7cHJlZml4fSBjYW5ub3QgaGF2ZSBib3RoIHRpbWVvdXQgYW5kIGRhdGVgKSk7XG4gIH1cblxuICBjb25zdCBqb2JOYW1lRXJyb3IgPSB2YWxpZGF0ZVJlc2VydmVkSm9iTmFtZShqb2IubmFtZSk7XG4gIGlmIChqb2JOYW1lRXJyb3IpIHtcbiAgICBlcnJvcnMucHVzaChqb2JOYW1lRXJyb3IpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgZGF0ZVxuICBpZiAodHlwZW9mIGpvYi5kYXRlICE9PSAndW5kZWZpbmVkJyAmJiAhKGpvYi5kYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYCR7cHJlZml4fSBoYWQgYW4gaW52YWxpZCBEYXRlIG9mICR7am9iLmRhdGV9YCkpO1xuICB9XG5cbiAgWyd0aW1lb3V0JywgJ2ludGVydmFsJ10uZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygam9iW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VWYWx1ZShqb2JbcHJvcF0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgIGNvbWJpbmVFcnJvcnMoW1xuICAgICAgICAgICAgbmV3IEVycm9yKGAke3ByZWZpeH0gaGFkIGFuIGludmFsaWQgJHtwcm9wfSBvZiAke2pvYi50aW1lb3V0fWApLFxuICAgICAgICAgICAgZXJyXG4gICAgICAgICAgXSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIFZhbGlkYXRlIGhhc1NlY29uZHNcbiAgaWYgKFxuICAgIHR5cGVvZiBqb2IuaGFzU2Vjb25kcyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygam9iLmhhc1NlY29uZHMgIT09ICdib29sZWFuJ1xuICApIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYCR7cHJlZml4fSBoYWQgaGFzU2Vjb25kcyB2YWx1ZSBvZiAke2pvYi5oYXNTZWNvbmRzfSAoaXQgbXVzdCBiZSBhIEJvb2xlYW4pYFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBjcm9uVmFsaWRhdGVcbiAgaWYgKFxuICAgIHR5cGVvZiBqb2IuY3JvblZhbGlkYXRlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBqb2IuY3JvblZhbGlkYXRlICE9PSAnb2JqZWN0J1xuICApIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYCR7cHJlZml4fSBoYWQgY3JvblZhbGlkYXRlIHZhbHVlIHNldCwgYnV0IGl0IG11c3QgYmUgYW4gT2JqZWN0YFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIGpvYi5jcm9uICE9PSAndW5kZWZpbmVkJykge1xuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlQ3Jvbihqb2IsIHByZWZpeCwgY29uZmlnKSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBjbG9zZVdvcmtlckFmdGVyTXNcbiAgaWYgKFxuICAgIHR5cGVvZiBqb2IuY2xvc2VXb3JrZXJBZnRlck1zICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICghTnVtYmVyLmlzRmluaXRlKGpvYi5jbG9zZVdvcmtlckFmdGVyTXMpIHx8IGpvYi5jbG9zZVdvcmtlckFmdGVyTXMgPD0gMClcbiAgKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGAke3ByZWZpeH0gaGFkIGFuIGludmFsaWQgY2xvc2VXb3JrZXJzQWZ0ZXJNcyB2YWx1ZSBvZiAke2pvYi5jbG9zZVdvcmtlcnNBZnRlck1zfSAoaXQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIgPiAwKWBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgaWYgKGlzU0FOQihqb2IudGltZXpvbmUpICYmICFbJ2xvY2FsJywgJ3N5c3RlbSddLmluY2x1ZGVzKGpvYi50aW1lem9uZSkpIHtcbiAgICB0cnkge1xuICAgICAgLy8gYC50b0xvY2FsZVN0cmluZygpYCB3aWxsIHRocm93IGEgYFJhbmdlRXJyb3JgIGlmIGB0aW1lWm9uZWAgc3RyaW5nXG4gICAgICAvLyBpcyBib2d1cyBvciBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudC5cbiAgICAgIG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoJ2lhJywgeyB0aW1lWm9uZTogam9iLnRpbWV6b25lIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtwcmVmaXh9IGhhZCBhbiBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHRpbWV6b25lIHNwZWNpZmllZDogJHtqb2IudGltZXpvbmV9YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IGNvbWJpbmVFcnJvcnMoZXJyb3JzKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZTtcbm1vZHVsZS5leHBvcnRzLmNyb25WYWxpZGF0ZVdpdGhTZWNvbmRzID0gY3JvblZhbGlkYXRlV2l0aFNlY29uZHM7XG4iXX0=
{
"name": "bree",
"description": "The best job scheduler for Node.js and JavaScript with cron, dates, ms, later, and human-friendly support. Works in Node v10+ and browsers (thanks to bthreads polyfill), uses workers to spawn sandboxed processes, and supports async/await, retries, throttling, concurrency, and cancelable promises (graceful shutdown). Simple, fast, and lightweight. Made for Forward Email and Lad.",
"version": "6.4.0",
"version": "6.5.0",
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com/)",

@@ -6,0 +6,0 @@ "ava": {

@@ -185,3 +185,6 @@ <h1 align="center">

name: 'worker-4',
cron: '15 10 ? * *'
cron: '15 10 ? * *',
cronValidate: {
useBlankDay: true
}
},

@@ -232,3 +235,6 @@

name: 'worker-11',
cron: '0 0 L * *'
cron: '0 0 L * *',
cronValidate: {
useLastDayOfMonth: true
}
},

@@ -519,17 +525,18 @@

| Property | Type | Default Value | Description | |
| ---------------------- | -------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| `logger` | Object | `console` | This is the default logger. **We recommend using [Cabin][cabin]** instead of using `console` as your default logger. | |
| `root` | String | `path.resolve('jobs')` | Set this value to `false` to prevent requiring a root directory of jobs (e.g. if your jobs are not all in one directory). | |
| `timeout` | Number | `0` | Default timeout for jobs (e.g. a value of `0` means that jobs will start on boot by default unless a job has a property of `timeout` or `interval` defined. Set this to `false` if you do not wish for a default value to be set for jobs. **This value does not apply to jobs with a property of `date`.** | |
| `interval` | Number | `0` | Default interval for jobs (e.g. a value of `0` means that there is no interval, and a value greater than zero indicates a default interval will be set with this value). **This value does not apply to jobs with a property of `cron`**. | |
| `jobs` | Array | `[]` | Defaults to an empty Array, but if the `root` directory has a `index.js` file, then it will be used. This allows you to keep your jobs and job definition index in the same place. See [Job Options](#job-options) below, and [Usage and Examples](#usage-and-examples) above for more insight. | |
| `hasSeconds` | Boolean | `false` | This value is passed to `later` for parsing jobs, and can be overridden on a per job basis. See [later cron parsing](https://breejs.github.io/later/parsers.html#cron) documentation for more insight. Note that setting this to `true` will automatically set `cronValidate` defaults to have `{ preset: 'default', override: { useSeconds: true } }` | |
| `cronValidate` | Object | `{}` | This value is passed to `cron-validate` for validation of cron expressions. See the [cron-validate](https://github.com/Airfooox/cron-validate) documentation for more insight. | |
| `closeWorkerAfterMs` | Number | `0` | If you set a value greater than `0` here, then it will terminate workers after this specified time (in milliseconds). **As of v6.0.0, workers now terminate after they have been signaled as "online" (as opposed to previous versions which did not take this into account and started the timer when jobs were initially "run").** By default there is no termination done, and jobs can run for infinite periods of time. | |
| `defaultExtension` | String | `js` | This value can either be `js` or `mjs`. The default is `js`, and is the default extension added to jobs that are simply defined with a name and without a path. For example, if you define a job `test`, then it will look for `/path/to/root/test.js` as the file used for workers. | |
| `worker` | Object | `{}` | These are default options to pass when creating a `new Worker` instance. See the [Worker class](https://nodejs.org/api/worker_threads.html#worker_threads_new_worker_filename_options) documentation for more insight. | |
| `outputWorkerMetadata` | Boolean | `false` | By default worker metadata is not passed to the second Object argument of `logger`. However if you set this to `true`, then `logger` will be invoked internally with two arguments (e.g. `logger.info('...', { worker: ... })`). This `worker` property contains `isMainThread` (Boolean), `resourceLimits` (Object), and `threadId` (String) properties; all of which correspond to [Workers][] metadata. This can be overridden on a per job basis. | |
| `errorHandler` | Function | `null` | Set this function to receive a callback when an error is encountered during worker execution (e.g. throws an exception) or when it exits with non-zero code (e.g. `process.exit(1)`). The callback receives two parameters `error` and `workerMetadata`. Important note, when this callback is present default error logging will not be executed. | |
| `workerMessageHandler` | Function | `null` | Set this function to receive a callback when a worker sends a message through [parentPort.postMessage](https://nodejs.org/docs/latest-v14.x/api/worker_threads.html#worker_threads_port_postmessage_value_transferlist). The callback receives at least two parameters `name` (of the worker) and `message` (coming from `postMessage`), if `outputWorkerMetadata` is enabled additional metadata will be sent to this handler. | |
| Property | Type | Default Value | Description |
| ---------------------- | -------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `logger` | Object | `console` | This is the default logger. **We recommend using [Cabin][cabin]** instead of using `console` as your default logger. |
| `root` | String | `path.resolve('jobs')` | Set this value to `false` to prevent requiring a root directory of jobs (e.g. if your jobs are not all in one directory). |
| `timeout` | Number | `0` | Default timeout for jobs (e.g. a value of `0` means that jobs will start on boot by default unless a job has a property of `timeout` or `interval` defined. Set this to `false` if you do not wish for a default value to be set for jobs. **This value does not apply to jobs with a property of `date`.** |
| `interval` | Number | `0` | Default interval for jobs (e.g. a value of `0` means that there is no interval, and a value greater than zero indicates a default interval will be set with this value). **This value does not apply to jobs with a property of `cron`**. |
| `jobs` | Array | `[]` | Defaults to an empty Array, but if the `root` directory has a `index.js` file, then it will be used. This allows you to keep your jobs and job definition index in the same place. See [Job Options](#job-options) below, and [Usage and Examples](#usage-and-examples) above for more insight. |
| `hasSeconds` | Boolean | `false` | This value is passed to `later` for parsing jobs, and can be overridden on a per job basis. See [later cron parsing](https://breejs.github.io/later/parsers.html#cron) documentation for more insight. Note that setting this to `true` will automatically set `cronValidate` defaults to have `{ preset: 'default', override: { useSeconds: true } }` |
| `cronValidate` | Object | `{}` | This value is passed to `cron-validate` for validation of cron expressions. See the [cron-validate](https://github.com/Airfooox/cron-validate) documentation for more insight. |
| `closeWorkerAfterMs` | Number | `0` | If you set a value greater than `0` here, then it will terminate workers after this specified time (in milliseconds). **As of v6.0.0, workers now terminate after they have been signaled as "online" (as opposed to previous versions which did not take this into account and started the timer when jobs were initially "run").** By default there is no termination done, and jobs can run for infinite periods of time. |
| `defaultExtension` | String | `js` | This value can either be `js` or `mjs`. The default is `js`, and is the default extension added to jobs that are simply defined with a name and without a path. For example, if you define a job `test`, then it will look for `/path/to/root/test.js` as the file used for workers. |
| `acceptedExtensions` | Array | `['.js', '.mjs']` | This defines all of the accepted extensions for file validation and job creation. Please note if you add to this list you must override the `createWorker` function to properly handle the new file types. |
| `worker` | Object | `{}` | These are default options to pass when creating a `new Worker` instance. See the [Worker class](https://nodejs.org/api/worker_threads.html#worker_threads_new_worker_filename_options) documentation for more insight. |
| `outputWorkerMetadata` | Boolean | `false` | By default worker metadata is not passed to the second Object argument of `logger`. However if you set this to `true`, then `logger` will be invoked internally with two arguments (e.g. `logger.info('...', { worker: ... })`). This `worker` property contains `isMainThread` (Boolean), `resourceLimits` (Object), and `threadId` (String) properties; all of which correspond to [Workers][] metadata. This can be overridden on a per job basis. |
| `errorHandler` | Function | `null` | Set this function to receive a callback when an error is encountered during worker execution (e.g. throws an exception) or when it exits with non-zero code (e.g. `process.exit(1)`). The callback receives two parameters `error` and `workerMetadata`. Important note, when this callback is present default error logging will not be executed. |
| `workerMessageHandler` | Function | `null` | Set this function to receive a callback when a worker sends a message through [parentPort.postMessage](https://nodejs.org/docs/latest-v14.x/api/worker_threads.html#worker_threads_port_postmessage_value_transferlist). The callback receives at least two parameters `name` (of the worker) and `message` (coming from `postMessage`), if `outputWorkerMetadata` is enabled additional metadata will be sent to this handler. |

@@ -536,0 +543,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc