Sociably Stream
Reactive programming stream for handling events in back-end.
⚠ This package is still on early experimental. There might be breaking changes
in the future for supporting cluster. You can check the future road map here.
Install
npm install @sociably/stream
yarn add @sociably/stream
Docs
Check the Reactive Programming
document and the package reference.
Example
import { makeContainer, IntentRecognizer } from '@sociably/core';
import { fromApp } from '@sociably/stream';
import { map, filter } from '@sociably/stream/operators';
import app from './app';
const event$ = fromApp(app);
const textMsg$ = events$.pipe(
filter(({ event }) => event.type === 'text'),
map(
makeContainer({ deps: [IntentRecognizer] })(
(recognizer) =>
async (context) => {
const { channel, text } = context.event;
const intent = await recognizer.detectText(channel, text);
return { ...context, intent };
}
)
)
);
textMsg$.subscribe(async ({ intent, reply }) => {
const action = intent.type;
if (action) {
await reply(`start ${action}...`);
}
});