Skip to content
A wrapper around both Firebase REST API and local in-memory database.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.gitignore
CHANGELOG.md
LICENSE
README.md
icon.jpg
package-lock.json
package.json

README.md

Fireman Icon

Fireman

A wrapper around both Firebase REST API and local in-memory database.

Fireman provides a unified interface to both remote Firebase database and local flame database. This allows for easy switching between the Firebase REST API in production and a local in-memory database for development and testing.

Installation

npm install @leonardvandriel/fireman

NB: Make sure you first backup your Firebase database before using Fireman. Fireman is still in alpha stage and might have some serious bugs. Also, you might just accidentally overwrite your Firebase database yourself. More information on the Firebase website and on Stack Overflow.

Usage

const fireman = require('@leonardvandriel/fireman')

// either setup fireman to use local database:
fireman.useLocalDB('database.json')
// or setup fireman to use remote database:
fireman.useRemoteDB('<app-name>', '<api-key>')
// or use local ephemeral database (in-memory):
fireman.useLocalDB(null)
fireman.localDB = { "key": "value" }

// Read user
console.log(fireman.get('/user/abcd'))

// Add user
fireman.put('/user/efgh', { name: 'Romona Moten', age: 20 })

// Query users
console.log(fireman.get('/user/abcd', { orderBy: 'age', limitToLast: 1, startAt: 10 }))

// Iterate over all users (50 per batch, 2 in parallel)
this.iterate('/user', 50, 2, user => console.log(user))

// Use multiple keys
console.log(fireman.get(['/user/abcd', '/usr/efgh']))
fireman.put(['/user/abcd', '/usr/efgh'], { name: 'Romona Moten', age: 20 })

// Reload local database from file
fireman.reload()
// Write local database to file (with pretty formatting)
fireman.save(true)

// Download remote to local database
fireman.sync()
fireman.save()

// Get all keys of object
console.log(fireman.keys('/user'))
// Get all values of object
console.log(fireman.values('/user'))

// Increment age by 10
console.log(fireman.increment('/user/abcd', { age: 10 }))

// Generate unique firebase keys
fireman.keyForNow()
fireman.keyForTimestamp(1234567890)
fireman.timestampForKey('--08_VAHXMEfyLmXTYVm')

Rules

Fireman has built-in support for managing database security and validation rules.

// Use the remote database
fireman.useRemoteDB()

// Download rules to file
fireman.syncRules()

// Show the difference between file and database
fireman.diffRules()

// Update rules from file
fireman.deployRules()

Tests

npm test

License

Fireman is licensed under the terms of the BSD 3-Clause License, see the included LICENSE file.

Authors

  • Leo Vandriel
  • Onno Faber
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.