whistle.mock-plugins 1.3.1 → 1.4.0-beta.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 (70) hide show
  1. package/VERSION.md +29 -0
  2. package/app/cgi-bin/interfaces.js +2 -0
  3. package/app/cgi-bin/settings.js +1 -0
  4. package/app/cgi-bin/stats.js +22 -12
  5. package/app/cgi-bin/webdav.js +56 -0
  6. package/app/public/index.html +1 -1
  7. package/app/public/js/11.index.js +2 -0
  8. package/app/public/js/11.index.js.LICENSE.txt +5 -0
  9. package/app/public/js/704.index.js +2 -0
  10. package/app/public/js/704.index.js.LICENSE.txt +1 -0
  11. package/app/public/js/798.index.js +2 -0
  12. package/app/public/js/798.index.js.LICENSE.txt +53 -0
  13. package/app/public/js/807.index.js +2 -0
  14. package/app/public/js/807.index.js.LICENSE.txt +1 -0
  15. package/app/public/js/968.index.js +2 -0
  16. package/app/public/js/968.index.js.LICENSE.txt +12 -0
  17. package/app/public/js/index.js +1 -1
  18. package/app/public/js/index.js.LICENSE.txt +0 -173
  19. package/lib/routes/settings.js +1 -0
  20. package/lib/webdav-sync.js +806 -0
  21. package/package.json +9 -2
  22. package/API.md +0 -247
  23. package/COLUMN_RESIZE_IMPLEMENTATION.md +0 -162
  24. package/FEATURE_ENHANCEMENT.md +0 -157
  25. package/TEST_GUIDE.md +0 -156
  26. package/data/features.json +0 -1
  27. package/data/interfaces.json +0 -1
  28. package/index.html +0 -52
  29. package/initialize.js +0 -32
  30. package/public/bundle.js +0 -2
  31. package/public/bundle.js.LICENSE.txt +0 -38
  32. package/public/index.html +0 -1
  33. package/public/plugin.mock-plugin.html +0 -14
  34. package/rules.txt +0 -22
  35. package/ui/src/App.css +0 -173
  36. package/ui/src/components/AppLayout.js +0 -407
  37. package/ui/src/components/FeatureCard.js +0 -58
  38. package/ui/src/components/KeyboardShortcutsHelp.js +0 -58
  39. package/ui/src/components/Layout.js +0 -94
  40. package/ui/src/components/MainNav.js +0 -42
  41. package/ui/src/components/PageContainer.js +0 -16
  42. package/ui/src/components/VersionModal.js +0 -99
  43. package/ui/src/components/interface-management/DataManagementDrawer.js +0 -115
  44. package/ui/src/components/interface-management/DataManagementModal.js +0 -110
  45. package/ui/src/components/interface-management/InterfaceTestModal.js +0 -313
  46. package/ui/src/components/interface-management/PreviewModal.js +0 -48
  47. package/ui/src/components/interface-management/README.md +0 -184
  48. package/ui/src/components/interface-management/RealResponseRecorder.js +0 -165
  49. package/ui/src/components/interface-management/ResponseContentEditor.js +0 -645
  50. package/ui/src/components/interface-management/constants.js +0 -36
  51. package/ui/src/components/interface-management/index.js +0 -7
  52. package/ui/src/components/interface-management/utils.js +0 -103
  53. package/ui/src/hooks/useKeyboardShortcuts.js +0 -99
  54. package/ui/src/index.html +0 -14
  55. package/ui/src/index.js +0 -50
  56. package/ui/src/pages/InterfaceManagementV2.js +0 -2351
  57. package/ui/src/pages/MockDataV2.js +0 -1089
  58. package/ui/src/pages/Settings.js +0 -299
  59. package/ui/src/pages/Sniffer.js +0 -521
  60. package/ui/src/pages/Stats.js +0 -288
  61. package/ui/src/services/del_api.js +0 -192
  62. package/ui/src/styles/app-layout.css +0 -373
  63. package/ui/src/styles/cyber-theme.css +0 -1234
  64. package/ui/src/styles/earth-theme.css +0 -618
  65. package/ui/src/styles/global.css +0 -224
  66. package/ui/src/styles/interface-management.css +0 -1321
  67. package/ui/src/styles/mock-data.css +0 -1185
  68. package/ui/src/styles/settings.css +0 -252
  69. package/ui/src/styles/version-modal.css +0 -116
  70. package/webpack.config.js +0 -54
