hyper-scheduler 1.1.0 → 1.1.2

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.
Files changed (35) hide show
  1. package/README.md +1 -1
  2. package/dist/{devtools-ByJU-Gv1.js → devtools-B029_YOS.js} +99 -67
  3. package/dist/devtools-CRTqUH_8.cjs +1 -0
  4. package/dist/index.cjs +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.umd.cjs +1 -1
  7. package/package.json +2 -2
  8. package/public/logo.svg +54 -0
  9. package/dist/devtools-Bxtz0rO_.cjs +0 -1
  10. package/docs/.vitepress/cache/deps/_metadata.json +0 -31
  11. package/docs/.vitepress/cache/deps/chunk-EKBJ2FPM.js +0 -12798
  12. package/docs/.vitepress/cache/deps/chunk-EKBJ2FPM.js.map +0 -7
  13. package/docs/.vitepress/cache/deps/package.json +0 -3
  14. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4505
  15. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  16. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -9731
  17. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  18. package/docs/.vitepress/cache/deps/vue.js +0 -347
  19. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  20. package/docs/.vitepress/config.ts +0 -56
  21. package/docs/.vitepress/theme/components/DemoFrame.vue +0 -111
  22. package/docs/.vitepress/theme/custom.css +0 -6
  23. package/docs/.vitepress/theme/index.ts +0 -10
  24. package/docs/README.md +0 -120
  25. package/docs/api/devtools.md +0 -245
  26. package/docs/api/index.md +0 -178
  27. package/docs/api/scheduler.md +0 -342
  28. package/docs/api/task.md +0 -439
  29. package/docs/api/types.md +0 -365
  30. package/docs/examples/index.md +0 -342
  31. package/docs/guide/best-practices.md +0 -436
  32. package/docs/guide/core-concepts.md +0 -363
  33. package/docs/guide/getting-started.md +0 -176
  34. package/docs/index.md +0 -33
  35. /package/{docs/public → dist}/logo.svg +0 -0
