@ohos-cpf/3rdloop 0.0.4 → 0.0.5

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 (43) hide show
  1. package/README.md +119 -128
  2. package/lib/cli.js +25 -0
  3. package/lib/serve.js +268 -0
  4. package/lib/update.js +46 -6
  5. package/lib/web-ext.js +454 -0
  6. package/lib/web.js +664 -0
  7. package/package.json +2 -1
  8. package/vendor/Server/Skills/arkts-code-use/SKILL.md +270 -0
  9. package/vendor/Server/Skills/arkts-code-use/assets/TEMPLATES.md +367 -0
  10. package/vendor/Server/Skills/arkts-code-use/references/API_VERIFICATION.md +144 -0
  11. package/vendor/Server/Skills/arkts-code-use/references/ARKTS_RULES.md +240 -0
  12. package/vendor/Server/Skills/arkts-code-use/references/CODE_PATTERNS.md +431 -0
  13. package/vendor/Server/Skills/arkts-code-use/references/SYNTAX_CHECK_GUIDE.md +164 -0
  14. package/vendor/Server/Skills/arkts-code-use/scripts/verify-arkts.cjs +428 -0
  15. package/vendor/Server/Skills/gitcode-repo-fork/SKILL.md +310 -0
  16. package/vendor/Server/Skills/gitcode-repo-fork/assets/FORK_REPORT_TEMPLATE.md +113 -0
  17. package/vendor/Server/Skills/gitcode-repo-fork/references/FORK_DECISION_GUIDE.md +124 -0
  18. package/vendor/Server/Skills/gitcode-repo-fork/references/GITCODE_FORK_API.md +95 -0
  19. package/vendor/Server/Skills/gitcode-repo-fork/scripts/gitcode-fork.cjs +285 -0
  20. package/vendor/VERSION +3 -3
  21. package/web/css/arktslibrarycheck.css +322 -0
  22. package/web/css/codecheck.css +464 -0
  23. package/web/css/flutterlibrarycheck.css +322 -0
  24. package/web/css/knowledge.css +332 -0
  25. package/web/css/loop.css +578 -0
  26. package/web/css/md-reader.css +240 -0
  27. package/web/css/rnlibrarycheck.css +322 -0
  28. package/web/css/theme.css +702 -0
  29. package/web/index.html +713 -0
  30. package/web/js/arktslibrarycheck.js +1413 -0
  31. package/web/js/codecheck.js +1039 -0
  32. package/web/js/flutterlibrarycheck.js +1364 -0
  33. package/web/js/health.js +69 -0
  34. package/web/js/knowledge.js +358 -0
  35. package/web/js/loop.js +1102 -0
  36. package/web/js/md-reader.js +435 -0
  37. package/web/js/navigation.js +238 -0
  38. package/web/js/rnlibrarycheck.js +1378 -0
  39. package/web/js/stats.js +110 -0
  40. package/web/js/theme.js +46 -0
  41. package/web/js/utils.js +228 -0
  42. package/web/knowledge.html +146 -0
  43. package/web/loop.html +219 -0
