next-session
Version:
Simple promise-based session for Next.js
34 lines (29 loc) • 1.09 kB
JavaScript
import { EventEmitter } from "events";
import { callbackify, inherits, promisify } from "util";
import MemoryStore from "./memory-store.js";
// no-op for compat
function expressSession(options) {}
function ExpressStore() {
EventEmitter.call(this);
}
inherits(ExpressStore, EventEmitter);
expressSession.Store = ExpressStore;
function CallbackMemoryStore() {
this.store = new Map();
}
inherits(CallbackMemoryStore, ExpressStore);
CallbackMemoryStore.prototype.get = callbackify(MemoryStore.prototype.get);
CallbackMemoryStore.prototype.set = callbackify(MemoryStore.prototype.set);
CallbackMemoryStore.prototype.destroy = callbackify(MemoryStore.prototype.destroy);
expressSession.MemoryStore = CallbackMemoryStore;
export { expressSession };
export function promisifyStore(connectStore) {
return {
get: promisify(connectStore.get).bind(connectStore),
set: promisify(connectStore.set).bind(connectStore),
destroy: promisify(connectStore.destroy).bind(connectStore),
...(connectStore.touch && {
touch: promisify(connectStore.touch).bind(connectStore)
})
};
}