@linkdesk/plugin-sdk 0.1.25 → 0.1.26

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.
@@ -44,4 +44,27 @@ export declare const lineAt: (text: string, index: number) => number;
44
44
  export declare function bareClassDefinitions(cleaned: string): BareClassDefinition[];
45
45
  /** 列举 `@keyframes` 名(关键帧名同样是全局标识符——第二条命名空间) */
46
46
  export declare function keyframeDefinitions(cleaned: string): KeyframeDefinition[];
47
+ /** 定义点的作用域形态:`doc`(文档级)· `class`(类限定)· `id`(id 限定)· `other`(元素/通配/属性) */
48
+ export type TokenScope = "doc" | "class" | "id" | "other";
49
+ /** 一个 compound 的作用域形态 */
50
+ export declare function tokenScopeOf(compound: string): TokenScope;
51
+ /** compound 里的类名(剥属性选择器后再抓 `.x` —— `[class*=".x"]` 这类不算) */
52
+ export declare function classesInCompound(compound: string): string[];
53
+ /** V5 的判定体:该 compound 里有没有 `${prefix}` 开头的类(本仓前缀 = `<pluginId>-`) */
54
+ export declare function hasOwnClass(compound: string, prefix: string): boolean;
55
+ /** 一个自定义属性(token)的定义点 */
56
+ export interface TokenDefinition {
57
+ /** 名字(**不含**前导 `--`) */
58
+ name: string;
59
+ /** 1-based;= 该规则块选择器首个非空白字符所在行(与 `BareClassDefinition.line` 同款) */
60
+ line: number;
61
+ /** 逗号切开后的那一份选择器文本(compound 原文,供报点回显与 V5 判「有没有自有类」) */
62
+ selector: string;
63
+ scope: TokenScope;
64
+ }
65
+ /**
66
+ * 列举一张样式表里的**自定义属性定义点**(同一条规则块里的多个选择器各出一份 —— 与类名轴同款)。
67
+ * 入参 = `stripComments(src)` 的输出。`var(--x)` 前一个字符是 `(` ⇒ 天然不命中「定义」。
68
+ */
69
+ export declare function tokenDefinitions(cleaned: string): TokenDefinition[];
47
70
  //# sourceMappingURL=css-selectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"css-selectors.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/css-selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,0BAA0B,CAAA,MAAM,WAAW,mBAAmB;IAC5D,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2BAA2B;AAC3B,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcnD;AAED,6CAA6C;AAC7C,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MAAiD,CAAC;AAKvG;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAiB3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAMzE"}
1
+ {"version":3,"file":"css-selectors.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/css-selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,0BAA0B,CAAA,MAAM,WAAW,mBAAmB;IAC5D,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2BAA2B;AAC3B,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcnD;AAED,6CAA6C;AAC7C,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MAAiD,CAAC;AAKvG;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAiB3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAMzE;AAYD,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AAW1D,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAOzD;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAG5D;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAenE"}
@@ -67,4 +67,57 @@ export function keyframeDefinitions(cleaned) {
67
67
  }
68
68
  return out;
69
69
  }
