JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 465
  • Score
    100M100P100Q88548F
  • License MIT

add firebase-admin to fastify with typescript support

Package Exports

  • fastify-firebase
  • fastify-firebase/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fastify-firebase) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

fastify-firebase

CI status NPM version Weekly downloads

Fastify v5+ firebase-admin plugin. Adds a singleton firebase object to your Fastify instance with full TypeScript support.


  • Supports both camelCase and snake_case Firebase cert keys TypeScript types for both cert formats.
  • Prevents multiple Firebase app initializations (singleton)
  • Throws clear errors for missing/invalid certs
  • Works with Fastify v5+ and fastify-plugin v5+
  • Async/Promise plugin signature for modern Fastify
  • Full TypeScript support
Firebase modules are presented in suggestions window

Install

npm i fastify-firebase
# or
yarn add fastify-firebase
# or
pnpm add fastify-firebase

Usage

Add the plugin into your project using the register function, provide the cert file from Firebase console and you are done! This plugin will add the firebase namespace to your Fastify instance.

import Fastify from 'fastify';
import fastifyFirebase from 'fastify-firebase';
import firebasePrivateKeyJson from '../firebase.json'; // <-- private key file from Firebase console

const server = Fastify({ logger: true });

server.register(fastifyFirebase, firebasePrivateKeyJson); // just hook the plugin with the cert file

server.get('/getAllUsers', async (request, reply) => {
  // firebase is available on request.server.firebase
  const firebase = request.server.firebase;
  const snapshot = await firebase.firestore().collection('Users').get();
  const arrayOfUsers = snapshot.docs.map((doc) => doc.data());
  reply.send(arrayOfUsers);
});

(async () => {
  try {
    const address = await server.listen({ port: 3000 });
    console.log(`Server listening at ${address}`);
  } catch (err) {
    server.log.error(err);
    process.exit(1);
  }
})();

Migration from v1.x

  • Now requires Fastify v5+
  • Cert keys can be camelCase or snake_case
  • Only one Firebase app instance is created (singleton)
  • Plugin is now async/Promise-based

License

Licensed under MIT.