dev-cockpit 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -10,6 +10,13 @@ export type RemediationKey = string;
|
|
|
10
10
|
* Returns an empty array when nothing matches.
|
|
11
11
|
*/
|
|
12
12
|
export declare function findChecksByKey(key: RemediationKey, checks: HealthCheck[], keybindings?: Record<string, string[]>): HealthCheck[];
|
|
13
|
+
/**
|
|
14
|
+
* Dedup a list of matched health checks by their remediation effect so that
|
|
15
|
+
* a multi-id keybinding whose rows happen to share `command|cwd` fires the
|
|
16
|
+
* work exactly once. Order is preserved (first occurrence wins); `run`-shaped
|
|
17
|
+
* remediations carry no comparable key and are never folded.
|
|
18
|
+
*/
|
|
19
|
+
export declare function dedupeRemediations(checks: HealthCheck[]): HealthCheck[];
|
|
13
20
|
export declare function runRemediation(key: RemediationKey, checks: HealthCheck[], ctx: HealthContext, workspaceRoot: string, keybindings?: Record<string, string[]>): Promise<void>;
|
|
14
21
|
/**
|
|
15
22
|
* @deprecated kept for callers that need single-target lookups. Prefer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediations.d.ts","sourceRoot":"","sources":["../../src/health/remediations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,WAAW,EAAE,CASf;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,WAAW,EAAE,EACrB,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"remediations.d.ts","sourceRoot":"","sources":["../../src/health/remediations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,WAAW,EAAE,CASf;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAevE;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,WAAW,EAAE,EACrB,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,WAAW,EAAE,GACpB,WAAW,GAAG,SAAS,CAEzB;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHealth.d.ts","sourceRoot":"","sources":["../../src/health/useHealth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useHealth.d.ts","sourceRoot":"","sources":["../../src/health/useHealth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUrD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhF,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CAC5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,4DAA4D;IAC5D,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,+EAA+E;IAC/E,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,oCAAoC;IACpC,aAAa,EAAE,mBAAmB,CAAC;IACnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IACzE;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,mBAAmB,GAAG,IAAI,CAAC;CAC7D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAwGpF"}
|
package/dist/index.js
CHANGED
|
@@ -88217,10 +88217,27 @@ function findChecksByKey(key, checks, keybindings) {
|
|
|
88217
88217
|
const c3 = checks.find((c4) => c4.remediation.key === key);
|
|
88218
88218
|
return c3 ? [c3] : [];
|
|
88219
88219
|
}
|
|
88220
|
+
function dedupeRemediations(checks) {
|
|
88221
|
+
const seen = /* @__PURE__ */ new Set();
|
|
88222
|
+
const out = [];
|
|
88223
|
+
for (const check of checks) {
|
|
88224
|
+
const rem = check.remediation;
|
|
88225
|
+
if ("run" in rem) {
|
|
88226
|
+
out.push(check);
|
|
88227
|
+
continue;
|
|
88228
|
+
}
|
|
88229
|
+
const dedupKey = `${rem.command}|${rem.cwd ?? ""}`;
|
|
88230
|
+
if (seen.has(dedupKey)) continue;
|
|
88231
|
+
seen.add(dedupKey);
|
|
88232
|
+
out.push(check);
|
|
88233
|
+
}
|
|
88234
|
+
return out;
|
|
88235
|
+
}
|
|
88220
88236
|
async function runRemediation(key, checks, ctx, workspaceRoot, keybindings) {
|
|
88221
88237
|
const matched = findChecksByKey(key, checks, keybindings);
|
|
88238
|
+
const toFire = dedupeRemediations(matched);
|
|
88222
88239
|
await Promise.all(
|
|
88223
|
-
|
|
88240
|
+
toFire.map(
|
|
88224
88241
|
(check) => dispatchRemediation(check.remediation, ctx, workspaceRoot, check.id)
|
|
88225
88242
|
)
|
|
88226
88243
|
);
|
|
@@ -88568,8 +88585,9 @@ function useHealth(opts) {
|
|
|
88568
88585
|
const keybindings = optsRef.current?.keybindings;
|
|
88569
88586
|
const matched = findChecksByKey(key, list3, keybindings);
|
|
88570
88587
|
if (matched.length === 0) return null;
|
|
88571
|
-
const
|
|
88572
|
-
const
|
|
88588
|
+
const toFire = dedupeRemediations(matched);
|
|
88589
|
+
const first = toFire[0];
|
|
88590
|
+
const banner = toFire.length === 1 ? first.remediation.label : `${toFire.length} remediations`;
|
|
88573
88591
|
const promise = runRemediation(
|
|
88574
88592
|
key,
|
|
88575
88593
|
list3,
|