70
+ /** 文档级主体((a)):`:root` / `html` / `body` / `[data-theme…]` / 通配 `*`。
71
+ * ⚠️ 只看**主体**(最后一个 compound、且**只剥伪元素**)——`:root` 本身是**伪类**,
72
+ * 用 `subjectOf()`(连伪类一起剥)会把 `:root` 剥成空串 ⇒ 这里单独剥 `::x` 形态。
73
+ * ⚠️ `* .foo` 的主体是 `.foo`(定义落在 `.foo` 上)⇒ 不是文档级;`*::before` 剥完是 `*` ⇒ 是。 */
74
+ const DOC_SUBJECT = /^(:root|html|body|\[data-theme|\*)/i;
75
+ /** 剥**伪元素**(`:hover` / `:root` / `[data-theme=…]` 都保留) */
76
+ const stripPseudoElements = (compound) => compound.replace(/::[a-zA-Z-]+(\([^)]*\))?/g, "");
77
+ /** 一个 compound 的作用域形态 */
78
+ export function tokenScopeOf(compound) {
79
+ const subject = stripPseudoElements(String(compound)).trim().split(/[\s>+~]+/).filter(Boolean).pop() ?? "";
80
+ if (!subject)
81
+ return "doc"; // 纯伪元素形态(`::selection`)——无主体 ⇒ 文档级
82
+ if (DOC_SUBJECT.test(subject))
83
+ return "doc";
84
+ if (subject.startsWith("#"))
85
+ return "id";
86
+ if (subject.includes("."))
87
+ return "class";
88
+ return "other";
89
+ }
90
+ /** compound 里的类名(剥属性选择器后再抓 `.x` —— `[class*=".x"]` 这类不算) */
91
+ export function classesInCompound(compound) {
92
+ const noAttr = String(compound).replace(/\[[^\]]*\]/g, "");
93
+ return [...noAttr.matchAll(/\.(-?[_a-zA-Z][\w-]*)/g)].map((m) => m[1]);
94
+ }
95
+ /** V5 的判定体:该 compound 里有没有 `${prefix}` 开头的类(本仓前缀 = `<pluginId>-`) */
96
+ export function hasOwnClass(compound, prefix) {
97
+ return classesInCompound(compound).some((c) => c.startsWith(prefix));
98
+ }
99
+ /**
100
+ * 列举一张样式表里的**自定义属性定义点**(同一条规则块里的多个选择器各出一份 —— 与类名轴同款)。
101
+ * 入参 = `stripComments(src)` 的输出。`var(--x)` 前一个字符是 `(` ⇒ 天然不命中「定义」。
102
+ */
103
+ export function tokenDefinitions(cleaned) {
104
+ const out = [];
105
+ for (const m of cleaned.matchAll(/([^{}]+)\{([^{}]*)\}/g)) {
106
+ const sel = m[1].trim();
107
+ if (sel.startsWith("@") || !m[2].trim())
108
+ continue; // @media 等 at-rule 头 / 空规则体
109
+ const names = [];
110
+ for (const d of m[2].matchAll(/(?:^|[;{\s])--([a-zA-Z0-9][\w-]*)\s*:/g))
111
+ names.push(d[1]);
112
+ if (names.length === 0)
113
+ continue;
114
+ const line = lineAt(cleaned, m.index + (m[1].length - m[1].trimStart().length));
115
+ for (const one of splitSelector(sel)) {
116
+ const scope = tokenScopeOf(one);
117
+ for (const name of names)
118
+ out.push({ name, line, selector: one, scope });
119
+ }
120
+ }
121
+ return out;
122
+ }
70
123
  //# sourceMappingURL=css-selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"css-selectors.js","sourceRoot":"","sources":["../../../src/eslint/checks/css-selectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"css-selectors.js","sourceRoot":"","sources":["../../../src/eslint/checks/css-selectors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type CheckViolation } from "./scan.js";
2
+ import { type TokenScope } from "./css-selectors.js";
3
+ import { type PluginIdResolution } from "./plugin-prefix.js";
4
+ /** 判级文案——**与壳仓 `scripts/lib/css-selectors.mjs` 的 `TOKEN_WHY` 逐字一致**
5
+ * (跨包不能 import ⇒ 只能钉文案:壳门禁 `--self-test` 的 `锚⑦` 用锚词把两份钉在一起)。 */
6
+ export declare const TOKEN_WHY: {
7
+ readonly V2: string;
8
+ readonly V1: string;
9
+ readonly V5: string;
10
+ readonly V6: string;
11
+ };
12
+ export type TokenScopeCode = "V1" | "V2" | "V5" | "V6";
13
+ /** 一处 token 定义点的判级结果 */
14
+ export interface TokenScopeSite {
15
+ /** 工程相对路径(正斜杠) */
16
+ file: string;
17
+ /** 1-based(规则块选择器首行) */
18
+ line: number;
19
+ /** 名字(不含前导 `--`) */
20
+ name: string;
21
+ /** compound 原文(供报点回显;V5 用它判「有没有自有类」) */
22
+ selector: string;
23
+ scope: TokenScope;
24
+ level: "red" | "yellow";
25
+ code: TokenScopeCode;
26
+ why: string;
27
+ }
28
+ export interface TokenScopeReport {
29
+ root: string;
30
+ pluginId: string | null;
31
+ /** 非 null ⇒ fail-closed(拿不到前缀 ⇒ 本腿判不了「有主 / 无主」,一律红) */
32
+ error: string | null;
33
+ /** 🔴 必须改的(进腿报点 ⇒ CI 严格腿判红) */
34
+ red: TokenScopeSite[];
35
+ /** 🟡 建议改的(只打印,不拦) */
36
+ yellow: TokenScopeSite[];
37
+ /** 腿报点 = fail-closed + 全部红 */
38
+ violations: CheckViolation[];
39
+ /** 黄灯建议(`lint.ts` 打印用;**不进** `LintLeg.violations` ⇒ 不拦 CI) */
40
+ advisories: CheckViolation[];
41
+ }
42
+ /**
43
+ * 判一个定义点的级别。**判定式只此一处**(壳仓 `scripts/lib/css-selectors.mjs` 的
44
+ * `judgeTokenScope()` 是同一套判定式的镜像——壳门禁与运行时探针共用那一份)。
45
+ * 顺序 = **先出最具体的那条**:同一站点可能同时命中 V2 与 V1(`:root { --ldk-x: … }`)——不重复报,
46
+ * 报对该方最可操作的那一条(名字层比作用域层更根本)。
47
+ */
48
+ export declare function judgePluginTokenScope(site: {
49
+ name: string;
50
+ scope: TokenScope;
51
+ selector: string;
52
+ pluginId: string;
53
+ }): {
54
+ level: "red" | "yellow";
55
+ code: TokenScopeCode;
56
+ why: string;
57
+ } | null;
58
+ /**
59
+ * 跑本仓 token 作用域判据。返回结构化报告(审计工具 / lint 打印用)——**同一份实现,没有第二条判据路径**。
60
+ * ⚠️ `resolution` 可复用调用方已经取过的 `pluginId`(`lint.ts` 与前缀腿共用一次解析)。
61
+ */
62
+ export declare function runTokenScopeCheck(root: string, resolution?: PluginIdResolution): TokenScopeReport;
63
+ //# sourceMappingURL=token-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-scope.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/token-scope.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEpF;iEACiE;AACjE,eAAO,MAAM,SAAS;;;;;CAeZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD,wBAAwB;AACxB,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uDAAuD;IACvD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+BAA+B;IAC/B,GAAG,EAAE,cAAc,EAAE,CAAC;IACtB,sBAAsB;IACtB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,8BAA8B;IAC9B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,8DAA8D;IAC9D,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcxE;AAuBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,kBAAgD,GAC3D,gBAAgB,CAqDlB"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * check-css-namespace 腿·**自定义属性(token)作用域判据**(E6#109n-b · 轮次 1.24)。
3
+ *
4
+ * ── 规则一句话 ──
5
+ * **作用域才是命名空间。** 自定义属性名不需要前缀 —— 它**住在哪棵子树里**才是它属于谁:
6
+ * (a) **文档级**(`:root` / `html` / `body` / `[data-theme=…]` / 通配 `*`)只有**宿主契约块**能写;
7
+ * (b) 其余定义必须挂在**自有命名空间**的子树下(插件 = `.<pluginId>-*`);
8
+ * (c) 浮层宿主根 `#ld-float-layer` 一族 = portal 面例外(放宽「元素归谁」,不放宽「名字归谁」);
9
+ * (d) 名字层只有一句:**任何一方不得定义 `ldk-` 开头的自定义属性**。
10
+ * 规则正文:31-任务-token轴门禁与清账.md §一(`docs/02-Electron架构/E6_插件生态与发布/01-插件独立构建/样式命名空间归一化/`)。
11
+ *
12
+ * ── 为什么插件侧必须有这条腿(不是理论风险)──
13
+ * 1.23 实测(真跑的池文档):宿主 94 个契约名里 **83 个只有样式表提供、引擎不写 inline**
14
+ * ——默认主题是壳的**空兜底配方**(`colors: {}`)⇒ `commitTokens({})` 的差集清理把主题键全清掉、
15
+ * 值回落 `src/index.css` 的硬兜底(那是设计)。**后果**:插件在 `:root` 写一个宿主契约名就能
16
+ * **全局改写宿主的颜色 / 圆角 / z-index**(级联实验实证:`--success` / `--error` / `--z-dropdown` /
17
+ * `--badge-text` / `--bg-window` / `--radius-md` 全被改写),而且这个「屏蔽」随主题变化
18
+ * ⇒ **看着时好时坏**——最坏的一类 bug。这正是 `marketplace` 那次 `--status-connected` 覆写事故的形态。
19
+ *
20
+ * ── 四条判据(分级依据 = 22 号档 §10.3「判红只给 ① 本仓可答 ② 有真害」)──
21
+ * V2 🔴 定义了 `ldk-*` 自定义属性(**任何作用域**)——`ldk-` 整个命名空间属宿主,
22
+ * 与类名 / 关键帧**同一句**(CLAUDE.md 硬约束 23 ②)。
23
+ * V1 🔴 文档级 + 名字**不带本仓前缀** ⇒ 全局改写宿主 / 他方(真害已实测,见上)。
24
+ * V5 🔴 类限定 + 该 compound 里**没有**任何 `.<pluginId>-*` 类 ⇒ 定义落到了宿主 / 他方元素上
25
+ * (与件 7 的 R3「跨方命中必须有自有根类作祖先」同形)。
26
+ * V6 🟡 文档级 + 名字**自带本仓前缀** ⇒ 无人同吃、近乎无害 ⇒ **只报不拦**
27
+ * (判红只给「有真害」——升格成红 = 假红,而假红会让真红失效)。
28
+ *
29
+ * ── 级别与豁免 ──
30
+ * · 🔴 红进腿报点(`violations`)⇒ 插件仓 CI 的**严格腿**判红(`ci-verify.mjs` 的 strictLegs
31
+ * 是 fail-closed 的:SDK 新增一条腿自动进严格档)。
32
+ * · 🟡 黄进 `advisories`:**打印但不进腿报点** ⇒ 不拦 CI(这正是「只报不拦」的结构实现)。
33
+ * · 知情绕行 = 标准 disable 注释(`CHECK_IDS.cssNamespace`,与类名 / 关键帧判据**同一个 id**)。
34
+ * ⚠️ **身份层不可豁免**:拿不到 `pluginId` ⇒ fail-closed 红(没有前缀就无从判「有主 / 无主」)。
35
+ * · 口径与壳仓同源:定义点、作用域形态、多选择器规则的切分**都调 `css-selectors.ts` 的同一份实现**
36
+ * (`tokenDefinitions()` / `hasOwnClass()`)——不许各写一份近似版(22 号档 §一 层 3:尺子不止一把
37
+ * 就是本系列的病根)。
38
+ */
39
+ import { resolve } from "node:path";
40
+ import { collectCssUnits } from "./scan.js";
41
+ import { tokenDefinitions, hasOwnClass } from "./css-selectors.js";
42
+ import { isDisabled, CHECK_IDS } from "./disable.js";
43
+ import { resolvePluginIdForCss } from "./plugin-prefix.js";
44
+ /** 判级文案——**与壳仓 `scripts/lib/css-selectors.mjs` 的 `TOKEN_WHY` 逐字一致**
45
+ * (跨包不能 import ⇒ 只能钉文案:壳门禁 `--self-test` 的 `锚⑦` 用锚词把两份钉在一起)。 */
46
+ export const TOKEN_WHY = {
47
+ V2: "自定义属性名以 `ldk-` 开头——`ldk-` **整个命名空间属宿主**(与类名 / 关键帧同一句,CLAUDE.md 硬约束 23 ②)," +
48
+ "任何一方都不得定义(占名即「宿主契约名被他人改写」的入口)。",
49
+ V1: "非宿主方在**文档级**(`:root` / `html` / `body` / `[data-theme=…]` / `*`)定义了**不带自有前缀**的自定义属性" +
50
+ "——1.23 实测:宿主 94 个契约名里 **83 个只有样式表提供、引擎不写 inline**(默认主题是空兜底配方 ⇒ " +
51
+ "差集清理把主题键全清掉)⇒ **一条 `:root` 就能全局改写宿主的颜色 / 圆角 / z-index**," +
52
+ "而且这个「屏蔽」随主题变化=时好时坏(`marketplace` 那次 `--status-connected` 覆写事故正是此形态)。",
53
+ V5: "插件的**类限定**自定义属性定义**不含本仓 `pluginId` 前缀的类**(`.<pluginId>-*`)" +
54
+ "——定义落到了宿主 / 他方元素上(与件 7 的 R3「跨方命中必须有自有根类作祖先」同形)。",
55
+ V6: "插件的**文档级**定义、但名字自带本仓前缀(`<pluginId>-`)——无人同吃、**近乎无害**(🟡 只报不拦," +
56
+ "22 号档 §10.3:判红只给「本仓可答 + 有真害」),建议改挂自有根类。",
57
+ };
58
+ /**
59
+ * 判一个定义点的级别。**判定式只此一处**(壳仓 `scripts/lib/css-selectors.mjs` 的
60
+ * `judgeTokenScope()` 是同一套判定式的镜像——壳门禁与运行时探针共用那一份)。
61
+ * 顺序 = **先出最具体的那条**:同一站点可能同时命中 V2 与 V1(`:root { --ldk-x: … }`)——不重复报,
62
+ * 报对该方最可操作的那一条(名字层比作用域层更根本)。
63
+ */
64
+ export function judgePluginTokenScope(site) {
65
+ const prefix = `${site.pluginId}-`;
66
+ if (site.name.startsWith("ldk-"))
67
+ return { level: "red", code: "V2", why: TOKEN_WHY.V2 };
68
+ if (site.scope === "doc") {
69
+ return site.name.startsWith(prefix)
70
+ ? { level: "yellow", code: "V6", why: TOKEN_WHY.V6 }
71
+ : { level: "red", code: "V1", why: TOKEN_WHY.V1 };
72
+ }
73
+ if (site.scope === "class") {
74
+ if (hasOwnClass(site.selector, prefix))
75
+ return null; // 自有类之下 ⇒ 合规(那里的名字随你)
76
+ return { level: "red", code: "V5", why: TOKEN_WHY.V5 };
77
+ }
78
+ // id((c) portal 面)/ other(元素·通配·属性形态,归件 7 的选择器形态轴)⇒ 本轴不判
79
+ return null;
80
+ }
81
+ /** 一处站点的报点文案(红 / 黄共用;`level` 决定抬头与措辞) */
82
+ function messageOf(site, pluginId) {
83
+ const head = site.level === "red"
84
+ ? `[${site.code}] ${site.selector} { --${site.name}: … } ← 本仓 pluginId = "${pluginId}"`
85
+ : `[${site.code}] ${site.selector} { --${site.name}: … } ← 🟡 建议(不拦 build)`;
86
+ const fix = site.code === "V1"
87
+ ? `改成挂在自有根类之下(如 \`.${pluginId}-root { --${site.name}: … }\`)——**那里的名字不需要前缀**;` +
88
+ `要改宿主契约的样子请走主题(主题的配方键),不要在 CSS 里覆写宿主契约名。`
89
+ : site.code === "V2"
90
+ ? `换成自有语义名(\`ldk-\` 名字空间归宿主)。`
91
+ : site.code === "V5"
92
+ ? `把定义搬到自有根类之下(\`.<pluginId>-*\`)——顶层 \`.ldk-*\` 是宿主 / 共享组件的地盘,` +
93
+ `跨方命中必须有自己的根类作祖先。注意 \`.${pluginId}-root .ldk-x { … }\` 这类 **scoped 调优是合规的**` +
94
+ `(compound 里有自有类),本判据只拦「一个自有类都没有」的形态。`
95
+ : `把它搬进本插件的根类之下(形如 \`.${pluginId}-root { --${site.name}: … }\`)——` +
96
+ `同文档同 bundle 时视觉完全一样,但作用域从「整个文档」缩回「我自己的子树」。`;
97
+ return `${head}——${site.why} 改法:${fix}`;
98
+ }
99
+ /**
100
+ * 跑本仓 token 作用域判据。返回结构化报告(审计工具 / lint 打印用)——**同一份实现,没有第二条判据路径**。
101
+ * ⚠️ `resolution` 可复用调用方已经取过的 `pluginId`(`lint.ts` 与前缀腿共用一次解析)。
102
+ */
103
+ export function runTokenScopeCheck(root, resolution = resolvePluginIdForCss(root)) {
104
+ const absRoot = resolve(root);
105
+ const report = {
106
+ root: absRoot,
107
+ pluginId: resolution.pluginId,
108
+ error: resolution.error,
109
+ red: [],
110
+ yellow: [],
111
+ violations: [],
112
+ advisories: [],
113
+ };
114
+ // ── fail-closed(不可豁免):拿不到前缀 ⇒ 判不了「有主 / 无主」 ──
115
+ if (resolution.error || !resolution.pluginId) {
116
+ report.violations.push({
117
+ file: "plugin.json",
118
+ line: 1,
119
+ message: `拿不到本仓前缀:${resolution.error}。**token 作用域判据不许静默放过**——它要判的正是「名字是不是你自己的」,` +
120
+ `拿不到 \`pluginId\` 就判不了(fail-closed)。在插件工程根修好 plugin.json(或显式声明 pluginId);` +
121
+ `身份问题不受 disable 注释管辖。`,
122
+ });
123
+ return report;
124
+ }
125
+ const pluginId = resolution.pluginId;
126
+ for (const unit of collectCssUnits(absRoot, [CHECK_IDS.cssNamespace])) {
127
+ for (const def of tokenDefinitions(unit.cleaned)) {
128
+ const verdict = judgePluginTokenScope({ name: def.name, scope: def.scope, selector: def.selector, pluginId });
129
+ if (!verdict)
130
+ continue;
131
+ // 知情绕行:同一个 check id(与类名 / 关键帧判据同一套 disable 机制)——红黄同样静默
132
+ if (isDisabled(unit.disabled, def.line, CHECK_IDS.cssNamespace))
133
+ continue;
134
+ const site = {
135
+ file: unit.rel,
136
+ line: def.line,
137
+ name: def.name,
138
+ selector: def.selector,
139
+ scope: def.scope,
140
+ level: verdict.level,
141
+ code: verdict.code,
142
+ why: verdict.why,
143
+ };
144
+ const message = messageOf(site, pluginId);
145
+ if (verdict.level === "red") {
146
+ report.red.push(site);
147
+ report.violations.push({ file: unit.rel, line: def.line, message });
148
+ }
149
+ else {
150
+ report.yellow.push(site);
151
+ report.advisories.push({ file: unit.rel, line: def.line, message });
152
+ }
153
+ }
154
+ }
155
+ return report;
156
+ }
157
+ //# sourceMappingURL=token-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-scope.js","sourceRoot":"","sources":["../../../src/eslint/checks/token-scope.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@
12
12
  * 🔴 E6#109h-b①:`runPluginPrefixCheck` 是**唯一一个对内 check 的具名导出**,专供壳仓只读审计工具
13
13
  * `scripts/plugin-css-prefix-audit.mjs`(改名轮 ③–⑦ 生成「旧名 → 新名」映射、⑧ 全量复核)。
14
14
  * **它不是第二条判据路径**:`lint.ts` 的腿用的是**同一个函数**——工具与腿同源,改一处两边一起变。
15
+ *
16
+ * 🔴 E6#109n-b(1.24):同一纪律再加一个 —— `runTokenScopeCheck`(token 作用域判据;审计工具用它出
17
+ * 18 仓的 token 段读数)。**同样不是第二条判据路径**(腿用的就是它)。
15
18
  */
