@flyingrobots/bijou-node 7.2.0 → 8.0.0-rc.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 (52) hide show
  1. package/dist/chalk-token-styler.d.ts +4 -0
  2. package/dist/chalk-token-styler.d.ts.map +1 -0
  3. package/dist/chalk-token-styler.js +79 -0
  4. package/dist/chalk-token-styler.js.map +1 -0
  5. package/dist/index.d.ts +1 -11
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -108
  8. package/dist/index.js.map +1 -1
  9. package/dist/node-context-selection.d.ts +11 -0
  10. package/dist/node-context-selection.d.ts.map +1 -0
  11. package/dist/node-context-selection.js +77 -0
  12. package/dist/node-context-selection.js.map +1 -0
  13. package/dist/node-context.d.ts +14 -0
  14. package/dist/node-context.d.ts.map +1 -0
  15. package/dist/node-context.js +30 -0
  16. package/dist/node-context.js.map +1 -0
  17. package/dist/recorder.d.ts +2 -40
  18. package/dist/recorder.d.ts.map +1 -1
  19. package/dist/recorder.js +1 -239
  20. package/dist/recorder.js.map +1 -1
  21. package/dist/recorder.part01.d.ts +56 -0
  22. package/dist/recorder.part01.d.ts.map +1 -0
  23. package/dist/recorder.part01.js +76 -0
  24. package/dist/recorder.part01.js.map +1 -0
  25. package/dist/recorder.part02.d.ts +5 -0
  26. package/dist/recorder.part02.d.ts.map +1 -0
  27. package/dist/recorder.part02.js +54 -0
  28. package/dist/recorder.part02.js.map +1 -0
  29. package/dist/recorder.part03.d.ts +6 -0
  30. package/dist/recorder.part03.d.ts.map +1 -0
  31. package/dist/recorder.part03.js +118 -0
  32. package/dist/recorder.part03.js.map +1 -0
  33. package/dist/style.d.ts.map +1 -1
  34. package/dist/style.js +4 -97
  35. package/dist/style.js.map +1 -1
  36. package/dist/worker/worker.d.ts +4 -76
  37. package/dist/worker/worker.d.ts.map +1 -1
  38. package/dist/worker/worker.js +3 -240
  39. package/dist/worker/worker.js.map +1 -1
  40. package/dist/worker/worker.part01.d.ts +59 -0
  41. package/dist/worker/worker.part01.d.ts.map +1 -0
  42. package/dist/worker/worker.part01.js +40 -0
  43. package/dist/worker/worker.part01.js.map +1 -0
  44. package/dist/worker/worker.part02.d.ts +12 -0
  45. package/dist/worker/worker.part02.d.ts.map +1 -0
  46. package/dist/worker/worker.part02.js +121 -0
  47. package/dist/worker/worker.part02.js.map +1 -0
  48. package/dist/worker/worker.part03.d.ts +13 -0
  49. package/dist/worker/worker.part03.d.ts.map +1 -0
  50. package/dist/worker/worker.part03.js +106 -0
  51. package/dist/worker/worker.part03.js.map +1 -0
  52. package/package.json +3 -3
