@hs-x/cli 0.2.7 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +25 -8
- package/dist/audit-interactive.d.ts +29 -0
- package/dist/audit-interactive.d.ts.map +1 -0
- package/dist/audit-interactive.js +156 -0
- package/dist/audit-interactive.js.map +1 -0
- package/dist/bin/hs-x.js.map +1 -1
- package/dist/checkpoint-interactive.d.ts +24 -0
- package/dist/checkpoint-interactive.d.ts.map +1 -0
- package/dist/checkpoint-interactive.js +65 -0
- package/dist/checkpoint-interactive.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +266 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/kit.d.ts +1 -1
- package/dist/cli/kit.d.ts.map +1 -1
- package/dist/cli/kit.js +19 -3
- package/dist/cli/kit.js.map +1 -1
- package/dist/cloudflare-auth.d.ts +8 -0
- package/dist/cloudflare-auth.d.ts.map +1 -1
- package/dist/cloudflare-auth.js +12 -2
- package/dist/cloudflare-auth.js.map +1 -1
- package/dist/cloudflare-oauth-store.d.ts +9 -1
- package/dist/cloudflare-oauth-store.d.ts.map +1 -1
- package/dist/cloudflare-oauth-store.js +23 -4
- package/dist/cloudflare-oauth-store.js.map +1 -1
- package/dist/cloudflare-oauth.d.ts +1 -0
- package/dist/cloudflare-oauth.d.ts.map +1 -1
- package/dist/cloudflare-oauth.js +6 -2
- package/dist/cloudflare-oauth.js.map +1 -1
- package/dist/commands/account.d.ts +28 -13
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +219 -69
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +7 -11
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +13 -7
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +239 -125
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/control-plane-read.d.ts +71 -10
- package/dist/commands/control-plane-read.d.ts.map +1 -1
- package/dist/commands/control-plane-read.js +1035 -58
- package/dist/commands/control-plane-read.js.map +1 -1
- package/dist/commands/deploy-promote.d.ts +25 -3
- package/dist/commands/deploy-promote.d.ts.map +1 -1
- package/dist/commands/deploy-promote.js +314 -38
- package/dist/commands/deploy-promote.js.map +1 -1
- package/dist/commands/deploy.d.ts +69 -4
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +1512 -276
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +5 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +502 -107
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +14 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +131 -20
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/flags.d.ts +108 -6
- package/dist/commands/flags.d.ts.map +1 -1
- package/dist/commands/flags.js +996 -75
- package/dist/commands/flags.js.map +1 -1
- package/dist/commands/help-command.d.ts +14 -0
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +144 -44
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/history.js +14 -10
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts +4 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +98 -17
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link.d.ts +2 -3
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +201 -101
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +22 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/migrate.d.ts +37 -17
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +500 -73
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/rollback.d.ts +42 -2
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +422 -58
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/secrets.d.ts +76 -3
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +328 -41
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/status.d.ts +13 -2
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +154 -17
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/unlink.d.ts +2 -2
- package/dist/commands/unlink.d.ts.map +1 -1
- package/dist/commands/unlink.js +2 -2
- package/dist/commands/unlink.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +4 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts +12 -3
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +70 -8
- package/dist/commands/validate.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/control-plane-fetch.d.ts.map +1 -1
- package/dist/control-plane-fetch.js +5 -4
- package/dist/control-plane-fetch.js.map +1 -1
- package/dist/deploy-revision-capture.d.ts +48 -0
- package/dist/deploy-revision-capture.d.ts.map +1 -0
- package/dist/deploy-revision-capture.js +125 -0
- package/dist/deploy-revision-capture.js.map +1 -0
- package/dist/dev/event-bus.d.ts +5 -2
- package/dist/dev/event-bus.d.ts.map +1 -1
- package/dist/dev/event-bus.js +4 -1
- package/dist/dev/event-bus.js.map +1 -1
- package/dist/dev/hubspot-logs-poller.d.ts +35 -0
- package/dist/dev/hubspot-logs-poller.d.ts.map +1 -0
- package/dist/dev/hubspot-logs-poller.js +94 -0
- package/dist/dev/hubspot-logs-poller.js.map +1 -0
- package/dist/dev/invoke.d.ts +9 -1
- package/dist/dev/invoke.d.ts.map +1 -1
- package/dist/dev/invoke.js +69 -20
- package/dist/dev/invoke.js.map +1 -1
- package/dist/dev/keyboard.d.ts +31 -0
- package/dist/dev/keyboard.d.ts.map +1 -0
- package/dist/dev/keyboard.js +143 -0
- package/dist/dev/keyboard.js.map +1 -0
- package/dist/dev/log-server.d.ts +7 -0
- package/dist/dev/log-server.d.ts.map +1 -1
- package/dist/dev/log-server.js +68 -31
- package/dist/dev/log-server.js.map +1 -1
- package/dist/dev/migrated-card.d.ts +17 -0
- package/dist/dev/migrated-card.d.ts.map +1 -0
- package/dist/dev/migrated-card.js +114 -0
- package/dist/dev/migrated-card.js.map +1 -0
- package/dist/dev/stream-filter.d.ts +40 -0
- package/dist/dev/stream-filter.d.ts.map +1 -0
- package/dist/dev/stream-filter.js +93 -0
- package/dist/dev/stream-filter.js.map +1 -0
- package/dist/dev/stream-renderer.d.ts +34 -0
- package/dist/dev/stream-renderer.d.ts.map +1 -1
- package/dist/dev/stream-renderer.js +222 -8
- package/dist/dev/stream-renderer.js.map +1 -1
- package/dist/errors-registry.d.ts.map +1 -1
- package/dist/errors-registry.js +280 -36
- package/dist/errors-registry.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +8 -0
- package/dist/help.js.map +1 -1
- package/dist/hubspot-app-logs.d.ts +76 -0
- package/dist/hubspot-app-logs.d.ts.map +1 -0
- package/dist/hubspot-app-logs.js +323 -0
- package/dist/hubspot-app-logs.js.map +1 -0
- package/dist/hubspot-auth.d.ts +8 -2
- package/dist/hubspot-auth.d.ts.map +1 -1
- package/dist/hubspot-auth.js +9 -9
- package/dist/hubspot-auth.js.map +1 -1
- package/dist/hubspot-developer-client.js +119 -11
- package/dist/hubspot-developer-client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init/templates.d.ts +11 -1
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +228 -15
- package/dist/init/templates.js.map +1 -1
- package/dist/link-migration-journal.d.ts +131 -0
- package/dist/link-migration-journal.d.ts.map +1 -0
- package/dist/link-migration-journal.js +395 -0
- package/dist/link-migration-journal.js.map +1 -0
- package/dist/link-preflight.d.ts +78 -0
- package/dist/link-preflight.d.ts.map +1 -0
- package/dist/link-preflight.js +231 -0
- package/dist/link-preflight.js.map +1 -0
- package/dist/local-project-picker.d.ts +34 -0
- package/dist/local-project-picker.d.ts.map +1 -0
- package/dist/local-project-picker.js +121 -0
- package/dist/local-project-picker.js.map +1 -0
- package/dist/logs-interactive.d.ts +37 -0
- package/dist/logs-interactive.d.ts.map +1 -0
- package/dist/logs-interactive.js +110 -0
- package/dist/logs-interactive.js.map +1 -0
- package/dist/output-context.d.ts +13 -0
- package/dist/output-context.d.ts.map +1 -0
- package/dist/output-context.js +46 -0
- package/dist/output-context.js.map +1 -0
- package/dist/project-context.d.ts +55 -0
- package/dist/project-context.d.ts.map +1 -0
- package/dist/project-context.js +115 -0
- package/dist/project-context.js.map +1 -0
- package/dist/project-picker.d.ts +65 -0
- package/dist/project-picker.d.ts.map +1 -0
- package/dist/project-picker.js +227 -0
- package/dist/project-picker.js.map +1 -0
- package/dist/prompt.d.ts +8 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +81 -13
- package/dist/prompt.js.map +1 -1
- package/dist/reporter/human.d.ts +10 -2
- package/dist/reporter/human.d.ts.map +1 -1
- package/dist/reporter/human.js +82 -14
- package/dist/reporter/human.js.map +1 -1
- package/dist/reporter/index.d.ts.map +1 -1
- package/dist/reporter/index.js +7 -5
- package/dist/reporter/index.js.map +1 -1
- package/dist/reporter/json.d.ts +2 -1
- package/dist/reporter/json.d.ts.map +1 -1
- package/dist/reporter/json.js +10 -7
- package/dist/reporter/json.js.map +1 -1
- package/dist/reporter/style.d.ts +19 -0
- package/dist/reporter/style.d.ts.map +1 -1
- package/dist/reporter/style.js +126 -6
- package/dist/reporter/style.js.map +1 -1
- package/dist/reporter/types.d.ts +34 -4
- package/dist/reporter/types.d.ts.map +1 -1
- package/dist/reporter/types.js.map +1 -1
- package/dist/services/account-store.d.ts +3 -1
- package/dist/services/account-store.d.ts.map +1 -1
- package/dist/services/account-store.js +2 -1
- package/dist/services/account-store.js.map +1 -1
- package/dist/services/app-paths.d.ts.map +1 -1
- package/dist/services/app-paths.js +3 -1
- package/dist/services/app-paths.js.map +1 -1
- package/dist/services/cloudflare-auth.d.ts +1 -1
- package/dist/services/cloudflare-auth.d.ts.map +1 -1
- package/dist/services/cloudflare-auth.js +2 -2
- package/dist/services/cloudflare-auth.js.map +1 -1
- package/dist/services/cloudflare-kv.d.ts.map +1 -1
- package/dist/services/cloudflare-kv.js.map +1 -1
- package/dist/services/command-history.d.ts.map +1 -1
- package/dist/services/command-history.js.map +1 -1
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +1 -1
- package/dist/services/config.js.map +1 -1
- package/dist/services/control-plane.d.ts.map +1 -1
- package/dist/services/control-plane.js +3 -3
- package/dist/services/control-plane.js.map +1 -1
- package/dist/services/env-loader.d.ts.map +1 -1
- package/dist/services/env-loader.js +1 -3
- package/dist/services/env-loader.js.map +1 -1
- package/dist/services/http.d.ts.map +1 -1
- package/dist/services/http.js.map +1 -1
- package/dist/services/hubspot-dev-client.d.ts.map +1 -1
- package/dist/services/hubspot-dev-client.js +30 -0
- package/dist/services/hubspot-dev-client.js.map +1 -1
- package/dist/services/live.d.ts +2 -2
- package/dist/services/live.d.ts.map +1 -1
- package/dist/services/live.js +1 -1
- package/dist/services/live.js.map +1 -1
- package/dist/services/machine-id.d.ts.map +1 -1
- package/dist/services/machine-id.js.map +1 -1
- package/dist/services/reporter.d.ts +8 -5
- package/dist/services/reporter.d.ts.map +1 -1
- package/dist/services/reporter.js +6 -4
- package/dist/services/reporter.js.map +1 -1
- package/dist/services/tenant-state.d.ts.map +1 -1
- package/dist/services/tenant-state.js.map +1 -1
- package/dist/state-store.d.ts +4 -0
- package/dist/state-store.d.ts.map +1 -1
- package/dist/state-store.js +15 -0
- package/dist/state-store.js.map +1 -1
- package/dist/status-drilldown.d.ts +24 -0
- package/dist/status-drilldown.d.ts.map +1 -0
- package/dist/status-drilldown.js +50 -0
- package/dist/status-drilldown.js.map +1 -0
- package/dist/tenant-state.d.ts.map +1 -1
- package/dist/tenant-state.js +3 -2
- package/dist/tenant-state.js.map +1 -1
- package/dist/token-key-custody.d.ts +91 -0
- package/dist/token-key-custody.d.ts.map +1 -0
- package/dist/token-key-custody.js +375 -0
- package/dist/token-key-custody.js.map +1 -0
- package/package.json +14 -15
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { writeFileSync } from 'node:fs';
|
|
2
|
+
import { readFile, stat, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { stampMigratedRunServerlessShimOrigin } from '@hs-x/codegen';
|
|
5
|
+
const SHIM_RELATIVE_PATH = join('src', 'app', 'cards', '_hsx-migration-run-serverless.ts');
|
|
6
|
+
const APP_METADATA_RELATIVE_PATH = join('src', 'app', 'app-hsmeta.json');
|
|
7
|
+
const APP_CONFIG_RELATIVE_PATH = 'hsx.config.ts';
|
|
8
|
+
export async function hasMigratedCardServerlessShim(root) {
|
|
9
|
+
return Boolean(await stat(join(root, SHIM_RELATIVE_PATH)).catch(() => undefined));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Temporarily point a generated migration shim and its fetch allow-list at the
|
|
13
|
+
* public hs-x dev tunnel. The HubSpot UI-extension dev server reads these files
|
|
14
|
+
* after this step, so its bundle can call the local card-backend route. Cleanup
|
|
15
|
+
* restores every byte, including a previously deployed workers.dev origin.
|
|
16
|
+
*/
|
|
17
|
+
export async function prepareMigratedCardDevArtifacts(input) {
|
|
18
|
+
const shimPath = join(input.root, SHIM_RELATIVE_PATH);
|
|
19
|
+
if (!(await stat(shimPath).catch(() => undefined)))
|
|
20
|
+
return undefined;
|
|
21
|
+
const paths = [
|
|
22
|
+
shimPath,
|
|
23
|
+
join(input.root, APP_METADATA_RELATIVE_PATH),
|
|
24
|
+
join(input.root, APP_CONFIG_RELATIVE_PATH),
|
|
25
|
+
];
|
|
26
|
+
const originals = new Map();
|
|
27
|
+
for (const path of paths) {
|
|
28
|
+
const contents = await readFile(path, 'utf8').catch(() => undefined);
|
|
29
|
+
if (contents !== undefined)
|
|
30
|
+
originals.set(path, contents);
|
|
31
|
+
}
|
|
32
|
+
const shim = originals.get(shimPath);
|
|
33
|
+
if (shim === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
const previousOrigin = /const RUNTIME_ORIGIN = ["']([^"']+)["'];/.exec(shim)?.[1] ?? 'https://runtime-origin.invalid';
|
|
36
|
+
const runtimeOrigin = input.runtimeOrigin.replace(/\/+$/, '');
|
|
37
|
+
const staged = new Map();
|
|
38
|
+
staged.set(shimPath, stampMigratedRunServerlessShimOrigin(shim, runtimeOrigin));
|
|
39
|
+
const metadataPath = join(input.root, APP_METADATA_RELATIVE_PATH);
|
|
40
|
+
const metadata = originals.get(metadataPath);
|
|
41
|
+
if (metadata !== undefined) {
|
|
42
|
+
staged.set(metadataPath, stampMetadataAllowlist(metadata, previousOrigin, runtimeOrigin));
|
|
43
|
+
}
|
|
44
|
+
const configPath = join(input.root, APP_CONFIG_RELATIVE_PATH);
|
|
45
|
+
const config = originals.get(configPath);
|
|
46
|
+
if (config !== undefined) {
|
|
47
|
+
staged.set(configPath, config.split(previousOrigin).join(runtimeOrigin));
|
|
48
|
+
}
|
|
49
|
+
const written = [];
|
|
50
|
+
try {
|
|
51
|
+
for (const [path, contents] of staged) {
|
|
52
|
+
await writeFile(path, contents);
|
|
53
|
+
written.push(path);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
for (const path of written.reverse()) {
|
|
58
|
+
const original = originals.get(path);
|
|
59
|
+
if (original !== undefined)
|
|
60
|
+
await writeFile(path, original);
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
let restored = false;
|
|
65
|
+
const restoreSync = () => {
|
|
66
|
+
if (restored)
|
|
67
|
+
return;
|
|
68
|
+
restored = true;
|
|
69
|
+
process.removeListener('exit', restoreSync);
|
|
70
|
+
for (const [path, contents] of originals) {
|
|
71
|
+
writeFileSync(path, contents);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
// Signals are best-effort in a process tree: a tunnel child can fail first,
|
|
75
|
+
// or startup can throw before the command installs its long-lived handlers.
|
|
76
|
+
// The synchronous exit hook is the final guard against leaving generated
|
|
77
|
+
// sources pointed at a dead quick-tunnel URL.
|
|
78
|
+
process.once('exit', restoreSync);
|
|
79
|
+
return {
|
|
80
|
+
runtimeOrigin,
|
|
81
|
+
restoreSync,
|
|
82
|
+
async restore() {
|
|
83
|
+
if (restored)
|
|
84
|
+
return;
|
|
85
|
+
restored = true;
|
|
86
|
+
process.removeListener('exit', restoreSync);
|
|
87
|
+
for (const [path, contents] of originals) {
|
|
88
|
+
await writeFile(path, contents);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function stampMetadataAllowlist(source, previousOrigin, runtimeOrigin) {
|
|
94
|
+
try {
|
|
95
|
+
const metadata = JSON.parse(source);
|
|
96
|
+
const config = metadata.config ?? {};
|
|
97
|
+
metadata.config = config;
|
|
98
|
+
const permittedUrls = config.permittedUrls ?? {};
|
|
99
|
+
config.permittedUrls = permittedUrls;
|
|
100
|
+
const current = Array.isArray(permittedUrls.fetch)
|
|
101
|
+
? permittedUrls.fetch.filter((value) => typeof value === 'string')
|
|
102
|
+
: [];
|
|
103
|
+
permittedUrls.fetch = [
|
|
104
|
+
...new Set(current.map((origin) => (origin === previousOrigin ? runtimeOrigin : origin))),
|
|
105
|
+
];
|
|
106
|
+
if (!permittedUrls.fetch.includes(runtimeOrigin))
|
|
107
|
+
permittedUrls.fetch.push(runtimeOrigin);
|
|
108
|
+
return `${JSON.stringify(metadata, null, 2)}\n`;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return source.split(previousOrigin).join(runtimeOrigin);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=migrated-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrated-card.js","sourceRoot":"","sources":["../../src/dev/migrated-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selector grammar + filter engine for the `hs-x dev` output stream, shared by
|
|
3
|
+
* the `--only` flag and the interactive keyboard so the two can never drift.
|
|
4
|
+
*
|
|
5
|
+
* Selectors (each `--only` adds one; lanes union, the rest AND):
|
|
6
|
+
* frontend | backend | request | hubspot lane — show only these surfaces
|
|
7
|
+
* errors level threshold: error rows only
|
|
8
|
+
* warnings level threshold: warn and error rows
|
|
9
|
+
* cap:<text> | <text> substring match on capability/source or message
|
|
10
|
+
*
|
|
11
|
+
* `hs-x dev --only frontend --only backend` shows both lanes;
|
|
12
|
+
* `hs-x dev --only errors --only cap:deal-health` shows deal-health errors.
|
|
13
|
+
*/
|
|
14
|
+
import type { DevEvent, DevLane } from './event-bus.js';
|
|
15
|
+
export declare const DEV_LANES: readonly DevLane[];
|
|
16
|
+
export type DevLevelThreshold = 'all' | 'warn' | 'error';
|
|
17
|
+
export interface DevStreamFilter {
|
|
18
|
+
/** Lanes to show; undefined means every lane. */
|
|
19
|
+
readonly lanes: ReadonlySet<DevLane> | undefined;
|
|
20
|
+
/** Minimum level a row must reach to show. */
|
|
21
|
+
readonly level: DevLevelThreshold;
|
|
22
|
+
/** Case-insensitive substrings; a row must match at least one when present. */
|
|
23
|
+
readonly texts: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
export declare const EMPTY_FILTER: DevStreamFilter;
|
|
26
|
+
export declare function isEmptyFilter(filter: DevStreamFilter): boolean;
|
|
27
|
+
export type ParseOnlyResult = {
|
|
28
|
+
readonly ok: true;
|
|
29
|
+
readonly filter: DevStreamFilter;
|
|
30
|
+
} | {
|
|
31
|
+
readonly ok: false;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function parseOnlySelectors(values: readonly string[]): ParseOnlyResult;
|
|
35
|
+
export declare function matchesFilter(filter: DevStreamFilter, event: DevEvent): boolean;
|
|
36
|
+
/** Human summary for the status line: `frontend · errors · “deal-health”`. */
|
|
37
|
+
export declare function describeFilter(filter: DevStreamFilter): string;
|
|
38
|
+
/** Cycle for the `f` key: all → frontend → backend → request → hubspot → all. */
|
|
39
|
+
export declare function cycleLane(filter: DevStreamFilter): DevStreamFilter;
|
|
40
|
+
//# sourceMappingURL=stream-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-filter.d.ts","sourceRoot":"","sources":["../../src/dev/stream-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAY,MAAM,gBAAgB,CAAC;AAElE,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAAkD,CAAC;AAE3F,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACjD,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,YAAY,EAAE,eAA+D,CAAC;AAE3F,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE9D;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CAsC7E;AAKD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAQ/E;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAQ9D;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAKlE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selector grammar + filter engine for the `hs-x dev` output stream, shared by
|
|
3
|
+
* the `--only` flag and the interactive keyboard so the two can never drift.
|
|
4
|
+
*
|
|
5
|
+
* Selectors (each `--only` adds one; lanes union, the rest AND):
|
|
6
|
+
* frontend | backend | request | hubspot lane — show only these surfaces
|
|
7
|
+
* errors level threshold: error rows only
|
|
8
|
+
* warnings level threshold: warn and error rows
|
|
9
|
+
* cap:<text> | <text> substring match on capability/source or message
|
|
10
|
+
*
|
|
11
|
+
* `hs-x dev --only frontend --only backend` shows both lanes;
|
|
12
|
+
* `hs-x dev --only errors --only cap:deal-health` shows deal-health errors.
|
|
13
|
+
*/
|
|
14
|
+
export const DEV_LANES = ['frontend', 'backend', 'request', 'hubspot'];
|
|
15
|
+
export const EMPTY_FILTER = { lanes: undefined, level: 'all', texts: [] };
|
|
16
|
+
export function isEmptyFilter(filter) {
|
|
17
|
+
return filter.lanes === undefined && filter.level === 'all' && filter.texts.length === 0;
|
|
18
|
+
}
|
|
19
|
+
export function parseOnlySelectors(values) {
|
|
20
|
+
const lanes = new Set();
|
|
21
|
+
let level = 'all';
|
|
22
|
+
const texts = [];
|
|
23
|
+
for (const raw of values) {
|
|
24
|
+
const value = raw.trim();
|
|
25
|
+
if (value === '') {
|
|
26
|
+
return { ok: false, message: 'Empty --only selector.' };
|
|
27
|
+
}
|
|
28
|
+
const lower = value.toLowerCase();
|
|
29
|
+
if (DEV_LANES.includes(lower)) {
|
|
30
|
+
lanes.add(lower);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (lower === 'errors' || lower === 'error') {
|
|
34
|
+
level = 'error';
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (lower === 'warnings' || lower === 'warning' || lower === 'warn') {
|
|
38
|
+
if (level !== 'error')
|
|
39
|
+
level = 'warn';
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (lower.startsWith('cap:')) {
|
|
43
|
+
const text = value.slice('cap:'.length).trim();
|
|
44
|
+
if (text === '') {
|
|
45
|
+
return { ok: false, message: 'Empty capability in `--only cap:<id>`.' };
|
|
46
|
+
}
|
|
47
|
+
texts.push(text);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
texts.push(value);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
ok: true,
|
|
54
|
+
filter: { lanes: lanes.size > 0 ? lanes : undefined, level, texts },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const LEVEL_RANK = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
58
|
+
const THRESHOLD_RANK = { all: 0, warn: 2, error: 3 };
|
|
59
|
+
export function matchesFilter(filter, event) {
|
|
60
|
+
if (filter.lanes && !filter.lanes.has(event.lane))
|
|
61
|
+
return false;
|
|
62
|
+
if (LEVEL_RANK[event.level] < THRESHOLD_RANK[filter.level])
|
|
63
|
+
return false;
|
|
64
|
+
if (filter.texts.length > 0) {
|
|
65
|
+
const haystack = `${event.source ?? ''}\n${event.msg}`.toLowerCase();
|
|
66
|
+
if (!filter.texts.some((text) => haystack.includes(text.toLowerCase())))
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
/** Human summary for the status line: `frontend · errors · “deal-health”`. */
|
|
72
|
+
export function describeFilter(filter) {
|
|
73
|
+
if (isEmptyFilter(filter))
|
|
74
|
+
return 'all';
|
|
75
|
+
const parts = [];
|
|
76
|
+
if (filter.lanes)
|
|
77
|
+
parts.push([...filter.lanes].join('+'));
|
|
78
|
+
if (filter.level === 'error')
|
|
79
|
+
parts.push('errors');
|
|
80
|
+
if (filter.level === 'warn')
|
|
81
|
+
parts.push('warnings');
|
|
82
|
+
if (filter.texts.length > 0)
|
|
83
|
+
parts.push(filter.texts.map((t) => `“${t}”`).join(' '));
|
|
84
|
+
return parts.join(' · ');
|
|
85
|
+
}
|
|
86
|
+
/** Cycle for the `f` key: all → frontend → backend → request → hubspot → all. */
|
|
87
|
+
export function cycleLane(filter) {
|
|
88
|
+
const current = filter.lanes && filter.lanes.size === 1 ? [...filter.lanes][0] : undefined;
|
|
89
|
+
const index = current === undefined ? -1 : DEV_LANES.indexOf(current);
|
|
90
|
+
const next = index + 1 >= DEV_LANES.length ? undefined : DEV_LANES[index + 1];
|
|
91
|
+
return { ...filter, lanes: next === undefined ? undefined : new Set([next]) };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=stream-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-filter.js","sourceRoot":"","sources":["../../src/dev/stream-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,15 +7,49 @@
|
|
|
7
7
|
*
|
|
8
8
|
* The lane prefix tells the developer which surface emitted the line; the
|
|
9
9
|
* level color matches conventions used elsewhere in the reporter.
|
|
10
|
+
*
|
|
11
|
+
* On a TTY the renderer also owns a status line pinned under the stream —
|
|
12
|
+
* active filter, hidden-row count, and key hints — and exposes a control
|
|
13
|
+
* surface (`setFilter` / `pause` / `setPrompt`) that the keyboard controller
|
|
14
|
+
* in keyboard.ts drives. Non-TTY output is untouched: no status line, no
|
|
15
|
+
* escape codes, every event printed.
|
|
10
16
|
*/
|
|
11
17
|
import type { DevEventBus } from './event-bus.js';
|
|
18
|
+
import { type DevStreamFilter } from './stream-filter.js';
|
|
12
19
|
export interface DevStreamRendererOptions {
|
|
13
20
|
readonly bus: DevEventBus;
|
|
14
21
|
readonly stderr?: NodeJS.WritableStream;
|
|
15
22
|
readonly env?: NodeJS.ProcessEnv;
|
|
16
23
|
readonly isTTY?: boolean;
|
|
24
|
+
/** Initial filter, from `--only` selectors. */
|
|
25
|
+
readonly filter?: DevStreamFilter;
|
|
26
|
+
/**
|
|
27
|
+
* Hold the pinned status line until `ready()` is called, so it cannot
|
|
28
|
+
* interleave with startup output the caller is still printing.
|
|
29
|
+
*/
|
|
30
|
+
readonly deferStatus?: boolean;
|
|
17
31
|
}
|
|
18
32
|
export interface DevStreamRenderer {
|
|
33
|
+
/** Enable the status line (no-op unless constructed with deferStatus). */
|
|
34
|
+
ready(): void;
|
|
35
|
+
/** Whether this session renders the pinned status line (TTY + color). */
|
|
36
|
+
hasStatusLine(): boolean;
|
|
37
|
+
getFilter(): DevStreamFilter;
|
|
38
|
+
setFilter(filter: DevStreamFilter): void;
|
|
39
|
+
/** Restore the launch filter (the `--only` selectors, or empty). */
|
|
40
|
+
resetFilter(): void;
|
|
41
|
+
/** Pause buffers matching events; resume flushes them in order. */
|
|
42
|
+
setPaused(paused: boolean): void;
|
|
43
|
+
isPaused(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Replace the status line with an input prompt (the `/` search box) or
|
|
46
|
+
* restore the default status line when undefined.
|
|
47
|
+
*/
|
|
48
|
+
setPrompt(prompt: string | undefined): void;
|
|
49
|
+
/** Rows suppressed by the active filter since it was last changed. */
|
|
50
|
+
hiddenCount(): number;
|
|
51
|
+
/** Print lines above the status line (help text, announcements). */
|
|
52
|
+
announce(text: string): void;
|
|
19
53
|
stop(): void;
|
|
20
54
|
}
|
|
21
55
|
export declare function startDevStreamRenderer(opts: DevStreamRendererOptions): DevStreamRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-renderer.d.ts","sourceRoot":"","sources":["../../src/dev/stream-renderer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stream-renderer.d.ts","sourceRoot":"","sources":["../../src/dev/stream-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,KAAK,EAAY,WAAW,EAAY,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,KAAK,IAAI,IAAI,CAAC;IACd,yEAAyE;IACzE,aAAa,IAAI,OAAO,CAAC;IACzB,SAAS,IAAI,eAAe,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,oEAAoE;IACpE,WAAW,IAAI,IAAI,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,IAAI,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,sEAAsE;IACtE,WAAW,IAAI,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAWD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,wBAAwB,GAAG,iBAAiB,CA0MxF"}
|
|
@@ -7,31 +7,243 @@
|
|
|
7
7
|
*
|
|
8
8
|
* The lane prefix tells the developer which surface emitted the line; the
|
|
9
9
|
* level color matches conventions used elsewhere in the reporter.
|
|
10
|
+
*
|
|
11
|
+
* On a TTY the renderer also owns a status line pinned under the stream —
|
|
12
|
+
* active filter, hidden-row count, and key hints — and exposes a control
|
|
13
|
+
* surface (`setFilter` / `pause` / `setPrompt`) that the keyboard controller
|
|
14
|
+
* in keyboard.ts drives. Non-TTY output is untouched: no status line, no
|
|
15
|
+
* escape codes, every event printed.
|
|
10
16
|
*/
|
|
11
|
-
import { detectColor, detectUnicode, makeStyle } from '../reporter/style.js';
|
|
17
|
+
import { detectColor, detectUnicode, makeStyle, symbolsFor, wrapVisible, } from '../reporter/style.js';
|
|
18
|
+
import { EMPTY_FILTER, describeFilter, isEmptyFilter, matchesFilter, } from './stream-filter.js';
|
|
12
19
|
const LANE_LABEL = {
|
|
13
20
|
frontend: 'frontend',
|
|
14
21
|
backend: 'backend ',
|
|
15
22
|
request: 'request ',
|
|
23
|
+
hubspot: 'hubspot ',
|
|
16
24
|
};
|
|
25
|
+
const ERASE_LINE = '\r\x1b[2K';
|
|
17
26
|
export function startDevStreamRenderer(opts) {
|
|
18
27
|
const stderr = opts.stderr ?? process.stderr;
|
|
19
28
|
const env = opts.env ?? process.env;
|
|
20
29
|
const isTTY = opts.isTTY ?? Boolean(stderr.isTTY);
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
const color = detectColor(env, isTTY);
|
|
31
|
+
const style = makeStyle(color, detectUnicode(env));
|
|
32
|
+
const sym = symbolsFor(style.unicode);
|
|
33
|
+
// The status line only works where we can erase it; tie it to color support
|
|
34
|
+
// so CI/piped output (NO_COLOR, non-TTY) stays plain append-only text.
|
|
35
|
+
const statusEnabled = isTTY && color;
|
|
36
|
+
const initialFilter = opts.filter ?? EMPTY_FILTER;
|
|
37
|
+
let filter = initialFilter;
|
|
38
|
+
let statusHeld = opts.deferStatus === true;
|
|
39
|
+
let paused = false;
|
|
40
|
+
let hidden = 0;
|
|
41
|
+
let prompt;
|
|
42
|
+
let statusShown = false;
|
|
43
|
+
let lastStatusWidth = 0;
|
|
44
|
+
const pauseBuffer = [];
|
|
45
|
+
const startupBuffer = [];
|
|
46
|
+
const eraseStatus = () => {
|
|
47
|
+
if (statusShown) {
|
|
48
|
+
stderr.write(ERASE_LINE);
|
|
49
|
+
statusShown = false;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const columns = () => {
|
|
53
|
+
const cols = stderr.columns;
|
|
54
|
+
return typeof cols === 'number' && cols > 0 ? cols : 80;
|
|
55
|
+
};
|
|
56
|
+
// Compose from plain segments and paint at the end, so the line can be
|
|
57
|
+
// fitted to the terminal width without ever cutting through an ANSI code —
|
|
58
|
+
// a wrapped status line is unerasable and smears on every redraw.
|
|
59
|
+
const statusText = () => {
|
|
60
|
+
const width = columns() - 1;
|
|
61
|
+
if (prompt !== undefined) {
|
|
62
|
+
const line = ` ${prompt}`;
|
|
63
|
+
lastStatusWidth = Math.min(line.length, width);
|
|
64
|
+
return line.length > width ? line.slice(0, Math.max(0, width)) : line;
|
|
65
|
+
}
|
|
66
|
+
const scope = describeFilter(filter);
|
|
67
|
+
const segments = [
|
|
68
|
+
{
|
|
69
|
+
text: `filter: ${scope}`,
|
|
70
|
+
painted: `${style.dim('filter:')} ${isEmptyFilter(filter) ? style.dim(scope) : style.orange(scope)}`,
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
if (hidden > 0) {
|
|
74
|
+
segments.push({ text: `${hidden} hidden`, painted: style.dim(`${hidden} hidden`) });
|
|
75
|
+
}
|
|
76
|
+
if (paused) {
|
|
77
|
+
const text = `paused ${pauseBuffer.length} buffered`;
|
|
78
|
+
segments.push({ text, painted: style.yellow(text) });
|
|
79
|
+
}
|
|
80
|
+
const prefixWidth = 4; // " │ "
|
|
81
|
+
const sepWidth = 3; // " · "
|
|
82
|
+
const kept = [];
|
|
83
|
+
let used = prefixWidth;
|
|
84
|
+
for (const segment of segments) {
|
|
85
|
+
const cost = (kept.length > 0 ? sepWidth : 0) + segment.text.length;
|
|
86
|
+
if (used + cost > width && kept.length > 0)
|
|
87
|
+
break;
|
|
88
|
+
kept.push(segment);
|
|
89
|
+
used += cost;
|
|
90
|
+
}
|
|
91
|
+
// Key hints degrade by tier instead of vanishing: narrow windows still
|
|
92
|
+
// get at least "[?] help", which opens the full key map.
|
|
93
|
+
const hintTiers = [
|
|
94
|
+
'[f] lane [e] errors [/] search [c] reset [p] pause [?] help [q] quit',
|
|
95
|
+
'[f] [e] [/] [c] [p] [q] · [?] help',
|
|
96
|
+
'[?] help',
|
|
97
|
+
];
|
|
98
|
+
for (const hints of hintTiers) {
|
|
99
|
+
const cost = sepWidth + hints.length;
|
|
100
|
+
if (used + cost <= width) {
|
|
101
|
+
kept.push({ text: hints, painted: style.dim(hints) });
|
|
102
|
+
used += cost;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const first = kept[0];
|
|
107
|
+
if (first && used > width) {
|
|
108
|
+
const room = Math.max(0, width - prefixWidth);
|
|
109
|
+
const cut = first.text.slice(0, room);
|
|
110
|
+
kept[0] = { text: cut, painted: style.dim(cut) };
|
|
111
|
+
used = prefixWidth + cut.length;
|
|
112
|
+
}
|
|
113
|
+
lastStatusWidth = used;
|
|
114
|
+
return ` ${style.orange(sym.rail)} ${kept.map((segment) => segment.painted).join(style.dim(` ${sym.bullet} `))}`;
|
|
115
|
+
};
|
|
116
|
+
const drawStatus = () => {
|
|
117
|
+
if (!statusEnabled || statusHeld)
|
|
118
|
+
return;
|
|
119
|
+
eraseStatus();
|
|
120
|
+
stderr.write(statusText());
|
|
121
|
+
statusShown = true;
|
|
122
|
+
};
|
|
123
|
+
// Redraw on terminal resize. If the window shrank below the drawn width the
|
|
124
|
+
// old line has wrapped: clear the wrapped remnant above before redrawing,
|
|
125
|
+
// otherwise fragments accumulate and the stream turns to mud.
|
|
126
|
+
const onResize = () => {
|
|
127
|
+
if (!statusEnabled)
|
|
128
|
+
return;
|
|
129
|
+
if (statusShown) {
|
|
130
|
+
stderr.write(ERASE_LINE);
|
|
131
|
+
if (columns() < lastStatusWidth)
|
|
132
|
+
stderr.write('\x1b[1A\x1b[2K\r');
|
|
133
|
+
statusShown = false;
|
|
134
|
+
}
|
|
135
|
+
drawStatus();
|
|
136
|
+
};
|
|
137
|
+
if (statusEnabled && typeof stderr.on === 'function') {
|
|
138
|
+
stderr.on('resize', onResize);
|
|
139
|
+
}
|
|
140
|
+
const writeEvent = (event) => {
|
|
141
|
+
eraseStatus();
|
|
142
|
+
// Soft-wrap long stream lines (stack traces, URLs, big field blobs) with
|
|
143
|
+
// a hanging indent so narrow terminals don't hard-wrap them at column 0.
|
|
144
|
+
// Messages may span lines (request detail rows) — wrap each separately.
|
|
145
|
+
const line = formatLine(event, style);
|
|
146
|
+
const wrapped = statusEnabled
|
|
147
|
+
? line
|
|
148
|
+
.split('\n')
|
|
149
|
+
.map((part) => wrapVisible(part, columns() - 1, ' '))
|
|
150
|
+
.join('\n')
|
|
151
|
+
: line;
|
|
152
|
+
stderr.write(`${wrapped}\n`);
|
|
153
|
+
drawStatus();
|
|
154
|
+
};
|
|
155
|
+
const onEvent = (event) => {
|
|
156
|
+
if (statusHeld) {
|
|
157
|
+
startupBuffer.push(event);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (!matchesFilter(filter, event)) {
|
|
161
|
+
hidden += 1;
|
|
162
|
+
if (statusEnabled)
|
|
163
|
+
drawStatus();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (paused) {
|
|
167
|
+
pauseBuffer.push(event);
|
|
168
|
+
if (statusEnabled)
|
|
169
|
+
drawStatus();
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
writeEvent(event);
|
|
173
|
+
};
|
|
174
|
+
const unsubscribe = opts.bus.subscribe(onEvent);
|
|
175
|
+
if (statusEnabled)
|
|
176
|
+
drawStatus();
|
|
25
177
|
return {
|
|
26
|
-
|
|
178
|
+
ready() {
|
|
179
|
+
if (!statusHeld)
|
|
180
|
+
return;
|
|
181
|
+
statusHeld = false;
|
|
182
|
+
const buffered = startupBuffer.splice(0, startupBuffer.length);
|
|
183
|
+
for (const event of buffered)
|
|
184
|
+
onEvent(event);
|
|
185
|
+
drawStatus();
|
|
186
|
+
},
|
|
187
|
+
hasStatusLine: () => statusEnabled,
|
|
188
|
+
getFilter: () => filter,
|
|
189
|
+
setFilter(next) {
|
|
190
|
+
filter = next;
|
|
191
|
+
hidden = 0;
|
|
192
|
+
drawStatus();
|
|
193
|
+
},
|
|
194
|
+
resetFilter() {
|
|
195
|
+
filter = initialFilter;
|
|
196
|
+
hidden = 0;
|
|
197
|
+
drawStatus();
|
|
198
|
+
},
|
|
199
|
+
setPaused(next) {
|
|
200
|
+
if (paused === next)
|
|
201
|
+
return;
|
|
202
|
+
paused = next;
|
|
203
|
+
if (!paused) {
|
|
204
|
+
const buffered = pauseBuffer.splice(0, pauseBuffer.length);
|
|
205
|
+
for (const event of buffered)
|
|
206
|
+
writeEvent(event);
|
|
207
|
+
}
|
|
208
|
+
drawStatus();
|
|
209
|
+
},
|
|
210
|
+
isPaused: () => paused,
|
|
211
|
+
setPrompt(next) {
|
|
212
|
+
prompt = next;
|
|
213
|
+
drawStatus();
|
|
214
|
+
},
|
|
215
|
+
hiddenCount: () => hidden,
|
|
216
|
+
announce(text) {
|
|
217
|
+
eraseStatus();
|
|
218
|
+
stderr.write(`${text}\n`);
|
|
219
|
+
drawStatus();
|
|
220
|
+
},
|
|
221
|
+
stop() {
|
|
222
|
+
unsubscribe();
|
|
223
|
+
if (statusEnabled && typeof stderr.off === 'function') {
|
|
224
|
+
stderr.off('resize', onResize);
|
|
225
|
+
}
|
|
226
|
+
eraseStatus();
|
|
227
|
+
},
|
|
27
228
|
};
|
|
28
229
|
}
|
|
29
230
|
function formatLine(event, style) {
|
|
30
231
|
const ts = style.dim(formatTimestamp(event.ts));
|
|
31
232
|
const lane = paintLane(event.lane, style);
|
|
32
233
|
const level = paintLevel(event.level, style);
|
|
33
|
-
const source = event.source ? `${style.
|
|
34
|
-
|
|
234
|
+
const source = event.source ? `${style.cyan(event.source)} ` : '';
|
|
235
|
+
const fields = formatFields(event.fields);
|
|
236
|
+
return ` ${ts} ${lane} ${level} ${source}${event.msg}${fields ? ` ${style.dim(fields)}` : ''}`;
|
|
237
|
+
}
|
|
238
|
+
function formatFields(fields) {
|
|
239
|
+
if (!fields || Object.keys(fields).length === 0)
|
|
240
|
+
return undefined;
|
|
241
|
+
try {
|
|
242
|
+
return JSON.stringify(fields);
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return '[unserializable fields]';
|
|
246
|
+
}
|
|
35
247
|
}
|
|
36
248
|
function formatTimestamp(ts) {
|
|
37
249
|
const d = new Date(ts);
|
|
@@ -47,6 +259,8 @@ function paintLane(lane, style) {
|
|
|
47
259
|
return style.orange(label);
|
|
48
260
|
if (lane === 'backend')
|
|
49
261
|
return style.green(label);
|
|
262
|
+
if (lane === 'hubspot')
|
|
263
|
+
return style.yellow(label);
|
|
50
264
|
return style.dim(label);
|
|
51
265
|
}
|
|
52
266
|
function paintLevel(level, style) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-renderer.js","sourceRoot":"","sources":["../../src/dev/stream-renderer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stream-renderer.js","sourceRoot":"","sources":["../../src/dev/stream-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-registry.d.ts","sourceRoot":"","sources":["../src/errors-registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,UAAU,
|
|
1
|
+
{"version":3,"file":"errors-registry.d.ts","sourceRoot":"","sources":["../src/errors-registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,UAAU,EAsgC/C,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D"}
|