
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
firestore-store
Advanced tools
Firestore session store for Express.js / Connect.
Source of this library is written in ES6 but commonjs exports are used. If you have any problems or questions let me know in issues.
firebase-admin
is a required peer dependency for firestore-store
.
npm install firebase-admin firestore-store --save
Initialize firebase-admin
firestore database.
const admin = require("firebase-admin");
const firebase = admin.initializeApp({
credential: admin.credential.cert("path/to/serviceAccountCredentials.json"),
databaseURL: "https://<DATABASE_URL>.firebaseio.com",
});
const database = firebase.firestore();
Pass express-session
to firestore-store
const session = require("express-session");
const FirestoreStore = require("firestore-store")(session);
Pass database reference to the FirestoreStore.
express() // or connect
.use(
session({
store: new FirestoreStore({
database: database,
}),
secret: "keyboard cat",
resave: true,
saveUninitialized: true,
})
);
When using Firebase Hosting together with Cloud Functions or Cloud Run, cookies are stripped from incoming requests. This would normally prevent the session lookup mechanism from working. However, when using __session
as the name, the value will be passed through to the app.
express() // or connect
.use(
session({
store: new FirestoreStore({
database: database,
}),
name: "__session", // ← required for Cloud Functions / Cloud Run
secret: "keyboard cat",
resave: true,
saveUninitialized: true,
})
);
Refer to Using Cookies in the Firebase Documentation on Caching
const store = new FirestoreStore(options);
Firestore reference.
Collection name to use for sessions.
Parser used to save or read session info from session document. If you need custom functionality or want to add more properties you can implement such a parser yourself. Required is to have read
and save
methods. Check default parser DocParser
dateModified
field:const parser = {
read(doc) {
return JSON.parse(doc.session);
},
save(doc) {
return {
session: JSON.stringify(doc),
dateModified: Date.now(),
};
},
};
const store = new FirestoreStore({ parser });
https://github.com/hendrysadrak/firestore-store/issues/57#issue-718419725
const parser = {
read(doc) {
return doc;
},
save(doc) {
return JSON.parse(JSON.stringify(doc));
},
};
const store = new FirestoreStore({ parser });
This store implements all the required, recommended and optional methods of the express-session store.
Currently tested with node.js version 10, 12 & 14. Travis is used for running tests https://travis-ci.org/hendrysadrak/firestore-store
If you have any problems or questions let me know in issues.
If you see it as a useful library star :star: it on Github so I know to put more time into supporting it.
MIT License
FAQs
Firestore session store for Express.js
The npm package firestore-store receives a total of 649 weekly downloads. As such, firestore-store popularity was classified as not popular.
We found that firestore-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.