cron-parser
Advanced tools
Comparing version 3.3.0 to 3.4.0
@@ -17,13 +17,2 @@ 'use strict'; | ||
/** | ||
* Detect if input range fully matches constraint bounds | ||
* @param {Array} range Input range | ||
* @param {Array} constraints Input constraints | ||
* @returns {Boolean} | ||
* @private | ||
*/ | ||
function isWildcardRange(range, constraints) { | ||
return range.length === (constraints.max - (constraints.min < 1 ? - 1 : 0)); | ||
} | ||
/** | ||
* Construct a new expression parser | ||
@@ -550,6 +539,4 @@ * | ||
var dayOfWeekMatch = matchSchedule(currentDate.getDay(), this.fields.dayOfWeek); | ||
var isDayOfMonthWildcardMatch = isWildcardRange(this.fields.dayOfMonth, CronExpression.constraints[3]); | ||
var isDayOfWeekWildcardMatch = isWildcardRange(this.fields.dayOfWeek, CronExpression.constraints[5]); | ||
var isDayOfMonthWildcardMatch = this.fields.dayOfMonth.length >= CronExpression.daysInMonth[currentDate.getMonth()]; | ||
var isDayOfWeekWildcardMatch = this.fields.dayOfWeek.length === CronExpression.constraints[5].max - CronExpression.constraints[5].min + 1; | ||
var currentHour = currentDate.getHours(); | ||
@@ -575,9 +562,2 @@ | ||
// Add or subtract day if day of month and week are non-wildcard values and both doesn't match | ||
if (!(isDayOfMonthWildcardMatch && isDayOfWeekWildcardMatch) && | ||
!dayOfMonthMatch && !dayOfWeekMatch) { | ||
this._applyTimezoneShift(currentDate, dateMathVerb, 'Day'); | ||
continue; | ||
} | ||
// Add or subtract day if day of week & nthDayOfWeek are set (and no match) | ||
@@ -584,0 +564,0 @@ if ( |
@@ -75,3 +75,3 @@ 'use strict'; | ||
var matches = null; | ||
var entry = block.replace(/^\s+|\s+$/g, ''); // Remove surrounding spaces | ||
var entry = block.trim(); // Remove surrounding spaces | ||
@@ -78,0 +78,0 @@ if (entry.length > 0) { |
{ | ||
"name": "cron-parser", | ||
"version": "3.3.0", | ||
"version": "3.4.0", | ||
"description": "Node.js library for parsing crontab instructions", | ||
@@ -59,9 +59,9 @@ "main": "lib/parser.js", | ||
"dependencies": { | ||
"is-nan": "^1.3.0", | ||
"luxon": "^1.25.0" | ||
"is-nan": "^1.3.2", | ||
"luxon": "^1.26.0" | ||
}, | ||
"devDependencies": { | ||
"eslint": "^7.17.0", | ||
"sinon": "^9.2.1", | ||
"tap": "^14.10.8", | ||
"eslint": "^7.24.0", | ||
"sinon": "^10.0.0", | ||
"tap": "^15.0.3", | ||
"tsd": "^0.14.0" | ||
@@ -75,2 +75,5 @@ }, | ||
}, | ||
"tap": { | ||
"check-coverage": false | ||
}, | ||
"tsd": { | ||
@@ -77,0 +80,0 @@ "directory": "test", |
@@ -15,4 +15,4 @@ var util = require('util'); | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
}); |
@@ -25,3 +25,3 @@ var util = require('util'); | ||
} catch (err) { | ||
t.ifError(err, 'UTC parse error'); | ||
t.error(err, 'UTC parse error'); | ||
} | ||
@@ -28,0 +28,0 @@ |
@@ -20,3 +20,3 @@ var test = require('tap').test; | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -39,3 +39,3 @@ }); | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -60,3 +60,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -81,3 +81,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -103,3 +103,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -202,3 +202,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -222,3 +222,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -352,3 +352,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -377,3 +377,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -397,3 +397,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -499,3 +499,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -550,3 +550,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Reset error'); | ||
t.error(err, 'Reset error'); | ||
} | ||
@@ -575,3 +575,3 @@ }); | ||
} catch (err) { | ||
t.ifError(err, 'UTC parse error'); | ||
t.error(err, 'UTC parse error'); | ||
} | ||
@@ -601,3 +601,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -640,3 +640,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -666,3 +666,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -690,3 +690,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -717,3 +717,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -794,3 +794,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -824,3 +824,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -859,3 +859,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -878,3 +878,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -915,3 +915,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -922,2 +922,25 @@ | ||
test('day of month is wildcard, month and day of week are both set', function(t) { | ||
try { | ||
var options = { | ||
currentDate: new CronDate('Mon, 31 May 2021 12:00:00') | ||
}; | ||
var interval = CronExpression.parse('0 0 * 6 2', options); | ||
t.ok(interval, 'Interval parsed'); | ||
var expectedDayMatches = [1, 8, 15, 22, 29]; | ||
expectedDayMatches.forEach(function(dayOfMonth) { | ||
var next = interval.next(); | ||
t.ok(next, 'Found next scheduled interval'); | ||
t.equal(next.getDay(), 2, 'Day of week matches'); | ||
t.equal(next.getDate(), dayOfMonth, 'Day of month matches'); | ||
t.equal(next.getMonth(), 5, 'Month matches'); | ||
}); | ||
} catch (err) { | ||
t.error(err, 'Interval parse error'); | ||
} | ||
t.end(); | ||
}); | ||
test('day of month and week are both set and dow is 6,0', function(t) { | ||
@@ -955,3 +978,3 @@ try { | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -995,3 +1018,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1019,3 +1042,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1050,3 +1073,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1102,3 +1125,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1136,3 +1159,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1177,3 +1200,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1276,3 +1299,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1316,3 +1339,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1339,3 +1362,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1362,3 +1385,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1406,3 +1429,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -1409,0 +1432,0 @@ |
@@ -11,3 +11,3 @@ 'use strict'; | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -25,3 +25,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -45,3 +45,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -65,3 +65,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -83,3 +83,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -105,3 +105,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -131,3 +131,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -159,3 +159,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -179,3 +179,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -203,3 +203,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -231,3 +231,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
@@ -258,5 +258,5 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'compact field error'); | ||
t.error(err, 'compact field error'); | ||
} | ||
t.end(); | ||
}); |
@@ -11,3 +11,3 @@ 'use strict'; | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -22,3 +22,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -33,3 +33,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -44,3 +44,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -55,3 +55,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -66,3 +66,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -77,3 +77,3 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
@@ -88,5 +88,5 @@ t.end(); | ||
} catch (err) { | ||
t.ifError(err, 'stringify field error'); | ||
t.error(err, 'stringify field error'); | ||
} | ||
t.end(); | ||
}); |
@@ -19,11 +19,11 @@ var test = require('tap').test; | ||
t.deepEqual(interval.fields.second, [0], 'Second matches'); | ||
t.deepEqual(interval.fields.minute, [1], 'Minute matches'); | ||
t.deepEqual(interval.fields.hour, [2], 'Hour matches'); | ||
t.deepEqual(interval.fields.dayOfMonth, [3], 'Day of month matches'); | ||
t.deepEqual(interval.fields.month, [1,2,3,4,5,6,7,8,9,10,11,12], 'Month matches'); | ||
t.deepEqual(interval.fields.dayOfWeek, [1,2,3,5], 'Day of week matches'); | ||
t.same(interval.fields.second, [0], 'Second matches'); | ||
t.same(interval.fields.minute, [1], 'Minute matches'); | ||
t.same(interval.fields.hour, [2], 'Hour matches'); | ||
t.same(interval.fields.dayOfMonth, [3], 'Day of month matches'); | ||
t.same(interval.fields.month, [1,2,3,4,5,6,7,8,9,10,11,12], 'Month matches'); | ||
t.same(interval.fields.dayOfWeek, [1,2,3,5], 'Day of week matches'); | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -30,0 +30,0 @@ |
@@ -20,4 +20,4 @@ var util = require('util'); | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
}); |
@@ -15,4 +15,4 @@ var util = require('util'); | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
}); |
@@ -21,3 +21,3 @@ var util = require('util'); | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -50,3 +50,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -75,3 +75,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -78,0 +78,0 @@ |
@@ -9,3 +9,3 @@ var util = require('util'); | ||
CronParser.parseFile(__dirname + '/crontab.example', function(err, result) { | ||
t.ifError(err, 'File read error'); | ||
t.error(err, 'File read error'); | ||
t.ok(result, 'Crontab parsed parsed'); | ||
@@ -44,3 +44,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -47,0 +47,0 @@ |
@@ -17,3 +17,3 @@ 'use strict'; | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -35,3 +35,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -53,3 +53,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -71,3 +71,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -89,3 +89,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -107,3 +107,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -125,3 +125,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -143,3 +143,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -161,3 +161,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -179,3 +179,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -197,3 +197,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -215,3 +215,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -236,3 +236,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -257,3 +257,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Parse read error'); | ||
t.error(err, 'Parse read error'); | ||
} | ||
@@ -260,0 +260,0 @@ |
@@ -126,3 +126,3 @@ var test = require('tap').test; | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -377,3 +377,3 @@ | ||
} catch (err) { | ||
t.ifError(err, 'Interval parse error'); | ||
t.error(err, 'Interval parse error'); | ||
} | ||
@@ -380,0 +380,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3962
Updatedis-nan@^1.3.2
Updatedluxon@^1.26.0