@chatcode/cco-market 1.45.1
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/LICENSE +21 -0
- package/README.md +146 -0
- package/README.zh.md +143 -0
- package/UPDATE-API-V1.md +132 -0
- package/client/client.js +11534 -0
- package/cordis.patch.yml +5 -0
- package/lib/accelerate.js +184 -0
- package/lib/agents.js +36 -0
- package/lib/backup.js +572 -0
- package/lib/catalog-local-match.js +126 -0
- package/lib/catalog-npm.js +111 -0
- package/lib/changelog.js +242 -0
- package/lib/channels.js +64 -0
- package/lib/check.js +1067 -0
- package/lib/compatibility.js +198 -0
- package/lib/diagnostics.js +49 -0
- package/lib/discovery-compatibility.js +260 -0
- package/lib/dsh-cli.js +949 -0
- package/lib/dsh-install.js +108 -0
- package/lib/gist.js +352 -0
- package/lib/groups.js +97 -0
- package/lib/home-paths.js +42 -0
- package/lib/hot.js +519 -0
- package/lib/http.js +39 -0
- package/lib/index.js +97 -0
- package/lib/install.js +387 -0
- package/lib/log.js +197 -0
- package/lib/ndjson.js +154 -0
- package/lib/net.js +98 -0
- package/lib/order.js +284 -0
- package/lib/patch.js +521 -0
- package/lib/pnpm-compat.js +490 -0
- package/lib/presets.js +278 -0
- package/lib/profile.js +911 -0
- package/lib/region-probe.js +93 -0
- package/lib/regions.js +253 -0
- package/lib/registry.js +204 -0
- package/lib/restart.js +373 -0
- package/lib/routes.js +4372 -0
- package/lib/settings.js +109 -0
- package/lib/skill-market/api.js +119 -0
- package/lib/skill-market/config.js +29 -0
- package/lib/skill-market/installer.js +352 -0
- package/lib/skill-market/runtime.js +13 -0
- package/lib/skill-market/tui.js +119 -0
- package/lib/skill-market/types.js +1 -0
- package/lib/skill-market/web-routes.js +123 -0
- package/lib/snapshot.js +500 -0
- package/lib/source-migration.js +54 -0
- package/lib/sources.js +596 -0
- package/lib/store.js +91 -0
- package/lib/themes.js +102 -0
- package/lib/trial.js +116 -0
- package/lib/types/accelerate.d.ts +85 -0
- package/lib/types/agents.d.ts +22 -0
- package/lib/types/backup.d.ts +131 -0
- package/lib/types/catalog-local-match.d.ts +50 -0
- package/lib/types/catalog-npm.d.ts +47 -0
- package/lib/types/changelog.d.ts +102 -0
- package/lib/types/channels.d.ts +56 -0
- package/lib/types/check.d.ts +266 -0
- package/lib/types/compatibility.d.ts +64 -0
- package/lib/types/diagnostics.d.ts +29 -0
- package/lib/types/discovery-compatibility.d.ts +80 -0
- package/lib/types/dsh-cli.d.ts +324 -0
- package/lib/types/dsh-install.d.ts +46 -0
- package/lib/types/gist.d.ts +53 -0
- package/lib/types/groups.d.ts +34 -0
- package/lib/types/home-paths.d.ts +16 -0
- package/lib/types/hot.d.ts +221 -0
- package/lib/types/http.d.ts +12 -0
- package/lib/types/index.d.ts +14 -0
- package/lib/types/install.d.ts +172 -0
- package/lib/types/log.d.ts +43 -0
- package/lib/types/ndjson.d.ts +52 -0
- package/lib/types/net.d.ts +58 -0
- package/lib/types/order.d.ts +100 -0
- package/lib/types/patch.d.ts +129 -0
- package/lib/types/pnpm-compat.d.ts +93 -0
- package/lib/types/presets.d.ts +90 -0
- package/lib/types/profile.d.ts +253 -0
- package/lib/types/region-probe.d.ts +50 -0
- package/lib/types/regions.d.ts +122 -0
- package/lib/types/registry.d.ts +86 -0
- package/lib/types/restart.d.ts +194 -0
- package/lib/types/routes.d.ts +67 -0
- package/lib/types/settings.d.ts +78 -0
- package/lib/types/skill-market/api.d.ts +10 -0
- package/lib/types/skill-market/config.d.ts +3 -0
- package/lib/types/skill-market/installer.d.ts +23 -0
- package/lib/types/skill-market/runtime.d.ts +10 -0
- package/lib/types/skill-market/tui.d.ts +4 -0
- package/lib/types/skill-market/types.d.ts +71 -0
- package/lib/types/skill-market/web-routes.d.ts +19 -0
- package/lib/types/snapshot.d.ts +93 -0
- package/lib/types/source-migration.d.ts +11 -0
- package/lib/types/sources.d.ts +216 -0
- package/lib/types/store.d.ts +30 -0
- package/lib/types/themes.d.ts +40 -0
- package/lib/types/trial.d.ts +61 -0
- package/lib/types/update-api-v1.d.ts +66 -0
- package/lib/types/updates.d.ts +123 -0
- package/lib/types/verify.d.ts +139 -0
- package/lib/update-api-v1.js +215 -0
- package/lib/updates.js +361 -0
- package/lib/verify.js +453 -0
- package/package.json +121 -0
- package/src/accelerate.ts +213 -0
- package/src/agents.ts +43 -0
- package/src/backup.ts +583 -0
- package/src/catalog-local-match.ts +144 -0
- package/src/catalog-npm.ts +120 -0
- package/src/changelog.ts +282 -0
- package/src/channels.ts +70 -0
- package/src/check.ts +1239 -0
- package/src/client/CommentsModal.tsx +119 -0
- package/src/client/Diagnostics.tsx +907 -0
- package/src/client/ErrorBoundary.tsx +111 -0
- package/src/client/InstallToast.tsx +31 -0
- package/src/client/Market.module.css +830 -0
- package/src/client/MarketSection.tsx +5301 -0
- package/src/client/OperationsPanel.tsx +365 -0
- package/src/client/SettingsCard.tsx +621 -0
- package/src/client/SkillMarket.module.css +21 -0
- package/src/client/SkillMarketSection.tsx +162 -0
- package/src/client/comments.ts +54 -0
- package/src/client/globals.d.ts +13 -0
- package/src/client/index.ts +180 -0
- package/src/client/locales.ts +1112 -0
- package/src/client/market-data.ts +1321 -0
- package/src/client/operations.ts +201 -0
- package/src/client/preset-panel.tsx +263 -0
- package/src/client/primitives.d.ts +140 -0
- package/src/client/self-check.ts +147 -0
- package/src/client/snapshot-panel.tsx +244 -0
- package/src/compatibility.ts +237 -0
- package/src/diagnostics.ts +84 -0
- package/src/discovery-compatibility.ts +315 -0
- package/src/dsh-cli.ts +1126 -0
- package/src/dsh-install.ts +118 -0
- package/src/gist.ts +362 -0
- package/src/groups.ts +111 -0
- package/src/home-paths.ts +53 -0
- package/src/hot.ts +628 -0
- package/src/http.ts +41 -0
- package/src/index.ts +128 -0
- package/src/install.ts +420 -0
- package/src/log.ts +206 -0
- package/src/ndjson.ts +185 -0
- package/src/net.ts +106 -0
- package/src/order.ts +303 -0
- package/src/patch.ts +522 -0
- package/src/pnpm-compat.ts +527 -0
- package/src/presets.ts +344 -0
- package/src/profile.ts +940 -0
- package/src/region-probe.ts +97 -0
- package/src/regions.ts +310 -0
- package/src/registry.ts +250 -0
- package/src/restart.ts +396 -0
- package/src/routes.ts +4506 -0
- package/src/settings.ts +141 -0
- package/src/skill-market/api.ts +130 -0
- package/src/skill-market/config.ts +32 -0
- package/src/skill-market/installer.ts +337 -0
- package/src/skill-market/runtime.ts +14 -0
- package/src/skill-market/tui.ts +157 -0
- package/src/skill-market/types.ts +80 -0
- package/src/skill-market/web-routes.ts +132 -0
- package/src/snapshot.ts +532 -0
- package/src/source-migration.ts +61 -0
- package/src/sources.ts +565 -0
- package/src/store.ts +89 -0
- package/src/themes.ts +125 -0
- package/src/trial.ts +156 -0
- package/src/update-api-v1.ts +277 -0
- package/src/updates.ts +400 -0
- package/src/verify.ts +492 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The comment thread for one plugin, rendered inside the market.
|
|
3
|
+
*
|
|
4
|
+
* Opening this is the request to read the comments, so it loads on open —
|
|
5
|
+
* there is no second click to confirm what the first one already said. What
|
|
6
|
+
* the reader does have to be told, once and plainly, is that reading here
|
|
7
|
+
* contacts giscus.app and GitHub: nothing else in the market talks to a third
|
|
8
|
+
* party at the reader's request, and a comment box that quietly opens that
|
|
9
|
+
* connection would be a surprise, not a feature.
|
|
10
|
+
*
|
|
11
|
+
* The thread itself lives in GitHub Discussions, keyed on the same
|
|
12
|
+
* `plugin:<slug>` term the two websites use — see comments.ts.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { useEffect, useRef, useState } from 'react'
|
|
16
|
+
import { Button, Modal } from '@deepseek-ai/dsh-client-ui-primitives'
|
|
17
|
+
import css from './Market.module.css'
|
|
18
|
+
import { GISCUS, commentsDiscussionUrl, commentsTerm, giscusLang } from './comments.ts'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Whether the host is currently showing a dark theme.
|
|
22
|
+
*
|
|
23
|
+
* Read off the rendered page rather than from `prefers-color-scheme`: the host
|
|
24
|
+
* lets the reader pick a theme (including custom ones) independently of the
|
|
25
|
+
* OS, and a light comment box dropped into a dark window is the kind of seam
|
|
26
|
+
* that makes an embed look bolted on.
|
|
27
|
+
*/
|
|
28
|
+
function hostIsDark(): boolean {
|
|
29
|
+
if (typeof window === 'undefined') return false
|
|
30
|
+
const bg = getComputedStyle(document.body).backgroundColor
|
|
31
|
+
const m = /rgba?\(\s*(\d+)[,\s]+(\d+)[,\s]+(\d+)/.exec(bg)
|
|
32
|
+
if (!m) return window.matchMedia?.('(prefers-color-scheme: dark)').matches ?? false
|
|
33
|
+
const [r, g, b] = [Number(m[1]), Number(m[2]), Number(m[3])]
|
|
34
|
+
return (0.299 * r + 0.587 * g + 0.114 * b) < 128
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function CommentsModal(props: {
|
|
38
|
+
name: string
|
|
39
|
+
url: string
|
|
40
|
+
lang: string
|
|
41
|
+
onClose: () => void
|
|
42
|
+
t: (k: string) => string
|
|
43
|
+
}) {
|
|
44
|
+
const { name, url, lang, onClose, t } = props
|
|
45
|
+
const mount = useRef<HTMLDivElement | null>(null)
|
|
46
|
+
const [state, setState] = useState<'loading' | 'ready' | 'failed'>('loading')
|
|
47
|
+
// Bumping this re-runs the effect, which is what "retry" means here.
|
|
48
|
+
const [attempt, setAttempt] = useState(0)
|
|
49
|
+
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const host = mount.current
|
|
52
|
+
if (host === null) return
|
|
53
|
+
host.replaceChildren()
|
|
54
|
+
setState('loading')
|
|
55
|
+
|
|
56
|
+
const script = document.createElement('script')
|
|
57
|
+
script.src = 'https://giscus.app/client.js'
|
|
58
|
+
script.async = true
|
|
59
|
+
script.crossOrigin = 'anonymous'
|
|
60
|
+
Object.assign(script.dataset, {
|
|
61
|
+
repo: GISCUS.repo,
|
|
62
|
+
repoId: GISCUS.repoId,
|
|
63
|
+
category: GISCUS.category,
|
|
64
|
+
categoryId: GISCUS.categoryId,
|
|
65
|
+
mapping: 'specific',
|
|
66
|
+
term: commentsTerm(url),
|
|
67
|
+
// `strict` hashes the term, so `owner/repo` cannot collide with a
|
|
68
|
+
// `owner/repo--sub` entry from the same repository.
|
|
69
|
+
strict: '1',
|
|
70
|
+
reactionsEnabled: '1',
|
|
71
|
+
emitMetadata: '0',
|
|
72
|
+
inputPosition: 'bottom',
|
|
73
|
+
theme: hostIsDark() ? 'dark' : 'light',
|
|
74
|
+
lang: giscusLang(lang),
|
|
75
|
+
loading: 'lazy',
|
|
76
|
+
})
|
|
77
|
+
script.onload = () => setState('ready')
|
|
78
|
+
script.onerror = () => { script.remove(); setState('failed') }
|
|
79
|
+
host.append(script)
|
|
80
|
+
|
|
81
|
+
return () => { host.replaceChildren() }
|
|
82
|
+
}, [url, lang, attempt])
|
|
83
|
+
|
|
84
|
+
return (
|
|
85
|
+
<Modal
|
|
86
|
+
open
|
|
87
|
+
onClose={onClose}
|
|
88
|
+
title={t('commentsTitle') + ' — ' + name}
|
|
89
|
+
>
|
|
90
|
+
<p className={css.commentsNote}>{t('commentsNote')}</p>
|
|
91
|
+
<div className={css.commentsGithubPrompt}>
|
|
92
|
+
<p className={css.commentsGithubHint}>{t('commentsLoginHint')}</p>
|
|
93
|
+
<a
|
|
94
|
+
className={css.commentsGithubAction}
|
|
95
|
+
href={commentsDiscussionUrl(url)}
|
|
96
|
+
target="_blank"
|
|
97
|
+
rel="noreferrer"
|
|
98
|
+
>
|
|
99
|
+
{t('commentsOnGitHub')}
|
|
100
|
+
</a>
|
|
101
|
+
</div>
|
|
102
|
+
{state === 'failed'
|
|
103
|
+
? (
|
|
104
|
+
<div className={css.commentsFail}>
|
|
105
|
+
<p className={css.commentsError}>{t('commentsError')}</p>
|
|
106
|
+
<Button variant="outline" size="sm" onClick={() => setAttempt(n => n + 1)}>
|
|
107
|
+
{t('commentsRetry')}
|
|
108
|
+
</Button>
|
|
109
|
+
</div>
|
|
110
|
+
)
|
|
111
|
+
: (
|
|
112
|
+
<p className={css.commentsStatus} role="status" aria-live="polite">
|
|
113
|
+
{state === 'loading' ? t('commentsLoading') : ''}
|
|
114
|
+
</p>
|
|
115
|
+
)}
|
|
116
|
+
<div ref={mount} className={css.commentsMount} aria-busy={state === 'loading'} />
|
|
117
|
+
</Modal>
|
|
118
|
+
)
|
|
119
|
+
}
|