sickbay 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DiffApp-D73JA3XI.js → DiffApp-6DCOQNOE.js} +3 -4
- package/dist/{DoctorApp-GS3J4DMZ.js → DoctorApp-ZYWU7BJU.js} +3 -4
- package/dist/{FixApp-YZ3CLMFB.js → FixApp-6I7YP3X3.js} +3 -4
- package/dist/{StatsApp-DRXR7JNK.js → StatsApp-SEZZMUE3.js} +3 -4
- package/dist/{TrendApp-JFDKGNXF.js → TrendApp-YO2JOGIS.js} +3 -4
- package/dist/{TuiApp-WCBES43B.js → TuiApp-L62KV4TM.js} +12 -13
- package/dist/{ai-3LAZ6FTQ.js → ai-7DGOLNJX.js} +0 -2
- package/dist/{badge-XXUVOLVT.js → badge-KQ73KEIN.js} +0 -2
- package/dist/{chunk-LBA7NZIO.js → chunk-GTNHWGY5.js} +1 -1
- package/dist/{chunk-4B76LQAW.js → chunk-O26ERRN2.js} +1 -1
- package/dist/{chunk-MH54MN56.js → chunk-O77KS7KE.js} +1 -1
- package/dist/config.js +1 -2
- package/dist/{dist-PGYV4EWK.js → dist-COP53OQ4.js} +1 -2
- package/dist/{history-BRXZYAUW.js → history-XLNVZEDI.js} +0 -1
- package/dist/index.js +33 -34
- package/dist/{init-IQDCNRIK.js → init-F7CN356W.js} +2 -3
- package/dist/resolve-package-PF56UGTP.js +9 -0
- package/dist/{update-check-YUUHLHGJ.js → update-check-M7IFOMLJ.js} +0 -1
- package/dist/{web-KVY53X2F.js → web-XBUBGSTP.js} +0 -2
- package/package.json +2 -1
- package/dist/chunk-QGM4M3NI.js +0 -37
- package/dist/jiti-CG52ZJTF.js +0 -3049
- package/dist/resolve-package-JTAJL7Y2.js +0 -10
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Header
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-QGM4M3NI.js";
|
|
3
|
+
} from "./chunk-O77KS7KE.js";
|
|
5
4
|
|
|
6
5
|
// src/components/DiffApp.tsx
|
|
7
6
|
import React, { useState, useEffect } from "react";
|
|
@@ -120,14 +119,14 @@ function DiffApp({ projectPath, branch, jsonOutput, checks, verbose }) {
|
|
|
120
119
|
useEffect(() => {
|
|
121
120
|
(async () => {
|
|
122
121
|
try {
|
|
123
|
-
const { runSickbay } = await import("./dist-
|
|
122
|
+
const { runSickbay } = await import("./dist-COP53OQ4.js");
|
|
124
123
|
const currentReport = await runSickbay({
|
|
125
124
|
projectPath,
|
|
126
125
|
checks,
|
|
127
126
|
verbose
|
|
128
127
|
});
|
|
129
128
|
try {
|
|
130
|
-
const { saveEntry, saveLastReport } = await import("./history-
|
|
129
|
+
const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
|
|
131
130
|
saveEntry(currentReport);
|
|
132
131
|
saveLastReport(currentReport);
|
|
133
132
|
} catch {
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
shortName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GTNHWGY5.js";
|
|
4
4
|
import {
|
|
5
5
|
Header
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-O77KS7KE.js";
|
|
7
7
|
import {
|
|
8
8
|
detectPackageManager,
|
|
9
9
|
detectProject
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-QGM4M3NI.js";
|
|
10
|
+
} from "./chunk-O26ERRN2.js";
|
|
12
11
|
|
|
13
12
|
// src/components/DoctorApp.tsx
|
|
14
13
|
import React, { useState, useEffect } from "react";
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
shortName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GTNHWGY5.js";
|
|
4
4
|
import {
|
|
5
5
|
ProgressList
|
|
6
6
|
} from "./chunk-MBVA75EM.js";
|
|
7
7
|
import {
|
|
8
8
|
Header
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-O77KS7KE.js";
|
|
10
10
|
import {
|
|
11
11
|
runSickbay
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-QGM4M3NI.js";
|
|
12
|
+
} from "./chunk-O26ERRN2.js";
|
|
14
13
|
|
|
15
14
|
// src/components/FixApp.tsx
|
|
16
15
|
import React, { useState, useEffect, useCallback } from "react";
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
shortName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GTNHWGY5.js";
|
|
4
4
|
import {
|
|
5
5
|
Header
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-O77KS7KE.js";
|
|
7
7
|
import {
|
|
8
8
|
detectProject
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-QGM4M3NI.js";
|
|
9
|
+
} from "./chunk-O26ERRN2.js";
|
|
11
10
|
|
|
12
11
|
// src/components/StatsApp.tsx
|
|
13
12
|
import React, { useState, useEffect } from "react";
|
|
@@ -4,16 +4,15 @@ import {
|
|
|
4
4
|
} from "./chunk-SHO3ZXTH.js";
|
|
5
5
|
import {
|
|
6
6
|
shortName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GTNHWGY5.js";
|
|
8
8
|
import {
|
|
9
9
|
Header
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-O77KS7KE.js";
|
|
11
|
+
import "./chunk-O26ERRN2.js";
|
|
12
12
|
import {
|
|
13
13
|
detectRegressions,
|
|
14
14
|
loadHistory
|
|
15
15
|
} from "./chunk-3OR2GFVE.js";
|
|
16
|
-
import "./chunk-QGM4M3NI.js";
|
|
17
16
|
|
|
18
17
|
// src/components/TrendApp.tsx
|
|
19
18
|
import React, { useState, useEffect } from "react";
|
|
@@ -6,19 +6,18 @@ import {
|
|
|
6
6
|
LOADING_MESSAGES,
|
|
7
7
|
UpdateNotice
|
|
8
8
|
} from "./chunk-TYG7ZQBP.js";
|
|
9
|
+
import {
|
|
10
|
+
checkForUpdate
|
|
11
|
+
} from "./chunk-TWCTPAXQ.js";
|
|
9
12
|
import {
|
|
10
13
|
buildSummary,
|
|
11
14
|
detectMonorepo,
|
|
12
15
|
runSickbay,
|
|
13
16
|
runSickbayMonorepo
|
|
14
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-O26ERRN2.js";
|
|
15
18
|
import {
|
|
16
19
|
loadHistory
|
|
17
20
|
} from "./chunk-3OR2GFVE.js";
|
|
18
|
-
import {
|
|
19
|
-
checkForUpdate
|
|
20
|
-
} from "./chunk-TWCTPAXQ.js";
|
|
21
|
-
import "./chunk-QGM4M3NI.js";
|
|
22
21
|
|
|
23
22
|
// src/components/tui/TuiApp.tsx
|
|
24
23
|
import React11, { useState as useState8, useEffect as useEffect7, useCallback as useCallback2, useRef as useRef5 } from "react";
|
|
@@ -363,7 +362,7 @@ function useSickbayRunner({ projectPath, checks, quotes }) {
|
|
|
363
362
|
setMonorepoReport(null);
|
|
364
363
|
setReport(result);
|
|
365
364
|
try {
|
|
366
|
-
const { saveEntry } = await import("./history-
|
|
365
|
+
const { saveEntry } = await import("./history-XLNVZEDI.js");
|
|
367
366
|
saveEntry(result);
|
|
368
367
|
} catch {
|
|
369
368
|
}
|
|
@@ -690,7 +689,7 @@ function TuiApp({
|
|
|
690
689
|
return () => timers.forEach(clearTimeout);
|
|
691
690
|
}, []);
|
|
692
691
|
useEffect7(() => {
|
|
693
|
-
checkForUpdate("1.
|
|
692
|
+
checkForUpdate("1.7.0").then((info) => {
|
|
694
693
|
if (info) setUpdateInfo(info);
|
|
695
694
|
});
|
|
696
695
|
}, []);
|
|
@@ -711,13 +710,13 @@ function TuiApp({
|
|
|
711
710
|
if (prevScore !== null) setPreviousScore(prevScore);
|
|
712
711
|
setLastScanTime(/* @__PURE__ */ new Date());
|
|
713
712
|
try {
|
|
714
|
-
const { saveLastReport } = await import("./history-
|
|
713
|
+
const { saveLastReport } = await import("./history-XLNVZEDI.js");
|
|
715
714
|
saveLastReport(result);
|
|
716
715
|
} catch {
|
|
717
716
|
}
|
|
718
717
|
try {
|
|
719
|
-
const { getDependencyTree } = await import("./dist-
|
|
720
|
-
const { saveDepTree } = await import("./history-
|
|
718
|
+
const { getDependencyTree } = await import("./dist-COP53OQ4.js");
|
|
719
|
+
const { saveDepTree } = await import("./history-XLNVZEDI.js");
|
|
721
720
|
const tree = await getDependencyTree(projectPath, result.projectInfo.packageManager);
|
|
722
721
|
saveDepTree(projectPath, tree);
|
|
723
722
|
} catch {
|
|
@@ -733,7 +732,7 @@ function TuiApp({
|
|
|
733
732
|
setTimeout(() => setScoreFlash(void 0), 600);
|
|
734
733
|
}
|
|
735
734
|
try {
|
|
736
|
-
const { loadHistory: loadHistory2, detectRegressions } = await import("./history-
|
|
735
|
+
const { loadHistory: loadHistory2, detectRegressions } = await import("./history-XLNVZEDI.js");
|
|
737
736
|
const history = loadHistory2(projectPath);
|
|
738
737
|
if (history) {
|
|
739
738
|
const regressions = detectRegressions(history.entries);
|
|
@@ -820,11 +819,11 @@ function TuiApp({
|
|
|
820
819
|
const webReport = monorepoReportRef.current ?? reportRef.current;
|
|
821
820
|
if (!webReport) return;
|
|
822
821
|
try {
|
|
823
|
-
const { serveWeb } = await import("./web-
|
|
822
|
+
const { serveWeb } = await import("./web-XBUBGSTP.js");
|
|
824
823
|
const { default: openBrowser } = await import("open");
|
|
825
824
|
let aiService;
|
|
826
825
|
if (withAI && process.env.ANTHROPIC_API_KEY && !monorepoReportRef.current) {
|
|
827
|
-
const { createAIService } = await import("./ai-
|
|
826
|
+
const { createAIService } = await import("./ai-7DGOLNJX.js");
|
|
828
827
|
aiService = createAIService(process.env.ANTHROPIC_API_KEY);
|
|
829
828
|
addActivity("info", "Launching web dashboard with AI...");
|
|
830
829
|
} else {
|
|
@@ -137,7 +137,7 @@ async function loadConfig(projectPath) {
|
|
|
137
137
|
const configPath = CONFIG_FILES.map((f) => join(projectPath, f)).find((p) => existsSync(p));
|
|
138
138
|
if (!configPath) return null;
|
|
139
139
|
try {
|
|
140
|
-
const { createJiti } = await import("
|
|
140
|
+
const { createJiti } = await import("jiti");
|
|
141
141
|
const jiti = createJiti(projectPath);
|
|
142
142
|
const mod = await jiti.import(configPath);
|
|
143
143
|
const config = mod.default ?? mod;
|
|
@@ -11,7 +11,7 @@ var ASCII_ART = `
|
|
|
11
11
|
A vitals health check for your app
|
|
12
12
|
`.trim();
|
|
13
13
|
function Header({ projectName }) {
|
|
14
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "green" }, ASCII_ART), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " v", "1.
|
|
14
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "green" }, ASCII_ART), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " v", "1.7.0")), projectName && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " Analyzing "), /* @__PURE__ */ React.createElement(Text, { bold: true, color: "white" }, projectName)));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export {
|
package/dist/config.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -8,13 +8,12 @@ import {
|
|
|
8
8
|
} from "./chunk-TYG7ZQBP.js";
|
|
9
9
|
import {
|
|
10
10
|
Header
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-O77KS7KE.js";
|
|
12
12
|
import {
|
|
13
13
|
getScoreEmoji,
|
|
14
14
|
runSickbay,
|
|
15
15
|
runSickbayMonorepo
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-QGM4M3NI.js";
|
|
16
|
+
} from "./chunk-O26ERRN2.js";
|
|
18
17
|
|
|
19
18
|
// src/index.ts
|
|
20
19
|
import { existsSync } from "fs";
|
|
@@ -177,8 +176,8 @@ function App({
|
|
|
177
176
|
setMonorepoReport(r);
|
|
178
177
|
setProjectName(`monorepo (${r.packages.length} packages)`);
|
|
179
178
|
try {
|
|
180
|
-
const { getDependencyTree } = await import("./dist-
|
|
181
|
-
const { saveDepTree } = await import("./history-
|
|
179
|
+
const { getDependencyTree } = await import("./dist-COP53OQ4.js");
|
|
180
|
+
const { saveDepTree } = await import("./history-XLNVZEDI.js");
|
|
182
181
|
const packages = {};
|
|
183
182
|
for (const pkg of r.packages) {
|
|
184
183
|
packages[pkg.name] = await getDependencyTree(pkg.path, r.packageManager);
|
|
@@ -189,11 +188,11 @@ function App({
|
|
|
189
188
|
if (openWeb) {
|
|
190
189
|
setPhase("opening-web");
|
|
191
190
|
try {
|
|
192
|
-
const { serveWeb } = await import("./web-
|
|
191
|
+
const { serveWeb } = await import("./web-XBUBGSTP.js");
|
|
193
192
|
const { default: openBrowser } = await import("open");
|
|
194
193
|
let aiService;
|
|
195
194
|
if (enableAI && process.env.ANTHROPIC_API_KEY) {
|
|
196
|
-
const { createAIService } = await import("./ai-
|
|
195
|
+
const { createAIService } = await import("./ai-7DGOLNJX.js");
|
|
197
196
|
aiService = createAIService(process.env.ANTHROPIC_API_KEY);
|
|
198
197
|
}
|
|
199
198
|
const url = await serveWeb(r, 3030, aiService);
|
|
@@ -240,14 +239,14 @@ function App({
|
|
|
240
239
|
setProjectName(r.projectInfo.name);
|
|
241
240
|
setReport(r);
|
|
242
241
|
try {
|
|
243
|
-
const { saveEntry, saveLastReport } = await import("./history-
|
|
242
|
+
const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
|
|
244
243
|
saveEntry(r);
|
|
245
244
|
saveLastReport(r);
|
|
246
245
|
} catch {
|
|
247
246
|
}
|
|
248
247
|
try {
|
|
249
|
-
const { getDependencyTree } = await import("./dist-
|
|
250
|
-
const { saveDepTree } = await import("./history-
|
|
248
|
+
const { getDependencyTree } = await import("./dist-COP53OQ4.js");
|
|
249
|
+
const { saveDepTree } = await import("./history-XLNVZEDI.js");
|
|
251
250
|
const tree = await getDependencyTree(projectPath, r.projectInfo.packageManager);
|
|
252
251
|
saveDepTree(projectPath, tree);
|
|
253
252
|
} catch {
|
|
@@ -255,11 +254,11 @@ function App({
|
|
|
255
254
|
if (openWeb) {
|
|
256
255
|
setPhase("opening-web");
|
|
257
256
|
try {
|
|
258
|
-
const { serveWeb } = await import("./web-
|
|
257
|
+
const { serveWeb } = await import("./web-XBUBGSTP.js");
|
|
259
258
|
const { default: openBrowser } = await import("open");
|
|
260
259
|
let aiService;
|
|
261
260
|
if (enableAI && process.env.ANTHROPIC_API_KEY) {
|
|
262
|
-
const { createAIService } = await import("./ai-
|
|
261
|
+
const { createAIService } = await import("./ai-7DGOLNJX.js");
|
|
263
262
|
aiService = createAIService(process.env.ANTHROPIC_API_KEY);
|
|
264
263
|
}
|
|
265
264
|
const url = await serveWeb(r, 3030, aiService);
|
|
@@ -304,7 +303,7 @@ if (existsSync(globalConfigPath)) {
|
|
|
304
303
|
}
|
|
305
304
|
config({ debug: false, quiet: true });
|
|
306
305
|
var program = new Command();
|
|
307
|
-
program.name("sickbay").description("React project health check CLI").version("1.
|
|
306
|
+
program.name("sickbay").description("React project health check CLI").version("1.7.0", "-v, --version").enablePositionalOptions().passThroughOptions().option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single named package (monorepo only)").option("--json", "output raw JSON report").option("--web", "open web dashboard after scan").option("--no-ai", "disable AI features").option("--no-quotes", "suppress personality quotes in output").option("--verbose", "show verbose output").action(async (options) => {
|
|
308
307
|
if (options.path && options.path !== process.cwd()) {
|
|
309
308
|
const projectEnvPath = join(options.path, ".env");
|
|
310
309
|
if (existsSync(projectEnvPath)) {
|
|
@@ -313,14 +312,14 @@ program.name("sickbay").description("React project health check CLI").version("1
|
|
|
313
312
|
}
|
|
314
313
|
const updatePromise = (async () => {
|
|
315
314
|
try {
|
|
316
|
-
const { checkForUpdate } = await import("./update-check-
|
|
317
|
-
return await checkForUpdate("1.
|
|
315
|
+
const { checkForUpdate } = await import("./update-check-M7IFOMLJ.js");
|
|
316
|
+
return await checkForUpdate("1.7.0");
|
|
318
317
|
} catch {
|
|
319
318
|
return null;
|
|
320
319
|
}
|
|
321
320
|
})();
|
|
322
321
|
const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
|
|
323
|
-
const { detectMonorepo, runSickbay: runSickbay2, runSickbayMonorepo: runSickbayMonorepo2 } = await import("./dist-
|
|
322
|
+
const { detectMonorepo, runSickbay: runSickbay2, runSickbayMonorepo: runSickbayMonorepo2 } = await import("./dist-COP53OQ4.js");
|
|
324
323
|
const monorepoInfo = await detectMonorepo(options.path);
|
|
325
324
|
if (options.package && monorepoInfo.isMonorepo) {
|
|
326
325
|
const { readFileSync } = await import("fs");
|
|
@@ -378,14 +377,14 @@ program.name("sickbay").description("React project health check CLI").version("1
|
|
|
378
377
|
quotes: options.quotes
|
|
379
378
|
});
|
|
380
379
|
try {
|
|
381
|
-
const { saveEntry, saveLastReport } = await import("./history-
|
|
380
|
+
const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
|
|
382
381
|
saveEntry(report);
|
|
383
382
|
saveLastReport(report);
|
|
384
383
|
} catch {
|
|
385
384
|
}
|
|
386
385
|
try {
|
|
387
|
-
const { getDependencyTree } = await import("./dist-
|
|
388
|
-
const { saveDepTree } = await import("./history-
|
|
386
|
+
const { getDependencyTree } = await import("./dist-COP53OQ4.js");
|
|
387
|
+
const { saveDepTree } = await import("./history-XLNVZEDI.js");
|
|
389
388
|
const tree = await getDependencyTree(options.path, report.projectInfo.packageManager);
|
|
390
389
|
saveDepTree(options.path, tree);
|
|
391
390
|
} catch {
|
|
@@ -407,7 +406,7 @@ program.name("sickbay").description("React project health check CLI").version("1
|
|
|
407
406
|
);
|
|
408
407
|
});
|
|
409
408
|
program.command("init").description("Initialize .sickbay/ folder and run an initial baseline scan").option("-p, --path <path>", "project path to initialize", process.cwd()).action(async (options) => {
|
|
410
|
-
const { initSickbay } = await import("./init-
|
|
409
|
+
const { initSickbay } = await import("./init-F7CN356W.js");
|
|
411
410
|
await initSickbay(options.path);
|
|
412
411
|
});
|
|
413
412
|
program.command("fix").description("Interactively fix issues found by sickbay scan").option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single package (monorepo only)").option("--all", "apply all available fixes without prompting").option("--dry-run", "show what would be fixed without executing").option("--verbose", "show verbose output").action(async (options) => {
|
|
@@ -417,9 +416,9 @@ program.command("fix").description("Interactively fix issues found by sickbay sc
|
|
|
417
416
|
config({ path: projectEnvPath, override: true });
|
|
418
417
|
}
|
|
419
418
|
}
|
|
420
|
-
const { resolveProject } = await import("./resolve-package-
|
|
419
|
+
const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
|
|
421
420
|
const resolution = await resolveProject(options.path, options.package);
|
|
422
|
-
const { FixApp } = await import("./FixApp-
|
|
421
|
+
const { FixApp } = await import("./FixApp-6I7YP3X3.js");
|
|
423
422
|
const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
|
|
424
423
|
const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
|
|
425
424
|
render(
|
|
@@ -442,10 +441,10 @@ program.command("trend").description("Show score history and trends over time").
|
|
|
442
441
|
config({ path: projectEnvPath, override: true });
|
|
443
442
|
}
|
|
444
443
|
}
|
|
445
|
-
const { resolveProject } = await import("./resolve-package-
|
|
444
|
+
const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
|
|
446
445
|
const resolution = await resolveProject(options.path, options.package);
|
|
447
446
|
const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
|
|
448
|
-
const { TrendApp } = await import("./TrendApp-
|
|
447
|
+
const { TrendApp } = await import("./TrendApp-YO2JOGIS.js");
|
|
449
448
|
render(
|
|
450
449
|
React6.createElement(TrendApp, {
|
|
451
450
|
projectPath,
|
|
@@ -464,10 +463,10 @@ program.command("stats").description("Show a quick codebase overview and project
|
|
|
464
463
|
config({ path: projectEnvPath, override: true });
|
|
465
464
|
}
|
|
466
465
|
}
|
|
467
|
-
const { resolveProject } = await import("./resolve-package-
|
|
466
|
+
const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
|
|
468
467
|
const resolution = await resolveProject(options.path, options.package);
|
|
469
468
|
const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
|
|
470
|
-
const { StatsApp } = await import("./StatsApp-
|
|
469
|
+
const { StatsApp } = await import("./StatsApp-SEZZMUE3.js");
|
|
471
470
|
render(
|
|
472
471
|
React6.createElement(StatsApp, {
|
|
473
472
|
projectPath,
|
|
@@ -479,7 +478,7 @@ program.command("stats").description("Show a quick codebase overview and project
|
|
|
479
478
|
);
|
|
480
479
|
});
|
|
481
480
|
program.command("tui").description("Launch the persistent developer dashboard").option("-p, --path <path>", "project path to monitor", process.cwd()).option("--no-watch", "disable file-watching auto-refresh").option("--no-quotes", "suppress personality quotes in output").option("--refresh <seconds>", "auto-refresh interval in seconds", "300").option("-c, --checks <checks>", "comma-separated list of checks to run").action(async (options) => {
|
|
482
|
-
const { TuiApp } = await import("./TuiApp-
|
|
481
|
+
const { TuiApp } = await import("./TuiApp-L62KV4TM.js");
|
|
483
482
|
const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
|
|
484
483
|
render(
|
|
485
484
|
React6.createElement(TuiApp, {
|
|
@@ -499,10 +498,10 @@ program.command("doctor").description("Diagnose project setup and configuration
|
|
|
499
498
|
config({ path: projectEnvPath, override: true });
|
|
500
499
|
}
|
|
501
500
|
}
|
|
502
|
-
const { resolveProject } = await import("./resolve-package-
|
|
501
|
+
const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
|
|
503
502
|
const resolution = await resolveProject(options.path, options.package);
|
|
504
503
|
const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
|
|
505
|
-
const { DoctorApp } = await import("./DoctorApp-
|
|
504
|
+
const { DoctorApp } = await import("./DoctorApp-ZYWU7BJU.js");
|
|
506
505
|
render(
|
|
507
506
|
React6.createElement(DoctorApp, {
|
|
508
507
|
projectPath,
|
|
@@ -515,16 +514,16 @@ program.command("doctor").description("Diagnose project setup and configuration
|
|
|
515
514
|
);
|
|
516
515
|
});
|
|
517
516
|
program.command("badge").description("Generate a health score badge for your README").option("-p, --path <path>", "project path", process.cwd()).option("--package <name>", "scope to a single package (monorepo only)").option("--html", "output HTML <img> tag instead of markdown").option("--url", "output bare badge URL only").option("--label <text>", "custom badge label", "sickbay").option("--scan", "run a fresh scan instead of using last report").action(async (options) => {
|
|
518
|
-
const { resolveProject } = await import("./resolve-package-
|
|
517
|
+
const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
|
|
519
518
|
const resolution = await resolveProject(options.path, options.package);
|
|
520
519
|
const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
|
|
521
|
-
const { loadScoreFromLastReport, badgeUrl, badgeMarkdown, badgeHtml } = await import("./badge-
|
|
520
|
+
const { loadScoreFromLastReport, badgeUrl, badgeMarkdown, badgeHtml } = await import("./badge-KQ73KEIN.js");
|
|
522
521
|
let score = options.scan ? null : loadScoreFromLastReport(projectPath);
|
|
523
522
|
if (score === null) {
|
|
524
|
-
const { runSickbay: runSickbay2 } = await import("./dist-
|
|
523
|
+
const { runSickbay: runSickbay2 } = await import("./dist-COP53OQ4.js");
|
|
525
524
|
const report = await runSickbay2({ projectPath, quotes: false });
|
|
526
525
|
try {
|
|
527
|
-
const { saveEntry, saveLastReport } = await import("./history-
|
|
526
|
+
const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
|
|
528
527
|
saveEntry(report);
|
|
529
528
|
saveLastReport(report);
|
|
530
529
|
} catch {
|
|
@@ -550,7 +549,7 @@ program.command("diff <branch>").description("Compare health score against anoth
|
|
|
550
549
|
}
|
|
551
550
|
}
|
|
552
551
|
const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
|
|
553
|
-
const { DiffApp } = await import("./DiffApp-
|
|
552
|
+
const { DiffApp } = await import("./DiffApp-6DCOQNOE.js");
|
|
554
553
|
render(
|
|
555
554
|
React6.createElement(DiffApp, {
|
|
556
555
|
projectPath: options.path,
|
|
@@ -2,11 +2,10 @@ import {
|
|
|
2
2
|
detectContext,
|
|
3
3
|
getAvailableChecks,
|
|
4
4
|
runSickbay
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-O26ERRN2.js";
|
|
6
6
|
import {
|
|
7
7
|
saveEntry
|
|
8
8
|
} from "./chunk-3OR2GFVE.js";
|
|
9
|
-
import "./chunk-QGM4M3NI.js";
|
|
10
9
|
|
|
11
10
|
// src/commands/init.ts
|
|
12
11
|
import { mkdirSync, writeFileSync, existsSync, readFileSync, appendFileSync } from "fs";
|
|
@@ -79,7 +78,7 @@ async function initSickbay(projectPath) {
|
|
|
79
78
|
console.log("\u26A0 .sickbay/baseline.json already exists. Overwriting with new scan.");
|
|
80
79
|
}
|
|
81
80
|
console.log("Running initial scan to generate baseline...\n");
|
|
82
|
-
const report = await runSickbay({ projectPath });
|
|
81
|
+
const report = await runSickbay({ projectPath, _config: null });
|
|
83
82
|
writeFileSync(baselinePath, JSON.stringify(report, null, 2));
|
|
84
83
|
try {
|
|
85
84
|
saveEntry(report);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sickbay",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Zero-config health check CLI for JavaScript and TypeScript projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"ink": "^6.8.0",
|
|
45
45
|
"ink-gradient": "^4.0.0",
|
|
46
46
|
"ink-spinner": "^5.0.0",
|
|
47
|
+
"jiti": "^2.6.1",
|
|
47
48
|
"jscpd": "^4.0.8",
|
|
48
49
|
"knip": "^6.1.0",
|
|
49
50
|
"license-checker": "^25.0.1",
|
package/dist/chunk-QGM4M3NI.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
8
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
9
|
-
}) : x)(function(x) {
|
|
10
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
11
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
12
|
-
});
|
|
13
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
14
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
15
|
-
};
|
|
16
|
-
var __copyProps = (to, from, except, desc) => {
|
|
17
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
-
for (let key of __getOwnPropNames(from))
|
|
19
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
-
}
|
|
22
|
-
return to;
|
|
23
|
-
};
|
|
24
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
26
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
27
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
30
|
-
mod
|
|
31
|
-
));
|
|
32
|
-
|
|
33
|
-
export {
|
|
34
|
-
__require,
|
|
35
|
-
__commonJS,
|
|
36
|
-
__toESM
|
|
37
|
-
};
|