hono-sess
Version:
A Simple Session Middleware for Hono
39 lines (38 loc) • 1.23 kB
JavaScript
;
import { EventEmitter } from "events";
import { Cookie } from "./cookie.js";
import { Session } from "./session.js";
export class Store extends EventEmitter {
constructor() {
super();
}
regenerate(req, callback) {
const self = this;
this.destroy(req.sessionID, (err) => {
self.generate(req);
callback(err);
});
}
load(sid, callback) {
const self = this;
this.get(sid, (err, session) => {
if (err)
return callback(err);
if (!session)
return callback("session not found");
const req = { sessionID: sid, sessionStore: self };
callback(null, this.createSession(req, session));
});
}
createSession(req, session) {
const expires = session.cookie.expires;
const originalMaxAge = session.cookie.originalMaxAge;
session.cookie = new Cookie(session.cookie.data);
if (typeof expires === "string") {
session.cookie.expires = new Date(expires);
}
session.cookie.originalMaxAge = originalMaxAge;
req.session = new Session(req, session);
return req.session;
}
}