@linkdesk/plugin-sdk 0.1.32 → 0.1.34
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/dist/eslint/checks/appearance-ownership.d.ts +4 -3
- package/dist/eslint/checks/appearance-ownership.d.ts.map +1 -1
- package/dist/eslint/checks/appearance-ownership.js +22 -14
- package/dist/eslint/checks/appearance-ownership.js.map +1 -1
- package/dist/eslint/checks/appearance-ownership.test.d.ts +2 -0
- package/dist/eslint/checks/appearance-ownership.test.d.ts.map +1 -0
- package/dist/eslint/checks/appearance-ownership.test.js +348 -0
- package/dist/eslint/checks/appearance-ownership.test.js.map +1 -0
- package/dist/eslint/checks/command-ownership.d.ts +11 -1
- package/dist/eslint/checks/command-ownership.d.ts.map +1 -1
- package/dist/eslint/checks/command-ownership.js +10 -4
- package/dist/eslint/checks/command-ownership.js.map +1 -1
- package/dist/eslint/checks/command-ownership.test.d.ts +2 -0
- package/dist/eslint/checks/command-ownership.test.d.ts.map +1 -0
- package/dist/eslint/checks/command-ownership.test.js +207 -0
- package/dist/eslint/checks/command-ownership.test.js.map +1 -0
- package/dist/eslint/checks/config-ownership.d.ts +3 -3
- package/dist/eslint/checks/config-ownership.d.ts.map +1 -1
- package/dist/eslint/checks/config-ownership.js +15 -11
- package/dist/eslint/checks/config-ownership.js.map +1 -1
- package/dist/eslint/checks/config-ownership.test.d.ts +2 -0
- package/dist/eslint/checks/config-ownership.test.d.ts.map +1 -0
- package/dist/eslint/checks/config-ownership.test.js +252 -0
- package/dist/eslint/checks/config-ownership.test.js.map +1 -0
- package/dist/eslint/checks/context-ownership.d.ts +74 -0
- package/dist/eslint/checks/context-ownership.d.ts.map +1 -0
- package/dist/eslint/checks/context-ownership.js +177 -0
- package/dist/eslint/checks/context-ownership.js.map +1 -0
- package/dist/eslint/checks/context-ownership.test.d.ts +2 -0
- package/dist/eslint/checks/context-ownership.test.d.ts.map +1 -0
- package/dist/eslint/checks/context-ownership.test.js +205 -0
- package/dist/eslint/checks/context-ownership.test.js.map +1 -0
- package/dist/eslint/checks/disable.d.ts +5 -0
- package/dist/eslint/checks/disable.d.ts.map +1 -1
- package/dist/eslint/checks/disable.js +5 -0
- package/dist/eslint/checks/disable.js.map +1 -1
- package/dist/eslint/checks/plugin-prefix.test.d.ts +2 -0
- package/dist/eslint/checks/plugin-prefix.test.d.ts.map +1 -0
- package/dist/eslint/checks/plugin-prefix.test.js +229 -0
- package/dist/eslint/checks/plugin-prefix.test.js.map +1 -0
- package/dist/eslint/checks/reserved-classes.test.d.ts +2 -0
- package/dist/eslint/checks/reserved-classes.test.d.ts.map +1 -0
- package/dist/eslint/checks/reserved-classes.test.js +122 -0
- package/dist/eslint/checks/reserved-classes.test.js.map +1 -0
- package/dist/eslint/checks/selector-form.test.d.ts +2 -0
- package/dist/eslint/checks/selector-form.test.d.ts.map +1 -0
- package/dist/eslint/checks/selector-form.test.js +211 -0
- package/dist/eslint/checks/selector-form.test.js.map +1 -0
- package/dist/eslint/checks/token-scope.test.d.ts +2 -0
- package/dist/eslint/checks/token-scope.test.d.ts.map +1 -0
- package/dist/eslint/checks/token-scope.test.js +185 -0
- package/dist/eslint/checks/token-scope.test.js.map +1 -0
- package/dist/eslint/index.d.ts +12 -0
- package/dist/eslint/index.d.ts.map +1 -1
- package/dist/eslint/index.js +11 -0
- package/dist/eslint/index.js.map +1 -1
- package/dist/eslint/lint.d.ts +17 -0
- package/dist/eslint/lint.d.ts.map +1 -1
- package/dist/eslint/lint.js +64 -13
- package/dist/eslint/lint.js.map +1 -1
- package/dist/pack.test.d.ts +2 -0
- package/dist/pack.test.d.ts.map +1 -0
- package/dist/pack.test.js +58 -0
- package/dist/pack.test.js.map +1 -0
- package/dist/publish.test.d.ts +2 -0
- package/dist/publish.test.d.ts.map +1 -0
- package/dist/publish.test.js +340 -0
- package/dist/publish.test.js.map +1 -0
- package/dist/validate.test.d.ts +2 -0
- package/dist/validate.test.d.ts.map +1 -0
- package/dist/validate.test.js +107 -0
- package/dist/validate.test.js.map +1 -0
- package/package.json +68 -68
- package/schemas/host-reserved.json +9 -6
|
@@ -20,10 +20,12 @@
|
|
|
20
20
|
* · **协议面** = 源码里 `registerProtocol({ id: "<字面量>" })`(协议 id 与命令 id 同族:都是
|
|
21
21
|
* 全局名册的键,`ProtocolRegistry` 用 `Map` + 重复注册只 `console.warn` 后照旧覆盖)。
|
|
22
22
|
*
|
|
23
|
-
* ── 🔴
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
23
|
+
* ── 🔴 分级:本腿**从落地起就是红**(1.49 复核时的如实订正)──
|
|
24
|
+
* 1.32 的注释原写「本格只判黄 …… **1.49 才收紧为红**」,但实现里**三条判据的裁决一律进 `violations`**
|
|
25
|
+
* (本文件没有 `advisories` / `yellow` 分栏)⇒ 在**插件仓 CI**(`ci-verify.mjs` 把非 ADVISORY 腿的
|
|
26
|
+
* `violations` 计入严格腿)**一直是红**;作者本地仍不被拦(`bin lint` 的退出码只看 eslint severity 2
|
|
27
|
+
* ——见 `src/bin.ts`)⇒ 「本地黄、CI 红」这个双轨形态与另几条腿一致,只是注释里的时间点写错了。
|
|
28
|
+
* 1.49 保持现状(「收紧为红」对本腿 = 已达成),**只订正注释,一个判据都不动**。
|
|
27
29
|
*
|
|
28
30
|
* 知情绕行 = 标准 disable 注释(`CHECK_IDS.commandOwnership`)。⚠️ **fail-closed 不参与豁免**:
|
|
29
31
|
* 拿不到 `pluginId` 说的不是「你的 id 怎么写」,而是「你的身份读不到」——那是工程根的问题。
|
|
@@ -54,6 +56,8 @@ export function loadHostReserved(file = HOST_RESERVED_FILE) {
|
|
|
54
56
|
appearanceIconThemeIds: [],
|
|
55
57
|
appearanceSentinels: [],
|
|
56
58
|
appearanceIdGrants: {},
|
|
59
|
+
contextKeysHostOnly: [],
|
|
60
|
+
contextKeysPublic: [],
|
|
57
61
|
};
|
|
58
62
|
}
|
|
59
63
|
const raw = JSON.parse(readFileSync(file, "utf8"));
|
|
@@ -67,6 +71,8 @@ export function loadHostReserved(file = HOST_RESERVED_FILE) {
|
|
|
67
71
|
appearanceIconThemeIds: raw.appearanceIconThemeIds ?? [],
|
|
68
72
|
appearanceSentinels: raw.appearanceSentinels ?? [],
|
|
69
73
|
appearanceIdGrants: raw.appearanceIdGrants ?? {},
|
|
74
|
+
contextKeysHostOnly: raw.contextKeysHostOnly ?? [],
|
|
75
|
+
contextKeysPublic: raw.contextKeysPublic ?? [],
|
|
70
76
|
};
|
|
71
77
|
}
|
|
72
78
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-ownership.js","sourceRoot":"","sources":["../../../src/eslint/checks/command-ownership.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"command-ownership.js","sourceRoot":"","sources":["../../../src/eslint/checks/command-ownership.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-ownership.test.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/command-ownership.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check-command-ownership 腿·**命令 id / 协议 id 归属判据**(E6#111b · 1.32)单测。
|
|
3
|
+
*
|
|
4
|
+
* 为什么值得一条测试:这条腿的**两条失效方向都是静默的**——
|
|
5
|
+
* · 太松(放过一条不带归属的 id)⇒ 壳侧按名字第一段找属主 ⇒ 两个插件撞前缀时**静默互相覆盖**
|
|
6
|
+
* (不报错、只是有一个命令永远不生效),正是本件要杀的形态;
|
|
7
|
+
* · 太紧(误伤合法 id / 把宿主保留面判错户)⇒ 插件仓白红,作者学会「看到黄就 disable」。
|
|
8
|
+
* 故判据①②(本仓前缀 / 宿主保留面)+ 三面(声明 / 运行时 / 协议)+ fail-closed + 豁免
|
|
9
|
+
* **正反两向都钉住**,另加两条元判据:
|
|
10
|
+
* · **同一份源码 + 不同 pluginId ⇒ 不同裁决**(证明真的在读 manifest,不是恒红/恒绿);
|
|
11
|
+
* · **账读不到 ⇒ 判据② 明示空转**(不是静默绿)——账是判据② 的**唯一**输入(不许内联一份)。
|
|
12
|
+
*
|
|
13
|
+
* 命令 id 用**真实形态样本**(`file-tree` 的 `selectForCompare`——H3 那条「借了 `editor.` 前缀」的命令)
|
|
14
|
+
* 与虚构 id 并用:真实形态才抓得到「前缀与属主不是一回事」这类错,虚构 id 用来钉边界。
|
|
15
|
+
*/
|
|
16
|
+
import { describe, expect, it } from "vitest";
|
|
17
|
+
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
18
|
+
import { tmpdir } from "node:os";
|
|
19
|
+
import { join } from "node:path";
|
|
20
|
+
import { judgeCommandId, runCommandOwnershipCheck, manifestIdLine } from "./command-ownership.js";
|
|
21
|
+
/** 宿主保留面夹具(不依赖真账内容——真账会被后续轮次加家族;这里只钉判据的形状) */
|
|
22
|
+
const RESERVED = {
|
|
23
|
+
commandPrefixes: ["workbench.", "view."],
|
|
24
|
+
protocolIds: ["bracket"],
|
|
25
|
+
configKeys: [],
|
|
26
|
+
pseudoPluginIds: [],
|
|
27
|
+
appearanceRecipeIds: [],
|
|
28
|
+
appearanceColorwayIds: [],
|
|
29
|
+
appearanceIconThemeIds: [],
|
|
30
|
+
appearanceSentinels: [],
|
|
31
|
+
appearanceIdGrants: {},
|
|
32
|
+
contextKeysHostOnly: [],
|
|
33
|
+
contextKeysPublic: [],
|
|
34
|
+
};
|
|
35
|
+
/** 造一个临时插件工程(manifest 写成 JSONC——作者面允许注释,读 manifest 的代码必须容忍) */
|
|
36
|
+
function withPlugin(opts, fn) {
|
|
37
|
+
const base = mkdtempSync(join(tmpdir(), "cmd-owner-"));
|
|
38
|
+
const root = opts.dirName ? join(base, opts.dirName) : base;
|
|
39
|
+
mkdirSync(join(root, "src"), { recursive: true });
|
|
40
|
+
if (opts.manifest !== null) {
|
|
41
|
+
const raw = opts.manifest ?? {
|
|
42
|
+
pluginId: "file-tree",
|
|
43
|
+
name: "文件树",
|
|
44
|
+
version: "1.0.0",
|
|
45
|
+
contributes: { commands: [{ id: "file-tree.revealInExplorer", title: "在资源管理器中显示" }] },
|
|
46
|
+
};
|
|
47
|
+
writeFileSync(join(root, "plugin.json"), `{\n // 作者允许的注释\n ${JSON.stringify(raw).slice(1, -1)},\n}\n`, "utf8");
|
|
48
|
+
}
|
|
49
|
+
for (const [rel, body] of Object.entries(opts.files ?? {})) {
|
|
50
|
+
const abs = join(root, rel);
|
|
51
|
+
mkdirSync(join(abs, ".."), { recursive: true });
|
|
52
|
+
writeFileSync(abs, body, "utf8");
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
fn(root);
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
rmSync(base, { recursive: true, force: true });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** 账的假路径(不存在 ⇒ 报告里 hostLedger.found = false)——用于「账读不到」这一控 */
|
|
62
|
+
const NO_LEDGER = join(tmpdir(), "no-such-host-reserved.json");
|
|
63
|
+
describe("判据①② 三面(声明 / 运行时 / 协议)", () => {
|
|
64
|
+
it("正控:三面都带本仓前缀 ⇒ 零违规,且三面读数各就各位", () => {
|
|
65
|
+
withPlugin({
|
|
66
|
+
files: {
|
|
67
|
+
"src/register.ts": 'lk.commands.registerCommand("file-tree.selectForCompare", () => 0);\n' +
|
|
68
|
+
'registerProtocol({ id: "file-tree.codec", name: "编解码", pluginId: "file-tree", mode: "text" });\n',
|
|
69
|
+
},
|
|
70
|
+
}, (root) => {
|
|
71
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
72
|
+
expect(r.violations).toHaveLength(0);
|
|
73
|
+
expect(r.declaredIds).toEqual(["file-tree.revealInExplorer"]);
|
|
74
|
+
expect(r.runtimeIds).toEqual(["file-tree.selectForCompare"]);
|
|
75
|
+
expect(r.protocolIds).toEqual(["file-tree.codec"]);
|
|
76
|
+
expect(r.pluginId).toBe("file-tree");
|
|
77
|
+
expect(r.pluginIdSource).toBe("plugin.json");
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
it("N1 负控:声明面 id 前缀被删掉 ⇒ 红,报点带 文件:行 +「应以 file-tree. 开头」+ 建议名", () => {
|
|
81
|
+
withPlugin({ manifest: { pluginId: "file-tree", name: "文件树", version: "1.0.0", contributes: { commands: [{ id: "selectForCompare", title: "对比" }] } } }, (root) => {
|
|
82
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
83
|
+
expect(r.violations).toHaveLength(1);
|
|
84
|
+
const v = r.violations[0];
|
|
85
|
+
expect(v.file).toBe("plugin.json");
|
|
86
|
+
expect(v.line).toBeGreaterThan(1); // 真实行号(不是恒 1)
|
|
87
|
+
expect(v.message).toContain('id "selectForCompare"');
|
|
88
|
+
expect(v.message).toContain('应以 "file-tree." 开头');
|
|
89
|
+
expect(r.sites[0].code).toBe("no-plugin-prefix");
|
|
90
|
+
expect(r.sites[0].suggested).toBe("file-tree.selectForCompare"); // 改名映射可直接用
|
|
91
|
+
});
|
|
92
|
+
// 还原(加回前缀)⇒ 逐字节同一份源码回到零违规
|
|
93
|
+
withPlugin({ manifest: { pluginId: "file-tree", name: "文件树", version: "1.0.0", contributes: { commands: [{ id: "file-tree.selectForCompare", title: "对比" }] } } }, (root) => {
|
|
94
|
+
expect(runCommandOwnershipCheck(root, RESERVED, NO_LEDGER).violations).toHaveLength(0);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
it("N2 负控:命令 id 落在宿主保留前缀里 ⇒ 红,且点名撞上哪一条", () => {
|
|
98
|
+
withPlugin({
|
|
99
|
+
manifest: {
|
|
100
|
+
pluginId: "file-tree",
|
|
101
|
+
name: "文件树",
|
|
102
|
+
version: "1.0.0",
|
|
103
|
+
contributes: { commands: [{ id: "workbench.action.showCommands", title: "命令面板" }] },
|
|
104
|
+
},
|
|
105
|
+
}, (root) => {
|
|
106
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
107
|
+
expect(r.violations).toHaveLength(1);
|
|
108
|
+
expect(r.sites[0].code).toBe("host-reserved");
|
|
109
|
+
expect(r.sites[0].reserved).toBe("workbench.");
|
|
110
|
+
expect(r.violations[0].message).toContain("宿主保留面");
|
|
111
|
+
// 🔴 建议值 = **只换第一段**(`workbench.` 换成自己的前缀,词干一个字不改)——
|
|
112
|
+
// 与报点里的措辞必须是同一件事:措辞说「前缀只插入」而建议值把 `workbench.` 删了,
|
|
113
|
+
// 第三方作者按文字做会与按建议值做得到两个不同结果(E6#111b 发布 0.1.30 修的就是这处)。
|
|
114
|
+
expect(r.sites[0].suggested).toBe("file-tree.action.showCommands");
|
|
115
|
+
expect(r.violations[0].message).toContain("只换第一段");
|
|
116
|
+
expect(r.violations[0].message).not.toContain("前缀只插入");
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
it("N3 负控:运行时面 + 真实形态样本(借了 editor. 前缀的命令)⇒ 红", () => {
|
|
120
|
+
withPlugin({
|
|
121
|
+
files: { "src/views/Editor.ts": 'lk.commands.registerCommand("editor.selectForCompare", () => 0);\n' },
|
|
122
|
+
}, (root) => {
|
|
123
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
124
|
+
expect(r.violations).toHaveLength(1);
|
|
125
|
+
expect(r.violations[0].file).toBe("src/views/Editor.ts");
|
|
126
|
+
expect(r.violations[0].line).toBe(1);
|
|
127
|
+
expect(r.sites[0].face).toBe("runtime");
|
|
128
|
+
expect(r.sites[0].suggested).toBe("file-tree.selectForCompare");
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
it("协议面负控:协议 id 撞宿主内置协议 ⇒ 红(协议面比**全等**,不是前缀)", () => {
|
|
132
|
+
withPlugin({
|
|
133
|
+
files: {
|
|
134
|
+
"src/protocol.ts": 'registerProtocol({ id: "bracket", name: "方括号", pluginId: "file-tree", mode: "text" });\n' +
|
|
135
|
+
'registerProtocol({ id: "bracket-ext", name: "扩展方括号", pluginId: "file-tree", mode: "text" });\n',
|
|
136
|
+
},
|
|
137
|
+
}, (root) => {
|
|
138
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
139
|
+
// `bracket` 撞宿主内置 ⇒ 红;`bracket-ext` 只是**不带本仓前缀**(不以 "bracket" 为保留前缀判定)
|
|
140
|
+
expect(r.sites.map((s) => [s.id, s.code])).toEqual([
|
|
141
|
+
["bracket", "host-reserved"],
|
|
142
|
+
["bracket-ext", "no-plugin-prefix"],
|
|
143
|
+
]);
|
|
144
|
+
expect(r.violations[0].message).toContain("宿主保留面");
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
it("元判据:同一份源码 + 不同 pluginId ⇒ 不同裁决(读的是 manifest,不是恒红/恒绿)", () => {
|
|
148
|
+
const files = { "src/a.ts": 'lk.commands.registerCommand("alpha.do", () => 0);\n' };
|
|
149
|
+
withPlugin({ manifest: { pluginId: "alpha", name: "A", version: "1.0.0" }, files }, (root) => {
|
|
150
|
+
expect(runCommandOwnershipCheck(root, RESERVED, NO_LEDGER).violations).toHaveLength(0);
|
|
151
|
+
});
|
|
152
|
+
withPlugin({ manifest: { pluginId: "beta", name: "B", version: "1.0.0" }, files }, (root) => {
|
|
153
|
+
expect(runCommandOwnershipCheck(root, RESERVED, NO_LEDGER).violations).toHaveLength(1);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
it("测试/mock 文件里的字面量不报(与另几条腿同口径,免得插件仓白噪声)", () => {
|
|
157
|
+
withPlugin({ files: { "src/a.test.ts": 'registerCommand("editor.nope", () => 0);\n' } }, (root) => {
|
|
158
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
159
|
+
expect(r.violations).toHaveLength(0);
|
|
160
|
+
expect(r.runtimeIds).toEqual([]);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe("fail-closed / 豁免 / 账的加载实况", () => {
|
|
165
|
+
it("fail-closed:没有 plugin.json ⇒ 红一条(拿不到身份就无从判归属)", () => {
|
|
166
|
+
withPlugin({ manifest: null, files: { "src/a.ts": 'registerCommand("who.knows", () => 0);\n' } }, (root) => {
|
|
167
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
168
|
+
expect(r.violations).toHaveLength(1);
|
|
169
|
+
expect(r.violations[0].file).toBe("plugin.json");
|
|
170
|
+
expect(r.violations[0].message).toContain("拿不到本仓 pluginId");
|
|
171
|
+
expect(r.runtimeIds).toEqual([]); // 身份不明 ⇒ 不继续扫(免得把「无主」报成「不合规」)
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
it("豁免:标准 disable 注释盖住一条运行时面报点 ⇒ 静默(知情绕行语义)", () => {
|
|
175
|
+
withPlugin({
|
|
176
|
+
files: {
|
|
177
|
+
"src/a.ts": "// eslint-disable-next-line linkdesk/no-unowned-command-id -- 兼容旧名,1.42 改名轮统一处理\n" +
|
|
178
|
+
'lk.commands.registerCommand("editor.selectForCompare", () => 0);\n',
|
|
179
|
+
},
|
|
180
|
+
}, (root) => {
|
|
181
|
+
const r = runCommandOwnershipCheck(root, RESERVED, NO_LEDGER);
|
|
182
|
+
expect(r.violations).toHaveLength(0);
|
|
183
|
+
expect(r.runtimeIds).toEqual(["editor.selectForCompare"]); // 读数照记(豁免只影响报点)
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
it("账读不到 ⇒ 报告里明确标记(判据② 空转,不是静默绿)", () => {
|
|
187
|
+
withPlugin({ files: { "src/a.ts": 'registerCommand("workbench.x", () => 0);\n' } }, (root) => {
|
|
188
|
+
const r = runCommandOwnershipCheck(root, { commandPrefixes: [], protocolIds: [], configKeys: [], pseudoPluginIds: [], appearanceRecipeIds: [], appearanceColorwayIds: [], appearanceIconThemeIds: [], appearanceSentinels: [], appearanceIdGrants: {}, contextKeysHostOnly: [], contextKeysPublic: [] }, NO_LEDGER);
|
|
189
|
+
expect(r.hostLedger.found).toBe(false);
|
|
190
|
+
// 账空 ⇒ 判据② 无输入;`workbench.x` 仍因**不带本仓前缀**被 ① 报出来
|
|
191
|
+
expect(r.sites[0].code).toBe("no-plugin-prefix");
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
describe("辅助(探针与腿共用的纯函数)", () => {
|
|
196
|
+
it("judgeCommandId:顺序 = 先判宿主保留面、后判本仓前缀(撞保留面时报告更严重的那条)", () => {
|
|
197
|
+
expect(judgeCommandId("workbench.a", "workbench", RESERVED, "declared")?.code).toBe("host-reserved");
|
|
198
|
+
expect(judgeCommandId("file-tree.a", "file-tree", RESERVED, "declared")).toBeNull();
|
|
199
|
+
expect(judgeCommandId("bracket", "file-tree", RESERVED, "protocol")?.reserved).toBe("bracket");
|
|
200
|
+
});
|
|
201
|
+
it("manifestIdLine:找得到 ⇒ 真实行号;找不到 ⇒ 1(不抛错、不当成「不存在」)", () => {
|
|
202
|
+
const raw = '{\n "contributes": {\n "commands": [\n { "id": "file-tree.x" }\n ]\n }\n}\n';
|
|
203
|
+
expect(manifestIdLine(raw, "file-tree.x")).toBe(4);
|
|
204
|
+
expect(manifestIdLine(raw, "nope.y")).toBe(1);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
//# sourceMappingURL=command-ownership.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-ownership.test.js","sourceRoot":"","sources":["../../../src/eslint/checks/command-ownership.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AAE1H,8CAA8C;AAC9C,MAAM,QAAQ,GAAsB;IAClC,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;IACxC,WAAW,EAAE,CAAC,SAAS,CAAC;IACxB,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,mBAAmB,EAAE,EAAE;IACvB,qBAAqB,EAAE,EAAE;IACzB,sBAAsB,EAAE,EAAE;IAC1B,mBAAmB,EAAE,EAAE;IACvB,kBAAkB,EAAE,EAAE;IACtB,mBAAmB,EAAE,EAAE;IACvB,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,+DAA+D;AAC/D,SAAS,UAAU,CACjB,IAAqG,EACrG,EAA0B;IAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI;YAC3B,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE;SACtF,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAE/D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,UAAU,CACR;YACE,KAAK,EAAE;gBACL,iBAAiB,EACf,uEAAuE;oBACvE,kGAAkG;aACrG;SACF,EACD,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,UAAU,CACR,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAC5I,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;YACjD,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAClD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW;QAC9E,CAAC,CACF,CAAC;QACF,0BAA0B;QAC1B,UAAU,CACR,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EACtJ,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,UAAU,CACR;YACE,QAAQ,EAAE;gBACR,QAAQ,EAAE,WAAW;gBACrB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;aACpF;SACF,EACD,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9C,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnD,qDAAqD;YACrD,oDAAoD;YACpD,wDAAwD;YACxD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACnE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,UAAU,CACR;YACE,KAAK,EAAE,EAAE,qBAAqB,EAAE,oEAAoE,EAAE;SACvG,EACD,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClE,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,UAAU,CACR;YACE,KAAK,EAAE;gBACL,iBAAiB,EACf,0FAA0F;oBAC1F,gGAAgG;aACnG;SACF,EACD,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,uEAAuE;YACvE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,CAAC,SAAS,EAAE,eAAe,CAAC;gBAC5B,CAAC,aAAa,EAAE,kBAAkB,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,qDAAqD,EAAE,CAAC;QACpF,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3F,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1F,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,UAAU,CACR,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,4CAA4C,EAAE,EAAE,EAC5E,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,0CAA0C,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;YACzG,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC5D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,UAAU,CACR;YACE,KAAK,EAAE;gBACL,UAAU,EACR,mFAAmF;oBACnF,oEAAoE;aACvE;SACF,EACD,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,gBAAgB;QAC7E,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,UAAU,CACR,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,4CAA4C,EAAE,EAAE,EACvE,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,GAAG,wBAAwB,CAChC,IAAI,EACJ,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAC9P,SAAS,CACV,CAAC;YACF,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,iDAAiD;YACjD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrG,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,0FAA0F,CAAC;QACvG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -26,9 +26,9 @@ export interface ConfigOwnershipReport {
|
|
|
26
26
|
pluginIdNote: string | null;
|
|
27
27
|
/** fail-closed:非 null ⇒ 本腿报红(拿不到身份就无从判归属) */
|
|
28
28
|
error: string | null;
|
|
29
|
-
/** 🔴
|
|
29
|
+
/** 🔴 必须改的(进腿报点)——1.49 收紧后 = 全部不合规站点 */
|
|
30
30
|
red: ConfigKeySite[];
|
|
31
|
-
/** 🟡
|
|
31
|
+
/** 🟡 建议改的——🔴 **1.49 起恒空**(判据② 已升红,站点全进 `red`);字段保留只为探针输出形状不塌 */
|
|
32
32
|
yellow: ConfigKeySite[];
|
|
33
33
|
/** 三面的**全部**名(合规 + 不合规,按出现顺序去重)——探针的读数面(口径:名数,非站点数) */
|
|
34
34
|
declaredKeys: string[];
|
|
@@ -43,7 +43,7 @@ export interface ConfigOwnershipReport {
|
|
|
43
43
|
};
|
|
44
44
|
/** 腿报点 = fail-closed + 全部红 */
|
|
45
45
|
violations: CheckViolation[];
|
|
46
|
-
/**
|
|
46
|
+
/** 黄灯建议——🔴 **1.49 起恒空**(同上);保留字段=探针/渲染器的输出形状不变 */
|
|
47
47
|
advisories: CheckViolation[];
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-ownership.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/config-ownership.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-ownership.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/config-ownership.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAGnB,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAEjE,oCAAoC;AACpC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhE,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,CAAC;IACpB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wCAAwC;IACxC,GAAG,EAAE,aAAa,EAAE,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,uDAAuD;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,sCAAsC;IACtC,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1F,8BAA8B;IAC9B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,mDAAmD;IACnD,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,aAAa,GAClB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQtE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,GAC1B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAItE;AAED;6DAC6D;AAC7D,eAAO,MAAM,yBAAyB,QAAmE,CAAC;AAiB1G,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhE;AAuBD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,iBAAsC,EAChD,YAAY,GAAE,MAA2B,GACxC,qBAAqB,CAwIvB"}
|
|
@@ -11,10 +11,12 @@
|
|
|
11
11
|
* ① **宿主保留面**(🔴 红):键落在账(包内 `schemas/host-reserved.json`)的 `configKeys` 里
|
|
12
12
|
* ⇒ 占用宿主设置面。**含退役键**——宿主不再写入的键也不腾位(老 `settings.json` 里可能仍有值,
|
|
13
13
|
* 迁移代码还会读它)。判据出处 = 1.33 §11.1 裁决(丙)·(甲)。
|
|
14
|
-
* ②
|
|
14
|
+
* ② **本仓前缀**(🔴 红 · **1.49 收紧**):**新键**第一段应是本仓 `pluginId`(`<pluginId>.<你的名字>`)。
|
|
15
15
|
* 与命令 id 同形(`judgeCommandId` 的「只换第一段、词干零变化」)。
|
|
16
16
|
* ⚠️ 只对 **`declared` 面**判——`defaults` 面的键**天然是别人的键**(`configurationDefaults` 的语义
|
|
17
17
|
* 就是"为已存在的键建议一个弱默认值",要求它带本仓前缀等于取消这个能力)。运行时面同理不判键。
|
|
18
|
+
* 🕐 **收紧史**:1.34 落地时按轴上排序纪律只判黄(判红会让插件仓 CI 在官方仓改名完成前处于红窗);
|
|
19
|
+
* 1.49 清账完成(官方 18 仓需改处 0)后兑现为红——照 00 档 §四「收紧为红放在 1.49」。
|
|
18
20
|
* ③ **宿主伪身份**(🔴 红):源码里 `registerConfiguration("<字面量>", …)` / `registerConfigurationDefaults(...)`
|
|
19
21
|
* 的第一个实参落在账的 `pseudoPluginIds`(app / appearance / update)⇒ 冒充宿主身份注册。
|
|
20
22
|
*
|
|
@@ -27,8 +29,10 @@
|
|
|
27
29
|
*
|
|
28
30
|
* ── 🔴 分工:本腿报红的那一条,运行时也报 ──
|
|
29
31
|
* 判据① 在**运行时**(壳 `ConfigurationRegistry` 的保护区)同样生效——本腿是**提前在作者仓里**把同一件事报出来
|
|
30
|
-
* (作者不必等装上壳才发现自己的键被拒)。判据②
|
|
31
|
-
*
|
|
32
|
+
* (作者不必等装上壳才发现自己的键被拒)。判据② 运行时**不管**(存量键的旧名靠 `registerConfigMigration` 搬运,
|
|
33
|
+
* 运行时拒前缀不合规的键会把存量插件当场弄坏)⇒ 判据② 只在这里判。
|
|
34
|
+
* 🔴 **1.49 起判据② 同样是红**:清理已完成(官方 18 仓需改处 0),第三方新写的裸键=跨插件撞名,
|
|
35
|
+
* 是「本仓可答 + 有真害」的真红(00 档 §10.3 宽容度模型:红灯两类之一)。
|
|
32
36
|
*
|
|
33
37
|
* 知情绕行 = 标准 disable 注释(`CHECK_IDS.configOwnership`)。⚠️ **fail-closed 不参与豁免**:
|
|
34
38
|
* 拿不到 `pluginId` 说的不是「你的键怎么写」,而是「你的身份读不到」——那是工程根的问题。
|
|
@@ -157,14 +161,14 @@ export function runConfigOwnershipCheck(root, reserved = loadHostReserved(), res
|
|
|
157
161
|
const push = (site, message, disabled) => {
|
|
158
162
|
if (disabled && isDisabled(disabled.idx, disabled.line, CHECK_IDS.configOwnership))
|
|
159
163
|
return;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
164
|
+
/**
|
|
165
|
+
* 🔴 **1.49 起两条判据都是红**(收紧前:`host-reserved` 红 / `no-plugin-prefix` 黄 ⇒ 进 `advisories`
|
|
166
|
+
* 只打印不拦)。收紧后**全部进 `violations`** ⇒ 插件仓 CI(`ci-verify.mjs` 的严格腿)当场判红。
|
|
167
|
+
* `yellow` / `advisories` 两个字段保留为**空容器**:探针与报告仍按原形状读数(面不塌),
|
|
168
|
+
* 但不再有任何站点落进去——⛔ 别把它们删了(删了等于改探针的输出形状,与本格射程无关)。
|
|
169
|
+
*/
|
|
170
|
+
report.red.push(site);
|
|
171
|
+
violations.push({ file: site.file, line: site.line, message });
|
|
168
172
|
};
|
|
169
173
|
/** 判据①②合一的报点(声明面 / 弱默认值面) */
|
|
170
174
|
const judgeAndPush = (face, key, line) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-ownership.js","sourceRoot":"","sources":["../../../src/eslint/checks/config-ownership.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config-ownership.js","sourceRoot":"","sources":["../../../src/eslint/checks/config-ownership.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAuB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAA0B,MAAM,wBAAwB,CAAC;AACtG,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,OAAO,GAER,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8CxE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,QAAgB,EAChB,QAA2B,EAC3B,IAAmB;IAEnB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACtE,0CAA0C;IAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAClG,4CAA4C;IAC5C,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC;IAC3G,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAU,EACV,QAAgB,EAChB,QAA2B;IAE3B,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC/G,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;6DAC6D;AAC7D,MAAM,CAAC,MAAM,yBAAyB,GAAG,gEAAgE,CAAC;AAE1G,gFAAgF;AAChF,SAAS,YAAY,CACnB,GAAW,EACX,EAAU,EACV,OAA+C;IAE/C,MAAM,GAAG,GAAmC,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC;AAED,8EAA8E;AAC9E,SAAS,kBAAkB,CAAC,IAAa;IACvC,MAAM,GAAG,GAAG,CAAC,CAAU,EAAkC,EAAE;QACzD,MAAM,KAAK,GAAI,CAAqC,EAAE,UAAU,CAAC;QACjE,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjH,CAAC,CAAC;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC1B,GAAG,GAAG,IAAI,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,WAA8B,gBAAgB,EAAE,EAChD,eAAuB,kBAAkB;IAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,MAAM,GAA0B;QACpC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,cAAc,EAAE,UAAU,CAAC,MAAM;QACjC,YAAY,EAAE,UAAU,CAAC,IAAI;QAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;QACrB,UAAU,EAAE;YACV,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;YACtC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM;SACjD;QACD,UAAU;QACV,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,6CAA6C;IAC7C,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,CAAC;YACP,OAAO,EACL,kBAAkB,UAAU,CAAC,KAAK,+BAA+B;gBACjE,kDAAkD;gBAClD,iCAAiC;SACpC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAErF,MAAM,IAAI,GAAG,CACX,IAAmB,EACnB,OAAe,EACf,QAAsE,EAChE,EAAE;QACR,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC;YAAE,OAAO;QAC3F;;;;;WAKG;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,6BAA6B;IAC7B,MAAM,YAAY,GAAG,CAAC,IAA6B,EAAE,GAAW,EAAE,IAAY,EAAQ,EAAE;QACtF,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,KAAK,GACT,IAAI,KAAK,UAAU;YACjB,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,sDAAsD,CAAC;QAC7D,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,KAAK,eAAe;YAC9B,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,sEAAsE;gBAC1F,mEAAmE;gBACnE,UAAU,OAAO,CAAC,SAAS,iBAAiB;YAC9C,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,4BAA4B,QAAQ,WAAW,MAAM,OAAO;gBAChF,yDAAyD;gBACzD,gBAAgB,OAAO,CAAC,SAAS,iBAAiB,CAAC;QACzD,IAAI,CACF,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EACrK,OAAO,EACP,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAChC,CAAC;IACJ,CAAC,CAAC;IAEF,uFAAuF;IACvF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAY,IAAI,CAAC;QAC7B,IAAI,CAAC;YACH,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,MAAM,WAAW,GAAI,QAA6D,EAAE,WAAW,CAAC;QAChG,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtE,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,EAAE,qBAAqB,CAAC;QACpD,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAmC,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtE,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,eAAe,CAAC,GAAG,CAAC;YAAE,SAAS;QACnC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtF,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,KAAK,eAAe;gBAC9B,CAAC,CAAC,+CAA+C,GAAG,CAAC,EAAE,gBAAgB;oBACrE,iEAAiE;oBACjE,sDAAsD,QAAQ,IAAI;oBAClE,6EAA6E;gBAC/E,CAAC,CAAC,+CAA+C,GAAG,CAAC,EAAE,mBAAmB,QAAQ,MAAM;oBACtF,oDAAoD;oBACpD,OAAO,QAAQ,kCAAkC,CAAC;YACxD,IAAI,CACF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EACxL,OAAO,EACP,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-ownership.test.d.ts","sourceRoot":"","sources":["../../../src/eslint/checks/config-ownership.test.ts"],"names":[],"mappings":""}
|