Package Exports
- @flyingrobots/bijou-node
- @flyingrobots/bijou-node/package.json
Readme
@flyingrobots/bijou-node
Node.js adapters and runtime utilities for Bijou.
This package bridges the pure @flyingrobots/bijou core and the @flyingrobots/bijou-tui runtime to the Node.js environment. It owns runtime detection, terminal I/O, Chalk-backed styling, worker-thread helpers, and the native surface recorder.
Package Role
- Worker runtime support —
runInWorker()andstartWorkerApp()let TEA apps move heavy update work off the main thread while keeping input and rendering responsive. - Native surface recorder — scripted captures can be recorded directly from captured
Surface[]frames withrecordDemoGif(). - Node boundary stays explicit — runtime facts, I/O, and styling remain behind the port interfaces instead of leaking
process,readline, or Chalk into the pure packages.
Install
npm install @flyingrobots/bijou @flyingrobots/bijou-nodeUsage
import { initDefaultContext } from '@flyingrobots/bijou-node';
import { box, headerBox } from '@flyingrobots/bijou';
// Wire up Node.js adapters and set the default context.
// Auto-detects TTY, CI, NO_COLOR, and TERM=dumb.
initDefaultContext();
console.log(headerBox('My CLI', { detail: 'v1.0.0' }));Features Breakdown
- Port implementation for Node.js: complete
RuntimePort,IOPort, andStylePortadapters for@flyingrobots/bijou. - Runtime detection: environment variables, TTY state, and terminal dimensions sourced from
process. - Interactive terminal I/O: stdin/stdout integration with readline and resize-event support.
- Styling backend: Chalk-powered color/style methods wired into bijou styling APIs.
- One-line bootstrap:
initDefaultContext()creates a production-ready context and registers it as default on first call. - Worker helpers:
runInWorker()andstartWorkerApp()for moving app logic into a worker thread. - Native recorder:
recordDemoGif()and related helpers for scripted surface capture.
What It Provides
bijou-node implements the three ports that @flyingrobots/bijou requires:
| Port | Implementation | What it does |
|---|---|---|
RuntimePort |
nodeRuntime() |
process.env, TTY detection, terminal dimensions |
IOPort |
nodeIO() |
process.stdout/stdin, readline, resize events |
StylePort |
chalkStyle() |
RGB/hex color via chalk, respects NO_COLOR |
API
// Individual port factories
import { nodeRuntime, nodeIO, chalkStyle } from '@flyingrobots/bijou-node';
// All-in-one context (most common)
import { createNodeContext, initDefaultContext } from '@flyingrobots/bijou-node';
// createNodeContext() — returns a BijouContext without setting it as default
const ctx = createNodeContext();
// initDefaultContext() — first call registers as global default; later calls return fresh unregistered contexts
initDefaultContext();If you need to replace the default context later in-process, call setDefaultContext(createNodeContext()) from @flyingrobots/bijou.
See ARCHITECTURE.md for how the adapter maps to Node.js APIs, and GUIDE.md for usage patterns.
For upgrading existing apps, see ../../docs/MIGRATING_TO_V4.md.
Related Packages
@flyingrobots/bijou— Zero-dependency core with all components and theme engine@flyingrobots/bijou-tui— TEA runtime for interactive terminal apps
License
Apache-2.0
Built with 💎 by FLYING ROBOTS
.-:::::'::: .-:. ::-.::::::. :::. .,-:::::/
;;;'''' ;;; ';;. ;;;;';;;`;;;;, `;;;,;;-'````'
[[[,,== [[[ '[[,[[[' [[[ [[[[[. '[[[[[ [[[[[[/
`$$$"`` $$' c$$" $$$ $$$ "Y$c$$"$$c. "$$
888 o88oo,.__ ,8P"` 888 888 Y88 `Y8bo,,,o88o
"MM, """"YUMMMmM" MMM MMM YM `'YMUP"YMM
:::::::.. ... :::::::. ... :::::::::::: .::::::.
;;;;``;;;; .;;;;;;;. ;;;'';;' .;;;;;;;.;;;;;;;;'''';;;` `
[[[,/[[[' ,[[ \[[, [[[__[[\.,[[ \[[, [[ '[==/[[[[,
$$$$$$c $$$, $$$ $$""""Y$$$$$, $$$ $$ ''' $
888b "88bo,"888,_ _,88P_88o,,od8P"888,_ _,88P 88, 88b dP
MMMM "W" "YMMMMMP" ""YUMMMP" "YMMMMMP" MMM "YMmMY"