@flyingrobots/bijou-node 3.0.0 → 3.1.0
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/dist/io.d.ts +8 -2
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +5 -8
- package/dist/io.js.map +1 -1
- package/dist/worker/worker.d.ts +24 -4
- package/dist/worker/worker.d.ts.map +1 -1
- package/dist/worker/worker.js +48 -78
- package/dist/worker/worker.js.map +1 -1
- package/package.json +3 -3
package/dist/io.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ClockPort, type IOPort } from '@flyingrobots/bijou';
|
|
2
|
+
/** Optional overrides for {@link nodeIO}. */
|
|
3
|
+
export interface NodeIOOptions {
|
|
4
|
+
/** Clock override for deterministic timer scheduling in tests. */
|
|
5
|
+
clock?: ClockPort;
|
|
6
|
+
}
|
|
2
7
|
/**
|
|
3
8
|
* Create an {@link IOPort} backed by Node.js I/O primitives.
|
|
4
9
|
*
|
|
@@ -7,7 +12,8 @@ import type { IOPort } from '@flyingrobots/bijou';
|
|
|
7
12
|
* `rawInput`, `onResize`, and `setInterval` clean up their underlying
|
|
8
13
|
* resources when `dispose()` is called.
|
|
9
14
|
*
|
|
15
|
+
* @param options - Optional runtime overrides such as a deterministic clock for tests.
|
|
10
16
|
* @returns An {@link IOPort} bound to the current Node.js process.
|
|
11
17
|
*/
|
|
12
|
-
export declare function nodeIO(): IOPort;
|
|
18
|
+
export declare function nodeIO(options?: NodeIOOptions): IOPort;
|
|
13
19
|
//# sourceMappingURL=io.d.ts.map
|
package/dist/io.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,MAAM,EAAyC,MAAM,qBAAqB,CAAC;AAEvH,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAkJ1D"}
|
package/dist/io.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as readline from 'readline';
|
|
2
2
|
import { readFileSync, readdirSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
|
+
import { resolveClock } from '@flyingrobots/bijou';
|
|
4
5
|
/**
|
|
5
6
|
* Create an {@link IOPort} backed by Node.js I/O primitives.
|
|
6
7
|
*
|
|
@@ -9,9 +10,11 @@ import { join } from 'path';
|
|
|
9
10
|
* `rawInput`, `onResize`, and `setInterval` clean up their underlying
|
|
10
11
|
* resources when `dispose()` is called.
|
|
11
12
|
*
|
|
13
|
+
* @param options - Optional runtime overrides such as a deterministic clock for tests.
|
|
12
14
|
* @returns An {@link IOPort} bound to the current Node.js process.
|
|
13
15
|
*/
|
|
14
|
-
export function nodeIO() {
|
|
16
|
+
export function nodeIO(options = {}) {
|
|
17
|
+
const clock = resolveClock(options.clock);
|
|
15
18
|
return {
|
|
16
19
|
/**
|
|
17
20
|
* Write a string directly to `process.stdout`.
|
|
@@ -109,13 +112,7 @@ export function nodeIO() {
|
|
|
109
112
|
* @returns A {@link TimerHandle} that cancels the timer on disposal.
|
|
110
113
|
*/
|
|
111
114
|
setInterval(callback, ms) {
|
|
112
|
-
|
|
113
|
-
return {
|
|
114
|
-
/** Cancel the repeating timer. */
|
|
115
|
-
dispose() {
|
|
116
|
-
clearInterval(id);
|
|
117
|
-
},
|
|
118
|
-
};
|
|
115
|
+
return clock.setInterval(callback, ms);
|
|
119
116
|
},
|
|
120
117
|
/**
|
|
121
118
|
* Read an entire file synchronously as a UTF-8 string.
|
package/dist/io.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/worker.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { App } from '@flyingrobots/bijou-tui';
|
|
1
|
+
import { type BijouContext } from '@flyingrobots/bijou';
|
|
2
|
+
import type { App, RunOptions } from '@flyingrobots/bijou-tui';
|
|
3
|
+
interface WorkerInstance {
|
|
4
|
+
postMessage(message: unknown): void;
|
|
5
|
+
on(event: string, handler: (value: any) => void): void;
|
|
6
|
+
terminate(): Promise<number>;
|
|
7
|
+
}
|
|
8
|
+
interface WorkerParentPort {
|
|
9
|
+
on(event: string, listener: (msg: any) => void): void;
|
|
10
|
+
off(event: string, listener: (msg: any) => void): void;
|
|
11
|
+
postMessage(message: unknown): void;
|
|
12
|
+
}
|
|
13
|
+
interface WorkerThreadBindings {
|
|
14
|
+
isMainThread: boolean;
|
|
15
|
+
parentPort: WorkerParentPort | null;
|
|
16
|
+
workerData: unknown;
|
|
17
|
+
createWorker(entry: string, options: Record<string, unknown>): WorkerInstance;
|
|
18
|
+
createNodeContext(): BijouContext;
|
|
19
|
+
runApp<Model, M>(app: App<Model, M>, options: RunOptions<M>): Promise<void>;
|
|
20
|
+
scheduleTimeout(callback: () => void, ms: number): ReturnType<typeof setTimeout>;
|
|
21
|
+
}
|
|
3
22
|
export type WorkerMessage = {
|
|
4
23
|
type: 'io:data';
|
|
5
24
|
data: string;
|
|
@@ -74,7 +93,7 @@ export interface WorkerHandle {
|
|
|
74
93
|
* @param options - Configuration including the path to the worker entry file.
|
|
75
94
|
* @returns A handle to the running worker.
|
|
76
95
|
*/
|
|
77
|
-
export declare function runInWorker(options: RunWorkerOptions): WorkerHandle;
|
|
96
|
+
export declare function runInWorker(options: RunWorkerOptions, bindings?: WorkerThreadBindings): WorkerHandle;
|
|
78
97
|
/**
|
|
79
98
|
* The entry point for the worker thread. Must be called in the file
|
|
80
99
|
* specified by `options.entry` in `runInWorker()`.
|
|
@@ -83,5 +102,6 @@ export declare function runInWorker(options: RunWorkerOptions): WorkerHandle;
|
|
|
83
102
|
*
|
|
84
103
|
* @param app - The TEA app to run.
|
|
85
104
|
*/
|
|
86
|
-
export declare function startWorkerApp<Model, M>(app: App<Model, M
|
|
105
|
+
export declare function startWorkerApp<Model, M>(app: App<Model, M>, bindings?: WorkerThreadBindings): Promise<void>;
|
|
106
|
+
export {};
|
|
87
107
|
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/worker.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import { Worker, isMainThread, parentPort, workerData } from 'node:worker_threads';
|
|
2
2
|
import { resolve as resolvePath } from 'node:path';
|
|
3
|
+
import { installRuntimeViewportOverlay, readRuntimeViewport, updateRuntimeViewport, } from '@flyingrobots/bijou';
|
|
3
4
|
import { run } from '@flyingrobots/bijou-tui';
|
|
4
5
|
import { createNodeContext } from '../index.js';
|
|
6
|
+
function defaultWorkerThreadBindings() {
|
|
7
|
+
return {
|
|
8
|
+
isMainThread,
|
|
9
|
+
parentPort,
|
|
10
|
+
workerData,
|
|
11
|
+
createWorker(entry, options) {
|
|
12
|
+
return new Worker(entry, options);
|
|
13
|
+
},
|
|
14
|
+
createNodeContext,
|
|
15
|
+
runApp: run,
|
|
16
|
+
scheduleTimeout(callback, ms) {
|
|
17
|
+
return setTimeout(callback, ms);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
5
21
|
// ---------------------------------------------------------------------------
|
|
6
22
|
// Worker Environment API
|
|
7
23
|
// ---------------------------------------------------------------------------
|
|
@@ -9,15 +25,17 @@ import { createNodeContext } from '../index.js';
|
|
|
9
25
|
* Checks if the current environment is running inside a Bijou Worker.
|
|
10
26
|
*/
|
|
11
27
|
export function isBijouWorker() {
|
|
12
|
-
|
|
28
|
+
const bindings = defaultWorkerThreadBindings();
|
|
29
|
+
return !bindings.isMainThread && bindings.workerData?.isBijouWorker === true;
|
|
13
30
|
}
|
|
14
31
|
/**
|
|
15
32
|
* Sends a custom data message from the worker to the main thread.
|
|
16
33
|
* This will be received via the `onMessage` callback in `runInWorker`.
|
|
17
34
|
*/
|
|
18
35
|
export function sendToMain(payload) {
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
const bindings = defaultWorkerThreadBindings();
|
|
37
|
+
if (bindings.parentPort) {
|
|
38
|
+
bindings.parentPort.postMessage({ type: 'data', payload });
|
|
21
39
|
}
|
|
22
40
|
}
|
|
23
41
|
/**
|
|
@@ -28,12 +46,12 @@ export function sendToMain(payload) {
|
|
|
28
46
|
* @param options - Configuration including the path to the worker entry file.
|
|
29
47
|
* @returns A handle to the running worker.
|
|
30
48
|
*/
|
|
31
|
-
export function runInWorker(options) {
|
|
32
|
-
if (!isMainThread) {
|
|
49
|
+
export function runInWorker(options, bindings = defaultWorkerThreadBindings()) {
|
|
50
|
+
if (!bindings.isMainThread) {
|
|
33
51
|
throw new Error('runInWorker must be called from the main thread.');
|
|
34
52
|
}
|
|
35
|
-
const ctx = options.ctx ?? createNodeContext();
|
|
36
|
-
|
|
53
|
+
const ctx = options.ctx ?? bindings.createNodeContext();
|
|
54
|
+
installRuntimeViewportOverlay(ctx);
|
|
37
55
|
const useAltScreen = options.altScreen ?? true;
|
|
38
56
|
const useHideCursor = options.hideCursor ?? true;
|
|
39
57
|
const useMouse = options.mouse ?? false;
|
|
@@ -53,14 +71,11 @@ export function runInWorker(options) {
|
|
|
53
71
|
mouse: options.mouse,
|
|
54
72
|
css: options.css,
|
|
55
73
|
};
|
|
56
|
-
const worker =
|
|
74
|
+
const worker = bindings.createWorker(resolvePath(options.entry), {
|
|
57
75
|
workerData: {
|
|
58
76
|
isBijouWorker: true,
|
|
59
77
|
options: serializableOptions,
|
|
60
|
-
runtime:
|
|
61
|
-
columns: sanitizeDimension(ctx.runtime.columns),
|
|
62
|
-
rows: sanitizeDimension(ctx.runtime.rows),
|
|
63
|
-
},
|
|
78
|
+
runtime: readRuntimeViewport(ctx.runtime),
|
|
64
79
|
},
|
|
65
80
|
execArgv: options.execArgv,
|
|
66
81
|
// Pipe stdout/stderr so we can capture logs if needed, but primarily use IPC
|
|
@@ -70,11 +85,8 @@ export function runInWorker(options) {
|
|
|
70
85
|
worker.postMessage({ type: 'io:data', data });
|
|
71
86
|
});
|
|
72
87
|
const resizeHandle = ctx.io.onResize((columns, rows) => {
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
ctx.runtime.columns = nextColumns;
|
|
76
|
-
ctx.runtime.rows = nextRows;
|
|
77
|
-
worker.postMessage({ type: 'io:resize', columns: nextColumns, rows: nextRows });
|
|
88
|
+
const nextViewport = updateRuntimeViewport(ctx.runtime, columns, rows);
|
|
89
|
+
worker.postMessage({ type: 'io:resize', ...nextViewport });
|
|
78
90
|
});
|
|
79
91
|
const onExit = new Promise((resolve, reject) => {
|
|
80
92
|
let requestedQuit = false;
|
|
@@ -96,7 +108,7 @@ export function runInWorker(options) {
|
|
|
96
108
|
}
|
|
97
109
|
else if (msg.type === 'quit') {
|
|
98
110
|
requestedQuit = true;
|
|
99
|
-
|
|
111
|
+
bindings.scheduleTimeout(() => {
|
|
100
112
|
if (requestedQuit) {
|
|
101
113
|
forcedTerminate = true;
|
|
102
114
|
void worker.terminate();
|
|
@@ -149,24 +161,23 @@ export function runInWorker(options) {
|
|
|
149
161
|
*
|
|
150
162
|
* @param app - The TEA app to run.
|
|
151
163
|
*/
|
|
152
|
-
export async function startWorkerApp(app) {
|
|
153
|
-
if (isMainThread || !parentPort) {
|
|
164
|
+
export async function startWorkerApp(app, bindings = defaultWorkerThreadBindings()) {
|
|
165
|
+
if (bindings.isMainThread || !bindings.parentPort) {
|
|
154
166
|
throw new Error('startWorkerApp must be called from within a worker thread.');
|
|
155
167
|
}
|
|
156
|
-
const initData = workerData;
|
|
168
|
+
const initData = bindings.workerData;
|
|
157
169
|
// Create a proxy Context that speaks IPC instead of true I/O
|
|
158
|
-
const proxyCtx = createNodeContext();
|
|
159
|
-
|
|
170
|
+
const proxyCtx = bindings.createNodeContext();
|
|
171
|
+
installRuntimeViewportOverlay(proxyCtx);
|
|
160
172
|
const { setDefaultContext } = await import('@flyingrobots/bijou');
|
|
161
173
|
setDefaultContext(proxyCtx);
|
|
162
|
-
proxyCtx.runtime.columns
|
|
163
|
-
proxyCtx.runtime.rows = sanitizeDimension(initData.runtime?.rows ?? proxyCtx.runtime.rows);
|
|
174
|
+
updateRuntimeViewport(proxyCtx.runtime, initData.runtime?.columns ?? proxyCtx.runtime.columns, initData.runtime?.rows ?? proxyCtx.runtime.rows);
|
|
164
175
|
// Hijack the WritePort to send frames back to main thread
|
|
165
176
|
proxyCtx.io.write = (data) => {
|
|
166
|
-
parentPort.postMessage({ type: 'render:frame', output: data });
|
|
177
|
+
bindings.parentPort.postMessage({ type: 'render:frame', output: data });
|
|
167
178
|
};
|
|
168
179
|
proxyCtx.io.writeError = (data) => {
|
|
169
|
-
parentPort.postMessage({ type: 'error', message: data });
|
|
180
|
+
bindings.parentPort.postMessage({ type: 'error', message: data });
|
|
170
181
|
};
|
|
171
182
|
// We need to bypass the standard run() setup since the main thread
|
|
172
183
|
// already handled alt screen and mouse modes. We tell run() to do nothing.
|
|
@@ -183,22 +194,21 @@ export async function startWorkerApp(app) {
|
|
|
183
194
|
if (msg.type === 'io:data')
|
|
184
195
|
handler(msg.data);
|
|
185
196
|
};
|
|
186
|
-
parentPort.on('message', listener);
|
|
197
|
+
bindings.parentPort.on('message', listener);
|
|
187
198
|
return {
|
|
188
|
-
dispose: () => parentPort.off('message', listener)
|
|
199
|
+
dispose: () => bindings.parentPort.off('message', listener)
|
|
189
200
|
};
|
|
190
201
|
};
|
|
191
202
|
proxyCtx.io.onResize = (handler) => {
|
|
192
203
|
const listener = (msg) => {
|
|
193
204
|
if (msg.type === 'io:resize') {
|
|
194
|
-
proxyCtx.runtime.columns
|
|
195
|
-
|
|
196
|
-
handler(proxyCtx.runtime.columns, proxyCtx.runtime.rows);
|
|
205
|
+
const nextViewport = updateRuntimeViewport(proxyCtx.runtime, msg.columns, msg.rows);
|
|
206
|
+
handler(nextViewport.columns, nextViewport.rows);
|
|
197
207
|
}
|
|
198
208
|
};
|
|
199
|
-
parentPort.on('message', listener);
|
|
209
|
+
bindings.parentPort.on('message', listener);
|
|
200
210
|
return {
|
|
201
|
-
dispose: () => parentPort.off('message', listener)
|
|
211
|
+
dispose: () => bindings.parentPort.off('message', listener)
|
|
202
212
|
};
|
|
203
213
|
};
|
|
204
214
|
proxyCtx.io.onData = (handler) => {
|
|
@@ -206,54 +216,14 @@ export async function startWorkerApp(app) {
|
|
|
206
216
|
if (msg.type === 'data')
|
|
207
217
|
handler(msg.payload);
|
|
208
218
|
};
|
|
209
|
-
parentPort.on('message', listener);
|
|
219
|
+
bindings.parentPort.on('message', listener);
|
|
210
220
|
return {
|
|
211
|
-
dispose: () => parentPort.off('message', listener)
|
|
221
|
+
dispose: () => bindings.parentPort.off('message', listener)
|
|
212
222
|
};
|
|
213
223
|
};
|
|
214
224
|
// Run the app using the proxy context
|
|
215
|
-
await
|
|
225
|
+
await bindings.runApp(app, proxyOptions);
|
|
216
226
|
// Signal main thread to shut down
|
|
217
|
-
parentPort.postMessage({ type: 'quit' });
|
|
218
|
-
}
|
|
219
|
-
function sanitizeDimension(value) {
|
|
220
|
-
if (!Number.isFinite(value))
|
|
221
|
-
return 0;
|
|
222
|
-
return Math.max(0, Math.floor(value));
|
|
223
|
-
}
|
|
224
|
-
function installRuntimeOverlay(ctx) {
|
|
225
|
-
const baseRuntime = ctx.runtime;
|
|
226
|
-
const state = {
|
|
227
|
-
columns: sanitizeDimension(baseRuntime.columns),
|
|
228
|
-
rows: sanitizeDimension(baseRuntime.rows),
|
|
229
|
-
};
|
|
230
|
-
const runtime = {
|
|
231
|
-
env(key) {
|
|
232
|
-
return baseRuntime.env(key);
|
|
233
|
-
},
|
|
234
|
-
get stdoutIsTTY() {
|
|
235
|
-
return baseRuntime.stdoutIsTTY;
|
|
236
|
-
},
|
|
237
|
-
get stdinIsTTY() {
|
|
238
|
-
return baseRuntime.stdinIsTTY;
|
|
239
|
-
},
|
|
240
|
-
get columns() {
|
|
241
|
-
return state.columns;
|
|
242
|
-
},
|
|
243
|
-
set columns(value) {
|
|
244
|
-
state.columns = sanitizeDimension(value);
|
|
245
|
-
},
|
|
246
|
-
get rows() {
|
|
247
|
-
return state.rows;
|
|
248
|
-
},
|
|
249
|
-
set rows(value) {
|
|
250
|
-
state.rows = sanitizeDimension(value);
|
|
251
|
-
},
|
|
252
|
-
get refreshRate() {
|
|
253
|
-
return baseRuntime.refreshRate;
|
|
254
|
-
},
|
|
255
|
-
};
|
|
256
|
-
ctx.runtime = runtime;
|
|
257
|
-
return runtime;
|
|
227
|
+
bindings.parentPort.postMessage({ type: 'quit' });
|
|
258
228
|
}
|
|
259
229
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.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": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
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": "3.
|
|
27
|
+
"@flyingrobots/bijou-tui": "3.1.0",
|
|
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": "3.
|
|
33
|
+
"@flyingrobots/bijou": "3.1.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^22.0.0",
|