16
19
  export { linkdeskPluginLintConfig } from "./preset.js";
17
20
  export type { PluginLintOptions } from "./preset.js";
@@ -19,4 +22,6 @@ export { runPluginLint, renderPluginLintReport } from "./lint.js";
19
22
  export type { PluginLintReport, LintLeg } from "./lint.js";
20
23
  export { runPluginPrefixCheck, resolvePluginIdForCss } from "./checks/plugin-prefix.js";
21
24
  export type { PluginPrefixReport, PrefixSite, PluginIdResolution, PluginIdSource } from "./checks/plugin-prefix.js";
25
+ export { runTokenScopeCheck, judgePluginTokenScope } from "./checks/token-scope.js";
26
+ export type { TokenScopeReport, TokenScopeSite, TokenScopeCode } from "./checks/token-scope.js";
22
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACxF,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACxF,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACpF,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
@@ -12,8 +12,12 @@
12
12
  * 🔴 E6#109h-b①:`runPluginPrefixCheck` 是**唯一一个对内 check 的具名导出**,专供壳仓只读审计工具
13
13
  * `scripts/plugin-css-prefix-audit.mjs`(改名轮 ③–⑦ 生成「旧名 → 新名」映射、⑧ 全量复核)。
14
14
  * **它不是第二条判据路径**:`lint.ts` 的腿用的是**同一个函数**——工具与腿同源,改一处两边一起变。
