@webex/webex-server
Version:
.
189 lines (164 loc) • 4.68 kB
JavaScript
;
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