@leonardvandriel/fireman

0.0.3 • Public • Published

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

Package Sidebar

Install

npm i @leonardvandriel/fireman

Weekly Downloads

0

Version

0.0.3

License

BSD-3-Clause

Last publish

Collaborators

  • leonardvandriel