@iobroker/adapter-react-v5 4.6.5 → 4.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/IconSelector.js +3 -4
- package/Components/IconSelector.js.map +1 -1
- package/Components/MDUtils.js +4 -4
- package/Components/MDUtils.js.map +1 -1
- package/Components/ObjectBrowser.js +2 -2
- package/Components/ObjectBrowser.js.map +1 -1
- package/Components/Schedule.js +27 -27
- package/Components/Schedule.js.map +1 -1
- package/Components/SimpleCron/cron2text.js +51 -51
- package/Components/SimpleCron/cron2text.js.map +1 -1
- package/Components/SimpleCron/index.js +190 -187
- package/Components/SimpleCron/index.js.map +1 -1
- package/Components/SimpleCron/jquery.cron.locale.js +10 -10
- package/Components/SimpleCron/jquery.cron.locale.js.map +1 -1
- package/GenericApp.d.ts +4 -4
- package/GenericApp.js +17 -17
- package/GenericApp.js.map +1 -1
- package/LegacyConnection.js +31 -33
- package/LegacyConnection.js.map +1 -1
- package/README.md +6 -0
- package/icons/IconLogout.js.map +1 -1
- package/icons/IconNoIcon.js.map +1 -1
- package/package.json +8 -8
|
@@ -148,8 +148,8 @@ function cronToText(cronspec, withSeconds, locale) {
|
|
|
148
148
|
* @param {Number} value
|
|
149
149
|
*/
|
|
150
150
|
function addWeekday(s, curSched, value) {
|
|
151
|
-
var except1 = {}
|
|
152
|
-
|
|
151
|
+
var except1 = {};
|
|
152
|
+
var except2 = {};
|
|
153
153
|
if (value === 1) {
|
|
154
154
|
// cron doesn't pass month boundaries, so if 1st is a
|
|
155
155
|
// weekend then we need to use 2nd or 3rd instead
|
|
@@ -186,16 +186,16 @@ function cronToText(cronspec, withSeconds, locale) {
|
|
|
186
186
|
*/
|
|
187
187
|
function addRange(item, curSched, name, min, max, offset) {
|
|
188
188
|
// parse range/x
|
|
189
|
-
var incSplit = item.split('/')
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
var incSplit = item.split('/');
|
|
190
|
+
var inc = +incSplit[1];
|
|
191
|
+
var range = incSplit[0];
|
|
192
192
|
|
|
193
193
|
// parse x-y or * or 0
|
|
194
194
|
if (range !== '*' && range !== '0') {
|
|
195
195
|
var rangeSplit = range.split('-');
|
|
196
196
|
min = getValue(rangeSplit[0], offset, max);
|
|
197
197
|
|
|
198
|
-
// fix for issue #13, range may be single digit
|
|
198
|
+
// fix for issue #13, range may be a single digit
|
|
199
199
|
max = getValue(rangeSplit[1], offset, max) || max;
|
|
200
200
|
}
|
|
201
201
|
add(curSched, name, min, max, inc);
|
|
@@ -362,9 +362,9 @@ function cronToText(cronspec, withSeconds, locale) {
|
|
|
362
362
|
*/
|
|
363
363
|
function dateList(numbers, type) {
|
|
364
364
|
if (numbers.length < 2) {
|
|
365
|
-
return numberToDateName(
|
|
365
|
+
return numberToDateName("".concat(numbers[0]), type);
|
|
366
366
|
}
|
|
367
|
-
var lastVal =
|
|
367
|
+
var lastVal = "".concat(numbers.pop());
|
|
368
368
|
var outputText = '';
|
|
369
369
|
for (var i = 0, value; value = numbers[i]; i++) {
|
|
370
370
|
if (outputText.length > 0) {
|
|
@@ -388,21 +388,21 @@ function cronToText(cronspec, withSeconds, locale) {
|
|
|
388
388
|
|
|
389
389
|
/**
|
|
390
390
|
* Given a schedule, generate a friendly sentence description.
|
|
391
|
-
* @param {Object}
|
|
392
|
-
* @param {boolean}
|
|
391
|
+
* @param {Object} _schedule
|
|
392
|
+
* @param {boolean} _withSeconds
|
|
393
393
|
* @returns {string}
|
|
394
394
|
*/
|
|
395
|
-
function scheduleToSentence(
|
|
395
|
+
function scheduleToSentence(_schedule, _withSeconds) {
|
|
396
396
|
var outputText = "".concat(locale.Every, " ");
|
|
397
|
-
if (
|
|
397
|
+
if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2 && _withSeconds && _schedule.s && _schedule.s.length <= 2) {
|
|
398
398
|
// If there are only one or two specified values for
|
|
399
399
|
// hour or minute, print them in HH:MM:SS format
|
|
400
400
|
|
|
401
401
|
var hm = [];
|
|
402
|
-
for (var i = 0; i <
|
|
403
|
-
for (var j = 0; j <
|
|
404
|
-
for (var k = 0; k <
|
|
405
|
-
hm.push("".concat(zeroPad(
|
|
402
|
+
for (var i = 0; i < _schedule.h.length; i++) {
|
|
403
|
+
for (var j = 0; j < _schedule.m.length; j++) {
|
|
404
|
+
for (var k = 0; k < _schedule.s.length; k++) {
|
|
405
|
+
hm.push("".concat(zeroPad(_schedule.h[i]), ":").concat(zeroPad(_schedule.m[j]), ":").concat(zeroPad(_schedule.s[k])));
|
|
406
406
|
}
|
|
407
407
|
}
|
|
408
408
|
}
|
|
@@ -412,17 +412,17 @@ function cronToText(cronspec, withSeconds, locale) {
|
|
|
412
412
|
var lastVal = hm.pop();
|
|
413
413
|
outputText = "".concat(locale.At, " ").concat(hm.join(', '), " ").concat(locale.and, " ").concat(lastVal);
|
|
414
414
|
}
|
|
415
|
-
if (!
|
|
415
|
+
if (!_schedule.d && !_schedule.D) {
|
|
416
416
|
outputText += " ".concat(locale['every day'], " ");
|
|
417
417
|
}
|
|
418
|
-
} else if (
|
|
418
|
+
} else if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2) {
|
|
419
419
|
// If there are only one or two specified values for
|
|
420
420
|
// hour or minute, print them in HH:MM format
|
|
421
421
|
|
|
422
422
|
var _hm = [];
|
|
423
|
-
for (var _i = 0; _i <
|
|
424
|
-
for (var _j = 0; _j <
|
|
425
|
-
_hm.push("".concat(zeroPad(
|
|
423
|
+
for (var _i = 0; _i < _schedule.h.length; _i++) {
|
|
424
|
+
for (var _j = 0; _j < _schedule.m.length; _j++) {
|
|
425
|
+
_hm.push("".concat(zeroPad(_schedule.h[_i]), ":").concat(zeroPad(_schedule.m[_j])));
|
|
426
426
|
}
|
|
427
427
|
}
|
|
428
428
|
if (_hm.length < 2) {
|
|
@@ -431,79 +431,79 @@ function cronToText(cronspec, withSeconds, locale) {
|
|
|
431
431
|
var _lastVal = _hm.pop();
|
|
432
432
|
outputText = "".concat(locale.At, " ").concat(_hm.join(', '), " ").concat(locale.and, " ").concat(_lastVal);
|
|
433
433
|
}
|
|
434
|
-
if (!
|
|
434
|
+
if (!_schedule.d && !_schedule.D) {
|
|
435
435
|
outputText += " ".concat(locale['every day'], " ");
|
|
436
436
|
}
|
|
437
437
|
} else {
|
|
438
438
|
// Otherwise, list out every specified hour/minute value.
|
|
439
439
|
|
|
440
|
-
if (
|
|
440
|
+
if (_schedule.h) {
|
|
441
441
|
// runs only at specific hours
|
|
442
|
-
if (
|
|
442
|
+
if (_schedule.m) {
|
|
443
443
|
// and only at specific minutes
|
|
444
|
-
if (
|
|
445
|
-
if (!
|
|
446
|
-
outputText += "".concat(locale['second of every'], " ").concat(numberList(
|
|
444
|
+
if (_withSeconds) {
|
|
445
|
+
if (!_schedule.s || _schedule.s.length === 60) {
|
|
446
|
+
outputText += "".concat(locale['second of every'], " ").concat(numberList(_schedule.m), " ").concat(locale['minute past the'], " ").concat(numberList(_schedule.h), " ").concat(locale.hour);
|
|
447
447
|
} else {
|
|
448
|
-
outputText += "".concat(numberList(
|
|
448
|
+
outputText += "".concat(numberList(_schedule.s), " ").concat(locale['second of every'], " ").concat(numberList(_schedule.m), " ").concat(locale['minute past the'], " ").concat(numberList(_schedule.h), " ").concat(locale.hour);
|
|
449
449
|
}
|
|
450
450
|
} else {
|
|
451
|
-
outputText += "".concat(numberList(
|
|
451
|
+
outputText += "".concat(numberList(_schedule.m), " ").concat(locale['minute past the'], " ").concat(numberList(_schedule.h), " ").concat(locale.hour);
|
|
452
452
|
}
|
|
453
453
|
} else {
|
|
454
454
|
// specific hours, but every minute
|
|
455
|
-
if (
|
|
456
|
-
if (!
|
|
457
|
-
outputText += "".concat(locale['second of every'], " ").concat(locale['minute of'], " ").concat(numberList(
|
|
455
|
+
if (_withSeconds) {
|
|
456
|
+
if (!_schedule.s || _schedule.s.length === 60) {
|
|
457
|
+
outputText += "".concat(locale['second of every'], " ").concat(locale['minute of'], " ").concat(numberList(_schedule.h), " ").concat(locale.hour);
|
|
458
458
|
} else {
|
|
459
|
-
outputText += "".concat(numberList(
|
|
459
|
+
outputText += "".concat(numberList(_schedule.s), " ").concat(locale['second of every'], " ").concat(locale['minute of'], " ").concat(numberList(_schedule.h), " ").concat(locale.hour);
|
|
460
460
|
}
|
|
461
461
|
} else {
|
|
462
|
-
outputText += "".concat(locale['minute of'], " ").concat(numberList(
|
|
462
|
+
outputText += "".concat(locale['minute of'], " ").concat(numberList(_schedule.h), " ").concat(locale.hour);
|
|
463
463
|
}
|
|
464
464
|
}
|
|
465
|
-
} else if (
|
|
465
|
+
} else if (_schedule.m) {
|
|
466
466
|
// every hour, but specific minutes
|
|
467
|
-
if (
|
|
468
|
-
if (!
|
|
469
|
-
outputText += "".concat(locale['second of every'], " ").concat(numberList(
|
|
467
|
+
if (_withSeconds) {
|
|
468
|
+
if (!_schedule.s || _schedule.s.length === 60) {
|
|
469
|
+
outputText += "".concat(locale['second of every'], " ").concat(numberList(_schedule.m), " ").concat(locale['minute every hour']);
|
|
470
470
|
} else {
|
|
471
|
-
outputText += "".concat(numberList(
|
|
471
|
+
outputText += "".concat(numberList(_schedule.s), " ").concat(locale['second of every'], " ").concat(numberList(_schedule.m), " ").concat(locale['minute every hour']);
|
|
472
472
|
}
|
|
473
473
|
} else {
|
|
474
|
-
outputText += "".concat(numberList(
|
|
474
|
+
outputText += "".concat(numberList(_schedule.m), " ").concat(locale['minute every hour']);
|
|
475
475
|
}
|
|
476
|
-
} else if (
|
|
477
|
-
if (!
|
|
476
|
+
} else if (_withSeconds) {
|
|
477
|
+
if (!_schedule.s || _schedule.s.length === 60) {
|
|
478
478
|
outputText += locale.second;
|
|
479
479
|
} else {
|
|
480
|
-
outputText += "".concat(numberList(
|
|
480
|
+
outputText += "".concat(numberList(_schedule.s), " ").concat(locale.second);
|
|
481
481
|
}
|
|
482
482
|
} else {
|
|
483
483
|
// cronspec has "*" for both hour and minute
|
|
484
484
|
outputText += locale.minute;
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
|
-
if (
|
|
487
|
+
if (_schedule.D) {
|
|
488
488
|
// runs only on specific day(s) of month
|
|
489
|
-
outputText += (locale['on the'] ? " ".concat(locale['on the'], " ") : ' ') + numberList(
|
|
490
|
-
if (!
|
|
489
|
+
outputText += (locale['on the'] ? " ".concat(locale['on the'], " ") : ' ') + numberList(_schedule.D);
|
|
490
|
+
if (!_schedule.M) {
|
|
491
491
|
outputText += " ".concat(locale['of every month']);
|
|
492
492
|
}
|
|
493
493
|
}
|
|
494
|
-
if (
|
|
494
|
+
if (_schedule.d) {
|
|
495
495
|
// runs only on specific day(s) of week
|
|
496
|
-
if (
|
|
496
|
+
if (_schedule.D) {
|
|
497
497
|
// if both day fields are specified, cron uses both; superuser.com/a/348372
|
|
498
498
|
outputText += " ".concat(locale['and every'], " ");
|
|
499
499
|
} else {
|
|
500
500
|
outputText += " ".concat(locale.on, " ");
|
|
501
501
|
}
|
|
502
|
-
outputText += dateList(
|
|
502
|
+
outputText += dateList(_schedule.d, 'dow');
|
|
503
503
|
}
|
|
504
|
-
if (
|
|
504
|
+
if (_schedule.M) {
|
|
505
505
|
// runs only in specific months; put this output last
|
|
506
|
-
outputText += " ".concat(locale["in"], " ").concat(dateList(
|
|
506
|
+
outputText += " ".concat(locale["in"], " ").concat(dateList(_schedule.M, 'mon'));
|
|
507
507
|
}
|
|
508
508
|
return outputText;
|
|
509
509
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron2text.js","names":["cronToText","cronspec","withSeconds","locale","NAMES","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","SUN","MON","TUE","WED","THU","FRI","SAT","REPLACEMENTS","FIELDS","s","m","h","D","M","Y","d","getValue","value","offset","arguments","length","undefined","max","Number","isNaN","Math","min","cloneSchedule","sched","clone","field","slice","add","name","inc","i","indexOf","push","sort","a","b","addHash","schedules","curSched","hash","dc","addWeekday","except1","except2","exceptions","addRange","item","incSplit","split","range","rangeSplit","parse","toString","replace","isHash","itemSorter","parseExpr","expr","schedule","components","f","component","items","prepareExpr","prepared","toUpperCase","parseCron","hasSeconds","e","concat","absFloor","number","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","ordinal","output","ORDINALS","th","st","nd","rd","numberList","numbers","lastVal","pop","join","and","numberToDateName","type","DOW","MONTH","dateList","outputText","zeroPad","x","scheduleToSentence","Every","hm","j","k","At","hour","second","minute","on","_default","exports"],"sources":["SimpleCron/cron2text.js"],"sourcesContent":["/**\n * Given a cronspec, return the human-readable string.\n * @param {string} cronspec\n * @param withSeconds\n * @param {Object=} locale\n */\nfunction cronToText(cronspec, withSeconds, locale) {\n // Constant array to convert valid names to values\n const NAMES = {\n JAN: 1,\n FEB: 2,\n MAR: 3,\n APR: 4,\n MAY: 5,\n JUN: 6,\n JUL: 7,\n AUG: 8,\n SEP: 9,\n OCT: 10,\n NOV: 11,\n DEC: 12,\n SUN: 1,\n MON: 2,\n TUE: 3,\n WED: 4,\n THU: 5,\n FRI: 6,\n SAT: 7,\n };\n\n // Parsable replacements for common expressions\n const REPLACEMENTS = {\n '* * * * * *': '0/1 * * * * *',\n '@YEARLY': '0 0 1 1 *',\n '@ANNUALLY': '0 0 1 1 *',\n '@MONTHLY': '0 0 1 * *',\n '@WEEKLY': '0 0 * * 0',\n '@DAILY': '0 0 * * *',\n '@HOURLY': '0 * * * *',\n };\n\n // Contains the index, min, and max for each of the constraints\n const FIELDS = {\n s: [0, 0, 59], // seconds\n m: [1, 0, 59], // minutes\n h: [2, 0, 23], // hours\n D: [3, 1, 31], // day of month\n M: [4, 1, 12], // month\n Y: [6, 1970, 2099], // year\n d: [5, 1, 7, 1], // day of week\n };\n\n /**\n * Returns the value + offset if value is a number, otherwise it\n * attempts to look up the value in the NAMES table and returns\n * that result instead.\n *\n * @param {Number,String} value: The value that should be parsed\n * @param {Number=} offset: Any offset that must be added to the value\n * @param {Number=} max\n * @returns {Number|null}\n */\n function getValue(value) {\n const offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n const max = arguments.length <= 2 || arguments[2] === undefined ? 9999 : arguments[2];\n\n return Number.isNaN(value) ? NAMES[value] || null : Math.min(+value + offset, max);\n }\n\n /**\n * Returns a deep clone of a schedule skipping any day of week\n * constraints.\n *\n * @param {Object} sched: The schedule that will be cloned\n * @returns {Object}\n */\n function cloneSchedule(sched) {\n const clone = {};\n let field;\n\n for (field in sched) {\n if (field !== 'dc' && field !== 'd') {\n clone[field] = sched[field].slice(0);\n }\n }\n\n return clone;\n }\n\n /**\n * Adds values to the specified constraint in the current schedule.\n *\n * @param {Object} sched: The schedule to add the constraint to\n * @param {String} name: Name of constraint to add\n * @param {Number} min: Minimum value for this constraint\n * @param {Number} max: Maximum value for this constraint\n */\n function add(sched, name, min, max) {\n const inc = arguments.length <= 4 || arguments[4] === undefined ? 0 : arguments[4];\n\n let i = min;\n\n if (!sched[name]) {\n sched[name] = [];\n }\n\n while (i <= max) {\n if (sched[name].indexOf(i) < 0) {\n sched[name].push(i);\n }\n i += inc || 1;\n }\n\n sched[name].sort((a, b) => a - b);\n }\n\n /**\n * Adds a hash item (of the form x#y or xL) to the schedule.\n *\n * @param {Object} schedules: The current schedule array to add to\n * @param {Object} curSched: The current schedule to add to\n * @param {Number} value: The value to add (x of x#y or xL)\n * @param {Number} hash: The hash value to add (y of x#y)\n */\n function addHash(schedules, curSched, value, hash) {\n // if there are any existing day of week constraints that\n // aren't equal to the one we're adding, create a new\n // composite schedule\n if ((curSched.d && !curSched.dc) || (curSched.dc && curSched.dc.indexOf(hash) < 0)) {\n schedules.push(cloneSchedule(curSched));\n curSched = schedules[schedules.length - 1];\n }\n\n add(curSched, 'd', value, value);\n add(curSched, 'dc', hash, hash);\n }\n\n /**\n *\n * @param {Object} s: The existing set of schedules\n * @param {Object} curSched: The current schedule to add to\n * @param {Number} value\n */\n function addWeekday(s, curSched, value) {\n const except1 = {},\n except2 = {};\n if (value === 1) {\n // cron doesn't pass month boundaries, so if 1st is a\n // weekend then we need to use 2nd or 3rd instead\n add(curSched, 'D', 1, 3);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', 2, 2);\n add(except1, 'd', NAMES.TUE, NAMES.FRI);\n add(except2, 'D', 3, 3);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n } else {\n // normally you want the closest day, so if v is a\n // Saturday, use the previous Friday. If it's a\n // sunday, use the following Monday.\n add(curSched, 'D', value - 1, value + 1);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', value - 1, value - 1);\n add(except1, 'd', NAMES.MON, NAMES.THU);\n add(except2, 'D', value + 1, value + 1);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n }\n s.exceptions.push(except1);\n s.exceptions.push(except2);\n }\n\n /**\n * Adds a range item (of the form x-y/z) to the schedule.\n *\n * @param {String} item: The cron expression item to add\n * @param {Object} curSched: The current schedule to add to\n * @param {String} name: The name to use for this constraint\n * @param {Number} min: The min value for the constraint\n * @param {Number} max: The max value for the constraint\n * @param {Number} offset: The offset to apply to the cron value\n */\n function addRange(item, curSched, name, min, max, offset) {\n // parse range/x\n const incSplit = item.split('/'),\n inc = +incSplit[1],\n range = incSplit[0];\n\n // parse x-y or * or 0\n if (range !== '*' && range !== '0') {\n const rangeSplit = range.split('-');\n min = getValue(rangeSplit[0], offset, max);\n\n // fix for issue #13, range may be single digit\n max = getValue(rangeSplit[1], offset, max) || max;\n }\n\n add(curSched, name, min, max, inc);\n }\n\n /**\n * Parses a particular item within a cron expression.\n *\n * @param {String} item: The cron expression item to parse\n * @param {Object} s: The existing set of schedules\n * @param {String} name: The name to use for this constraint\n * @param {Number} min: The min value for the constraint\n * @param {Number} max: The max value for the constraint\n * @param {Number} offset: The offset to apply to the cron value\n */\n function parse(item, s, name, min, max, offset) {\n let value;\n let split;\n const schedules = s.schedules;\n const curSched = schedules[schedules.length - 1];\n\n // L just means min - 1 (this also makes it work for any field)\n if (item === 'L') {\n item = (min - 1).toString(10);\n }\n\n // parse x\n if ((value = getValue(item, offset, max)) !== null) {\n add(curSched, name, value, value);\n } else if ((value = getValue(item.replace('W', ''), offset, max)) !== null) {\n // parse xW\n addWeekday(s, curSched, value);\n } else if ((value = getValue(item.replace('L', ''), offset, max)) !== null) {\n // parse xL\n addHash(schedules, curSched, value, min - 1);\n } else if ((split = item.split('#')).length === 2) {\n // parse x#y\n value = getValue(split[0], offset, max);\n addHash(schedules, curSched, value, getValue(split[1]));\n } else {\n // parse x-y or x-y/z or */z or 0/z\n addRange(item, curSched, name, min, max, offset);\n }\n }\n\n /**\n * Returns true if the item is either of the form x#y or xL.\n *\n * @param {String} item: The expression item to check\n */\n function isHash(item) {\n return item.indexOf('#') > -1 || item.indexOf('L') > 0;\n }\n\n function itemSorter(a, b) {\n return isHash(a) && !isHash(b) ? 1 : a - b;\n }\n\n /**\n * Parses each of the fields in a cron expression. The expression must\n * include the seconds field, the year field is optional.\n *\n * @param {String} expr: The cron expression to parse\n */\n function parseExpr(expr) {\n const schedule = { schedules: [{}], exceptions: [] };\n const components = expr.replace(/(\\s)+/g, ' ').split(' ');\n let field;\n let f;\n let component;\n let items;\n\n for (field in FIELDS) {\n f = FIELDS[field];\n component = components[f[0]];\n if (component && component !== '*' && component !== '?') {\n // need to sort so that any #'s come last, otherwise\n // schedule clones to handle # won't contain all of the\n // other constraints\n items = component.split(',').sort(itemSorter);\n let i;\n const length = items.length;\n for (i = 0; i < length; i++) {\n parse(items[i], schedule, field, f[1], f[2], f[3]);\n }\n }\n }\n\n return schedule;\n }\n\n /**\n * Make cron expression parsable.\n *\n * @param {String} expr: The cron expression to prepare\n */\n function prepareExpr(expr) {\n const prepared = expr.toUpperCase();\n return REPLACEMENTS[prepared] || prepared;\n }\n\n function parseCron(expr, hasSeconds) {\n const e = prepareExpr(expr);\n return parseExpr(hasSeconds ? e : `0 ${e}`);\n }\n\n const schedule = parseCron(cronspec, withSeconds);\n\n function absFloor(number) {\n if (number < 0) {\n return Math.ceil(number);\n }\n return Math.floor(number);\n }\n\n function toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function ordinal(number) {\n const b = number % 10;\n const output = (toInt(number % 100 / 10) === 1) ? locale.ORDINALS.th :\n (b === 1) ? locale.ORDINALS.st :\n (b === 2) ? locale.ORDINALS.nd :\n (b === 3) ? locale.ORDINALS.rd : locale.ORDINALS.th;\n return number + output;\n }\n\n /**\n * For an array of numbers, e.g. a list of hours in a schedule,\n * return a string listing out all of the values (complete with\n * \"and\" plus ordinal text on the last item).\n * @param {Number[]} numbers\n * @returns {string}\n */\n function numberList(numbers) {\n if (numbers.length < 2) {\n return ordinal(numbers);\n }\n\n const lastVal = numbers.pop();\n return `${numbers.join(', ')} ${locale.and} ${ordinal(lastVal)}`;\n }\n\n /**\n * Parse a number into day of week, or a month name;\n * used in dateList below.\n * @param {Number|String} value\n * @param {String} type\n * @returns {String}\n */\n function numberToDateName(value, type) {\n if (type === 'dow') {\n return locale.DOW[value - 1];\n }\n if (type === 'mon') {\n return locale.MONTH[value - 1];\n }\n return value;\n }\n\n /**\n * From an array of numbers corresponding to dates (given in type: either\n * days of the week, or months), return a string listing all the values.\n * @param {Number[]} numbers\n * @param {String} type\n * @returns {String}\n */\n function dateList(numbers, type) {\n if (numbers.length < 2) {\n return numberToDateName('' + numbers[0], type);\n }\n\n const lastVal = '' + numbers.pop();\n let outputText = '';\n\n for (let i = 0, value; (value = numbers[i]); i++) {\n if (outputText.length > 0) {\n outputText += ', ';\n }\n outputText += numberToDateName(value, type);\n }\n return `${outputText} ${locale.and} ${numberToDateName(lastVal, type)}`;\n }\n\n /**\n * Pad to equivalent of sprintf('%02d').\n * @param {Number} x\n * @returns {string}\n */\n function zeroPad(x) {\n return x < 10 ? `0${x}` : x;\n }\n\n //----------------\n\n /**\n * Given a schedule, generate a friendly sentence description.\n * @param {Object} schedule\n * @param {boolean} withSeconds\n * @returns {string}\n */\n function scheduleToSentence(schedule, withSeconds) {\n let outputText = `${locale.Every} `;\n\n if (schedule.h && schedule.m && schedule.h.length <= 2 && schedule.m.length <= 2 && withSeconds && schedule.s && schedule.s.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM:SS format\n\n const hm = [];\n for (let i = 0; i < schedule.h.length; i++) {\n for (let j = 0; j < schedule.m.length; j++) {\n for (let k = 0; k < schedule.s.length; k++) {\n hm.push(`${zeroPad(schedule.h[i])}:${zeroPad(schedule.m[j])}:${zeroPad(schedule.s[k])}`);\n }\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n } else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n if (!schedule.d && !schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n } else\n if (schedule.h && schedule.m && schedule.h.length <= 2 && schedule.m.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM format\n\n const hm = [];\n for (let i = 0; i < schedule.h.length; i++) {\n for (let j = 0; j < schedule.m.length; j++) {\n hm.push(`${zeroPad(schedule.h[i])}:${zeroPad(schedule.m[j])}`);\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n } else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n\n if (!schedule.d && !schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n } else {\n // Otherwise, list out every specified hour/minute value.\n\n if (schedule.h) { // runs only at specific hours\n if (schedule.m) { // and only at specific minutes\n if (withSeconds) {\n if (!schedule.s || schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(schedule.m)} ${locale['minute past the']} ${numberList(schedule.h)} ${locale.hour}`;\n } else {\n outputText += `${numberList(schedule.s)} ${locale['second of every']} ${numberList(schedule.m)} ${locale['minute past the']} ${numberList(schedule.h)} ${locale.hour}`;\n }\n } else {\n outputText += `${numberList(schedule.m)} ${locale['minute past the']} ${numberList(schedule.h)} ${locale.hour}`;\n }\n } else { // specific hours, but every minute\n if (withSeconds) {\n if (!schedule.s || schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${locale['minute of']} ${numberList(schedule.h)} ${locale.hour}`;\n } else {\n outputText += `${numberList(schedule.s)} ${locale['second of every']} ${locale['minute of']} ${numberList(schedule.h)} ${locale.hour}`;\n }\n } else {\n outputText += `${locale['minute of']} ${numberList(schedule.h)} ${locale.hour}`;\n }\n }\n } else if (schedule.m) { // every hour, but specific minutes\n if (withSeconds) {\n if (!schedule.s || schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(schedule.m)} ${locale['minute every hour']}`;\n } else {\n outputText += `${numberList(schedule.s)} ${locale['second of every']} ${numberList(schedule.m)} ${locale['minute every hour']}`;\n }\n } else {\n outputText += `${numberList(schedule.m)} ${locale['minute every hour']}`;\n }\n } else if (withSeconds) {\n if (!schedule.s || schedule.s.length === 60) {\n outputText += locale.second;\n } else {\n outputText += `${numberList(schedule.s)} ${locale.second}`;\n }\n } else { // cronspec has \"*\" for both hour and minute\n outputText += locale.minute;\n }\n }\n\n if (schedule.D) { // runs only on specific day(s) of month\n outputText += (locale['on the'] ? ` ${locale['on the']} ` : ' ') + numberList(schedule.D);\n if (!schedule.M) {\n outputText += ` ${locale['of every month']}`;\n }\n }\n\n if (schedule.d) { // runs only on specific day(s) of week\n if (schedule.D) {\n // if both day fields are specified, cron uses both; superuser.com/a/348372\n outputText += ` ${locale['and every']} `;\n } else {\n outputText += ` ${locale.on} `;\n }\n outputText += dateList(schedule.d, 'dow');\n }\n\n if (schedule.M) {\n // runs only in specific months; put this output last\n outputText += ` ${locale.in} ${dateList(schedule.M, 'mon')}`;\n }\n\n return outputText;\n }\n\n return scheduleToSentence(schedule.schedules[0], withSeconds);\n}\n\nexport default cronToText;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron2text.js","names":["cronToText","cronspec","withSeconds","locale","NAMES","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","SUN","MON","TUE","WED","THU","FRI","SAT","REPLACEMENTS","FIELDS","s","m","h","D","M","Y","d","getValue","value","offset","arguments","length","undefined","max","Number","isNaN","Math","min","cloneSchedule","sched","clone","field","slice","add","name","inc","i","indexOf","push","sort","a","b","addHash","schedules","curSched","hash","dc","addWeekday","except1","except2","exceptions","addRange","item","incSplit","split","range","rangeSplit","parse","toString","replace","isHash","itemSorter","parseExpr","expr","schedule","components","f","component","items","prepareExpr","prepared","toUpperCase","parseCron","hasSeconds","e","concat","absFloor","number","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","ordinal","output","ORDINALS","th","st","nd","rd","numberList","numbers","lastVal","pop","join","and","numberToDateName","type","DOW","MONTH","dateList","outputText","zeroPad","x","scheduleToSentence","_schedule","_withSeconds","Every","hm","j","k","At","hour","second","minute","on","_default","exports"],"sources":["SimpleCron/cron2text.js"],"sourcesContent":["/**\n * Given a cronspec, return the human-readable string.\n * @param {string} cronspec\n * @param withSeconds\n * @param {Object=} locale\n */\nfunction cronToText(cronspec, withSeconds, locale) {\n // Constant array to convert valid names to values\n const NAMES = {\n JAN: 1,\n FEB: 2,\n MAR: 3,\n APR: 4,\n MAY: 5,\n JUN: 6,\n JUL: 7,\n AUG: 8,\n SEP: 9,\n OCT: 10,\n NOV: 11,\n DEC: 12,\n SUN: 1,\n MON: 2,\n TUE: 3,\n WED: 4,\n THU: 5,\n FRI: 6,\n SAT: 7,\n };\n\n // Parsable replacements for common expressions\n const REPLACEMENTS = {\n '* * * * * *': '0/1 * * * * *',\n '@YEARLY': '0 0 1 1 *',\n '@ANNUALLY': '0 0 1 1 *',\n '@MONTHLY': '0 0 1 * *',\n '@WEEKLY': '0 0 * * 0',\n '@DAILY': '0 0 * * *',\n '@HOURLY': '0 * * * *',\n };\n\n // Contains the index, min, and max for each of the constraints\n const FIELDS = {\n s: [0, 0, 59], // seconds\n m: [1, 0, 59], // minutes\n h: [2, 0, 23], // hours\n D: [3, 1, 31], // day of month\n M: [4, 1, 12], // month\n Y: [6, 1970, 2099], // year\n d: [5, 1, 7, 1], // day of week\n };\n\n /**\n * Returns the value + offset if value is a number, otherwise it\n * attempts to look up the value in the NAMES table and returns\n * that result instead.\n *\n * @param {Number,String} value: The value that should be parsed\n * @param {Number=} offset: Any offset that must be added to the value\n * @param {Number=} max\n * @returns {Number|null}\n */\n function getValue(value) {\n const offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n const max = arguments.length <= 2 || arguments[2] === undefined ? 9999 : arguments[2];\n\n return Number.isNaN(value) ? NAMES[value] || null : Math.min(+value + offset, max);\n }\n\n /**\n * Returns a deep clone of a schedule skipping any day of week\n * constraints.\n *\n * @param {Object} sched: The schedule that will be cloned\n * @returns {Object}\n */\n function cloneSchedule(sched) {\n const clone = {};\n let field;\n\n for (field in sched) {\n if (field !== 'dc' && field !== 'd') {\n clone[field] = sched[field].slice(0);\n }\n }\n\n return clone;\n }\n\n /**\n * Adds values to the specified constraint in the current schedule.\n *\n * @param {Object} sched: The schedule to add the constraint to\n * @param {String} name: Name of constraint to add\n * @param {Number} min: Minimum value for this constraint\n * @param {Number} max: Maximum value for this constraint\n */\n function add(sched, name, min, max) {\n const inc = arguments.length <= 4 || arguments[4] === undefined ? 0 : arguments[4];\n\n let i = min;\n\n if (!sched[name]) {\n sched[name] = [];\n }\n\n while (i <= max) {\n if (sched[name].indexOf(i) < 0) {\n sched[name].push(i);\n }\n i += inc || 1;\n }\n\n sched[name].sort((a, b) => a - b);\n }\n\n /**\n * Adds a hash item (of the form x#y or xL) to the schedule.\n *\n * @param {Object} schedules: The current schedule array to add to\n * @param {Object} curSched: The current schedule to add to\n * @param {Number} value: The value to add (x of x#y or xL)\n * @param {Number} hash: The hash value to add (y of x#y)\n */\n function addHash(schedules, curSched, value, hash) {\n // if there are any existing day of week constraints that\n // aren't equal to the one we're adding, create a new\n // composite schedule\n if ((curSched.d && !curSched.dc) || (curSched.dc && curSched.dc.indexOf(hash) < 0)) {\n schedules.push(cloneSchedule(curSched));\n curSched = schedules[schedules.length - 1];\n }\n\n add(curSched, 'd', value, value);\n add(curSched, 'dc', hash, hash);\n }\n\n /**\n *\n * @param {Object} s: The existing set of schedules\n * @param {Object} curSched: The current schedule to add to\n * @param {Number} value\n */\n function addWeekday(s, curSched, value) {\n const except1 = {};\n const except2 = {};\n if (value === 1) {\n // cron doesn't pass month boundaries, so if 1st is a\n // weekend then we need to use 2nd or 3rd instead\n add(curSched, 'D', 1, 3);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', 2, 2);\n add(except1, 'd', NAMES.TUE, NAMES.FRI);\n add(except2, 'D', 3, 3);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n } else {\n // normally you want the closest day, so if v is a\n // Saturday, use the previous Friday. If it's a\n // sunday, use the following Monday.\n add(curSched, 'D', value - 1, value + 1);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', value - 1, value - 1);\n add(except1, 'd', NAMES.MON, NAMES.THU);\n add(except2, 'D', value + 1, value + 1);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n }\n s.exceptions.push(except1);\n s.exceptions.push(except2);\n }\n\n /**\n * Adds a range item (of the form x-y/z) to the schedule.\n *\n * @param {String} item: The cron expression item to add\n * @param {Object} curSched: The current schedule to add to\n * @param {String} name: The name to use for this constraint\n * @param {Number} min: The min value for the constraint\n * @param {Number} max: The max value for the constraint\n * @param {Number} offset: The offset to apply to the cron value\n */\n function addRange(item, curSched, name, min, max, offset) {\n // parse range/x\n const incSplit = item.split('/');\n const inc = +incSplit[1];\n const range = incSplit[0];\n\n // parse x-y or * or 0\n if (range !== '*' && range !== '0') {\n const rangeSplit = range.split('-');\n min = getValue(rangeSplit[0], offset, max);\n\n // fix for issue #13, range may be a single digit\n max = getValue(rangeSplit[1], offset, max) || max;\n }\n\n add(curSched, name, min, max, inc);\n }\n\n /**\n * Parses a particular item within a cron expression.\n *\n * @param {String} item: The cron expression item to parse\n * @param {Object} s: The existing set of schedules\n * @param {String} name: The name to use for this constraint\n * @param {Number} min: The min value for the constraint\n * @param {Number} max: The max value for the constraint\n * @param {Number} offset: The offset to apply to the cron value\n */\n function parse(item, s, name, min, max, offset) {\n let value;\n let split;\n const schedules = s.schedules;\n const curSched = schedules[schedules.length - 1];\n\n // L just means min - 1 (this also makes it work for any field)\n if (item === 'L') {\n item = (min - 1).toString(10);\n }\n\n // parse x\n if ((value = getValue(item, offset, max)) !== null) {\n add(curSched, name, value, value);\n } else if ((value = getValue(item.replace('W', ''), offset, max)) !== null) {\n // parse xW\n addWeekday(s, curSched, value);\n } else if ((value = getValue(item.replace('L', ''), offset, max)) !== null) {\n // parse xL\n addHash(schedules, curSched, value, min - 1);\n } else if ((split = item.split('#')).length === 2) {\n // parse x#y\n value = getValue(split[0], offset, max);\n addHash(schedules, curSched, value, getValue(split[1]));\n } else {\n // parse x-y or x-y/z or */z or 0/z\n addRange(item, curSched, name, min, max, offset);\n }\n }\n\n /**\n * Returns true if the item is either of the form x#y or xL.\n *\n * @param {String} item: The expression item to check\n */\n function isHash(item) {\n return item.indexOf('#') > -1 || item.indexOf('L') > 0;\n }\n\n function itemSorter(a, b) {\n return isHash(a) && !isHash(b) ? 1 : a - b;\n }\n\n /**\n * Parses each of the fields in a cron expression. The expression must\n * include the seconds field, the year field is optional.\n *\n * @param {String} expr: The cron expression to parse\n */\n function parseExpr(expr) {\n const schedule = { schedules: [{}], exceptions: [] };\n const components = expr.replace(/(\\s)+/g, ' ').split(' ');\n let field;\n let f;\n let component;\n let items;\n\n for (field in FIELDS) {\n f = FIELDS[field];\n component = components[f[0]];\n if (component && component !== '*' && component !== '?') {\n // need to sort so that any #'s come last, otherwise\n // schedule clones to handle # won't contain all of the\n // other constraints\n items = component.split(',').sort(itemSorter);\n let i;\n const length = items.length;\n for (i = 0; i < length; i++) {\n parse(items[i], schedule, field, f[1], f[2], f[3]);\n }\n }\n }\n\n return schedule;\n }\n\n /**\n * Make cron expression parsable.\n *\n * @param {String} expr: The cron expression to prepare\n */\n function prepareExpr(expr) {\n const prepared = expr.toUpperCase();\n return REPLACEMENTS[prepared] || prepared;\n }\n\n function parseCron(expr, hasSeconds) {\n const e = prepareExpr(expr);\n return parseExpr(hasSeconds ? e : `0 ${e}`);\n }\n\n const schedule = parseCron(cronspec, withSeconds);\n\n function absFloor(number) {\n if (number < 0) {\n return Math.ceil(number);\n }\n return Math.floor(number);\n }\n\n function toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function ordinal(number) {\n const b = number % 10;\n const output = (toInt(number % 100 / 10) === 1) ? locale.ORDINALS.th :\n (b === 1) ? locale.ORDINALS.st :\n (b === 2) ? locale.ORDINALS.nd :\n (b === 3) ? locale.ORDINALS.rd : locale.ORDINALS.th;\n return number + output;\n }\n\n /**\n * For an array of numbers, e.g. a list of hours in a schedule,\n * return a string listing out all of the values (complete with\n * \"and\" plus ordinal text on the last item).\n * @param {Number[]} numbers\n * @returns {string}\n */\n function numberList(numbers) {\n if (numbers.length < 2) {\n return ordinal(numbers);\n }\n\n const lastVal = numbers.pop();\n return `${numbers.join(', ')} ${locale.and} ${ordinal(lastVal)}`;\n }\n\n /**\n * Parse a number into day of week, or a month name;\n * used in dateList below.\n * @param {Number|String} value\n * @param {String} type\n * @returns {String}\n */\n function numberToDateName(value, type) {\n if (type === 'dow') {\n return locale.DOW[value - 1];\n }\n if (type === 'mon') {\n return locale.MONTH[value - 1];\n }\n return value;\n }\n\n /**\n * From an array of numbers corresponding to dates (given in type: either\n * days of the week, or months), return a string listing all the values.\n * @param {Number[]} numbers\n * @param {String} type\n * @returns {String}\n */\n function dateList(numbers, type) {\n if (numbers.length < 2) {\n return numberToDateName(`${numbers[0]}`, type);\n }\n\n const lastVal = `${numbers.pop()}`;\n let outputText = '';\n\n for (let i = 0, value; (value = numbers[i]); i++) {\n if (outputText.length > 0) {\n outputText += ', ';\n }\n outputText += numberToDateName(value, type);\n }\n return `${outputText} ${locale.and} ${numberToDateName(lastVal, type)}`;\n }\n\n /**\n * Pad to equivalent of sprintf('%02d').\n * @param {Number} x\n * @returns {string}\n */\n function zeroPad(x) {\n return x < 10 ? `0${x}` : x;\n }\n\n //----------------\n\n /**\n * Given a schedule, generate a friendly sentence description.\n * @param {Object} _schedule\n * @param {boolean} _withSeconds\n * @returns {string}\n */\n function scheduleToSentence(_schedule, _withSeconds) {\n let outputText = `${locale.Every} `;\n\n if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2 && _withSeconds && _schedule.s && _schedule.s.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM:SS format\n\n const hm = [];\n for (let i = 0; i < _schedule.h.length; i++) {\n for (let j = 0; j < _schedule.m.length; j++) {\n for (let k = 0; k < _schedule.s.length; k++) {\n hm.push(`${zeroPad(_schedule.h[i])}:${zeroPad(_schedule.m[j])}:${zeroPad(_schedule.s[k])}`);\n }\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n } else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n if (!_schedule.d && !_schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n } else if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM format\n\n const hm = [];\n for (let i = 0; i < _schedule.h.length; i++) {\n for (let j = 0; j < _schedule.m.length; j++) {\n hm.push(`${zeroPad(_schedule.h[i])}:${zeroPad(_schedule.m[j])}`);\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n } else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n\n if (!_schedule.d && !_schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n } else {\n // Otherwise, list out every specified hour/minute value.\n\n if (_schedule.h) { // runs only at specific hours\n if (_schedule.m) { // and only at specific minutes\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else {\n outputText += `${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else { // specific hours, but every minute\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else {\n outputText += `${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n }\n } else if (_schedule.m) { // every hour, but specific minutes\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute every hour']}`;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n } else {\n outputText += `${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n } else if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += locale.second;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale.second}`;\n }\n } else { // cronspec has \"*\" for both hour and minute\n outputText += locale.minute;\n }\n }\n\n if (_schedule.D) { // runs only on specific day(s) of month\n outputText += (locale['on the'] ? ` ${locale['on the']} ` : ' ') + numberList(_schedule.D);\n if (!_schedule.M) {\n outputText += ` ${locale['of every month']}`;\n }\n }\n\n if (_schedule.d) { // runs only on specific day(s) of week\n if (_schedule.D) {\n // if both day fields are specified, cron uses both; superuser.com/a/348372\n outputText += ` ${locale['and every']} `;\n } else {\n outputText += ` ${locale.on} `;\n }\n outputText += dateList(_schedule.d, 'dow');\n }\n\n if (_schedule.M) {\n // runs only in specific months; put this output last\n outputText += ` ${locale.in} ${dateList(_schedule.M, 'mon')}`;\n }\n\n return outputText;\n }\n\n return scheduleToSentence(schedule.schedules[0], withSeconds);\n}\n\nexport default cronToText;\n"],"mappings":"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"}
|