hyper-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.
- package/.editorconfig +21 -0
- package/.eslintrc.cjs +26 -0
- package/GEMINI.md +1 -0
- package/README.md +38 -0
- package/docs/.vitepress/config.ts +52 -0
- package/docs/README.md +120 -0
- package/docs/api/devtools.md +232 -0
- package/docs/api/index.md +178 -0
- package/docs/api/scheduler.md +322 -0
- package/docs/api/task.md +439 -0
- package/docs/api/types.md +365 -0
- package/docs/examples/index.md +295 -0
- package/docs/guide/best-practices.md +436 -0
- package/docs/guide/core-concepts.md +363 -0
- package/docs/guide/getting-started.md +138 -0
- package/docs/index.md +33 -0
- package/docs/public/logo.svg +54 -0
- package/examples/browser/index.html +354 -0
- package/examples/node/simple.js +36 -0
- package/examples/react-demo/index.html +12 -0
- package/examples/react-demo/package.json +23 -0
- package/examples/react-demo/src/App.css +212 -0
- package/examples/react-demo/src/App.jsx +160 -0
- package/examples/react-demo/src/main.jsx +9 -0
- package/examples/react-demo/vite.config.ts +12 -0
- package/examples/react-demo/yarn.lock +752 -0
- package/examples/vue-demo/index.html +12 -0
- package/examples/vue-demo/package.json +21 -0
- package/examples/vue-demo/src/App.vue +373 -0
- package/examples/vue-demo/src/main.ts +4 -0
- package/examples/vue-demo/vite.config.ts +13 -0
- package/examples/vue-demo/yarn.lock +375 -0
- package/package.json +51 -0
- package/src/constants.ts +18 -0
- package/src/core/retry-strategy.ts +28 -0
- package/src/core/scheduler.ts +601 -0
- package/src/core/task-registry.ts +58 -0
- package/src/index.ts +74 -0
- package/src/platform/browser/browser-timer.ts +66 -0
- package/src/platform/browser/main-thread-timer.ts +16 -0
- package/src/platform/browser/worker.ts +31 -0
- package/src/platform/node/debug-cli.ts +19 -0
- package/src/platform/node/node-timer.ts +15 -0
- package/src/platform/timer-strategy.ts +19 -0
- package/src/plugins/dev-tools.ts +101 -0
- package/src/types.ts +115 -0
- package/src/ui/components/devtools.ts +525 -0
- package/src/ui/components/floating-trigger.ts +102 -0
- package/src/ui/components/icons.ts +16 -0
- package/src/ui/components/resizer.ts +129 -0
- package/src/ui/components/task-detail.ts +228 -0
- package/src/ui/components/task-header.ts +319 -0
- package/src/ui/components/task-list.ts +416 -0
- package/src/ui/components/timeline.ts +364 -0
- package/src/ui/debug-panel.ts +56 -0
- package/src/ui/i18n/en.ts +76 -0
- package/src/ui/i18n/index.ts +42 -0
- package/src/ui/i18n/zh.ts +76 -0
- package/src/ui/store/dev-tools-store.ts +191 -0
- package/src/ui/styles/theme.css.ts +56 -0
- package/src/ui/styles.ts +43 -0
- package/src/utils/cron-lite.ts +221 -0
- package/src/utils/cron.ts +20 -0
- package/src/utils/id.ts +10 -0
- package/src/utils/schedule.ts +93 -0
- package/src/vite-env.d.ts +1 -0
- package/stats.html +4949 -0
- package/tests/integration/Debug.test.ts +58 -0
- package/tests/unit/Plugin.test.ts +16 -0
- package/tests/unit/RetryStrategy.test.ts +21 -0
- package/tests/unit/Scheduler.test.ts +38 -0
- package/tests/unit/schedule.test.ts +70 -0
- package/tests/unit/ui/DevToolsStore.test.ts +67 -0
- package/tsconfig.json +28 -0
- package/vite.config.ts +51 -0
- package/vitest.config.ts +24 -0
package/.editorconfig
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# EditorConfig is awesome: https://EditorConfig.org
|
|
2
|
+
|
|
3
|
+
# top-most EditorConfig file
|
|
4
|
+
root = true
|
|
5
|
+
|
|
6
|
+
# Unix-style newlines with a newline ending every file
|
|
7
|
+
[*]
|
|
8
|
+
end_of_line = lf
|
|
9
|
+
insert_final_newline = true
|
|
10
|
+
charset = utf-8
|
|
11
|
+
|
|
12
|
+
# TypeScript files
|
|
13
|
+
[*.ts]
|
|
14
|
+
indent_style = space
|
|
15
|
+
indent_size = 2
|
|
16
|
+
trim_trailing_whitespace = true
|
|
17
|
+
|
|
18
|
+
# Disable auto-fix for critical UI components
|
|
19
|
+
[src/ui/components/{Timeline,TaskList,DevTools}.ts]
|
|
20
|
+
# These files have specific logic that should not be auto-fixed
|
|
21
|
+
# Manual review required for any changes
|
package/.eslintrc.cjs
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
root: true,
|
|
3
|
+
env: {
|
|
4
|
+
browser: true,
|
|
5
|
+
es2021: true,
|
|
6
|
+
node: true,
|
|
7
|
+
},
|
|
8
|
+
extends: [
|
|
9
|
+
'eslint:recommended',
|
|
10
|
+
'plugin:@typescript-eslint/recommended',
|
|
11
|
+
],
|
|
12
|
+
parser: '@typescript-eslint/parser',
|
|
13
|
+
parserOptions: {
|
|
14
|
+
ecmaVersion: 12,
|
|
15
|
+
sourceType: 'module',
|
|
16
|
+
},
|
|
17
|
+
plugins: [
|
|
18
|
+
'@typescript-eslint',
|
|
19
|
+
],
|
|
20
|
+
rules: {
|
|
21
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
22
|
+
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
|
23
|
+
'no-console': 'off',
|
|
24
|
+
},
|
|
25
|
+
ignorePatterns: ['dist/', 'coverage/', 'examples/'],
|
|
26
|
+
};
|
package/GEMINI.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
全部采用中文作为主要语言进行输出,包括文档和注释
|
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/public/logo.svg" width="120" height="120" alt="Hyper Scheduler Logo">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Hyper Scheduler</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img src="https://img.shields.io/npm/v/hyper-scheduler" alt="NPM Version">
|
|
9
|
+
<img src="https://img.shields.io/npm/l/hyper-scheduler" alt="License">
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
A lightweight, dependency-free (core) JavaScript task scheduler supporting Cron expressions and Web Workers.
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
- 🚀 **Cross-platform**: Works in Node.js and Browser.
|
|
16
|
+
- ⏰ **Precise Timing**: Uses Web Workers in browser to avoid background throttling.
|
|
17
|
+
- 🛠 **Debuggable**: Built-in debug panel and CLI output.
|
|
18
|
+
- 📦 **Tiny**: < 20KB gzipped.
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install hyper-scheduler
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```javascript
|
|
27
|
+
import { Scheduler } from 'hyper-scheduler';
|
|
28
|
+
|
|
29
|
+
const scheduler = new Scheduler({ debug: true });
|
|
30
|
+
scheduler.createTask({
|
|
31
|
+
id: 'hello',
|
|
32
|
+
schedule: '*/5 * * * * *',
|
|
33
|
+
handler: () => console.log('Hello World')
|
|
34
|
+
});
|
|
35
|
+
scheduler.start();
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
See [Documentation](docs/guide/getting-started.md) for more details.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { defineConfig } from 'vitepress';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
lang: 'zh-CN', // 设置语言为中文
|
|
5
|
+
title: 'Hyper Scheduler', // 更新标题
|
|
6
|
+
description: '轻量级全局任务调度 JavaScript 库。', // 更新描述
|
|
7
|
+
head: [
|
|
8
|
+
['link', { rel: 'icon', href: '/logo.svg', type: 'image/svg+xml' }]
|
|
9
|
+
],
|
|
10
|
+
themeConfig: {
|
|
11
|
+
logo: '/logo.svg',
|
|
12
|
+
nav: [
|
|
13
|
+
{ text: '指南', link: '/guide/getting-started' }, // 更新导航文本
|
|
14
|
+
{ text: 'API 参考', link: '/api/scheduler' }, // 更新导航文本
|
|
15
|
+
{ text: '示例演示', link: '/examples/' },
|
|
16
|
+
// 多版本导航占位符 - 实际实现可能需要自定义组件或更复杂的配置
|
|
17
|
+
{
|
|
18
|
+
text: '版本',
|
|
19
|
+
items: [
|
|
20
|
+
{ text: 'v1.0.0 (最新)', link: '/' },
|
|
21
|
+
// { text: 'v0.9.0', link: '/v0.9.0/' } // 示例历史版本
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
sidebar: [
|
|
26
|
+
{
|
|
27
|
+
text: '指南',
|
|
28
|
+
items: [
|
|
29
|
+
{ text: '快速开始', link: '/guide/getting-started' },
|
|
30
|
+
{ text: '核心概念', link: '/guide/core-concepts' },
|
|
31
|
+
{ text: '最佳实践', link: '/guide/best-practices' }
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
text: '示例演示',
|
|
36
|
+
items: [
|
|
37
|
+
{ text: '双线程心跳监控', link: '/examples/' }
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
text: 'API 参考',
|
|
42
|
+
items: [
|
|
43
|
+
{ text: '总览', link: '/api/' },
|
|
44
|
+
{ text: 'Scheduler', link: '/api/scheduler' },
|
|
45
|
+
{ text: 'Task', link: '/api/task' },
|
|
46
|
+
{ text: 'DevTools', link: '/api/devtools' },
|
|
47
|
+
{ text: '类型定义', link: '/api/types' }
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
});
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Hyper Scheduler 文档
|
|
2
|
+
|
|
3
|
+
## 文档结构
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
docs/
|
|
7
|
+
├── index.md # 首页
|
|
8
|
+
├── guide/ # 指南
|
|
9
|
+
│ ├── getting-started.md # 快速开始
|
|
10
|
+
│ ├── core-concepts.md # 核心概念
|
|
11
|
+
│ └── best-practices.md # 最佳实践
|
|
12
|
+
└── api/ # API 参考
|
|
13
|
+
├── index.md # API 总览
|
|
14
|
+
├── scheduler.md # Scheduler API
|
|
15
|
+
├── task.md # Task API
|
|
16
|
+
├── devtools.md # DevTools API
|
|
17
|
+
└── types.md # 类型定义
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 文档说明
|
|
21
|
+
|
|
22
|
+
### 指南 (Guide)
|
|
23
|
+
|
|
24
|
+
面向用户的教程和概念说明:
|
|
25
|
+
|
|
26
|
+
- **快速开始** - 安装、基础用法、完整示例
|
|
27
|
+
- **核心概念** - 调度器、任务、状态、事件系统等核心概念
|
|
28
|
+
- **最佳实践** - 任务设计、错误处理、性能优化等实践建议
|
|
29
|
+
|
|
30
|
+
### API 参考 (API Reference)
|
|
31
|
+
|
|
32
|
+
详细的 API 文档:
|
|
33
|
+
|
|
34
|
+
- **API 总览** - 快速查找和索引
|
|
35
|
+
- **Scheduler** - 调度器类的所有方法和配置
|
|
36
|
+
- **Task** - 任务定义、选项和运行时状态
|
|
37
|
+
- **DevTools** - 调试工具配置和使用
|
|
38
|
+
- **类型定义** - 完整的 TypeScript 类型
|
|
39
|
+
|
|
40
|
+
## 文档特点
|
|
41
|
+
|
|
42
|
+
### 1. 模块化组织
|
|
43
|
+
|
|
44
|
+
- 按功能模块拆分文档
|
|
45
|
+
- 每个 API 独立成页
|
|
46
|
+
- 便于维护和查找
|
|
47
|
+
|
|
48
|
+
### 2. 清晰的层次结构
|
|
49
|
+
|
|
50
|
+
- 指南:从简单到复杂
|
|
51
|
+
- API:按类和功能分组
|
|
52
|
+
- 类型:集中管理类型定义
|
|
53
|
+
|
|
54
|
+
### 3. 丰富的示例
|
|
55
|
+
|
|
56
|
+
- 每个 API 都有使用示例
|
|
57
|
+
- 包含常见模式和最佳实践
|
|
58
|
+
- 提供完整的代码片段
|
|
59
|
+
|
|
60
|
+
### 4. 交叉引用
|
|
61
|
+
|
|
62
|
+
- 相关文档之间互相链接
|
|
63
|
+
- 便于深入学习和查找
|
|
64
|
+
|
|
65
|
+
## 本地预览
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# 启动文档开发服务器
|
|
69
|
+
npm run docs:dev
|
|
70
|
+
|
|
71
|
+
# 构建文档
|
|
72
|
+
npm run docs:build
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 贡献指南
|
|
76
|
+
|
|
77
|
+
### 添加新文档
|
|
78
|
+
|
|
79
|
+
1. 在相应目录创建 Markdown 文件
|
|
80
|
+
2. 在 `.vitepress/config.ts` 中添加导航/侧边栏配置
|
|
81
|
+
3. 添加交叉引用链接
|
|
82
|
+
|
|
83
|
+
### 文档规范
|
|
84
|
+
|
|
85
|
+
- 使用清晰的标题层次
|
|
86
|
+
- 提供代码示例
|
|
87
|
+
- 添加参数说明表格
|
|
88
|
+
- 包含相关链接
|
|
89
|
+
|
|
90
|
+
### 示例格式
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
# API 名称
|
|
94
|
+
|
|
95
|
+
简短描述。
|
|
96
|
+
|
|
97
|
+
## 方法名
|
|
98
|
+
|
|
99
|
+
详细说明。
|
|
100
|
+
|
|
101
|
+
\`\`\`typescript
|
|
102
|
+
// 代码示例
|
|
103
|
+
\`\`\`
|
|
104
|
+
|
|
105
|
+
### 参数
|
|
106
|
+
|
|
107
|
+
| 参数 | 类型 | 说明 |
|
|
108
|
+
|------|------|------|
|
|
109
|
+
| ... | ... | ... |
|
|
110
|
+
|
|
111
|
+
### 示例
|
|
112
|
+
|
|
113
|
+
\`\`\`typescript
|
|
114
|
+
// 使用示例
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
## 相关链接
|
|
118
|
+
|
|
119
|
+
- [相关文档](./link.md)
|
|
120
|
+
```
|
|
@@ -0,0 +1,232 @@
|
|
|
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) - 完整类型定义
|
|
@@ -0,0 +1,178 @@
|
|
|
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) - 使用建议
|