@@ -1,342 +0,0 @@
1
- # Scheduler
2
-
3
- 核心调度器类,负责任务的注册、调度和生命周期管理。
4
-
5
- ## 概念说明:Scheduler vs Task
6
-
7
- 在 Hyper Scheduler 中,理解这两个核心概念的区别至关重要:
8
-
9
- - **Scheduler (调度器)**:
10
- - **角色**:管理者、指挥官。
11
- - **职责**:维护任务列表、管理时间轴、触发执行、处理全局配置(如时区、插件)。
12
- - **数量**:通常一个应用只需一个全局 Scheduler 实例。
13
-
14
- - **Task (任务)**:
15
- - **角色**:执行单元、工兵。
16
- - **职责**:包含具体的业务逻辑(`handler`)、调度规则(`schedule`)和运行配置(如 `driver`、重试策略)。
17
- - **数量**:一个 Scheduler 可以管理成百上千个 Task。
18
-
19
- 简而言之,**Scheduler** 决定了“**什么时候**”以及“**如何**”运行,而 **Task** 定义了“**做什么**”。
20
-
21
- ## 构造函数
22
-
23
- ```typescript
24
- new Scheduler(config?: SchedulerConfig)
25
- ```
26
-
27
- ### 参数
28
-
29
- - **config** `SchedulerConfig` - 可选配置对象
30
-
31
- | 属性 | 类型 | 默认值 | 说明 |
32
- |------|------|--------|------|
33
- | `debug` | `boolean` | `false` | 启用调试日志输出 |
34
- | `timezone` | `string` | 系统时区 | 全局时区设置,如 `'Asia/Shanghai'` |
35
- | `maxHistory` | `number` | `50` | 每个任务保留的最大执行历史记录数 |
36
- | `plugins` | `HyperSchedulerPlugin[]` | `[]` | 要在初始化时加载的插件实例数组 |
37
-
38
- ### 示例
39
-
40
- ```typescript
41
- import { Scheduler, DevTools } from 'hyper-scheduler';
42
-
43
- const scheduler = new Scheduler({
44
- debug: true,
45
- timezone: 'Asia/Shanghai',
46
- maxHistory: 100,
47
- plugins: [
48
- new DevTools({ theme: 'dark' })
49
- ]
50
- });
51
- ```
52
-
53
- ## 实例方法
54
-
55
- ### createTask()
56
-
57
- 注册新任务到调度器。
58
-
59
- ```typescript
60
- createTask(definition: TaskDefinition): void
61
- ```
62
-
63
- #### 参数
64
-
65
- - **definition** `TaskDefinition` - 任务定义对象
66
-
67
- | 属性 | 类型 | 必填 | 说明 |
68
- |------|------|------|------|
69
- | `id` | `string` | ✓ | 任务唯一标识符 |
70
- | `schedule` | `string` | ✓ | 调度规则(Cron 表达式或时间间隔) |
71
- | `handler` | `() => void \| Promise<void>` | ✓ | 任务执行函数 |
72
- | `tags` | `string[]` | - | 任务标签,用于分类过滤 |
73
- | `options` | `TaskOptions` | - | 任务选项 |
74
-
75
- 详细的 `TaskOptions` 配置请参考 [Task API](./task.md)。
76
-
77
- #### 示例
78
-
79
- ```typescript
80
- // 基础任务
81
- scheduler.createTask({
82
- id: 'daily-backup',
83
- schedule: '0 0 2 * * *', // 每天凌晨 2:00
84
- handler: async () => {
85
- await backupDatabase();
86
- },
87
- tags: ['backup', 'critical']
88
- });
89
-
90
- // 带重试和错误处理的任务
91
- scheduler.createTask({
92
- id: 'api-sync',
93
- schedule: '5m',
94
- handler: async () => {
95
- await syncWithAPI();
96
- },
97
- options: {
98
- retry: {
99
- maxAttempts: 3,
100
- initialDelay: 1000,
101
- factor: 2
102
- },
103
- onError: (error, taskId) => {
104
- console.error(`Task ${taskId} failed:`, error.message);
105
- }
106
- }
107
- });
108
- ```
109
-
110
- ### start()
111
-
112
- 启动调度器,开始执行所有已注册的任务。
113
-
114
- ```typescript
115
- start(scope?: string): void
116
- ```
117
-
118
- #### 参数
119
-
120
- - **scope** `string` - 可选。指定要启动的任务的命名空间。如果省略,则启动所有任务。
121
-
122
- #### 示例
123
-
124
- ```typescript
125
- // 启动所有任务
126
- scheduler.start();
127
-
128
- // 仅启动 'system' 命名空间下的任务
129
- scheduler.start('system');
130
- ```
131
-
132
- ### stop()
133
-
134
- 停止调度器,暂停所有任务的调度。已经在执行的任务会继续完成。
135
-
136
- ```typescript
137
- stop(scope?: string): void
138
- ```
139
-
140
- #### 参数
141
-
142
- - **scope** `string` - 可选。指定要停止的任务的命名空间。如果省略,则停止所有任务。
143
-
144
- #### 示例
145
-
146
- ```typescript
147
- // 停止所有任务
148
- scheduler.stop();
149
-
150
- // 仅停止 'system' 命名空间下的任务
151
- scheduler.stop('system');
152
- ```
153
-
154
- ### startTask()
155
-
156
- 启动指定任务(从 stopped 状态恢复)。
157
-
158
- ```typescript
159
- startTask(taskId: string): void
160
- ```
161
-
162
- #### 参数
163
-
164
- - **taskId** `string` - 任务 ID
165
-
166
- #### 示例
167
-
168
- ```typescript
169
- scheduler.startTask('daily-backup');
170
- ```
171
-
172
- ### stopTask()
173
-
174
- 停止指定任务,任务状态变为 `stopped`,不再参与调度。
175
-
176
- ```typescript
177
- stopTask(taskId: string): void
178
- ```
179
-
180
- #### 参数
181
-
182
- - **taskId** `string` - 任务 ID
183
-
184
- #### 示例
185
-
186
- ```typescript
187
- scheduler.stopTask('daily-backup');
188
- ```
189
-
190
- ### triggerTask()
191
-
192
- 手动触发任务立即执行一次,不影响正常调度。执行完成后恢复到之前的状态。
193
-
194
- ```typescript
195
- triggerTask(taskId: string): Promise<void>
196
- ```
197
-
198
- #### 参数
199
-
200
- - **taskId** `string` - 任务 ID
201
-
202
- #### 返回值
203
-
204
- - `Promise<void>` - 任务执行完成后 resolve
205
-
206
- #### 示例
207
-
208
- ```typescript
209
- await scheduler.triggerTask('daily-backup');
210
- console.log('Manual trigger completed');
211
- ```
212
-
213
- ### deleteTask()
214
-
215
- 删除指定任务,任务将从调度器中移除。
216
-
217
- ```typescript
218
- deleteTask(taskId: string): boolean
219
- ```
220
-
221
- #### 参数
222
-
223
- - **taskId** `string` - 任务 ID
224
-
225
- #### 返回值
226
-
227
- - `boolean` - 删除成功返回 `true`,任务不存在返回 `false`
228
-
229
- #### 示例
230
-
231
- ```typescript
232
- const deleted = scheduler.deleteTask('old-task');
233
- if (deleted) {
234
- console.log('Task removed successfully');
235
- }
236
- ```
237
-
238
- ### getTask()
239
-
240
- 获取指定任务的详细信息。
241
-
242
- ```typescript
243
- getTask(taskId: string): Task | undefined
244
- ```
245
-
246
- #### 参数
247
-
248
- - **taskId** `string` - 任务 ID
249
-
250
- #### 返回值
251
-
252
- - `Task | undefined` - 任务对象,不存在则返回 `undefined`
253
-
254
- #### 示例
255
-
256
- ```typescript
257
- const task = scheduler.getTask('daily-backup');
258
- if (task) {
259
- console.log('Task status:', task.status);
260
- console.log('Next run:', new Date(task.nextRun));
261
- }
262
- ```
263
-
264
- ### getAllTasks()
265
-
266
- 获取所有已注册任务的列表。
267
-
268
- ```typescript
269
- getAllTasks(namespace?: string): Task[]
270
- ```
271
-
272
- #### 参数
273
-
274
- - **namespace** `string` - 可选。指定要获取的任务的命名空间。如果省略,则返回所有任务。
275
-
276
- #### 返回值
277
-
278
- - `Task[]` - 任务对象数组
279
-
280
- #### 示例
281
-
282
- ```typescript
283
- // 获取所有任务
284
- const allTasks = scheduler.getAllTasks();
285
-
286
- // 获取 'system' 命名空间下的任务
287
- const systemTasks = scheduler.getAllTasks('system');
288
- console.log(`System tasks: ${systemTasks.length}`);
289
- ```
290
-
291
- ### on()
292
-
293
- 订阅调度器事件。
294
-
295
- ```typescript
296
- on(event: string, handler: (payload: any) => void): () => void
297
- ```
298
-
299
- #### 参数
300
-
301
- - **event** `string` - 事件名称
302
- - **handler** `(payload: any) => void` - 事件处理函数
303
-
304
- #### 返回值
305
-
306
- - `() => void` - 取消订阅函数
307
-
308
- #### 支持的事件
309
-
310
- | 事件名 | 触发时机 | payload 结构 |
311
- |--------|----------|--------------|
312
- | `task_registered` | 任务注册时 | `{ taskId: string, task: Task }` |
313
- | `task_started` | 任务开始执行时 | `{ taskId: string, task: Task }` |
314
- | `task_completed` | 任务执行成功时 | `{ taskId: string, task: Task, duration: number }` |
315
- | `task_failed` | 任务执行失败时 | `{ taskId: string, task: Task, error: Error, duration: number }` |
316
- | `task_stopped` | 任务停止时 | `{ taskId: string, task: Task }` |
317
- | `task_removed` | 任务删除时 | `{ taskId: string }` |
318
-
319
- #### 示例
320
-
321
- ```typescript
322
- // 订阅任务完成事件
323
- const unsubscribe = scheduler.on('task_completed', ({ taskId, duration }) => {
324
- console.log(`Task ${taskId} completed in ${duration}ms`);
325
- });
326
-
327
- // 订阅任务失败事件
328
- scheduler.on('task_failed', ({ taskId, error }) => {
329
- console.error(`Task ${taskId} failed:`, error.message);
330
- // 发送告警通知
331
- sendAlert(taskId, error);
332
- });
333
-
334
- // 取消订阅
335
- unsubscribe();
336
- ```
337
-
338
- ## 相关链接
339
-
340
- - [Task API](./task.md) - 任务配置详解
341
- - [DevTools API](./devtools.md) - 调试工具配置
342
- - [类型定义](./types.md) - 完整类型定义