One library.Infinite streams.
async-fusion/data unifies Kafka streaming, Spark processing, real-time React hooks, an LLM pipeline generator, and a live dashboard — all in one TypeScript-first package.
$ npm install @async-fusion/dataEverything you need,
nothing you don't
Stop gluing together five different libraries. async-fusion/data ships batteries-included.
Kafka Streaming
Full producer/consumer support with backpressure, windowing, joins, and stateful processing built-in.
Spark Integration
Submit and monitor Spark jobs, run SQL queries, and execute PySpark scripts directly from Node.js.
Pipeline Builder
Fluent, chainable API for building complex multi-source, multi-sink data pipelines in minutes.
React Hooks
Drop-in hooks for real-time Kafka data, Spark queries, and combined streams right in your components.
LLM Generator
Describe a pipeline in plain English — GPT, Gemini, or Claude generates the code for you.
Live Dashboard
One-line WebSocket dashboard with real-time throughput, metrics, and error tracking.
Reliability
Exponential-backoff retries, circuit breaker, dead-letter queues, and checkpointing — built-in.
TypeScript First
Full generics, strict types, and auto-complete everywhere. Zero runtime surprises.
Up and running
in minutes
Install
# npm
npm install @async-fusion/data
# yarn / pnpm
yarn add @async-fusion/dataBuild your first pipeline
import { PipelineBuilder } from '@async-fusion/data';
const pipeline = new PipelineBuilder({ name: 'my-pipeline' })
.source('kafka', {
topic: 'user-clicks',
brokers: ['localhost:9092'],
})
.transform(data => ({
...data,
processedAt: new Date().toISOString(),
}))
.transform(data => (data.value > 100 ? data : null))
.sink('console', { format: 'pretty' });
await pipeline.run();Describe a pipeline,
get the code
Use GPT-4, Gemini, Anthropic Claude, Groq, or a local model. The generator returns production-ready TypeScript and an immediately runnable pipeline instance.
- OpenAI
- Google Gemini
- Anthropic Claude
- Groq
- Local (Ollama / LM Studio)
import { LLMPipelineGenerator } from '@async-fusion/data';
const gen = new LLMPipelineGenerator({
provider: 'openai',
apiKey: process.env.OPENAI_KEY,
});
const result = await gen.generateFromDescription(
'Read from Kafka topic orders, filter > $100, group by user every 5min'
);
console.log(result.code);
await result.pipeline?.run();import { useKafkaTopic } from '@async-fusion/data/react';
function LiveFeed() {
const { messages, isConnected } = useKafkaTopic('user-activity', {
brokers: ['localhost:9092'],
});
return (
<div>
<span className={isConnected ? 'live' : 'connecting'}>
{isConnected ? 'Live' : 'Connecting…'}
</span>
{messages.map(msg => (
<div key={msg.offset}>{JSON.stringify(msg.value)}</div>
))}
</div>
);
}Real-time data,
in your components
Drop in useKafkaTopic, useSparkQuery, or useRealtimeData and your React components stay in sync with live streaming data automatically.
Start streaming today
Join developers building real-time data pipelines with async-fusion/data.