@doriandev/devcc 0.1.2
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/LICENSE +15 -0
- package/README.md +659 -0
- package/bin/devcc.mjs +66 -0
- package/dist/devcc/app/App.d.ts +178 -0
- package/dist/devcc/app/App.d.ts.map +1 -0
- package/dist/devcc/app/App.js +1255 -0
- package/dist/devcc/app/App.js.map +1 -0
- package/dist/devcc/app/builtinCommands.d.ts +17 -0
- package/dist/devcc/app/builtinCommands.d.ts.map +1 -0
- package/dist/devcc/app/builtinCommands.js +389 -0
- package/dist/devcc/app/builtinCommands.js.map +1 -0
- package/dist/devcc/app/keymap.d.ts +21 -0
- package/dist/devcc/app/keymap.d.ts.map +1 -0
- package/dist/devcc/app/keymap.js +162 -0
- package/dist/devcc/app/keymap.js.map +1 -0
- package/dist/devcc/app/theme.d.ts +49 -0
- package/dist/devcc/app/theme.d.ts.map +1 -0
- package/dist/devcc/app/theme.js +68 -0
- package/dist/devcc/app/theme.js.map +1 -0
- package/dist/devcc/cli.d.ts +3 -0
- package/dist/devcc/cli.d.ts.map +1 -0
- package/dist/devcc/cli.js +113 -0
- package/dist/devcc/cli.js.map +1 -0
- package/dist/devcc/components/CommandPalette.d.ts +26 -0
- package/dist/devcc/components/CommandPalette.d.ts.map +1 -0
- package/dist/devcc/components/CommandPalette.js +113 -0
- package/dist/devcc/components/CommandPalette.js.map +1 -0
- package/dist/devcc/components/ConfirmDialog.d.ts +31 -0
- package/dist/devcc/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/devcc/components/ConfirmDialog.js +147 -0
- package/dist/devcc/components/ConfirmDialog.js.map +1 -0
- package/dist/devcc/components/Footer.d.ts +22 -0
- package/dist/devcc/components/Footer.d.ts.map +1 -0
- package/dist/devcc/components/Footer.js +72 -0
- package/dist/devcc/components/Footer.js.map +1 -0
- package/dist/devcc/components/Header.d.ts +12 -0
- package/dist/devcc/components/Header.d.ts.map +1 -0
- package/dist/devcc/components/Header.js +84 -0
- package/dist/devcc/components/Header.js.map +1 -0
- package/dist/devcc/components/HelpOverlay.d.ts +18 -0
- package/dist/devcc/components/HelpOverlay.d.ts.map +1 -0
- package/dist/devcc/components/HelpOverlay.js +48 -0
- package/dist/devcc/components/HelpOverlay.js.map +1 -0
- package/dist/devcc/components/Overlay.d.ts +31 -0
- package/dist/devcc/components/Overlay.d.ts.map +1 -0
- package/dist/devcc/components/Overlay.js +60 -0
- package/dist/devcc/components/Overlay.js.map +1 -0
- package/dist/devcc/components/ProjectPicker.d.ts +26 -0
- package/dist/devcc/components/ProjectPicker.d.ts.map +1 -0
- package/dist/devcc/components/ProjectPicker.js +114 -0
- package/dist/devcc/components/ProjectPicker.js.map +1 -0
- package/dist/devcc/components/Sidebar.d.ts +42 -0
- package/dist/devcc/components/Sidebar.d.ts.map +1 -0
- package/dist/devcc/components/Sidebar.js +127 -0
- package/dist/devcc/components/Sidebar.js.map +1 -0
- package/dist/devcc/components/StatusBadge.d.ts +16 -0
- package/dist/devcc/components/StatusBadge.d.ts.map +1 -0
- package/dist/devcc/components/StatusBadge.js +30 -0
- package/dist/devcc/components/StatusBadge.js.map +1 -0
- package/dist/devcc/components/primitives.d.ts +62 -0
- package/dist/devcc/components/primitives.d.ts.map +1 -0
- package/dist/devcc/components/primitives.js +169 -0
- package/dist/devcc/components/primitives.js.map +1 -0
- package/dist/devcc/components/styled.d.ts +16 -0
- package/dist/devcc/components/styled.d.ts.map +1 -0
- package/dist/devcc/components/styled.js +35 -0
- package/dist/devcc/components/styled.js.map +1 -0
- package/dist/devcc/core/commands.d.ts +89 -0
- package/dist/devcc/core/commands.d.ts.map +1 -0
- package/dist/devcc/core/commands.js +68 -0
- package/dist/devcc/core/commands.js.map +1 -0
- package/dist/devcc/core/config.d.ts +81 -0
- package/dist/devcc/core/config.d.ts.map +1 -0
- package/dist/devcc/core/config.js +313 -0
- package/dist/devcc/core/config.js.map +1 -0
- package/dist/devcc/core/events.d.ts +21 -0
- package/dist/devcc/core/events.d.ts.map +1 -0
- package/dist/devcc/core/events.js +27 -0
- package/dist/devcc/core/events.js.map +1 -0
- package/dist/devcc/core/state.d.ts +104 -0
- package/dist/devcc/core/state.d.ts.map +1 -0
- package/dist/devcc/core/state.js +139 -0
- package/dist/devcc/core/state.js.map +1 -0
- package/dist/devcc/deps/DependencyService.d.ts +50 -0
- package/dist/devcc/deps/DependencyService.d.ts.map +1 -0
- package/dist/devcc/deps/DependencyService.js +109 -0
- package/dist/devcc/deps/DependencyService.js.map +1 -0
- package/dist/devcc/deps/parse.d.ts +49 -0
- package/dist/devcc/deps/parse.d.ts.map +1 -0
- package/dist/devcc/deps/parse.js +158 -0
- package/dist/devcc/deps/parse.js.map +1 -0
- package/dist/devcc/git/GitService.d.ts +60 -0
- package/dist/devcc/git/GitService.d.ts.map +1 -0
- package/dist/devcc/git/GitService.js +160 -0
- package/dist/devcc/git/GitService.js.map +1 -0
- package/dist/devcc/git/parse.d.ts +57 -0
- package/dist/devcc/git/parse.d.ts.map +1 -0
- package/dist/devcc/git/parse.js +174 -0
- package/dist/devcc/git/parse.js.map +1 -0
- package/dist/devcc/index.d.ts +37 -0
- package/dist/devcc/index.d.ts.map +1 -0
- package/dist/devcc/index.js +36 -0
- package/dist/devcc/index.js.map +1 -0
- package/dist/devcc/logs/LogBuffer.d.ts +86 -0
- package/dist/devcc/logs/LogBuffer.d.ts.map +1 -0
- package/dist/devcc/logs/LogBuffer.js +200 -0
- package/dist/devcc/logs/LogBuffer.js.map +1 -0
- package/dist/devcc/logs/merge.d.ts +36 -0
- package/dist/devcc/logs/merge.d.ts.map +1 -0
- package/dist/devcc/logs/merge.js +71 -0
- package/dist/devcc/logs/merge.js.map +1 -0
- package/dist/devcc/processes/ManagedProcess.d.ts +129 -0
- package/dist/devcc/processes/ManagedProcess.d.ts.map +1 -0
- package/dist/devcc/processes/ManagedProcess.js +80 -0
- package/dist/devcc/processes/ManagedProcess.js.map +1 -0
- package/dist/devcc/processes/ProcessManager.d.ts +112 -0
- package/dist/devcc/processes/ProcessManager.d.ts.map +1 -0
- package/dist/devcc/processes/ProcessManager.js +525 -0
- package/dist/devcc/processes/ProcessManager.js.map +1 -0
- package/dist/devcc/processes/graph.d.ts +35 -0
- package/dist/devcc/processes/graph.d.ts.map +1 -0
- package/dist/devcc/processes/graph.js +68 -0
- package/dist/devcc/processes/graph.js.map +1 -0
- package/dist/devcc/projects/ProjectRegistry.d.ts +52 -0
- package/dist/devcc/projects/ProjectRegistry.d.ts.map +1 -0
- package/dist/devcc/projects/ProjectRegistry.js +177 -0
- package/dist/devcc/projects/ProjectRegistry.js.map +1 -0
- package/dist/devcc/services/ServiceManager.d.ts +48 -0
- package/dist/devcc/services/ServiceManager.d.ts.map +1 -0
- package/dist/devcc/services/ServiceManager.js +146 -0
- package/dist/devcc/services/ServiceManager.js.map +1 -0
- package/dist/devcc/services/docker.d.ts +37 -0
- package/dist/devcc/services/docker.d.ts.map +1 -0
- package/dist/devcc/services/docker.js +179 -0
- package/dist/devcc/services/docker.js.map +1 -0
- package/dist/devcc/services/node.d.ts +40 -0
- package/dist/devcc/services/node.d.ts.map +1 -0
- package/dist/devcc/services/node.js +107 -0
- package/dist/devcc/services/node.js.map +1 -0
- package/dist/devcc/services/ollama.d.ts +27 -0
- package/dist/devcc/services/ollama.d.ts.map +1 -0
- package/dist/devcc/services/ollama.js +66 -0
- package/dist/devcc/services/ollama.js.map +1 -0
- package/dist/devcc/services/postgres.d.ts +30 -0
- package/dist/devcc/services/postgres.d.ts.map +1 -0
- package/dist/devcc/services/postgres.js +47 -0
- package/dist/devcc/services/postgres.js.map +1 -0
- package/dist/devcc/services/redis.d.ts +20 -0
- package/dist/devcc/services/redis.d.ts.map +1 -0
- package/dist/devcc/services/redis.js +39 -0
- package/dist/devcc/services/redis.js.map +1 -0
- package/dist/devcc/services/types.d.ts +51 -0
- package/dist/devcc/services/types.d.ts.map +1 -0
- package/dist/devcc/services/types.js +10 -0
- package/dist/devcc/services/types.js.map +1 -0
- package/dist/devcc/system/SystemMonitor.d.ts +87 -0
- package/dist/devcc/system/SystemMonitor.d.ts.map +1 -0
- package/dist/devcc/system/SystemMonitor.js +142 -0
- package/dist/devcc/system/SystemMonitor.js.map +1 -0
- package/dist/devcc/utils/errors.d.ts +31 -0
- package/dist/devcc/utils/errors.d.ts.map +1 -0
- package/dist/devcc/utils/errors.js +52 -0
- package/dist/devcc/utils/errors.js.map +1 -0
- package/dist/devcc/utils/exec.d.ts +41 -0
- package/dist/devcc/utils/exec.d.ts.map +1 -0
- package/dist/devcc/utils/exec.js +112 -0
- package/dist/devcc/utils/exec.js.map +1 -0
- package/dist/devcc/utils/format.d.ts +18 -0
- package/dist/devcc/utils/format.d.ts.map +1 -0
- package/dist/devcc/utils/format.js +85 -0
- package/dist/devcc/utils/format.js.map +1 -0
- package/dist/devcc/utils/fuzzy.d.ts +12 -0
- package/dist/devcc/utils/fuzzy.d.ts.map +1 -0
- package/dist/devcc/utils/fuzzy.js +20 -0
- package/dist/devcc/utils/fuzzy.js.map +1 -0
- package/dist/devcc/utils/logger.d.ts +41 -0
- package/dist/devcc/utils/logger.d.ts.map +1 -0
- package/dist/devcc/utils/logger.js +117 -0
- package/dist/devcc/utils/logger.js.map +1 -0
- package/dist/devcc/utils/packageManager.d.ts +39 -0
- package/dist/devcc/utils/packageManager.d.ts.map +1 -0
- package/dist/devcc/utils/packageManager.js +85 -0
- package/dist/devcc/utils/packageManager.js.map +1 -0
- package/dist/devcc/utils/paths.d.ts +12 -0
- package/dist/devcc/utils/paths.d.ts.map +1 -0
- package/dist/devcc/utils/paths.js +39 -0
- package/dist/devcc/utils/paths.js.map +1 -0
- package/dist/devcc/views/DependenciesView.d.ts +34 -0
- package/dist/devcc/views/DependenciesView.d.ts.map +1 -0
- package/dist/devcc/views/DependenciesView.js +170 -0
- package/dist/devcc/views/DependenciesView.js.map +1 -0
- package/dist/devcc/views/GitView.d.ts +29 -0
- package/dist/devcc/views/GitView.d.ts.map +1 -0
- package/dist/devcc/views/GitView.js +226 -0
- package/dist/devcc/views/GitView.js.map +1 -0
- package/dist/devcc/views/LogsView.d.ts +39 -0
- package/dist/devcc/views/LogsView.d.ts.map +1 -0
- package/dist/devcc/views/LogsView.js +249 -0
- package/dist/devcc/views/LogsView.js.map +1 -0
- package/dist/devcc/views/OverviewView.d.ts +16 -0
- package/dist/devcc/views/OverviewView.d.ts.map +1 -0
- package/dist/devcc/views/OverviewView.js +135 -0
- package/dist/devcc/views/OverviewView.js.map +1 -0
- package/dist/devcc/views/ProcessesView.d.ts +26 -0
- package/dist/devcc/views/ProcessesView.d.ts.map +1 -0
- package/dist/devcc/views/ProcessesView.js +161 -0
- package/dist/devcc/views/ProcessesView.js.map +1 -0
- package/dist/devcc/views/ScriptsView.d.ts +30 -0
- package/dist/devcc/views/ScriptsView.d.ts.map +1 -0
- package/dist/devcc/views/ScriptsView.js +168 -0
- package/dist/devcc/views/ScriptsView.js.map +1 -0
- package/dist/devcc/views/ServicesView.d.ts +28 -0
- package/dist/devcc/views/ServicesView.d.ts.map +1 -0
- package/dist/devcc/views/ServicesView.js +153 -0
- package/dist/devcc/views/ServicesView.js.map +1 -0
- package/dist/devcc/views/SettingsView.d.ts +20 -0
- package/dist/devcc/views/SettingsView.d.ts.map +1 -0
- package/dist/devcc/views/SettingsView.js +114 -0
- package/dist/devcc/views/SettingsView.js.map +1 -0
- package/dist/devcc/views/SystemView.d.ts +13 -0
- package/dist/devcc/views/SystemView.d.ts.map +1 -0
- package/dist/devcc/views/SystemView.js +82 -0
- package/dist/devcc/views/SystemView.js.map +1 -0
- package/dist/devcc/views/View.d.ts +35 -0
- package/dist/devcc/views/View.d.ts.map +1 -0
- package/dist/devcc/views/View.js +42 -0
- package/dist/devcc/views/View.js.map +1 -0
- package/package.json +79 -0
- package/src/devcc/app/App.ts +1463 -0
- package/src/devcc/app/builtinCommands.ts +429 -0
- package/src/devcc/app/keymap.ts +167 -0
- package/src/devcc/app/theme.ts +83 -0
- package/src/devcc/cli.ts +122 -0
- package/src/devcc/components/CommandPalette.ts +136 -0
- package/src/devcc/components/ConfirmDialog.ts +174 -0
- package/src/devcc/components/Footer.ts +85 -0
- package/src/devcc/components/Header.ts +93 -0
- package/src/devcc/components/HelpOverlay.ts +62 -0
- package/src/devcc/components/Overlay.ts +91 -0
- package/src/devcc/components/ProjectPicker.ts +138 -0
- package/src/devcc/components/Sidebar.ts +163 -0
- package/src/devcc/components/StatusBadge.ts +36 -0
- package/src/devcc/components/primitives.ts +213 -0
- package/src/devcc/components/styled.ts +44 -0
- package/src/devcc/core/commands.ts +140 -0
- package/src/devcc/core/config.ts +405 -0
- package/src/devcc/core/events.ts +41 -0
- package/src/devcc/core/state.ts +236 -0
- package/src/devcc/deps/DependencyService.ts +152 -0
- package/src/devcc/deps/parse.ts +210 -0
- package/src/devcc/git/GitService.ts +205 -0
- package/src/devcc/git/parse.ts +203 -0
- package/src/devcc/index.ts +115 -0
- package/src/devcc/logs/LogBuffer.ts +237 -0
- package/src/devcc/logs/merge.ts +87 -0
- package/src/devcc/processes/ManagedProcess.ts +195 -0
- package/src/devcc/processes/ProcessManager.ts +625 -0
- package/src/devcc/processes/graph.ts +98 -0
- package/src/devcc/projects/ProjectRegistry.ts +219 -0
- package/src/devcc/services/ServiceManager.ts +180 -0
- package/src/devcc/services/docker.ts +220 -0
- package/src/devcc/services/node.ts +137 -0
- package/src/devcc/services/ollama.ts +80 -0
- package/src/devcc/services/postgres.ts +57 -0
- package/src/devcc/services/redis.ts +47 -0
- package/src/devcc/services/types.ts +59 -0
- package/src/devcc/system/SystemMonitor.ts +207 -0
- package/src/devcc/utils/errors.ts +64 -0
- package/src/devcc/utils/exec.ts +165 -0
- package/src/devcc/utils/format.ts +83 -0
- package/src/devcc/utils/fuzzy.ts +44 -0
- package/src/devcc/utils/logger.ts +140 -0
- package/src/devcc/utils/packageManager.ts +112 -0
- package/src/devcc/utils/paths.ts +39 -0
- package/src/devcc/views/DependenciesView.ts +206 -0
- package/src/devcc/views/GitView.ts +259 -0
- package/src/devcc/views/LogsView.ts +300 -0
- package/src/devcc/views/OverviewView.ts +187 -0
- package/src/devcc/views/ProcessesView.ts +177 -0
- package/src/devcc/views/ScriptsView.ts +187 -0
- package/src/devcc/views/ServicesView.ts +188 -0
- package/src/devcc/views/SettingsView.ts +146 -0
- package/src/devcc/views/SystemView.ts +110 -0
- package/src/devcc/views/View.ts +63 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
export class TypedEmitter extends EventEmitter {
|
|
3
|
+
}
|
|
4
|
+
/** Collects unsubscribe functions so a component can tear everything down at once. */
|
|
5
|
+
export class Subscriptions {
|
|
6
|
+
disposers = [];
|
|
7
|
+
add(unsubscribe) {
|
|
8
|
+
this.disposers.push(unsubscribe);
|
|
9
|
+
return unsubscribe;
|
|
10
|
+
}
|
|
11
|
+
dispose() {
|
|
12
|
+
const disposers = this.disposers;
|
|
13
|
+
this.disposers = [];
|
|
14
|
+
for (const dispose of disposers) {
|
|
15
|
+
try {
|
|
16
|
+
dispose();
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Teardown must never throw.
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
get size() {
|
|
24
|
+
return this.disposers.length;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/devcc/core/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAW1C,MAAM,OAAO,YAAsC,SAAQ,YAAoB;CAAG;AAKlF,sFAAsF;AACtF,MAAM,OAAO,aAAa;IAChB,SAAS,GAAkB,EAAE,CAAA;IAErC,GAAG,CAAC,WAAwB;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,OAAO;QACL,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,EAAE,CAAA;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { GitSnapshot } from "../git/GitService.js";
|
|
2
|
+
import type { LogSource } from "../logs/LogBuffer.js";
|
|
3
|
+
import type { ManagedProcess } from "../processes/ManagedProcess.js";
|
|
4
|
+
import type { DependencySnapshot } from "../deps/DependencyService.js";
|
|
5
|
+
import type { ProjectEntry } from "../projects/ProjectRegistry.js";
|
|
6
|
+
import type { ServiceSnapshot } from "../services/types.js";
|
|
7
|
+
import type { HostInfo, SystemMetrics, ToolVersions } from "../system/SystemMonitor.js";
|
|
8
|
+
import type { PackageManagerDetection } from "../utils/packageManager.js";
|
|
9
|
+
export declare const VIEW_IDS: readonly ["overview", "processes", "services", "scripts", "git", "logs", "dependencies", "system", "settings"];
|
|
10
|
+
export type ViewId = (typeof VIEW_IDS)[number];
|
|
11
|
+
export type OverlayKind = "none" | "palette" | "help" | "confirm" | "prompt" | "projects" | "inspect";
|
|
12
|
+
export type NotificationLevel = "info" | "success" | "warn" | "error";
|
|
13
|
+
export interface Notification {
|
|
14
|
+
id: number;
|
|
15
|
+
level: NotificationLevel;
|
|
16
|
+
message: string;
|
|
17
|
+
detail?: string;
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
}
|
|
20
|
+
export interface ProjectState {
|
|
21
|
+
name: string;
|
|
22
|
+
rootDir: string;
|
|
23
|
+
packageManager: PackageManagerDetection;
|
|
24
|
+
configPath: string | null;
|
|
25
|
+
configIssues: string[];
|
|
26
|
+
host: HostInfo;
|
|
27
|
+
tools: ToolVersions;
|
|
28
|
+
}
|
|
29
|
+
export interface ScriptRun {
|
|
30
|
+
scriptName: string;
|
|
31
|
+
/** Process id in the ProcessManager, also the log source id. */
|
|
32
|
+
processId: string;
|
|
33
|
+
startedAt: Date;
|
|
34
|
+
finishedAt?: Date;
|
|
35
|
+
exitCode?: number;
|
|
36
|
+
status: "running" | "succeeded" | "failed";
|
|
37
|
+
}
|
|
38
|
+
export interface ScriptsState {
|
|
39
|
+
available: {
|
|
40
|
+
name: string;
|
|
41
|
+
command: string;
|
|
42
|
+
}[];
|
|
43
|
+
runs: Record<string, ScriptRun>;
|
|
44
|
+
}
|
|
45
|
+
export interface UiState {
|
|
46
|
+
view: ViewId;
|
|
47
|
+
overlay: OverlayKind;
|
|
48
|
+
/** Selected row index per view; keeps position when switching back. */
|
|
49
|
+
selection: Record<ViewId, number>;
|
|
50
|
+
logSource: string | null;
|
|
51
|
+
logFollow: boolean;
|
|
52
|
+
/** Terminal size; views degrade gracefully below the thresholds. */
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
sidebarVisible: boolean;
|
|
56
|
+
statusMessage: string | null;
|
|
57
|
+
clock: Date;
|
|
58
|
+
}
|
|
59
|
+
export interface AppState {
|
|
60
|
+
ui: UiState;
|
|
61
|
+
project: ProjectState;
|
|
62
|
+
processes: ManagedProcess[];
|
|
63
|
+
services: ServiceSnapshot[];
|
|
64
|
+
scripts: ScriptsState;
|
|
65
|
+
git: GitSnapshot;
|
|
66
|
+
dependencies: DependencySnapshot;
|
|
67
|
+
system: SystemMetrics | null;
|
|
68
|
+
logSources: LogSource[];
|
|
69
|
+
notifications: Notification[];
|
|
70
|
+
/** Projects devcc can switch to, including the current one. */
|
|
71
|
+
projects: ProjectEntry[];
|
|
72
|
+
}
|
|
73
|
+
/** Terminal narrower than this hides the sidebar. */
|
|
74
|
+
export declare const NARROW_WIDTH = 76;
|
|
75
|
+
/** Terminal shorter than this drops decorative rows. */
|
|
76
|
+
export declare const SHORT_HEIGHT = 20;
|
|
77
|
+
export declare function createInitialSelection(): Record<ViewId, number>;
|
|
78
|
+
export declare function createInitialState(project: ProjectState, width: number, height: number): AppState;
|
|
79
|
+
export type Listener<T> = (value: T, previous: T) => void;
|
|
80
|
+
/**
|
|
81
|
+
* Minimal observable store.
|
|
82
|
+
*
|
|
83
|
+
* `watch()` subscribes to a slice: the listener only fires when that slice
|
|
84
|
+
* actually changes, so a 1 Hz CPU sample does not repaint the git panel.
|
|
85
|
+
*/
|
|
86
|
+
export declare class Store<S extends object> {
|
|
87
|
+
private state;
|
|
88
|
+
private readonly watchers;
|
|
89
|
+
constructor(initialState: S);
|
|
90
|
+
getState(): S;
|
|
91
|
+
/** Replace state via an updater; watchers are notified with the new slices. */
|
|
92
|
+
setState(updater: (state: S) => S): void;
|
|
93
|
+
/** Patch top-level keys. Reference-equal patches are ignored. */
|
|
94
|
+
patch(patch: Partial<S>): void;
|
|
95
|
+
watch<T>(select: (state: S) => T, listener: Listener<T>, equals?: (a: T, b: T) => boolean): () => void;
|
|
96
|
+
private notify;
|
|
97
|
+
}
|
|
98
|
+
export type AppStore = Store<AppState>;
|
|
99
|
+
/** Shallow array equality, for watching lists of snapshots. */
|
|
100
|
+
export declare function shallowArrayEqual<T>(a: readonly T[], b: readonly T[]): boolean;
|
|
101
|
+
/** Convenience updaters used by the app layer. */
|
|
102
|
+
export declare function updateUi(store: AppStore, patch: Partial<UiState>): void;
|
|
103
|
+
export declare function setSelection(store: AppStore, view: ViewId, index: number): void;
|
|
104
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/devcc/core/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { EMPTY_GIT_SNAPSHOT } from "../git/GitService.js";
|
|
2
|
+
import { EMPTY_DEPENDENCY_SNAPSHOT } from "../deps/DependencyService.js";
|
|
3
|
+
export const VIEW_IDS = [
|
|
4
|
+
"overview",
|
|
5
|
+
"processes",
|
|
6
|
+
"services",
|
|
7
|
+
"scripts",
|
|
8
|
+
"git",
|
|
9
|
+
"logs",
|
|
10
|
+
"dependencies",
|
|
11
|
+
"system",
|
|
12
|
+
"settings",
|
|
13
|
+
];
|
|
14
|
+
/** Terminal narrower than this hides the sidebar. */
|
|
15
|
+
export const NARROW_WIDTH = 76;
|
|
16
|
+
/** Terminal shorter than this drops decorative rows. */
|
|
17
|
+
export const SHORT_HEIGHT = 20;
|
|
18
|
+
export function createInitialSelection() {
|
|
19
|
+
return Object.fromEntries(VIEW_IDS.map((id) => [id, 0]));
|
|
20
|
+
}
|
|
21
|
+
export function createInitialState(project, width, height) {
|
|
22
|
+
return {
|
|
23
|
+
ui: {
|
|
24
|
+
view: "overview",
|
|
25
|
+
overlay: "none",
|
|
26
|
+
selection: createInitialSelection(),
|
|
27
|
+
logSource: null,
|
|
28
|
+
logFollow: true,
|
|
29
|
+
width,
|
|
30
|
+
height,
|
|
31
|
+
sidebarVisible: width >= NARROW_WIDTH,
|
|
32
|
+
statusMessage: null,
|
|
33
|
+
clock: new Date(),
|
|
34
|
+
},
|
|
35
|
+
project,
|
|
36
|
+
processes: [],
|
|
37
|
+
services: [],
|
|
38
|
+
scripts: { available: [], runs: {} },
|
|
39
|
+
git: EMPTY_GIT_SNAPSHOT,
|
|
40
|
+
dependencies: EMPTY_DEPENDENCY_SNAPSHOT,
|
|
41
|
+
system: null,
|
|
42
|
+
logSources: [],
|
|
43
|
+
notifications: [],
|
|
44
|
+
projects: [],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Minimal observable store.
|
|
49
|
+
*
|
|
50
|
+
* `watch()` subscribes to a slice: the listener only fires when that slice
|
|
51
|
+
* actually changes, so a 1 Hz CPU sample does not repaint the git panel.
|
|
52
|
+
*/
|
|
53
|
+
export class Store {
|
|
54
|
+
state;
|
|
55
|
+
watchers = new Set();
|
|
56
|
+
constructor(initialState) {
|
|
57
|
+
this.state = initialState;
|
|
58
|
+
}
|
|
59
|
+
getState() {
|
|
60
|
+
return this.state;
|
|
61
|
+
}
|
|
62
|
+
/** Replace state via an updater; watchers are notified with the new slices. */
|
|
63
|
+
setState(updater) {
|
|
64
|
+
const previous = this.state;
|
|
65
|
+
const next = updater(previous);
|
|
66
|
+
if (next === previous)
|
|
67
|
+
return;
|
|
68
|
+
this.state = next;
|
|
69
|
+
this.notify();
|
|
70
|
+
}
|
|
71
|
+
/** Patch top-level keys. Reference-equal patches are ignored. */
|
|
72
|
+
patch(patch) {
|
|
73
|
+
this.setState((state) => {
|
|
74
|
+
let changed = false;
|
|
75
|
+
for (const key of Object.keys(patch)) {
|
|
76
|
+
if (patch[key] !== state[key]) {
|
|
77
|
+
changed = true;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return changed ? { ...state, ...patch } : state;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
watch(select, listener, equals = Object.is) {
|
|
85
|
+
const entry = {
|
|
86
|
+
select: select,
|
|
87
|
+
equals: equals,
|
|
88
|
+
listener: listener,
|
|
89
|
+
last: select(this.state),
|
|
90
|
+
};
|
|
91
|
+
this.watchers.add(entry);
|
|
92
|
+
return () => {
|
|
93
|
+
this.watchers.delete(entry);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
notify() {
|
|
97
|
+
for (const entry of [...this.watchers]) {
|
|
98
|
+
const value = entry.select(this.state);
|
|
99
|
+
if (entry.equals(value, entry.last))
|
|
100
|
+
continue;
|
|
101
|
+
const last = entry.last;
|
|
102
|
+
entry.last = value;
|
|
103
|
+
entry.listener(value, last);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Shallow array equality, for watching lists of snapshots. */
|
|
108
|
+
export function shallowArrayEqual(a, b) {
|
|
109
|
+
if (a === b)
|
|
110
|
+
return true;
|
|
111
|
+
if (a.length !== b.length)
|
|
112
|
+
return false;
|
|
113
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
114
|
+
if (a[i] !== b[i])
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
/** Convenience updaters used by the app layer. */
|
|
120
|
+
export function updateUi(store, patch) {
|
|
121
|
+
store.setState((state) => {
|
|
122
|
+
let changed = false;
|
|
123
|
+
for (const key of Object.keys(patch)) {
|
|
124
|
+
if (patch[key] !== state.ui[key]) {
|
|
125
|
+
changed = true;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return changed ? { ...state, ui: { ...state.ui, ...patch } } : state;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
export function setSelection(store, view, index) {
|
|
133
|
+
store.setState((state) => {
|
|
134
|
+
if (state.ui.selection[view] === index)
|
|
135
|
+
return state;
|
|
136
|
+
return { ...state, ui: { ...state.ui, selection: { ...state.ui.selection, [view]: index } } };
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/devcc/core/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { TypedEmitter } from "../core/events.js";
|
|
2
|
+
import { DevccError } from "../utils/errors.js";
|
|
3
|
+
import type { ScopedLogger } from "../utils/logger.js";
|
|
4
|
+
import type { PackageManager } from "../utils/packageManager.js";
|
|
5
|
+
import { type OutdatedPackage } from "./parse.js";
|
|
6
|
+
export interface DependencySnapshot {
|
|
7
|
+
packages: OutdatedPackage[];
|
|
8
|
+
/** Null until the first check has run. */
|
|
9
|
+
checkedAt: Date | null;
|
|
10
|
+
checking: boolean;
|
|
11
|
+
/** Set when the check could not run at all (unsupported manager, no network). */
|
|
12
|
+
error: string | null;
|
|
13
|
+
supported: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const EMPTY_DEPENDENCY_SNAPSHOT: DependencySnapshot;
|
|
16
|
+
export type DependencyServiceEvents = {
|
|
17
|
+
"deps:changed": [DependencySnapshot];
|
|
18
|
+
"deps:error": [DevccError];
|
|
19
|
+
};
|
|
20
|
+
export interface DependencyServiceOptions {
|
|
21
|
+
rootDir: string;
|
|
22
|
+
manager: PackageManager;
|
|
23
|
+
logger: ScopedLogger;
|
|
24
|
+
/** Registry lookups are slow; the default budget is generous. */
|
|
25
|
+
timeoutMs?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks for outdated dependencies via the project's own package manager.
|
|
29
|
+
*
|
|
30
|
+
* This is the one panel that never polls: it talks to the registry, so it runs
|
|
31
|
+
* only when asked. `outdated` exits non-zero when it finds updates, which is a
|
|
32
|
+
* result and not a failure - only an empty parse plus a non-zero exit is an
|
|
33
|
+
* error worth reporting.
|
|
34
|
+
*/
|
|
35
|
+
export declare class DependencyService extends TypedEmitter<DependencyServiceEvents> {
|
|
36
|
+
private readonly options;
|
|
37
|
+
private snapshot;
|
|
38
|
+
private inFlight;
|
|
39
|
+
private readonly timeoutMs;
|
|
40
|
+
constructor(options: DependencyServiceOptions);
|
|
41
|
+
getSnapshot(): DependencySnapshot;
|
|
42
|
+
/** Run the check. Concurrent calls share one run. */
|
|
43
|
+
check(): Promise<DependencySnapshot>;
|
|
44
|
+
private run;
|
|
45
|
+
private fail;
|
|
46
|
+
private publish;
|
|
47
|
+
}
|
|
48
|
+
/** The argv that updates a single package to its latest version. */
|
|
49
|
+
export declare function updateArgs(manager: PackageManager, name: string): string[];
|
|
50
|
+
//# sourceMappingURL=DependencyService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyService.d.ts","sourceRoot":"","sources":["../../../src/devcc/deps/DependencyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,0CAA0C;IAC1C,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,iFAAiF;IACjF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAMvC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,EAAE,CAAC,kBAAkB,CAAC,CAAA;IACpC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,YAAY,CAAA;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,uBAAuB,CAAC;IAK9D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAuD;IACvE,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEL,OAAO,EAAE,wBAAwB;IAM9D,WAAW,IAAI,kBAAkB;IAIjC,qDAAqD;IAC/C,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAQ5B,GAAG;IAkDjB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,OAAO;CAKhB;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1E"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { TypedEmitter } from "../core/events.js";
|
|
2
|
+
import { DevccError } from "../utils/errors.js";
|
|
3
|
+
import { exec } from "../utils/exec.js";
|
|
4
|
+
import { outdatedArgs, parseOutdated, sortOutdated, supportsOutdatedJson, } from "./parse.js";
|
|
5
|
+
export const EMPTY_DEPENDENCY_SNAPSHOT = {
|
|
6
|
+
packages: [],
|
|
7
|
+
checkedAt: null,
|
|
8
|
+
checking: false,
|
|
9
|
+
error: null,
|
|
10
|
+
supported: true,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Checks for outdated dependencies via the project's own package manager.
|
|
14
|
+
*
|
|
15
|
+
* This is the one panel that never polls: it talks to the registry, so it runs
|
|
16
|
+
* only when asked. `outdated` exits non-zero when it finds updates, which is a
|
|
17
|
+
* result and not a failure - only an empty parse plus a non-zero exit is an
|
|
18
|
+
* error worth reporting.
|
|
19
|
+
*/
|
|
20
|
+
export class DependencyService extends TypedEmitter {
|
|
21
|
+
options;
|
|
22
|
+
snapshot = { ...EMPTY_DEPENDENCY_SNAPSHOT };
|
|
23
|
+
inFlight = null;
|
|
24
|
+
timeoutMs;
|
|
25
|
+
constructor(options) {
|
|
26
|
+
super();
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.timeoutMs = options.timeoutMs ?? 90_000;
|
|
29
|
+
this.snapshot = { ...EMPTY_DEPENDENCY_SNAPSHOT, supported: supportsOutdatedJson(options.manager) };
|
|
30
|
+
}
|
|
31
|
+
getSnapshot() {
|
|
32
|
+
return this.snapshot;
|
|
33
|
+
}
|
|
34
|
+
/** Run the check. Concurrent calls share one run. */
|
|
35
|
+
async check() {
|
|
36
|
+
if (this.inFlight)
|
|
37
|
+
return this.inFlight;
|
|
38
|
+
this.inFlight = this.run().finally(() => {
|
|
39
|
+
this.inFlight = null;
|
|
40
|
+
});
|
|
41
|
+
return this.inFlight;
|
|
42
|
+
}
|
|
43
|
+
async run() {
|
|
44
|
+
const { manager, rootDir } = this.options;
|
|
45
|
+
if (!supportsOutdatedJson(manager)) {
|
|
46
|
+
return this.publish({
|
|
47
|
+
...this.snapshot,
|
|
48
|
+
supported: false,
|
|
49
|
+
checking: false,
|
|
50
|
+
checkedAt: new Date(),
|
|
51
|
+
error: `${manager} does not provide machine-readable "outdated" output`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
this.publish({ ...this.snapshot, checking: true, error: null });
|
|
55
|
+
const result = await exec(manager, outdatedArgs(manager), {
|
|
56
|
+
cwd: rootDir,
|
|
57
|
+
timeoutMs: this.timeoutMs,
|
|
58
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
59
|
+
});
|
|
60
|
+
if (result.spawnError) {
|
|
61
|
+
return this.fail(`${manager} not found on PATH`);
|
|
62
|
+
}
|
|
63
|
+
if (result.timedOut) {
|
|
64
|
+
return this.fail(`${manager} outdated timed out`);
|
|
65
|
+
}
|
|
66
|
+
const packages = sortOutdated(parseOutdated(manager, result.stdout));
|
|
67
|
+
// `outdated` exits 1 when updates exist, so only treat a non-zero exit with
|
|
68
|
+
// nothing parsed as a real failure.
|
|
69
|
+
if (packages.length === 0 && !result.ok && result.stdout.trim() === "") {
|
|
70
|
+
const detail = result.stderr.trim();
|
|
71
|
+
if (detail !== "") {
|
|
72
|
+
this.options.logger.warn("outdated check failed", { code: result.code, detail });
|
|
73
|
+
return this.fail(detail.split("\n")[0] ?? "outdated check failed");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
this.options.logger.info("outdated check complete", { count: packages.length });
|
|
77
|
+
return this.publish({
|
|
78
|
+
packages,
|
|
79
|
+
checkedAt: new Date(),
|
|
80
|
+
checking: false,
|
|
81
|
+
error: null,
|
|
82
|
+
supported: true,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
fail(message) {
|
|
86
|
+
const error = new DevccError({ scope: "command", message: `Dependency check failed: ${message}` });
|
|
87
|
+
this.emit("deps:error", error);
|
|
88
|
+
return this.publish({ ...this.snapshot, checking: false, checkedAt: new Date(), error: message });
|
|
89
|
+
}
|
|
90
|
+
publish(snapshot) {
|
|
91
|
+
this.snapshot = snapshot;
|
|
92
|
+
this.emit("deps:changed", snapshot);
|
|
93
|
+
return snapshot;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** The argv that updates a single package to its latest version. */
|
|
97
|
+
export function updateArgs(manager, name) {
|
|
98
|
+
switch (manager) {
|
|
99
|
+
case "pnpm":
|
|
100
|
+
return ["update", "--latest", name];
|
|
101
|
+
case "npm":
|
|
102
|
+
return ["install", `${name}@latest`];
|
|
103
|
+
case "yarn":
|
|
104
|
+
return ["upgrade", `${name}@latest`];
|
|
105
|
+
case "bun":
|
|
106
|
+
return ["update", "--latest", name];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=DependencyService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyService.js","sourceRoot":"","sources":["../../../src/devcc/deps/DependencyService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { PackageManager } from "../utils/packageManager.js";
|
|
2
|
+
export type DependencyKind = "dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies";
|
|
3
|
+
/** How far behind a package is, derived from the version strings. */
|
|
4
|
+
export type UpdateSeverity = "major" | "minor" | "patch" | "unknown";
|
|
5
|
+
export interface OutdatedPackage {
|
|
6
|
+
name: string;
|
|
7
|
+
/** Installed version. */
|
|
8
|
+
current: string;
|
|
9
|
+
/** Highest version allowed by the range in package.json. */
|
|
10
|
+
wanted: string;
|
|
11
|
+
/** Highest version published. */
|
|
12
|
+
latest: string;
|
|
13
|
+
kind: DependencyKind;
|
|
14
|
+
severity: UpdateSeverity;
|
|
15
|
+
/** True when `current` already satisfies the range but `latest` is newer. */
|
|
16
|
+
onlyLatest: boolean;
|
|
17
|
+
deprecated?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Managers whose `outdated` command can emit machine-readable output. */
|
|
20
|
+
export declare const JSON_CAPABLE_MANAGERS: readonly PackageManager[];
|
|
21
|
+
export declare function supportsOutdatedJson(manager: PackageManager): boolean;
|
|
22
|
+
/** The argv that produces JSON `outdated` output for each manager. */
|
|
23
|
+
export declare function outdatedArgs(manager: PackageManager): string[];
|
|
24
|
+
/** Strip range operators and build metadata: `^1.2.3-beta.1` -> `[1, 2, 3]`. */
|
|
25
|
+
export declare function parseVersion(version: string): [number, number, number] | null;
|
|
26
|
+
/**
|
|
27
|
+
* Classify the gap between two versions. `unknown` when either side is not a
|
|
28
|
+
* plain semver triple (git refs, `latest`, workspace protocols).
|
|
29
|
+
*/
|
|
30
|
+
export declare function severityBetween(current: string, latest: string): UpdateSeverity;
|
|
31
|
+
/**
|
|
32
|
+
* pnpm (`--format json`) and npm (`--json`) both emit an object keyed by package
|
|
33
|
+
* name; only the field names around it differ slightly.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseNpmStyleOutdated(json: unknown): OutdatedPackage[];
|
|
36
|
+
/** yarn classic emits newline-delimited JSON with a `table` payload. */
|
|
37
|
+
export declare function parseYarnOutdated(output: string): OutdatedPackage[];
|
|
38
|
+
/** Dispatch to the right parser for the manager that produced `output`. */
|
|
39
|
+
export declare function parseOutdated(manager: PackageManager, output: string): OutdatedPackage[];
|
|
40
|
+
/** Most-significant updates first, then alphabetically. */
|
|
41
|
+
export declare function sortOutdated(packages: readonly OutdatedPackage[]): OutdatedPackage[];
|
|
42
|
+
export interface OutdatedSummary {
|
|
43
|
+
total: number;
|
|
44
|
+
major: number;
|
|
45
|
+
minor: number;
|
|
46
|
+
patch: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function summariseOutdated(packages: readonly OutdatedPackage[]): OutdatedSummary;
|
|
49
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/devcc/deps/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhE,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,sBAAsB,CAAA;AAE7G,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,cAAc,CAAA;IACxB,6EAA6E;IAC7E,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAA4B,CAAA;AAEvF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAErE;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAW9D;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAQ/E;AAgDD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,EAAE,CA0BtE;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CA0BnE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAWxF;AAID,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,EAAE,CAKpF;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,CAOvF"}
|