15
+ *
16
+ * 🔴 E6#109n-b(1.24):同一纪律再加一个 —— `runTokenScopeCheck`(token 作用域判据;审计工具用它出
17
+ * 18 仓的 token 段读数)。**同样不是第二条判据路径**(腿用的就是它)。
15
18
  */
16
19
  export { linkdeskPluginLintConfig } from "./preset.js";
17
20
  export { runPluginLint, renderPluginLintReport } from "./lint.js";
18
21
  export { runPluginPrefixCheck, resolvePluginIdForCss } from "./checks/plugin-prefix.js";
22
+ export { runTokenScopeCheck, judgePluginTokenScope } from "./checks/token-scope.js";
19
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -23,6 +23,13 @@ export interface PluginLintReport {
23
23
  pluginId: string | null;
24
24
  /** pluginId 走了「目录名兜底」时的提示行——**必须打印**(详案 15 §一:让作者知道门禁用的是目录名) */
25
25
  pluginIdNote: string | null;
26
+ /** 🟡 token 作用域的黄灯建议(V6:文档级但名字带自有前缀)——**只打印、不拦**(E6#109n-b) */
27
+ tokenAdvisories: CheckViolation[];
28
+ /** token 作用域判据的计数(红 = 进了腿报点;黄 = advisories) */
29
+ tokenCounts: {
30
+ red: number;
31
+ yellow: number;
32
+ };
26
33
  }
