@supatype/cli 0.1.0-alpha.8 → 0.1.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/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-test.log +274 -69
- package/.turbo/turbo-typecheck.log +1 -1
- package/assets/supatype-logo-wordmark.ascii.txt +6 -0
- package/bin/dev-entry.ts +2 -1
- package/dist/app/framework.js +1 -3
- package/dist/app/framework.js.map +1 -1
- package/dist/app/proxy-dev-app.d.ts +14 -0
- package/dist/app/proxy-dev-app.d.ts.map +1 -1
- package/dist/app/proxy-dev-app.js +110 -6
- package/dist/app/proxy-dev-app.js.map +1 -1
- package/dist/app-config.d.ts +10 -0
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +72 -0
- package/dist/app-config.js.map +1 -1
- package/dist/assets/supatype-logo-wordmark.ascii.txt +6 -0
- package/dist/binary-cache.d.ts +19 -7
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +92 -46
- package/dist/binary-cache.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +86 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +39 -53
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/adopt.d.ts +3 -0
- package/dist/commands/adopt.d.ts.map +1 -0
- package/dist/commands/adopt.js +55 -0
- package/dist/commands/adopt.js.map +1 -0
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +20 -17
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/cache.d.ts.map +1 -1
- package/dist/commands/cache.js +11 -10
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/cloud.d.ts +4 -9
- package/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +75 -125
- package/dist/commands/cloud.js.map +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +37 -58
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +140 -96
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +72 -39
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +39 -39
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +78 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +5 -4
- package/dist/commands/engine.js.map +1 -1
- package/dist/commands/functions.d.ts.map +1 -1
- package/dist/commands/functions.js +172 -119
- package/dist/commands/functions.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +5 -4
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +30 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +814 -107
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/introspect.d.ts +3 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/introspect.js +35 -0
- package/dist/commands/introspect.js.map +1 -0
- package/dist/commands/keys.d.ts +15 -1
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +46 -10
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/link-helpers.d.ts +15 -0
- package/dist/commands/link-helpers.d.ts.map +1 -0
- package/dist/commands/link-helpers.js +225 -0
- package/dist/commands/link-helpers.js.map +1 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +5 -4
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/migrate-from-v1.d.ts.map +1 -1
- package/dist/commands/migrate-from-v1.js +3 -2
- package/dist/commands/migrate-from-v1.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +119 -26
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/pg.d.ts.map +1 -1
- package/dist/commands/pg.js +11 -12
- package/dist/commands/pg.js.map +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +55 -46
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +33 -5
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +110 -137
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +4 -3
- package/dist/commands/seed.js.map +1 -1
- package/dist/commands/self-host.d.ts +2 -2
- package/dist/commands/self-host.d.ts.map +1 -1
- package/dist/commands/self-host.js +65 -50
- package/dist/commands/self-host.js.map +1 -1
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +3 -2
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +95 -29
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +3 -2
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +54 -21
- package/dist/commands/update.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/dev-compose.d.ts +26 -0
- package/dist/dev-compose.d.ts.map +1 -1
- package/dist/dev-compose.js +328 -34
- package/dist/dev-compose.js.map +1 -1
- package/dist/dev-log-bus.d.ts +30 -0
- package/dist/dev-log-bus.d.ts.map +1 -0
- package/dist/dev-log-bus.js +87 -0
- package/dist/dev-log-bus.js.map +1 -0
- package/dist/dev-log-filter.d.ts +10 -0
- package/dist/dev-log-filter.d.ts.map +1 -0
- package/dist/dev-log-filter.js +36 -0
- package/dist/dev-log-filter.js.map +1 -0
- package/dist/dev-logo.d.ts +12 -0
- package/dist/dev-logo.d.ts.map +1 -0
- package/dist/dev-logo.js +56 -0
- package/dist/dev-logo.js.map +1 -0
- package/dist/dev-session.d.ts +26 -0
- package/dist/dev-session.d.ts.map +1 -0
- package/dist/dev-session.js +106 -0
- package/dist/dev-session.js.map +1 -0
- package/dist/dev-shutdown.d.ts +9 -0
- package/dist/dev-shutdown.d.ts.map +1 -0
- package/dist/dev-shutdown.js +50 -0
- package/dist/dev-shutdown.js.map +1 -0
- package/dist/dev-task-colors.d.ts +13 -0
- package/dist/dev-task-colors.d.ts.map +1 -0
- package/dist/dev-task-colors.js +43 -0
- package/dist/dev-task-colors.js.map +1 -0
- package/dist/dev-tui.d.ts +24 -0
- package/dist/dev-tui.d.ts.map +1 -0
- package/dist/dev-tui.js +188 -0
- package/dist/dev-tui.js.map +1 -0
- package/dist/diff-output.d.ts +5 -1
- package/dist/diff-output.d.ts.map +1 -1
- package/dist/diff-output.js +69 -0
- package/dist/diff-output.js.map +1 -1
- package/dist/docker-runtime.d.ts +30 -0
- package/dist/docker-runtime.d.ts.map +1 -0
- package/dist/docker-runtime.js +118 -0
- package/dist/docker-runtime.js.map +1 -0
- package/dist/engine-client.d.ts +10 -1
- package/dist/engine-client.d.ts.map +1 -1
- package/dist/engine-client.js +76 -17
- package/dist/engine-client.js.map +1 -1
- package/dist/engine-push-output.d.ts +17 -0
- package/dist/engine-push-output.d.ts.map +1 -0
- package/dist/engine-push-output.js +64 -0
- package/dist/engine-push-output.js.map +1 -0
- package/dist/ensure-binary.js +2 -2
- package/dist/ensure-binary.js.map +1 -1
- package/dist/gitignore.d.ts +8 -0
- package/dist/gitignore.d.ts.map +1 -0
- package/dist/gitignore.js +41 -0
- package/dist/gitignore.js.map +1 -0
- package/dist/kong-config.d.ts +9 -0
- package/dist/kong-config.d.ts.map +1 -1
- package/dist/kong-config.js +18 -1
- package/dist/kong-config.js.map +1 -1
- package/dist/link.d.ts +66 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +160 -0
- package/dist/link.js.map +1 -0
- package/dist/process-manager.d.ts +8 -0
- package/dist/process-manager.d.ts.map +1 -1
- package/dist/process-manager.js +53 -9
- package/dist/process-manager.js.map +1 -1
- package/dist/project-config.d.ts +30 -3
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +37 -4
- package/dist/project-config.js.map +1 -1
- package/dist/prompts.d.ts +3 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +3 -0
- package/dist/prompts.js.map +1 -0
- package/dist/pull-utils.d.ts +50 -14
- package/dist/pull-utils.d.ts.map +1 -1
- package/dist/pull-utils.js +152 -12
- package/dist/pull-utils.js.map +1 -1
- package/dist/resolve-target.d.ts +86 -0
- package/dist/resolve-target.d.ts.map +1 -0
- package/dist/resolve-target.js +291 -0
- package/dist/resolve-target.js.map +1 -0
- package/dist/restore-system-relation-targets.d.ts +3 -0
- package/dist/restore-system-relation-targets.d.ts.map +1 -0
- package/dist/restore-system-relation-targets.js +45 -0
- package/dist/restore-system-relation-targets.js.map +1 -0
- package/dist/runtime-routes.d.ts.map +1 -1
- package/dist/runtime-routes.js +7 -0
- package/dist/runtime-routes.js.map +1 -1
- package/dist/schema-ast-v2.d.ts +1 -1
- package/dist/schema-ast-v2.d.ts.map +1 -1
- package/dist/schema-ast-v2.js +2 -2
- package/dist/schema-ast-v2.js.map +1 -1
- package/dist/schema-sources.d.ts +40 -0
- package/dist/schema-sources.d.ts.map +1 -0
- package/dist/schema-sources.js +183 -0
- package/dist/schema-sources.js.map +1 -0
- package/dist/scripts/postinstall.js +5 -1
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/seed.d.ts +8 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +32 -0
- package/dist/seed.js.map +1 -0
- package/dist/self-host-compose.d.ts +37 -1
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +233 -43
- package/dist/self-host-compose.js.map +1 -1
- package/dist/storage-provision.d.ts +4 -0
- package/dist/storage-provision.d.ts.map +1 -1
- package/dist/storage-provision.js +24 -2
- package/dist/storage-provision.js.map +1 -1
- package/dist/supatype-eval-1781522769253.d.mts +2 -0
- package/dist/supatype-eval-1781522769253.d.mts.map +1 -0
- package/dist/supatype-eval-1781522769253.mjs +3 -0
- package/dist/supatype-eval-1781522769253.mjs.map +1 -0
- package/dist/systemd.js +2 -2
- package/dist/systemd.js.map +1 -1
- package/dist/target-client.d.ts +10 -0
- package/dist/target-client.d.ts.map +1 -0
- package/dist/target-client.js +22 -0
- package/dist/target-client.js.map +1 -0
- package/dist/type-extractor.d.ts +11 -0
- package/dist/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor.js +95 -8
- package/dist/type-extractor.js.map +1 -1
- package/dist/ui/brand.d.ts +9 -0
- package/dist/ui/brand.d.ts.map +1 -0
- package/dist/ui/brand.js +11 -0
- package/dist/ui/brand.js.map +1 -0
- package/dist/ui/confirm.d.ts +12 -0
- package/dist/ui/confirm.d.ts.map +1 -0
- package/dist/ui/confirm.js +28 -0
- package/dist/ui/confirm.js.map +1 -0
- package/dist/ui/fatal.d.ts +10 -0
- package/dist/ui/fatal.d.ts.map +1 -0
- package/dist/ui/fatal.js +34 -0
- package/dist/ui/fatal.js.map +1 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +9 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/interactive.d.ts +3 -0
- package/dist/ui/interactive.d.ts.map +1 -0
- package/dist/ui/interactive.js +5 -0
- package/dist/ui/interactive.js.map +1 -0
- package/dist/ui/messages.d.ts +10 -0
- package/dist/ui/messages.d.ts.map +1 -0
- package/dist/ui/messages.js +35 -0
- package/dist/ui/messages.js.map +1 -0
- package/dist/ui/next-steps.d.ts +3 -0
- package/dist/ui/next-steps.d.ts.map +1 -0
- package/dist/ui/next-steps.js +10 -0
- package/dist/ui/next-steps.js.map +1 -0
- package/dist/ui/progress.d.ts +5 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +24 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/prompts.d.ts +14 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +34 -0
- package/dist/ui/prompts.js.map +1 -0
- package/package.json +9 -4
- package/src/app/framework.ts +1 -3
- package/src/app/proxy-dev-app.ts +114 -6
- package/src/app-config.ts +80 -0
- package/src/binary-cache.ts +102 -52
- package/src/cli.ts +16 -2
- package/src/commands/add.ts +97 -0
- package/src/commands/admin.ts +39 -73
- package/src/commands/adopt.ts +82 -0
- package/src/commands/app.ts +20 -17
- package/src/commands/cache.ts +11 -10
- package/src/commands/cloud.ts +91 -142
- package/src/commands/db.ts +40 -63
- package/src/commands/deploy.ts +186 -126
- package/src/commands/dev.ts +95 -55
- package/src/commands/diff.ts +52 -43
- package/src/commands/doctor.ts +103 -0
- package/src/commands/engine.ts +5 -4
- package/src/commands/functions.ts +187 -123
- package/src/commands/generate.ts +5 -4
- package/src/commands/init.ts +996 -105
- package/src/commands/introspect.ts +48 -0
- package/src/commands/keys.ts +56 -14
- package/src/commands/link-helpers.ts +273 -0
- package/src/commands/logs.ts +5 -4
- package/src/commands/migrate-from-v1.ts +3 -2
- package/src/commands/migrate.ts +167 -27
- package/src/commands/pg.ts +13 -18
- package/src/commands/plugins.ts +55 -46
- package/src/commands/pull.ts +38 -9
- package/src/commands/push.ts +147 -174
- package/src/commands/seed.ts +5 -4
- package/src/commands/self-host.ts +85 -54
- package/src/commands/self-update.ts +3 -2
- package/src/commands/status.ts +102 -33
- package/src/commands/types.ts +3 -2
- package/src/commands/update.ts +59 -23
- package/src/config.ts +2 -1
- package/src/dev-compose.ts +426 -34
- package/src/dev-log-bus.ts +101 -0
- package/src/dev-log-filter.ts +32 -0
- package/src/dev-logo.ts +61 -0
- package/src/dev-session.ts +130 -0
- package/src/dev-shutdown.ts +54 -0
- package/src/dev-task-colors.ts +47 -0
- package/src/dev-tui.ts +232 -0
- package/src/diff-output.ts +79 -1
- package/src/docker-runtime.ts +151 -0
- package/src/engine-client.ts +81 -17
- package/src/engine-push-output.ts +75 -0
- package/src/ensure-binary.ts +2 -2
- package/src/gitignore.ts +48 -0
- package/src/kong-config.ts +24 -1
- package/src/link.ts +243 -0
- package/src/process-manager.ts +66 -10
- package/src/project-config.ts +62 -7
- package/src/prompts.ts +2 -0
- package/src/pull-utils.ts +217 -23
- package/src/resolve-target.ts +419 -0
- package/src/restore-system-relation-targets.ts +45 -0
- package/src/runtime-routes.ts +7 -0
- package/src/schema-ast-v2.ts +2 -1
- package/src/schema-sources.ts +248 -0
- package/src/scripts/postinstall.ts +7 -1
- package/src/seed.ts +43 -0
- package/src/self-host-compose.ts +261 -46
- package/src/storage-provision.ts +33 -1
- package/src/supatype-eval-1781522769253.mts +1 -0
- package/src/systemd.ts +2 -2
- package/src/target-client.ts +40 -0
- package/src/type-extractor.ts +124 -11
- package/src/ui/README.md +17 -0
- package/src/ui/brand.ts +12 -0
- package/src/ui/confirm.ts +38 -0
- package/src/ui/fatal.ts +43 -0
- package/src/ui/index.ts +8 -0
- package/src/ui/interactive.ts +4 -0
- package/src/ui/messages.ts +43 -0
- package/src/ui/next-steps.ts +10 -0
- package/src/ui/progress.ts +28 -0
- package/src/ui/prompts.ts +40 -0
- package/tests/cli-help.test.ts +27 -2
- package/tests/config.test.ts +29 -2
- package/tests/dev-ui.test.ts +139 -0
- package/tests/docker-runtime.test.ts +236 -0
- package/tests/engine-push-output.test.ts +67 -0
- package/tests/init.test.ts +197 -18
- package/tests/link.test.ts +148 -0
- package/tests/minisign.test.ts +102 -0
- package/tests/proxy-dev-app.test.ts +45 -1
- package/tests/pull-utils.test.ts +5 -4
- package/tests/runtime-contract.test.ts +186 -2
- package/tests/schema-sources.test.ts +119 -0
- package/tests/storage-provision.test.ts +100 -0
- package/tests/ui-confirm.test.ts +41 -0
- package/tests/ui-messages.test.ts +66 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-task log buffers for `supatype dev` TUI mode.
|
|
3
|
+
*/
|
|
4
|
+
const DEFAULT_MAX_LINES = 5_000;
|
|
5
|
+
export class DevLogBus {
|
|
6
|
+
maxLines;
|
|
7
|
+
tasks = new Map();
|
|
8
|
+
order = [];
|
|
9
|
+
listeners = new Set();
|
|
10
|
+
focusedTaskId = "stack";
|
|
11
|
+
constructor(maxLines = DEFAULT_MAX_LINES) {
|
|
12
|
+
this.maxLines = maxLines;
|
|
13
|
+
this.registerTask("stack", "supatype");
|
|
14
|
+
}
|
|
15
|
+
registerTask(id, title) {
|
|
16
|
+
if (this.tasks.has(id))
|
|
17
|
+
return;
|
|
18
|
+
this.tasks.set(id, { id, title, lines: [], unread: false });
|
|
19
|
+
this.order.push(id);
|
|
20
|
+
this.notify();
|
|
21
|
+
}
|
|
22
|
+
ensureTask(id, title = id) {
|
|
23
|
+
this.registerTask(id, title);
|
|
24
|
+
}
|
|
25
|
+
getTaskOrder() {
|
|
26
|
+
return this.order;
|
|
27
|
+
}
|
|
28
|
+
getTask(id) {
|
|
29
|
+
return this.tasks.get(id);
|
|
30
|
+
}
|
|
31
|
+
getFocusedTaskId() {
|
|
32
|
+
return this.focusedTaskId;
|
|
33
|
+
}
|
|
34
|
+
setFocusedTaskId(id) {
|
|
35
|
+
if (!this.tasks.has(id))
|
|
36
|
+
return;
|
|
37
|
+
this.focusedTaskId = id;
|
|
38
|
+
const task = this.tasks.get(id);
|
|
39
|
+
if (task)
|
|
40
|
+
task.unread = false;
|
|
41
|
+
this.notify();
|
|
42
|
+
}
|
|
43
|
+
focusNext() {
|
|
44
|
+
const idx = this.order.indexOf(this.focusedTaskId);
|
|
45
|
+
const next = this.order[(idx + 1) % this.order.length];
|
|
46
|
+
if (next)
|
|
47
|
+
this.setFocusedTaskId(next);
|
|
48
|
+
}
|
|
49
|
+
focusPrevious() {
|
|
50
|
+
const idx = this.order.indexOf(this.focusedTaskId);
|
|
51
|
+
const prev = this.order[(idx - 1 + this.order.length) % this.order.length];
|
|
52
|
+
if (prev)
|
|
53
|
+
this.setFocusedTaskId(prev);
|
|
54
|
+
}
|
|
55
|
+
append(taskId, line, level = "log") {
|
|
56
|
+
this.ensureTask(taskId, taskId);
|
|
57
|
+
const task = this.tasks.get(taskId);
|
|
58
|
+
if (!task)
|
|
59
|
+
return;
|
|
60
|
+
const levelPrefix = level === "warn" ? "⚠ " : level === "error" ? "✗ " : "";
|
|
61
|
+
const parts = line.split(/\r?\n/);
|
|
62
|
+
for (const part of parts) {
|
|
63
|
+
if (part.length === 0)
|
|
64
|
+
continue;
|
|
65
|
+
const text = taskId === "stack" ? part.replace(/^\[supatype\]\s*/, "") : part;
|
|
66
|
+
if (text.length === 0)
|
|
67
|
+
continue;
|
|
68
|
+
task.lines.push(levelPrefix + text);
|
|
69
|
+
if (task.lines.length > this.maxLines) {
|
|
70
|
+
task.lines.splice(0, task.lines.length - this.maxLines);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (taskId !== this.focusedTaskId && parts.some((p) => p.length > 0)) {
|
|
74
|
+
task.unread = true;
|
|
75
|
+
}
|
|
76
|
+
this.notify();
|
|
77
|
+
}
|
|
78
|
+
onUpdate(listener) {
|
|
79
|
+
this.listeners.add(listener);
|
|
80
|
+
return () => this.listeners.delete(listener);
|
|
81
|
+
}
|
|
82
|
+
notify() {
|
|
83
|
+
for (const listener of this.listeners)
|
|
84
|
+
listener();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=dev-log-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-log-bus.js","sourceRoot":"","sources":["../src/dev-log-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line filters for subprocess output during `supatype dev`.
|
|
3
|
+
*/
|
|
4
|
+
/** Strip ANSI SGR sequences for TUI rendering. */
|
|
5
|
+
export declare function stripAnsi(text: string): string;
|
|
6
|
+
/** Drop npm/vite noise from frontend dev servers (proxy app + Studio). */
|
|
7
|
+
export declare function filterDevSubprocessLine(taskId: string, line: string): boolean;
|
|
8
|
+
/** Format console.* arguments the way Node does for a single log line. */
|
|
9
|
+
export declare function formatConsoleArgs(args: unknown[]): string;
|
|
10
|
+
//# sourceMappingURL=dev-log-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-log-filter.d.ts","sourceRoot":"","sources":["../src/dev-log-filter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAWzD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line filters for subprocess output during `supatype dev`.
|
|
3
|
+
*/
|
|
4
|
+
/** Strip ANSI SGR sequences for TUI rendering. */
|
|
5
|
+
export function stripAnsi(text) {
|
|
6
|
+
return text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
7
|
+
}
|
|
8
|
+
/** Drop npm/vite noise from frontend dev servers (proxy app + Studio). */
|
|
9
|
+
export function filterDevSubprocessLine(taskId, line) {
|
|
10
|
+
if (taskId !== "app" && taskId !== "studio")
|
|
11
|
+
return true;
|
|
12
|
+
const trimmed = stripAnsi(line).trim();
|
|
13
|
+
if (!trimmed)
|
|
14
|
+
return false;
|
|
15
|
+
if (/^>\s+\S/.test(trimmed))
|
|
16
|
+
return false;
|
|
17
|
+
if (trimmed.includes("Network:") && trimmed.includes("➜"))
|
|
18
|
+
return false;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
/** Format console.* arguments the way Node does for a single log line. */
|
|
22
|
+
export function formatConsoleArgs(args) {
|
|
23
|
+
return args
|
|
24
|
+
.map((arg) => {
|
|
25
|
+
if (typeof arg === "string")
|
|
26
|
+
return arg;
|
|
27
|
+
try {
|
|
28
|
+
return JSON.stringify(arg);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return String(arg);
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
.join(" ");
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=dev-log-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-log-filter.js","sourceRoot":"","sources":["../src/dev-log-filter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kDAAkD;AAClD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,IAAY;IAClE,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACxD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACvE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAC/C,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAA;QACvC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supatype ASCII wordmark for the dev TUI header.
|
|
3
|
+
* Baked from `figlet -f slant supatype` → assets/supatype-logo-wordmark.ascii.txt
|
|
4
|
+
*/
|
|
5
|
+
/** Figlet slant wordmark (~46×6). */
|
|
6
|
+
export declare const SUPATYPE_ASCII_LOGO_WORDMARK: readonly string[];
|
|
7
|
+
export declare function pickLogoLines(): readonly string[];
|
|
8
|
+
export declare function logoRowCount(): number;
|
|
9
|
+
/** Return logo rows exactly as authored (spaces preserved). */
|
|
10
|
+
export declare function layoutLogoBlock(lines: readonly string[]): string[];
|
|
11
|
+
export declare function colorLogoLines(lines: readonly string[]): string[];
|
|
12
|
+
//# sourceMappingURL=dev-logo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-logo.d.ts","sourceRoot":"","sources":["../src/dev-logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuCH,qCAAqC;AACrC,eAAO,MAAM,4BAA4B,mBAA0B,CAAA;AAEnE,wBAAgB,aAAa,IAAI,SAAS,MAAM,EAAE,CAEjD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAElE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjE"}
|
package/dist/dev-logo.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supatype ASCII wordmark for the dev TUI header.
|
|
3
|
+
* Baked from `figlet -f slant supatype` → assets/supatype-logo-wordmark.ascii.txt
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
6
|
+
import { dirname, join } from "node:path";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
import { BOLD, BRAND_COLOR, RESET } from "./ui/brand.js";
|
|
9
|
+
const EMBEDDED_LOGO_WORDMARK = [
|
|
10
|
+
" __ ",
|
|
11
|
+
" _______ ______ ____ _/ /___ ______ ___ ",
|
|
12
|
+
" / ___/ / / / __ \\/ __ `/ __/ / / / __ \\/ _ \\",
|
|
13
|
+
" (__ ) /_/ / /_/ / /_/ / /_/ /_/ / /_/ / __/",
|
|
14
|
+
"/____/\\__,_/ .___/\\__,_/\\__/\\__, / .___/\\___/ ",
|
|
15
|
+
" /_/ /____/_/ ",
|
|
16
|
+
];
|
|
17
|
+
function readLogoFile(basename) {
|
|
18
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const candidates = [
|
|
20
|
+
join(here, "assets", basename),
|
|
21
|
+
join(here, "..", "assets", basename),
|
|
22
|
+
];
|
|
23
|
+
for (const path of candidates) {
|
|
24
|
+
if (!existsSync(path))
|
|
25
|
+
continue;
|
|
26
|
+
const lines = readFileSync(path, "utf8")
|
|
27
|
+
.split(/\r?\n/)
|
|
28
|
+
.map((line) => (line.endsWith("\r") ? line.slice(0, -1) : line))
|
|
29
|
+
.filter((line) => line.length > 0);
|
|
30
|
+
if (lines.length > 0)
|
|
31
|
+
return lines;
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function loadWordmarkLogoLines() {
|
|
36
|
+
const fromFile = readLogoFile("supatype-logo-wordmark.ascii.txt");
|
|
37
|
+
if (fromFile)
|
|
38
|
+
return fromFile;
|
|
39
|
+
return [...EMBEDDED_LOGO_WORDMARK];
|
|
40
|
+
}
|
|
41
|
+
/** Figlet slant wordmark (~46×6). */
|
|
42
|
+
export const SUPATYPE_ASCII_LOGO_WORDMARK = loadWordmarkLogoLines();
|
|
43
|
+
export function pickLogoLines() {
|
|
44
|
+
return SUPATYPE_ASCII_LOGO_WORDMARK;
|
|
45
|
+
}
|
|
46
|
+
export function logoRowCount() {
|
|
47
|
+
return pickLogoLines().length;
|
|
48
|
+
}
|
|
49
|
+
/** Return logo rows exactly as authored (spaces preserved). */
|
|
50
|
+
export function layoutLogoBlock(lines) {
|
|
51
|
+
return [...lines];
|
|
52
|
+
}
|
|
53
|
+
export function colorLogoLines(lines) {
|
|
54
|
+
return lines.map((line) => `${BRAND_COLOR}${BOLD}${line}${RESET}`);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=dev-logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-logo.js","sourceRoot":"","sources":["../src/dev-logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAExD,MAAM,sBAAsB,GAAG;IAC7B,gDAAgD;IAChD,gDAAgD;IAChD,mDAAmD;IACnD,gDAAgD;IAChD,qDAAqD;IACrD,gDAAgD;CACxC,CAAA;AAEV,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACrC,CAAA;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;aACrC,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC/D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;IACpC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAA;IACjE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,CAAC,GAAG,sBAAsB,CAAC,CAAA;AACpC,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,EAAE,CAAA;AAEnE,MAAM,UAAU,aAAa;IAC3B,OAAO,4BAA4B,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,aAAa,EAAE,CAAC,MAAM,CAAA;AAC/B,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,KAAwB;IACtD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAA;AACpE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `supatype dev` output session — TUI (default) or interleaved stream mode.
|
|
3
|
+
*/
|
|
4
|
+
import type { ProcessOptions } from "./process-manager.js";
|
|
5
|
+
import { DevLogBus, type DevLogLevel } from "./dev-log-bus.js";
|
|
6
|
+
export type DevUiMode = "tui" | "stream";
|
|
7
|
+
export declare function resolveDevUiMode(streamFlag: boolean): DevUiMode;
|
|
8
|
+
export declare function beginDevSession(mode: DevUiMode): DevSession;
|
|
9
|
+
/** Enter console capture + TUI. */
|
|
10
|
+
export declare function startDevSession(): void;
|
|
11
|
+
export declare function endDevSession(): void;
|
|
12
|
+
export declare function getActiveDevSession(): DevSession | null;
|
|
13
|
+
/** Log to a TUI task stream, or prefixed console output in stream mode. */
|
|
14
|
+
export declare function appendDevTaskLog(taskId: string, taskTitle: string, line: string, level?: DevLogLevel): void;
|
|
15
|
+
export declare class DevSession {
|
|
16
|
+
readonly bus: DevLogBus;
|
|
17
|
+
readonly mode: DevUiMode;
|
|
18
|
+
private tui;
|
|
19
|
+
private restoreConsole;
|
|
20
|
+
constructor(mode: DevUiMode);
|
|
21
|
+
isTui(): boolean;
|
|
22
|
+
start(): void;
|
|
23
|
+
stop(): void;
|
|
24
|
+
}
|
|
25
|
+
export declare function enhanceProcessOptions(label: string, opts: ProcessOptions): ProcessOptions;
|
|
26
|
+
//# sourceMappingURL=dev-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-session.d.ts","sourceRoot":"","sources":["../src/dev-session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;AAExC,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAI/D;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAI3D;AAED,mCAAmC;AACnC,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAEvD;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,WAAmB,GACzB,IAAI,CAUN;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,GAAG,YAAkB;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,cAAc,CAA4B;gBAEtC,IAAI,EAAE,SAAS;IAI3B,KAAK,IAAI,OAAO;IAIhB,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;CAMb;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,cAAc,CAmBzF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `supatype dev` output session — TUI (default) or interleaved stream mode.
|
|
3
|
+
*/
|
|
4
|
+
import { filterDevSubprocessLine, formatConsoleArgs } from "./dev-log-filter.js";
|
|
5
|
+
import { DevLogBus } from "./dev-log-bus.js";
|
|
6
|
+
import { DevTui } from "./dev-tui.js";
|
|
7
|
+
export function resolveDevUiMode(streamFlag) {
|
|
8
|
+
if (streamFlag)
|
|
9
|
+
return "stream";
|
|
10
|
+
if (!process.stdout.isTTY || !process.stdin.isTTY)
|
|
11
|
+
return "stream";
|
|
12
|
+
return "tui";
|
|
13
|
+
}
|
|
14
|
+
let activeSession = null;
|
|
15
|
+
export function beginDevSession(mode) {
|
|
16
|
+
activeSession?.stop();
|
|
17
|
+
activeSession = new DevSession(mode);
|
|
18
|
+
return activeSession;
|
|
19
|
+
}
|
|
20
|
+
/** Enter console capture + TUI. */
|
|
21
|
+
export function startDevSession() {
|
|
22
|
+
activeSession?.start();
|
|
23
|
+
}
|
|
24
|
+
export function endDevSession() {
|
|
25
|
+
activeSession?.stop();
|
|
26
|
+
activeSession = null;
|
|
27
|
+
}
|
|
28
|
+
export function getActiveDevSession() {
|
|
29
|
+
return activeSession;
|
|
30
|
+
}
|
|
31
|
+
/** Log to a TUI task stream, or prefixed console output in stream mode. */
|
|
32
|
+
export function appendDevTaskLog(taskId, taskTitle, line, level = "log") {
|
|
33
|
+
const session = getActiveDevSession();
|
|
34
|
+
if (session?.isTui()) {
|
|
35
|
+
session.bus.ensureTask(taskId, taskTitle);
|
|
36
|
+
session.bus.append(taskId, line, level);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const prefix = taskId === "stack" ? "[supatype]" : `[${taskId}]`;
|
|
40
|
+
const write = level === "warn" ? console.warn : level === "error" ? console.error : console.log;
|
|
41
|
+
write(`${prefix} ${line}`);
|
|
42
|
+
}
|
|
43
|
+
export class DevSession {
|
|
44
|
+
bus = new DevLogBus();
|
|
45
|
+
mode;
|
|
46
|
+
tui = null;
|
|
47
|
+
restoreConsole = null;
|
|
48
|
+
constructor(mode) {
|
|
49
|
+
this.mode = mode;
|
|
50
|
+
}
|
|
51
|
+
isTui() {
|
|
52
|
+
return this.mode === "tui";
|
|
53
|
+
}
|
|
54
|
+
start() {
|
|
55
|
+
if (!this.isTui())
|
|
56
|
+
return;
|
|
57
|
+
this.restoreConsole = patchConsole(this.bus);
|
|
58
|
+
this.tui = new DevTui(this.bus);
|
|
59
|
+
this.tui.start();
|
|
60
|
+
}
|
|
61
|
+
stop() {
|
|
62
|
+
this.tui?.stop();
|
|
63
|
+
this.tui = null;
|
|
64
|
+
this.restoreConsole?.();
|
|
65
|
+
this.restoreConsole = null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function enhanceProcessOptions(label, opts) {
|
|
69
|
+
const session = getActiveDevSession();
|
|
70
|
+
const subprocessFilter = label === "app" || label === "studio"
|
|
71
|
+
? { shouldLogLine: (line) => filterDevSubprocessLine(label, line) }
|
|
72
|
+
: {};
|
|
73
|
+
if (!session?.isTui()) {
|
|
74
|
+
return { ...opts, ...subprocessFilter };
|
|
75
|
+
}
|
|
76
|
+
session.bus.ensureTask(label, label);
|
|
77
|
+
return {
|
|
78
|
+
...opts,
|
|
79
|
+
...subprocessFilter,
|
|
80
|
+
onLine: (line, stream) => {
|
|
81
|
+
session.bus.append(label, line, stream === "stderr" ? "error" : "log");
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function patchConsole(bus) {
|
|
86
|
+
const original = {
|
|
87
|
+
log: console.log,
|
|
88
|
+
warn: console.warn,
|
|
89
|
+
error: console.error,
|
|
90
|
+
};
|
|
91
|
+
console.log = (...args) => {
|
|
92
|
+
bus.append("stack", formatConsoleArgs(args), "log");
|
|
93
|
+
};
|
|
94
|
+
console.warn = (...args) => {
|
|
95
|
+
bus.append("stack", formatConsoleArgs(args), "warn");
|
|
96
|
+
};
|
|
97
|
+
console.error = (...args) => {
|
|
98
|
+
bus.append("stack", formatConsoleArgs(args), "error");
|
|
99
|
+
};
|
|
100
|
+
return () => {
|
|
101
|
+
console.log = original.log;
|
|
102
|
+
console.warn = original.warn;
|
|
103
|
+
console.error = original.error;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=dev-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-session.js","sourceRoot":"","sources":["../src/dev-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful shutdown for `supatype dev` — single path from SIGINT and TUI Ctrl+C.
|
|
3
|
+
*/
|
|
4
|
+
/** Register async teardown (stop children, compose down, etc.). Call once per dev session. */
|
|
5
|
+
export declare function registerDevShutdown(work: () => Promise<void>): void;
|
|
6
|
+
/** TUI Ctrl+C — do not re-emit SIGINT (avoids double-fire on Windows raw mode). */
|
|
7
|
+
export declare function requestDevShutdown(): void;
|
|
8
|
+
export declare function isDevShuttingDown(): boolean;
|
|
9
|
+
//# sourceMappingURL=dev-shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-shutdown.d.ts","sourceRoot":"","sources":["../src/dev-shutdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAMnE;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful shutdown for `supatype dev` — single path from SIGINT and TUI Ctrl+C.
|
|
3
|
+
*/
|
|
4
|
+
import { endDevSession } from "./dev-session.js";
|
|
5
|
+
let shutdownWork = null;
|
|
6
|
+
let shuttingDown = false;
|
|
7
|
+
let signalsRegistered = false;
|
|
8
|
+
function onSignal() {
|
|
9
|
+
void runDevShutdown();
|
|
10
|
+
}
|
|
11
|
+
/** Register async teardown (stop children, compose down, etc.). Call once per dev session. */
|
|
12
|
+
export function registerDevShutdown(work) {
|
|
13
|
+
shutdownWork = work;
|
|
14
|
+
if (signalsRegistered)
|
|
15
|
+
return;
|
|
16
|
+
signalsRegistered = true;
|
|
17
|
+
process.on("SIGINT", onSignal);
|
|
18
|
+
process.on("SIGTERM", onSignal);
|
|
19
|
+
}
|
|
20
|
+
/** TUI Ctrl+C — do not re-emit SIGINT (avoids double-fire on Windows raw mode). */
|
|
21
|
+
export function requestDevShutdown() {
|
|
22
|
+
void runDevShutdown();
|
|
23
|
+
}
|
|
24
|
+
export function isDevShuttingDown() {
|
|
25
|
+
return shuttingDown;
|
|
26
|
+
}
|
|
27
|
+
async function runDevShutdown() {
|
|
28
|
+
if (shuttingDown) {
|
|
29
|
+
try {
|
|
30
|
+
endDevSession();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// best-effort terminal restore
|
|
34
|
+
}
|
|
35
|
+
process.stdout.write("\n");
|
|
36
|
+
process.exit(130);
|
|
37
|
+
}
|
|
38
|
+
shuttingDown = true;
|
|
39
|
+
try {
|
|
40
|
+
endDevSession();
|
|
41
|
+
process.stdout.write("\n");
|
|
42
|
+
await shutdownWork?.();
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
process.stderr.write(`[supatype] Shutdown failed: ${err.message}\n`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=dev-shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-shutdown.js","sourceRoot":"","sources":["../src/dev-shutdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,IAAI,YAAY,GAAiC,IAAI,CAAA;AACrD,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAE7B,SAAS,QAAQ;IACf,KAAK,cAAc,EAAE,CAAA;AACvB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,mBAAmB,CAAC,IAAyB;IAC3D,YAAY,GAAG,IAAI,CAAA;IACnB,IAAI,iBAAiB;QAAE,OAAM;IAC7B,iBAAiB,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AACjC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB;IAChC,KAAK,cAAc,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,aAAa,EAAE,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,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,IAAI,CAAC,CAAA;QAC1B,MAAM,YAAY,EAAE,EAAE,CAAA;QACtB,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,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI colours for `supatype dev` TUI task list and log panes.
|
|
3
|
+
*/
|
|
4
|
+
import { BOLD, DIM, RESET } from "./ui/brand.js";
|
|
5
|
+
export { RESET, DIM, BOLD };
|
|
6
|
+
/** Purple for orchestrator logs, green for Vite/app, etc. */
|
|
7
|
+
export declare function taskColor(taskId: string): string;
|
|
8
|
+
export declare function levelColor(line: string): string | null;
|
|
9
|
+
/** Drop redundant prefix — task pane is already labelled supatype. */
|
|
10
|
+
export declare function normalizeStackLogLine(line: string): string;
|
|
11
|
+
export declare function colorizeLogLine(taskId: string, line: string): string;
|
|
12
|
+
export declare function colorizeTaskLabel(taskId: string, label: string, focused: boolean): string;
|
|
13
|
+
//# sourceMappingURL=dev-task-colors.d.ts.map
|
|
@@ -0,0 +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,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGzF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI colours for `supatype dev` TUI task list and log panes.
|
|
3
|
+
*/
|
|
4
|
+
import { BOLD, DIM, RESET } from "./ui/brand.js";
|
|
5
|
+
export { RESET, DIM, BOLD };
|
|
6
|
+
/** Purple for orchestrator logs, green for Vite/app, etc. */
|
|
7
|
+
export function taskColor(taskId) {
|
|
8
|
+
switch (taskId) {
|
|
9
|
+
case "stack":
|
|
10
|
+
return "\x1b[35m";
|
|
11
|
+
case "app":
|
|
12
|
+
return "\x1b[32m";
|
|
13
|
+
case "studio":
|
|
14
|
+
return "\x1b[96m";
|
|
15
|
+
case "server":
|
|
16
|
+
return "\x1b[32m";
|
|
17
|
+
case "postgrest":
|
|
18
|
+
return "\x1b[36m";
|
|
19
|
+
default:
|
|
20
|
+
return "\x1b[37m";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function levelColor(line) {
|
|
24
|
+
if (line.startsWith("✗ "))
|
|
25
|
+
return "\x1b[31m";
|
|
26
|
+
if (line.startsWith("⚠ "))
|
|
27
|
+
return "\x1b[33m";
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
/** Drop redundant prefix — task pane is already labelled supatype. */
|
|
31
|
+
export function normalizeStackLogLine(line) {
|
|
32
|
+
return line.replace(/^\[supatype\]\s*/, "");
|
|
33
|
+
}
|
|
34
|
+
export function colorizeLogLine(taskId, line) {
|
|
35
|
+
const level = levelColor(line);
|
|
36
|
+
const base = level ?? taskColor(taskId);
|
|
37
|
+
return `${base}${line}${RESET}`;
|
|
38
|
+
}
|
|
39
|
+
export function colorizeTaskLabel(taskId, label, focused) {
|
|
40
|
+
const style = focused ? BOLD + taskColor(taskId) : taskColor(taskId);
|
|
41
|
+
return `${style}${label}${RESET}`;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=dev-task-colors.js.map
|
|
@@ -0,0 +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,iBAAiB,CAAC,MAAc,EAAE,KAAa,EAAE,OAAgB;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACpE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive terminal UI for `supatype dev` — task list + focused log pane.
|
|
3
|
+
*/
|
|
4
|
+
import type { DevLogBus } from "./dev-log-bus.js";
|
|
5
|
+
export declare class DevTui {
|
|
6
|
+
private readonly bus;
|
|
7
|
+
private active;
|
|
8
|
+
private scrollFromBottom;
|
|
9
|
+
private renderPending;
|
|
10
|
+
private unsubscribeBus;
|
|
11
|
+
private readonly onResize;
|
|
12
|
+
private readonly onData;
|
|
13
|
+
constructor(bus: DevLogBus);
|
|
14
|
+
start(): void;
|
|
15
|
+
stop(): void;
|
|
16
|
+
private scheduleRender;
|
|
17
|
+
private handleInput;
|
|
18
|
+
private maxScroll;
|
|
19
|
+
private chromeRowCount;
|
|
20
|
+
private splitPaneHeight;
|
|
21
|
+
private render;
|
|
22
|
+
private logLineAt;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=dev-tui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-tui.d.ts","sourceRoot":"","sources":["../src/dev-tui.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AA0BjD,qBAAa,MAAM;IAQL,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPhC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;gBAE7C,GAAG,EAAE,SAAS;IAE3C,KAAK,IAAI,IAAI;IAiBb,IAAI,IAAI,IAAI;IAiBZ,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,MAAM;IAiDd,OAAO,CAAC,SAAS;CAkBlB"}
|