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
@@ -1,373 +0,0 @@
1
- /* 基础样式 */
2
- * {
3
- margin: 0;
4
- padding: 0;
5
- box-sizing: border-box;
6
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
7
- }
8
-
9
- body {
10
- background-color: #f0f2f5;
11
- color: #000000d9;
12
- font-size: 14px;
13
- line-height: 1.5;
14
- }
15
-
16
- .app-container {
17
- display: flex;
18
- flex-direction: column;
19
- min-height: 100vh;
20
- }
21
-
22
- /* 顶部导航栏 */
23
- .header {
24
- background-color: #fff;
25
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
26
- height: 48px;
27
- display: flex;
28
- align-items: center;
29
- padding: 0 16px;
30
- z-index: 100;
31
- }
32
-
33
- .logo {
34
- font-weight: bold;
35
- font-size: 18px;
36
- color: #1890ff;
37
- margin-right: 24px;
38
- display: flex;
39
- align-items: center;
40
- }
41
-
42
- .logo-icon {
43
- margin-right: 8px;
44
- width: 24px;
45
- height: 24px;
46
- background-color: #1890ff;
47
- border-radius: 50%;
48
- display: flex;
49
- align-items: center;
50
- justify-content: center;
51
- color: white;
52
- }
53
-
54
- .search {
55
- flex: 1;
56
- max-width: 320px;
57
- margin-right: 16px;
58
- }
59
-
60
- .search input {
61
- width: 100%;
62
- height: 32px;
63
- border-radius: 4px;
64
- border: 1px solid #d9d9d9;
65
- padding: 0 8px 0 32px;
66
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='16' height='16'%3E%3Cpath fill='%23999' d='M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 0 0-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E");
67
- background-repeat: no-repeat;
68
- background-position: 8px center;
69
- }
70
-
71
- .header-actions {
72
- display: flex;
73
- align-items: center;
74
- }
75
-
76
- .header-actions button {
77
- background: none;
78
- border: none;
79
- cursor: pointer;
80
- color: #595959;
81
- padding: 4px 8px;
82
- margin-left: 8px;
83
- border-radius: 4px;
84
- display: flex;
85
- align-items: center;
86
- }
87
-
88
- .header-actions button:hover {
89
- background-color: #f5f5f5;
90
- color: #1890ff;
91
- }
92
-
93
- .header-actions button i {
94
- margin-right: 4px;
95
- }
96
-
97
- /* 主内容区域 */
98
- .main-container {
99
- display: flex;
100
- flex: 1;
101
- overflow: hidden;
102
- }
103
-
104
- /* 左侧导航 */
105
- .sidebar {
106
- width: 250px;
107
- background-color: #fff;
108
- border-right: 1px solid #f0f0f0;
109
- display: flex;
110
- flex-direction: column;
111
- overflow-y: auto;
112
- }
113
-
114
- .create-feature {
115
- padding: 16px;
116
- }
117
-
118
- .create-feature button {
119
- width: 100%;
120
- height: 36px;
121
- background-color: #1890ff;
122
- color: white;
123
- border: none;
124
- border-radius: 4px;
125
- cursor: pointer;
126
- font-size: 14px;
127
- display: flex;
128
- align-items: center;
129
- justify-content: center;
130
- }
131
-
132
- .create-feature button:hover {
133
- background-color: #40a9ff;
134
- }
135
-
136
- .feature-list {
137
- flex: 1;
138
- padding: 0 8px;
139
- overflow-y: auto;
140
- }
141
-
142
- .feature-item {
143
- padding: 8px 12px;
144
- margin-bottom: 4px;
145
- border-radius: 4px;
146
- cursor: pointer;
147
- }
148
-
149
- .feature-item:hover {
150
- background-color: #f5f5f5;
151
- }
152
-
153
- .feature-item.active {
154
- background-color: #e6f7ff;
155
- }
156
-
157
- .feature-link {
158
- display: flex;
159
- justify-content: space-between;
160
- align-items: center;
161
- text-decoration: none;
162
- color: #595959;
163
- }
164
-
165
- .feature-item.active .feature-link {
166
- color: #1890ff;
167
- }
168
-
169
- .feature-name {
170
- font-size: 14px;
171
- }
172
-
173
- .feature-count {
174
- background-color: #f0f0f0;
175
- color: #8c8c8c;
176
- font-size: 12px;
177
- padding: 2px 6px;
178
- border-radius: 10px;
179
- min-width: 20px;
180
- text-align: center;
181
- }
182
-
183
- .feature-item.active .feature-count {
184
- background-color: #1890ff;
185
- color: white;
186
- }
187
-
188
- /* 右侧内容区域 */
189
- .content {
190
- flex: 1;
191
- padding: 16px;
192
- overflow-y: auto;
193
- }
194
-
195
- .app-layout {
196
- min-height: 100vh;
197
- display: flex;
198
- flex-direction: column;
199
- }
200
-
201
- .app-header {
202
- position: fixed;
203
- z-index: 100;
204
- width: 100%;
205
- display: flex;
206
- justify-content: space-between;
207
- align-items: center;
208
- padding: 0 24px;
209
- height: 64px;
210
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
211
- }
212
-
213
- .header-left {
214
- display: flex;
215
- align-items: center;
216
- }
217
-
218
- .logo-container {
219
- display: flex;
220
- align-items: center;
221
- margin-right: 24px;
222
- }
223
-
224
- .logo-icon-group {
225
- position: relative;
226
- width: 32px;
227
- height: 32px;
228
- margin-right: 12px;
229
- display: flex;
230
- align-items: center;
231
- justify-content: center;
232
- }
233
-
234
- .logo-icon {
235
- font-size: 24px;
236
- color: #1890ff;
237
- }
238
-
239
- .logo-icon-primary {
240
- position: relative;
241
- z-index: 2;
242
- font-size: 22px;
243
- display: none;
244
- }
245
-
246
- .logo-icon-secondary {
247
- position: absolute;
248
- right: -6px;
249
- font-size: 16px;
250
- color: #52c41a;
251
- background: white;
252
- border-radius: 50%;
253
- box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
254
- padding: 2px;
255
- }
256
-
257
- .logo-text {
258
- color: #1890ff;
259
- font-size: 18px;
260
- font-weight: 600;
261
- white-space: nowrap;
262
- background: linear-gradient(135deg, #1890ff, #52c41a);
263
- -webkit-background-clip: text;
264
- -webkit-text-fill-color: transparent;
265
- letter-spacing: -0.5px;
266
- }
267
-
268
- .collapse-button {
269
- display: flex;
270
- align-items: center;
271
- justify-content: center;
272
- }
273
-
274
- .header-right {
275
- display: flex;
276
- align-items: center;
277
- }
278
-
279
- .app-sider {
280
- overflow: auto;
281
- height: 100vh;
282
- position: fixed;
283
- left: 0;
284
- top: 64px;
285
- bottom: 0;
286
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
287
- z-index: 99;
288
- transition: all 0.2s;
289
- }
290
-
291
- .app-content-wrapper {
292
- margin-top: 64px;
293
- margin-left: 220px;
294
- padding: 0 24px 24px;
295
- transition: all 0.2s;
296
- }
297
-
298
- .app-content {
299
- padding: 24px;
300
- overflow: initial;
301
- min-height: calc(100vh - 64px - 48px - 32px);
302
- transition: all 0.3s;
303
- }
304
-
305
- .page-header {
306
- margin-bottom: 16px;
307
- }
308
-
309
- .app-breadcrumb {
310
- font-size: 14px;
311
- }
312
-
313
- /* 当侧边栏折叠时的样式调整 */
314
- .app-sider.ant-layout-sider-collapsed + .app-content-wrapper {
315
- margin-left: 80px;
316
- }
317
-
318
- /* 菜单项样式定制 */
319
- .ant-menu-item {
320
- border-radius: 4px;
321
- margin: 4px 0 !important;
322
- }
323
-
324
- .ant-menu-item-selected {
325
- font-weight: 500;
326
- }
327
-
328
- .ant-menu-inline .ant-menu-item::after {
329
- display: none;
330
- }
331
-
332
- /* 移动端响应式调整 */
333
- @media (max-width: 768px) {
334
- .app-sider {
335
- position: absolute;
336
- z-index: 100;
337
- box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
338
- }
339
-
340
- .app-content-wrapper {
341
- margin-left: 0 !important;
342
- padding: 0 16px 16px;
343
- }
344
-
345
- .app-content {
346
- padding: 16px;
347
- }
348
-
349
- .logo-text {
350
- display: none;
351
- }
352
-
353
- .app-header {
354
- padding: 0 16px;
355
- }
356
- }
357
-
358
- /* 暗色主题适配 */
359
- .dark-theme .app-header,
360
- .dark-theme .app-sider {
361
- background-color: #141414 !important;
362
- border-color: #303030 !important;
363
- }
364
-
365
- .dark-theme .logo-text,
366
- .dark-theme .logo-icon-primary {
367
- color: #177ddc;
368
- }
369
-
370
- .dark-theme .logo-icon-secondary {
371
- color: #49aa19;
372
- background: #141414;
373
- }