UNPKG

hono-sess

Version:

A Simple Session Middleware for Hono

76 lines 2.32 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.MemoryStore = void 0; const store_1 = require("./store"); const session_1 = require("./session"); class MemoryStore extends store_1.Store { sessions; constructor() { super(); this.sessions = Object.create(null); } all(callback) { const sessionIds = Object.keys(this.sessions); const sessions = Object.create(null); for (const sessionId of sessionIds) { const session = getSession.call(this, sessionId); if (session) { sessions[sessionId] = session; } } callback && callback(null, sessions); } clear(callback) { this.sessions = Object.create(null); callback && callback(); } destroy(sessionId, callback) { delete this.sessions[sessionId]; callback && callback(); } get(sessionId, callback) { callback(null, getSession.call(this, sessionId)); } set(sessionId, session, callback) { this.sessions[sessionId] = JSON.stringify(session); callback && callback(); } length(callback) { this.all((err, sessions) => { if (err) return callback(err); callback(null, Object.keys(sessions).length); }); } touch(sessionId, session, callback) { const currentSession = getSession.call(this, sessionId); if (currentSession) { currentSession.cookie = session.cookie; this.sessions[sessionId] = JSON.stringify(currentSession); } callback && callback(); } generate(req) { const session = new session_1.Session(req, null); req.session = session; } } exports.MemoryStore = MemoryStore; function getSession(sessionId) { const sess = this.sessions[sessionId]; if (!sess) { return; } const parsed = JSON.parse(sess); if (parsed.cookie) { const expires = typeof parsed.cookie.expires === 'string' ? new Date(parsed.cookie.expires) : parsed.cookie.expires; if (expires && expires <= Date.now()) { delete this.sessions[sessionId]; return; } } return parsed; } //# sourceMappingURL=memory.js.map