hyper-scheduler 1.0.0 → 1.0.1

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 (80) hide show
  1. package/dist/devtools-4xVHTaUz.js +2161 -0
  2. package/dist/devtools-DdQ1I25H.cjs +1 -0
  3. package/dist/index.cjs +1 -0
  4. package/dist/index.js +995 -0
  5. package/dist/index.umd.cjs +1 -0
  6. package/package.json +7 -1
  7. package/.editorconfig +0 -21
  8. package/.eslintrc.cjs +0 -26
  9. package/GEMINI.md +0 -1
  10. package/docs/.vitepress/config.ts +0 -52
  11. package/docs/README.md +0 -120
  12. package/docs/api/devtools.md +0 -232
  13. package/docs/api/index.md +0 -178
  14. package/docs/api/scheduler.md +0 -322
  15. package/docs/api/task.md +0 -439
  16. package/docs/api/types.md +0 -365
  17. package/docs/examples/index.md +0 -295
  18. package/docs/guide/best-practices.md +0 -436
  19. package/docs/guide/core-concepts.md +0 -363
  20. package/docs/guide/getting-started.md +0 -138
  21. package/docs/index.md +0 -33
  22. package/docs/public/logo.svg +0 -54
  23. package/examples/browser/index.html +0 -354
  24. package/examples/node/simple.js +0 -36
  25. package/examples/react-demo/index.html +0 -12
  26. package/examples/react-demo/package.json +0 -23
  27. package/examples/react-demo/src/App.css +0 -212
  28. package/examples/react-demo/src/App.jsx +0 -160
  29. package/examples/react-demo/src/main.jsx +0 -9
  30. package/examples/react-demo/vite.config.ts +0 -12
  31. package/examples/react-demo/yarn.lock +0 -752
  32. package/examples/vue-demo/index.html +0 -12
  33. package/examples/vue-demo/package.json +0 -21
  34. package/examples/vue-demo/src/App.vue +0 -373
  35. package/examples/vue-demo/src/main.ts +0 -4
  36. package/examples/vue-demo/vite.config.ts +0 -13
  37. package/examples/vue-demo/yarn.lock +0 -375
  38. package/src/constants.ts +0 -18
  39. package/src/core/retry-strategy.ts +0 -28
  40. package/src/core/scheduler.ts +0 -601
  41. package/src/core/task-registry.ts +0 -58
  42. package/src/index.ts +0 -74
  43. package/src/platform/browser/browser-timer.ts +0 -66
  44. package/src/platform/browser/main-thread-timer.ts +0 -16
  45. package/src/platform/browser/worker.ts +0 -31
  46. package/src/platform/node/debug-cli.ts +0 -19
  47. package/src/platform/node/node-timer.ts +0 -15
  48. package/src/platform/timer-strategy.ts +0 -19
  49. package/src/plugins/dev-tools.ts +0 -101
  50. package/src/types.ts +0 -115
  51. package/src/ui/components/devtools.ts +0 -525
  52. package/src/ui/components/floating-trigger.ts +0 -102
  53. package/src/ui/components/icons.ts +0 -16
  54. package/src/ui/components/resizer.ts +0 -129
  55. package/src/ui/components/task-detail.ts +0 -228
  56. package/src/ui/components/task-header.ts +0 -319
  57. package/src/ui/components/task-list.ts +0 -416
  58. package/src/ui/components/timeline.ts +0 -364
  59. package/src/ui/debug-panel.ts +0 -56
  60. package/src/ui/i18n/en.ts +0 -76
  61. package/src/ui/i18n/index.ts +0 -42
  62. package/src/ui/i18n/zh.ts +0 -76
  63. package/src/ui/store/dev-tools-store.ts +0 -191
  64. package/src/ui/styles/theme.css.ts +0 -56
  65. package/src/ui/styles.ts +0 -43
  66. package/src/utils/cron-lite.ts +0 -221
  67. package/src/utils/cron.ts +0 -20
  68. package/src/utils/id.ts +0 -10
  69. package/src/utils/schedule.ts +0 -93
  70. package/src/vite-env.d.ts +0 -1
  71. package/stats.html +0 -4949
  72. package/tests/integration/Debug.test.ts +0 -58
  73. package/tests/unit/Plugin.test.ts +0 -16
  74. package/tests/unit/RetryStrategy.test.ts +0 -21
  75. package/tests/unit/Scheduler.test.ts +0 -38
  76. package/tests/unit/schedule.test.ts +0 -70
  77. package/tests/unit/ui/DevToolsStore.test.ts +0 -67
  78. package/tsconfig.json +0 -28
  79. package/vite.config.ts +0 -51
  80. package/vitest.config.ts +0 -24