27
34
  export declare function runPluginLint(root: string, options?: PluginLintOptions): Promise<PluginLintReport>;
28
35
  /** 打印报告(人机双通道的即时反馈环);返回进程退出码(真 error 才 1,WARN 永不 fail)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/eslint/lint.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAM/E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gEAAgE;IAChE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmF5G;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAqCvE"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/eslint/lint.ts"],"names":[],"mappings":"AAuBA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAO/E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gEAAgE;IAChE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+DAA+D;IAC/D,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,+CAA+C;IAC/C,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgG5G;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA+CvE"}
@@ -6,6 +6,10 @@
6
6
  * (`checks/reserved-classes.ts`,随包清单)。两者**同一个 checkId / 同一条腿**,报点按 `文件:行`
7
7
  * 去重(前缀优先)——详见该腿的组装处注释。
8
8
  *
9
+ * 🔴 E6#109n-b(1.24)再加第三条:**token(自定义属性)作用域**(`checks/token-scope.ts`)——
10
+ * 文档级只有宿主契约块能写、其余定义必须挂在自有命名空间的类之下、任何方不得定义 `ldk-*`
11
+ * 自定义属性。红进腿报点(CI 严格腿判红),🟡 黄(V6)只打印不拦。规则正文见 31 号档 §一。
12
+ *
9
13
  * 对标壳 check 同款双轨(07 §六·载体双轨):eslint(12 项注册规则,全 WARN)管 ts/tsx;
10
14
  * css-hardcode / font-scale / spacing-grid / css-namespace 四条移植脚本管整工程(eslint 到不了 .css,
11
15
  * ts/tsx 的 rgb()/hsl() 也归 css-hardcode 补)。jscpd = 项目级可选(文档引导,不进编排)。
@@ -23,6 +27,7 @@ import { runFontScaleCheck } from "./checks/font-scale.js";
23
27
  import { runSpacingGridCheck } from "./checks/spacing-grid.js";
24
28
  import { runReservedClassCheck } from "./checks/reserved-classes.js";
25
29
  import { runPluginPrefixCheck } from "./checks/plugin-prefix.js";
30
+ import { runTokenScopeCheck } from "./checks/token-scope.js";
26
31
  import {} from "./checks/scan.js";
27
32
  /** 示例用的门禁 id(打印知情绕行格式);伪 id 与 check 脚本 CHECK_IDS 同源 */
