- Foldable left panel (user profile) and right panel (task details) - Clicking a task in the list or graph node selects it and shows details - Both views (task list + graph) always mounted via absolute inset-0 for correct canvas dimensions; tabs toggle visibility with opacity - Graph node selection animation: other nodes repel outward (charge -600), then selected node smoothly slides to center (500ms cubic ease-out), then charge restores to -120 and graph stabilizes - Graph re-fits on tab switch and panel resize via ResizeObserver - Fix UUID string IDs throughout (backend returns UUIDs, not integers) - Add TaskDetailPanel, UserPanel components - Add CLAUDE.md project documentation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
is-stream
Check if something is a Node.js stream
Install
$ npm install is-stream
Usage
const fs = require('fs');
const isStream = require('is-stream');
isStream(fs.createReadStream('unicorn.png'));
//=> true
isStream({});
//=> false
API
isStream(stream)
Returns a boolean for whether it's a Stream.
isStream.writable(stream)
Returns a boolean for whether it's a stream.Writable.
isStream.readable(stream)
Returns a boolean for whether it's a stream.Readable.
isStream.duplex(stream)
Returns a boolean for whether it's a stream.Duplex.
isStream.transform(stream)
Returns a boolean for whether it's a stream.Transform.
Related
- is-file-stream - Detect if a stream is a file stream
Get professional support for this package with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.