@mathwiz/ui-components 0.1.4 → 0.1.6
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/README.md +35 -1
- package/dist/components/MathWizHeader/MathWizHeader.d.ts.map +1 -1
- package/dist/components/MathWizHeader/MathWizHeader.types.d.ts +15 -0
- package/dist/components/MathWizHeader/MathWizHeader.types.d.ts.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/types.d.ts +117 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/utils.d.ts +72 -0
- package/dist/config/utils.d.ts.map +1 -0
- package/dist/data-sources/api-data-source.d.ts +35 -0
- package/dist/data-sources/api-data-source.d.ts.map +1 -0
- package/dist/data-sources/custom-data-source.d.ts +59 -0
- package/dist/data-sources/custom-data-source.d.ts.map +1 -0
- package/dist/data-sources/factory.d.ts +61 -0
- package/dist/data-sources/factory.d.ts.map +1 -0
- package/dist/data-sources/index.d.ts +7 -0
- package/dist/data-sources/index.d.ts.map +1 -0
- package/dist/data-sources/mock-data-source.d.ts +44 -0
- package/dist/data-sources/mock-data-source.d.ts.map +1 -0
- package/dist/data-sources/types.d.ts +119 -0
- package/dist/data-sources/types.d.ts.map +1 -0
- package/dist/demo/configurable-demo.d.ts +4 -0
- package/dist/demo/configurable-demo.d.ts.map +1 -0
- package/dist/index.cjs +22 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +2051 -1564
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/handlers.d.ts.map +1 -1
- package/dist/pages/GradeUnitBrowserPage/GradeUnitBrowserContext.d.ts +2 -4
- package/dist/pages/GradeUnitBrowserPage/GradeUnitBrowserContext.d.ts.map +1 -1
- package/dist/pages/GradeUnitBrowserPage/GradeUnitBrowserPage.d.ts.map +1 -1
- package/dist/pages/GradeUnitBrowserPage/types.d.ts +10 -0
- package/dist/pages/GradeUnitBrowserPage/types.d.ts.map +1 -1
- package/dist/services/courseService.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/ui-components.css +0 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
## 📦 组件库信息
|
|
6
6
|
|
|
7
7
|
- **包名**: `@mathwiz/ui-components`
|
|
8
|
-
- **版本**: 0.1.
|
|
8
|
+
- **版本**: 0.1.6
|
|
9
9
|
- **描述**: A collection of reusable UI components for React applications within the mathwiz ecosystem.
|
|
10
10
|
- **GitHub**: [https://github.com/moleusher/mathwiz-UI](https://github.com/moleusher/mathwiz-UI)
|
|
11
11
|
- **Storybook**: [本地开发地址](http://localhost:6006)
|
|
@@ -352,6 +352,40 @@ function CustomThemeApp() {
|
|
|
352
352
|
}
|
|
353
353
|
```
|
|
354
354
|
|
|
355
|
+
### CSS 自动注入功能 (v0.1.6+)
|
|
356
|
+
|
|
357
|
+
从版本 0.1.6 开始,组件库使用 CSS 自动注入技术,所有样式会自动注入到 JavaScript bundle 中:
|
|
358
|
+
|
|
359
|
+
#### 技术实现
|
|
360
|
+
- 使用 `vite-plugin-css-injected-by-js` 插件
|
|
361
|
+
- 运行时自动创建 `<style>` 标签并注入 CSS 内容
|
|
362
|
+
- 包含完整的 CSS 变量系统(设计令牌)
|
|
363
|
+
- 所有组件样式自动加载
|
|
364
|
+
|
|
365
|
+
#### 使用优势
|
|
366
|
+
- **零配置使用** - 无需额外导入 CSS 文件
|
|
367
|
+
- **样式完整性** - 确保所有组件样式正确显示
|
|
368
|
+
- **性能优化** - CSS 与 JavaScript 一起打包,减少 HTTP 请求
|
|
369
|
+
- **主题支持** - 完整的 CSS 变量系统支持主题定制
|
|
370
|
+
|
|
371
|
+
#### 样式范围
|
|
372
|
+
自动注入的样式包括:
|
|
373
|
+
- ✅ MathWizHeader 组件样式
|
|
374
|
+
- ✅ Sidebar 组件样式
|
|
375
|
+
- ✅ ContentAccordion 组件样式
|
|
376
|
+
- ✅ GradeUnitBrowserPage 页面样式
|
|
377
|
+
- ✅ 所有基础组件样式
|
|
378
|
+
- ✅ CSS 变量系统(设计令牌)
|
|
379
|
+
|
|
380
|
+
#### 使用示例
|
|
381
|
+
```typescript
|
|
382
|
+
// 正确 - 无需额外导入样式,样式自动注入
|
|
383
|
+
import { MathWizHeader } from '@mathwiz/ui-components';
|
|
384
|
+
|
|
385
|
+
// 错误 - 不需要手动导入 CSS 文件
|
|
386
|
+
// import '@mathwiz/ui-components/dist/styles.css'; // 不需要
|
|
387
|
+
```
|
|
388
|
+
|
|
355
389
|
### 样式导入说明
|
|
356
390
|
|
|
357
391
|
组件库自带完整的样式系统,无需额外导入 CSS 文件:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MathWizHeader.d.ts","sourceRoot":"","sources":["../../../src/components/MathWizHeader/MathWizHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,uBAAuB,CAAC;AAC7E,OAAO,qBAAqB,CAAC;;
|
|
1
|
+
{"version":3,"file":"MathWizHeader.d.ts","sourceRoot":"","sources":["../../../src/components/MathWizHeader/MathWizHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,uBAAuB,CAAC;AAC7E,OAAO,qBAAqB,CAAC;;AAkL7B,wBAgCG"}
|
|
@@ -8,6 +8,10 @@ export interface ExploreItem {
|
|
|
8
8
|
target?: string;
|
|
9
9
|
onClick?: (item: ExploreItem) => void;
|
|
10
10
|
}
|
|
11
|
+
export type HeaderVariant = 'primary' | 'secondary' | 'gradient' | 'solid' | 'bordered';
|
|
12
|
+
export type HeaderColor = 'default' | 'primary' | 'success' | 'warning' | 'danger';
|
|
13
|
+
export type LogoSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
14
|
+
export type ButtonVariant = 'solid' | 'bordered' | 'light' | 'flat' | 'faded' | 'shadow';
|
|
11
15
|
export interface MathWizHeaderProps {
|
|
12
16
|
className?: string;
|
|
13
17
|
style?: React.CSSProperties;
|
|
@@ -29,6 +33,17 @@ export interface MathWizHeaderProps {
|
|
|
29
33
|
logoClassName?: string;
|
|
30
34
|
exploreClassName?: string;
|
|
31
35
|
userProfileClassName?: string;
|
|
36
|
+
variant?: HeaderVariant;
|
|
37
|
+
color?: HeaderColor;
|
|
38
|
+
background?: string;
|
|
39
|
+
height?: string | number;
|
|
40
|
+
gradientFrom?: string;
|
|
41
|
+
gradientTo?: string;
|
|
42
|
+
gradientVia?: string;
|
|
43
|
+
logoColor?: string;
|
|
44
|
+
logoSize?: LogoSize;
|
|
45
|
+
exploreButtonVariant?: ButtonVariant;
|
|
46
|
+
exploreButtonColor?: HeaderColor;
|
|
32
47
|
'aria-label'?: string;
|
|
33
48
|
'aria-labelledby'?: string;
|
|
34
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MathWizHeader.types.d.ts","sourceRoot":"","sources":["../../../src/components/MathWizHeader/MathWizHeader.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC;AAGD,MAAM,WAAW,kBAAkB;IAEjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAGzB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;IAG3D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAGrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
1
|
+
{"version":3,"file":"MathWizHeader.types.d.ts","sourceRoot":"","sources":["../../../src/components/MathWizHeader/MathWizHeader.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC;AAGD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AACxF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AACnF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,kBAAkB;IAEjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAGzB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;IAG3D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAGrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAGpB,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAGjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { IDataSource } from '../data-sources/types';
|
|
2
|
+
/**
|
|
3
|
+
* 错误处理配置
|
|
4
|
+
*/
|
|
5
|
+
export interface ErrorHandlingConfig {
|
|
6
|
+
/** 是否显示用户友好的错误信息 */
|
|
7
|
+
showUserFriendlyErrors: boolean;
|
|
8
|
+
/** 是否记录错误日志 */
|
|
9
|
+
logErrors: boolean;
|
|
10
|
+
/** 是否自动重试 */
|
|
11
|
+
autoRetry: boolean;
|
|
12
|
+
/** 最大重试次数 */
|
|
13
|
+
maxRetries: number;
|
|
14
|
+
/** 重试延迟(毫秒) */
|
|
15
|
+
retryDelay: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 性能优化配置
|
|
19
|
+
*/
|
|
20
|
+
export interface PerformanceConfig {
|
|
21
|
+
/** 是否启用虚拟化 */
|
|
22
|
+
enableVirtualization: boolean;
|
|
23
|
+
/** 是否懒加载图片 */
|
|
24
|
+
lazyLoadImages: boolean;
|
|
25
|
+
/** 搜索防抖时间(毫秒) */
|
|
26
|
+
debounceSearch: number;
|
|
27
|
+
/** 是否启用数据缓存 */
|
|
28
|
+
enableCaching: boolean;
|
|
29
|
+
/** 缓存过期时间(毫秒) */
|
|
30
|
+
cacheTTL: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 主题配置
|
|
34
|
+
*/
|
|
35
|
+
export interface ThemeConfig {
|
|
36
|
+
/** 主色调 */
|
|
37
|
+
primaryColor: string;
|
|
38
|
+
/** 圆角大小 */
|
|
39
|
+
borderRadius: string;
|
|
40
|
+
/** 间距 */
|
|
41
|
+
spacing: string;
|
|
42
|
+
/** 字体大小 */
|
|
43
|
+
fontSize: string;
|
|
44
|
+
/** 是否启用深色模式 */
|
|
45
|
+
enableDarkMode: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Fallback策略
|
|
49
|
+
*/
|
|
50
|
+
export type FallbackStrategy = 'error' | 'mock' | 'cached' | 'none';
|
|
51
|
+
/**
|
|
52
|
+
* GradeUnitBrowser 完整配置
|
|
53
|
+
*/
|
|
54
|
+
export interface GradeUnitBrowserConfig {
|
|
55
|
+
/** 数据源配置 */
|
|
56
|
+
dataSource: IDataSource;
|
|
57
|
+
/** Fallback策略 */
|
|
58
|
+
fallbackStrategy: FallbackStrategy;
|
|
59
|
+
/** 错误处理配置 */
|
|
60
|
+
errorHandling: ErrorHandlingConfig;
|
|
61
|
+
/** 性能优化配置 */
|
|
62
|
+
performance: PerformanceConfig;
|
|
63
|
+
/** 主题和样式配置 */
|
|
64
|
+
theme: ThemeConfig;
|
|
65
|
+
/** 调试模式 */
|
|
66
|
+
debug: boolean;
|
|
67
|
+
/** 是否启用开发工具 */
|
|
68
|
+
enableDevTools: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 配置创建选项
|
|
72
|
+
*/
|
|
73
|
+
export interface CreateConfigOptions {
|
|
74
|
+
/** 数据源配置 */
|
|
75
|
+
dataSource?: IDataSource;
|
|
76
|
+
/** Fallback策略 */
|
|
77
|
+
fallbackStrategy?: FallbackStrategy;
|
|
78
|
+
/** 错误处理配置 */
|
|
79
|
+
errorHandling?: Partial<ErrorHandlingConfig>;
|
|
80
|
+
/** 性能优化配置 */
|
|
81
|
+
performance?: Partial<PerformanceConfig>;
|
|
82
|
+
/** 主题和样式配置 */
|
|
83
|
+
theme?: Partial<ThemeConfig>;
|
|
84
|
+
/** 调试模式 */
|
|
85
|
+
debug?: boolean;
|
|
86
|
+
/** 是否启用开发工具 */
|
|
87
|
+
enableDevTools?: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 配置验证结果
|
|
91
|
+
*/
|
|
92
|
+
export interface ConfigValidationResult {
|
|
93
|
+
/** 是否有效 */
|
|
94
|
+
isValid: boolean;
|
|
95
|
+
/** 错误信息 */
|
|
96
|
+
errors: string[];
|
|
97
|
+
/** 警告信息 */
|
|
98
|
+
warnings: string[];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 配置预设类型
|
|
102
|
+
*/
|
|
103
|
+
export type ConfigPreset = 'development' | 'production' | 'testing' | 'minimal';
|
|
104
|
+
/**
|
|
105
|
+
* 配置变更事件
|
|
106
|
+
*/
|
|
107
|
+
export interface ConfigChangeEvent {
|
|
108
|
+
/** 变更的配置键 */
|
|
109
|
+
key: string;
|
|
110
|
+
/** 旧值 */
|
|
111
|
+
oldValue: any;
|
|
112
|
+
/** 新值 */
|
|
113
|
+
newValue: any;
|
|
114
|
+
/** 变更时间戳 */
|
|
115
|
+
timestamp: number;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAI3E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,sBAAsB,EAAE,OAAO,CAAC;IAChC,eAAe;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc;IACd,oBAAoB,EAAE,OAAO,CAAC;IAC9B,cAAc;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY;IACZ,UAAU,EAAE,WAAW,CAAC;IAExB,iBAAiB;IACjB,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,aAAa;IACb,aAAa,EAAE,mBAAmB,CAAC;IAEnC,aAAa;IACb,WAAW,EAAE,iBAAiB,CAAC;IAE/B,cAAc;IACd,KAAK,EAAE,WAAW,CAAC;IAEnB,WAAW;IACX,KAAK,EAAE,OAAO,CAAC;IAEf,eAAe;IACf,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY;IACZ,UAAU,CAAC,EAAE,WAAW,CAAC;IAEzB,iBAAiB;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC,aAAa;IACb,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE7C,aAAa;IACb,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEzC,cAAc;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7B,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS;IACT,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS;IACT,QAAQ,EAAE,GAAG,CAAC;IACd,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { GradeUnitBrowserConfig, CreateConfigOptions, ConfigValidationResult, ConfigPreset, ConfigChangeEvent } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 创建 GradeUnitBrowser 配置
|
|
4
|
+
* @param options 配置选项
|
|
5
|
+
* @returns 完整的配置对象
|
|
6
|
+
*/
|
|
7
|
+
export declare function createGradeUnitBrowserConfig(options?: CreateConfigOptions): GradeUnitBrowserConfig;
|
|
8
|
+
/**
|
|
9
|
+
* 验证配置的有效性
|
|
10
|
+
* @param config 要验证的配置
|
|
11
|
+
* @returns 验证结果
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateConfig(config: GradeUnitBrowserConfig): ConfigValidationResult;
|
|
14
|
+
/**
|
|
15
|
+
* 合并配置
|
|
16
|
+
* @param baseConfig 基础配置
|
|
17
|
+
* @param overrideConfig 覆盖配置
|
|
18
|
+
* @returns 合并后的配置
|
|
19
|
+
*/
|
|
20
|
+
export declare function mergeConfigs(baseConfig: GradeUnitBrowserConfig, overrideConfig: Partial<GradeUnitBrowserConfig>): GradeUnitBrowserConfig;
|
|
21
|
+
/**
|
|
22
|
+
* 获取预设配置
|
|
23
|
+
* @param preset 预设类型
|
|
24
|
+
* @returns 预设配置
|
|
25
|
+
*/
|
|
26
|
+
export declare function getPresetConfig(preset: ConfigPreset): GradeUnitBrowserConfig;
|
|
27
|
+
/**
|
|
28
|
+
* 克隆配置
|
|
29
|
+
* @param config 要克隆的配置
|
|
30
|
+
* @returns 克隆的配置
|
|
31
|
+
*/
|
|
32
|
+
export declare function cloneConfig(config: GradeUnitBrowserConfig): GradeUnitBrowserConfig;
|
|
33
|
+
/**
|
|
34
|
+
* 配置变更监听器类型
|
|
35
|
+
*/
|
|
36
|
+
export type ConfigChangeListener = (event: ConfigChangeEvent) => void;
|
|
37
|
+
/**
|
|
38
|
+
* 配置管理器
|
|
39
|
+
*/
|
|
40
|
+
export declare class ConfigManager {
|
|
41
|
+
private config;
|
|
42
|
+
private listeners;
|
|
43
|
+
constructor(initialConfig: GradeUnitBrowserConfig);
|
|
44
|
+
/**
|
|
45
|
+
* 获取当前配置
|
|
46
|
+
*/
|
|
47
|
+
getConfig(): GradeUnitBrowserConfig;
|
|
48
|
+
/**
|
|
49
|
+
* 更新配置
|
|
50
|
+
* @param updates 配置更新
|
|
51
|
+
*/
|
|
52
|
+
updateConfig(updates: Partial<GradeUnitBrowserConfig>): void;
|
|
53
|
+
/**
|
|
54
|
+
* 添加配置变更监听器
|
|
55
|
+
* @param listener 监听器函数
|
|
56
|
+
*/
|
|
57
|
+
addChangeListener(listener: ConfigChangeListener): void;
|
|
58
|
+
/**
|
|
59
|
+
* 移除配置变更监听器
|
|
60
|
+
* @param listener 监听器函数
|
|
61
|
+
*/
|
|
62
|
+
removeChangeListener(listener: ConfigChangeListener): void;
|
|
63
|
+
/**
|
|
64
|
+
* 触发配置变更事件
|
|
65
|
+
*/
|
|
66
|
+
private triggerChangeEvents;
|
|
67
|
+
/**
|
|
68
|
+
* 获取变更的配置键
|
|
69
|
+
*/
|
|
70
|
+
private getChangedKeys;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,mBAAwB,GAChC,sBAAsB,CA2CxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,sBAAsB,CA+DrF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,sBAAsB,EAClC,cAAc,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAC9C,sBAAsB,CAiBxB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,sBAAsB,CAyE5E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,sBAAsB,CAElF;AAaD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAEtE;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAA8B;gBAEnC,aAAa,EAAE,sBAAsB;IAIjD;;OAEG;IACH,SAAS,IAAI,sBAAsB;IAInC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAQ5D;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAIvD;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAO1D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { IDataSource, ApiDataSourceConfig, UpdateProgressParams, BatchLessonProgressUpdate } from './types';
|
|
2
|
+
import type { UserData, UserGradeUnitsProgressData } from '../types';
|
|
3
|
+
import type { ExploreItem } from '../components/MathWizHeader/MathWizHeader.types';
|
|
4
|
+
/**
|
|
5
|
+
* API数据源 - 基于现有courseService的实现
|
|
6
|
+
*/
|
|
7
|
+
export declare class ApiDataSource implements IDataSource {
|
|
8
|
+
private config;
|
|
9
|
+
constructor(config: ApiDataSourceConfig);
|
|
10
|
+
getUserGradeUnitsNav(gradeId: string, userId: string): Promise<UserGradeUnitsProgressData>;
|
|
11
|
+
getUserProfile(userId: string): Promise<UserData>;
|
|
12
|
+
getExploreMenu(): Promise<ExploreItem[]>;
|
|
13
|
+
updateLessonProgress(params: UpdateProgressParams): Promise<void>;
|
|
14
|
+
batchUpdateLessonProgress(unitId: string, progressUpdates: BatchLessonProgressUpdate[]): Promise<{
|
|
15
|
+
success: boolean;
|
|
16
|
+
results: Array<{
|
|
17
|
+
lessonId: string;
|
|
18
|
+
success: boolean;
|
|
19
|
+
status: string;
|
|
20
|
+
}>;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* 带重试机制的请求执行
|
|
24
|
+
*/
|
|
25
|
+
private withRetry;
|
|
26
|
+
/**
|
|
27
|
+
* 延迟函数
|
|
28
|
+
*/
|
|
29
|
+
private delay;
|
|
30
|
+
/**
|
|
31
|
+
* 获取配置信息
|
|
32
|
+
*/
|
|
33
|
+
getConfig(): ApiDataSourceConfig;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=api-data-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-data-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/api-data-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EAEnB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,QAAQ,EACR,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAEnF;;GAEG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAejC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAmB1F,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyBjD,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAsBxC,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjE,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,yBAAyB,EAAE,GAC3C,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAmBxG;;OAEG;YACW,SAAS;IAmBvB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,SAAS,IAAI,mBAAmB;CAGjC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { IDataSource, DataSourceConfig, DataSourceError, UpdateProgressParams, BatchLessonProgressUpdate } from './types';
|
|
2
|
+
import type { UserData, UserGradeUnitsProgressData } from '../types';
|
|
3
|
+
import type { ExploreItem } from '../components/MathWizHeader/MathWizHeader.types';
|
|
4
|
+
/**
|
|
5
|
+
* 自定义数据源基类
|
|
6
|
+
* 用户可以通过继承此类来创建自定义数据源
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class CustomDataSource implements IDataSource {
|
|
9
|
+
protected config: DataSourceConfig;
|
|
10
|
+
constructor(config: DataSourceConfig);
|
|
11
|
+
/**
|
|
12
|
+
* 获取用户年级单元导航数据 - 抽象方法,子类必须实现
|
|
13
|
+
*/
|
|
14
|
+
abstract getUserGradeUnitsNav(gradeId: string, userId: string): Promise<UserGradeUnitsProgressData>;
|
|
15
|
+
/**
|
|
16
|
+
* 获取用户个人信息 - 抽象方法,子类必须实现
|
|
17
|
+
*/
|
|
18
|
+
abstract getUserProfile(userId: string): Promise<UserData>;
|
|
19
|
+
/**
|
|
20
|
+
* 获取探索菜单数据 - 抽象方法,子类必须实现
|
|
21
|
+
*/
|
|
22
|
+
abstract getExploreMenu(): Promise<ExploreItem[]>;
|
|
23
|
+
/**
|
|
24
|
+
* 更新课时进度 - 抽象方法,子类必须实现
|
|
25
|
+
*/
|
|
26
|
+
abstract updateLessonProgress(params: UpdateProgressParams): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* 批量更新课时进度 - 抽象方法,子类必须实现
|
|
29
|
+
*/
|
|
30
|
+
abstract batchUpdateLessonProgress(unitId: string, progressUpdates: BatchLessonProgressUpdate[]): Promise<{
|
|
31
|
+
success: boolean;
|
|
32
|
+
results: Array<{
|
|
33
|
+
lessonId: string;
|
|
34
|
+
success: boolean;
|
|
35
|
+
status: string;
|
|
36
|
+
}>;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* 获取配置信息
|
|
40
|
+
*/
|
|
41
|
+
getConfig(): DataSourceConfig;
|
|
42
|
+
/**
|
|
43
|
+
* 创建数据源错误
|
|
44
|
+
*/
|
|
45
|
+
protected createError(message: string, code: string, originalError?: Error): DataSourceError;
|
|
46
|
+
/**
|
|
47
|
+
* 延迟函数
|
|
48
|
+
*/
|
|
49
|
+
protected delay(ms: number): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* 带超时的请求执行
|
|
52
|
+
*/
|
|
53
|
+
protected withTimeout<T>(operation: Promise<T>, timeoutMs?: number): Promise<T>;
|
|
54
|
+
/**
|
|
55
|
+
* 验证参数
|
|
56
|
+
*/
|
|
57
|
+
protected validateParams(params: Record<string, any>, requiredFields: string[]): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=custom-data-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-data-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/custom-data-source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,QAAQ,EACR,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAEnF;;;GAGG;AACH,8BAAsB,gBAAiB,YAAW,WAAW;IAC3D,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAEvB,MAAM,EAAE,gBAAgB;IAUpC;;OAEG;IACH,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAEnG;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E;;OAEG;IACH,QAAQ,CAAC,yBAAyB,CAChC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,yBAAyB,EAAE,GAC3C,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAExG;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAI7B;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,eAAe;IAI5F;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;cACa,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAYrF;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;CAUtF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ApiDataSource } from './api-data-source';
|
|
2
|
+
import { MockDataSource } from './mock-data-source';
|
|
3
|
+
import type { IDataSource, DataSourceFactoryOptions, ApiDataSourceConfig, MockDataSourceConfig } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* 数据源工厂 - 用于创建和管理数据源实例
|
|
6
|
+
*/
|
|
7
|
+
export declare class DataSourceFactory {
|
|
8
|
+
private static instances;
|
|
9
|
+
/**
|
|
10
|
+
* 创建数据源实例
|
|
11
|
+
* @param options 数据源选项
|
|
12
|
+
* @returns 数据源实例
|
|
13
|
+
*/
|
|
14
|
+
static createDataSource(options: DataSourceFactoryOptions): IDataSource;
|
|
15
|
+
/**
|
|
16
|
+
* 获取API数据源实例
|
|
17
|
+
* @param config API数据源配置
|
|
18
|
+
* @returns API数据源实例
|
|
19
|
+
*/
|
|
20
|
+
static createApiDataSource(config: ApiDataSourceConfig): ApiDataSource;
|
|
21
|
+
/**
|
|
22
|
+
* 获取模拟数据源实例
|
|
23
|
+
* @param config 模拟数据源配置
|
|
24
|
+
* @returns 模拟数据源实例
|
|
25
|
+
*/
|
|
26
|
+
static createMockDataSource(config?: Partial<MockDataSourceConfig>): MockDataSource;
|
|
27
|
+
/**
|
|
28
|
+
* 获取默认数据源实例
|
|
29
|
+
* 根据环境自动选择合适的数据源
|
|
30
|
+
*/
|
|
31
|
+
static createDefaultDataSource(): IDataSource;
|
|
32
|
+
/**
|
|
33
|
+
* 清除所有数据源实例缓存
|
|
34
|
+
*/
|
|
35
|
+
static clearCache(): void;
|
|
36
|
+
/**
|
|
37
|
+
* 获取缓存的实例数量
|
|
38
|
+
*/
|
|
39
|
+
static getCachedInstanceCount(): number;
|
|
40
|
+
/**
|
|
41
|
+
* 生成实例标识符
|
|
42
|
+
*/
|
|
43
|
+
private static getInstanceKey;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 创建数据源的快捷函数
|
|
47
|
+
*/
|
|
48
|
+
export declare function createDataSource(options: DataSourceFactoryOptions): IDataSource;
|
|
49
|
+
/**
|
|
50
|
+
* 创建API数据源的快捷函数
|
|
51
|
+
*/
|
|
52
|
+
export declare function createApiDataSource(config: ApiDataSourceConfig): ApiDataSource;
|
|
53
|
+
/**
|
|
54
|
+
* 创建模拟数据源的快捷函数
|
|
55
|
+
*/
|
|
56
|
+
export declare function createMockDataSource(config?: Partial<MockDataSourceConfig>): MockDataSource;
|
|
57
|
+
/**
|
|
58
|
+
* 创建默认数据源的快捷函数
|
|
59
|
+
*/
|
|
60
|
+
export declare function createDefaultDataSource(): IDataSource;
|
|
61
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/data-sources/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAExB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAuC;IAE/D;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW;IAyCvE;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa;IAOtE;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAAG,cAAc;IAUvF;;;OAGG;IACH,MAAM,CAAC,uBAAuB,IAAI,WAAW;IA2C7C;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAKzB;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,MAAM;IAIvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAE/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAE9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAAG,cAAc,CAE/F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,WAAW,CAErD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './api-data-source';
|
|
3
|
+
export * from './mock-data-source';
|
|
4
|
+
export * from './custom-data-source';
|
|
5
|
+
export * from './factory';
|
|
6
|
+
export { createDataSource, createApiDataSource, createMockDataSource, createDefaultDataSource, DataSourceFactory } from './factory';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-sources/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { courseData } from '../data/courseData';
|
|
2
|
+
import type { IDataSource, MockDataSourceConfig, UpdateProgressParams, BatchLessonProgressUpdate } from './types';
|
|
3
|
+
import type { UserData, UserGradeUnitsProgressData, Lesson } from '../types';
|
|
4
|
+
import type { ExploreItem } from '../components/MathWizHeader/MathWizHeader.types';
|
|
5
|
+
/**
|
|
6
|
+
* 模拟数据源 - 基于courseData.ts的实现
|
|
7
|
+
*/
|
|
8
|
+
export declare class MockDataSource implements IDataSource {
|
|
9
|
+
private config;
|
|
10
|
+
constructor(config: MockDataSourceConfig);
|
|
11
|
+
getUserGradeUnitsNav(gradeId: string, userId: string): Promise<UserGradeUnitsProgressData>;
|
|
12
|
+
getUserProfile(userId: string): Promise<UserData>;
|
|
13
|
+
getExploreMenu(): Promise<ExploreItem[]>;
|
|
14
|
+
updateLessonProgress(params: UpdateProgressParams): Promise<void>;
|
|
15
|
+
batchUpdateLessonProgress(unitId: string, progressUpdates: BatchLessonProgressUpdate[]): Promise<{
|
|
16
|
+
success: boolean;
|
|
17
|
+
results: Array<{
|
|
18
|
+
lessonId: string;
|
|
19
|
+
success: boolean;
|
|
20
|
+
status: string;
|
|
21
|
+
}>;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* 模拟网络延迟
|
|
25
|
+
*/
|
|
26
|
+
private simulateDelay;
|
|
27
|
+
/**
|
|
28
|
+
* 判断是否应该模拟错误
|
|
29
|
+
*/
|
|
30
|
+
private shouldSimulateError;
|
|
31
|
+
/**
|
|
32
|
+
* 获取配置信息
|
|
33
|
+
*/
|
|
34
|
+
getConfig(): MockDataSourceConfig;
|
|
35
|
+
/**
|
|
36
|
+
* 生成课程数据
|
|
37
|
+
*/
|
|
38
|
+
getCourseData(): typeof courseData;
|
|
39
|
+
/**
|
|
40
|
+
* 生成课时数据
|
|
41
|
+
*/
|
|
42
|
+
getLessonsData(): Record<string, Lesson[]>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=mock-data-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-data-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/mock-data-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EAEpB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,QAAQ,EACR,0BAA0B,EAC1B,MAAM,EACP,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAEnF;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAUlC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA6C1F,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuBjD,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBxC,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjE,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,yBAAyB,EAAE,GAC3C,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAwBxG;;OAEG;YACW,aAAa;IAM3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;OAEG;IACH,aAAa,IAAI,OAAO,UAAU;IAIlC;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAe3C"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { UserData } from '../types';
|
|
2
|
+
import type { ExploreItem } from '../components/MathWizHeader/MathWizHeader.types';
|
|
3
|
+
import type { UserGradeUnitsProgressData } from '../components/Sidebar/types';
|
|
4
|
+
/**
|
|
5
|
+
* 数据源接口定义
|
|
6
|
+
* 所有数据源实现都必须遵循此接口
|
|
7
|
+
*/
|
|
8
|
+
export interface IDataSource {
|
|
9
|
+
/**
|
|
10
|
+
* 获取用户年级单元导航数据
|
|
11
|
+
* @param gradeId 年级ID
|
|
12
|
+
* @param userId 用户ID
|
|
13
|
+
* @returns 用户年级单元进度数据
|
|
14
|
+
*/
|
|
15
|
+
getUserGradeUnitsNav(gradeId: string, userId: string): Promise<UserGradeUnitsProgressData>;
|
|
16
|
+
/**
|
|
17
|
+
* 获取用户个人信息
|
|
18
|
+
* @param userId 用户ID
|
|
19
|
+
* @returns 用户数据
|
|
20
|
+
*/
|
|
21
|
+
getUserProfile(userId: string): Promise<UserData>;
|
|
22
|
+
/**
|
|
23
|
+
* 获取探索菜单数据
|
|
24
|
+
* @returns 探索菜单项列表
|
|
25
|
+
*/
|
|
26
|
+
getExploreMenu(): Promise<ExploreItem[]>;
|
|
27
|
+
/**
|
|
28
|
+
* 更新课时进度
|
|
29
|
+
* @param params 进度更新参数
|
|
30
|
+
*/
|
|
31
|
+
updateLessonProgress(params: UpdateProgressParams): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* 批量更新课时进度
|
|
34
|
+
* @param unitId 单元ID
|
|
35
|
+
* @param progressUpdates 进度更新列表
|
|
36
|
+
*/
|
|
37
|
+
batchUpdateLessonProgress(unitId: string, progressUpdates: BatchLessonProgressUpdate[]): Promise<{
|
|
38
|
+
success: boolean;
|
|
39
|
+
results: Array<{
|
|
40
|
+
lessonId: string;
|
|
41
|
+
success: boolean;
|
|
42
|
+
status: string;
|
|
43
|
+
}>;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 进度更新参数
|
|
48
|
+
*/
|
|
49
|
+
export interface UpdateProgressParams {
|
|
50
|
+
courseId: string;
|
|
51
|
+
unitId: string;
|
|
52
|
+
lessonId: string;
|
|
53
|
+
status: 'completed' | 'in-progress' | 'not-started';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 批量课时进度更新
|
|
57
|
+
*/
|
|
58
|
+
export interface BatchLessonProgressUpdate {
|
|
59
|
+
lessonId: string;
|
|
60
|
+
status: 'not-started' | 'in-progress' | 'completed';
|
|
61
|
+
progress?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 数据源配置基类
|
|
65
|
+
*/
|
|
66
|
+
export interface DataSourceConfig {
|
|
67
|
+
/** 数据源名称,用于调试和日志 */
|
|
68
|
+
name: string;
|
|
69
|
+
/** 是否启用缓存 */
|
|
70
|
+
enableCaching?: boolean;
|
|
71
|
+
/** 缓存过期时间(毫秒) */
|
|
72
|
+
cacheTTL?: number;
|
|
73
|
+
/** 请求超时时间(毫秒) */
|
|
74
|
+
timeout?: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* API数据源配置
|
|
78
|
+
*/
|
|
79
|
+
export interface ApiDataSourceConfig extends DataSourceConfig {
|
|
80
|
+
/** API基础URL */
|
|
81
|
+
baseURL: string;
|
|
82
|
+
/** 认证token */
|
|
83
|
+
token: string;
|
|
84
|
+
/** 重试次数 */
|
|
85
|
+
retryCount?: number;
|
|
86
|
+
/** 重试延迟(毫秒) */
|
|
87
|
+
retryDelay?: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 模拟数据源配置
|
|
91
|
+
*/
|
|
92
|
+
export interface MockDataSourceConfig extends DataSourceConfig {
|
|
93
|
+
/** 模拟数据延迟(毫秒) */
|
|
94
|
+
delay?: number;
|
|
95
|
+
/** 是否模拟错误 */
|
|
96
|
+
simulateError?: boolean;
|
|
97
|
+
/** 错误概率(0-1) */
|
|
98
|
+
errorProbability?: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 数据源错误类型
|
|
102
|
+
*/
|
|
103
|
+
export declare class DataSourceError extends Error {
|
|
104
|
+
code: string;
|
|
105
|
+
originalError?: Error | undefined;
|
|
106
|
+
constructor(message: string, code: string, originalError?: Error | undefined);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 数据源工厂选项
|
|
110
|
+
*/
|
|
111
|
+
export interface DataSourceFactoryOptions {
|
|
112
|
+
/** 数据源类型 */
|
|
113
|
+
type: 'api' | 'mock' | 'custom';
|
|
114
|
+
/** 配置参数 */
|
|
115
|
+
config: DataSourceConfig;
|
|
116
|
+
/** 自定义数据源类(当type为custom时使用) */
|
|
117
|
+
customDataSourceClass?: new (config: DataSourceConfig) => IDataSource;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data-sources/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EAIT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAE3F;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElD;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzC;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE;;;;OAIG;IACH,yBAAyB,CACvB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,yBAAyB,EAAE,GAC3C,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC1G;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,IAAI,EAAE,MAAM;IACZ,aAAa,CAAC,EAAE,KAAK;gBAF5B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,KAAK,YAAA;CAK/B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,YAAY;IACZ,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChC,WAAW;IACX,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,qBAAqB,CAAC,EAAE,KAAK,MAAM,EAAE,gBAAgB,KAAK,WAAW,CAAC;CACvE"}
|