1 | # Cronnor
|
2 |
|
3 |
|
4 | l'image à droite. -->
|
5 |
|
6 | <img src="asset/logo.svg" align="right" alt="">
|
7 |
|
8 | [![npm][img-npm]][link-npm]
|
9 | [![build][img-build]][link-build]
|
10 | [![coverage][img-coverage]][link-coverage]
|
11 | [![semver][img-semver]][link-semver]
|
12 |
|
13 | > Bibliothèque JavaScript implémentant un programme _cron_.
|
14 |
|
15 | ## Description
|
16 |
|
17 | **Cronnor** est une bibliothèque moderne fournissant une classe **`Cron`** pour
|
18 | créer des tâches récurrentes. Elle est disponible pour Node.js, Deno et les
|
19 | navigateurs.
|
20 |
|
21 | ```JavaScript
|
22 | import Cron from "cronnor";
|
23 |
|
24 | function task() {
|
25 | // Awesome task to be done every working day at 8am.
|
26 | };
|
27 |
|
28 | const cron = new Cron("0 8 * * mon-fri", task);
|
29 |
|
30 | // It's holiday time!
|
31 | cron.stop();
|
32 | ```
|
33 |
|
34 | ## Installation
|
35 |
|
36 | Cronnor est publiée dans [npm][link-npm] (ses CDN :
|
37 | [esm.sh](https://esm.sh/cronnor),
|
38 | [jsDelivr](https://www.jsdelivr.com/package/npm/cronnor),
|
39 | [UNPKG](https://unpkg.com/browse/cronnor/)) et
|
40 | [Deno](https://deno.land/x/cronnor).
|
41 |
|
42 | ```JavaScript
|
43 | // Node.js et Bun (après `npm install cronnor`) :
|
44 | import Cron from "cronnor";
|
45 |
|
46 | // Navigateurs :
|
47 | import Cron from "https://esm.sh/cronnor@2";
|
48 | import Cron from "https://cdn.jsdelivr.net/npm/cronnor@2";
|
49 | import Cron from "https://unpkg.com/cronnor@2";
|
50 |
|
51 | // Deno :
|
52 | import Cron from "https://deno.land/x/cronnor/mod.js";
|
53 | ```
|
54 |
|
55 | ## API
|
56 |
|
57 | - [Cron](#cron)
|
58 | - [`new Cron(cronex, func, [options])`](#new-croncronex-func-options)
|
59 | - [`Cron.active`](#cronactive)
|
60 | - [`Cron.run()`](#cronrun)
|
61 | - [`Cron.start()`](#cronstart)
|
62 | - [`Cron.stop()`](#cronstop)
|
63 | - [`Cron.test([date])`](#crontestdate)
|
64 | - [`Cron.next([start])`](#cronnextstart)
|
65 | - [CronExp](#cronexp)
|
66 | - [`new CronExp(pattern)`](#new-cronexppattern)
|
67 | - [`CronExp.test([date])`](#cronexptestdate)
|
68 | - [`CronExp.next([start])`](#cronexpnextstart)
|
69 | - [At](#at)
|
70 | - [`new At(date, func, [options])`](#new-atdate-func-options)
|
71 | - [`At.run()`](#atrun)
|
72 | - [`At.abort()`](#atabort)
|
73 |
|
74 | ### Cron
|
75 |
|
76 | ```JavaScript
|
77 | import Cron from "cronnor/cron";
|
78 | // import Cron from "https://esm.sh/cronnor@2/cron";
|
79 | // import { Cron } from "https://deno.land/x/cronnor/mod.js";
|
80 | ```
|
81 |
|
82 | #### `new Cron(cronex, func, [options])`
|
83 |
|
84 | Crée une tâche _cronée_.
|
85 |
|
86 | - Paramètres :
|
87 | - `cronex` (`string` ou `string[]`) : La ou les [expressions
|
88 | _cron_](#expression-cron) indiquant les horaires d'exécution de la tâche.
|
89 | - `func` (`Function`) : La fonction appelée à chaque horaire indiqué dans les
|
90 | expressions _cron_.
|
91 | - `options` (`Object`) : Les options de la tâche _cronée_.
|
92 | - `active` (`boolean`) : `true` (par défaut) pour activer la tâche ; sinon
|
93 | `false`.
|
94 | - `thisArg` (`any`) : Le `this` utilisé pour la fonction (la tâche _cronée_
|
95 | par défaut).
|
96 | - `args` (`any[]`) : Les paramètres passés à la fonction (aucun paramètre
|
97 | par défaut).
|
98 | - Exceptions :
|
99 | - `Error` : Si la syntaxe d'une expression _cron_ est incorrecte.
|
100 | - `RangeError` : Si un intervalle d'une expression _cron_ est invalide (hors
|
101 | limite ou quand la borne supérieure est plus petite que la borne
|
102 | inférieure).
|
103 | - `TypeError` : Si le constructeur est appelé sans le mot clé `new` ou si un
|
104 | des paramètres n'a pas le bon type.
|
105 |
|
106 | #### `Cron.active`
|
107 |
|
108 | Récupère ou définit l'état de la tâche (active ou non) :
|
109 |
|
110 | - `true` si la tâche est active ou pour l'activer.
|
111 | - `false` si elle est inactive ou pour la désactiver.
|
112 |
|
113 | #### `Cron.run()`
|
114 |
|
115 | Exécute manuellement la fonction.
|
116 |
|
117 | #### `Cron.start()`
|
118 |
|
119 | Active la tâche.
|
120 |
|
121 | - Valeur retournée : `true` quand la tâche a été activée ; `false` si elle était
|
122 | déjà active.
|
123 |
|
124 | #### `Cron.stop()`
|
125 |
|
126 | Désactive la tâche.
|
127 |
|
128 | - Valeur retournée : `true` quand la tâche a été désactivée ; `false` si elle
|
129 | était déjà inactive.
|
130 |
|
131 | #### `Cron.test([date])`
|
132 |
|
133 | Teste si une date respecte une des expressions _cron_ de la tâche.
|
134 |
|
135 | - Paramètre :
|
136 | - `date` (`Date`) : La date qui sera testée (ou l'instant présent par défaut).
|
137 | - Valeur retournée : `true` si une des expressions est respectée ; sinon
|
138 | `false`.
|
139 |
|
140 | #### `Cron.next([start])`
|
141 |
|
142 | Calcule la prochaine date respectant une des expressions _cron_ de la tâche.
|
143 |
|
144 | - Paramètre :
|
145 | - `start` (`Date`) : La date de début (ou l'instant présent par défaut).
|
146 | - Valeur retournée : La prochaine date respectant une des expressions.
|
147 |
|
148 | ### CronExp
|
149 |
|
150 | ```JavaScript
|
151 | import CronExp from "cronnor/cronexp";
|
152 | // import CronExp from "https://esm.sh/cronnor@2/cronexp";
|
153 | // import { CronExp } from "https://deno.land/x/cronnor/mod.js";
|
154 | ```
|
155 |
|
156 | #### `new CronExp(pattern)`
|
157 |
|
158 | Crée une expression _cron_.
|
159 |
|
160 | - Paramètre :
|
161 | - `pattern` (`string`) : Le motif de l'expression _cron_
|
162 | - Exceptions :
|
163 | - `Error` : Si la syntaxe du motif est incorrecte.
|
164 | - `RangeError` : Si un intervalle est invalide (hors limite ou quand la borne
|
165 | supérieure est plus petite que la borne inférieure).
|
166 | - `TypeError` : Si le constructeur est appelé sans le mot clé `new` ou si le
|
167 | motif n'est pas une chaine de caractères.
|
168 |
|
169 | #### `CronExp.test([date])`
|
170 |
|
171 | Teste si une date respecte l'expression.
|
172 |
|
173 | - Paramètre :
|
174 | - `date` (`Date`) : La date qui sera testée (ou l'instant présent par défaut).
|
175 | - Valeur retournée : `true` si l'expression est respectée ; sinon `false`.
|
176 |
|
177 | #### `CronExp.next([start])`
|
178 |
|
179 | Calcule la prochaine date respectant l'expression.
|
180 |
|
181 | - Paramètre :
|
182 | - `start` (`Date`) : La date de début (ou l'instant présent par défaut).
|
183 | - Valeur retournée : La prochaine date respectant l'expression.
|
184 |
|
185 | ### At
|
186 |
|
187 | ```JavaScript
|
188 | import At from "cronnor/at";
|
189 | // import At from "https://esm.sh/cronnor@2/at";
|
190 | // import { At } from "https://deno.land/x/cronnor/mod.js";
|
191 | ```
|
192 |
|
193 | #### `new At(date, func, [options])`
|
194 |
|
195 | Crée une tâche planifiée.
|
196 |
|
197 | - Paramètres :
|
198 | - `date` (`Date`) : La date de planification de la tâche.
|
199 | - `func` (`Function`) : La fonction appelée à la date planifiée.
|
200 | - `options` (`Object`) : Les options de la planification de la tâche.
|
201 | - `thisArg` (`any`) : Le `this` utilisé pour la fonction (la tâche planifiée
|
202 | par défaut).
|
203 | - `args` (`any[]`) : Les paramètres passés à la fonction (aucun paramètre
|
204 | par défaut).
|
205 | - Exceptions :
|
206 | - `TypeError` : Si le constructeur est appelé sans le mot clé `new`.
|
207 |
|
208 | #### `At.run()`
|
209 |
|
210 | Exécute manuellement la fonction.
|
211 |
|
212 | #### `At.abort()`
|
213 |
|
214 | Annule la planification.
|
215 |
|
216 | ## Expression _cron_
|
217 |
|
218 | Les expressions _cron_ sont des chaines de caractères composées de cinq ou six
|
219 | éléments séparés par une espace. Les éléments représentent :
|
220 |
|
221 | 1. les secondes (optionnel ; `0` par défaut) : `0` à `59` ;
|
222 | 2. les minutes : `0` à `59` ;
|
223 | 3. les heures : `0` à `23` ;
|
224 | 4. le jour du mois : `1` à `31` ;
|
225 | 5. le mois : `1` ou `jan`, `2` ou `feb`, …, `12` ou `dec` ;
|
226 | 6. le jour de la semaine : `0`, `7` ou `sun`, `1` ou `mon`, …, `6` ou `sat`.
|
227 |
|
228 | Pour chaque élément, des compositions sont possibles :
|
229 |
|
230 | - `*` : couvrir toutes les unités (`0`, `1`, `2`, …) ;
|
231 | - `-` : définir un intervalle (`1-3` corresponds aux unités `1`, `2` et `3`) ;
|
232 | - `/` : indiquer le pas (`2-6/2` corresponds aux unités `2`, `4` et `6`) ;
|
233 | - `,` : créer une liste (`4,8` corresponds aux unités `4` et `8`) ;
|
234 | - `?` : affecter l'unité courante à la création (pour une expression _cron_
|
235 | créée à 13h37, la valeur `13` sera utilisée pour les heures et `37` pour les
|
236 | minutes) ;
|
237 | - `~` : générer un nombre aléatoire.
|
238 |
|
239 | Il existe aussi des chaines spéciales :
|
240 |
|
241 | - `"@yearly"` ou `"@annually"` : tous les ans, le 1er janvier (`"0 0 1 1 *"`) ;
|
242 | - `"@monthly"` : le 1er jour de chaque mois (`"0 0 1 * *"`) ;
|
243 | - `"@weekly"` : une fois par semaine, le dimanche (`"0 0 * * 0"`) ;
|
244 | - `"@daily"` ou `"@midnight"` : tous les jours à minuit (`"0 0 * * *"`) ;
|
245 | - `"@hourly"` : toutes les heures (`"0 * * * *"`).
|
246 |
|
247 | Pour plus d'information, vous pouvez consulter le [manuel de
|
248 | _crontab_](https://man7.org/linux/man-pages/man5/crontab.5.html).
|
249 |
|
250 | [img-npm]: https://img.shields.io/npm/dm/cronnor?label=npm&logo=npm&logoColor=whitesmoke
|
251 | [img-build]: https://img.shields.io/github/actions/workflow/status/regseb/cronnor/ci.yml?branch=main&logo=github&logoColor=whitesmoke
|
252 | [img-coverage]: https://img.shields.io/endpoint?label=coverage&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fregseb%2Fcronnor%2Fmain&logo=stryker&logoColor=whitesmoke
|
253 | [img-semver]: https://img.shields.io/badge/semver-2.0.0-blue?logo=semver&logoColor=whitesmoke
|
254 | [link-npm]: https://www.npmjs.com/package/cronnor
|
255 | [link-build]: https://github.com/regseb/cronnor/actions/workflows/ci.yml?query=branch%3Amain
|
256 | [link-coverage]: https://dashboard.stryker-mutator.io/reports/github.com/regseb/cronnor/main
|
257 | [link-semver]: https://semver.org/spec/v2.0.0.html "Semantic Versioning 2.0.0"
|