Skip to content

Commit 2d7d38c

Browse files
authored
Merge pull request #375 from underctrl-io/docs
docs: generate api docs
2 parents 8828145 + 388eec8 commit 2d7d38c

28 files changed

+1364
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
title: "BullMQDriver"
3+
isDefaultIndex: false
4+
generated: true
5+
---
6+
7+
import MemberInfo from '@site/src/components/MemberInfo';
8+
import GenerationInfo from '@site/src/components/GenerationInfo';
9+
import MemberDescription from '@site/src/components/MemberDescription';
10+
11+
<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->
12+
13+
14+
## BullMQDriver
15+
16+
<GenerationInfo sourceFile="packages/tasks/src/drivers/bullmq.ts" sourceLine="38" packageName="@commandkit/tasks" />
17+
18+
BullMQ-based task driver for distributed task scheduling.
19+
20+
This driver uses BullMQ to provide robust, distributed task scheduling with Redis
21+
as the backend. It supports both cron expressions and date-based scheduling, with
22+
built-in retry mechanisms and job persistence.
23+
24+
**Requirements**: Requires the `bullmq` package to be installed.
25+
26+
27+
28+
*Example*
29+
30+
```ts
31+
import { BullMQDriver } from '@commandkit/tasks/bullmq';
32+
import { setDriver } from '@commandkit/tasks';
33+
34+
const driver = new BullMQDriver({
35+
host: 'localhost',
36+
port: 6379,
37+
}, 'my-tasks-queue');
38+
39+
setDriver(driver);
40+
```
41+
42+
*Example*
43+
44+
```ts
45+
// With custom Redis connection options
46+
const driver = new BullMQDriver({
47+
host: 'redis.example.com',
48+
port: 6379,
49+
password: 'your-password',
50+
tls: true,
51+
});
52+
```
53+
54+
```ts title="Signature"
55+
class BullMQDriver implements TaskDriver {
56+
public readonly queue: Queue;
57+
public readonly worker: Worker;
58+
constructor(connection: ConnectionOptions, queueName: string = 'commandkit-tasks')
59+
create(task: TaskData) => Promise<string>;
60+
delete(identifier: string) => Promise<void>;
61+
setTaskRunner(runner: TaskRunner) => Promise<void>;
62+
}
63+
```
64+
* Implements: <code><a href='/docs/next/api-reference/tasks/interfaces/task-driver#taskdriver'>TaskDriver</a></code>
65+
66+
67+
68+
<div className="members-wrapper">
69+
70+
### queue
71+
72+
<MemberInfo kind="property" type={`Queue`} />
73+
74+
The BullMQ queue instance for managing tasks
75+
### worker
76+
77+
<MemberInfo kind="property" type={`Worker`} />
78+
79+
The BullMQ worker instance for processing tasks
80+
### constructor
81+
82+
<MemberInfo kind="method" type={`(connection: ConnectionOptions, queueName: string = 'commandkit-tasks') => BullMQDriver`} />
83+
84+
Creates a new BullMQ driver instance.
85+
### create
86+
87+
<MemberInfo kind="method" type={`(task: <a href='/docs/next/api-reference/tasks/interfaces/task-data#taskdata'>TaskData</a>) => Promise&#60;string&#62;`} />
88+
89+
Creates a new scheduled task in BullMQ.
90+
91+
For cron tasks, this creates a repeating job with the specified cron pattern.
92+
For date tasks, this creates a delayed job that executes at the specified time.
93+
### delete
94+
95+
<MemberInfo kind="method" type={`(identifier: string) => Promise&#60;void&#62;`} />
96+
97+
Deletes a scheduled task from BullMQ.
98+
99+
This removes the job and all its children (for repeating jobs) from the queue.
100+
### setTaskRunner
101+
102+
<MemberInfo kind="method" type={`(runner: <a href='/docs/next/api-reference/tasks/types/task-runner#taskrunner'>TaskRunner</a>) => Promise&#60;void&#62;`} />
103+
104+
Sets the task execution runner function.
105+
106+
This function will be called by the BullMQ worker when a job is due for execution.
107+
108+
109+
</div>
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
---
2+
title: "HyperCronDriver"
3+
isDefaultIndex: false
4+
generated: true
5+
---
6+
7+
import MemberInfo from '@site/src/components/MemberInfo';
8+
import GenerationInfo from '@site/src/components/GenerationInfo';
9+
import MemberDescription from '@site/src/components/MemberDescription';
10+
11+
<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->
12+
13+
14+
## HyperCronDriver
15+
16+
<GenerationInfo sourceFile="packages/tasks/src/drivers/hypercron.ts" sourceLine="36" packageName="@commandkit/tasks" />
17+
18+
HyperCron-based task driver for lightweight task scheduling.
19+
20+
This driver uses HyperCron to provide simple, in-memory task scheduling.
21+
It's ideal for single-instance applications or development environments
22+
where you don't need distributed task scheduling.
23+
24+
**Requirements**: Requires the `hypercron` package to be installed.
25+
26+
27+
28+
*Example*
29+
30+
```ts
31+
import { HyperCronDriver } from '@commandkit/tasks/hypercron';
32+
import { setDriver } from '@commandkit/tasks';
33+
34+
const driver = new HyperCronDriver();
35+
setDriver(driver);
36+
```
37+
38+
*Example*
39+
40+
```ts
41+
// With custom cron service
42+
import { cronService } from 'hypercron';
43+
44+
const customService = cronService.create({
45+
// Custom configuration
46+
});
47+
48+
const driver = new HyperCronDriver(customService);
49+
setDriver(driver);
50+
```
51+
52+
```ts title="Signature"
53+
class HyperCronDriver implements TaskDriver {
54+
constructor(service: = cronService)
55+
create(task: TaskData) => Promise<string>;
56+
delete(identifier: string) => Promise<void>;
57+
setTaskRunner(runner: TaskRunner) => Promise<void>;
58+
}
59+
```
60+
* Implements: <code><a href='/docs/next/api-reference/tasks/interfaces/task-driver#taskdriver'>TaskDriver</a></code>
61+
62+
63+
64+
<div className="members-wrapper">
65+
66+
### constructor
67+
68+
<MemberInfo kind="method" type={`(service: = cronService) => HyperCronDriver`} />
69+
70+
Creates a new HyperCron driver instance.
71+
### create
72+
73+
<MemberInfo kind="method" type={`(task: <a href='/docs/next/api-reference/tasks/interfaces/task-data#taskdata'>TaskData</a>) => Promise&#60;string&#62;`} />
74+
75+
Creates a new scheduled task in HyperCron.
76+
77+
This schedules the task using the HyperCron service and starts the service
78+
if it's not already running.
79+
### delete
80+
81+
<MemberInfo kind="method" type={`(identifier: string) => Promise&#60;void&#62;`} />
82+
83+
Deletes a scheduled task from HyperCron.
84+
85+
This cancels the scheduled task and removes it from the cron service.
86+
### setTaskRunner
87+
88+
<MemberInfo kind="method" type={`(runner: <a href='/docs/next/api-reference/tasks/types/task-runner#taskrunner'>TaskRunner</a>) => Promise&#60;void&#62;`} />
89+
90+
Sets the task execution runner function.
91+
92+
This function will be called by the HyperCron service when a task is due for execution.
93+
94+
95+
</div>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
title: "Classes"
3+
isDefaultIndex: true
4+
generated: true
5+
---
6+
7+
import MemberInfo from '@site/src/components/MemberInfo';
8+
import GenerationInfo from '@site/src/components/GenerationInfo';
9+
import MemberDescription from '@site/src/components/MemberDescription';
10+
11+
<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->
12+
13+
14+
import DocCardList from '@theme/DocCardList';
15+
16+
<DocCardList />
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
title: "TaskContext"
3+
isDefaultIndex: false
4+
generated: true
5+
---
6+
7+
import MemberInfo from '@site/src/components/MemberInfo';
8+
import GenerationInfo from '@site/src/components/GenerationInfo';
9+
import MemberDescription from '@site/src/components/MemberDescription';
10+
11+
<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->
12+
13+
14+
## TaskContext
15+
16+
<GenerationInfo sourceFile="packages/tasks/src/context.ts" sourceLine="48" packageName="@commandkit/tasks" />
17+
18+
Execution context provided to task functions.
19+
20+
This class provides access to the task instance, custom data, CommandKit instance,
21+
and a temporary store for sharing data between prepare and execute functions.
22+
23+
24+
25+
*Example*
26+
27+
```ts
28+
import { task } from '@commandkit/tasks';
29+
30+
export const reminderTask = task({
31+
name: 'reminder',
32+
async execute(ctx) {
33+
// Access custom data passed to the task
34+
const { userId, message } = ctx.data;
35+
36+
// Access CommandKit and Discord.js client
37+
const user = await ctx.commandkit.client.users.fetch(userId);
38+
await user.send(`Reminder: ${message}`);
39+
40+
// Use the store to share data between prepare and execute
41+
const processedCount = ctx.store.get('processedCount') || 0;
42+
ctx.store.set('processedCount', processedCount + 1);
43+
},
44+
});
45+
```
46+
47+
```ts title="Signature"
48+
class TaskContext<T extends Record<string, any> = Record<string, any>> {
49+
public readonly store = new Map<string, any>();
50+
constructor(_data: TaskContextData<T>)
51+
task: Task
52+
client: Client
53+
data: T
54+
commandkit: CommandKit
55+
}
56+
```
57+
58+
<div className="members-wrapper">
59+
60+
### store
61+
62+
<MemberInfo kind="property" type={``} />
63+
64+
Temporary key-value store for sharing data between prepare and execute functions.
65+
66+
This store is useful for passing computed values or state between the prepare
67+
and execute phases of task execution.
68+
69+
70+
71+
*Example*
72+
73+
```ts
74+
export const conditionalTask = task({
75+
name: 'conditional-task',
76+
async prepare(ctx) {
77+
const shouldRun = await checkConditions();
78+
ctx.store.set('shouldRun', shouldRun);
79+
return shouldRun;
80+
},
81+
async execute(ctx) {
82+
const shouldRun = ctx.store.get('shouldRun');
83+
if (shouldRun) {
84+
await performAction();
85+
}
86+
},
87+
});
88+
```
89+
### constructor
90+
91+
<MemberInfo kind="method" type={`(_data: <a href='/docs/next/api-reference/tasks/interfaces/task-context-data#taskcontextdata'>TaskContextData</a>&#60;T&#62;) => TaskContext`} />
92+
93+
Creates a new task execution context.
94+
### task
95+
96+
<MemberInfo kind="property" type={`<a href='/docs/next/api-reference/tasks/classes/task#task'>Task</a>`} />
97+
98+
Gets the task instance being executed.
99+
### client
100+
101+
<MemberInfo kind="property" type={`Client`} />
102+
103+
Gets the Discord.js client.
104+
### data
105+
106+
<MemberInfo kind="property" type={`T`} />
107+
108+
Gets the custom data passed to the task execution.
109+
### commandkit
110+
111+
<MemberInfo kind="property" type={`<a href='/docs/next/api-reference/commandkit/classes/command-kit#commandkit'>CommandKit</a>`} />
112+
113+
Gets the CommandKit instance for accessing bot functionality.
114+
115+
This provides access to the Discord.js client, CommandKit store, and other
116+
bot-related functionality.
117+
118+
119+
</div>

0 commit comments

Comments
 (0)