feat: add bun-fullstack agent and update skills
This commit is contained in:
265
.agent/skills/tech-stack/elysiajs/plugins/cron.md
Normal file
265
.agent/skills/tech-stack/elysiajs/plugins/cron.md
Normal file
@@ -0,0 +1,265 @@
|
||||
# Cron Plugin
|
||||
|
||||
This plugin adds support for running cronjob to Elysia server.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
bun add @elysiajs/cron
|
||||
```
|
||||
|
||||
## Basic Usage
|
||||
```typescript twoslash
|
||||
import { Elysia } from 'elysia'
|
||||
import { cron } from '@elysiajs/cron'
|
||||
|
||||
new Elysia()
|
||||
.use(
|
||||
cron({
|
||||
name: 'heartbeat',
|
||||
pattern: '*/10 * * * * *',
|
||||
run() {
|
||||
console.log('Heartbeat')
|
||||
}
|
||||
})
|
||||
)
|
||||
.listen(3000)
|
||||
```
|
||||
|
||||
The above code will log `heartbeat` every 10 seconds.
|
||||
|
||||
## Config
|
||||
Below is a config which is accepted by the plugin
|
||||
|
||||
### cron
|
||||
|
||||
Create a cronjob for the Elysia server.
|
||||
|
||||
```
|
||||
cron(config: CronConfig, callback: (Instance['store']) => void): this
|
||||
```
|
||||
|
||||
`CronConfig` accepts the parameters specified below:
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.name
|
||||
|
||||
Job name to register to `store`.
|
||||
|
||||
This will register the cron instance to `store` with a specified name, which can be used to reference in later processes eg. stop the job.
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.pattern
|
||||
|
||||
Time to run the job as specified by cron syntax.
|
||||
|
||||
```
|
||||
┌────────────── second (optional)
|
||||
│ ┌──────────── minute
|
||||
│ │ ┌────────── hour
|
||||
│ │ │ ┌──────── day of the month
|
||||
│ │ │ │ ┌────── month
|
||||
│ │ │ │ │ ┌──── day of week
|
||||
│ │ │ │ │ │
|
||||
* * * * * *
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.timezone
|
||||
Time zone in Europe/Stockholm format
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.startAt
|
||||
Schedule start time for the job
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.stopAt
|
||||
Schedule stop time for the job
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.maxRuns
|
||||
Maximum number of executions
|
||||
|
||||
---
|
||||
|
||||
### CronConfig.catch
|
||||
Continue execution even if an unhandled error is thrown by a triggered function.
|
||||
|
||||
### CronConfig.interval
|
||||
The minimum interval between executions, in seconds.
|
||||
|
||||
---
|
||||
|
||||
## CronConfig.Pattern
|
||||
Below you can find the common patterns to use the plugin.
|
||||
|
||||
---
|
||||
|
||||
## Pattern
|
||||
|
||||
Below you can find the common patterns to use the plugin.
|
||||
|
||||
## Stop cronjob
|
||||
|
||||
You can stop cronjob manually by accessing the cronjob name registered to `store`.
|
||||
|
||||
```typescript
|
||||
import { Elysia } from 'elysia'
|
||||
import { cron } from '@elysiajs/cron'
|
||||
|
||||
const app = new Elysia()
|
||||
.use(
|
||||
cron({
|
||||
name: 'heartbeat',
|
||||
pattern: '*/1 * * * * *',
|
||||
run() {
|
||||
console.log('Heartbeat')
|
||||
}
|
||||
})
|
||||
)
|
||||
.get(
|
||||
'/stop',
|
||||
({
|
||||
store: {
|
||||
cron: { heartbeat }
|
||||
}
|
||||
}) => {
|
||||
heartbeat.stop()
|
||||
|
||||
return 'Stop heartbeat'
|
||||
}
|
||||
)
|
||||
.listen(3000)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Predefined patterns
|
||||
|
||||
You can use predefined patterns from `@elysiajs/cron/schedule`
|
||||
|
||||
```typescript
|
||||
import { Elysia } from 'elysia'
|
||||
import { cron, Patterns } from '@elysiajs/cron'
|
||||
|
||||
const app = new Elysia()
|
||||
.use(
|
||||
cron({
|
||||
name: 'heartbeat',
|
||||
pattern: Patterns.everySecond(),
|
||||
run() {
|
||||
console.log('Heartbeat')
|
||||
}
|
||||
})
|
||||
)
|
||||
.get(
|
||||
'/stop',
|
||||
({
|
||||
store: {
|
||||
cron: { heartbeat }
|
||||
}
|
||||
}) => {
|
||||
heartbeat.stop()
|
||||
|
||||
return 'Stop heartbeat'
|
||||
}
|
||||
)
|
||||
.listen(3000)
|
||||
```
|
||||
|
||||
### Functions
|
||||
|
||||
| Function | Description |
|
||||
| ---------------------------------------- | ----------------------------------------------------- |
|
||||
| `.everySeconds(2)` | Run the task every 2 seconds |
|
||||
| `.everyMinutes(5)` | Run the task every 5 minutes |
|
||||
| `.everyHours(3)` | Run the task every 3 hours |
|
||||
| `.everyHoursAt(3, 15)` | Run the task every 3 hours at 15 minutes |
|
||||
| `.everyDayAt('04:19')` | Run the task every day at 04:19 |
|
||||
| `.everyWeekOn(Patterns.MONDAY, '19:30')` | Run the task every Monday at 19:30 |
|
||||
| `.everyWeekdayAt('17:00')` | Run the task every day from Monday to Friday at 17:00 |
|
||||
| `.everyWeekendAt('11:00')` | Run the task on Saturday and Sunday at 11:00 |
|
||||
|
||||
### Function aliases to constants
|
||||
|
||||
| Function | Constant |
|
||||
| ----------------- | ---------------------------------- |
|
||||
| `.everySecond()` | EVERY_SECOND |
|
||||
| `.everyMinute()` | EVERY_MINUTE |
|
||||
| `.hourly()` | EVERY_HOUR |
|
||||
| `.daily()` | EVERY_DAY_AT_MIDNIGHT |
|
||||
| `.everyWeekday()` | EVERY_WEEKDAY |
|
||||
| `.everyWeekend()` | EVERY_WEEKEND |
|
||||
| `.weekly()` | EVERY_WEEK |
|
||||
| `.monthly()` | EVERY_1ST_DAY_OF_MONTH_AT_MIDNIGHT |
|
||||
| `.everyQuarter()` | EVERY_QUARTER |
|
||||
| `.yearly()` | EVERY_YEAR |
|
||||
|
||||
### Constants
|
||||
|
||||
| Constant | Pattern |
|
||||
| ---------------------------------------- | -------------------- |
|
||||
| `.EVERY_SECOND` | `* * * * * *` |
|
||||
| `.EVERY_5_SECONDS` | `*/5 * * * * *` |
|
||||
| `.EVERY_10_SECONDS` | `*/10 * * * * *` |
|
||||
| `.EVERY_30_SECONDS` | `*/30 * * * * *` |
|
||||
| `.EVERY_MINUTE` | `*/1 * * * *` |
|
||||
| `.EVERY_5_MINUTES` | `0 */5 * * * *` |
|
||||
| `.EVERY_10_MINUTES` | `0 */10 * * * *` |
|
||||
| `.EVERY_30_MINUTES` | `0 */30 * * * *` |
|
||||
| `.EVERY_HOUR` | `0 0-23/1 * * *` |
|
||||
| `.EVERY_2_HOURS` | `0 0-23/2 * * *` |
|
||||
| `.EVERY_3_HOURS` | `0 0-23/3 * * *` |
|
||||
| `.EVERY_4_HOURS` | `0 0-23/4 * * *` |
|
||||
| `.EVERY_5_HOURS` | `0 0-23/5 * * *` |
|
||||
| `.EVERY_6_HOURS` | `0 0-23/6 * * *` |
|
||||
| `.EVERY_7_HOURS` | `0 0-23/7 * * *` |
|
||||
| `.EVERY_8_HOURS` | `0 0-23/8 * * *` |
|
||||
| `.EVERY_9_HOURS` | `0 0-23/9 * * *` |
|
||||
| `.EVERY_10_HOURS` | `0 0-23/10 * * *` |
|
||||
| `.EVERY_11_HOURS` | `0 0-23/11 * * *` |
|
||||
| `.EVERY_12_HOURS` | `0 0-23/12 * * *` |
|
||||
| `.EVERY_DAY_AT_1AM` | `0 01 * * *` |
|
||||
| `.EVERY_DAY_AT_2AM` | `0 02 * * *` |
|
||||
| `.EVERY_DAY_AT_3AM` | `0 03 * * *` |
|
||||
| `.EVERY_DAY_AT_4AM` | `0 04 * * *` |
|
||||
| `.EVERY_DAY_AT_5AM` | `0 05 * * *` |
|
||||
| `.EVERY_DAY_AT_6AM` | `0 06 * * *` |
|
||||
| `.EVERY_DAY_AT_7AM` | `0 07 * * *` |
|
||||
| `.EVERY_DAY_AT_8AM` | `0 08 * * *` |
|
||||
| `.EVERY_DAY_AT_9AM` | `0 09 * * *` |
|
||||
| `.EVERY_DAY_AT_10AM` | `0 10 * * *` |
|
||||
| `.EVERY_DAY_AT_11AM` | `0 11 * * *` |
|
||||
| `.EVERY_DAY_AT_NOON` | `0 12 * * *` |
|
||||
| `.EVERY_DAY_AT_1PM` | `0 13 * * *` |
|
||||
| `.EVERY_DAY_AT_2PM` | `0 14 * * *` |
|
||||
| `.EVERY_DAY_AT_3PM` | `0 15 * * *` |
|
||||
| `.EVERY_DAY_AT_4PM` | `0 16 * * *` |
|
||||
| `.EVERY_DAY_AT_5PM` | `0 17 * * *` |
|
||||
| `.EVERY_DAY_AT_6PM` | `0 18 * * *` |
|
||||
| `.EVERY_DAY_AT_7PM` | `0 19 * * *` |
|
||||
| `.EVERY_DAY_AT_8PM` | `0 20 * * *` |
|
||||
| `.EVERY_DAY_AT_9PM` | `0 21 * * *` |
|
||||
| `.EVERY_DAY_AT_10PM` | `0 22 * * *` |
|
||||
| `.EVERY_DAY_AT_11PM` | `0 23 * * *` |
|
||||
| `.EVERY_DAY_AT_MIDNIGHT` | `0 0 * * *` |
|
||||
| `.EVERY_WEEK` | `0 0 * * 0` |
|
||||
| `.EVERY_WEEKDAY` | `0 0 * * 1-5` |
|
||||
| `.EVERY_WEEKEND` | `0 0 * * 6,0` |
|
||||
| `.EVERY_1ST_DAY_OF_MONTH_AT_MIDNIGHT` | `0 0 1 * *` |
|
||||
| `.EVERY_1ST_DAY_OF_MONTH_AT_NOON` | `0 12 1 * *` |
|
||||
| `.EVERY_2ND_HOUR` | `0 */2 * * *` |
|
||||
| `.EVERY_2ND_HOUR_FROM_1AM_THROUGH_11PM` | `0 1-23/2 * * *` |
|
||||
| `.EVERY_2ND_MONTH` | `0 0 1 */2 *` |
|
||||
| `.EVERY_QUARTER` | `0 0 1 */3 *` |
|
||||
| `.EVERY_6_MONTHS` | `0 0 1 */6 *` |
|
||||
| `.EVERY_YEAR` | `0 0 1 1 *` |
|
||||
| `.EVERY_30_MINUTES_BETWEEN_9AM_AND_5PM` | `0 */30 9-17 * * *` |
|
||||
| `.EVERY_30_MINUTES_BETWEEN_9AM_AND_6PM` | `0 */30 9-18 * * *` |
|
||||
| `.EVERY_30_MINUTES_BETWEEN_10AM_AND_7PM` | `0 */30 10-19 * * *` |
|
||||
Reference in New Issue
Block a user