dsh-group-status 0.4.0 → 0.5.0
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/CHANGELOG.md +57 -0
- package/README.en.md +6 -4
- package/README.md +8 -4
- package/lib/client.js +172 -98
- package/lib/client.js.map +1 -1
- package/lib/index.js +7 -4
- package/lib/types/client/BadgeSettingsCard.d.ts.map +1 -1
- package/lib/types/client/BadgeSettingsCard.js +6 -6
- package/lib/types/client/BadgeSettingsCard.js.map +1 -1
- package/lib/types/client/badge-field.d.ts +33 -10
- package/lib/types/client/badge-field.d.ts.map +1 -1
- package/lib/types/client/badge-field.js +35 -16
- package/lib/types/client/badge-field.js.map +1 -1
- package/lib/types/client/badge-labels.d.ts +3 -3
- package/lib/types/client/badge-labels.js +3 -3
- package/lib/types/client/badge-settings.d.ts +0 -25
- package/lib/types/client/badge-settings.d.ts.map +1 -1
- package/lib/types/client/badge-settings.js +0 -18
- package/lib/types/client/badge-settings.js.map +1 -1
- package/lib/types/client/facets.d.ts +39 -5
- package/lib/types/client/facets.d.ts.map +1 -1
- package/lib/types/client/facets.js +48 -4
- package/lib/types/client/facets.js.map +1 -1
- package/lib/types/client/locales.d.ts +0 -8
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/locales.js +0 -8
- package/lib/types/client/locales.js.map +1 -1
- package/lib/types/client/rows/GroupBadge.d.ts +4 -4
- package/lib/types/client/rows/GroupBadge.d.ts.map +1 -1
- package/lib/types/client/rows/GroupBadge.js +10 -7
- package/lib/types/client/rows/GroupBadge.js.map +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.d.ts.map +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.js +12 -11
- package/lib/types/client/rows/WorkspaceBrowser.js.map +1 -1
- package/lib/types/client/tree.d.ts +16 -1
- package/lib/types/client/tree.d.ts.map +1 -1
- package/lib/types/client/tree.js +20 -8
- package/lib/types/client/tree.js.map +1 -1
- package/lib/types/client/use-registered-facets.d.ts +11 -0
- package/lib/types/client/use-registered-facets.d.ts.map +1 -0
- package/lib/types/client/use-registered-facets.js +48 -0
- package/lib/types/client/use-registered-facets.js.map +1 -0
- package/lib/types/host-contract.d.ts +57 -0
- package/lib/types/host-contract.d.ts.map +1 -0
- package/lib/types/host-contract.js +84 -0
- package/lib/types/host-contract.js.map +1 -0
- package/lib/types/index.d.ts +7 -10
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +7 -4
- package/lib/types/index.js.map +1 -1
- package/package.json +2 -1
- package/lib/types/client/facet-visibility.d.ts +0 -17
- package/lib/types/client/facet-visibility.d.ts.map +0 -1
- package/lib/types/client/facet-visibility.js +0 -18
- package/lib/types/client/facet-visibility.js.map +0 -1
package/lib/index.js
CHANGED
|
@@ -24,6 +24,13 @@ const name = "dsh-group-status";
|
|
|
24
24
|
* 读取同一份文档,改完即时生效、无需刷新。
|
|
25
25
|
*
|
|
26
26
|
* 全部可选且带默认值:未配置时即开箱即用(所有来源默认显示)。
|
|
27
|
+
*
|
|
28
|
+
* ⚠️ **这里只允许出现本插件自己的语义**。历史上曾有 `showScheduledInBadge` /
|
|
29
|
+
* `showWaitingReviewInBadge` 两个字段,名字与图标形状都替别人家插件写死(定时任务来自
|
|
30
|
+
* dsh-later、等待评审来自 dsh-gitea-dispatch)—— 与本插件「不认识任何具体来源」的立身
|
|
31
|
+
* 之本直接矛盾。外部来源的显隐现在归**来源自己**:它想被关掉就不注册 facet(协议文档
|
|
32
|
+
* 「显隐归谁」一节)。删字段是一次**破坏性配置变更**:旧值不再被读取,等同回到默认
|
|
33
|
+
* "显示"(默认全开,所以最坏情况是"某个来源重新出现",不会留下坏数据)。
|
|
27
34
|
*/
|
|
28
35
|
const Config = Schema.object({
|
|
29
36
|
/**
|
|
@@ -37,10 +44,6 @@ const Config = Schema.object({
|
|
|
37
44
|
showRunningInBadge: Schema.boolean().default(true),
|
|
38
45
|
/** 折叠分组徽标是否显示「待审批」黄点(approval / plan-review / question)。 */
|
|
39
46
|
showPendingInBadge: Schema.boolean().default(true),
|
|
40
|
-
/** 折叠分组徽标是否显示「定时任务」时钟图标(数据来自 dsh-later)。 */
|
|
41
|
-
showScheduledInBadge: Schema.boolean().default(true),
|
|
42
|
-
/** 折叠分组徽标是否显示「等待评审」沙漏图标(数据来自 dsh-gitea-dispatch)。 */
|
|
43
|
-
showWaitingReviewInBadge: Schema.boolean().default(true),
|
|
44
47
|
/** 悬停卡里是否显示聚合明细行("1 等待回答 · 1 进行中…")。 */
|
|
45
48
|
showHoverDetails: Schema.boolean().default(true),
|
|
46
49
|
/** 徽标数字显示阈值:数量 >= 此值时才显示数字(默认 2,即 count=1 时省略)。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BadgeSettingsCard.d.ts","sourceRoot":"","sources":["../../../src/client/BadgeSettingsCard.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"BadgeSettingsCard.d.ts","sourceRoot":"","sources":["../../../src/client/BadgeSettingsCard.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAC3C,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1D,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,CAAA;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CA6DnF"}
|
|
@@ -18,8 +18,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
18
18
|
* 字段定义在 `badge-field.ts`(纯逻辑,可单测);这里只管把它们接到模型与槽位上。
|
|
19
19
|
*/
|
|
20
20
|
import { useEffect, useId, useMemo, useSyncExternalStore } from 'react';
|
|
21
|
-
import { SettingsForm, SettingsFormModel, Switch, } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
22
|
-
import { ALL_BADGE_FIELDS, BADGE_FIELDS, isDraftEnabled } from "./badge-field.js";
|
|
21
|
+
import { SettingsForm, SettingsFormModel, StateDot, Switch, } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
22
|
+
import { ALL_BADGE_FIELDS, BADGE_FIELDS, BADGE_FIELD_DOT_STATE, isDraftEnabled } from "./badge-field.js";
|
|
23
23
|
import css from './BadgeSettingsCard.module.css';
|
|
24
24
|
/**
|
|
25
25
|
* 渲染折叠徽标的设置表单。
|
|
@@ -54,11 +54,11 @@ export function BadgeSettingsCard({ scope, t }) {
|
|
|
54
54
|
const found = state.fields.find(f => f.field === field);
|
|
55
55
|
return found?.text ?? 'true';
|
|
56
56
|
};
|
|
57
|
-
return (_jsxs(SettingsForm, { labels: labels, state: state, onSave: () => { actions.save(); }, onDiscard: () => { actions.discard(); }, children: [_jsxs("section", { className: css.section, "aria-labelledby": badgeSectionId, children: [_jsx("h3", { className: css.heading, id: badgeSectionId, children: t('settings.badge.section') }), _jsx(ToggleRow, { field: BADGE_FIELDS.
|
|
57
|
+
return (_jsxs(SettingsForm, { labels: labels, state: state, onSave: () => { actions.save(); }, onDiscard: () => { actions.discard(); }, children: [_jsxs("section", { className: css.section, "aria-labelledby": badgeSectionId, children: [_jsx("h3", { className: css.heading, id: badgeSectionId, children: t('settings.badge.section') }), _jsx(ToggleRow, { field: BADGE_FIELDS.showPendingInBadge, text: fieldText(BADGE_FIELDS.showPendingInBadge), label: t('settings.badge.showPending'), hint: t('settings.badge.showPendingHint'), state: state, actions: actions, specimen: _jsx(StateDot, { state: BADGE_FIELD_DOT_STATE.showPendingInBadge, size: 12 }) }), _jsx(ToggleRow, { field: BADGE_FIELDS.showRunningInBadge, text: fieldText(BADGE_FIELDS.showRunningInBadge), label: t('settings.badge.showRunning'), hint: t('settings.badge.showRunningHint'), state: state, actions: actions, specimen: _jsx(StateDot, { state: BADGE_FIELD_DOT_STATE.showRunningInBadge, size: 12 }) }), _jsx(ToggleRow, { field: BADGE_FIELDS.showCompletedInBadge, text: fieldText(BADGE_FIELDS.showCompletedInBadge), label: t('settings.badge.showCompleted'), hint: t('settings.badge.showCompletedHint'), state: state, actions: actions, specimen: _jsx(StateDot, { state: BADGE_FIELD_DOT_STATE.showCompletedInBadge, size: 12 }) })] }), _jsxs("section", { className: css.section, "aria-labelledby": hoverSectionId, children: [_jsx("h3", { className: css.heading, id: hoverSectionId, children: t('settings.hover.section') }), _jsx(ToggleRow, { field: BADGE_FIELDS.showHoverDetails, text: fieldText(BADGE_FIELDS.showHoverDetails), label: t('settings.hover.showDetails'), hint: t('settings.hover.showDetailsHint'), state: state, actions: actions })] }), _jsxs("section", { className: css.section, "aria-labelledby": countSectionId, children: [_jsx("h3", { className: css.heading, id: countSectionId, children: t('settings.count.section') }), _jsx(NumberRow, { field: BADGE_FIELDS.countThreshold, text: fieldText(BADGE_FIELDS.countThreshold), label: t('settings.count.threshold'), hint: t('settings.count.thresholdHint'), state: state, actions: actions })] })] }));
|
|
58
58
|
}
|
|
59
|
-
/** 单行开关:label + Switch + hint
|
|
60
|
-
function ToggleRow({ field, text, label, hint, state, actions }) {
|
|
61
|
-
return (_jsxs("div", { className: css.badgeField, children: [_jsxs("div", { className: css.badgeToggleRow, children: [
|
|
59
|
+
/** 单行开关:label + Switch + hint。`specimen` 是行首那枚预览点(可选)。 */
|
|
60
|
+
function ToggleRow({ field, text, label, hint, state, actions, specimen }) {
|
|
61
|
+
return (_jsxs("div", { className: css.badgeField, children: [_jsxs("div", { className: css.badgeToggleRow, children: [_jsxs("span", { className: css.badgeToggleLabel, children: [specimen !== undefined && _jsx("span", { className: css.badgeSpecimen, children: specimen }), label] }), _jsx(Switch, { checked: isDraftEnabled(text), label: label, disabled: !state.writable || state.saving, onChange: next => { actions.edit(field, next ? 'true' : 'false'); } })] }), _jsx("p", { className: css.hint, children: hint })] }));
|
|
62
62
|
}
|
|
63
63
|
/** 单行数字输入:label + 带加减按钮的数字输入 + hint。 */
|
|
64
64
|
function NumberRow({ field, text, label, hint, state, actions }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BadgeSettingsCard.js","sourceRoot":"","sources":["../../../src/client/BadgeSettingsCard.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,MAAM,GAGP,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"BadgeSettingsCard.js","sourceRoot":"","sources":["../../../src/client/BadgeSettingsCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,31 +14,54 @@
|
|
|
14
14
|
* 测试里也就不必把那个包(及其整棵依赖闭包)拉进来。
|
|
15
15
|
*/
|
|
16
16
|
import type { SettingsFieldSpec } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* 每个开关控制的是徽标上的哪一枚点。
|
|
19
|
+
*
|
|
20
|
+
* 单一事实来源:设置卡片里给每行画的**预览点**与折叠徽标实际画的那三枚点,都从这里取。
|
|
21
|
+
* 两处各写一套的话迟早会漂,而漂了的后果不是"多一个点少一个点",是**卡片预览与徽标说的
|
|
22
|
+
* 不是一回事**(同一族毛病:#25① 修过点行与明细的顺序,#37 又发现配置面里混着别人家的语义)。
|
|
23
|
+
*
|
|
24
|
+
* 对应关系与 `rows/GroupBadge.tsx` 一致:待审批 = warning 黄点、进行中 = ongoing 转圈、
|
|
25
|
+
* 已完成 = done 绿点。外部来源的点**不在这里** —— 它们由来源自己画(`renderIcon`),
|
|
26
|
+
* 也不在本插件的卡片上(显隐归来源自己)。
|
|
27
|
+
*/
|
|
28
|
+
export declare const BADGE_FIELD_DOT_STATE: {
|
|
29
|
+
readonly showPendingInBadge: "warning";
|
|
30
|
+
readonly showRunningInBadge: "ongoing";
|
|
31
|
+
readonly showCompletedInBadge: "done";
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* 卡片字段名(与 `src/index.ts` 的 `Config` 同名同义)。
|
|
35
|
+
*
|
|
36
|
+
* ⚠️ 只有本插件自己的语义。曾有 `showScheduledInBadge` / `showWaitingReviewInBadge`
|
|
37
|
+
* 两个字段替 dsh-later / dsh-gitea-dispatch 写死名字与图标形状,现已删除:外部来源的
|
|
38
|
+
* 显隐归来源自己(不注册就是不显示)。
|
|
39
|
+
*/
|
|
18
40
|
export declare const BADGE_FIELDS: {
|
|
19
41
|
readonly showCompletedInBadge: "showCompletedInBadge";
|
|
20
42
|
readonly showRunningInBadge: "showRunningInBadge";
|
|
21
43
|
readonly showPendingInBadge: "showPendingInBadge";
|
|
22
|
-
readonly showScheduledInBadge: "showScheduledInBadge";
|
|
23
|
-
readonly showWaitingReviewInBadge: "showWaitingReviewInBadge";
|
|
24
44
|
readonly showHoverDetails: "showHoverDetails";
|
|
25
45
|
readonly countThreshold: "countThreshold";
|
|
26
46
|
};
|
|
27
|
-
/** 存储值解析成开关状态:只有显式 false 才是「关闭」。 */
|
|
28
|
-
export declare function isFieldEnabled(value: unknown): boolean;
|
|
29
47
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
48
|
+
* 草稿文本解析成开关状态:比较的是模型给的**文本**,不是存储值 ——
|
|
49
|
+
* 别把字符串 `'false'` 当成布尔 `false`(`'false' !== false` 恒真)。
|
|
32
50
|
*/
|
|
33
51
|
export declare function isDraftEnabled(text: string): boolean;
|
|
34
52
|
/** 各字段的字段转换规格。 */
|
|
35
53
|
export declare const showCompletedField: SettingsFieldSpec;
|
|
36
54
|
export declare const showRunningField: SettingsFieldSpec;
|
|
37
55
|
export declare const showPendingField: SettingsFieldSpec;
|
|
38
|
-
export declare const showScheduledField: SettingsFieldSpec;
|
|
39
|
-
export declare const showWaitingReviewField: SettingsFieldSpec;
|
|
40
56
|
export declare const showHoverDetailsField: SettingsFieldSpec;
|
|
41
57
|
export declare const countThresholdField: SettingsFieldSpec;
|
|
42
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* 所有字段规格。
|
|
60
|
+
*
|
|
61
|
+
* ⚠️ 顺序**必须**与徽标画点的顺序一致(`rows/GroupBadge.tsx`:待审批 → 进行中 → 已完成;
|
|
62
|
+
* 外部来源排在已完成之前,但它们不在本插件的卡片上)。用户操作场景就是"我看到徽标第 N
|
|
63
|
+
* 个图标,想关掉它",卡片顺序错位会让人怀疑两处是两套事实 —— 同一族毛病 #25① 已经在
|
|
64
|
+
* 点行与明细之间修过一次。回归用例:`tests/badge-settings-card.client.spec.tsx`。
|
|
65
|
+
*/
|
|
43
66
|
export declare const ALL_BADGE_FIELDS: SettingsFieldSpec[];
|
|
44
67
|
//# sourceMappingURL=badge-field.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-field.d.ts","sourceRoot":"","sources":["../../../src/client/badge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"badge-field.d.ts","sourceRoot":"","sources":["../../../src/client/badge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,uCAAuC,CAAA;AAE7F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB;;;;CAIgB,CAAA;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY;;;;;;CAMf,CAAA;AAEV;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AA2BD,kBAAkB;AAClB,eAAO,MAAM,kBAAkB,EAAE,iBAA6E,CAAA;AAC9G,eAAO,MAAM,gBAAgB,EAAE,iBAA2E,CAAA;AAC1G,eAAO,MAAM,gBAAgB,EAAE,iBAA2E,CAAA;AAC1G,eAAO,MAAM,qBAAqB,EAAE,iBAAyE,CAAA;AAC7G,eAAO,MAAM,mBAAmB,EAAE,iBAajC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAM/C,CAAA"}
|
|
@@ -1,20 +1,36 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* 每个开关控制的是徽标上的哪一枚点。
|
|
3
|
+
*
|
|
4
|
+
* 单一事实来源:设置卡片里给每行画的**预览点**与折叠徽标实际画的那三枚点,都从这里取。
|
|
5
|
+
* 两处各写一套的话迟早会漂,而漂了的后果不是"多一个点少一个点",是**卡片预览与徽标说的
|
|
6
|
+
* 不是一回事**(同一族毛病:#25① 修过点行与明细的顺序,#37 又发现配置面里混着别人家的语义)。
|
|
7
|
+
*
|
|
8
|
+
* 对应关系与 `rows/GroupBadge.tsx` 一致:待审批 = warning 黄点、进行中 = ongoing 转圈、
|
|
9
|
+
* 已完成 = done 绿点。外部来源的点**不在这里** —— 它们由来源自己画(`renderIcon`),
|
|
10
|
+
* 也不在本插件的卡片上(显隐归来源自己)。
|
|
11
|
+
*/
|
|
12
|
+
export const BADGE_FIELD_DOT_STATE = {
|
|
13
|
+
showPendingInBadge: 'warning',
|
|
14
|
+
showRunningInBadge: 'ongoing',
|
|
15
|
+
showCompletedInBadge: 'done',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 卡片字段名(与 `src/index.ts` 的 `Config` 同名同义)。
|
|
19
|
+
*
|
|
20
|
+
* ⚠️ 只有本插件自己的语义。曾有 `showScheduledInBadge` / `showWaitingReviewInBadge`
|
|
21
|
+
* 两个字段替 dsh-later / dsh-gitea-dispatch 写死名字与图标形状,现已删除:外部来源的
|
|
22
|
+
* 显隐归来源自己(不注册就是不显示)。
|
|
23
|
+
*/
|
|
2
24
|
export const BADGE_FIELDS = {
|
|
3
25
|
showCompletedInBadge: 'showCompletedInBadge',
|
|
4
26
|
showRunningInBadge: 'showRunningInBadge',
|
|
5
27
|
showPendingInBadge: 'showPendingInBadge',
|
|
6
|
-
showScheduledInBadge: 'showScheduledInBadge',
|
|
7
|
-
showWaitingReviewInBadge: 'showWaitingReviewInBadge',
|
|
8
28
|
showHoverDetails: 'showHoverDetails',
|
|
9
29
|
countThreshold: 'countThreshold',
|
|
10
30
|
};
|
|
11
|
-
/** 存储值解析成开关状态:只有显式 false 才是「关闭」。 */
|
|
12
|
-
export function isFieldEnabled(value) {
|
|
13
|
-
return value !== false;
|
|
14
|
-
}
|
|
15
31
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
32
|
+
* 草稿文本解析成开关状态:比较的是模型给的**文本**,不是存储值 ——
|
|
33
|
+
* 别把字符串 `'false'` 当成布尔 `false`(`'false' !== false` 恒真)。
|
|
18
34
|
*/
|
|
19
35
|
export function isDraftEnabled(text) {
|
|
20
36
|
return text !== 'false';
|
|
@@ -46,8 +62,6 @@ function makeBooleanField(field, defaultValue) {
|
|
|
46
62
|
export const showCompletedField = makeBooleanField(BADGE_FIELDS.showCompletedInBadge, true);
|
|
47
63
|
export const showRunningField = makeBooleanField(BADGE_FIELDS.showRunningInBadge, true);
|
|
48
64
|
export const showPendingField = makeBooleanField(BADGE_FIELDS.showPendingInBadge, true);
|
|
49
|
-
export const showScheduledField = makeBooleanField(BADGE_FIELDS.showScheduledInBadge, true);
|
|
50
|
-
export const showWaitingReviewField = makeBooleanField(BADGE_FIELDS.showWaitingReviewInBadge, true);
|
|
51
65
|
export const showHoverDetailsField = makeBooleanField(BADGE_FIELDS.showHoverDetails, true);
|
|
52
66
|
export const countThresholdField = {
|
|
53
67
|
field: BADGE_FIELDS.countThreshold,
|
|
@@ -64,13 +78,18 @@ export const countThresholdField = {
|
|
|
64
78
|
return { kind: 'set', value: n };
|
|
65
79
|
},
|
|
66
80
|
};
|
|
67
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* 所有字段规格。
|
|
83
|
+
*
|
|
84
|
+
* ⚠️ 顺序**必须**与徽标画点的顺序一致(`rows/GroupBadge.tsx`:待审批 → 进行中 → 已完成;
|
|
85
|
+
* 外部来源排在已完成之前,但它们不在本插件的卡片上)。用户操作场景就是"我看到徽标第 N
|
|
86
|
+
* 个图标,想关掉它",卡片顺序错位会让人怀疑两处是两套事实 —— 同一族毛病 #25① 已经在
|
|
87
|
+
* 点行与明细之间修过一次。回归用例:`tests/badge-settings-card.client.spec.tsx`。
|
|
88
|
+
*/
|
|
68
89
|
export const ALL_BADGE_FIELDS = [
|
|
69
|
-
showCompletedField,
|
|
70
|
-
showRunningField,
|
|
71
90
|
showPendingField,
|
|
72
|
-
|
|
73
|
-
|
|
91
|
+
showRunningField,
|
|
92
|
+
showCompletedField,
|
|
74
93
|
showHoverDetailsField,
|
|
75
94
|
countThresholdField,
|
|
76
95
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-field.js","sourceRoot":"","sources":["../../../src/client/badge-field.ts"],"names":[],"mappings":"AAiBA
|
|
1
|
+
{"version":3,"file":"badge-field.js","sourceRoot":"","sources":["../../../src/client/badge-field.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,9 @@ export declare function facetLines(s: GroupLiveStatus, t: RowTranslate, now: num
|
|
|
38
38
|
* Accessible label for a folded group's aggregated status, reusing the
|
|
39
39
|
* session-row locale keys so both surfaces read identically.
|
|
40
40
|
*
|
|
41
|
-
*
|
|
42
|
-
* `
|
|
43
|
-
*
|
|
41
|
+
* 按设置过滤:本插件那三档会话状态按设置逐项过滤;**外部来源不参与过滤** —— 登记了就
|
|
42
|
+
* 一定出现在这里,没登记就不在折果里,所以 `aria-label` 与徽标视觉天然一致,不必在这里
|
|
43
|
+
* 再判一次设置(本插件也没有替别人家存的开关)。
|
|
44
44
|
*/
|
|
45
45
|
export declare function groupLiveLabel(s: GroupLiveStatus, t: RowTranslate, settings: ResolvedBadgeSettings, now?: number): string;
|
|
46
46
|
/**
|
|
@@ -35,9 +35,9 @@ export function facetLines(s, t, now) {
|
|
|
35
35
|
* Accessible label for a folded group's aggregated status, reusing the
|
|
36
36
|
* session-row locale keys so both surfaces read identically.
|
|
37
37
|
*
|
|
38
|
-
*
|
|
39
|
-
* `
|
|
40
|
-
*
|
|
38
|
+
* 按设置过滤:本插件那三档会话状态按设置逐项过滤;**外部来源不参与过滤** —— 登记了就
|
|
39
|
+
* 一定出现在这里,没登记就不在折果里,所以 `aria-label` 与徽标视觉天然一致,不必在这里
|
|
40
|
+
* 再判一次设置(本插件也没有替别人家存的开关)。
|
|
41
41
|
*/
|
|
42
42
|
export function groupLiveLabel(s, t, settings, now = Date.now()) {
|
|
43
43
|
const parts = [];
|
|
@@ -26,11 +26,6 @@ export interface SettingsSnapshotLike {
|
|
|
26
26
|
readonly status: string;
|
|
27
27
|
readonly value?: unknown;
|
|
28
28
|
}
|
|
29
|
-
/** 设置面的最小结构面(与宿主 `ConfigForm` 兼容)。 */
|
|
30
|
-
export interface SettingsScopeLike {
|
|
31
|
-
getSnapshot(): SettingsSnapshotLike;
|
|
32
|
-
subscribe(listener: () => void): () => void;
|
|
33
|
-
}
|
|
34
29
|
/** 本插件在浏览器半关心的设置项。 */
|
|
35
30
|
export interface ResolvedBadgeSettings {
|
|
36
31
|
/** 折叠徽标是否显示「已完成」绿点;缺失/非法一律回落 true。 */
|
|
@@ -39,31 +34,11 @@ export interface ResolvedBadgeSettings {
|
|
|
39
34
|
showRunningInBadge: boolean;
|
|
40
35
|
/** 折叠徽标是否显示「待审批」黄点(approval / plan-review / question);缺失/非法一律回落 true。 */
|
|
41
36
|
showPendingInBadge: boolean;
|
|
42
|
-
/** 折叠徽标是否显示「定时任务」时钟图标(数据来自 dsh-later);缺失/非法一律回落 true。 */
|
|
43
|
-
showScheduledInBadge: boolean;
|
|
44
|
-
/** 折叠徽标是否显示「等待评审」沙漏图标(数据来自 dsh-gitea-dispatch,自其 #56 起画沙漏;缺失/非法一律回落 true)。 */
|
|
45
|
-
showWaitingReviewInBadge: boolean;
|
|
46
37
|
/** 悬停卡里是否显示聚合明细行;缺失/非法一律回落 true。 */
|
|
47
38
|
showHoverDetails: boolean;
|
|
48
39
|
/** 徽标数字显示阈值:数量 >= 此值时才显示数字;缺失/非法一律回落 2(默认 count=1 时省略)。 */
|
|
49
40
|
countThreshold: number;
|
|
50
41
|
}
|
|
51
|
-
/**
|
|
52
|
-
* `ResolvedBadgeSettings` 里的布尔开关键。
|
|
53
|
-
*
|
|
54
|
-
* facet 的 `settingKey` 就是它的字符串形态:状态所有者声明"我受哪个开关管",
|
|
55
|
-
* 而开关的语义与取值仍由本插件判定。
|
|
56
|
-
*/
|
|
57
|
-
export type BooleanSettingKey = {
|
|
58
|
-
[K in keyof ResolvedBadgeSettings]: ResolvedBadgeSettings[K] extends boolean ? K : never;
|
|
59
|
-
}[keyof ResolvedBadgeSettings];
|
|
60
|
-
/**
|
|
61
|
-
* 一个 facet 是否被设置关掉。
|
|
62
|
-
*
|
|
63
|
-
* - 没有 `settingKey` → 始终参与(缺省是"显示",与其余开关的默认值同源)。
|
|
64
|
-
* - 声明了但不是布尔开关键 → 同样按显示处理:拼错的键不该让一个状态整块消失。
|
|
65
|
-
*/
|
|
66
|
-
export declare function facetVisibleBySettings(settings: ResolvedBadgeSettings, settingKey: string | undefined): boolean;
|
|
67
42
|
/** 标准 props 源的结构面(与 `HostObservable<ResolvedBadgeSettings>` 兼容)。 */
|
|
68
43
|
export interface BadgeSettingsSource {
|
|
69
44
|
getSnapshot(): ResolvedBadgeSettings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-settings.d.ts","sourceRoot":"","sources":["../../../src/client/badge-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,sDAAsD;AACtD,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAE1C,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,
|
|
1
|
+
{"version":3,"file":"badge-settings.d.ts","sourceRoot":"","sources":["../../../src/client/badge-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,sDAAsD;AACtD,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAE1C,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,sBAAsB;AACtB,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,6CAA6C;IAC7C,kBAAkB,EAAE,OAAO,CAAA;IAC3B,yEAAyE;IACzE,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAA;IACzB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,WAAW,IAAI,qBAAqB,CAAA;IACpC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,qDAAqD;AACrD,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAAA;CAC1D;AAED,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,EAAE,qBAMnC,CAAA;AAmCF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,IAAI,0BAA0B,CAuBtE;AAED,qCAAqC;AACrC,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GAAG,qBAAqB,CAEtG"}
|
|
@@ -21,25 +21,11 @@
|
|
|
21
21
|
*/
|
|
22
22
|
/** Loader 条目 id —— 设置页的寻址键,也是宿主 `describe()` 的 ns。 */
|
|
23
23
|
export const ENTRY_ID = 'dsh-group-status';
|
|
24
|
-
/**
|
|
25
|
-
* 一个 facet 是否被设置关掉。
|
|
26
|
-
*
|
|
27
|
-
* - 没有 `settingKey` → 始终参与(缺省是"显示",与其余开关的默认值同源)。
|
|
28
|
-
* - 声明了但不是布尔开关键 → 同样按显示处理:拼错的键不该让一个状态整块消失。
|
|
29
|
-
*/
|
|
30
|
-
export function facetVisibleBySettings(settings, settingKey) {
|
|
31
|
-
if (settingKey === undefined)
|
|
32
|
-
return true;
|
|
33
|
-
const value = settings[settingKey];
|
|
34
|
-
return typeof value === 'boolean' ? value : true;
|
|
35
|
-
}
|
|
36
24
|
/** 默认值:与 `Config` 各字段的 schema 默认同源(全部显示,数字阈值 2 即 count=1 时省略)。 */
|
|
37
25
|
export const DEFAULT_BADGE_SETTINGS = Object.freeze({
|
|
38
26
|
showCompletedInBadge: true,
|
|
39
27
|
showRunningInBadge: true,
|
|
40
28
|
showPendingInBadge: true,
|
|
41
|
-
showScheduledInBadge: true,
|
|
42
|
-
showWaitingReviewInBadge: true,
|
|
43
29
|
showHoverDetails: true,
|
|
44
30
|
countThreshold: 2,
|
|
45
31
|
});
|
|
@@ -48,8 +34,6 @@ function settingsEqual(a, b) {
|
|
|
48
34
|
return (a.showCompletedInBadge === b.showCompletedInBadge &&
|
|
49
35
|
a.showRunningInBadge === b.showRunningInBadge &&
|
|
50
36
|
a.showPendingInBadge === b.showPendingInBadge &&
|
|
51
|
-
a.showScheduledInBadge === b.showScheduledInBadge &&
|
|
52
|
-
a.showWaitingReviewInBadge === b.showWaitingReviewInBadge &&
|
|
53
37
|
a.showHoverDetails === b.showHoverDetails &&
|
|
54
38
|
a.countThreshold === b.countThreshold);
|
|
55
39
|
}
|
|
@@ -72,8 +56,6 @@ function resolveFromSnapshot(snap) {
|
|
|
72
56
|
showCompletedInBadge: getBool('showCompletedInBadge', true),
|
|
73
57
|
showRunningInBadge: getBool('showRunningInBadge', true),
|
|
74
58
|
showPendingInBadge: getBool('showPendingInBadge', true),
|
|
75
|
-
showScheduledInBadge: getBool('showScheduledInBadge', true),
|
|
76
|
-
showWaitingReviewInBadge: getBool('showWaitingReviewInBadge', true),
|
|
77
59
|
showHoverDetails: getBool('showHoverDetails', true),
|
|
78
60
|
countThreshold: getNumber('countThreshold', 2),
|
|
79
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-settings.js","sourceRoot":"","sources":["../../../src/client/badge-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"badge-settings.js","sourceRoot":"","sources":["../../../src/client/badge-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,7 +99,7 @@ export interface GroupStatusFacet<Input = unknown, Data = unknown> {
|
|
|
99
99
|
readonly protocol: number;
|
|
100
100
|
/**
|
|
101
101
|
* 全局唯一 id,建议 `'<包名>.<状态名>'`(如 `'dsh-gitea-dispatch.waiting-review'`)。
|
|
102
|
-
* 它同时是 React key
|
|
102
|
+
* 它同时是 React key 与重复注册的判据。
|
|
103
103
|
*/
|
|
104
104
|
readonly id: string;
|
|
105
105
|
/**
|
|
@@ -142,10 +142,20 @@ export interface GroupStatusFacet<Input = unknown, Data = unknown> {
|
|
|
142
142
|
*/
|
|
143
143
|
renderIcon?(fold: FacetFold<Data>, context: FacetRenderContext): ReactNode;
|
|
144
144
|
/**
|
|
145
|
-
*
|
|
145
|
+
* **已废弃(v1 保留字段,本插件不再读取)**。
|
|
146
146
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
147
|
+
* 原语义是"我受本插件哪个布尔开关管"(如 `'showWaitingReviewInBadge'`)。但那等于把
|
|
148
|
+
* 别人家的域名与图标形状写进本插件的配置面,与「本插件不认识任何具体来源」直接矛盾,
|
|
149
|
+
* 那两个字段也已经从 `Config` 删除。
|
|
150
|
+
*
|
|
151
|
+
* 现在的规则只有一条:**登记即显示,不注册即不显示**。要给用户一个"关掉它"的开关,
|
|
152
|
+
* 请加在**你自己的**配置卡片里,关掉时不注册 facet —— 显隐是来源自己的产品决定,
|
|
153
|
+
* 只有你知道关掉它意味着什么。
|
|
154
|
+
*
|
|
155
|
+
* 保留而不删除是为了让已接入的提供方**不必同步改版本**:填了它不会报错,也**不会**
|
|
156
|
+
* 再影响任何显示。看到它请直接从你的 facet 里删掉。
|
|
157
|
+
*
|
|
158
|
+
* @deprecated 本插件不再读取;显隐由 provider 决定是否注册。
|
|
149
159
|
*/
|
|
150
160
|
settingKey?: string;
|
|
151
161
|
/**
|
|
@@ -248,10 +258,34 @@ export interface FacetRegistry {
|
|
|
248
258
|
/** 创建一张登记表面(测试用;生产走模块级单例 {@link registry})。 */
|
|
249
259
|
export declare function createFacetRegistry(): FacetRegistry;
|
|
250
260
|
/**
|
|
251
|
-
*
|
|
261
|
+
* 取(并首次创建)**进程级**共享的登记表面。
|
|
262
|
+
*
|
|
263
|
+
* ## 为什么不能是模块级
|
|
264
|
+
*
|
|
265
|
+
* 提供方把 facet 注册进来是一次性的:它在自己的 `apply` 里 `require` 本插件的 client
|
|
266
|
+
* 入口、登记完就把注销函数挂在 effect 上。而宿主的热替换(HMR、`reload(id, rev)`)
|
|
267
|
+
* **只换代被替换的那个模块**——`dsh-client-modules` 的 `invalidate()` 只删自己那一行的
|
|
268
|
+
* factory 与 loadCache,不级联到"谁 require 过它"(依赖方不会重跑 apply)。
|
|
269
|
+
*
|
|
270
|
+
* 于是模块级单例在这里必然失效:本插件被换成新实例 → 新实例建一张**空表** → 提供方
|
|
271
|
+
* 那份注册留在被丢弃的旧表上 → 徽标从此少一家,且**只有刷新页面才好**。开发环境天天
|
|
272
|
+
* 重建 `lib/`,这条几乎必然发生。
|
|
273
|
+
*
|
|
274
|
+
* 挂到 `globalThis` 上之后,换代只是"再拿一次同一张表":注册跨换代存活,`facetStore()`
|
|
275
|
+
* 在新实例里 `rewire()` 时照样订阅到那些来源。提供方被换代时按同 id 覆盖登记(见
|
|
276
|
+
* {@link FacetRegistry.register} 的来源决胜),不会重复计数。
|
|
277
|
+
*
|
|
278
|
+
* @returns 全进程唯一的登记表面。
|
|
279
|
+
*/
|
|
280
|
+
export declare function sharedFacetRegistry(): FacetRegistry;
|
|
281
|
+
/**
|
|
282
|
+
* 生产用的单例登记表面。
|
|
252
283
|
*
|
|
253
284
|
* 与 {@link createFacetRegistry} 分开,是为了让测试能对着一张干净的表断言协议行为,
|
|
254
285
|
* 而不会被别的用例或别的插件登记的 facet 污染。
|
|
286
|
+
*
|
|
287
|
+
* ⚠️ 它只是 {@link sharedFacetRegistry} 在**本模块首次加载时**取到的那份引用;跨模块实例
|
|
288
|
+
* 存活的是 globalThis 上那一张,所以运行期一律经 {@link sharedFacetRegistry} 现取。
|
|
255
289
|
*/
|
|
256
290
|
export declare const registry: FacetRegistry;
|
|
257
291
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../../src/client/facets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,qCAAqC;AACrC,eAAO,MAAM,mCAAmC,IAAI,CAAA;AAEpD,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjD,sCAAsC;AACtC,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAE9D,CAAA;AAEF;;;;;GAKG;AACH,MAAM,WAAW,SAAS,CAAC,IAAI,GAAG,OAAO;IACvC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,YAAY;IACZ,IAAI,EAAE,SAAS,CAAA;IACf,+BAA+B;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;OAMG;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAA;CACtE;AAED,kBAAkB;AAClB,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IAC/D,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,sDAAsD;IACtD,WAAW,IAAI,KAAK,GAAG,SAAS,CAAA;IAChC;;;;;;;;OAQG;IACH,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9F;;;;;OAKG;IACH,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC/D;;;;;OAKG;IACH,KAAK,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAAA;IAClE;;;;;OAKG;IACH,UAAU,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAC1E
|
|
1
|
+
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../../src/client/facets.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,12 +161,53 @@ export function createFacetRegistry() {
|
|
|
161
161
|
};
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
164
|
-
*
|
|
164
|
+
* 挂在 `globalThis` 上的登记表面的键名。
|
|
165
|
+
*
|
|
166
|
+
* 它同时是**现场诊断入口**:宿主里可以直接
|
|
167
|
+
* `globalThis.__dshGroupStatusFacetRegistry__.list().map(e => e.facet.id)` 读出"此刻到底
|
|
168
|
+
* 有哪些状态源登记上了"——「我注册了为什么没显示」不该只能靠猜(协议文档点名的那类
|
|
169
|
+
* 不可诊断失败)。
|
|
170
|
+
*/
|
|
171
|
+
const SHARED_REGISTRY_KEY = '__dshGroupStatusFacetRegistry__';
|
|
172
|
+
/**
|
|
173
|
+
* 取(并首次创建)**进程级**共享的登记表面。
|
|
174
|
+
*
|
|
175
|
+
* ## 为什么不能是模块级
|
|
176
|
+
*
|
|
177
|
+
* 提供方把 facet 注册进来是一次性的:它在自己的 `apply` 里 `require` 本插件的 client
|
|
178
|
+
* 入口、登记完就把注销函数挂在 effect 上。而宿主的热替换(HMR、`reload(id, rev)`)
|
|
179
|
+
* **只换代被替换的那个模块**——`dsh-client-modules` 的 `invalidate()` 只删自己那一行的
|
|
180
|
+
* factory 与 loadCache,不级联到"谁 require 过它"(依赖方不会重跑 apply)。
|
|
181
|
+
*
|
|
182
|
+
* 于是模块级单例在这里必然失效:本插件被换成新实例 → 新实例建一张**空表** → 提供方
|
|
183
|
+
* 那份注册留在被丢弃的旧表上 → 徽标从此少一家,且**只有刷新页面才好**。开发环境天天
|
|
184
|
+
* 重建 `lib/`,这条几乎必然发生。
|
|
185
|
+
*
|
|
186
|
+
* 挂到 `globalThis` 上之后,换代只是"再拿一次同一张表":注册跨换代存活,`facetStore()`
|
|
187
|
+
* 在新实例里 `rewire()` 时照样订阅到那些来源。提供方被换代时按同 id 覆盖登记(见
|
|
188
|
+
* {@link FacetRegistry.register} 的来源决胜),不会重复计数。
|
|
189
|
+
*
|
|
190
|
+
* @returns 全进程唯一的登记表面。
|
|
191
|
+
*/
|
|
192
|
+
export function sharedFacetRegistry() {
|
|
193
|
+
const host = globalThis;
|
|
194
|
+
const existing = host[SHARED_REGISTRY_KEY];
|
|
195
|
+
if (existing !== undefined)
|
|
196
|
+
return existing;
|
|
197
|
+
const created = createFacetRegistry();
|
|
198
|
+
host[SHARED_REGISTRY_KEY] = created;
|
|
199
|
+
return created;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* 生产用的单例登记表面。
|
|
165
203
|
*
|
|
166
204
|
* 与 {@link createFacetRegistry} 分开,是为了让测试能对着一张干净的表断言协议行为,
|
|
167
205
|
* 而不会被别的用例或别的插件登记的 facet 污染。
|
|
206
|
+
*
|
|
207
|
+
* ⚠️ 它只是 {@link sharedFacetRegistry} 在**本模块首次加载时**取到的那份引用;跨模块实例
|
|
208
|
+
* 存活的是 globalThis 上那一张,所以运行期一律经 {@link sharedFacetRegistry} 现取。
|
|
168
209
|
*/
|
|
169
|
-
export const registry =
|
|
210
|
+
export const registry = sharedFacetRegistry();
|
|
170
211
|
/**
|
|
171
212
|
* 本插件 client 入口对外的登记函数(provider 侧唯一需要认识的符号)。
|
|
172
213
|
*
|
|
@@ -175,7 +216,10 @@ export const registry = createFacetRegistry();
|
|
|
175
216
|
* 返回值形状保持稳定,provider 的 dispose 路径不必区分成败。
|
|
176
217
|
*/
|
|
177
218
|
export function registerGroupStatusFacet(facet) {
|
|
178
|
-
|
|
219
|
+
// 现取共享表,而不是用模块加载时那份引用:`globalThis` 上的表被换掉(测试清场、
|
|
220
|
+
// 或未来支持热切换实现)之后,新注册必须落到**当前活着**的那张表上。
|
|
221
|
+
const target = sharedFacetRegistry();
|
|
222
|
+
const result = target.register(facet);
|
|
179
223
|
if (!result.ok) {
|
|
180
224
|
// 过渡期适配器被状态所有者顶掉是**预期结果**,不是错误:报一条 warn 会让人以为
|
|
181
225
|
// 徽标坏了。除此之外的每一次失败都必须可见,否则"注册了却没显示"无从诊断。
|
|
@@ -185,7 +229,7 @@ export function registerGroupStatusFacet(facet) {
|
|
|
185
229
|
}
|
|
186
230
|
// 只摘"还是自己"的那一份:同 id 已被后来的实现替换时,旧 dispose 不该动新登记。
|
|
187
231
|
return () => {
|
|
188
|
-
|
|
232
|
+
target.remove(result.id, facet);
|
|
189
233
|
};
|
|
190
234
|
}
|
|
191
235
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.js","sourceRoot":"","sources":["../../../src/client/facets.ts"],"names":[],"mappings":"AA0DA,qCAAqC;AACrC,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAA;AAKpD,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAwC,MAAM,CAAC,MAAM,CAAC;IAChF,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;CAC3B,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"facets.js","sourceRoot":"","sources":["../../../src/client/facets.ts"],"names":[],"mappings":"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"}
|