create-rezi 0.1.0-alpha.63 → 0.1.0-alpha.68
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 +8 -21
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -24
- 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 +11 -55
- package/dist/scaffold.js.map +1 -1
- package/package.json +2 -2
- package/templates/cli-tool/package.json +2 -2
- package/templates/minimal/package.json +2 -2
- package/templates/starship/README.md +1 -1
- package/templates/starship/package.json +2 -2
- package/templates/animation-lab/README.md +0 -45
- package/templates/animation-lab/package.json +0 -25
- package/templates/animation-lab/src/__tests__/keybindings.test.ts +0 -14
- package/templates/animation-lab/src/__tests__/reducer.test.ts +0 -49
- package/templates/animation-lab/src/__tests__/render.test.ts +0 -29
- package/templates/animation-lab/src/helpers/keybindings.ts +0 -32
- package/templates/animation-lab/src/helpers/state.ts +0 -152
- package/templates/animation-lab/src/main.ts +0 -202
- package/templates/animation-lab/src/screens/reactor-lab.ts +0 -848
- package/templates/animation-lab/src/theme.ts +0 -66
- package/templates/animation-lab/src/types.ts +0 -31
- package/templates/animation-lab/tsconfig.json +0 -14
- package/templates/dashboard/README.md +0 -64
- package/templates/dashboard/package.json +0 -25
- package/templates/dashboard/src/__tests__/keybindings.test.ts +0 -12
- package/templates/dashboard/src/__tests__/reducer.test.ts +0 -19
- package/templates/dashboard/src/__tests__/render.test.ts +0 -21
- package/templates/dashboard/src/__tests__/telemetry.test.ts +0 -48
- package/templates/dashboard/src/helpers/formatters.ts +0 -53
- package/templates/dashboard/src/helpers/keybindings.ts +0 -27
- package/templates/dashboard/src/helpers/state.ts +0 -204
- package/templates/dashboard/src/helpers/telemetry.ts +0 -22
- package/templates/dashboard/src/main.ts +0 -184
- package/templates/dashboard/src/screens/overview.ts +0 -221
- package/templates/dashboard/src/theme.ts +0 -51
- package/templates/dashboard/src/types.ts +0 -36
- package/templates/dashboard/tsconfig.json +0 -14
- package/templates/stress-test/README.md +0 -107
- package/templates/stress-test/package.json +0 -25
- package/templates/stress-test/src/__tests__/keybindings.test.ts +0 -11
- package/templates/stress-test/src/__tests__/reducer.test.ts +0 -11
- package/templates/stress-test/src/__tests__/render.test.ts +0 -11
- package/templates/stress-test/src/helpers/test-examples.ts +0 -49
- package/templates/stress-test/src/main.ts +0 -1728
- package/templates/stress-test/tsconfig.json +0 -14
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# create-rezi
|
|
2
2
|
|
|
3
|
-
Scaffold a
|
|
3
|
+
Scaffold a Rezi terminal UI app.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
@@ -17,28 +17,19 @@ bun run start
|
|
|
17
17
|
|
|
18
18
|
## Templates
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Available templates:
|
|
21
21
|
|
|
22
|
-
- `
|
|
23
|
-
- Alias: `dash`
|
|
24
|
-
- `stress-test` - Visual benchmark matrix starter
|
|
25
|
-
- Aliases: `stress`, `chaos`, `bench`
|
|
26
|
-
- `cli-tool` - Multi-screen CLI workflow starter with route-based screens
|
|
27
|
-
- Aliases: `cli`, `tool`, `multiscreen`
|
|
28
|
-
- `animation-lab` - Declarative animation playground with responsive reactor visuals
|
|
29
|
-
- Aliases: `animation`, `anim`, `lab`, `motion`
|
|
30
|
-
- `minimal` - Single-screen utility starter for small tools
|
|
22
|
+
- `minimal` - Single-screen utility starter for focused tools
|
|
31
23
|
- Aliases: `mini`, `basic`, `utility`
|
|
32
|
-
- `
|
|
24
|
+
- `cli-tool` - Multi-screen CLI starter with route-based screens
|
|
25
|
+
- Aliases: `cli`, `tool`, `multiscreen`
|
|
26
|
+
- `starship` - Advanced console template with routed decks, charts, forms, and overlays
|
|
33
27
|
- Aliases: `ship`, `bridge`, `command`
|
|
34
28
|
|
|
35
29
|
```bash
|
|
36
|
-
npm create rezi my-app -- --template
|
|
37
|
-
npm create rezi my-app -- --template stress-test
|
|
30
|
+
npm create rezi my-app -- --template minimal
|
|
38
31
|
npm create rezi my-app -- --template cli-tool
|
|
39
|
-
npm create rezi my-app -- --template animation-lab
|
|
40
32
|
npm create rezi my-app -- --template starship
|
|
41
|
-
npm create rezi my-app -- --template minimal
|
|
42
33
|
```
|
|
43
34
|
|
|
44
35
|
List templates and highlights from the CLI:
|
|
@@ -49,7 +40,7 @@ npm create rezi -- --list-templates
|
|
|
49
40
|
|
|
50
41
|
## Options
|
|
51
42
|
|
|
52
|
-
- `--template, -t <name>`: Select a template (`
|
|
43
|
+
- `--template, -t <name>`: Select a template (`minimal`, `cli-tool`, `starship`, plus aliases).
|
|
53
44
|
- `--no-install, --skip-install`: Skip dependency installation.
|
|
54
45
|
- `--pm, --package-manager <npm|pnpm|yarn|bun>`: Choose a package manager.
|
|
55
46
|
- `--list-templates, --templates`: Print available templates and highlights.
|
|
@@ -70,7 +61,3 @@ Template theming convention:
|
|
|
70
61
|
|
|
71
62
|
- `src/theme.ts` is the canonical source for theme catalogs and style helpers.
|
|
72
63
|
- Screens should derive visual styling from active theme tokens instead of hardcoded RGB/hex literals.
|
|
73
|
-
- `stress-test` is the current exception and keeps theme/catalog wiring in `src/main.ts`.
|
|
74
|
-
|
|
75
|
-
For template descriptions and highlights, see:
|
|
76
|
-
https://rezitui.dev/docs/getting-started/create-rezi/
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export
|
|
2
|
+
export declare function createInstallEnv(parentEnv?: Readonly<Record<string, string | undefined>>): NodeJS.ProcessEnv;
|
|
3
|
+
export declare function resolveInstallCwd(targetDir: string, baseDir?: string): string;
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAuJA,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GACpE,MAAM,CAAC,UAAU,CAQnB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,MAAM,CAEpF"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,16 @@ import { cwd, exit, stdin, stdout } from "node:process";
|
|
|
5
5
|
import { createInterface } from "node:readline/promises";
|
|
6
6
|
import { isMainModuleEntry } from "./mainEntry.js";
|
|
7
7
|
import { TEMPLATE_DEFINITIONS, createProject, isValidPackageName, normalizeTemplateName, resolveTargetName, toDisplayName, toValidPackageName, } from "./scaffold.js";
|
|
8
|
+
const INSTALL_ENV_EXACT_BLOCKLIST = new Set([
|
|
9
|
+
"init_cwd",
|
|
10
|
+
"npm_command",
|
|
11
|
+
"npm_config_argv",
|
|
12
|
+
"npm_config_local_prefix",
|
|
13
|
+
"npm_config_prefix",
|
|
14
|
+
"npm_execpath",
|
|
15
|
+
"npm_node_execpath",
|
|
16
|
+
"npm_prefix",
|
|
17
|
+
]);
|
|
8
18
|
function parseArgs(argv) {
|
|
9
19
|
const options = {
|
|
10
20
|
install: true,
|
|
@@ -66,7 +76,7 @@ function printHelp() {
|
|
|
66
76
|
stdout.write(" npm create rezi my-app\n");
|
|
67
77
|
stdout.write(" bun create rezi my-app\n\n");
|
|
68
78
|
stdout.write("Options:\n");
|
|
69
|
-
stdout.write(" --template, -t <name>
|
|
79
|
+
stdout.write(" --template, -t <name> minimal | cli-tool | starship\n");
|
|
70
80
|
stdout.write(" --no-install Skip dependency install\n");
|
|
71
81
|
stdout.write(" --pm <npm|pnpm|yarn|bun> Choose a package manager\n");
|
|
72
82
|
stdout.write(" --list-templates Show templates and highlights\n");
|
|
@@ -106,6 +116,24 @@ function resolvePackageManager(value) {
|
|
|
106
116
|
}
|
|
107
117
|
throw new Error(`Unsupported package manager: ${value}`);
|
|
108
118
|
}
|
|
119
|
+
function shouldStripInstallEnvKey(key) {
|
|
120
|
+
const normalized = key.toLowerCase();
|
|
121
|
+
return (INSTALL_ENV_EXACT_BLOCKLIST.has(normalized) ||
|
|
122
|
+
normalized.startsWith("npm_lifecycle_") ||
|
|
123
|
+
normalized.startsWith("npm_package_"));
|
|
124
|
+
}
|
|
125
|
+
export function createInstallEnv(parentEnv = process.env) {
|
|
126
|
+
const childEnv = { ...parentEnv };
|
|
127
|
+
for (const key of Object.keys(childEnv)) {
|
|
128
|
+
if (shouldStripInstallEnvKey(key)) {
|
|
129
|
+
delete childEnv[key];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return childEnv;
|
|
133
|
+
}
|
|
134
|
+
export function resolveInstallCwd(targetDir, baseDir = cwd()) {
|
|
135
|
+
return resolve(baseDir, targetDir);
|
|
136
|
+
}
|
|
109
137
|
async function promptText(rl, prompt, fallback) {
|
|
110
138
|
const answer = await rl.question(`${prompt} (${fallback}): `);
|
|
111
139
|
return answer.trim() || fallback;
|
|
@@ -122,27 +150,24 @@ async function promptTemplate(rl) {
|
|
|
122
150
|
const answer = await rl.question(`Template (1-${TEMPLATE_DEFINITIONS.length}, default 1): `);
|
|
123
151
|
const trimmed = answer.trim();
|
|
124
152
|
if (!trimmed) {
|
|
125
|
-
return TEMPLATE_DEFINITIONS[0]?.key ?? "
|
|
153
|
+
return TEMPLATE_DEFINITIONS[0]?.key ?? "minimal";
|
|
126
154
|
}
|
|
127
155
|
const asNumber = Number(trimmed);
|
|
128
156
|
if (!Number.isNaN(asNumber) && asNumber >= 1 && asNumber <= TEMPLATE_DEFINITIONS.length) {
|
|
129
|
-
return TEMPLATE_DEFINITIONS[asNumber - 1]?.key ?? TEMPLATE_DEFINITIONS[0]?.key ?? "
|
|
157
|
+
return TEMPLATE_DEFINITIONS[asNumber - 1]?.key ?? TEMPLATE_DEFINITIONS[0]?.key ?? "minimal";
|
|
130
158
|
}
|
|
131
159
|
return trimmed;
|
|
132
160
|
}
|
|
133
|
-
async function confirmStressTemplate(rl) {
|
|
134
|
-
stdout.write("\nSafety check for stress-test template:\n");
|
|
135
|
-
stdout.write(" - This template intentionally drives heavy CPU and optional disk I/O load.\n");
|
|
136
|
-
stdout.write(" - Turbo/write-flood modes increase system pressure.\n");
|
|
137
|
-
const answer = await rl.question("Continue with stress-test? (y/N): ");
|
|
138
|
-
const normalized = answer.trim().toLowerCase();
|
|
139
|
-
return normalized === "y" || normalized === "yes";
|
|
140
|
-
}
|
|
141
161
|
function runInstall(pm, targetDir) {
|
|
162
|
+
const installCwd = resolveInstallCwd(targetDir);
|
|
142
163
|
const res = spawnSync(pm, ["install"], {
|
|
143
|
-
cwd:
|
|
164
|
+
cwd: installCwd,
|
|
144
165
|
stdio: "inherit",
|
|
166
|
+
env: createInstallEnv(),
|
|
145
167
|
});
|
|
168
|
+
if (res.error) {
|
|
169
|
+
throw res.error;
|
|
170
|
+
}
|
|
146
171
|
if (res.status !== 0) {
|
|
147
172
|
throw new Error(`${pm} install failed`);
|
|
148
173
|
}
|
|
@@ -185,18 +210,6 @@ async function main() {
|
|
|
185
210
|
stdout.write("Run with --list-templates to see highlights.\n");
|
|
186
211
|
throw new Error("Invalid template");
|
|
187
212
|
}
|
|
188
|
-
if (templateKey === "stress-test") {
|
|
189
|
-
if (isInteractive) {
|
|
190
|
-
const confirmed = await confirmStressTemplate(rl);
|
|
191
|
-
if (!confirmed) {
|
|
192
|
-
stdout.write("\nTemplate selection cancelled.\n");
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
stdout.write("\nSafety notice: stress-test template selected in non-interactive mode; skipping prompt.\n");
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
213
|
const rawName = resolveTargetName(targetDir);
|
|
201
214
|
const displayName = toDisplayName(rawName);
|
|
202
215
|
const packageName = toValidPackageName(rawName);
|
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,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,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,EAsCpD,CAAC;AAmBX,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
|
@@ -3,69 +3,33 @@ import { basename, join, resolve } from "node:path";
|
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
export const TEMPLATE_DEFINITIONS = [
|
|
5
5
|
{
|
|
6
|
-
key: "
|
|
7
|
-
label: "
|
|
8
|
-
description: "
|
|
6
|
+
key: "minimal",
|
|
7
|
+
label: "Minimal Utility TUI",
|
|
8
|
+
description: "Single-screen starter for focused tools",
|
|
9
9
|
safetyTag: "safe-default",
|
|
10
|
-
safetyNote: "
|
|
11
|
-
highlights: [
|
|
12
|
-
"fleet control plane with stable live telemetry",
|
|
13
|
-
"incident feed + inspector + escalation runbook",
|
|
14
|
-
],
|
|
15
|
-
dir: "dashboard",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
key: "stress-test",
|
|
19
|
-
label: "Visual Benchmark Matrix",
|
|
20
|
-
description: "Three-lane visual benchmark with deterministic sim model + real runtime diagnostics",
|
|
21
|
-
safetyTag: "high-cpu-io",
|
|
22
|
-
safetyNote: "Generates heavy CPU/IO pressure; intended for benchmarking only.",
|
|
10
|
+
safetyNote: "Small-footprint template for quick utility workflows.",
|
|
23
11
|
highlights: [
|
|
24
|
-
"
|
|
25
|
-
"
|
|
12
|
+
"single-screen state flow with keybindings, theme cycling, and inline error handling",
|
|
13
|
+
"lean multi-file structure plus reducer/render/keybinding test examples",
|
|
26
14
|
],
|
|
27
|
-
dir: "
|
|
15
|
+
dir: "minimal",
|
|
28
16
|
},
|
|
29
17
|
{
|
|
30
18
|
key: "cli-tool",
|
|
31
19
|
label: "Multi-Screen CLI Tool",
|
|
32
|
-
description: "
|
|
20
|
+
description: "Multi-screen CLI starter with first-party routing",
|
|
33
21
|
safetyTag: "safe-default",
|
|
34
22
|
safetyNote: "Lightweight template focused on product workflows and routing.",
|
|
35
23
|
highlights: [
|
|
36
|
-
"home/logs/settings
|
|
37
|
-
"global route keybindings plus breadcrumb
|
|
24
|
+
"home/logs/settings screens with router history and focus restoration",
|
|
25
|
+
"global route keybindings plus breadcrumb and tabs helpers wired to router state",
|
|
38
26
|
],
|
|
39
27
|
dir: "cli-tool",
|
|
40
28
|
},
|
|
41
|
-
{
|
|
42
|
-
key: "animation-lab",
|
|
43
|
-
label: "Declarative Animation Lab",
|
|
44
|
-
description: "Responsive animation playground showcasing transition/spring/sequence/stagger hooks",
|
|
45
|
-
safetyTag: "safe-default",
|
|
46
|
-
safetyNote: "Visual-first starter with moderate CPU usage and deterministic animation targets.",
|
|
47
|
-
highlights: [
|
|
48
|
-
"reactor command deck combining canvas visuals, charts, gauges, and staggered module rails",
|
|
49
|
-
"keyboard-driven autoplay + vector nudging + burst impulses with resize-aware layout adaptation",
|
|
50
|
-
],
|
|
51
|
-
dir: "animation-lab",
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
key: "minimal",
|
|
55
|
-
label: "Minimal Utility TUI",
|
|
56
|
-
description: "Single-screen starter for focused tools with essential patterns only",
|
|
57
|
-
safetyTag: "safe-default",
|
|
58
|
-
safetyNote: "Small footprint template intended for quick utility workflows.",
|
|
59
|
-
highlights: [
|
|
60
|
-
"single-screen state flow with keybindings, theme cycling, and inline error handling",
|
|
61
|
-
"lean multi-file structure plus reducer/render/keybinding test examples",
|
|
62
|
-
],
|
|
63
|
-
dir: "minimal",
|
|
64
|
-
},
|
|
65
29
|
{
|
|
66
30
|
key: "starship",
|
|
67
31
|
label: "Starship Command Console",
|
|
68
|
-
description: "
|
|
32
|
+
description: "Polished multi-deck showcase for routing, animation, charts, forms, and overlays",
|
|
69
33
|
safetyTag: "safe-default",
|
|
70
34
|
safetyNote: "Feature-rich showcase template with moderate CPU usage from animation hooks and live telemetry.",
|
|
71
35
|
highlights: [
|
|
@@ -77,17 +41,9 @@ export const TEMPLATE_DEFINITIONS = [
|
|
|
77
41
|
];
|
|
78
42
|
const TEMPLATE_BY_KEY = new Map(TEMPLATE_DEFINITIONS.map((template) => [template.key, template]));
|
|
79
43
|
const TEMPLATE_ALIASES = new Map(TEMPLATE_DEFINITIONS.map((template) => [template.key, template.key]));
|
|
80
|
-
TEMPLATE_ALIASES.set("dash", "dashboard");
|
|
81
|
-
TEMPLATE_ALIASES.set("stress", "stress-test");
|
|
82
|
-
TEMPLATE_ALIASES.set("chaos", "stress-test");
|
|
83
|
-
TEMPLATE_ALIASES.set("bench", "stress-test");
|
|
84
44
|
TEMPLATE_ALIASES.set("cli", "cli-tool");
|
|
85
45
|
TEMPLATE_ALIASES.set("tool", "cli-tool");
|
|
86
46
|
TEMPLATE_ALIASES.set("multiscreen", "cli-tool");
|
|
87
|
-
TEMPLATE_ALIASES.set("animation", "animation-lab");
|
|
88
|
-
TEMPLATE_ALIASES.set("anim", "animation-lab");
|
|
89
|
-
TEMPLATE_ALIASES.set("lab", "animation-lab");
|
|
90
|
-
TEMPLATE_ALIASES.set("motion", "animation-lab");
|
|
91
47
|
TEMPLATE_ALIASES.set("mini", "minimal");
|
|
92
48
|
TEMPLATE_ALIASES.set("basic", "minimal");
|
|
93
49
|
TEMPLATE_ALIASES.set("utility", "minimal");
|
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;
|
|
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.68",
|
|
4
4
|
"description": "Scaffold a Rezi terminal UI app.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://rezitui.dev",
|
|
@@ -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.68"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"test": "tsx --test src/__tests__/*.test.ts"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@rezi-ui/core": "0.1.0-alpha.
|
|
15
|
-
"@rezi-ui/node": "0.1.0-alpha.
|
|
14
|
+
"@rezi-ui/core": "0.1.0-alpha.68",
|
|
15
|
+
"@rezi-ui/node": "0.1.0-alpha.68"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/node": "^22.13.1",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"test": "tsx --test src/__tests__/*.test.ts"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@rezi-ui/core": "0.1.0-alpha.
|
|
15
|
-
"@rezi-ui/node": "0.1.0-alpha.
|
|
14
|
+
"@rezi-ui/core": "0.1.0-alpha.68",
|
|
15
|
+
"@rezi-ui/node": "0.1.0-alpha.68"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/node": "^22.13.1",
|
|
@@ -4,7 +4,7 @@ Scaffolded with `create-rezi` using the **__TEMPLATE_LABEL__** template.
|
|
|
4
4
|
|
|
5
5
|
## Concept
|
|
6
6
|
|
|
7
|
-
`__APP_NAME__` is a multi-deck starship operations console. It demonstrates routed application architecture, deterministic telemetry simulation, rich widgets, layered overlays, and declarative animation hooks in a
|
|
7
|
+
`__APP_NAME__` is a multi-deck starship operations console. It demonstrates routed application architecture, deterministic telemetry simulation, rich widgets, layered overlays, and declarative animation hooks in a single advanced template.
|
|
8
8
|
|
|
9
9
|
## Decks
|
|
10
10
|
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"test": "tsx --test src/__tests__/*.test.ts"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@rezi-ui/core": "0.1.0-alpha.
|
|
15
|
-
"@rezi-ui/node": "0.1.0-alpha.
|
|
14
|
+
"@rezi-ui/core": "0.1.0-alpha.68",
|
|
15
|
+
"@rezi-ui/node": "0.1.0-alpha.68"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/node": "^18.0.0",
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# __APP_NAME__
|
|
2
|
-
|
|
3
|
-
Scaffolded with `create-rezi` using the **__TEMPLATE_LABEL__** template.
|
|
4
|
-
|
|
5
|
-
## What This Template Demonstrates
|
|
6
|
-
|
|
7
|
-
- Declarative animation hooks with first-class primitives: `useTransition`, `useSpring`, `useSequence`, `useStagger`.
|
|
8
|
-
- Built-in easing presets in action (`linear`, quad, and cubic families).
|
|
9
|
-
- Canvas-driven reactor visualization combined with charts, gauges, and staggered module rails.
|
|
10
|
-
- Reducer-managed animation targets with deterministic tick updates.
|
|
11
|
-
- Responsive layout that adapts to terminal resize events.
|
|
12
|
-
- Keyboard controls for autoplay, single-step, vector tuning, burst impulses, phase cycling, and theme cycling.
|
|
13
|
-
|
|
14
|
-
## File Layout
|
|
15
|
-
|
|
16
|
-
- `src/types.ts`: animation state and action contracts.
|
|
17
|
-
- `src/theme.ts`: template identity + built-in theme catalog.
|
|
18
|
-
- `src/helpers/state.ts`: viewport normalization + reducer transitions.
|
|
19
|
-
- `src/helpers/keybindings.ts`: key to command resolver.
|
|
20
|
-
- `src/screens/reactor-lab.ts`: reactor field screen renderer.
|
|
21
|
-
- `src/main.ts`: app bootstrap, resize handling, animation loop.
|
|
22
|
-
- `src/__tests__/`: reducer, render, and keybinding examples.
|
|
23
|
-
|
|
24
|
-
## Quickstart
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
# npm
|
|
28
|
-
npm install
|
|
29
|
-
npm run start
|
|
30
|
-
|
|
31
|
-
# bun
|
|
32
|
-
bun install
|
|
33
|
-
bun run start
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Controls
|
|
37
|
-
|
|
38
|
-
- `q` or `ctrl+c`: Quit
|
|
39
|
-
- `space` or `p`: Toggle autoplay
|
|
40
|
-
- `enter`: Step one tick
|
|
41
|
-
- Arrow keys: Nudge drift/flux/orbit vectors
|
|
42
|
-
- `b`: Burst impulse
|
|
43
|
-
- `r`: Randomized retarget
|
|
44
|
-
- `m`: Cycle phase
|
|
45
|
-
- `t`: Cycle theme preset
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "__PACKAGE_NAME__",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"start": "tsx src/main.ts",
|
|
8
|
-
"dev": "tsx watch src/main.ts",
|
|
9
|
-
"build": "tsc --pretty false",
|
|
10
|
-
"typecheck": "tsc --noEmit",
|
|
11
|
-
"test": "tsx --test src/__tests__/*.test.ts"
|
|
12
|
-
},
|
|
13
|
-
"dependencies": {
|
|
14
|
-
"@rezi-ui/core": "0.1.0-alpha.63",
|
|
15
|
-
"@rezi-ui/node": "0.1.0-alpha.63"
|
|
16
|
-
},
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@types/node": "^22.13.1",
|
|
19
|
-
"tsx": "^4.20.0",
|
|
20
|
-
"typescript": "^5.6.3"
|
|
21
|
-
},
|
|
22
|
-
"engines": {
|
|
23
|
-
"node": ">=18"
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { resolveAnimationLabCommand } from "../helpers/keybindings.js";
|
|
4
|
-
|
|
5
|
-
test("animation lab keybinding map resolves expected commands", () => {
|
|
6
|
-
assert.equal(resolveAnimationLabCommand("q"), "quit");
|
|
7
|
-
assert.equal(resolveAnimationLabCommand("space"), "toggle-autoplay");
|
|
8
|
-
assert.equal(resolveAnimationLabCommand("enter"), "step");
|
|
9
|
-
assert.equal(resolveAnimationLabCommand("right"), "nudge-right");
|
|
10
|
-
assert.equal(resolveAnimationLabCommand("b"), "burst");
|
|
11
|
-
assert.equal(resolveAnimationLabCommand("m"), "cycle-phase");
|
|
12
|
-
assert.equal(resolveAnimationLabCommand("t"), "cycle-theme");
|
|
13
|
-
assert.equal(resolveAnimationLabCommand("x"), undefined);
|
|
14
|
-
});
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { createInitialState, reduceAnimationLabState } from "../helpers/state.js";
|
|
4
|
-
import { DEFAULT_THEME_NAME } from "../theme.js";
|
|
5
|
-
|
|
6
|
-
test("animation lab reducer advances and keeps bounds", () => {
|
|
7
|
-
const initial = createInitialState();
|
|
8
|
-
const next = reduceAnimationLabState(initial, { type: "advance" });
|
|
9
|
-
|
|
10
|
-
assert.equal(next.tick, 1);
|
|
11
|
-
assert.ok(next.fluxTarget >= 0 && next.fluxTarget <= 1);
|
|
12
|
-
assert.ok(next.orbitTarget >= 0 && next.orbitTarget <= 1);
|
|
13
|
-
assert.ok(next.burstTarget >= 0 && next.burstTarget <= 1);
|
|
14
|
-
assert.ok(next.driftTarget >= -1 && next.driftTarget <= 1);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
test("animation lab reducer applies viewport", () => {
|
|
18
|
-
const initial = createInitialState({ cols: 96, rows: 32 });
|
|
19
|
-
const resized = reduceAnimationLabState(initial, {
|
|
20
|
-
type: "apply-viewport",
|
|
21
|
-
cols: 70,
|
|
22
|
-
rows: 20,
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
assert.equal(resized.viewportCols, 70);
|
|
26
|
-
assert.equal(resized.viewportRows, 20);
|
|
27
|
-
assert.equal("panelWidth" in resized, false);
|
|
28
|
-
assert.equal("panelHeight" in resized, false);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test("animation lab reducer supports nudge and phase cycle", () => {
|
|
32
|
-
const initial = createInitialState();
|
|
33
|
-
const nudged = reduceAnimationLabState(initial, {
|
|
34
|
-
type: "nudge",
|
|
35
|
-
payload: { driftDelta: 0.3, fluxDelta: 0.1, orbitDelta: 0.1 },
|
|
36
|
-
});
|
|
37
|
-
const cycled = reduceAnimationLabState(nudged, { type: "cycle-phase" });
|
|
38
|
-
|
|
39
|
-
assert.equal(cycled.phase, 1);
|
|
40
|
-
assert.ok(cycled.driftTarget > initial.driftTarget);
|
|
41
|
-
assert.ok(cycled.fluxTarget > initial.fluxTarget);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test("animation lab reducer cycles theme", () => {
|
|
45
|
-
const initial = createInitialState();
|
|
46
|
-
assert.equal(initial.themeName, DEFAULT_THEME_NAME);
|
|
47
|
-
const next = reduceAnimationLabState(initial, { type: "cycle-theme" });
|
|
48
|
-
assert.notEqual(next.themeName, initial.themeName);
|
|
49
|
-
});
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { createTestRenderer } from "@rezi-ui/core/testing";
|
|
4
|
-
import { createInitialState, reduceAnimationLabState } from "../helpers/state.js";
|
|
5
|
-
import { renderReactorLab } from "../screens/reactor-lab.js";
|
|
6
|
-
|
|
7
|
-
test("animation lab screen renders core sections", () => {
|
|
8
|
-
const state = createInitialState({ cols: 140, rows: 48 });
|
|
9
|
-
const renderer = createTestRenderer({ viewport: { cols: 140, rows: 48 } });
|
|
10
|
-
const output = renderer.render(renderReactorLab(state)).toText();
|
|
11
|
-
|
|
12
|
-
assert.match(output, /__APP_NAME__/);
|
|
13
|
-
assert.match(output, /Animation Lab/);
|
|
14
|
-
assert.match(output, /controls: space\/p autoplay/);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
test("animation lab screen renders after compact viewport resize", () => {
|
|
18
|
-
const initial = createInitialState({ cols: 140, rows: 48 });
|
|
19
|
-
const compact = reduceAnimationLabState(initial, {
|
|
20
|
-
type: "apply-viewport",
|
|
21
|
-
cols: 68,
|
|
22
|
-
rows: 20,
|
|
23
|
-
});
|
|
24
|
-
const renderer = createTestRenderer({ viewport: { cols: 68, rows: 20 } });
|
|
25
|
-
const output = renderer.render(renderReactorLab(compact)).toText();
|
|
26
|
-
|
|
27
|
-
assert.match(output, /Animation Lab/);
|
|
28
|
-
assert.match(output, /controls: space\/p autoplay/);
|
|
29
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export type AnimationLabCommand =
|
|
2
|
-
| "quit"
|
|
3
|
-
| "toggle-autoplay"
|
|
4
|
-
| "step"
|
|
5
|
-
| "nudge-right"
|
|
6
|
-
| "nudge-left"
|
|
7
|
-
| "nudge-up"
|
|
8
|
-
| "nudge-down"
|
|
9
|
-
| "burst"
|
|
10
|
-
| "randomize"
|
|
11
|
-
| "cycle-phase"
|
|
12
|
-
| "cycle-theme";
|
|
13
|
-
|
|
14
|
-
const COMMAND_MAP: Readonly<Record<string, AnimationLabCommand>> = Object.freeze({
|
|
15
|
-
q: "quit",
|
|
16
|
-
"ctrl+c": "quit",
|
|
17
|
-
space: "toggle-autoplay",
|
|
18
|
-
p: "toggle-autoplay",
|
|
19
|
-
enter: "step",
|
|
20
|
-
right: "nudge-right",
|
|
21
|
-
left: "nudge-left",
|
|
22
|
-
up: "nudge-up",
|
|
23
|
-
down: "nudge-down",
|
|
24
|
-
b: "burst",
|
|
25
|
-
r: "randomize",
|
|
26
|
-
m: "cycle-phase",
|
|
27
|
-
t: "cycle-theme",
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
export function resolveAnimationLabCommand(key: string): AnimationLabCommand | undefined {
|
|
31
|
-
return COMMAND_MAP[key];
|
|
32
|
-
}
|