package/TEST_GUIDE.md DELETED
@@ -1,156 +0,0 @@
1
- # 列宽拖动功能测试指南
2
-
3
- ## 测试环境
4
- - ✅ 依赖已安装(react-resizable@3.0.5)
5
- - ✅ 项目已构建(2025-11-06 15:03)
6
- - ✅ Whistle 服务已重启
7
-
8
- ## 访问地址
9
- 打开浏览器访问:http://127.0.0.1:8899/ 或 http://10.181.134.20:8899/
10
-
11
- ## 测试步骤
12
-
13
- ### 1. 进入接口管理页面
14
- 1. 在 Whistle 管理界面中找到 mock-plugin 插件
15
- 2. 点击进入接口管理页面(InterfaceManagementV2)
16
-
17
- ### 2. 测试列宽拖动功能
18
-
19
- #### 测试点 1:拖动调整列宽
20
- 1. 找到表格中的"当前响应"列
21
- 2. 将鼠标移动到"当前响应"列标题的右边缘
22
- 3. **预期结果**:光标应该变为调整大小的图标(↔️)
23
- 4. 按住鼠标左键并拖动
24
- 5. **预期结果**:
25
- - 列宽随鼠标移动而变化
26
- - 拖动手柄区域显示蓝色高亮
27
- - 列内的下拉框(Select)宽度自动调整
28
-
29
- #### 测试点 2:Select 下拉框自适应
30
- 1. 调整"当前响应"列的宽度(拖宽或拖窄)
31
- 2. 观察列内的下拉框
32
- 3. **预期结果**:
33
- - 下拉框宽度始终占满整列
34
- - 下拉框内容正常显示,不会溢出
35
- - 点击下拉框,下拉菜单正确显示
36
-
37
- #### 测试点 3:列宽持久化
38
- 1. 调整"当前响应"列的宽度到一个特定值(如 250px)
39
- 2. 刷新浏览器页面(F5 或 Cmd+R)
40
- 3. **预期结果**:
41
- - 页面重新加载后,列宽保持为调整后的值
42
- - 不会恢复到默认的 180px
43
-
44
- #### 测试点 4:重置列宽
45
- 1. 调整"当前响应"列的宽度
46
- 2. 点击表格右上角的"列设置"按钮
47
- 3. 点击"重置"按钮
48
- 4. **预期结果**:
49
- - 列宽恢复到默认值 180px
50
- - 其他列配置也恢复到默认状态
51
-
52
- #### 测试点 5:拖动视觉反馈
53
- 1. 将鼠标悬停在"当前响应"列的右边缘
54
- 2. **预期结果**:
55
- - 显示一个灰色的竖线指示器
56
- - 鼠标悬停时,指示器变为蓝色
57
- - 拖动区域有半透明蓝色背景
58
-
59
- ### 3. 边界情况测试
60
-
61
- #### 测试点 6:最小宽度
62
- 1. 尝试将列宽拖到非常窄
63
- 2. **预期结果**:
64
- - 列宽可以调整到很小(当前没有硬性限制)
65
- - Select 下拉框仍然可以正常点击和使用
66
-
67
- #### 测试点 7:最大宽度
68
- 1. 尝试将列宽拖到非常宽
69
- 2. **预期结果**:
70
- - 列宽可以调整到很宽(当前没有硬性限制)
71
- - 不会影响其他列的显示
72
-
73
- #### 测试点 8:多次调整
74
- 1. 多次来回拖动调整列宽
75
- 2. **预期结果**:
76
- - 每次调整都流畅响应
77
- - 没有卡顿或延迟
78
- - localStorage 正确更新
79
-
80
- ### 4. 功能交互测试
81
-
82
- #### 测试点 9:与其他功能的兼容性
83
- 1. 调整列宽后,测试以下功能:
84
- - 切换响应数据(点击下拉框选择不同的响应)
85
- - 排序功能(点击列标题排序)
86
- - 分页功能(切换页码)
87
- - 搜索功能(搜索接口)
88
- - 分组筛选(选择不同分组)
89
- 2. **预期结果**:
90
- - 所有功能正常工作
91
- - 列宽保持不变
92
-
93
- #### 测试点 10:兼容旧数据
94
- 1. 清除浏览器的 localStorage(开发者工具 > Application > Local Storage)
95
- 2. 刷新页面
96
- 3. **预期结果**:
97
- - 页面正常加载
98
- - "当前响应"列显示默认宽度 180px
99
- - 没有控制台错误
100
-
101
- ## 已知问题和限制
102
-
103
- 1. **没有最小/最大宽度限制**:当前实现允许列宽调整到任意大小
104
- 2. **仅支持"当前响应"列**:其他列暂不支持拖动调整
105
- 3. **桌面端优化**:主要针对鼠标操作,触摸屏可能需要额外配置
106
-
107
- ## 测试结果记录
108
-
109
- ### 测试环境信息
110
- - 浏览器:__________
111
- - 操作系统:__________
112
- - 测试日期:__________
113
-
114
- ### 测试结果
115
- - [ ] 测试点 1:拖动调整列宽
116
- - [ ] 测试点 2:Select 下拉框自适应
117
- - [ ] 测试点 3:列宽持久化
118
- - [ ] 测试点 4:重置列宽
119
- - [ ] 测试点 5:拖动视觉反馈
120
- - [ ] 测试点 6:最小宽度
121
- - [ ] 测试点 7:最大宽度
122
- - [ ] 测试点 8:多次调整
123
- - [ ] 测试点 9:与其他功能的兼容性
124
- - [ ] 测试点 10:兼容旧数据
125
-
126
- ### 发现的问题
127
- (如有问题,请在此记录)
128
-
129
- ---
130
-
131
- ## 调试技巧
132
-
133
- ### 查看 localStorage 中的列宽配置
134
- 1. 打开浏览器开发者工具(F12)
135
- 2. 切换到 Console 标签
136
- 3. 输入以下命令查看配置:
137
- ```javascript
138
- JSON.parse(localStorage.getItem('interface-table-config'))
139
- ```
140
-
141
- ### 手动设置列宽
142
- ```javascript
143
- const config = JSON.parse(localStorage.getItem('interface-table-config'));
144
- config.columnWidths.currentResponse = 250;
145
- localStorage.setItem('interface-table-config', JSON.stringify(config));
146
- location.reload();
147
- ```
148
-
149
- ### 清除列宽配置
150
- ```javascript
151
- const config = JSON.parse(localStorage.getItem('interface-table-config'));
152
- delete config.columnWidths;
153
- localStorage.setItem('interface-table-config', JSON.stringify(config));
154
- location.reload();
155
- ```
156
-
@@ -1 +0,0 @@
1
- {"features":[]}
@@ -1 +0,0 @@
1
- {"interfaces":[]}
package/index.html DELETED
@@ -1,52 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta http-equiv="refresh" content="0;url=/" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Whistle Mock 插件</title>
8
- <style>
9
- body {
10
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
11
- display: flex;
12
- justify-content: center;
13
- align-items: center;
14
- height: 100vh;
15
- margin: 0;
16
- background-color: #f5f5f5;
17
- flex-direction: column;
18
- }
19
- .container {
20
- text-align: center;
21
- padding: 2rem;
22
- background-color: white;
23
- border-radius: 8px;
24
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
25
- }
26
- h1 {
27
- color: #1890ff;
28
- }
29
- p {
30
- margin: 1rem 0;
31
- }
32
- a {
33
- color: #1890ff;
34
- text-decoration: none;
35
- }
36
- a:hover {
37
- text-decoration: underline;
38
- }
39
- </style>
40
- </head>
41
- <body>
42
- <div class="container">
43
- <h1>Whistle Mock 插件</h1>
44
- <p>正在重定向到插件主页...</p>
45
- <p>如果您没有被自动重定向,请<a href="/">点击此处</a>访问插件界面。</p>
46
- </div>
47
- <script>
48
- // 确保重定向到正确的UI路径
49
- window.location.href = '/';
50
- </script>
51
- </body>
52
- </html>
package/initialize.js DELETED
@@ -1,32 +0,0 @@
1
- const fs = require('fs-extra');
2
- const path = require('path');
3
- const storage = require('./lib/storage');
4
- const dataManager = require('./lib/dataManager');
5
- const ruleManager = require('./lib/ruleManager');
6
-
7
- module.exports = options => {
8
- const baseDir = process.env.WHISTLE_PLUGIN_DATA_DIR || storage.DATA_DIR;
9
-
10
- // 初始化数据目录
11
- if (!fs.existsSync(baseDir)) {
12
- fs.ensureDirSync(baseDir);
13
- }
14
-
15
- // 初始化数据管理器
16
- dataManager.init({
17
- baseDir,
18
- log: (message) => console.log(`[whistle.mock-plugin] ${message}`)
19
- });
20
-
21
- // 初始化规则管理器
22
- ruleManager.init({
23
- server: null, // 将在具体server创建时赋值
24
- config: {
25
- baseDir
26
- },
27
- dataManager,
28
- log: (message) => console.log(`[whistle.mock-plugin] ${message}`)
29
- });
30
-
31
- console.log('[whistle.mock-plugin] 插件初始化完成');
32
- };