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
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
expressmiddleware. - 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-registryUsage
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.