@rezi-ui/node 0.1.0-alpha.1

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.
Files changed (42) hide show
  1. package/README.md +17 -0
  2. package/dist/__e2e__/fixtures/terminal-app.d.ts +2 -0
  3. package/dist/__e2e__/fixtures/terminal-app.d.ts.map +1 -0
  4. package/dist/__e2e__/fixtures/terminal-app.js +42 -0
  5. package/dist/__e2e__/fixtures/terminal-app.js.map +1 -0
  6. package/dist/__e2e__/terminal-render.e2e.test.d.ts +2 -0
  7. package/dist/__e2e__/terminal-render.e2e.test.d.ts.map +1 -0
  8. package/dist/__e2e__/terminal-render.e2e.test.js +125 -0
  9. package/dist/__e2e__/terminal-render.e2e.test.js.map +1 -0
  10. package/dist/__tests__/worker_integration.test.d.ts +2 -0
  11. package/dist/__tests__/worker_integration.test.d.ts.map +1 -0
  12. package/dist/__tests__/worker_integration.test.js +569 -0
  13. package/dist/__tests__/worker_integration.test.js.map +1 -0
  14. package/dist/backend/nodeBackend.d.ts +62 -0
  15. package/dist/backend/nodeBackend.d.ts.map +1 -0
  16. package/dist/backend/nodeBackend.js +942 -0
  17. package/dist/backend/nodeBackend.js.map +1 -0
  18. package/dist/backend/nodeBackendInline.d.ts +10 -0
  19. package/dist/backend/nodeBackendInline.d.ts.map +1 -0
  20. package/dist/backend/nodeBackendInline.js +702 -0
  21. package/dist/backend/nodeBackendInline.js.map +1 -0
  22. package/dist/index.d.ts +5 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +5 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/worker/engineWorker.d.ts +9 -0
  27. package/dist/worker/engineWorker.d.ts.map +1 -0
  28. package/dist/worker/engineWorker.js +1001 -0
  29. package/dist/worker/engineWorker.js.map +1 -0
  30. package/dist/worker/protocol.d.ts +242 -0
  31. package/dist/worker/protocol.d.ts.map +1 -0
  32. package/dist/worker/protocol.js +23 -0
  33. package/dist/worker/protocol.js.map +1 -0
  34. package/dist/worker/testShims/mockNative.d.ts +48 -0
  35. package/dist/worker/testShims/mockNative.d.ts.map +1 -0
  36. package/dist/worker/testShims/mockNative.js +216 -0
  37. package/dist/worker/testShims/mockNative.js.map +1 -0
  38. package/dist/worker/testShims/targetFpsNative.d.ts +22 -0
  39. package/dist/worker/testShims/targetFpsNative.d.ts.map +1 -0
  40. package/dist/worker/testShims/targetFpsNative.js +74 -0
  41. package/dist/worker/testShims/targetFpsNative.js.map +1 -0
  42. package/package.json +37 -0
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # @rezi-ui/node
2
+
3
+ Node.js backend for Rezi. This package owns:
4
+
5
+ - worker-thread engine ownership (native engine is never called on the main thread)
6
+ - frame scheduling and buffer pooling
7
+ - transfer of drawlists/events between core and the native addon
8
+
9
+ Typical usage:
10
+
11
+ ```ts
12
+ import { createApp, ui } from "@rezi-ui/core";
13
+ import { createNodeBackend } from "@rezi-ui/node";
14
+ ```
15
+
16
+ Docs: `https://rtlzeromemory.github.io/Rezi/`
17
+
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-app.d.ts","sourceRoot":"","sources":["../../../src/__e2e__/fixtures/terminal-app.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import { createApp, ui } from "@rezi-ui/core";
2
+ import { createNodeBackend } from "@rezi-ui/node";
3
+ const app = createApp({
4
+ backend: createNodeBackend({ executionMode: "inline", fpsCap: 30 }),
5
+ initialState: { step: 0 },
6
+ });
7
+ app.view((state) => ui.column({ p: 1, gap: 1 }, [
8
+ ui.text("E2E Terminal Render"),
9
+ ui.text(`Step: ${state.step}`),
10
+ ui.text("Rezi UI"),
11
+ ]));
12
+ const shutdown = async (code) => {
13
+ try {
14
+ await app.stop();
15
+ }
16
+ catch {
17
+ // ignore shutdown errors to avoid hanging the runner
18
+ }
19
+ try {
20
+ app.dispose();
21
+ }
22
+ catch {
23
+ // ignore
24
+ }
25
+ process.exit(code);
26
+ };
27
+ process.on("uncaughtException", (err) => {
28
+ console.error(err);
29
+ void shutdown(1);
30
+ });
31
+ process.on("unhandledRejection", (err) => {
32
+ console.error(err);
33
+ void shutdown(1);
34
+ });
35
+ await app.start();
36
+ setTimeout(() => {
37
+ app.update((s) => ({ step: s.step + 1 }));
38
+ }, 50);
39
+ setTimeout(() => {
40
+ void shutdown(0);
41
+ }, 200);
42
+ //# sourceMappingURL=terminal-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-app.js","sourceRoot":"","sources":["../../../src/__e2e__/fixtures/terminal-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIlD,MAAM,GAAG,GAAG,SAAS,CAAQ;IAC3B,OAAO,EAAE,iBAAiB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;CAC1B,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;IAC1B,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC9B,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;CACnB,CAAC,CACH,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IACD,IAAI,CAAC;QACH,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AAElB,UAAU,CAAC,GAAG,EAAE;IACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;AAEP,UAAU,CAAC,GAAG,EAAE;IACd,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-render.e2e.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-render.e2e.test.d.ts","sourceRoot":"","sources":["../../src/__e2e__/terminal-render.e2e.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ import { spawn, spawnSync } from "node:child_process";
2
+ import { setTimeout as delay } from "node:timers/promises";
3
+ import { fileURLToPath } from "node:url";
4
+ import { assert, test } from "@rezi-ui/testkit";
5
+ const COLS = 60;
6
+ const ROWS = 16;
7
+ const TIMEOUT_MS = 5000;
8
+ const isLinux = process.platform === "linux";
9
+ const hasPythonPty = (() => {
10
+ if (!isLinux)
11
+ return false;
12
+ const probe = spawnSync("python3", ["-c", "import pty,sys"], { stdio: "ignore" });
13
+ return !probe.error && probe.status === 0;
14
+ })();
15
+ async function loadTerminalCtor() {
16
+ const mod = await import("@xterm/headless");
17
+ const candidate = mod;
18
+ const Terminal = candidate.Terminal ?? candidate.default?.Terminal;
19
+ if (!Terminal) {
20
+ throw new Error("terminal e2e could not resolve @xterm/headless Terminal export");
21
+ }
22
+ return Terminal;
23
+ }
24
+ function snapshotScreen(term, rows) {
25
+ const buffer = term.buffer.active;
26
+ const out = [];
27
+ for (let i = 0; i < rows; i++) {
28
+ const line = buffer.getLine(i);
29
+ out.push(line ? line.translateToString(true) : "");
30
+ }
31
+ return out;
32
+ }
33
+ test("terminal e2e renders real output", { skip: isLinux ? (hasPythonPty ? false : "python3 required for pty") : "linux-only" }, async () => {
34
+ const Terminal = await loadTerminalCtor();
35
+ const term = new Terminal({ cols: COLS, rows: ROWS, allowProposedApi: true });
36
+ const appPath = fileURLToPath(new URL("./fixtures/terminal-app.js", import.meta.url));
37
+ const root = fileURLToPath(new URL("../../../../", import.meta.url));
38
+ const pythonScript = `
39
+ import os, pty, sys, fcntl, termios, struct
40
+
41
+ cols = int(os.environ.get("REZI_E2E_COLS", "60"))
42
+ rows = int(os.environ.get("REZI_E2E_ROWS", "16"))
43
+ node = os.environ["REZI_E2E_NODE"]
44
+ app = os.environ["REZI_E2E_APP"]
45
+
46
+ pid, fd = pty.fork()
47
+ if pid == 0:
48
+ os.execv(node, [node, app])
49
+ else:
50
+ fcntl.ioctl(fd, termios.TIOCSWINSZ, struct.pack("HHHH", rows, cols, 0, 0))
51
+ while True:
52
+ try:
53
+ data = os.read(fd, 1024)
54
+ except OSError:
55
+ break
56
+ if not data:
57
+ break
58
+ os.write(sys.stdout.fileno(), data)
59
+ _, status = os.waitpid(pid, 0)
60
+ if os.WIFEXITED(status):
61
+ sys.exit(os.WEXITSTATUS(status))
62
+ if os.WIFSIGNALED(status):
63
+ sys.exit(128 + os.WTERMSIG(status))
64
+ sys.exit(1)
65
+ `;
66
+ const child = spawn("python3", ["-c", pythonScript], {
67
+ cwd: root,
68
+ env: {
69
+ ...process.env,
70
+ TERM: "xterm-256color",
71
+ REZI_E2E_NODE: process.execPath,
72
+ REZI_E2E_APP: appPath,
73
+ REZI_E2E_COLS: String(COLS),
74
+ REZI_E2E_ROWS: String(ROWS),
75
+ },
76
+ stdio: ["ignore", "pipe", "pipe"],
77
+ });
78
+ assert.ok(child.stdout, "expected python pty stdout pipe");
79
+ let stderr = "";
80
+ child.stderr?.on("data", (chunk) => {
81
+ stderr += chunk.toString("utf8");
82
+ });
83
+ let sawTitle = false;
84
+ let sawStep = false;
85
+ let sawFooter = false;
86
+ let lastScreen = "";
87
+ const updateScreen = () => {
88
+ lastScreen = snapshotScreen(term, ROWS).join("\n");
89
+ if (!sawTitle && lastScreen.includes("E2E Terminal Render"))
90
+ sawTitle = true;
91
+ if (!sawStep && lastScreen.includes("Step: 1"))
92
+ sawStep = true;
93
+ if (!sawFooter && lastScreen.includes("Rezi UI"))
94
+ sawFooter = true;
95
+ };
96
+ let pending = Promise.resolve();
97
+ child.stdout.on("data", (chunk) => {
98
+ const data = chunk.toString("utf8");
99
+ pending = pending
100
+ .then(() => new Promise((resolve) => term.write(data, resolve)))
101
+ .then(() => {
102
+ if (!sawTitle || !sawStep || !sawFooter) {
103
+ updateScreen();
104
+ }
105
+ });
106
+ });
107
+ const exit = new Promise((resolve, reject) => {
108
+ child.on("error", reject);
109
+ child.on("exit", (code, signal) => resolve({ code, signal }));
110
+ });
111
+ const timeout = delay(TIMEOUT_MS).then(() => {
112
+ child.kill("SIGKILL");
113
+ throw new Error("terminal e2e timed out");
114
+ });
115
+ const { code, signal } = await Promise.race([exit, timeout]);
116
+ await pending;
117
+ updateScreen();
118
+ if (code !== 0) {
119
+ throw new Error(`terminal app exited with code=${String(code)} signal=${String(signal)}\n${stderr}`);
120
+ }
121
+ assert.ok(sawTitle, `missing title in screen:\n${lastScreen}`);
122
+ assert.ok(sawStep, `missing updated state in screen:\n${lastScreen}`);
123
+ assert.ok(sawFooter, `missing footer in screen:\n${lastScreen}`);
124
+ });
125
+ //# sourceMappingURL=terminal-render.e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-render.e2e.test.js","sourceRoot":"","sources":["../../src/__e2e__/terminal-render.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker_integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/worker_integration.test.ts"],"names":[],"mappings":""}