JSPM

@xrps/fcm-token-registry

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

An HTTP web server for managing Firebase Cloud Messaging device tokens.

Package Exports

  • @xrps/fcm-token-registry

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 (@xrps/fcm-token-registry) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

FCM Token Registry

Build statusCode coverage status

An HTTP web server for managing Firebase Cloud Messaging device tokens.

const createInMemoryStorage = require('@xrps/fcm-token-registry/lib/adapters/in-memory-entry-storage');
const createRegistry = require('@xrps/fcm-token-registry/lib/registry');
const { factory: createApi } = require('@xrps/fcm-token-registry');

const storage = createInMemoryStorage({ entries: [] });
const registry = createRegistry({ storage });
const api = createApi({ registry });

api.listen(3000);

Features

  • Minimalist. Exposes a small set of endpoints.
  • Extensible. New functionally can be added by injecting express middleware.
  • Convenient. Can be ran as an HTTP server or use-d as an express middleware.
  • Flexible. Can be used as a whole or in parts.

Installation

$ npm install @xrps/fcm-token-registry

Usage

As a standalone server:

const mongodb = require('mongodb');

const { factory: createMongoDbStorage } = require('@xrps/fcm-token-registry/lib/adapters/mongodb-entry-storage');
const createRegistry = require('@xrps/fcm-token-registry/lib/registry');
const { factory: createApi } = require('@xrps/fcm-token-registry');

const dbUri = 'mongodb://localhost:27017';
const dbName = 'fcm-registry';

function start() {
  // assumes mongodb@3.x
  return mongodb.MongoClient
    .connect(dbUri)
    .then((dbClient) => {
      const db = dbClient.db(dbName);
      const entryStorage = createMongoDbStorage({ db });
      const registry = createRegistry({ entryStorage });
      const api = createApi({ registry });

      const server = api.listen(3000);

      server.on('listening', () => {
        console.log('listening for incoming connections at port 3000');
      });
    });
}

start();
  .catch(e => console.error(e));

As an middleware for express:

const express = require('express')

const createInMemoryFcmTokenStorage = require('@xrps/fcm-token-registry/lib/adapters/in-memory-entry-storage');
const createFcmTokenRegistry = require('@xrps/fcm-token-registry/lib/registry');
const { factory: createFcmTokenRegistryApi } = require('@xprs/fcm-token-registry');

const app = express();
const fcmTokenRegistryApi = createFcmTokenRegistryApi({ entryStorage: createInMemoryFcmTokenStorage() });

// ... do usual, express-related stuff, then

app.use('/device-tokens', fcmTokenRegistryApi);

// ... more express stuff

app.listen(3000);

Only certain parts:

/**
 * Suppose you'd like to be able to print all tokens assigned to a given user email (group ID) in the command-line.
 */
const userEmail = process.argv[1];

function start() {
  // assumes mongodb@3.x
  return mongodb.MongoClient
    .connect(dbUri)
    .then((dbClient) => {
      const db = dbClient.db(dbName);
      const entryStorage = createMongoDbStorage({ db });
      const registry = createRegistry({ entryStorage });

      return registry
        .getEntriesByGroupId(userEmail)
        .then((entries) => entries.forEach(({ token }) => console.log(token)));
    });
}

start()
  .catch(e => console.error(e));

API

Coming soon.

Examples

Coming soon.

Road-map

Coming soon.