Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cron-parser

Package Overview
Dependencies
Maintainers
1
Versions
96
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cron-parser - npm Package Compare versions

Comparing version 3.3.0 to 3.4.0

24

lib/expression.js

@@ -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 (

2

lib/parser.js

@@ -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 @@

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