@codenameryuu/adonis-scheduler 1.0.0

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.
@@ -0,0 +1,143 @@
1
+ import { test } from "@japa/runner";
2
+ import { BaseSchedule } from "../src/scheduler.js";
3
+ import { DateTime } from "luxon";
4
+ class TestSchedule extends BaseSchedule {
5
+ type = "test";
6
+ }
7
+ const schedule = () => new TestSchedule();
8
+ test.group("Expression", () => {
9
+ test("every second", ({ assert }) => {
10
+ assert.equal("* * * * * *", schedule().everySecond().getExpression());
11
+ });
12
+ test("every x seconds", ({ assert }) => {
13
+ assert.equal("*/5 * * * * *", schedule().everyFiveSeconds().getExpression());
14
+ assert.equal("*/10 * * * * *", schedule().everyTenSeconds().getExpression());
15
+ assert.equal("*/15 * * * * *", schedule().everyFifteenSeconds().getExpression());
16
+ assert.equal("*/42 * * * * *", schedule().everySeconds(42).getExpression());
17
+ });
18
+ test("every minute", ({ assert }) => {
19
+ assert.equal("0 * * * * *", schedule().getExpression());
20
+ assert.equal("0 * * * * *", schedule().everyMinute().getExpression());
21
+ });
22
+ test("every x minutes", ({ assert }) => {
23
+ assert.equal("0 */2 * * * *", schedule().everyTwoMinutes().getExpression());
24
+ assert.equal("0 */3 * * * *", schedule().everyThreeMinutes().getExpression());
25
+ assert.equal("0 */5 * * * *", schedule().everyFiveMinutes().getExpression());
26
+ assert.equal("0 */10 * * * *", schedule().everyTenMinutes().getExpression());
27
+ assert.equal("0 */15 * * * *", schedule().everyFifteenMinutes().getExpression());
28
+ assert.equal("0 */42 * * * *", schedule().everyMinutes(42).getExpression());
29
+ });
30
+ test("daily", ({ assert }) => {
31
+ assert.equal("0 0 0 * * *", schedule().daily().getExpression());
32
+ });
33
+ test("daily at", ({ assert }) => {
34
+ assert.equal("0 8 13 * * *", schedule().dailyAt("13:08").getExpression());
35
+ });
36
+ test("twice daily", ({ assert }) => {
37
+ assert.equal("0 0 3,15 * * *", schedule().twiceDaily(3, 15).getExpression());
38
+ });
39
+ test("twice daily at", ({ assert }) => {
40
+ assert.equal("0 5 3,15 * * *", schedule().twiceDailyAt(3, 15, 5).getExpression());
41
+ });
42
+ test("weekly", ({ assert }) => {
43
+ assert.equal("0 0 0 * * 0", schedule().weekly().getExpression());
44
+ });
45
+ test("weekly on", ({ assert }) => {
46
+ assert.equal("0 0 8 * * 1", schedule().weeklyOn(1, "8:00").getExpression());
47
+ });
48
+ test("override with hourly", ({ assert }) => {
49
+ assert.equal("0 0 * * * *", schedule().everyFiveMinutes().hourly().getExpression());
50
+ assert.equal("0 37 * * * *", schedule().hourlyAt(37).getExpression());
51
+ assert.equal("0 */10 * * * *", schedule().hourlyAt("*/10").getExpression());
52
+ assert.equal("0 15,30,45 * * * *", schedule().hourlyAt([15, 30, 45]).getExpression());
53
+ });
54
+ test("hourly", ({ assert }) => {
55
+ assert.equal("0 0 1-23/2 * * *", schedule().everyOddHour().getExpression());
56
+ assert.equal("0 0 */2 * * *", schedule().everyTwoHours().getExpression());
57
+ assert.equal("0 0 */3 * * *", schedule().everyThreeHours().getExpression());
58
+ assert.equal("0 0 */4 * * *", schedule().everyFourHours().getExpression());
59
+ assert.equal("0 0 */6 * * *", schedule().everySixHours().getExpression());
60
+ assert.equal("0 37 1-23/2 * * *", schedule().everyOddHour(37).getExpression());
61
+ assert.equal("0 37 */2 * * *", schedule().everyTwoHours(37).getExpression());
62
+ assert.equal("0 37 */3 * * *", schedule().everyThreeHours(37).getExpression());
63
+ assert.equal("0 37 */4 * * *", schedule().everyFourHours(37).getExpression());
64
+ assert.equal("0 37 */6 * * *", schedule().everySixHours(37).getExpression());
65
+ assert.equal("0 */10 1-23/2 * * *", schedule().everyOddHour("*/10").getExpression());
66
+ assert.equal("0 */10 */2 * * *", schedule().everyTwoHours("*/10").getExpression());
67
+ assert.equal("0 */10 */3 * * *", schedule().everyThreeHours("*/10").getExpression());
68
+ assert.equal("0 */10 */4 * * *", schedule().everyFourHours("*/10").getExpression());
69
+ assert.equal("0 */10 */6 * * *", schedule().everySixHours("*/10").getExpression());
70
+ assert.equal("0 15,30,45 1-23/2 * * *", schedule().everyOddHour([15, 30, 45]).getExpression());
71
+ assert.equal("0 15,30,45 */2 * * *", schedule().everyTwoHours([15, 30, 45]).getExpression());
72
+ assert.equal("0 15,30,45 */3 * * *", schedule().everyThreeHours([15, 30, 45]).getExpression());
73
+ assert.equal("0 15,30,45 */4 * * *", schedule().everyFourHours([15, 30, 45]).getExpression());
74
+ assert.equal("0 15,30,45 */6 * * *", schedule().everySixHours([15, 30, 45]).getExpression());
75
+ });
76
+ test("monthly", ({ assert }) => {
77
+ assert.equal("0 0 0 1 * *", schedule().monthly().getExpression());
78
+ });
79
+ test("monthly on", ({ assert }) => {
80
+ assert.equal("0 0 15 4 * *", schedule().monthlyOn(4, "15:00").getExpression());
81
+ });
82
+ test("LastDayOfMonth", ({ assert }) => {
83
+ const lastDayOfMonth = DateTime.now().endOf("month").day;
84
+ assert.equal(`0 0 0 ${lastDayOfMonth} * *`, schedule().lastDayOfMonth().getExpression());
85
+ });
86
+ test("twice monthly", ({ assert }) => {
87
+ assert.equal("0 0 0 1,16 * *", schedule().twiceMonthly(1, 16).getExpression());
88
+ });
89
+ test("twice monthlyAtTime", ({ assert }) => {
90
+ assert.equal("0 30 1 1,16 * *", schedule().twiceMonthly(1, 16, "1:30").getExpression());
91
+ });
92
+ test("monthly on with minutes", ({ assert }) => {
93
+ assert.equal("0 15 15 4 * *", schedule().monthlyOn(4, "15:15").getExpression());
94
+ });
95
+ test("weekdays daily", ({ assert }) => {
96
+ assert.equal("0 0 0 * * 1-5", schedule().weekdays().daily().getExpression());
97
+ });
98
+ test("weekdays hourly", ({ assert }) => {
99
+ assert.equal("0 0 * * * 1-5", schedule().weekdays().hourly().getExpression());
100
+ });
101
+ test("weekdays", ({ assert }) => {
102
+ assert.equal("0 * * * * 1-5", schedule().weekdays().getExpression());
103
+ });
104
+ test("weekends", ({ assert }) => {
105
+ assert.equal("0 * * * * 6,0", schedule().weekends().getExpression());
106
+ });
107
+ test("sundays", ({ assert }) => {
108
+ assert.equal("0 * * * * 0", schedule().sundays().getExpression());
109
+ });
110
+ test("mondays", ({ assert }) => {
111
+ assert.equal("0 * * * * 1", schedule().mondays().getExpression());
112
+ });
113
+ test("tuesdays", ({ assert }) => {
114
+ assert.equal("0 * * * * 2", schedule().tuesdays().getExpression());
115
+ });
116
+ test("wednesdays", ({ assert }) => {
117
+ assert.equal("0 * * * * 3", schedule().wednesdays().getExpression());
118
+ });
119
+ test("thursdays", ({ assert }) => {
120
+ assert.equal("0 * * * * 4", schedule().thursdays().getExpression());
121
+ });
122
+ test("fridays", ({ assert }) => {
123
+ assert.equal("0 * * * * 5", schedule().fridays().getExpression());
124
+ });
125
+ test("saturdays", ({ assert }) => {
126
+ assert.equal("0 * * * * 6", schedule().saturdays().getExpression());
127
+ });
128
+ test("quarterly", ({ assert }) => {
129
+ assert.equal("0 0 0 1 1-12/3 *", schedule().quarterly().getExpression());
130
+ });
131
+ test("yearly", ({ assert }) => {
132
+ assert.equal("0 0 0 1 1 *", schedule().yearly().getExpression());
133
+ });
134
+ test("yearly on", ({ assert }) => {
135
+ assert.equal("0 8 15 5 4 *", schedule().yearlyOn(4, 5, "15:08").getExpression());
136
+ });
137
+ test("yearly on and mondays only", ({ assert }) => {
138
+ assert.equal("0 1 9 * 7 1", schedule().mondays().yearlyOn(7, "*", "09:01").getExpression());
139
+ });
140
+ test("yearly on tuesdays And DayOfMonth 20", ({ assert }) => {
141
+ assert.equal("0 1 9 20 7 2", schedule().tuesdays().yearlyOn(7, 20, "09:01").getExpression());
142
+ });
143
+ });
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@codenameryuu/adonis-scheduler",
3
+ "description": "A task scheduler for AdonisJS",
4
+ "version": "1.0.0",
5
+ "author": "codenameryuu",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/codenameryuu/adonis-scheduler#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/codenameryuu/adonis-scheduler.git"
11
+ },
12
+ "engines": {
13
+ "node": ">=24.0.0"
14
+ },
15
+ "type": "module",
16
+ "files": [
17
+ "build"
18
+ ],
19
+ "exports": {
20
+ ".": "./build/index.js",
21
+ "./services/main": "./build/services/main.js",
22
+ "./scheduler_provider": "./build/providers/scheduler_provider.js",
23
+ "./commands": "./build/commands/main.js"
24
+ },
25
+ "scripts": {
26
+ "build": "npm run clean && npm run build-only && npm run copyfiles",
27
+ "copyfiles": "copyfiles \"stubs/**/*.stub\" build",
28
+ "build-only": "tsc && npm run index:commands",
29
+ "clean": "rimraf build",
30
+ "prepublishOnly": "npm run build",
31
+ "index:commands": "adonis-kit index build/commands",
32
+ "test": "node --enable-source-maps --import=ts-node-maintained/register/esm bin/test.ts"
33
+ },
34
+ "devDependencies": {
35
+ "@adonisjs/core": "^6.2.0",
36
+ "@adonisjs/prettier-config": "^1.2.1",
37
+ "@adonisjs/tsconfig": "^1.2.1",
38
+ "@japa/assert": "^4.0.0",
39
+ "@japa/runner": "^3.1.4",
40
+ "@swc/core": "^1.3.102",
41
+ "@types/async-lock": "^1.4.2",
42
+ "@types/luxon": "^3.4.2",
43
+ "@types/node": "^22.10.1",
44
+ "@types/node-cron": "^3.0.7",
45
+ "copyfiles": "^2.4.1",
46
+ "prettier": "^2.7.1",
47
+ "rimraf": "^3.0.2",
48
+ "ts-node-maintained": "^10.9.4",
49
+ "typescript": "^5.3.3"
50
+ },
51
+ "dependencies": {
52
+ "async-lock": "^1.4.1",
53
+ "chokidar": "^4.0.2",
54
+ "cron-parser": "^5.0.4",
55
+ "luxon": "^3.5.0",
56
+ "node-cron": "^3.0.2",
57
+ "string-width": "^7.2.0"
58
+ },
59
+ "peerDependencies": {
60
+ "@adonisjs/core": "^6.2.0 || ^7.0.0"
61
+ },
62
+ "keywords": [
63
+ "adonis",
64
+ "scheduler"
65
+ ],
66
+ "prettier": "@adonisjs/prettier-config",
67
+ "publishConfig": {
68
+ "tag": "latest",
69
+ "access": "public"
70
+ },
71
+ "main": "build/providers/scheduler_provider.js"
72
+ }