@dzangolab/fastify-firebase
TypeScript icon, indicating that this package has built-in type declarations

0.66.0 • Public • Published

@dzangolab/fastify-firebase

A Fastify plugin that provides an easy integration of Firebase Admin in a fastify API.

Requirements

  • @dzangolab/fastify-config
  • @dzangolab/fastify-slonik
  • @dzangolab/fastify-mercurius

Installation

In a simple repo:

npm install @dzangolab/fastify-firebase

If using in a monorepo with pnpm:

pnpm add --filter "myrepo" @dzangolab/fastify-firebase

Usage

Register Plugin

Register the file fastify-firebase package with your Fastify instance:

import firebasePlugin, { initializeFirebase } from "@dzangolab/fastify-firebase";
import configPlugin from "@dzangolab/fastify-config";
import fastify from "fastify";

import config from "./config";

import type { ApiConfig } from "@dzangolab/fastify-config";
import type { FastifyInstance } from "fastify";

// Create fastify instance
const fastify = Fastify({
  logger: config.logger,
});

// Register fastify-config plugin
fastify.register(configPlugin, { config });

// Register fastify-user route
fastify.register(firebasePlugin);

await fastify.listen({
  port: config.port,
  host: "0.0.0.0",
});

Add resolver in your apps resolver collection

import { userDeviceResolver } from "@dzangolab/fastify-firebase";

import type { IResolvers } from "mercurius";

const resolvers: IResolvers = {
  Mutation: {
    ...userDeviceResolver.Mutation,
  },
  Query: {
    ...userDeviceResolver.Query,
  },
};

export default resolvers;

Configuration

Add firebase configuration

const config: ApiConfig = {
  // ...
  firebase: {
    credentials: {
      clientEmail: "...",
      privateKey: "...",
      projectId: "...",
    }
    table: {
      userDevices: {
        name: "user-devices";
      }
    }
    notification: {
      test: {
        enabled: true,
        path: '/send-notification'
      }
    };
    handlers: {
      userDevice?: {
        addUserDevice: (request: SessionRequest, reply: FastifyReply) => Promise<void>
      },
      notification: {
        sendNotification: (request: SessionRequest, reply: FastifyReply) => Promise<void>
      },
    };
  }
};

Readme

Keywords

none

Package Sidebar

Install

npm i @dzangolab/fastify-firebase

Weekly Downloads

461

Version

0.66.0

License

MIT

Unpacked Size

179 kB

Total Files

48

Last publish

Collaborators

  • opichon
  • uddhab
  • rameshlohala
  • cpxpratik