ActiveStream
ActiveStream is a simple observable stream controller for modern JS applications.
Installation and Usage
ES6 via npm
npm install @codewagon/active-stream
import ActiveStream from '@codewagon/active-stream';
const activeStream = new ActiveStream();
//subscribe to the stream
activeStream.stream.subscribe((event) => {
console.log(event);
})
//push data into the stream
activeStream.request({name: 'user-logged-in', data: {name: 'Victor'}});
REACT USAGE
import ActiveStream from '@codewagon/active-stream';
const activeStream = new ActiveStream();
//subscribe to the stream to receive events from the children components
// you can also export the handle like this:
// export const streamHandle = activeStream.request;
useEffect(() => {
activeStream.stream.subscribe((event) => {
// call services to handle business logic here
console.log(event);
});
}, []);
// passing the stream handle to the children component via the conxtext
...
<AppContext.Provider value={activeStream.request}>
...
//
// passing the stream handle to a child component as a prop
...
<ChildComponent {streamHandle: activeStream.request}>
...
//
//push data into the parent stream from the child component
streamHandle({name: 'user-logged-in', data: {name: 'Victor'}});
// usage inside a service
// make sure the stream handle has been exported from the component
// export const streamHandle = activeStream.request;
fetch(endPoint, {method: 'GET'})
.then(async response => {
//this event would be received in the component
streamHandle({name: 'user-logged-in', data: {data: response.json()}});
})
.catch(async response => {
//this event would be received in the component
streamHandle({name: 'user-logged-in', data: {status: 'failed'}});
})
Goals
- Smaller overall bundles sizes
- Provide better performance than preceding versions of ActiveStream
- To help create cross-platform resusable service layer for JS applications
- To simplify inter-component communication in JS applications
- To enable the separation of the Data layer in JS applications
Building/Testing
-
npm test
run tests