@@ -1,232 +0,0 @@
1
- # DevTools
2
-
3
- 浏览器环境下的可视化调试工具插件,提供任务监控、时间线视图和实时日志等功能。
4
-
5
- ## 构造函数
6
-
7
- ```typescript
8
- new DevTools(options?: DevToolsOptions)
9
- ```
10
-
11
- ### 参数
12
-
13
- - **options** `DevToolsOptions` - 可选配置对象
14
-
15
- | 属性 | 类型 | 默认值 | 说明 |
16
- |------|------|--------|------|
17
- | `theme` | `'light' \| 'dark' \| 'auto'` | `'auto'` | 主题模式 |
18
- | `dockPosition` | `'right' \| 'bottom'` | `'right'` | 面板停靠位置 |
19
- | `language` | `'en' \| 'zh'` | `'en'` | 界面语言 |
20
- | `defaultZoom` | `number` | `1` | 时间线默认缩放级别 (0.5-5) |
21
- | `trigger` | `TriggerOptions` | - | 悬浮按钮配置 |
22
-
23
- ### TriggerOptions
24
-
25
- | 属性 | 类型 | 默认值 | 说明 |
26
- |------|------|--------|------|
27
- | `backgroundColor` | `string` | `'#3b82f6'` | 背景色 |
28
- | `textColor` | `string` | `'#ffffff'` | 文字/图标颜色 |
29
- | `position` | `'bottom-right' \| 'bottom-left' \| 'top-right' \| 'top-left'` | `'bottom-right'` | 位置 |
30
-
31
- ## 使用方法
32
-
33
- ### 基础用法
34
-
35
- ```typescript
36
- import { Scheduler, DevTools } from 'hyper-scheduler';
37
-
38
- const scheduler = new Scheduler({
39
- plugins: [
40
- new DevTools()
41
- ]
42
- });
43
- ```
44
-
45
- ### 自定义配置
46
-
47
- ```typescript
48
- import { Scheduler, DevTools } from 'hyper-scheduler';
49
-
50
- const scheduler = new Scheduler({
51
- plugins: [
52
- new DevTools({
53
- theme: 'dark',
54
- dockPosition: 'bottom',
55
- language: 'zh',
56
- defaultZoom: 2,
57
- trigger: {
58
- backgroundColor: '#10b981',
59
- textColor: '#ffffff',
60
- position: 'bottom-left'
61
- }
62
- })
63
- ]
64
- });
65
- ```
66
-
67
- ## 功能特性
68
-
69
- ### 任务列表
70
-
71
- - 查看所有已注册任务
72
- - 实时显示任务状态(idle、running、stopped、error)
73
- - 显示上次执行时间和下次执行时间
74
- - 按标签过滤任务
75
- - 搜索任务
76
- - **任务驱动 (Task Driver)**
77
- - 在任务列表中,任务 ID 旁会显示一个标记:
78
- - **`M`**: 表示该任务在 **主线程 (Main Thread)** 中运行。
79
- - **`W`**: 表示该任务在 **Web Worker 线程** 中运行。
80
- - 这允许你快速识别任务的执行上下文,特别是对于需要避免阻塞 UI 的繁重任务。
81
- - **注意**:`driver` 是 `Scheduler` 或 `Task` 的配置选项,而不是 `DevTools` 本身的配置。`DevTools` 仅负责可视化其状态。
82
-
83
- ### 任务控制
84
-
85
- - 手动触发任务执行
86
- - 暂停/恢复任务
87
- - 删除任务
88
- - 查看任务详情
89
-
90
- ### 时间线视图
91
-
92
- - 可视化任务执行时间线
93
- - 缩放时间轴(0.5x - 5x)
94
- - 显示任务执行时长
95
- - 区分成功/失败状态
96
-
97
- ### 执行历史
98
-
99
- - 查看任务执行历史记录
100
- - 显示执行时间、耗时、状态
101
- - 查看错误信息
102
- - 统计成功率
103
-
104
- ### 实时日志
105
-
106
- - 实时显示调度器事件
107
- - 任务注册、启动、完成、失败等事件
108
- - 可过滤日志级别
109
-
110
- ## 主题配置
111
-
112
- ### auto(自动)
113
-
114
- 根据系统主题自动切换:
115
-
116
- ```typescript
117
- new DevTools({
118
- theme: 'auto'
119
- })
120
- ```
121
-
122
- ### light(浅色)
123
-
124
- ```typescript
125
- new DevTools({
126
- theme: 'light'
127
- })
128
- ```
129
-
130
- ### dark(深色)
131
-
132
- ```typescript
133
- new DevTools({
134
- theme: 'dark'
135
- })
136
- ```
137
-
138
- ## 停靠位置
139
-
140
- ### right(右侧)
141
-
142
- 面板停靠在浏览器窗口右侧:
143
-
144
- ```typescript
145
- new DevTools({
146
- dockPosition: 'right'
147
- })
148
- ```
149
-
150
- ### bottom(底部)
151
-
152
- 面板停靠在浏览器窗口底部:
153
-
154
- ```typescript
155
- new DevTools({
156
- dockPosition: 'bottom'
157
- })
158
- ```
159
-
160
- ## 语言设置
161
-
162
- ### 中文
163
-
164
- ```typescript
165
- new DevTools({
166
- language: 'zh'
167
- })
168
- ```
169
-
170
- ### 英文
171
-
172
- ```typescript
173
- new DevTools({
174
- language: 'en'
175
- })
176
- ```
177
-
178
- ## 时间线缩放
179
-
180
- 控制时间线视图的默认缩放级别,范围 0.5 - 5:
181
-
182
- ```typescript
183
- new DevTools({
184
- defaultZoom: 2 // 2倍缩放
185
- })
186
- ```
187
-
188
- - `0.5` - 显示更长时间范围
189
- - `1` - 默认缩放
190
- - `2` - 显示更多细节
191
- - `5` - 最大缩放
192
-
193
- ## 悬浮按钮自定义
194
-
195
- ### 位置
196
-
197
- ```typescript
198
- new DevTools({
199
- trigger: {
200
- position: 'bottom-right' // 右下角
201
- }
202
- })
203
- ```
204
-
205
- 可选值:
206
- - `'bottom-right'` - 右下角(默认)
207
- - `'bottom-left'` - 左下角
208
- - `'top-right'` - 右上角
209
- - `'top-left'` - 左上角
210
-
211
- ### 颜色
212
-
213
- ```typescript
214
- new DevTools({
215
- trigger: {
216
- backgroundColor: '#10b981', // 绿色背景
217
- textColor: '#ffffff' // 白色文字
218
- }
219
- })
220
- ```
221
-
222
- 支持任何有效的 CSS 颜色值:
223
- - 十六进制:`'#3b82f6'`
224
- - RGB:`'rgb(59, 130, 246)'`
225
- - RGBA:`'rgba(59, 130, 246, 0.8)'`
226
- - 颜色名:`'blue'`
227
-
228
- ## 相关链接
229
-
230
- - [Scheduler API](./scheduler.md) - 调度器 API
231
- - [快速开始](../guide/getting-started.md) - 使用指南
232
- - [类型定义](./types.md) - 完整类型定义
package/docs/api/index.md DELETED
@@ -1,178 +0,0 @@
1
- # API 参考
2
-
3
- Hyper Scheduler 的完整 API 文档。
4
-
5
- ## 核心 API
6
-
7
- ### [Scheduler](./scheduler.md)
8
-
9
- 核心调度器类,负责任务的注册、调度和生命周期管理。
10
-
11
- **主要方法**:
12
- - `createTask()` - 注册新任务
13
- - `start()` / `stop()` - 启动/停止调度器
14
- - `startTask()` / `stopTask()` - 启动/停止指定任务
15
- - `triggerTask()` - 手动触发任务
16
- - `getTask()` / `getAllTasks()` - 查询任务
17
- - `deleteTask()` - 删除任务
18
- - `on()` - 订阅事件
19
-
20
- [查看完整文档 →](./scheduler.md)
21
-
22
- ---
23
-
24
- ### [Task](./task.md)
25
-
26
- 任务配置和运行时状态。
27
-
28
- **核心接口**:
29
- - `TaskDefinition` - 任务定义
30
- - `TaskOptions` - 任务选项
31
- - `Task` - 任务运行时对象
32
-
33
- **配置选项**:
34
- - 调度规则(Cron / 时间间隔)
35
- - 重试策略
36
- - 时区设置
37
- - 错误处理
38
-
39
- [查看完整文档 →](./task.md)
40
-
41
- ---
42
-
43
- ### [DevTools](./devtools.md)
44
-
45
- 浏览器环境下的可视化调试工具。
46
-
47
- **功能特性**:
48
- - 任务列表和状态监控
49
- - 时间线视图
50
- - 执行历史
51
- - 实时日志
52
-
53
- **配置选项**:
54
- - 主题模式
55
- - 停靠位置
56
- - 界面语言
57
- - 悬浮按钮自定义
58
-
59
- [查看完整文档 →](./devtools.md)
60
-
61
- ---
62
-
63
- ### [类型定义](./types.md)
64
-
65
- 完整的 TypeScript 类型定义。
66
-
67
- **核心类型**:
68
- - `SchedulerConfig`
69
- - `TaskDefinition`
70
- - `TaskOptions`
71
- - `Task`
72
- - `TaskStatus`
73
- - `ExecutionRecord`
74
-
75
- **插件类型**:
76
- - `HyperSchedulerPlugin`
77
- - `DevToolsOptions`
78
-
79
- [查看完整文档 →](./types.md)
80
-
81
- ---
82
-
83
- ## 快速查找
84
-
85
- ### 按功能分类
86
-
87
- #### 任务管理
88
- - [创建任务](./scheduler.md#createtask) - `scheduler.createTask()`
89
- - [删除任务](./scheduler.md#deletetask) - `scheduler.deleteTask()`
90
- - [查询任务](./scheduler.md#gettask) - `scheduler.getTask()`
91
- - [获取所有任务](./scheduler.md#getalltasks) - `scheduler.getAllTasks()`
92
-
93
- #### 任务控制
94
- - [启动调度器](./scheduler.md#start) - `scheduler.start()`
95
- - [停止调度器](./scheduler.md#stop) - `scheduler.stop()`
96
- - [启动任务](./scheduler.md#starttask) - `scheduler.startTask()`
97
- - [停止任务](./scheduler.md#stoptask) - `scheduler.stopTask()`
98
- - [手动触发](./scheduler.md#triggertask) - `scheduler.triggerTask()`
99
-
100
- #### 任务配置
101
- - [调度规则](./task.md#schedule) - Cron 表达式 / 时间间隔
102
- - [重试策略](./task.md#retry) - 失败重试配置
103
- - [时区设置](./task.md#timezone) - 任务专属时区
104
- - [错误处理](./task.md#onerror) - 错误回调函数
105
-
106
- #### 事件监听
107
- - [订阅事件](./scheduler.md#on) - `scheduler.on()`
108
- - [事件类型](./scheduler.md#支持的事件) - 完整事件列表
109
-
110
- #### 调试工具
111
- - [DevTools 配置](./devtools.md#构造函数) - 初始化选项
112
- - [主题设置](./devtools.md#主题配置) - light / dark / auto
113
- - [语言设置](./devtools.md#语言设置) - en / zh
114
-
115
- ---
116
-
117
- ## 使用示例
118
-
119
- ### 基础用法
120
-
121
- ```typescript
122
- import { Scheduler } from 'hyper-scheduler';
123
-
124
- const scheduler = new Scheduler({ debug: true });
125
-
126
- scheduler.createTask({
127
- id: 'my-task',
128
- schedule: '*/5 * * * * *',
129
- handler: () => console.log('Task executed')
130
- });
131
-
132
- scheduler.start();
133
- ```
134
-
135
- ### 带重试和错误处理
136
-
137
- ```typescript
138
- scheduler.createTask({
139
- id: 'api-sync',
140
- schedule: '5m',
141
- handler: async () => {
142
- await syncWithAPI();
143
- },
144
- options: {
145
- retry: {
146
- maxAttempts: 3,
147
- initialDelay: 1000,
148
- factor: 2
149
- },
150
- onError: (error, taskId) => {
151
- console.error(`Task ${taskId} failed:`, error);
152
- }
153
- }
154
- });
155
- ```
156
-
157
- ### 使用 DevTools
158
-
159
- ```typescript
160
- import { Scheduler, DevTools } from 'hyper-scheduler';
161
-
162
- const scheduler = new Scheduler({
163
- plugins: [
164
- new DevTools({
165
- theme: 'dark',
166
- language: 'zh'
167
- })
168
- ]
169
- });
170
- ```
171
-
172
- ---
173
-
174
- ## 相关链接
175
-
176
- - [快速开始](../guide/getting-started.md) - 入门指南
177
- - [核心概念](../guide/core-concepts.md) - 深入理解
178
- - [最佳实践](../guide/best-practices.md) - 使用建议
@@ -1,322 +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(): void
116
- ```
117
-
118
- #### 示例
119
-
120
- ```typescript
121
- scheduler.start();
122
- ```
123
-
124
- ### stop()
125
-
126
- 停止调度器,暂停所有任务的调度。已经在执行的任务会继续完成。
127
-
128
- ```typescript
129
- stop(): void
130
- ```
131
-
132
- #### 示例
133
-
134
- ```typescript
135
- scheduler.stop();
136
- ```
137
-
138
- ### startTask()
139
-
140
- 启动指定任务(从 stopped 状态恢复)。
141
-
142
- ```typescript
143
- startTask(taskId: string): void
144
- ```
145
-
146
- #### 参数
147
-
148
- - **taskId** `string` - 任务 ID
149
-
150
- #### 示例
151
-
152
- ```typescript
153
- scheduler.startTask('daily-backup');
154
- ```
155
-
156
- ### stopTask()
157
-
158
- 停止指定任务,任务状态变为 `stopped`,不再参与调度。
159
-
160
- ```typescript
161
- stopTask(taskId: string): void
162
- ```
163
-
164
- #### 参数
165
-
166
- - **taskId** `string` - 任务 ID
167
-
168
- #### 示例
169
-
170
- ```typescript
171
- scheduler.stopTask('daily-backup');
172
- ```
173
-
174
- ### triggerTask()
175
-
176
- 手动触发任务立即执行一次,不影响正常调度。执行完成后恢复到之前的状态。
177
-
178
- ```typescript
179
- triggerTask(taskId: string): Promise<void>
180
- ```
181
-
182
- #### 参数
183
-
184
- - **taskId** `string` - 任务 ID
185
-
186
- #### 返回值
187
-
188
- - `Promise<void>` - 任务执行完成后 resolve
189
-
190
- #### 示例
191
-
192
- ```typescript
193
- await scheduler.triggerTask('daily-backup');
194
- console.log('Manual trigger completed');
195
- ```
196
-
197
- ### deleteTask()
198
-
199
- 删除指定任务,任务将从调度器中移除。
200
-
201
- ```typescript
202
- deleteTask(taskId: string): boolean
203
- ```
204
-
205
- #### 参数
206
-
207
- - **taskId** `string` - 任务 ID
208
-
209
- #### 返回值
210
-
211
- - `boolean` - 删除成功返回 `true`,任务不存在返回 `false`
212
-
213
- #### 示例
214
-
215
- ```typescript
216
- const deleted = scheduler.deleteTask('old-task');
217
- if (deleted) {
218
- console.log('Task removed successfully');
219
- }
220
- ```
221
-
222
- ### getTask()
223
-
224
- 获取指定任务的详细信息。
225
-
226
- ```typescript
227
- getTask(taskId: string): Task | undefined
228
- ```
229
-
230
- #### 参数
231
-
232
- - **taskId** `string` - 任务 ID
233
-
234
- #### 返回值
235
-
236
- - `Task | undefined` - 任务对象,不存在则返回 `undefined`
237
-
238
- #### 示例
239
-
240
- ```typescript
241
- const task = scheduler.getTask('daily-backup');
242
- if (task) {
243
- console.log('Task status:', task.status);
244
- console.log('Next run:', new Date(task.nextRun));
245
- }
246
- ```
247
-
248
- ### getAllTasks()
249
-
250
- 获取所有已注册任务的列表。
251
-
252
- ```typescript
253
- getAllTasks(): Task[]
254
- ```
255
-
256
- #### 返回值
257
-
258
- - `Task[]` - 任务对象数组
259
-
260
- #### 示例
261
-
262
- ```typescript
263
- const tasks = scheduler.getAllTasks();
264
- console.log(`Total tasks: ${tasks.length}`);
265
-
266
- tasks.forEach(task => {
267
- console.log(`${task.id}: ${task.status}`);
268
- });
269
- ```
270
-
271
- ### on()
272
-
273
- 订阅调度器事件。
274
-
275
- ```typescript
276
- on(event: string, handler: (payload: any) => void): () => void
277
- ```
278
-
279
- #### 参数
280
-
281
- - **event** `string` - 事件名称
282
- - **handler** `(payload: any) => void` - 事件处理函数
283
-
284
- #### 返回值
285
-
286
- - `() => void` - 取消订阅函数
287
-
288
- #### 支持的事件
289
-
290
- | 事件名 | 触发时机 | payload 结构 |
291
- |--------|----------|--------------|
292
- | `task_registered` | 任务注册时 | `{ taskId: string, task: Task }` |
293
- | `task_started` | 任务开始执行时 | `{ taskId: string, task: Task }` |
294
- | `task_completed` | 任务执行成功时 | `{ taskId: string, task: Task, duration: number }` |
295
- | `task_failed` | 任务执行失败时 | `{ taskId: string, task: Task, error: Error, duration: number }` |
296
- | `task_stopped` | 任务停止时 | `{ taskId: string, task: Task }` |
297
- | `task_removed` | 任务删除时 | `{ taskId: string }` |
298
-
299
- #### 示例
300
-
301
- ```typescript
302
- // 订阅任务完成事件
303
- const unsubscribe = scheduler.on('task_completed', ({ taskId, duration }) => {
304
- console.log(`Task ${taskId} completed in ${duration}ms`);
305
- });
306
-
307
- // 订阅任务失败事件
308
- scheduler.on('task_failed', ({ taskId, error }) => {
309
- console.error(`Task ${taskId} failed:`, error.message);
310
- // 发送告警通知
311
- sendAlert(taskId, error);
312
- });
313
-
314
- // 取消订阅
315
- unsubscribe();
316
- ```
317
-
318
- ## 相关链接
319
-
320
- - [Task API](./task.md) - 任务配置详解
321
- - [DevTools API](./devtools.md) - 调试工具配置
322
- - [类型定义](./types.md) - 完整类型定义