@@ -0,0 +1,121 @@
1
+ import { resolve as resolvePath } from 'node:path';
2
+ import { installRuntimeViewportOverlay, readRuntimeViewport, updateRuntimeViewport, } from '@flyingrobots/bijou';
3
+ import { DISABLE_MOUSE, mouseModeEnableSequence, resolveWorkerMouseMode, } from './worker-mouse-mode.js';
4
+ import { defaultWorkerThreadBindings, } from './worker.part01.js';
5
+ /**
6
+ * Spawns a background worker thread to run the TEA application.
7
+ * The main thread delegates all logic to the worker, only handling raw I/O
8
+ * and frame rendering (to keep the TTY responsive).
9
+ *
10
+ * @param options - Configuration including the path to the worker entry file.
11
+ * @returns A handle to the running worker.
12
+ */
13
+ export function runInWorker(options, bindings = defaultWorkerThreadBindings()) {
14
+ if (!bindings.isMainThread) {
15
+ throw new Error('runInWorker must be called from the main thread.');
16
+ }
17
+ const ctx = options.ctx ?? bindings.createNodeContext();
18
+ installRuntimeViewportOverlay(ctx);
19
+ const useAltScreen = options.altScreen ?? true;
20
+ const useHideCursor = options.hideCursor ?? true;
21
+ const mouseMode = resolveWorkerMouseMode(options);
22
+ const useMouse = mouseMode !== undefined;
23
+ if (useAltScreen || useHideCursor) {
24
+ ctx.io.write('\x1b[?1049h'); // ENTER_ALT_SCREEN
25
+ if (useHideCursor)
26
+ ctx.io.write('\x1b[?25l'); // HIDE_CURSOR
27
+ }
28
+ if (useMouse) {
29
+ ctx.io.write(mouseModeEnableSequence(mouseMode)); // ENABLE_MOUSE
30
+ }
31
+ else {
32
+ ctx.io.write(DISABLE_MOUSE);
33
+ }
34
+ const serializableOptions = {
35
+ altScreen: options.altScreen,
36
+ hideCursor: options.hideCursor,
37
+ mouse: options.mouse,
38
+ mouseMode: options.mouseMode,
39
+ css: options.css,
40
+ };
41
+ const worker = bindings.createWorker(resolvePath(options.entry), {
42
+ workerData: {
43
+ isBijouWorker: true,
44
+ options: serializableOptions,
45
+ runtime: readRuntimeViewport(ctx.runtime),
46
+ },
47
+ execArgv: options.execArgv,
48
+ // Pipe stdout/stderr so we can capture logs if needed, but primarily use IPC
49
+ });
50
+ const inputHandle = ctx.io.rawInput((data) => {
51
+ worker.postMessage({ type: 'io:data', data });
52
+ });
53
+ const resizeHandle = ctx.io.onResize((columns, rows) => {
54
+ const nextViewport = updateRuntimeViewport(ctx.runtime, columns, rows);
55
+ worker.postMessage({
56
+ type: 'io:resize',
57
+ ...nextViewport,
58
+ });
59
+ });
60
+ const onExit = new Promise((resolve, reject) => {
61
+ let requestedQuit = false;
62
+ let forcedTerminate = false;
63
+ worker.on('message', (msg) => {
64
+ if (msg.type === 'render:frame') {
65
+ ctx.io.write(msg.output);
66
+ }
67
+ else if (msg.type === 'error') {
68
+ ctx.io.writeError(msg.message);
69
+ }
70
+ else if (msg.type === 'data') {
71
+ options.onMessage?.(msg.payload);
72
+ }
73
+ else {
74
+ requestedQuit = true;
75
+ bindings.scheduleTimeout(() => {
76
+ if (requestedQuit) {
77
+ forcedTerminate = true;
78
+ void worker.terminate();
79
+ }
80
+ }, 50);
81
+ }
82
+ });
83
+ worker.on('error', (err) => {
84
+ cleanup();
85
+ reject(err);
86
+ });
87
+ worker.on('exit', (code) => {
88
+ cleanup();
89
+ if (requestedQuit && (code === 0 || forcedTerminate)) {
90
+ resolve();
91
+ return;
92
+ }
93
+ if (code !== 0)
94
+ reject(new Error(`Worker stopped with exit code ${String(code)}`));
95
+ else
96
+ resolve();
97
+ });
98
+ function cleanup() {
99
+ inputHandle.dispose();
100
+ resizeHandle.dispose();
101
+ if (useMouse) {
102
+ ctx.io.write(DISABLE_MOUSE);
103
+ }
104
+ if (useAltScreen || useHideCursor) {
105
+ ctx.io.write('\x1b[?1049l'); // EXIT_ALT_SCREEN
106
+ if (useHideCursor)
107
+ ctx.io.write('\x1b[?25h'); // SHOW_CURSOR
108
+ }
109
+ }
110
+ });
111
+ return {
112
+ send: (payload) => {
113
+ worker.postMessage({ type: 'data', payload });
114
+ },
115
+ terminate: async () => {
116
+ await worker.terminate();
117
+ },
118
+ onExit,
119
+ };
120
+ }
121
+ //# sourceMappingURL=worker.part02.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.part02.js","sourceRoot":"","sources":["../../src/worker/worker.part02.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { App } from '@flyingrobots/bijou-tui';
2
+ import { type WorkerMessage, type WorkerThreadBindings } from './worker.part01.js';
3
+ /**
4
+ * The entry point for the worker thread. Must be called in the file
5
+ * specified by `options.entry` in `runInWorker()`.
6
+ *
7
+ * Intercepts the normal `run()` execution, redirecting I/O to the parent port.
8
+ *
9
+ * @param app - The TEA app to run.
10
+ */
11
+ export declare function startWorkerApp<Model, M>(app: App<Model, M>, bindings?: WorkerThreadBindings): Promise<void>;
12
+ export declare function isWorkerMessage(msg: unknown): msg is WorkerMessage;
13
+ //# sourceMappingURL=worker.part03.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.part03.d.ts","sourceRoot":"","sources":["../../src/worker/worker.part03.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAc,MAAM,yBAAyB,CAAC;AAO/D,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAE1B,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,CAAC,EAC3C,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,QAAQ,GAAE,oBAAoD,GAC7D,OAAO,CAAC,IAAI,CAAC,CAwFf;AACD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CASlE"}
@@ -0,0 +1,106 @@
1
+ import { installRuntimeViewportOverlay, updateRuntimeViewport, } from '@flyingrobots/bijou';
2
+ import { isObjectRecord, readBijouWorkerData } from './worker-data.js';
3
+ import { DISABLE_MOUSE, mouseModeEnableSequence, resolveWorkerMouseMode, } from './worker-mouse-mode.js';
4
+ import { defaultWorkerThreadBindings, } from './worker.part01.js';
5
+ /**
6
+ * The entry point for the worker thread. Must be called in the file
7
+ * specified by `options.entry` in `runInWorker()`.
8
+ *
9
+ * Intercepts the normal `run()` execution, redirecting I/O to the parent port.
10
+ *
11
+ * @param app - The TEA app to run.
12
+ */
13
+ export async function startWorkerApp(app, bindings = defaultWorkerThreadBindings()) {
14
+ const port = bindings.parentPort;
15
+ if (bindings.isMainThread || port === null) {
16
+ throw new Error('startWorkerApp must be called from within a worker thread.');
17
+ }
18
+ const initData = readBijouWorkerData(bindings.workerData);
19
+ const proxyCtx = bindings.createNodeContext();
20
+ installRuntimeViewportOverlay(proxyCtx);
21
+ const { setDefaultContext } = await import('@flyingrobots/bijou');
22
+ setDefaultContext(proxyCtx);
23
+ updateRuntimeViewport(proxyCtx.runtime, initData.runtime.columns, initData.runtime.rows);
24
+ const proxyMouseMode = resolveWorkerMouseMode(initData.options);
25
+ const ignoredProxyWrites = new Set([DISABLE_MOUSE]);
26
+ if (proxyMouseMode !== undefined) {
27
+ ignoredProxyWrites.add(mouseModeEnableSequence(proxyMouseMode));
28
+ }
29
+ proxyCtx.io.write = (data) => {
30
+ if (ignoredProxyWrites.has(data))
31
+ return;
32
+ port.postMessage({
33
+ type: 'render:frame',
34
+ output: data,
35
+ });
36
+ };
37
+ proxyCtx.io.writeError = (data) => {
38
+ port.postMessage({ type: 'error', message: data });
39
+ };
40
+ // The main thread owns terminal mode; the worker still parses forwarded input.
41
+ const proxyOptions = {
42
+ css: initData.options.css,
43
+ ctx: proxyCtx,
44
+ altScreen: false,
45
+ hideCursor: false,
46
+ mouse: initData.options.mouse,
47
+ mouseMode: initData.options.mouseMode,
48
+ };
49
+ proxyCtx.io.rawInput = (handler) => {
50
+ const listener = (msg) => {
51
+ if (!isWorkerMessage(msg))
52
+ return;
53
+ if (msg.type === 'io:data')
54
+ handler(msg.data);
55
+ };
56
+ port.on('message', listener);
57
+ return {
58
+ dispose: () => {
59
+ port.off('message', listener);
60
+ },
61
+ };
62
+ };
63
+ proxyCtx.io.onResize = (handler) => {
64
+ const listener = (msg) => {
65
+ if (!isWorkerMessage(msg))
66
+ return;
67
+ if (msg.type === 'io:resize') {
68
+ const nextViewport = updateRuntimeViewport(proxyCtx.runtime, msg.columns, msg.rows);
69
+ handler(nextViewport.columns, nextViewport.rows);
70
+ }
71
+ };
72
+ port.on('message', listener);
73
+ return {
74
+ dispose: () => {
75
+ port.off('message', listener);
76
+ },
77
+ };
78
+ };
79
+ proxyCtx.io.onData = (handler) => {
80
+ const listener = (msg) => {
81
+ if (!isWorkerMessage(msg))
82
+ return;
83
+ if (msg.type === 'data')
84
+ handler(msg.payload);
85
+ };
86
+ port.on('message', listener);
87
+ return {
88
+ dispose: () => {
89
+ port.off('message', listener);
90
+ },
91
+ };
92
+ };
93
+ await bindings.runApp(app, proxyOptions);
94
+ port.postMessage({ type: 'quit' });
95
+ }
96
+ export function isWorkerMessage(msg) {
97
+ if (!isObjectRecord(msg))
98
+ return false;
99
+ if (msg['type'] === 'io:data')
100
+ return typeof msg['data'] === 'string';
101
+ if (msg['type'] === 'io:resize') {
102
+ return (typeof msg['columns'] === 'number' && typeof msg['rows'] === 'number');
103
+ }
104
+ return msg['type'] === 'data' || msg['type'] === 'quit';
105
+ }
106
+ //# sourceMappingURL=worker.part03.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.part03.js","sourceRoot":"","sources":["../../src/worker/worker.part03.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyingrobots/bijou-node",
3
- "version": "7.2.0",
3
+ "version": "8.0.0-rc.1",
4
4
  "description": "Node.js adapter for bijou — chalk styling, readline I/O, process runtime.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -24,13 +24,13 @@
24
24
  "lint": "tsc --noEmit"
25
25
  },
26
26
  "dependencies": {
27
- "@flyingrobots/bijou-tui": "7.2.0",
27
+ "@flyingrobots/bijou-tui": "8.0.0-rc.1",
28
28
  "chalk": "^5.6.2",
29
29
  "gifenc": "^1.0.3",
30
30
  "oled-font-5x7": "^1.0.3"
31
31
  },
32
32
  "peerDependencies": {
33
- "@flyingrobots/bijou": "7.2.0"
33
+ "@flyingrobots/bijou": "8.0.0-rc.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^22.0.0",