windowed-observable
Advanced tools
Comparing version 0.1.2 to 0.2.2
@@ -33,3 +33,4 @@ declare const EVENTS = "__events__"; | ||
unsubscribe(observer: Observer): void; | ||
clear(): void; | ||
} | ||
export default Observable; |
@@ -73,4 +73,8 @@ "use strict"; | ||
}; | ||
Observable.prototype.clear = function () { | ||
this.events = []; | ||
this.observers = []; | ||
}; | ||
return Observable; | ||
}()); | ||
exports.default = Observable; |
{ | ||
"name": "windowed-observable", | ||
"version": "0.1.2", | ||
"version": "0.2.2", | ||
"description": "Simple messaging api", | ||
@@ -5,0 +5,0 @@ "main": "./dist/index.js", |
112
README.md
@@ -1,1 +0,111 @@ | ||
# windowed-observable | ||
# windowed-observable | ||
**Messaging lib using a Pub/Sub observable scoped by namespaces.** | ||
**windowed-observable** is a library for messaging using Observables, making it easier to communicate multiple apps or parts of an app using the window. It expose a Observable that behaves like a scoped Pub/Sub topic using namespaces. | ||
## Installation | ||
```sh | ||
npm install windowed-obserbale | ||
# or | ||
yarn add windowed-observable | ||
``` | ||
## Introduction | ||
The observable is just like a Pub/Sub topic, there are scoped events and observers(listeners) on each namespace, and those namespaces can be cleared, and changed. | ||
## Usages | ||
### Common usage | ||
```ts | ||
import { Observable } from 'windowed-observable'; | ||
const observable = new Observable('konoha'); | ||
observable.subscribe((ninja) => { | ||
console.log({ ninja }) | ||
}) | ||
observable.dispatch('Uchiha Shisui'); | ||
// > Uchiha Shisui | ||
``` | ||
### Retrieving latest event | ||
```ts | ||
import { Observable } from 'windowed-observable'; | ||
const observable = new Observable('konoha'); | ||
observable.dispatch('Senju Tobirama'); | ||
observable.subscribe((ninja) => console.log({ ninja }), { latest: true }); | ||
// > Senju Tobirama | ||
``` | ||
### Unsubscribing and clearing | ||
```ts | ||
import { Observable } from 'windowed-observable'; | ||
const observable = new Observable('konoha'); | ||
const observer = (ninja) => console.log({ ninja }); | ||
observable.subscribe(observer) | ||
observable.dispatch('Uzumaki Naruto'); | ||
// > Uzumaki Naruto | ||
// Unsubscribing | ||
observable.unsubscribe(observer); | ||
// Clearing | ||
observable.clear(); | ||
``` | ||
### React App | ||
#### Observer component | ||
```tsx | ||
import React, { Component } from 'react'; | ||
import { Observable } from 'windowed-observable'; | ||
const observable = new Observable('konoha'); | ||
class NinjasList extends Component { | ||
state: { | ||
ninjas: [] | ||
} | ||
componentDidMount() { | ||
this.observer = (ninja) => { | ||
const ninjas = this.state.ninjas.concat(ninja); | ||
this.setState({ ninjas }); | ||
} | ||
observable.subscribe(this.observer); | ||
} | ||
componentWillUnmount() { | ||
observable.unsubscribe(this.observer); | ||
} | ||
render() { | ||
... | ||
// ninjas listing | ||
} | ||
} | ||
``` | ||
#### Dispatcher component | ||
```tsx | ||
import React from 'react'; | ||
import { Observable } from 'windowed-observable'; | ||
const observable = new Observable('konoha'); | ||
const handleClick = ninja = () => observable.dispatch(ninja); | ||
const AddNinjaButton = (ninja) => <button onClick={handleClick(ninja)}> Add ninja </button>; | ||
``` |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
9074
9
146
111