@supatype/cli 0.1.0 → 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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +121 -86
- package/.turbo/turbo-typecheck.log +2 -2
- package/dist/binary-cache.d.ts +2 -0
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +36 -0
- package/dist/binary-cache.js.map +1 -1
- package/dist/binary-download-lock.d.ts +12 -0
- package/dist/binary-download-lock.d.ts.map +1 -0
- package/dist/binary-download-lock.js +106 -0
- package/dist/binary-download-lock.js.map +1 -0
- package/dist/cli-package-version.d.ts +3 -0
- package/dist/cli-package-version.d.ts.map +1 -0
- package/dist/cli-package-version.js +15 -0
- package/dist/cli-package-version.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.js +25 -19
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/admin.d.ts +28 -1
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +290 -112
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/cache.d.ts +1 -1
- package/dist/commands/cache.d.ts.map +1 -1
- package/dist/commands/cache.js +98 -5
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +28 -22
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts +8 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +278 -139
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link-helpers.d.ts.map +1 -1
- package/dist/commands/link-helpers.js +26 -25
- package/dist/commands/link-helpers.js.map +1 -1
- package/dist/commands/push.js +3 -3
- package/dist/commands/push.js.map +1 -1
- package/dist/compose-local-server-image.d.ts +13 -0
- package/dist/compose-local-server-image.d.ts.map +1 -0
- package/dist/compose-local-server-image.js +57 -0
- package/dist/compose-local-server-image.js.map +1 -0
- package/dist/compose-rename.d.ts +10 -0
- package/dist/compose-rename.d.ts.map +1 -0
- package/dist/compose-rename.js +64 -0
- package/dist/compose-rename.js.map +1 -0
- package/dist/dev-compose.d.ts.map +1 -1
- package/dist/dev-compose.js +138 -97
- package/dist/dev-compose.js.map +1 -1
- package/dist/dev-log-bus.d.ts +5 -0
- package/dist/dev-log-bus.d.ts.map +1 -1
- package/dist/dev-log-bus.js +14 -0
- package/dist/dev-log-bus.js.map +1 -1
- package/dist/dev-log-filter.d.ts +4 -0
- package/dist/dev-log-filter.d.ts.map +1 -1
- package/dist/dev-log-filter.js +52 -0
- package/dist/dev-log-filter.js.map +1 -1
- package/dist/dev-ports.d.ts +27 -0
- package/dist/dev-ports.d.ts.map +1 -0
- package/dist/dev-ports.js +178 -0
- package/dist/dev-ports.js.map +1 -0
- package/dist/dev-ready-panel.d.ts +19 -0
- package/dist/dev-ready-panel.d.ts.map +1 -0
- package/dist/dev-ready-panel.js +49 -0
- package/dist/dev-ready-panel.js.map +1 -0
- package/dist/dev-session-lock.d.ts +25 -0
- package/dist/dev-session-lock.d.ts.map +1 -0
- package/dist/dev-session-lock.js +78 -0
- package/dist/dev-session-lock.js.map +1 -0
- package/dist/dev-session.d.ts +18 -5
- package/dist/dev-session.d.ts.map +1 -1
- package/dist/dev-session.js +91 -18
- package/dist/dev-session.js.map +1 -1
- package/dist/dev-shutdown.d.ts +20 -2
- package/dist/dev-shutdown.d.ts.map +1 -1
- package/dist/dev-shutdown.js +88 -10
- package/dist/dev-shutdown.js.map +1 -1
- package/dist/dev-task-colors.d.ts +3 -1
- package/dist/dev-task-colors.d.ts.map +1 -1
- package/dist/dev-task-colors.js +23 -3
- package/dist/dev-task-colors.js.map +1 -1
- package/dist/docker-runtime.js +1 -1
- package/dist/docker-runtime.js.map +1 -1
- package/dist/engine-push-output.d.ts +1 -0
- package/dist/engine-push-output.d.ts.map +1 -1
- package/dist/engine-push-output.js +4 -1
- package/dist/engine-push-output.js.map +1 -1
- package/dist/ensure-binary.d.ts.map +1 -1
- package/dist/ensure-binary.js +14 -2
- package/dist/ensure-binary.js.map +1 -1
- package/dist/ensure-component-binaries.d.ts +17 -0
- package/dist/ensure-component-binaries.d.ts.map +1 -0
- package/dist/ensure-component-binaries.js +45 -0
- package/dist/ensure-component-binaries.js.map +1 -0
- package/dist/ensure-dev-api-config.d.ts +3 -0
- package/dist/ensure-dev-api-config.d.ts.map +1 -0
- package/dist/ensure-dev-api-config.js +17 -0
- package/dist/ensure-dev-api-config.js.map +1 -0
- package/dist/env-file.d.ts +5 -0
- package/dist/env-file.d.ts.map +1 -0
- package/dist/env-file.js +33 -0
- package/dist/env-file.js.map +1 -0
- package/dist/init-dependency-versions.d.ts +13 -0
- package/dist/init-dependency-versions.d.ts.map +1 -0
- package/dist/init-dependency-versions.js +53 -0
- package/dist/init-dependency-versions.js.map +1 -0
- package/dist/init-package-json.d.ts +21 -0
- package/dist/init-package-json.d.ts.map +1 -0
- package/dist/init-package-json.js +46 -0
- package/dist/init-package-json.js.map +1 -0
- package/dist/postgres-ctl.d.ts.map +1 -1
- package/dist/postgres-ctl.js +2 -1
- package/dist/postgres-ctl.js.map +1 -1
- package/dist/required-host-components.d.ts +11 -0
- package/dist/required-host-components.d.ts.map +1 -0
- package/dist/required-host-components.js +25 -0
- package/dist/required-host-components.js.map +1 -0
- package/dist/resolve-api-url.d.ts +6 -0
- package/dist/resolve-api-url.d.ts.map +1 -0
- package/dist/resolve-api-url.js +39 -0
- package/dist/resolve-api-url.js.map +1 -0
- package/dist/rest-cache-admin.d.ts +33 -0
- package/dist/rest-cache-admin.d.ts.map +1 -0
- package/dist/rest-cache-admin.js +96 -0
- package/dist/rest-cache-admin.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +4 -6
- package/dist/scripts/postinstall.d.ts.map +1 -1
- package/dist/scripts/postinstall.js +8 -41
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +24 -13
- package/dist/self-host-compose.js.map +1 -1
- package/dist/studio-dev-server.d.ts +4 -2
- package/dist/studio-dev-server.d.ts.map +1 -1
- package/dist/studio-dev-server.js +3 -2
- package/dist/studio-dev-server.js.map +1 -1
- package/dist/ui/brand.d.ts +2 -5
- package/dist/ui/brand.d.ts.map +1 -1
- package/dist/ui/brand.js +2 -7
- package/dist/ui/brand.js.map +1 -1
- package/dist/ui/clack-api.d.ts +44 -0
- package/dist/ui/clack-api.d.ts.map +1 -0
- package/dist/ui/clack-api.js +76 -0
- package/dist/ui/clack-api.js.map +1 -0
- package/dist/ui/clack.d.ts +14 -0
- package/dist/ui/clack.d.ts.map +1 -0
- package/dist/ui/clack.js +147 -0
- package/dist/ui/clack.js.map +1 -0
- package/dist/ui/components/FlowSpinner.d.ts +5 -0
- package/dist/ui/components/FlowSpinner.d.ts.map +1 -0
- package/dist/ui/components/FlowSpinner.js +8 -0
- package/dist/ui/components/FlowSpinner.js.map +1 -0
- package/dist/ui/components/LogoWordmark.d.ts +9 -0
- package/dist/ui/components/LogoWordmark.d.ts.map +1 -0
- package/dist/ui/components/LogoWordmark.js +17 -0
- package/dist/ui/components/LogoWordmark.js.map +1 -0
- package/dist/ui/components/PromptPanel.d.ts +5 -0
- package/dist/ui/components/PromptPanel.d.ts.map +1 -0
- package/dist/ui/components/PromptPanel.js +7 -0
- package/dist/ui/components/PromptPanel.js.map +1 -0
- package/dist/ui/components/SelectField.d.ts +11 -0
- package/dist/ui/components/SelectField.d.ts.map +1 -0
- package/dist/ui/components/SelectField.js +19 -0
- package/dist/ui/components/SelectField.js.map +1 -0
- package/dist/ui/confirm.d.ts +2 -1
- package/dist/ui/confirm.d.ts.map +1 -1
- package/dist/ui/confirm.js +4 -4
- package/dist/ui/confirm.js.map +1 -1
- package/dist/ui/dev/DevDashboard.d.ts +8 -0
- package/dist/ui/dev/DevDashboard.d.ts.map +1 -0
- package/dist/ui/dev/DevDashboard.js +151 -0
- package/dist/ui/dev/DevDashboard.js.map +1 -0
- package/dist/ui/dev/DevReadyPanelView.d.ts +7 -0
- package/dist/ui/dev/DevReadyPanelView.d.ts.map +1 -0
- package/dist/ui/dev/DevReadyPanelView.js +29 -0
- package/dist/ui/dev/DevReadyPanelView.js.map +1 -0
- package/dist/ui/fatal.d.ts.map +1 -1
- package/dist/ui/fatal.js +5 -11
- package/dist/ui/fatal.js.map +1 -1
- package/dist/ui/flows/FlowApp.d.ts +8 -0
- package/dist/ui/flows/FlowApp.d.ts.map +1 -0
- package/dist/ui/flows/FlowApp.js +42 -0
- package/dist/ui/flows/FlowApp.js.map +1 -0
- package/dist/ui/flows/prompt-fields.d.ts +48 -0
- package/dist/ui/flows/prompt-fields.d.ts.map +1 -0
- package/dist/ui/flows/prompt-fields.js +88 -0
- package/dist/ui/flows/prompt-fields.js.map +1 -0
- package/dist/ui/flows/types.d.ts +41 -0
- package/dist/ui/flows/types.d.ts.map +1 -0
- package/dist/ui/flows/types.js +2 -0
- package/dist/ui/flows/types.js.map +1 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/ui/messages.d.ts +1 -0
- package/dist/ui/messages.d.ts.map +1 -1
- package/dist/ui/messages.js +48 -8
- package/dist/ui/messages.js.map +1 -1
- package/dist/ui/progress.d.ts +5 -1
- package/dist/ui/progress.d.ts.map +1 -1
- package/dist/ui/progress.js +12 -3
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/prompts.d.ts +7 -5
- package/dist/ui/prompts.d.ts.map +1 -1
- package/dist/ui/prompts.js +15 -8
- package/dist/ui/prompts.js.map +1 -1
- package/dist/ui/runtime/cancel.d.ts +4 -0
- package/dist/ui/runtime/cancel.d.ts.map +1 -0
- package/dist/ui/runtime/cancel.js +6 -0
- package/dist/ui/runtime/cancel.js.map +1 -0
- package/dist/ui/runtime/command-chrome.d.ts +17 -0
- package/dist/ui/runtime/command-chrome.d.ts.map +1 -0
- package/dist/ui/runtime/command-chrome.js +123 -0
- package/dist/ui/runtime/command-chrome.js.map +1 -0
- package/dist/ui/runtime/dev-prompt-queue.d.ts +30 -0
- package/dist/ui/runtime/dev-prompt-queue.d.ts.map +1 -0
- package/dist/ui/runtime/dev-prompt-queue.js +57 -0
- package/dist/ui/runtime/dev-prompt-queue.js.map +1 -0
- package/dist/ui/runtime/flow-session.d.ts +4 -0
- package/dist/ui/runtime/flow-session.d.ts.map +1 -0
- package/dist/ui/runtime/flow-session.js +8 -0
- package/dist/ui/runtime/flow-session.js.map +1 -0
- package/dist/ui/runtime/run-clack-flow.d.ts +5 -0
- package/dist/ui/runtime/run-clack-flow.d.ts.map +1 -0
- package/dist/ui/runtime/run-clack-flow.js +34 -0
- package/dist/ui/runtime/run-clack-flow.js.map +1 -0
- package/dist/ui/theme.d.ts +24 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +34 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/valkey-sidecar.d.ts +17 -0
- package/dist/valkey-sidecar.d.ts.map +1 -0
- package/dist/valkey-sidecar.js +94 -0
- package/dist/valkey-sidecar.js.map +1 -0
- package/package.json +11 -3
- package/src/binary-cache.ts +61 -0
- package/src/binary-download-lock.ts +124 -0
- package/src/cli-package-version.ts +15 -0
- package/src/cli.ts +6 -2
- package/src/commands/add.ts +26 -19
- package/src/commands/admin.ts +380 -137
- package/src/commands/cache.ts +105 -5
- package/src/commands/dev.ts +29 -21
- package/src/commands/init.ts +217 -46
- package/src/commands/link-helpers.ts +30 -29
- package/src/commands/push.ts +3 -3
- package/src/compose-local-server-image.ts +68 -0
- package/src/compose-rename.ts +73 -0
- package/src/dev-compose.ts +175 -96
- package/src/dev-log-bus.ts +18 -0
- package/src/dev-log-filter.ts +42 -0
- package/src/dev-ports.ts +223 -0
- package/src/dev-ready-panel.ts +63 -0
- package/src/dev-session-lock.ts +98 -0
- package/src/dev-session.ts +98 -18
- package/src/dev-shutdown.ts +114 -9
- package/src/dev-task-colors.ts +22 -3
- package/src/docker-runtime.ts +1 -1
- package/src/engine-push-output.ts +5 -1
- package/src/ensure-binary.ts +21 -1
- package/src/ensure-component-binaries.ts +71 -0
- package/src/ensure-dev-api-config.ts +18 -0
- package/src/env-file.ts +37 -0
- package/src/init-dependency-versions.ts +69 -0
- package/src/init-package-json.ts +63 -0
- package/src/postgres-ctl.ts +2 -1
- package/src/required-host-components.ts +37 -0
- package/src/resolve-api-url.ts +43 -0
- package/src/rest-cache-admin.ts +135 -0
- package/src/scripts/postinstall.ts +9 -46
- package/src/self-host-compose.ts +23 -12
- package/src/studio-dev-server.ts +5 -4
- package/src/ui/README.md +13 -9
- package/src/ui/brand.ts +2 -8
- package/src/ui/clack-api.ts +123 -0
- package/src/ui/clack.ts +153 -0
- package/src/ui/components/FlowSpinner.tsx +15 -0
- package/src/ui/components/LogoWordmark.tsx +36 -0
- package/src/ui/components/PromptPanel.tsx +17 -0
- package/src/ui/components/SelectField.tsx +58 -0
- package/src/ui/confirm.ts +5 -4
- package/src/ui/dev/DevDashboard.tsx +213 -0
- package/src/ui/dev/DevReadyPanelView.tsx +67 -0
- package/src/ui/fatal.ts +5 -10
- package/src/ui/flows/FlowApp.tsx +67 -0
- package/src/ui/flows/prompt-fields.tsx +192 -0
- package/src/ui/flows/types.ts +50 -0
- package/src/ui/index.ts +1 -1
- package/src/ui/messages.ts +50 -8
- package/src/ui/progress.ts +14 -3
- package/src/ui/prompts.ts +17 -9
- package/src/ui/runtime/cancel.ts +6 -0
- package/src/ui/runtime/command-chrome.ts +147 -0
- package/src/ui/runtime/dev-prompt-queue.ts +84 -0
- package/src/ui/runtime/flow-session.ts +11 -0
- package/src/ui/runtime/run-clack-flow.tsx +52 -0
- package/src/ui/theme.ts +41 -0
- package/src/valkey-sidecar.ts +126 -0
- package/tests/admin-ensure.test.ts +59 -0
- package/tests/binary-cache-cloud-overrides.test.ts +2 -2
- package/tests/binary-download-lock.test.ts +41 -0
- package/tests/cli-help.test.ts +7 -4
- package/tests/cli-package-version.test.ts +15 -0
- package/tests/command-chrome-coverage.test.ts +149 -0
- package/tests/command-chrome-wrap.test.ts +51 -0
- package/tests/config.test.ts +8 -4
- package/tests/dev-ports.test.ts +41 -0
- package/tests/dev-ready-panel.test.ts +20 -0
- package/tests/dev-session-lock.test.ts +54 -0
- package/tests/dev-ui.test.ts +66 -3
- package/tests/docker-runtime.test.ts +9 -20
- package/tests/ensure-dev-api-config.test.ts +22 -0
- package/tests/init-dependency-versions.test.ts +62 -0
- package/tests/init-package-json.test.ts +18 -0
- package/tests/init.test.ts +30 -3
- package/tests/required-host-components.test.ts +51 -0
- package/tests/resolve-api-url.test.ts +23 -0
- package/tests/rest-cache-admin.test.ts +28 -0
- package/tests/runtime-contract.test.ts +12 -3
- package/tests/tsconfig.json +8 -2
- package/tests/ui-confirm.test.ts +13 -9
- package/tests/ui-messages.test.ts +4 -18
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +3 -0
- package/dist/dev-tui.d.ts +0 -24
- package/dist/dev-tui.d.ts.map +0 -1
- package/dist/dev-tui.js +0 -188
- package/dist/dev-tui.js.map +0 -1
- package/src/dev-tui.ts +0 -232
package/dist/dev-session.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `supatype dev` output session —
|
|
2
|
+
* `supatype dev` output session — Ink dashboard (default) or interleaved stream mode.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { render } from "ink";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { filterDevSubprocessLine, filterStackLogLine, formatConsoleArgs } from "./dev-log-filter.js";
|
|
5
7
|
import { DevLogBus } from "./dev-log-bus.js";
|
|
6
|
-
import {
|
|
8
|
+
import { DevDashboard } from "./ui/dev/DevDashboard.js";
|
|
9
|
+
import { ensureDevShutdownHooks } from "./dev-shutdown.js";
|
|
10
|
+
import { clearDevPromptQueue } from "./ui/runtime/dev-prompt-queue.js";
|
|
7
11
|
export function resolveDevUiMode(streamFlag) {
|
|
8
12
|
if (streamFlag)
|
|
9
13
|
return "stream";
|
|
@@ -13,22 +17,65 @@ export function resolveDevUiMode(streamFlag) {
|
|
|
13
17
|
}
|
|
14
18
|
let activeSession = null;
|
|
15
19
|
export function beginDevSession(mode) {
|
|
20
|
+
ensureDevShutdownHooks();
|
|
16
21
|
activeSession?.stop();
|
|
17
22
|
activeSession = new DevSession(mode);
|
|
23
|
+
if (activeSession.isTui()) {
|
|
24
|
+
activeSession.enableConsoleCapture(false);
|
|
25
|
+
activeSession.startInk();
|
|
26
|
+
}
|
|
18
27
|
return activeSession;
|
|
19
28
|
}
|
|
20
|
-
/**
|
|
29
|
+
/** @deprecated Ink starts in beginDevSession — kept for callers that invoke late. */
|
|
21
30
|
export function startDevSession() {
|
|
22
|
-
activeSession?.
|
|
31
|
+
activeSession?.startInk();
|
|
32
|
+
}
|
|
33
|
+
export function isDevTuiActive() {
|
|
34
|
+
return activeSession?.isInkMounted() ?? false;
|
|
23
35
|
}
|
|
24
36
|
export function endDevSession() {
|
|
37
|
+
clearDevPromptQueue();
|
|
25
38
|
activeSession?.stop();
|
|
26
39
|
activeSession = null;
|
|
27
40
|
}
|
|
41
|
+
/** @deprecated Dev prompts render inside the Ink dashboard — no suspend needed. */
|
|
42
|
+
export function suspendDevSessionForPrompt() {
|
|
43
|
+
prepareStdinForInteractivePrompt();
|
|
44
|
+
}
|
|
45
|
+
export function prepareStdinForInteractivePrompt() {
|
|
46
|
+
if (!process.stdin.isTTY)
|
|
47
|
+
return;
|
|
48
|
+
process.stdin.setRawMode(false);
|
|
49
|
+
process.stdin.resume();
|
|
50
|
+
}
|
|
51
|
+
/** @deprecated Dev prompts render inside the Ink dashboard — no resume needed. */
|
|
52
|
+
export function resumeDevSessionAfterPrompt() {
|
|
53
|
+
// no-op — prompts are Ink overlays
|
|
54
|
+
}
|
|
55
|
+
/** @deprecated Use Ink overlay prompts — runs fn without tearing down the dashboard. */
|
|
56
|
+
export async function withDevSessionSuspended(fn) {
|
|
57
|
+
return fn();
|
|
58
|
+
}
|
|
28
59
|
export function getActiveDevSession() {
|
|
29
60
|
return activeSession;
|
|
30
61
|
}
|
|
31
|
-
|
|
62
|
+
export function appendStackOutput(text, level = "log") {
|
|
63
|
+
if (text == null || text.trim() === "")
|
|
64
|
+
return;
|
|
65
|
+
const session = getActiveDevSession();
|
|
66
|
+
for (const line of text.split(/\r?\n/)) {
|
|
67
|
+
if (line.trim() === "")
|
|
68
|
+
continue;
|
|
69
|
+
if (session?.isTui() && !filterStackLogLine(line))
|
|
70
|
+
continue;
|
|
71
|
+
if (session?.isConsoleCaptured()) {
|
|
72
|
+
session.bus.append("stack", line, level);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const write = level === "warn" ? console.warn : level === "error" ? console.error : console.log;
|
|
76
|
+
write(`[supatype] ${line}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
32
79
|
export function appendDevTaskLog(taskId, taskTitle, line, level = "log") {
|
|
33
80
|
const session = getActiveDevSession();
|
|
34
81
|
if (session?.isTui()) {
|
|
@@ -43,26 +90,43 @@ export function appendDevTaskLog(taskId, taskTitle, line, level = "log") {
|
|
|
43
90
|
export class DevSession {
|
|
44
91
|
bus = new DevLogBus();
|
|
45
92
|
mode;
|
|
46
|
-
|
|
93
|
+
ink = null;
|
|
47
94
|
restoreConsole = null;
|
|
95
|
+
consoleCaptured = false;
|
|
48
96
|
constructor(mode) {
|
|
49
97
|
this.mode = mode;
|
|
50
98
|
}
|
|
51
99
|
isTui() {
|
|
52
100
|
return this.mode === "tui";
|
|
53
101
|
}
|
|
54
|
-
|
|
55
|
-
|
|
102
|
+
isInkMounted() {
|
|
103
|
+
return this.ink !== null;
|
|
104
|
+
}
|
|
105
|
+
isConsoleCaptured() {
|
|
106
|
+
return this.consoleCaptured;
|
|
107
|
+
}
|
|
108
|
+
needsPromptSuspend() {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
enableConsoleCapture(_tee) {
|
|
112
|
+
if (!this.isTui() || this.consoleCaptured)
|
|
56
113
|
return;
|
|
57
114
|
this.restoreConsole = patchConsole(this.bus);
|
|
58
|
-
this.
|
|
59
|
-
|
|
115
|
+
this.consoleCaptured = true;
|
|
116
|
+
}
|
|
117
|
+
startInk() {
|
|
118
|
+
if (!this.isTui() || this.ink)
|
|
119
|
+
return;
|
|
120
|
+
this.ink = render(React.createElement(DevDashboard, { bus: this.bus }));
|
|
60
121
|
}
|
|
61
122
|
stop() {
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
this.restoreConsole
|
|
65
|
-
|
|
123
|
+
this.ink?.unmount();
|
|
124
|
+
this.ink = null;
|
|
125
|
+
if (this.restoreConsole) {
|
|
126
|
+
this.restoreConsole();
|
|
127
|
+
this.restoreConsole = null;
|
|
128
|
+
this.consoleCaptured = false;
|
|
129
|
+
}
|
|
66
130
|
}
|
|
67
131
|
}
|
|
68
132
|
export function enhanceProcessOptions(label, opts) {
|
|
@@ -82,6 +146,15 @@ export function enhanceProcessOptions(label, opts) {
|
|
|
82
146
|
},
|
|
83
147
|
};
|
|
84
148
|
}
|
|
149
|
+
function appendFilteredStackLine(bus, line, level) {
|
|
150
|
+
for (const part of line.split(/\r?\n/)) {
|
|
151
|
+
if (!part.trim())
|
|
152
|
+
continue;
|
|
153
|
+
if (!filterStackLogLine(part))
|
|
154
|
+
continue;
|
|
155
|
+
bus.append("stack", part, level);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
85
158
|
function patchConsole(bus) {
|
|
86
159
|
const original = {
|
|
87
160
|
log: console.log,
|
|
@@ -89,13 +162,13 @@ function patchConsole(bus) {
|
|
|
89
162
|
error: console.error,
|
|
90
163
|
};
|
|
91
164
|
console.log = (...args) => {
|
|
92
|
-
bus
|
|
165
|
+
appendFilteredStackLine(bus, formatConsoleArgs(args), "log");
|
|
93
166
|
};
|
|
94
167
|
console.warn = (...args) => {
|
|
95
|
-
bus
|
|
168
|
+
appendFilteredStackLine(bus, formatConsoleArgs(args), "warn");
|
|
96
169
|
};
|
|
97
170
|
console.error = (...args) => {
|
|
98
|
-
bus
|
|
171
|
+
appendFilteredStackLine(bus, formatConsoleArgs(args), "error");
|
|
99
172
|
};
|
|
100
173
|
return () => {
|
|
101
174
|
console.log = original.log;
|
package/dist/dev-session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-session.js","sourceRoot":"","sources":["../src/dev-session.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"dev-session.js","sourceRoot":"","sources":["../src/dev-session.ts"],"names":[],"mappings":"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"}
|
package/dist/dev-shutdown.d.ts
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Graceful shutdown for `supatype dev` —
|
|
2
|
+
* Graceful shutdown for `supatype dev` — SIGINT, TUI Ctrl+C, terminal close,
|
|
3
|
+
* and a synchronous compose-down fallback on process exit.
|
|
3
4
|
*/
|
|
5
|
+
export interface DevComposeShutdownFallback {
|
|
6
|
+
cwd: string;
|
|
7
|
+
composePath: string;
|
|
8
|
+
composeProject: string;
|
|
9
|
+
}
|
|
10
|
+
/** SIGINT/SIGTERM hooks — call as soon as `supatype dev` starts (before compose is up). */
|
|
11
|
+
export declare function ensureDevShutdownHooks(): void;
|
|
12
|
+
export interface RegisterDevShutdownOptions {
|
|
13
|
+
/** Sync `docker compose down` when async teardown cannot finish (terminal close, kill). */
|
|
14
|
+
compose?: DevComposeShutdownFallback;
|
|
15
|
+
/** Project root — clears `.supatype/dev-session.json` after shutdown. */
|
|
16
|
+
cwd?: string;
|
|
17
|
+
}
|
|
4
18
|
/** Register async teardown (stop children, compose down, etc.). Call once per dev session. */
|
|
5
|
-
export declare function registerDevShutdown(work: () => Promise<void
|
|
19
|
+
export declare function registerDevShutdown(work: () => Promise<void>, opts?: RegisterDevShutdownOptions): void;
|
|
6
20
|
/** TUI Ctrl+C — do not re-emit SIGINT (avoids double-fire on Windows raw mode). */
|
|
7
21
|
export declare function requestDevShutdown(): void;
|
|
8
22
|
export declare function isDevShuttingDown(): boolean;
|
|
23
|
+
/** @internal Tests — reset module state between cases. */
|
|
24
|
+
export declare function resetDevShutdownForTests(): void;
|
|
25
|
+
/** Whether a compose fallback was registered (tests). */
|
|
26
|
+
export declare function hasComposeShutdownFallback(): boolean;
|
|
9
27
|
//# sourceMappingURL=dev-shutdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-shutdown.d.ts","sourceRoot":"","sources":["../src/dev-shutdown.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dev-shutdown.d.ts","sourceRoot":"","sources":["../src/dev-shutdown.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB;AAWD,2FAA2F;AAC3F,wBAAgB,sBAAsB,IAAI,IAAI,CAe7C;AAgCD,MAAM,WAAW,0BAA0B;IACzC,2FAA2F;IAC3F,OAAO,CAAC,EAAE,0BAA0B,CAAA;IACpC,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,EAAE,0BAA0B,GAChC,IAAI,CAKN;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,0DAA0D;AAC1D,wBAAgB,wBAAwB,IAAI,IAAI,CAS/C;AA4CD,yDAAyD;AACzD,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD"}
|
package/dist/dev-shutdown.js
CHANGED
|
@@ -1,50 +1,128 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Graceful shutdown for `supatype dev` —
|
|
2
|
+
* Graceful shutdown for `supatype dev` — SIGINT, TUI Ctrl+C, terminal close,
|
|
3
|
+
* and a synchronous compose-down fallback on process exit.
|
|
3
4
|
*/
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
4
6
|
import { endDevSession } from "./dev-session.js";
|
|
7
|
+
import { clearDevSessionLock } from "./dev-session-lock.js";
|
|
8
|
+
import { runDockerCompose } from "./self-host-compose.js";
|
|
5
9
|
let shutdownWork = null;
|
|
10
|
+
let composeFallback = null;
|
|
11
|
+
let shutdownCwd = null;
|
|
6
12
|
let shuttingDown = false;
|
|
7
|
-
let
|
|
13
|
+
let shutdownCompleted = false;
|
|
14
|
+
let forceQuitRequested = false;
|
|
15
|
+
let hooksRegistered = false;
|
|
16
|
+
let ignoreSigintUntil = 0;
|
|
17
|
+
/** SIGINT/SIGTERM hooks — call as soon as `supatype dev` starts (before compose is up). */
|
|
18
|
+
export function ensureDevShutdownHooks() {
|
|
19
|
+
if (hooksRegistered)
|
|
20
|
+
return;
|
|
21
|
+
hooksRegistered = true;
|
|
22
|
+
process.on("SIGINT", onSignal);
|
|
23
|
+
process.on("SIGTERM", onSignal);
|
|
24
|
+
if (process.platform === "win32") {
|
|
25
|
+
process.on("SIGBREAK", onSignal);
|
|
26
|
+
}
|
|
27
|
+
process.on("exit", onProcessExit);
|
|
28
|
+
if (process.stdin.isTTY) {
|
|
29
|
+
process.stdin.on("end", onStdinClose);
|
|
30
|
+
process.stdin.on("close", onStdinClose);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
8
33
|
function onSignal() {
|
|
34
|
+
if (Date.now() < ignoreSigintUntil)
|
|
35
|
+
return;
|
|
36
|
+
void runDevShutdown();
|
|
37
|
+
}
|
|
38
|
+
function onStdinClose() {
|
|
39
|
+
if (!process.stdin.isTTY)
|
|
40
|
+
return;
|
|
9
41
|
void runDevShutdown();
|
|
10
42
|
}
|
|
43
|
+
function syncComposeDownFallback() {
|
|
44
|
+
if (shutdownCompleted || !composeFallback)
|
|
45
|
+
return;
|
|
46
|
+
try {
|
|
47
|
+
runDockerCompose(composeFallback.composePath, ["down"], composeFallback.cwd, composeFallback.composeProject, { quiet: true });
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// best-effort — process is exiting
|
|
51
|
+
}
|
|
52
|
+
if (shutdownCwd)
|
|
53
|
+
clearDevSessionLock(shutdownCwd);
|
|
54
|
+
}
|
|
55
|
+
function onProcessExit() {
|
|
56
|
+
syncComposeDownFallback();
|
|
57
|
+
}
|
|
11
58
|
/** Register async teardown (stop children, compose down, etc.). Call once per dev session. */
|
|
12
|
-
export function registerDevShutdown(work) {
|
|
59
|
+
export function registerDevShutdown(work, opts) {
|
|
13
60
|
shutdownWork = work;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
process.on("SIGINT", onSignal);
|
|
18
|
-
process.on("SIGTERM", onSignal);
|
|
61
|
+
composeFallback = opts?.compose ?? null;
|
|
62
|
+
shutdownCwd = opts?.cwd ?? opts?.compose?.cwd ?? null;
|
|
63
|
+
ensureDevShutdownHooks();
|
|
19
64
|
}
|
|
20
65
|
/** TUI Ctrl+C — do not re-emit SIGINT (avoids double-fire on Windows raw mode). */
|
|
21
66
|
export function requestDevShutdown() {
|
|
67
|
+
ignoreSigintUntil = Date.now() + 400;
|
|
22
68
|
void runDevShutdown();
|
|
23
69
|
}
|
|
24
70
|
export function isDevShuttingDown() {
|
|
25
71
|
return shuttingDown;
|
|
26
72
|
}
|
|
73
|
+
/** @internal Tests — reset module state between cases. */
|
|
74
|
+
export function resetDevShutdownForTests() {
|
|
75
|
+
shutdownWork = null;
|
|
76
|
+
composeFallback = null;
|
|
77
|
+
shutdownCwd = null;
|
|
78
|
+
shuttingDown = false;
|
|
79
|
+
shutdownCompleted = false;
|
|
80
|
+
forceQuitRequested = false;
|
|
81
|
+
hooksRegistered = false;
|
|
82
|
+
ignoreSigintUntil = 0;
|
|
83
|
+
}
|
|
27
84
|
async function runDevShutdown() {
|
|
28
85
|
if (shuttingDown) {
|
|
86
|
+
if (!forceQuitRequested) {
|
|
87
|
+
forceQuitRequested = true;
|
|
88
|
+
process.stderr.write("\n[supatype] Still shutting down (stopping Docker)… press Ctrl+C again to force quit.\n");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
29
91
|
try {
|
|
30
92
|
endDevSession();
|
|
31
93
|
}
|
|
32
94
|
catch {
|
|
33
95
|
// best-effort terminal restore
|
|
34
96
|
}
|
|
97
|
+
process.stderr.write("\n[supatype] Forced quit — Docker containers may still be running.\n");
|
|
35
98
|
process.stdout.write("\n");
|
|
36
99
|
process.exit(130);
|
|
37
100
|
}
|
|
38
101
|
shuttingDown = true;
|
|
39
102
|
try {
|
|
40
103
|
endDevSession();
|
|
41
|
-
process.
|
|
42
|
-
|
|
104
|
+
process.stderr.write("\n[supatype] Shutting down…\n");
|
|
105
|
+
if (!shutdownWork) {
|
|
106
|
+
if (shutdownCwd)
|
|
107
|
+
clearDevSessionLock(shutdownCwd);
|
|
108
|
+
process.exit(130);
|
|
109
|
+
}
|
|
110
|
+
await shutdownWork();
|
|
111
|
+
shutdownCompleted = true;
|
|
112
|
+
if (shutdownCwd)
|
|
113
|
+
clearDevSessionLock(shutdownCwd);
|
|
43
114
|
process.exit(0);
|
|
44
115
|
}
|
|
45
116
|
catch (err) {
|
|
46
117
|
process.stderr.write(`[supatype] Shutdown failed: ${err.message}\n`);
|
|
118
|
+
process.stderr.write("[supatype] Docker containers may still be running — try: supatype self-host compose down\n");
|
|
119
|
+
syncComposeDownFallback();
|
|
120
|
+
shutdownCompleted = true;
|
|
47
121
|
process.exit(1);
|
|
48
122
|
}
|
|
49
123
|
}
|
|
124
|
+
/** Whether a compose fallback was registered (tests). */
|
|
125
|
+
export function hasComposeShutdownFallback() {
|
|
126
|
+
return composeFallback !== null && existsSync(composeFallback.composePath);
|
|
127
|
+
}
|
|
50
128
|
//# sourceMappingURL=dev-shutdown.js.map
|
package/dist/dev-shutdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-shutdown.js","sourceRoot":"","sources":["../src/dev-shutdown.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dev-shutdown.js","sourceRoot":"","sources":["../src/dev-shutdown.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAQzD,IAAI,YAAY,GAAiC,IAAI,CAAA;AACrD,IAAI,eAAe,GAAsC,IAAI,CAAA;AAC7D,IAAI,WAAW,GAAkB,IAAI,CAAA;AACrC,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAC7B,IAAI,kBAAkB,GAAG,KAAK,CAAA;AAC9B,IAAI,eAAe,GAAG,KAAK,CAAA;AAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAA;AAEzB,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB;IACpC,IAAI,eAAe;QAAE,OAAM;IAC3B,eAAe,GAAG,IAAI,CAAA;IAEtB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAEjC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QACrC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACzC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB;QAAE,OAAM;IAC1C,KAAK,cAAc,EAAE,CAAA;AACvB,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAM;IAChC,KAAK,cAAc,EAAE,CAAA;AACvB,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,iBAAiB,IAAI,CAAC,eAAe;QAAE,OAAM;IACjD,IAAI,CAAC;QACH,gBAAgB,CACd,eAAe,CAAC,WAAW,EAC3B,CAAC,MAAM,CAAC,EACR,eAAe,CAAC,GAAG,EACnB,eAAe,CAAC,cAAc,EAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,IAAI,WAAW;QAAE,mBAAmB,CAAC,WAAW,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,aAAa;IACpB,uBAAuB,EAAE,CAAA;AAC3B,CAAC;AASD,8FAA8F;AAC9F,MAAM,UAAU,mBAAmB,CACjC,IAAyB,EACzB,IAAiC;IAEjC,YAAY,GAAG,IAAI,CAAA;IACnB,eAAe,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAA;IACvC,WAAW,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,CAAA;IACrD,sBAAsB,EAAE,CAAA;AAC1B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB;IAChC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA;IACpC,KAAK,cAAc,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,wBAAwB;IACtC,YAAY,GAAG,IAAI,CAAA;IACnB,eAAe,GAAG,IAAI,CAAA;IACtB,WAAW,GAAG,IAAI,CAAA;IAClB,YAAY,GAAG,KAAK,CAAA;IACpB,iBAAiB,GAAG,KAAK,CAAA;IACzB,kBAAkB,GAAG,KAAK,CAAA;IAC1B,eAAe,GAAG,KAAK,CAAA;IACvB,iBAAiB,GAAG,CAAC,CAAA;AACvB,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,kBAAkB,GAAG,IAAI,CAAA;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yFAAyF,CAC1F,CAAA;YACD,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,aAAa,EAAE,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAA;QAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;IACD,YAAY,GAAG,IAAI,CAAA;IAEnB,IAAI,CAAC;QACH,aAAa,EAAE,CAAA;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,WAAW;gBAAE,mBAAmB,CAAC,WAAW,CAAC,CAAA;YACjD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,MAAM,YAAY,EAAE,CAAA;QACpB,iBAAiB,GAAG,IAAI,CAAA;QACxB,IAAI,WAAW;YAAE,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAAgC,GAAa,CAAC,OAAO,IAAI,CAAC,CAAA;QAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4FAA4F,CAC7F,CAAA;QACD,uBAAuB,EAAE,CAAA;QACzB,iBAAiB,GAAG,IAAI,CAAA;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,0BAA0B;IACxC,OAAO,eAAe,KAAK,IAAI,IAAI,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;AAC5E,CAAC"}
|
|
@@ -9,5 +9,7 @@ export declare function levelColor(line: string): string | null;
|
|
|
9
9
|
/** Drop redundant prefix — task pane is already labelled supatype. */
|
|
10
10
|
export declare function normalizeStackLogLine(line: string): string;
|
|
11
11
|
export declare function colorizeLogLine(taskId: string, line: string): string;
|
|
12
|
-
|
|
12
|
+
/** Ink colour names for React components (parallel to ANSI taskColor). */
|
|
13
|
+
export declare function taskInkColor(taskId: string): string;
|
|
14
|
+
export declare function logInkColor(taskId: string, line: string): string;
|
|
13
15
|
//# sourceMappingURL=dev-task-colors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-task-colors.d.ts","sourceRoot":"","sources":["../src/dev-task-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AAE3B,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAehD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAItD;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"dev-task-colors.d.ts","sourceRoot":"","sources":["../src/dev-task-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AAE3B,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAehD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAItD;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAenD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhE"}
|
package/dist/dev-task-colors.js
CHANGED
|
@@ -36,8 +36,28 @@ export function colorizeLogLine(taskId, line) {
|
|
|
36
36
|
const base = level ?? taskColor(taskId);
|
|
37
37
|
return `${base}${line}${RESET}`;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
/** Ink colour names for React components (parallel to ANSI taskColor). */
|
|
40
|
+
export function taskInkColor(taskId) {
|
|
41
|
+
switch (taskId) {
|
|
42
|
+
case "stack":
|
|
43
|
+
return "magenta";
|
|
44
|
+
case "app":
|
|
45
|
+
return "green";
|
|
46
|
+
case "studio":
|
|
47
|
+
return "cyan";
|
|
48
|
+
case "server":
|
|
49
|
+
return "green";
|
|
50
|
+
case "postgrest":
|
|
51
|
+
return "blue";
|
|
52
|
+
default:
|
|
53
|
+
return "white";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function logInkColor(taskId, line) {
|
|
57
|
+
if (line.startsWith("✗ "))
|
|
58
|
+
return "red";
|
|
59
|
+
if (line.startsWith("⚠ "))
|
|
60
|
+
return "yellow";
|
|
61
|
+
return taskInkColor(taskId);
|
|
42
62
|
}
|
|
43
63
|
//# sourceMappingURL=dev-task-colors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-task-colors.js","sourceRoot":"","sources":["../src/dev-task-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AAE3B,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,UAAU,CAAA;QACnB,KAAK,KAAK;YACR,OAAO,UAAU,CAAA;QACnB,KAAK,QAAQ;YACX,OAAO,UAAU,CAAA;QACnB,KAAK,QAAQ;YACX,OAAO,UAAU,CAAA;QACnB,KAAK,WAAW;YACd,OAAO,UAAU,CAAA;QACnB;YACE,OAAO,UAAU,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IAC5C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;IACvC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dev-task-colors.js","sourceRoot":"","sources":["../src/dev-task-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AAE3B,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,UAAU,CAAA;QACnB,KAAK,KAAK;YACR,OAAO,UAAU,CAAA;QACnB,KAAK,QAAQ;YACX,OAAO,UAAU,CAAA;QACnB,KAAK,QAAQ;YACX,OAAO,UAAU,CAAA;QACnB,KAAK,WAAW;YACd,OAAO,UAAU,CAAA;QACnB;YACE,OAAO,UAAU,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IAC5C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;IACvC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,CAAA;AACjC,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,SAAS,CAAA;QAClB,KAAK,KAAK;YACR,OAAO,OAAO,CAAA;QAChB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAA;QACf,KAAK,QAAQ;YACX,OAAO,OAAO,CAAA;QAChB,KAAK,WAAW;YACd,OAAO,MAAM,CAAA;QACf;YACE,OAAO,OAAO,CAAA;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY;IACtD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACvC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC1C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC"}
|
package/dist/docker-runtime.js
CHANGED
|
@@ -6,7 +6,7 @@ import { platform } from "node:os";
|
|
|
6
6
|
import { endDevSession, getActiveDevSession } from "./dev-session.js";
|
|
7
7
|
import { isInteractive } from "./ui/interactive.js";
|
|
8
8
|
import { error, plain } from "./ui/messages.js";
|
|
9
|
-
import {
|
|
9
|
+
import { p, printLogo } from "./ui/prompts.js";
|
|
10
10
|
function dockerSpawn(args) {
|
|
11
11
|
return spawnSync("docker", args, {
|
|
12
12
|
encoding: "utf8",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-runtime.js","sourceRoot":"","sources":["../src/docker-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"docker-runtime.js","sourceRoot":"","sources":["../src/docker-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAe9C,SAAS,WAAW,CAAC,IAAc;IACjC,OAAO,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC/B,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACpC,CAAC,CAAA;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAA;IAC3E,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACnD,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACnD,MAAM,aAAa,GAAG,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IAEtE,6CAA6C;IAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,aAAa;YACrB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAA;IACH,CAAC;IAED,gFAAgF;IAChF,yEAAyE;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAE1C,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IACpE,MAAM,MAAM,GAAG,UAAU,IAAI,aAAa,CAAA;IAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACnF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAgD;IAC9E,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAA;IACtD,+DAA+D;IAC/D,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAgD;IACjF,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO,8CAA8C,CAAA;IACvD,CAAC;IACD,OAAO,oDAAoD,CAAA;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAgD;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CACR,yGAAyG,CAC1G,CAAA;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;IACxF,CAAC;SAAM,IAAI,QAAQ,EAAE,KAAK,OAAO,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IACrD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;IAC3F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;IAEtF,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACrF,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,8BAA8B,CAC5C,KAAgD;IAEhD,MAAM,KAAK,GAAa,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,uBAAuB,CACrC,KAAgD,EAChD,IAA0B;IAE1B,IAAI,IAAI,EAAE,KAAK,IAAI,aAAa,EAAE,EAAE,CAAC;QACnC,SAAS,EAAE,CAAA;QACX,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAE3C,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEf,IAAI,aAAa,EAAE,EAAE,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,EAAE,CAAA;QACP,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC5D,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAA;IACjC,IAAI,KAAK,CAAC,EAAE;QAAE,OAAM;IACpB,4EAA4E;IAC5E,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,aAAa,EAAE,CAAA;IACjB,CAAC;IACD,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
|
|
@@ -12,6 +12,7 @@ export declare function parseEngineJsonOutput<T>(output: string): T | null;
|
|
|
12
12
|
export declare function parseEnginePushOutput(output: string): EnginePushResult | null;
|
|
13
13
|
/** Human-readable one-liner for successful push (matches `supatype push` tone). */
|
|
14
14
|
export declare function formatEnginePushMessage(result: EnginePushResult): string;
|
|
15
|
+
export declare function isComposeProgressLine(line: string): boolean;
|
|
15
16
|
/** Drop docker compose progress noise; keep engine JSON and real errors. */
|
|
16
17
|
export declare function filterComposeNoise(output: string): string;
|
|
17
18
|
//# sourceMappingURL=engine-push-output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-push-output.d.ts","sourceRoot":"","sources":["../src/engine-push-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAuBjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAE7E;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAcxE;AAKD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYzD"}
|
|
1
|
+
{"version":3,"file":"engine-push-output.d.ts","sourceRoot":"","sources":["../src/engine-push-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAuBjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAE7E;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAcxE;AAKD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYzD"}
|
|
@@ -45,6 +45,9 @@ export function formatEnginePushMessage(result) {
|
|
|
45
45
|
return result.message?.trim() || "Schema applied.";
|
|
46
46
|
}
|
|
47
47
|
const COMPOSE_PROGRESS_LINE = /^Container\s+.+\s+(Running|Waiting|Healthy|Created|Starting|Started|Exited|Stopped)\s*$/i;
|
|
48
|
+
export function isComposeProgressLine(line) {
|
|
49
|
+
return COMPOSE_PROGRESS_LINE.test(line.trim());
|
|
50
|
+
}
|
|
48
51
|
/** Drop docker compose progress noise; keep engine JSON and real errors. */
|
|
49
52
|
export function filterComposeNoise(output) {
|
|
50
53
|
return output
|
|
@@ -54,7 +57,7 @@ export function filterComposeNoise(output) {
|
|
|
54
57
|
const t = line.trim();
|
|
55
58
|
if (!t)
|
|
56
59
|
return false;
|
|
57
|
-
if (
|
|
60
|
+
if (isComposeProgressLine(t))
|
|
58
61
|
return false;
|
|
59
62
|
return true;
|
|
60
63
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-push-output.js","sourceRoot":"","sources":["../src/engine-push-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,MAAc;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAQ;QACpE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,qBAAqB,CAAmB,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,OAAO,6CAA6C,CAAA;QACtD,CAAC;QACD,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAA;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,WAAW,GAAG,gBAAgB,CAAA;IACvC,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAA;AACpD,CAAC;AAED,MAAM,qBAAqB,GACzB,0FAA0F,CAAA;AAE5F,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACrB,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QACpB,IAAI,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"engine-push-output.js","sourceRoot":"","sources":["../src/engine-push-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,MAAc;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAQ;QACpE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,qBAAqB,CAAmB,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,OAAO,6CAA6C,CAAA;QACtD,CAAC;QACD,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAA;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,WAAW,GAAG,gBAAgB,CAAA;IACvC,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAA;AACpD,CAAC;AAED,MAAM,qBAAqB,GACzB,0FAA0F,CAAA;AAE5F,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAChD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACrB,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QACpB,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-binary.d.ts","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ensure-binary.d.ts","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,wBAAsB,YAAY,CAChC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
|
package/dist/ensure-binary.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve component binaries, downloading from the CDN when not cached.
|
|
3
3
|
*/
|
|
4
|
-
import { resolveBinary, download, currentPlatform, resolveVersionFor, } from "./binary-cache.js";
|
|
4
|
+
import { resolveBinary, download, currentPlatform, resolveVersionFor, isCachedBinaryReady, } from "./binary-cache.js";
|
|
5
|
+
import { isDownloadInProgress, waitForComponentDownload } from "./binary-download-lock.js";
|
|
5
6
|
export async function ensureBinary(component, config) {
|
|
6
7
|
try {
|
|
7
8
|
return await resolveBinary(component, config);
|
|
@@ -12,6 +13,17 @@ export async function ensureBinary(component, config) {
|
|
|
12
13
|
throw err;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
+
const version = await resolveVersionFor(component, config);
|
|
17
|
+
const platform = currentPlatform();
|
|
18
|
+
if (isDownloadInProgress(component, version)) {
|
|
19
|
+
console.log(`[supatype] Waiting for in-progress ${component} download...`);
|
|
20
|
+
const outcome = await waitForComponentDownload(component, version, () => isCachedBinaryReady(component, version, platform), (c) => {
|
|
21
|
+
console.log(`[supatype] Still waiting for ${c}...`);
|
|
22
|
+
});
|
|
23
|
+
if (outcome === "ready") {
|
|
24
|
+
return resolveBinary(component, config);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return download(component, version, platform);
|
|
16
28
|
}
|
|
17
29
|
//# sourceMappingURL=ensure-binary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-binary.js","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,eAAe,EACf,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ensure-binary.js","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAG1F,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAoB,EACpB,MAA6B;IAE7B,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAElC,IAAI,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,cAAc,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAC5C,SAAS,EACT,OAAO,EACP,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EACvD,CAAC,CAAC,EAAE,EAAE;YACJ,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC,CACF,CAAA;QACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure CDN component binaries are cached when the host CLI needs them.
|
|
3
|
+
*/
|
|
4
|
+
import type { Component } from "./components.js";
|
|
5
|
+
import type { SupatypeProjectConfig } from "./project-config.js";
|
|
6
|
+
export interface ComponentBinaryFailure {
|
|
7
|
+
component: Component;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
export interface EnsureComponentBinariesResult {
|
|
11
|
+
ok: boolean;
|
|
12
|
+
failures: ComponentBinaryFailure[];
|
|
13
|
+
skipped: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function ensureComponentBinaries(config: SupatypeProjectConfig, cwd?: string): Promise<EnsureComponentBinariesResult>;
|
|
16
|
+
export declare function reportComponentBinaryFailures(failures: ComponentBinaryFailure[]): void;
|
|
17
|
+
//# sourceMappingURL=ensure-component-binaries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-component-binaries.d.ts","sourceRoot":"","sources":["../src/ensure-component-binaries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAQhE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,6BAA6B,CAAC,CA+BxC;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAStF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure CDN component binaries are cached when the host CLI needs them.
|
|
3
|
+
*/
|
|
4
|
+
import { ensureBinary } from "./ensure-binary.js";
|
|
5
|
+
import { describeRequiredHostComponents, requiredHostComponents, } from "./required-host-components.js";
|
|
6
|
+
import { resolveRuntimeProvider } from "./project-config.js";
|
|
7
|
+
import { error, info, warn } from "./ui/messages.js";
|
|
8
|
+
export async function ensureComponentBinaries(config, cwd = process.cwd()) {
|
|
9
|
+
const components = requiredHostComponents(config, cwd);
|
|
10
|
+
const provider = resolveRuntimeProvider(config);
|
|
11
|
+
if (components.length === 0) {
|
|
12
|
+
return { ok: true, failures: [], skipped: true };
|
|
13
|
+
}
|
|
14
|
+
const list = describeRequiredHostComponents(components);
|
|
15
|
+
if (provider === "docker") {
|
|
16
|
+
info(`Preparing host CLI tools (${list}) — Compose still runs Postgres and the API stack.`);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
info(`Preparing local runtime components (${list})…`);
|
|
20
|
+
}
|
|
21
|
+
const failures = [];
|
|
22
|
+
for (const component of components) {
|
|
23
|
+
try {
|
|
24
|
+
await ensureBinary(component, config);
|
|
25
|
+
info(`${component} ready.`);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
29
|
+
failures.push({ component, message });
|
|
30
|
+
error(`Could not prepare ${component}: ${message}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { ok: failures.length === 0, failures, skipped: false };
|
|
34
|
+
}
|
|
35
|
+
export function reportComponentBinaryFailures(failures) {
|
|
36
|
+
if (failures.length === 0)
|
|
37
|
+
return;
|
|
38
|
+
warn("Some component binaries are still missing.");
|
|
39
|
+
for (const { component, message } of failures) {
|
|
40
|
+
warn(` ${component}: ${message}`);
|
|
41
|
+
}
|
|
42
|
+
warn("Run manually from your project directory: supatype update");
|
|
43
|
+
warn("If downloads keep failing, check your network or try again in a few minutes.");
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ensure-component-binaries.js.map
|