All Projects → cheap-glitch → mi-cron

cheap-glitch / mi-cron

Licence: ISC License
📆 A microscopic parser for standard cron expressions.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to mi-cron

Crontabmanager
PHP library for GNU/Linux cron jobs management.
Stars: ✭ 113 (+606.25%)
Mutual labels:  cron, crontab, cron-jobs
Chronos
Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules
Stars: ✭ 4,303 (+26793.75%)
Mutual labels:  cron, crontab, cron-jobs
delay-timer
Time-manager of delayed tasks. Like crontab, but synchronous asynchronous tasks are possible scheduling, and dynamic add/cancel/remove is supported.
Stars: ✭ 257 (+1506.25%)
Mutual labels:  cron, crontab
croner
Trigger functions and/or evaluate cron expressions in JavaScript. No dependencies. Most features. All environments.
Stars: ✭ 169 (+956.25%)
Mutual labels:  cron, crontab
asparagus
An easy to use task scheduler for distributed systems
Stars: ✭ 14 (-12.5%)
Mutual labels:  cron, crontab
EasyCronJob
This repository provides easy cron job to your application on IHostedService.
Stars: ✭ 66 (+312.5%)
Mutual labels:  cron, cron-jobs
fastify-cron
Run cron jobs alongside your Fastify server 👷
Stars: ✭ 32 (+100%)
Mutual labels:  cron, cron-jobs
watchman
📆 更夫(watchman)是一款可视化的定时任务配置 Web 工具,麻麻不用担心我漏掉任何更新啦!
Stars: ✭ 40 (+150%)
Mutual labels:  cron, crontab
Crontab
Yii2 extension for crontab support
Stars: ✭ 170 (+962.5%)
Mutual labels:  cron, crontab
croncal
Utility to convert a crontab file to a list of actual events within a date range.
Stars: ✭ 37 (+131.25%)
Mutual labels:  cron, crontab
crontab
cron expression parser and executor for dotnet core.
Stars: ✭ 13 (-18.75%)
Mutual labels:  cron, crontab
cronex
A cron like system built in Elixir, that you can mount in your supervision tree
Stars: ✭ 43 (+168.75%)
Mutual labels:  cron, cron-jobs
Cronsun
A Distributed, Fault-Tolerant Cron-Style Job System.
Stars: ✭ 2,493 (+15481.25%)
Mutual labels:  cron, crontab
Cronv
A visualizer for CRONTAB
Stars: ✭ 196 (+1125%)
Mutual labels:  cron, crontab
mautic-cron-commands
Script to run Mautic commands from a web page.
Stars: ✭ 32 (+100%)
Mutual labels:  cron, cron-jobs
Cron Parser
Java Parser For Cron Expressions
Stars: ✭ 176 (+1000%)
Mutual labels:  cron, crontab
node-cron-expression
Declarative functional cron expression builder
Stars: ✭ 17 (+6.25%)
Mutual labels:  cron, crontab
LexikCronFileGeneratorBundle
This symfony bundle provides service for generate cron file
Stars: ✭ 20 (+25%)
Mutual labels:  cron, crontab
Go Quartz
Simple, zero-dependency scheduling library for Go
Stars: ✭ 118 (+637.5%)
Mutual labels:  cron, crontab
Quantum Core
⌚ Cron-like job scheduler for Elixir
Stars: ✭ 1,905 (+11806.25%)
Mutual labels:  cron, crontab

📆 mi-cron

License Latest release Coverage status

const { parseCron } = require('@cheap-glitch/mi-cron');

console.log(parseCron.nextDate('*/5 6-12 3 3 *').toUTCString());
// Wed, 03 Mar 2021 06:00:00

This is a microscopic (~1KB minified & gzipped) zero-dependencies parser for standard cron expressions. It also supports a few non-standard but convenient features, such as @-shorthands (e.g. @daily) and steps (e.g. */10), and can compute the next scheduled date for a given expression.

Installation

npm i @cheap-glitch/mi-cron

API

parseCron(exp: string): CronSchedule

Parses a standard cron expression. Supports:

  • globs (*)
  • ranges (0-30, mon-fri)
  • steps (*/3, 20-31/2, 10/5)
  • lists (1,15, 0-10,20-30/2)
  • @-shorthands (@weekly)

Does NOT support:

  • L, W, #, ?, H
  • year field
  • @reboot

Returns an object with all possible values for each field (minutes, hours, days, months and days of the week), or undefined if the expression is invalid (wrong syntax, unsupported instruction, impossible range, etc).

const { parseCron } = require('@cheap-glitch/mi-cron');

console.log(parseCron('*/5 6-10 1,15 * wed'));
// {
// 	minutes:  [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55],
// 	hours:    [6, 7, 8, 9, 10],
// 	days:     [1, 15],
// 	months:   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
// 	weekDays: [3],
// }

parseCron.nextDate(exp: string | CronSchedule[, from: Date = new Date.now()]): Date

Takes a cron schedule or expression and returns the next date that matches the schedule, or undefined if the expression is invalid. If given a datetime as the second argument, it will start the computation from this time (otherwise it will use the current datetime at the moment it's called).

const { parseCron } = require('@cheap-glitch/mi-cron');

console.log(parseCron.nextDate('* * * * *', new Date('01 Jan 2020 00:00:00 GMT')).toUTCString());
// Wed, 01 Jan 2020 00:01:00

// Get the next five scheduled dates
const schedule = parseCron('@weekly');
const nextDate = new Date();
for (let i=0; i<5; i++) {
	console.log(nextDate = parseCron.nextDate(schedule, nextDate));
}

Related

License

Copyright (c) 2020-present, cheap glitch

Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby  granted, provided that the above copyright notice
and this permission notice appear in all copies.

THE SOFTWARE  IS PROVIDED "AS IS"  AND THE AUTHOR DISCLAIMS  ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS.  IN NO  EVENT  SHALL THE  AUTHOR  BE LIABLE  FOR  ANY SPECIAL,  DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR  PROFITS, WHETHER IN AN ACTION OF  CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN  CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].