https://github.com/barbuza/kebakaran
high level utilities for firebase interaction
https://github.com/barbuza/kebakaran
firebase
Last synced: 10 months ago
JSON representation
high level utilities for firebase interaction
- Host: GitHub
- URL: https://github.com/barbuza/kebakaran
- Owner: barbuza
- Created: 2016-02-08T13:24:35.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2018-08-28T16:38:50.000Z (almost 8 years ago)
- Last Synced: 2025-08-11T00:55:21.645Z (11 months ago)
- Topics: firebase
- Language: JavaScript
- Homepage:
- Size: 31.3 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# kebakaran [](https://travis-ci.org/barbuza/kebakaran) [](https://coveralls.io/github/barbuza/kebakaran?branch=master) [](https://badge.fury.io/js/kebakaran)
high level utilities for firebase interaction
## FirebaseStruct
```js
import Firebase from 'firebase';
import { FirebaseStruct } from 'kebakaran';
const userId = 'foo';
const struct = new FirebaseStruct({
name: new Firebase(`.../users/${userId}/name`),
isOnline: new Firebase(`.../presence/${userId}`),
});
struct.on('value', value => {
// value === { name: ... , isOnline: ... }
});
```
## FirebaseList
```js
import Firebase from 'firebase';
import { FirebaseList, FirebaseStruct } from 'kebakaran';
const list = new FirebaseList(new Firebase('.../top-users'), key => new FirebaseStruct({
name: new Firebase(`.../users/${key}/name`),
isOnline: new Firebase(`.../presence/${key}`),
}));
list.on('value', value => {
// value === [ { id: ... , name: ... , isOnline: ... } ]
});
```
## FirebaseStream
```js
import Firebase from 'firebase';
import { put } from 'redux-saga';
import { FirebaseStream, FirebaseList, FirebaseStruct } from 'kebakaran';
export default function* topUsersSaga() {
const list = new FirebaseList(new Firebase('.../top-users'), key => new FirebaseStruct({
name: new Firebase(`.../users/${key}/name`),
isOnline: new Firebase(`.../presence/${key}`),
}));
const stream = new FirebaseStream(list);
try {
while (true) {
const users = yield stream.next();
yield put({
type: 'TOP_USERS',
users
});
}
} finally {
stream.close();
list.close();
}
}
```