Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

windowed-observable

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

windowed-observable - npm Package Compare versions

Comparing version 0.1.2 to 0.2.2

dist/bla.d.ts

1

dist/observable.d.ts

@@ -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;

2

package.json
{
"name": "windowed-observable",
"version": "0.1.2",
"version": "0.2.2",
"description": "Simple messaging api",

@@ -5,0 +5,0 @@ "main": "./dist/index.js",

@@ -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>;
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc