UNPKG

@webex/webex-server

Version:

.

190 lines (164 loc) • 4.68 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _setImmediate2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set-immediate")); var _create = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/create")); var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys")); var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now")); var _store = _interopRequireDefault(require("express-session/session/store")); var _util = _interopRequireDefault(require("util")); /*! * Almost a direct copy of express-session/sessions/memory.js, except the JSON * serialization/deserialization has been removed. * https://raw.githubusercontent.com/expressjs/session/master/session/memory.js * @ignore */ /*! * express-session * Copyright(c) 2010 Sencha Inc. * Copyright(c) 2011 TJ Holowaychuk * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ // Disable eslint since this is a very lightly modified copy of the built-in // MemoryStore /* eslint-disable */ /** * Module dependencies. * @private */ /** * Shim setImmediate for node.js < 0.10 * @private */ /* istanbul ignore next */ var defer = typeof _setImmediate2.default === 'function' ? _setImmediate2.default : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)); }; /** * Module exports. */ var _default = exports.default = MemoryStore; /** * A session store in memory. * @public */ function MemoryStore() { _store.default.call(this); this.sessions = (0, _create.default)(null); } /** * Inherit from Store. */ _util.default.inherits(MemoryStore, _store.default); /** * Get all active sessions. * * @param {function} callback * @public */ MemoryStore.prototype.all = function all(callback) { var sessionIds = (0, _keys.default)(this.sessions); var sessions = (0, _create.default)(null); for (var i = 0; i < sessionIds.length; i += 1) { var sessionId = sessionIds[i]; var session = getSession.call(this, sessionId); if (session) { sessions[sessionId] = session; } } callback && defer(callback, null, sessions); }; /** * Clear all sessions. * * @param {function} callback * @public */ MemoryStore.prototype.clear = function clear(callback) { this.sessions = (0, _create.default)(null); callback && defer(callback); }; /** * Destroy the session associated with the given session ID. * * @param {string} sessionId * @public */ MemoryStore.prototype.destroy = function destroy(sessionId, callback) { delete this.sessions[sessionId]; callback && defer(callback); }; /** * Fetch session by the given session ID. * * @param {string} sessionId * @param {function} callback * @public */ MemoryStore.prototype.get = function get(sessionId, callback) { defer(callback, null, getSession.call(this, sessionId)); }; /** * Commit the given session associated with the given sessionId to the store. * * @param {string} sessionId * @param {object} session * @param {function} callback * @public */ /** * Get number of active sessions. * * @param {function} callback * @public */ MemoryStore.prototype.length = function length(callback) { this.all(function (err, sessions) { if (err) return callback(err); callback(null, (0, _keys.default)(sessions).length); }); }; MemoryStore.prototype.set = function set(sessionId, session, callback) { this.sessions[sessionId] = session; callback && defer(callback); }; /** * Touch the given session object associated with the given session ID. * * @param {string} sessionId * @param {object} session * @param {function} callback * @public */ MemoryStore.prototype.touch = function touch(sessionId, session, callback) { var currentSession = getSession.call(this, sessionId); if (currentSession) { // update expiration currentSession.cookie = session.cookie; this.sessions[sessionId] = currentSession; } callback && defer(callback); }; /** * Get session from the store. * @private */ function getSession(sessionId) { var sess = this.sessions[sessionId]; if (!sess) { return; } var expires = typeof sess.cookie.expires === 'string' ? new Date(sess.cookie.expires) : sess.cookie.expires; // destroy expired session if (expires && expires <= (0, _now.default)()) { delete this.sessions[sessionId]; return; } return sess; } //# sourceMappingURL=memory-store.js.map