@@ -0,0 +1,464 @@
1
+ /* ════════════════════════════════════════════════════════════════════
2
+ * codecheck.css — PR 代码检视面板专用样式
3
+ *
4
+ * 依赖:theme.css(CSS 变量 / 按钮 / 表单 / 弹窗基础样式)
5
+ * ════════════════════════════════════════════════════════════════════ */
6
+
7
+ /* ─── 面板布局 ───────────────────────────────────────────────────────── */
8
+ #p-codecheck .panel-pad {
9
+ padding: 20px 24px;
10
+ overflow-y: auto;
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: 16px;
14
+ }
15
+
16
+ /* ─── SKILL 介绍区域 ─────────────────────────────────────────────────── */
17
+ .cc-skill-header {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 10px;
21
+ margin-bottom: 10px;
22
+ }
23
+ .cc-skill-icon { font-size: 18px; }
24
+ .cc-skill-title {
25
+ font-size: 15px;
26
+ font-weight: 600;
27
+ color: var(--text);
28
+ }
29
+
30
+ .cc-skill-grid {
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: 10px;
34
+ }
35
+
36
+ .cc-skill-card {
37
+ background: var(--card);
38
+ border: 1px solid var(--border);
39
+ border-radius: 8px;
40
+ overflow: hidden;
41
+ transition: border-color 0.15s;
42
+ }
43
+ .cc-skill-card:hover { border-color: var(--blue); }
44
+
45
+ .cc-skill-card-header {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: space-between;
49
+ padding: 10px 14px;
50
+ border-bottom: 1px solid var(--border-light);
51
+ }
52
+
53
+ .cc-skill-badge {
54
+ font-size: 10px;
55
+ font-weight: 700;
56
+ font-family: var(--mono);
57
+ padding: 2px 7px;
58
+ border-radius: 4px;
59
+ flex-shrink: 0;
60
+ }
61
+ .cc-skill-name {
62
+ font-size: 13px;
63
+ font-weight: 600;
64
+ color: var(--text);
65
+ }
66
+ .cc-skill-card-desc {
67
+ font-size: 12px;
68
+ color: var(--text2);
69
+ padding: 8px 14px;
70
+ line-height: 1.6;
71
+ }
72
+
73
+ /* ─── 提交表单 ───────────────────────────────────────────────────────── */
74
+ .cc-form-card {
75
+ background: var(--card);
76
+ border: 1px solid var(--border);
77
+ border-radius: 8px;
78
+ padding: 16px;
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 14px;
82
+ }
83
+
84
+ /* ─── 历史标签行 ─────────────────────────────────────────────────────── */
85
+ .cc-history-label-row {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: space-between;
89
+ margin-bottom: 8px;
90
+ }
91
+ .cc-history-label {
92
+ font-size: 12px;
93
+ font-weight: 600;
94
+ color: var(--text2);
95
+ letter-spacing: 0.05em;
96
+ text-transform: uppercase;
97
+ }
98
+ .cc-task-count {
99
+ font-size: 12px;
100
+ font-family: var(--mono);
101
+ color: var(--text3);
102
+ }
103
+
104
+ /* ─── 任务列表 ───────────────────────────────────────────────────────── */
105
+ .cc-tasks-list {
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 8px;
109
+ }
110
+
111
+ /* ─── 任务卡片 ───────────────────────────────────────────────────────── */
112
+ .cc-task-card {
113
+ background: var(--card);
114
+ border: 1px solid var(--border);
115
+ border-radius: 8px;
116
+ border-left: 3px solid var(--text3);
117
+ overflow: hidden;
118
+ transition: border-color 0.2s, box-shadow 0.2s;
119
+ }
120
+ .cc-task-card.running {
121
+ border-left-color: var(--blue);
122
+ box-shadow: 0 1px 12px rgba(0,113,227,0.06);
123
+ }
124
+ .cc-task-card.cc-done { border-left-color: var(--green); }
125
+ .cc-task-card.cc-failed { border-left-color: var(--red); }
126
+ .cc-task-card.cc-cancelled { border-left-color: var(--gray); }
127
+
128
+ /* ─── 卡片头部 ───────────────────────────────────────────────────────── */
129
+ .cc-card-header {
130
+ display: flex;
131
+ align-items: center;
132
+ gap: 8px;
133
+ padding: 10px 14px;
134
+ cursor: pointer;
135
+ user-select: none;
136
+ transition: background 0.15s;
137
+ flex-wrap: wrap;
138
+ }
139
+ .cc-card-header:hover { background: rgba(0,113,227,0.04); }
140
+ [data-theme="dark"] .cc-card-header:hover { background: rgba(77,140,247,0.05); }
141
+ .cc-task-card.open .cc-card-header { border-bottom: 1px solid var(--border-light); }
142
+
143
+ .cc-chevron {
144
+ font-size: 10px;
145
+ color: var(--text3);
146
+ transition: transform 0.2s;
147
+ flex-shrink: 0;
148
+ }
149
+ .cc-task-card.open .cc-chevron { transform: rotate(90deg); }
150
+
151
+ .cc-run-dot {
152
+ width: 7px;
153
+ height: 7px;
154
+ border-radius: 50%;
155
+ background: var(--text3);
156
+ flex-shrink: 0;
157
+ transition: background 0.2s;
158
+ }
159
+ .cc-task-card.running .cc-run-dot {
160
+ background: var(--blue);
161
+ animation: cc-blink 1.5s ease-in-out infinite;
162
+ }
163
+ .cc-task-card.cc-done .cc-run-dot { background: var(--green); }
164
+ .cc-task-card.cc-failed .cc-run-dot { background: var(--red); }
165
+ .cc-task-card.cc-cancelled .cc-run-dot { background: var(--gray); }
166
+
167
+ @keyframes cc-blink {
168
+ 0%, 100% { opacity: 1; }
169
+ 50% { opacity: 0.3; }
170
+ }
171
+
172
+ .cc-lib {
173
+ font-family: var(--mono);
174
+ font-size: 12px;
175
+ color: var(--text);
176
+ font-weight: 500;
177
+ /* 保证标题完整显示:不截断、不省略,过长时自动换行 */
178
+ white-space: normal;
179
+ word-break: break-all;
180
+ overflow-wrap: anywhere;
181
+ max-width: 100%;
182
+ min-width: 0;
183
+ flex: 1 1 auto;
184
+ align-self: center;
185
+ line-height: 1.5;
186
+ }
187
+
188
+ .cc-type-badge {
189
+ font-size: 10px;
190
+ padding: 2px 7px;
191
+ border-radius: 10px;
192
+ font-family: var(--mono);
193
+ font-weight: 600;
194
+ flex-shrink: 0;
195
+ }
196
+
197
+ .cc-spacer { flex: 1 1 0; }
198
+
199
+ .cc-time {
200
+ font-size: 11px;
201
+ color: var(--text3);
202
+ font-family: var(--mono);
203
+ flex-shrink: 0;
204
+ }
205
+
206
+ .cc-elapsed {
207
+ font-size: 11px;
208
+ color: var(--text3);
209
+ font-family: var(--mono);
210
+ flex-shrink: 0;
211
+ }
212
+
213
+ /* ─── 阶段徽章 ───────────────────────────────────────────────────────── */
214
+ .cc-stage-badge {
215
+ display: inline-flex;
216
+ align-items: center;
217
+ gap: 5px;
218
+ padding: 3px 9px;
219
+ border-radius: 20px;
220
+ font-size: 11px;
221
+ font-weight: 700;
222
+ font-family: var(--mono);
223
+ white-space: nowrap;
224
+ flex-shrink: 0;
225
+ }
226
+ .cc-stage-badge::before {
227
+ content: '';
228
+ width: 5px;
229
+ height: 5px;
230
+ border-radius: 50%;
231
+ background: currentColor;
232
+ flex-shrink: 0;
233
+ }
234
+
235
+ .s-pending { background: rgba(142,142,147,0.15); color: var(--gray); }
236
+ .s-ready { background: rgba(0,113,227,0.12); color: var(--blue); }
237
+ .s-running { background: rgba(0,113,227,0.12); color: var(--blue); }
238
+ .s-completed { background: rgba(52,199,89,0.12); color: var(--green); }
239
+ .s-failed { background: rgba(255,59,48,0.12); color: var(--red); }
240
+ .s-aborted { background: rgba(142,142,147,0.15); color: var(--gray); }
241
+ .s-error { background: rgba(255,59,48,0.12); color: var(--red); }
242
+ .s-idle { background: rgba(142,142,147,0.15); color: var(--gray); }
243
+ .s-loaded { background: rgba(0,113,227,0.12); color: var(--blue); }
244
+ .s-deadlocked { background: rgba(255,59,48,0.12); color: var(--red); }
245
+
246
+ [data-theme="dark"] .s-pending { background: rgba(83,91,122,0.2); color: var(--text3); }
247
+ [data-theme="dark"] .s-ready { background: rgba(77,140,247,0.15); color: var(--blue); }
248
+ [data-theme="dark"] .s-running { background: rgba(77,140,247,0.15); color: var(--blue); }
249
+ [data-theme="dark"] .s-completed { background: rgba(58,181,113,0.15); color: var(--green); }
250
+ [data-theme="dark"] .s-failed { background: rgba(223,69,69,0.15); color: var(--red); }
251
+ [data-theme="dark"] .s-aborted { background: rgba(83,91,122,0.2); color: var(--text3); }
252
+ [data-theme="dark"] .s-error { background: rgba(223,69,69,0.15); color: var(--red); }
253
+ [data-theme="dark"] .s-idle { background: rgba(83,91,122,0.2); color: var(--text3); }
254
+ [data-theme="dark"] .s-loaded { background: rgba(77,140,247,0.15); color: var(--blue); }
255
+ [data-theme="dark"] .s-deadlocked { background: rgba(223,69,69,0.15); color: var(--red); }
256
+
257
+ /* ─── 合入建议分级徽章 ───────────────────────────────────────────────── */
258
+ .cc-merge-badge {
259
+ display: inline-flex;
260
+ align-items: center;
261
+ gap: 4px;
262
+ padding: 3px 10px;
263
+ border-radius: 20px;
264
+ font-size: 11px;
265
+ font-weight: 700;
266
+ font-family: var(--mono);
267
+ white-space: nowrap;
268
+ flex-shrink: 0;
269
+ }
270
+
271
+ /* ─── 取消按钮 ───────────────────────────────────────────────────────── */
272
+ .cc-stop-btn {
273
+ display: none;
274
+ padding: 3px 10px;
275
+ border-radius: 5px;
276
+ font-size: 11px;
277
+ font-weight: 600;
278
+ background: rgba(255,59,48,0.1);
279
+ color: var(--red);
280
+ border: 1px solid rgba(255,59,48,0.3);
281
+ cursor: pointer;
282
+ white-space: nowrap;
283
+ flex-shrink: 0;
284
+ transition: all 0.15s;
285
+ }
286
+ .cc-stop-btn:hover:not(:disabled) {
287
+ background: rgba(255,59,48,0.2);
288
+ border-color: rgba(255,59,48,0.5);
289
+ }
290
+ .cc-task-card.running .cc-stop-btn { display: inline-flex; }
291
+
292
+ /* ─── 卡片内容 ───────────────────────────────────────────────────────── */
293
+ .cc-card-body {
294
+ padding: 14px;
295
+ display: flex;
296
+ flex-direction: column;
297
+ gap: 12px;
298
+ }
299
+
300
+ .cc-meta {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: 6px;
304
+ font-size: 12px;
305
+ overflow: hidden;
306
+ }
307
+ .cc-meta-label {
308
+ color: var(--text3);
309
+ flex-shrink: 0;
310
+ }
311
+ .cc-meta-value {
312
+ color: var(--text2);
313
+ white-space: nowrap;
314
+ overflow: hidden;
315
+ text-overflow: ellipsis;
316
+ }
317
+
318
+ /* ─── 流程展示区 ─────────────────────────────────────────────────────── */
319
+ .cc-pipeline {
320
+ background: var(--bg);
321
+ border: 1px solid var(--border);
322
+ border-radius: 8px;
323
+ padding: 14px 18px;
324
+ }
325
+
326
+ .cc-pipe-icon {
327
+ width: 38px;
328
+ height: 38px;
329
+ font-size: 16px;
330
+ border: 2px solid var(--border);
331
+ border-radius: 50%;
332
+ display: flex;
333
+ align-items: center;
334
+ justify-content: center;
335
+ background: var(--card);
336
+ flex-shrink: 0;
337
+ transition: border-color 0.2s, background 0.2s;
338
+ }
339
+ .cc-pipe-title {
340
+ font-size: 13px;
341
+ font-weight: 600;
342
+ color: var(--text);
343
+ margin-bottom: 2px;
344
+ }
345
+ .cc-pipe-stage {
346
+ font-size: 11px;
347
+ color: var(--text3);
348
+ font-family: var(--mono);
349
+ }
350
+
351
+ /* ─── 下载/预览按钮 ──────────────────────────────────────────────────── */
352
+ .cc-dl-wrap {
353
+ flex-direction: column;
354
+ gap: 6px;
355
+ align-items: flex-end;
356
+ }
357
+
358
+ .cc-download-btn {
359
+ display: inline-flex;
360
+ align-items: center;
361
+ gap: 5px;
362
+ padding: 6px 12px;
363
+ border-radius: 6px;
364
+ font-size: 12px;
365
+ font-weight: 600;
366
+ background: rgba(52,199,89,0.12);
367
+ color: var(--green);
368
+ border: 1px solid rgba(52,199,89,0.3);
369
+ cursor: pointer;
370
+ white-space: nowrap;
371
+ transition: all 0.15s;
372
+ }
373
+ .cc-download-btn:hover {
374
+ background: rgba(52,199,89,0.2);
375
+ border-color: rgba(52,199,89,0.5);
376
+ }
377
+
378
+ .cc-preview-btn {
379
+ display: inline-flex;
380
+ align-items: center;
381
+ gap: 5px;
382
+ padding: 5px 10px;
383
+ border-radius: 6px;
384
+ font-size: 11px;
385
+ font-weight: 600;
386
+ background: rgba(0,113,227,0.1);
387
+ color: var(--blue);
388
+ border: 1px solid rgba(0,113,227,0.3);
389
+ cursor: pointer;
390
+ white-space: nowrap;
391
+ transition: all 0.15s;
392
+ }
393
+ .cc-preview-btn:hover {
394
+ background: rgba(0,113,227,0.2);
395
+ border-color: rgba(0,113,227,0.5);
396
+ }
397
+
398
+ /* ─── 操作按钮区 ─────────────────────────────────────────────────────── */
399
+ .cc-actions {
400
+ display: flex;
401
+ gap: 8px;
402
+ align-items: center;
403
+ }
404
+
405
+ .cc-session-btn {
406
+ display: inline-flex;
407
+ align-items: center;
408
+ gap: 5px;
409
+ padding: 6px 12px;
410
+ border-radius: 6px;
411
+ font-size: 12px;
412
+ font-weight: 600;
413
+ background: rgba(175,82,222,0.1);
414
+ color: var(--purple);
415
+ border: 1px solid rgba(175,82,222,0.3);
416
+ cursor: pointer;
417
+ white-space: nowrap;
418
+ transition: all 0.15s;
419
+ }
420
+ .cc-session-btn:hover:not(:disabled) {
421
+ background: rgba(175,82,222,0.2);
422
+ border-color: rgba(175,82,222,0.5);
423
+ }
424
+ .cc-session-btn:disabled { opacity: 0.4; cursor: not-allowed; }
425
+
426
+ /* ─── 空状态提示 ─────────────────────────────────────────────────────── */
427
+ .cc-empty-hint {
428
+ color: var(--text3);
429
+ font-style: italic;
430
+ font-size: 13px;
431
+ padding: 16px 0;
432
+ text-align: center;
433
+ }
434
+
435
+ /* ─── 错误提示 ───────────────────────────────────────────────────────── */
436
+ .cc-error-msg {
437
+ display: none;
438
+ color: var(--red);
439
+ font-size: 13px;
440
+ padding: 8px 12px;
441
+ background: var(--red-light);
442
+ border-radius: 7px;
443
+ }
444
+
445
+ /* ─── 高级选项 ───────────────────────────────────────────────────────── */
446
+ .cc-advanced-toggle {
447
+ display: flex;
448
+ align-items: center;
449
+ gap: 6px;
450
+ font-size: 12px;
451
+ color: var(--blue);
452
+ cursor: pointer;
453
+ margin: 4px 0;
454
+ user-select: none;
455
+ }
456
+ .cc-advanced-toggle::before { content: '\25B6'; font-size: 9px; transition: transform 0.2s; }
457
+ .cc-advanced-toggle.open::before { transform: rotate(90deg); }
458
+ .cc-advanced-section {
459
+ display: none;
460
+ background: var(--code-bg);
461
+ border-radius: 8px;
462
+ padding: 12px;
463
+ }
464
+ .cc-advanced-section.show { display: block; }