create-rezi 0.1.0-alpha.22 → 0.1.0-alpha.24
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/README.md +16 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scaffold.d.ts +1 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +15 -0
- package/dist/scaffold.js.map +1 -1
- package/package.json +2 -2
- package/templates/cli-tool/README.md +27 -15
- package/templates/cli-tool/package.json +2 -1
- package/templates/cli-tool/src/__tests__/keybindings.test.ts +12 -0
- package/templates/cli-tool/src/__tests__/reducer.test.ts +18 -0
- package/templates/cli-tool/src/__tests__/render.test.ts +13 -0
- package/templates/cli-tool/src/helpers/keybindings.ts +28 -0
- package/templates/cli-tool/src/helpers/logs.ts +51 -0
- package/templates/cli-tool/src/helpers/state.ts +98 -0
- package/templates/cli-tool/src/main.ts +100 -985
- package/templates/cli-tool/src/screens/home.ts +52 -0
- package/templates/cli-tool/src/screens/index.ts +45 -0
- package/templates/cli-tool/src/screens/logs.ts +75 -0
- package/templates/cli-tool/src/screens/settings.ts +97 -0
- package/templates/cli-tool/src/screens/shell.ts +80 -0
- package/templates/cli-tool/src/theme.ts +48 -0
- package/templates/cli-tool/src/types.ts +31 -0
- package/templates/dashboard/README.md +33 -31
- package/templates/dashboard/package.json +4 -3
- package/templates/dashboard/src/__tests__/keybindings.test.ts +12 -0
- package/templates/dashboard/src/__tests__/reducer.test.ts +19 -0
- package/templates/dashboard/src/__tests__/render.test.ts +21 -0
- package/templates/dashboard/src/helpers/formatters.ts +53 -0
- package/templates/dashboard/src/helpers/keybindings.ts +27 -0
- package/templates/dashboard/src/helpers/state.ts +204 -0
- package/templates/dashboard/src/main.ts +113 -1689
- package/templates/dashboard/src/screens/overview.ts +171 -0
- package/templates/dashboard/src/theme.ts +51 -0
- package/templates/dashboard/src/types.ts +36 -0
- package/templates/minimal/README.md +40 -0
- package/templates/minimal/package.json +25 -0
- package/templates/minimal/src/__tests__/keybindings.test.ts +12 -0
- package/templates/minimal/src/__tests__/reducer.test.ts +20 -0
- package/templates/minimal/src/__tests__/render.test.ts +24 -0
- package/templates/minimal/src/helpers/keybindings.ts +23 -0
- package/templates/minimal/src/helpers/state.ts +20 -0
- package/templates/minimal/src/main.ts +126 -0
- package/templates/minimal/src/screens/main-screen.ts +81 -0
- package/templates/minimal/src/theme.ts +31 -0
- package/templates/minimal/src/types.ts +15 -0
- package/templates/minimal/tsconfig.json +14 -0
- package/templates/stress-test/README.md +16 -0
- package/templates/stress-test/package.json +4 -3
- package/templates/stress-test/src/__tests__/keybindings.test.ts +11 -0
- package/templates/stress-test/src/__tests__/reducer.test.ts +11 -0
- package/templates/stress-test/src/__tests__/render.test.ts +11 -0
- package/templates/stress-test/src/helpers/test-examples.ts +49 -0
- package/templates/stress-test/src/main.ts +63 -42
package/README.md
CHANGED
|
@@ -23,13 +23,16 @@ Currently available templates:
|
|
|
23
23
|
- Alias: `dash`
|
|
24
24
|
- `stress-test` - Visual benchmark matrix starter
|
|
25
25
|
- Aliases: `stress`, `chaos`, `bench`
|
|
26
|
-
- `cli-tool` - Multi-screen CLI workflow starter with
|
|
26
|
+
- `cli-tool` - Multi-screen CLI workflow starter with route-based screens
|
|
27
27
|
- Aliases: `cli`, `tool`, `multiscreen`
|
|
28
|
+
- `minimal` - Single-screen utility starter for small tools
|
|
29
|
+
- Aliases: `mini`, `basic`, `utility`
|
|
28
30
|
|
|
29
31
|
```bash
|
|
30
32
|
npm create rezi my-app -- --template dashboard
|
|
31
33
|
npm create rezi my-app -- --template stress-test
|
|
32
34
|
npm create rezi my-app -- --template cli-tool
|
|
35
|
+
npm create rezi my-app -- --template minimal
|
|
33
36
|
```
|
|
34
37
|
|
|
35
38
|
List templates and highlights from the CLI:
|
|
@@ -40,11 +43,22 @@ npm create rezi -- --list-templates
|
|
|
40
43
|
|
|
41
44
|
## Options
|
|
42
45
|
|
|
43
|
-
- `--template, -t <name>`: Select a template (`dashboard`, `stress-test`,
|
|
46
|
+
- `--template, -t <name>`: Select a template (`dashboard`, `stress-test`, `cli-tool`, `minimal`, plus aliases).
|
|
44
47
|
- `--no-install, --skip-install`: Skip dependency installation.
|
|
45
48
|
- `--pm, --package-manager <npm|pnpm|yarn|bun>`: Choose a package manager.
|
|
46
49
|
- `--list-templates, --templates`: Print available templates and highlights.
|
|
47
50
|
- `--help, -h`: Show help.
|
|
48
51
|
|
|
52
|
+
## Template Conventions
|
|
53
|
+
|
|
54
|
+
Scaffolded templates now follow the same baseline structure:
|
|
55
|
+
|
|
56
|
+
- `src/types.ts`
|
|
57
|
+
- `src/theme.ts`
|
|
58
|
+
- `src/helpers/`
|
|
59
|
+
- `src/screens/`
|
|
60
|
+
- `src/main.ts`
|
|
61
|
+
- `src/__tests__/`
|
|
62
|
+
|
|
49
63
|
For template descriptions and highlights, see:
|
|
50
64
|
https://rtlzeromemory.github.io/Rezi/getting-started/create-rezi/
|
package/dist/index.js
CHANGED
|
@@ -66,7 +66,7 @@ function printHelp() {
|
|
|
66
66
|
stdout.write(" npm create rezi my-app\n");
|
|
67
67
|
stdout.write(" bun create rezi my-app\n\n");
|
|
68
68
|
stdout.write("Options:\n");
|
|
69
|
-
stdout.write(" --template, -t <name> dashboard | stress-test | cli-tool\n");
|
|
69
|
+
stdout.write(" --template, -t <name> dashboard | stress-test | cli-tool | minimal\n");
|
|
70
70
|
stdout.write(" --no-install Skip dependency install\n");
|
|
71
71
|
stdout.write(" --pm <npm|pnpm|yarn|bun> Choose a package manager\n");
|
|
72
72
|
stdout.write(" --list-templates Show templates and highlights\n");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold.d.ts
CHANGED
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAAS,kBAAkB,EAkDpD,CAAC;AAoBX,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAQvE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/D;AA+BD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyB/F"}
|
package/dist/scaffold.js
CHANGED
|
@@ -38,6 +38,18 @@ export const TEMPLATE_DEFINITIONS = [
|
|
|
38
38
|
],
|
|
39
39
|
dir: "cli-tool",
|
|
40
40
|
},
|
|
41
|
+
{
|
|
42
|
+
key: "minimal",
|
|
43
|
+
label: "Minimal Utility TUI",
|
|
44
|
+
description: "Single-screen starter for focused tools with essential patterns only",
|
|
45
|
+
safetyTag: "safe-default",
|
|
46
|
+
safetyNote: "Small footprint template intended for quick utility workflows.",
|
|
47
|
+
highlights: [
|
|
48
|
+
"single-screen state flow with keybindings, theme cycling, and inline error handling",
|
|
49
|
+
"lean multi-file structure plus reducer/render/keybinding test examples",
|
|
50
|
+
],
|
|
51
|
+
dir: "minimal",
|
|
52
|
+
},
|
|
41
53
|
];
|
|
42
54
|
const TEMPLATE_BY_KEY = new Map(TEMPLATE_DEFINITIONS.map((template) => [template.key, template]));
|
|
43
55
|
const TEMPLATE_ALIASES = new Map(TEMPLATE_DEFINITIONS.map((template) => [template.key, template.key]));
|
|
@@ -48,6 +60,9 @@ TEMPLATE_ALIASES.set("bench", "stress-test");
|
|
|
48
60
|
TEMPLATE_ALIASES.set("cli", "cli-tool");
|
|
49
61
|
TEMPLATE_ALIASES.set("tool", "cli-tool");
|
|
50
62
|
TEMPLATE_ALIASES.set("multiscreen", "cli-tool");
|
|
63
|
+
TEMPLATE_ALIASES.set("mini", "minimal");
|
|
64
|
+
TEMPLATE_ALIASES.set("basic", "minimal");
|
|
65
|
+
TEMPLATE_ALIASES.set("utility", "minimal");
|
|
51
66
|
const PACKAGE_NAME_RE = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
|
|
52
67
|
export function normalizeTemplateName(value) {
|
|
53
68
|
const cleaned = value.trim().toLowerCase();
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAczC,MAAM,CAAC,MAAM,oBAAoB,GAAkC;IACjE;QACE,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,6DAA6D;QAC1E,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,wDAAwD;QACpE,UAAU,EAAE;YACV,gDAAgD;YAChD,gDAAgD;SACjD;QACD,GAAG,EAAE,WAAW;KACjB;IACD;QACE,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,qFAAqF;QACvF,SAAS,EAAE,aAAa;QACxB,UAAU,EAAE,kEAAkE;QAC9E,UAAU,EAAE;YACV,mFAAmF;YACnF,6EAA6E;SAC9E;QACD,GAAG,EAAE,aAAa;KACnB;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,8DAA8D;QAC3E,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,gEAAgE;QAC5E,UAAU,EAAE;YACV,6EAA6E;YAC7E,+EAA+E;SAChF;QACD,GAAG,EAAE,UAAU;KAChB;CACO,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClG,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CACrE,CAAC;AAEF,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1C,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9C,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7C,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7C,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACxC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACzC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-rezi",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.24",
|
|
4
4
|
"description": "Scaffold a Rezi terminal UI app.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://rtlzeromemory.github.io/Rezi/",
|
|
@@ -28,6 +28,6 @@
|
|
|
28
28
|
"bun": ">=1.3.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@rezi-ui/testkit": "0.1.0-alpha.
|
|
31
|
+
"@rezi-ui/testkit": "0.1.0-alpha.24"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -4,30 +4,42 @@ Scaffolded with `create-rezi` using the **__TEMPLATE_LABEL__** template.
|
|
|
4
4
|
|
|
5
5
|
## What This Template Demonstrates
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
- A parameterized detail route (`detail` with `id` param) for drill-down flows.
|
|
7
|
+
- Multi-screen CLI workflow powered by first-party `createApp({ routes })` routing.
|
|
8
|
+
- Multi-file structure for maintainability (`types`, `theme`, `helpers`, `screens`, `main`).
|
|
9
|
+
- Streamed logs + settings forms + global route keybindings.
|
|
10
|
+
- Route shell pattern you can extend for additional screens.
|
|
12
11
|
|
|
13
12
|
## Screens
|
|
14
13
|
|
|
15
|
-
- `home`:
|
|
16
|
-
- `logs`:
|
|
17
|
-
- `settings`:
|
|
18
|
-
|
|
14
|
+
- `home`: status overview + quick actions.
|
|
15
|
+
- `logs`: streaming console and recent entry list.
|
|
16
|
+
- `settings`: environment/theme/operator controls.
|
|
17
|
+
|
|
18
|
+
## File Layout
|
|
19
|
+
|
|
20
|
+
- `src/types.ts`: route/state/action contracts.
|
|
21
|
+
- `src/theme.ts`: theme catalog and template identity constants.
|
|
22
|
+
- `src/helpers/`: log helpers, reducer, and keybinding resolver.
|
|
23
|
+
- `src/screens/`: one file per route + shared shell wrapper.
|
|
24
|
+
- `src/main.ts`: route wiring, runtime loop, keybindings, and shutdown.
|
|
25
|
+
- `src/__tests__/`: reducer, render, and keybinding examples.
|
|
19
26
|
|
|
20
27
|
## Controls
|
|
21
28
|
|
|
22
|
-
- `ctrl+1`: Home
|
|
23
|
-
- `ctrl+2`: Logs
|
|
24
|
-
- `ctrl+3`: Settings
|
|
29
|
+
- `f1` / `alt+1` / `ctrl+1`: Home
|
|
30
|
+
- `f2` / `alt+2` / `ctrl+2`: Logs
|
|
31
|
+
- `f3` / `alt+3` / `ctrl+3`: Settings
|
|
32
|
+
- `p`: Pause/resume stream
|
|
33
|
+
- `h` or `?`: Toggle help modal
|
|
25
34
|
- `q` or `ctrl+c`: Quit
|
|
26
35
|
|
|
27
|
-
|
|
36
|
+
## Testing
|
|
28
37
|
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
```bash
|
|
39
|
+
npm run test
|
|
40
|
+
# or
|
|
41
|
+
bun run test
|
|
42
|
+
```
|
|
31
43
|
|
|
32
44
|
## Quickstart
|
|
33
45
|
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
"start": "tsx src/main.ts",
|
|
8
8
|
"dev": "tsx watch src/main.ts",
|
|
9
9
|
"build": "tsc --pretty false",
|
|
10
|
-
"typecheck": "tsc --noEmit"
|
|
10
|
+
"typecheck": "tsc --noEmit",
|
|
11
|
+
"test": "tsx --test src/__tests__"
|
|
11
12
|
},
|
|
12
13
|
"dependencies": {
|
|
13
14
|
"@rezi-ui/core": "^0.1.0-alpha.17",
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { resolveCliCommand } from "../helpers/keybindings.js";
|
|
4
|
+
|
|
5
|
+
test("cli keybinding map resolves route shortcuts", () => {
|
|
6
|
+
assert.equal(resolveCliCommand("f1"), "go-home");
|
|
7
|
+
assert.equal(resolveCliCommand("f2"), "go-logs");
|
|
8
|
+
assert.equal(resolveCliCommand("f3"), "go-settings");
|
|
9
|
+
assert.equal(resolveCliCommand("p"), "toggle-refresh");
|
|
10
|
+
assert.equal(resolveCliCommand("q"), "quit");
|
|
11
|
+
assert.equal(resolveCliCommand("z"), undefined);
|
|
12
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { createInitialState, reduceCliState } from "../helpers/state.js";
|
|
4
|
+
|
|
5
|
+
test("cli reducer toggles auto-refresh", () => {
|
|
6
|
+
const initial = createInitialState(0);
|
|
7
|
+
const paused = reduceCliState(initial, { type: "toggle-refresh" });
|
|
8
|
+
assert.equal(paused.autoRefresh, false);
|
|
9
|
+
const resumed = reduceCliState(paused, { type: "toggle-refresh" });
|
|
10
|
+
assert.equal(resumed.autoRefresh, true);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test("cli reducer tick appends a log entry", () => {
|
|
14
|
+
const initial = createInitialState(0);
|
|
15
|
+
const next = reduceCliState(initial, { type: "tick", nowMs: 1_000 });
|
|
16
|
+
assert.equal(next.tick, initial.tick + 1);
|
|
17
|
+
assert.equal(next.logs.length, initial.logs.length + 1);
|
|
18
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { createTestRenderer } from "@rezi-ui/core/testing";
|
|
4
|
+
import { createInitialState } from "../helpers/state.js";
|
|
5
|
+
import { buildHomeContent } from "../screens/home.js";
|
|
6
|
+
|
|
7
|
+
test("cli home content renders template markers", () => {
|
|
8
|
+
const state = createInitialState(0);
|
|
9
|
+
const renderer = createTestRenderer({ viewport: { cols: 100, rows: 24 } });
|
|
10
|
+
const output = renderer.render(buildHomeContent(state)).toText();
|
|
11
|
+
assert.match(output, /Route-aware Home screen/);
|
|
12
|
+
assert.match(output, /Operator:/);
|
|
13
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type CliCommand =
|
|
2
|
+
| "quit"
|
|
3
|
+
| "go-home"
|
|
4
|
+
| "go-logs"
|
|
5
|
+
| "go-settings"
|
|
6
|
+
| "toggle-help"
|
|
7
|
+
| "toggle-refresh";
|
|
8
|
+
|
|
9
|
+
const COMMAND_BY_KEY: Readonly<Record<string, CliCommand>> = Object.freeze({
|
|
10
|
+
q: "quit",
|
|
11
|
+
"ctrl+c": "quit",
|
|
12
|
+
f1: "go-home",
|
|
13
|
+
"alt+1": "go-home",
|
|
14
|
+
"ctrl+1": "go-home",
|
|
15
|
+
f2: "go-logs",
|
|
16
|
+
"alt+2": "go-logs",
|
|
17
|
+
"ctrl+2": "go-logs",
|
|
18
|
+
f3: "go-settings",
|
|
19
|
+
"alt+3": "go-settings",
|
|
20
|
+
"ctrl+3": "go-settings",
|
|
21
|
+
h: "toggle-help",
|
|
22
|
+
"shift+/": "toggle-help",
|
|
23
|
+
p: "toggle-refresh",
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export function resolveCliCommand(key: string): CliCommand | undefined {
|
|
27
|
+
return COMMAND_BY_KEY[key.toLowerCase()];
|
|
28
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { BadgeVariant, LogEntry } from "@rezi-ui/core";
|
|
2
|
+
import type { EnvironmentName } from "../types.js";
|
|
3
|
+
|
|
4
|
+
const LOG_MESSAGES: readonly string[] = Object.freeze([
|
|
5
|
+
"Indexed workspace files",
|
|
6
|
+
"Synced runtime config",
|
|
7
|
+
"Applied command palette cache",
|
|
8
|
+
"Completed health probe",
|
|
9
|
+
"Queued diagnostics task",
|
|
10
|
+
]);
|
|
11
|
+
|
|
12
|
+
const LOG_SOURCES: readonly string[] = Object.freeze(["core", "scheduler", "runtime", "watcher"]);
|
|
13
|
+
const LOG_LEVELS: readonly LogEntry["level"][] = Object.freeze(["info", "warn", "error", "debug"]);
|
|
14
|
+
|
|
15
|
+
export function buildLogEntry(
|
|
16
|
+
tick: number,
|
|
17
|
+
environment: EnvironmentName,
|
|
18
|
+
includeDebug: boolean,
|
|
19
|
+
nowMs = Date.now(),
|
|
20
|
+
): LogEntry {
|
|
21
|
+
const source = LOG_SOURCES[tick % LOG_SOURCES.length] ?? "core";
|
|
22
|
+
const message = LOG_MESSAGES[tick % LOG_MESSAGES.length] ?? "Background update";
|
|
23
|
+
const baseLevel = LOG_LEVELS[tick % LOG_LEVELS.length] ?? "info";
|
|
24
|
+
const level = includeDebug || baseLevel !== "debug" ? baseLevel : "info";
|
|
25
|
+
|
|
26
|
+
return Object.freeze({
|
|
27
|
+
id: `log-${String(tick)}`,
|
|
28
|
+
timestamp: nowMs,
|
|
29
|
+
source,
|
|
30
|
+
level,
|
|
31
|
+
message: `${message} (${environment})`,
|
|
32
|
+
details: `tick=${String(tick)}\nenvironment=${environment}\nsource=${source}`,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function seedLogs(count: number, environment: EnvironmentName): readonly LogEntry[] {
|
|
37
|
+
const start = Date.now() - count * 1000;
|
|
38
|
+
const entries: LogEntry[] = [];
|
|
39
|
+
for (let i = 0; i < count; i++) {
|
|
40
|
+
const tick = i + 1;
|
|
41
|
+
entries.push(buildLogEntry(tick, environment, true, start + i * 1000));
|
|
42
|
+
}
|
|
43
|
+
return Object.freeze(entries);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function levelBadgeVariant(level: LogEntry["level"]): BadgeVariant {
|
|
47
|
+
if (level === "error") return "error";
|
|
48
|
+
if (level === "warn") return "warning";
|
|
49
|
+
if (level === "debug") return "info";
|
|
50
|
+
return "default";
|
|
51
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { CliAction, CliState } from "../types.js";
|
|
2
|
+
import { buildLogEntry, seedLogs } from "./logs.js";
|
|
3
|
+
|
|
4
|
+
const LOG_HISTORY_LIMIT = 160;
|
|
5
|
+
const LOG_SEED_COUNT = 18;
|
|
6
|
+
|
|
7
|
+
function withExpanded(
|
|
8
|
+
previous: readonly string[],
|
|
9
|
+
entryId: string,
|
|
10
|
+
expanded: boolean,
|
|
11
|
+
): readonly string[] {
|
|
12
|
+
if (expanded) {
|
|
13
|
+
if (previous.includes(entryId)) return previous;
|
|
14
|
+
return Object.freeze([...previous, entryId]);
|
|
15
|
+
}
|
|
16
|
+
return Object.freeze(previous.filter((id) => id !== entryId));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function createInitialState(nowMs = Date.now()): CliState {
|
|
20
|
+
return {
|
|
21
|
+
nowMs,
|
|
22
|
+
tick: LOG_SEED_COUNT,
|
|
23
|
+
logs: seedLogs(LOG_SEED_COUNT, "staging"),
|
|
24
|
+
logsScrollTop: 0,
|
|
25
|
+
expandedLogIds: Object.freeze([]),
|
|
26
|
+
autoRefresh: true,
|
|
27
|
+
includeDebug: true,
|
|
28
|
+
operatorName: "operator",
|
|
29
|
+
environment: "staging",
|
|
30
|
+
themeName: "nord",
|
|
31
|
+
showHelp: false,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function reduceCliState(state: CliState, action: CliAction): CliState {
|
|
36
|
+
if (action.type === "tick") {
|
|
37
|
+
if (!state.autoRefresh) return { ...state, nowMs: action.nowMs };
|
|
38
|
+
const tick = state.tick + 1;
|
|
39
|
+
const nextEntry = buildLogEntry(tick, state.environment, state.includeDebug, action.nowMs);
|
|
40
|
+
const logs = Object.freeze([...state.logs, nextEntry].slice(-LOG_HISTORY_LIMIT));
|
|
41
|
+
const expandedLogIds = Object.freeze(
|
|
42
|
+
state.expandedLogIds.filter((entryId) => logs.some((entry) => entry.id === entryId)),
|
|
43
|
+
);
|
|
44
|
+
return {
|
|
45
|
+
...state,
|
|
46
|
+
tick,
|
|
47
|
+
nowMs: action.nowMs,
|
|
48
|
+
logs,
|
|
49
|
+
expandedLogIds,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (action.type === "toggle-refresh") {
|
|
54
|
+
return { ...state, autoRefresh: !state.autoRefresh };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (action.type === "toggle-debug") {
|
|
58
|
+
return { ...state, includeDebug: !state.includeDebug };
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (action.type === "toggle-help") {
|
|
62
|
+
return { ...state, showHelp: !state.showHelp };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (action.type === "set-operator") {
|
|
66
|
+
return { ...state, operatorName: action.operatorName };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (action.type === "set-environment") {
|
|
70
|
+
return { ...state, environment: action.environment };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (action.type === "set-theme") {
|
|
74
|
+
return { ...state, themeName: action.themeName };
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (action.type === "set-scroll-top") {
|
|
78
|
+
return { ...state, logsScrollTop: action.scrollTop };
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (action.type === "set-entry-expanded") {
|
|
82
|
+
return {
|
|
83
|
+
...state,
|
|
84
|
+
expandedLogIds: withExpanded(state.expandedLogIds, action.entryId, action.expanded),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (action.type === "clear-logs") {
|
|
89
|
+
return {
|
|
90
|
+
...state,
|
|
91
|
+
logs: Object.freeze([]),
|
|
92
|
+
logsScrollTop: 0,
|
|
93
|
+
expandedLogIds: Object.freeze([]),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return state;
|
|
98
|
+
}
|