New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

firebase-on-error

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

firebase-on-error

Firebase global error callbacks

  • 0.6.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6
increased by100%
Maintainers
1
Weekly downloads
 
Created
Source

firebase-on-error

Project Status: Inactive - The project has reached a stable, usable state but is no longer being actively developed; support/maintenance will be provided as time allows.

This module allows you to register callbacks to be notified when any Firebase operation reports an error. This is useful when your app has no error recovery procedure beyond asking the user to reload the page (which is not a terrible approach, since Firebase is pretty reliable!). You can also register callbacks to be notified when a write is being slow, so you can warn the user that their connection is bad and not all changes have yet been saved.

If you have a server to issue simulation auth tokens, you can also automatically get security rules debugging information attached to any permission denied exception, with no performance or bandwidth penalty to your overall app.

As a bonus, if you've registered any callbacks and Promise is declared in your browser (whether natively or via a polyfill), then all promises returned by Firebase operations will have a finally method polyfilled on them if necessary. You're welcome!

The module adds these new public functions to the Firebase global class:

  /**
   * Registers a global callback that will be invoked whenever any Firebase API indicates that an
   * error occurred, unless your onComplete function for that call returns (or is) IGNORE_ERROR.
   * Errors that occur on calls made before the first callback is registered will not be captured.
   * @param  {Function} callback The function to call back when an error occurs.  It will be passed
   *     the Firebase Error, the reference (or query or onDisconnect instance), the method name, and
   *     the arguments passed to the Firebase function call as arguments.
   * @return {Function} The callback function.
   */
Firebase.onError = function(callback) {...}

/**
 * Unregisters a global error callback.
 * @param  {Function} callback A previously registered callback.
 */
Firebase.offError = function(callback) {...}

/**
 * Registers a global callback that will be invoked whenever a Firebase API write function doesn't
 * complete fast enough.  The callback will be invoked every time the number of outstanding slow
 * calls changes (either up or down).  Write functions in Firebase are set, update, remove, push,
 * setWithPriority, setPriority, and transaction.
 * @param  {number} timeout The number of milliseconds a write function is allowed to run before
 *     it's added to the count of slow ones.
 * @param  {Function} callback The callback to invoke whenever the count of outstanding slow calls
 *     changes.  The arguments to the callback are the current count, +1 or -1 to indicate whether
 *     the count was just incremented or decremented, a short description of the stalled call, and
 *     the monotonously increasing serial number of the write.
 * @return {Function} The callback function, for convenience.
 */
Firebase.onSlowWrite = function(timeout, callback) {...}

/**
 * Unregisters a global slow write callback.
 * @param  {Function} callback A previously registered callback.
 */
Firebase.offSlowWrite = function(callback) {...}

/**
 * Requests that extra debugging information be provided for permission denied errors.  This works
 * by obtaining a special auth token (via the callback) that sets the simulated and debug flags,
 * and reissuing the failing request on a separate connection, then recording the debug
 * information that Firebase sends back.  Requires Promise to be available in the browser.
 * @param  {Function} simulatedTokenGenerator A callback that will be invoked with the uid of the
 *     user for whom permission was denied, and that returns a promise that resolves to a Firebase
 *     auth token for that uid with simulated and debug set to true.  You'll likely need to be
 *     running your own server loaded with your Firebase master secret to securely generate such a
 *     token.  You can generate tokens in Node.js like this, for example:
 *       var FirebaseTokenGenerator = require("firebase-token-generator");
 *       var tokenGenerator = new FirebaseTokenGenerator("<YOUR_FIREBASE_SECRET>");
 *       var token = tokenGenerator.createToken({uid: uid}, {simulate: true, debug: true});
 * @param  {Number} maxSimulatedCallDuration The maximum duration in milliseconds to allow for
 *     the simulated call to complete.  The callback and promise on the original call won't be
 *     resolved until the simulation finishes one way or another.  Defaults to 5 seconds.
 * @param  {Function} callFilter A function that decides which failed calls to debug.  It gets
 *     passed the target reference, the method name, and the args, and returns true to simulate
 *     the call with debugging turned on, and false to let it go.  By default, all failed calls
 *     get debugged.
 */
Firebase.debugPermissionDeniedErrors = function(
    simulatedTokenGenerator, maxSimulatedCallDuration, callFilter) {...}

Keywords

FAQs

Package last updated on 28 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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