28
33
  const LEG_HINT_ID = "linkdesk/no-hardcoded-hex";
@@ -80,10 +85,21 @@ export async function runPluginLint(root, options = {}) {
80
85
  */
81
86
  const prefix = runPluginPrefixCheck(absRoot);
82
87
  const reserved = runReservedClassCheck(absRoot);
88
+ /**
89
+ * 🔴 E6#109n-b(1.24):命名空间腿再加一条判据 —— **token(自定义属性)作用域**。
90
+ * · 红(V1/V2/V5)进本腿报点 ⇒ CI 严格腿判红;
91
+ * · 🟡 黄(V6:文档级但名字带自有前缀)进 `tokenAdvisories`**只打印、不拦**(22 号档 §10.3)。
92
+ * ⚠️ 去重口径:(`文件:行`)已被前一条判据占用时**不重复报**——同一处 CSS 同时命中
93
+ * 「裸类名不带前缀」与「token 作用域」的概率低,但 fail-closed 那条(`plugin.json:1`)
94
+ * 必然重叠(前缀腿已报同一件事)⇒ 以先出的为准。
95
+ */
96
+ const tokenScope = runTokenScopeCheck(absRoot);
83
97
  const prefixKeys = new Set(prefix.violations.map((v) => `${v.file}:${v.line}`));
98
+ const tokenKeys = new Set(tokenScope.violations.map((v) => `${v.file}:${v.line}`));
84
99
  const namespace = [
85
- ...prefix.violations,
86
- ...reserved.filter((v) => !prefixKeys.has(`${v.file}:${v.line}`)),
100
+ ...prefix.violations, // 前缀腿(含 fail-closed)
101
+ ...tokenScope.violations.filter((v) => !prefixKeys.has(`${v.file}:${v.line}`)), // token 腿(同点不重复报)
102
+ ...reserved.filter((v) => !prefixKeys.has(`${v.file}:${v.line}`) && !tokenKeys.has(`${v.file}:${v.line}`)),
87
103
  ];
88
104
  const legs = [
89
105
  { id: "linkdesk/no-hardcoded-hex(css + rgb/hsl 腿)", label: "check-css-hardcode", violations: css },
@@ -104,6 +120,8 @@ export async function runPluginLint(root, options = {}) {
104
120
  tsconfigUsed: tsconfig ? tsconfig : null,
105
121
  pluginId: prefix.pluginId,
106
122
  pluginIdNote: prefix.pluginIdNote,
123
+ tokenAdvisories: tokenScope.advisories,
124
+ tokenCounts: { red: tokenScope.red.length, yellow: tokenScope.yellow.length },
107
125
  };
108
126
  }
109
127
  /** 打印报告(人机双通道的即时反馈环);返回进程退出码(真 error 才 1,WARN 永不 fail)。 */
@@ -137,6 +155,14 @@ export function renderPluginLintReport(report) {
137
155
  // 命名空间腿的前缀来源(E6#109h-b①)——目录名兜底时必须让作者看见(不许静默)
138
156
  if (report.pluginIdNote)
139
157
  lines.push(`\nℹ 命名空间腿的前缀来源:${report.pluginIdNote}`);
158
+ // 🟡 token 作用域的黄灯建议(E6#109n-b)——**只报不拦**:不进腿报点,故不影响 CI 结论
159
+ if (report.tokenAdvisories.length > 0) {
160
+ lines.push(`\n🟡 check-css-namespace(token 作用域):${report.tokenAdvisories.length} 处**建议**(不拦 build)——` +
161
+ `文档级定义但名字自带本仓前缀(V6):没人跟你抢这个名字,但「写在 \`:root\`」这件事本身没有理由;` +
162
+ `搬进自己的根类之下,作用域从整个文档缩回自己的子树。`);
163
+ for (const v of report.tokenAdvisories)
164
+ lines.push(` ${v.file}:${v.line} ${v.message}`);
165
+ }
140
166
  lines.push(`\n门禁 = 警告不是封锁(07 §六·三档):未处理偏离可修可绕——知情绕行写标准注释\n` +
141
167
  ` // eslint-disable-next-line ${LEG_HINT_ID} -- 理由 (行级)\n` +
142
168
  ` /* eslint-disable ${LEG_HINT_ID} -- 内容画布 */ (文件级:内容/画布整文件豁免)\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/eslint/lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/eslint/lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAA0B,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAuB,MAAM,kBAAkB,CAAC;AAEvD,uDAAuD;AACvD,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAiChD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,UAA6B,EAAE;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;QAC/B,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;QACpC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAC3B,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,oDAAoD;KACtF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,wDAAwD;QACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,GAAG,EAAE,OAAO;QACZ,kBAAkB,EAAE,IAAI,EAAE,6CAA6C;QACvE,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAClE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;gBACjB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC;gBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C;;;;;;;;;OASG;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD;;;;;;;OAOG;IACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,SAAS,GAAqB;QAClC,GAAG,MAAM,CAAC,UAAU,EAAE,qBAAqB;QAC3C,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,kBAAkB;QAClG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;KAC3G,CAAC;IACF,MAAM,IAAI,GAAc;QACtB,EAAE,EAAE,EAAE,4CAA4C,EAAE,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE;QAClG,EAAE,EAAE,EAAE,iCAAiC,EAAE,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;QACtF,EAAE,EAAE,EAAE,iCAAiC,EAAE,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE;QAC3F;YACE,EAAE,EAAE,0EAA0E;YAC9E,KAAK,EAAE,qBAAqB;YAC5B,UAAU,EAAE,SAAS;SACtB;KACF,CAAC;IACF,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAE1F,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,UAAU;QACV,IAAI;QACJ,oBAAoB;QACpB,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,UAAU,CAAC,UAAU;QACtC,WAAW,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;KAC9E,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,mCAAmC,CAAC,CAAC;QACzE,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,MAAM,WAAW,MAAM,CAAC,KAAK,8BAA8B,CAAC,CAAC;QACjG,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3G,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAE7E,0DAA0D;IAC1D,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CACR,uCAAuC,MAAM,CAAC,eAAe,CAAC,MAAM,sBAAsB;YACxF,wDAAwD;YACxD,4BAA4B,CAC/B,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,IAAI,CACR,gDAAgD;QAC9C,iCAAiC,WAAW,iBAAiB;QAC7D,uBAAuB,WAAW,kCAAkC;QACpE,mDAAmD,CACtD,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linkdesk/plugin-sdk",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "@linkdesk/plugin-sdk——LinkDesk 插件作者 SDK(对标 @types/vscode):window.linkdesk.* 类型 + 一键 build(.linkdesk-plugin) + dev 宿主 + plugin.json 验证 + eslint 门禁(E6#54d)。作者 npm i 后零壳源码依赖。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",