@gachlab/devup 0.1.1 → 0.3.0
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/CHANGELOG.md +112 -0
- package/README.md +185 -13
- package/dist/config/cli.d.ts +8 -2
- package/dist/config/cli.d.ts.map +1 -1
- package/dist/config/types.d.ts +40 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +987 -182
- package/dist/index.js.map +1 -1
- package/dist/lazy/proxy.d.ts.map +1 -1
- package/dist/orchestrator/dry-run.d.ts +15 -0
- package/dist/orchestrator/dry-run.d.ts.map +1 -0
- package/dist/orchestrator/once.d.ts +19 -0
- package/dist/orchestrator/once.d.ts.map +1 -0
- package/dist/process/external.d.ts +30 -0
- package/dist/process/external.d.ts.map +1 -0
- package/dist/process/health.d.ts +10 -1
- package/dist/process/health.d.ts.map +1 -1
- package/dist/process/installer.d.ts +0 -10
- package/dist/process/installer.d.ts.map +1 -1
- package/dist/process/log-sink.d.ts +23 -0
- package/dist/process/log-sink.d.ts.map +1 -0
- package/dist/process/manager.d.ts +12 -3
- package/dist/process/manager.d.ts.map +1 -1
- package/dist/process/types.d.ts +2 -0
- package/dist/process/types.d.ts.map +1 -1
- package/dist/proxy-config/caddy.d.ts +10 -0
- package/dist/proxy-config/caddy.d.ts.map +1 -0
- package/dist/proxy-config/detect.d.ts.map +1 -1
- package/dist/proxy-config/nginx.d.ts +10 -0
- package/dist/proxy-config/nginx.d.ts.map +1 -0
- package/dist/tui/App.d.ts +3 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/LogsPanel.d.ts.map +1 -1
- package/dist/tui/StatsPanel.d.ts.map +1 -1
- package/dist/tui/hooks/useKeyBindings.d.ts.map +1 -1
- package/dist/tui/hooks/useProcessManager.d.ts +7 -3
- package/dist/tui/hooks/useProcessManager.d.ts.map +1 -1
- package/dist/tui/hooks/useProxySync.d.ts.map +1 -1
- package/dist/utils.d.ts +0 -5
- package/dist/utils.d.ts.map +1 -1
- package/package.json +4 -2
package/dist/lazy/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/lazy/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/lazy/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAyG9D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DevStackConfig, ServiceConfig } from '../config/types.js';
|
|
2
|
+
import type { CliArgs } from '../config/cli.js';
|
|
3
|
+
import type { ProxyConfigProvider, ProxyOpts } from '../proxy-config/types.js';
|
|
4
|
+
export interface DryRunOpts {
|
|
5
|
+
config: DevStackConfig;
|
|
6
|
+
services: ServiceConfig[];
|
|
7
|
+
cliArgs: CliArgs;
|
|
8
|
+
env: Record<string, string>;
|
|
9
|
+
baseCwd: string;
|
|
10
|
+
proxyProvider: ProxyConfigProvider | null;
|
|
11
|
+
proxyOpts: ProxyOpts | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function renderDryRun(opts: DryRunOpts): string;
|
|
14
|
+
export declare function runDryRun(opts: DryRunOpts): void;
|
|
15
|
+
//# sourceMappingURL=dry-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../src/orchestrator/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAK/E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAkErD;AAiBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAGhD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DevStackConfig, ServiceConfig } from '../config/types.js';
|
|
2
|
+
import type { CliArgs } from '../config/cli.js';
|
|
3
|
+
import type { Platform } from '../platform/types.js';
|
|
4
|
+
import type { LogSink } from '../process/log-sink.js';
|
|
5
|
+
export interface OnceOpts {
|
|
6
|
+
config: DevStackConfig;
|
|
7
|
+
services: ServiceConfig[];
|
|
8
|
+
cliArgs: CliArgs;
|
|
9
|
+
platform: Platform;
|
|
10
|
+
env: Record<string, string>;
|
|
11
|
+
baseCwd: string;
|
|
12
|
+
logSink: LogSink | null;
|
|
13
|
+
/** For testing: override stdout. */
|
|
14
|
+
out?: (line: string) => void;
|
|
15
|
+
}
|
|
16
|
+
/** Boots services phase-by-phase, waits until each API is healthy, then returns.
|
|
17
|
+
* Returns 0 if everything came up within onceTimeout, 1 otherwise. */
|
|
18
|
+
export declare function runOnce(opts: OnceOpts): Promise<number>;
|
|
19
|
+
//# sourceMappingURL=once.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../src/orchestrator/once.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,oCAAoC;IACpC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;uEACuE;AACvE,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAsE7D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ChildProcess } from 'node:child_process';
|
|
2
|
+
import type { ExternalService } from '../config/types.js';
|
|
3
|
+
import type { Platform } from '../platform/types.js';
|
|
4
|
+
export interface ExternalProc {
|
|
5
|
+
svc: ExternalService;
|
|
6
|
+
proc: ChildProcess;
|
|
7
|
+
pid: number | null;
|
|
8
|
+
}
|
|
9
|
+
export interface StartExternalsOpts {
|
|
10
|
+
baseCwd: string;
|
|
11
|
+
env: Record<string, string>;
|
|
12
|
+
platform: Platform;
|
|
13
|
+
onLog?: (svcName: string, msg: string) => void;
|
|
14
|
+
}
|
|
15
|
+
export interface StartExternalsResult {
|
|
16
|
+
procs: ExternalProc[];
|
|
17
|
+
allHealthy: boolean;
|
|
18
|
+
failed: string[];
|
|
19
|
+
}
|
|
20
|
+
/** Spawn each external sequentially; for those with healthCheck, wait until it passes
|
|
21
|
+
* (up to startTimeout seconds) before moving on. Returns the spawned handles and a
|
|
22
|
+
* failure summary the caller can act on. */
|
|
23
|
+
export declare function startExternals(externals: ExternalService[], opts: StartExternalsOpts): Promise<StartExternalsResult>;
|
|
24
|
+
/** Kill the externals and run any `stopCmd`s. Best-effort, fire-and-forget for the stopCmds. */
|
|
25
|
+
export declare function stopExternals(procs: ExternalProc[], platform: Platform, opts?: {
|
|
26
|
+
baseCwd: string;
|
|
27
|
+
env: Record<string, string>;
|
|
28
|
+
onLog?: (svc: string, msg: string) => void;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=external.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/process/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,eAAe,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;6CAE6C;AAC7C,wBAAsB,cAAc,CAClC,SAAS,EAAE,eAAe,EAAE,EAC5B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAED,gGAAgG;AAChG,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EAAE,EACrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAc,GAC7G,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
package/dist/process/health.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { HealthStatus } from './types.js';
|
|
2
|
-
|
|
2
|
+
import type { HealthCheckConfig } from '../config/types.js';
|
|
3
|
+
export declare function checkPort(port: number, host?: string, timeoutMs?: number): Promise<boolean>;
|
|
4
|
+
export declare function checkHttp(port: number, opts?: {
|
|
5
|
+
path?: string;
|
|
6
|
+
expect?: number | number[];
|
|
7
|
+
host?: string;
|
|
8
|
+
timeoutMs?: number;
|
|
9
|
+
}): Promise<boolean>;
|
|
10
|
+
/** Run the right check for a service, given its optional healthCheck config. */
|
|
11
|
+
export declare function checkHealth(port: number, hc?: HealthCheckConfig): Promise<boolean>;
|
|
3
12
|
export declare function waitForPort(port: number, opts?: {
|
|
4
13
|
timeout?: number;
|
|
5
14
|
interval?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/process/health.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/process/health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAc,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAS9F;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1F,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAa9G;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,CAI/E"}
|
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
export interface InstallResult {
|
|
2
|
-
name: string;
|
|
3
|
-
ok: boolean;
|
|
4
|
-
error?: string;
|
|
5
|
-
}
|
|
6
1
|
export declare function installService(cwd: string, env: Record<string, string>, onLog?: (msg: string) => void): Promise<boolean>;
|
|
7
|
-
export declare function installBatch(items: Array<{
|
|
8
|
-
name: string;
|
|
9
|
-
cwd: string;
|
|
10
|
-
env: Record<string, string>;
|
|
11
|
-
}>, concurrency: number, onLog?: (name: string, msg: string) => void): Promise<InstallResult[]>;
|
|
12
2
|
//# sourceMappingURL=installer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/process/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/process/installer.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC,OAAO,CAAC,CA+BlB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface LogSinkOpts {
|
|
2
|
+
/** Project name used as a subdirectory under the log root. */
|
|
3
|
+
projectName: string;
|
|
4
|
+
/** Root directory (default: ~/.devup/logs). */
|
|
5
|
+
rootDir?: string;
|
|
6
|
+
/** Rotate the previous run's file to <svc>.log.prev on first write. Default: true. */
|
|
7
|
+
rotateOnStart?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Persist service logs to disk, one file per service, append-only.
|
|
10
|
+
* On the first write for a service, rotates any previous <svc>.log to <svc>.log.prev. */
|
|
11
|
+
export declare class LogSink {
|
|
12
|
+
private readonly dir;
|
|
13
|
+
private readonly rotateOnStart;
|
|
14
|
+
private readonly streams;
|
|
15
|
+
private readonly seen;
|
|
16
|
+
constructor(opts: LogSinkOpts);
|
|
17
|
+
/** Returns the file path for a service log (useful for tests / UI). */
|
|
18
|
+
pathFor(svcName: string): string;
|
|
19
|
+
write(svcName: string, line: string): void;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
private streamFor;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=log-sink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-sink.d.ts","sourceRoot":"","sources":["../../src/process/log-sink.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;0FAC0F;AAC1F,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;gBAE9B,IAAI,EAAE,WAAW;IAO7B,uEAAuE;IACvE,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,OAAO,CAAC,SAAS;CAgBlB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Platform } from '../platform/types.js';
|
|
2
2
|
import type { ServiceConfig } from '../config/types.js';
|
|
3
3
|
import type { ProcessState, ProcessManagerEvents } from './types.js';
|
|
4
|
+
/** Accepts both '/foo/' (vim-style) and bare 'foo'. Case-insensitive by default. */
|
|
5
|
+
export declare function compileReadyPattern(pattern: string | undefined): RegExp | null;
|
|
4
6
|
export declare class ProcessManager {
|
|
5
7
|
readonly state: Map<string, ProcessState>;
|
|
6
8
|
private readonly procs;
|
|
@@ -14,13 +16,20 @@ export declare class ProcessManager {
|
|
|
14
16
|
platform: Platform;
|
|
15
17
|
events: ProcessManagerEvents;
|
|
16
18
|
});
|
|
17
|
-
install(svc: ServiceConfig): Promise<boolean>;
|
|
19
|
+
install(svc: ServiceConfig, colorIdx?: number): Promise<boolean>;
|
|
18
20
|
start(svc: ServiceConfig, colorIdx: number, isRestart?: boolean): Promise<void>;
|
|
21
|
+
private runPreBuild;
|
|
22
|
+
private spawnWatchBuild;
|
|
23
|
+
/** Create a state entry in 'crashed' status without spawning a process (used when preBuild fails). */
|
|
24
|
+
private recordCrashedState;
|
|
19
25
|
stop(name: string): void;
|
|
26
|
+
private stopWatchProc;
|
|
20
27
|
restart(name: string): Promise<void>;
|
|
21
28
|
checkAllHealth(): Promise<void>;
|
|
22
|
-
cleanup(
|
|
29
|
+
cleanup(opts?: {
|
|
30
|
+
gracePeriodMs?: number;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
private findStateByProc;
|
|
23
33
|
private log;
|
|
24
|
-
private getColorIdx;
|
|
25
34
|
}
|
|
26
35
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/process/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAQrE,qBAAa,cAAc;IACzB,QAAQ,CAAC,KAAK,4BAAmC;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,EAAE,oBAAoB,CAAC;KAC9B;IAOK,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/process/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAQrE,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAS9E;AAoBD,qBAAa,cAAc;IACzB,QAAQ,CAAC,KAAK,4BAAmC;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,EAAE,oBAAoB,CAAC;KAC9B;IAOK,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMhE,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiGnF,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,eAAe;IAgBvB,sGAAsG;IACtG,OAAO,CAAC,kBAAkB;IAc1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB,OAAO,CAAC,aAAa;IAOf,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,OAAO,CAAC,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCnE,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,GAAG;CAGZ"}
|
package/dist/process/types.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface ProcessState {
|
|
|
13
13
|
startedAt: number | null;
|
|
14
14
|
intentionalStop: boolean;
|
|
15
15
|
colorIdx: number;
|
|
16
|
+
/** Side-car watch process spawned alongside the main one (when `watchBuild` is set). */
|
|
17
|
+
watchProc?: ChildProcess | null;
|
|
16
18
|
}
|
|
17
19
|
export interface ProcessManagerEvents {
|
|
18
20
|
onLog: (svcName: string, text: string, colorIdx: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/process/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAChG,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/process/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAChG,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CAC5D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProxyConfigProvider, ProxyOpts, ServiceState } from './types.js';
|
|
2
|
+
/** Generates a Caddyfile.
|
|
3
|
+
* Tip: point Caddy at it with `caddy run --config <path> --adapter caddyfile` or include it. */
|
|
4
|
+
export declare class CaddyProvider implements ProxyConfigProvider {
|
|
5
|
+
readonly name = "caddy";
|
|
6
|
+
generate(services: Map<string, ServiceState>, opts: ProxyOpts): string;
|
|
7
|
+
write(content: string, opts: ProxyOpts): void;
|
|
8
|
+
clear(opts: ProxyOpts): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=caddy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caddy.d.ts","sourceRoot":"","sources":["../../src/proxy-config/caddy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/E;iGACiG;AACjG,qBAAa,aAAc,YAAW,mBAAmB;IACvD,QAAQ,CAAC,IAAI,WAAW;IAExB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM;IAuBtE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAM7C,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;CAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/proxy-config/detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/proxy-config/detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAWtD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAOrE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProxyConfigProvider, ProxyOpts, ServiceState } from './types.js';
|
|
2
|
+
/** Generates an Nginx server-block config file.
|
|
3
|
+
* Drop it into /etc/nginx/conf.d/ or include from your main nginx.conf. */
|
|
4
|
+
export declare class NginxProvider implements ProxyConfigProvider {
|
|
5
|
+
readonly name = "nginx";
|
|
6
|
+
generate(services: Map<string, ServiceState>, opts: ProxyOpts): string;
|
|
7
|
+
write(content: string, opts: ProxyOpts): void;
|
|
8
|
+
clear(opts: ProxyOpts): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=nginx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nginx.d.ts","sourceRoot":"","sources":["../../src/proxy-config/nginx.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/E;4EAC4E;AAC5E,qBAAa,aAAc,YAAW,mBAAmB;IACvD,QAAQ,CAAC,IAAI,WAAW;IAExB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM;IAwCtE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAM7C,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;CAG7B"}
|
package/dist/tui/App.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Platform } from '../platform/types.js';
|
|
|
2
2
|
import type { DevStackConfig, ServiceConfig } from '../config/types.js';
|
|
3
3
|
import type { CliArgs } from '../config/cli.js';
|
|
4
4
|
import type { ProxyConfigProvider, ProxyOpts } from '../proxy-config/types.js';
|
|
5
|
+
import type { LogSink } from '../process/log-sink.js';
|
|
5
6
|
interface Props {
|
|
6
7
|
config: DevStackConfig;
|
|
7
8
|
services: ServiceConfig[];
|
|
@@ -11,7 +12,8 @@ interface Props {
|
|
|
11
12
|
baseCwd: string;
|
|
12
13
|
proxyProvider: ProxyConfigProvider | null;
|
|
13
14
|
proxyOpts: ProxyOpts | null;
|
|
15
|
+
logSink: LogSink | null;
|
|
14
16
|
}
|
|
15
|
-
export declare function App({ config, services, cliArgs, platform, env, baseCwd, proxyProvider, proxyOpts }: Props): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function App({ config, services, cliArgs, platform, env, baseCwd, proxyProvider, proxyOpts, logSink }: Props): import("react/jsx-runtime").JSX.Element;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=App.d.ts.map
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAgBtD,UAAU,KAAK;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,2CAuMlH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../src/tui/LogsPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAG7D,UAAU,KAAK;IACb,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"LogsPanel.d.ts","sourceRoot":"","sources":["../../src/tui/LogsPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAG7D,UAAU,KAAK;IACb,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,2CAiD5I"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatsPanel.d.ts","sourceRoot":"","sources":["../../src/tui/StatsPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIjE,UAAU,KAAK;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAuBD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"StatsPanel.d.ts","sourceRoot":"","sources":["../../src/tui/StatsPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIjE,UAAU,KAAK;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAuBD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,2CAuFpH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyBindings.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useKeyBindings.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AACtE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAErC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"useKeyBindings.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useKeyBindings.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AACtE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAErC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA4BD,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;sBAOsC,KAAK;mBACR,MAAM,GAAG,IAAI;mBACb,MAAM,GAAG,IAAI;;;;WAnDxC,KAAK;WACL,KAAK;eACD,MAAM,GAAG,IAAI;gBACZ,MAAM,GAAG,IAAI;gBACb,OAAO;oBACH,OAAO;aACd,MAAM;kBACD,OAAO;sBACH,MAAM;uBACL,MAAM;EAmF1B"}
|
|
@@ -2,6 +2,7 @@ import { ProcessManager } from '../../process/manager.js';
|
|
|
2
2
|
import type { ProcessState } from '../../process/types.js';
|
|
3
3
|
import type { Platform } from '../../platform/types.js';
|
|
4
4
|
import type { ServiceConfig } from '../../config/types.js';
|
|
5
|
+
import { LogSink } from '../../process/log-sink.js';
|
|
5
6
|
export interface LogEntry {
|
|
6
7
|
svcName: string;
|
|
7
8
|
text: string;
|
|
@@ -12,15 +13,18 @@ export interface ServiceStats {
|
|
|
12
13
|
cpu: string;
|
|
13
14
|
mem: string;
|
|
14
15
|
}
|
|
15
|
-
export declare function useProcessManager(platform: Platform, baseCwd: string, env: Record<string, string
|
|
16
|
+
export declare function useProcessManager(platform: Platform, baseCwd: string, env: Record<string, string>, logSink?: LogSink | null): {
|
|
16
17
|
states: Map<string, ProcessState>;
|
|
17
18
|
logs: LogEntry[];
|
|
18
19
|
stats: Map<string, ServiceStats>;
|
|
19
20
|
start: (svc: ServiceConfig, colorIdx: number) => Promise<void> | undefined;
|
|
20
21
|
stop: (name: string) => void | undefined;
|
|
21
22
|
restart: (name: string) => Promise<void> | undefined;
|
|
22
|
-
install: (svc: ServiceConfig) => Promise<boolean> | undefined;
|
|
23
|
-
cleanup: () => void | undefined;
|
|
23
|
+
install: (svc: ServiceConfig, colorIdx: number) => Promise<boolean> | undefined;
|
|
24
|
+
cleanup: () => Promise<void> | undefined;
|
|
25
|
+
clearLogs: () => void;
|
|
26
|
+
setPaused: (paused: boolean) => void;
|
|
27
|
+
pushLog: (svcName: string, text: string, colorIdx?: number) => void;
|
|
24
28
|
manager: ProcessManager | null;
|
|
25
29
|
};
|
|
26
30
|
//# sourceMappingURL=useProcessManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProcessManager.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useProcessManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useProcessManager.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useProcessManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,GAAE,OAAO,GAAG,IAAW;;;;iBAuGH,aAAa,YAAY,MAAM;iBAC/B,MAAM;oBACH,MAAM;mBACP,aAAa,YAAY,MAAM;;;wBAjBrB,OAAO;uBAhBR,MAAM,QAAQ,MAAM;;EAwC3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProxySync.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useProxySync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAgB,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,mBAAmB,GAAG,IAAI,EACpC,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACjC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"useProxySync.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useProxySync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAgB,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,mBAAmB,GAAG,IAAI,EACpC,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACjC,OAAO,EAAE,OAAO,QA2BjB"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import type { ServiceConfig } from './config/types.js';
|
|
2
2
|
export declare function parseEnvFile(filePath: string, baseEnv?: Record<string, string>): Record<string, string>;
|
|
3
3
|
export declare function fmtUptime(ms: number): string;
|
|
4
|
-
export declare function highlightSearch(text: string, term: string | null, escapeFn?: (s: string) => string): string;
|
|
5
|
-
export declare function findSearchMatch(lines: string[], term: string, currentScroll: number, direction: 'next' | 'prev', stripTagsFn?: (s: string) => string): number;
|
|
6
|
-
export declare function formatLogLine(svcName: string, line: string, colorTag: string, maxNameLen: number, showTimestamps: boolean, searchTerm: string | null, escapeFn?: (s: string) => string): string;
|
|
7
|
-
export declare function shouldLogLine(svcName: string, filter: string | null): boolean;
|
|
8
|
-
export declare function buildLogsLabel(filter: string | null, searchTerm: string | null, paused: boolean): string;
|
|
9
4
|
export declare function needsInstall(fullCwd: string): boolean;
|
|
10
5
|
export declare function writeInstallStamp(fullCwd: string): void;
|
|
11
6
|
export declare function sortServiceNames(names: string[], sortMode: string, statsMap: Record<string, {
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB3G;AAID,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB3G;AAID,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAU5C;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKvD;AAID,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACxD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7C,MAAM,EAAE,CAQV;AAID,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAMvF;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAK7D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU3G;AAID,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI7F;AAID,eAAO,MAAM,SAAS,UAIrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gachlab/devup",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Dev stack runner with TUI, lazy proxy, and reverse proxy support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
"dist",
|
|
19
|
-
"README.md"
|
|
19
|
+
"README.md",
|
|
20
|
+
"CHANGELOG.md",
|
|
21
|
+
"LICENSE"
|
|
20
22
|
],
|
|
21
23
|
"keywords": [
|
|
22
24
|
"dev",
|