'use strict'; const assert = require('assert'); module.exports = { /** * set session external store * * ```js * app.sessionStore = { * * get() {}, * * set() {}, * * destory() {}, * }; * * app.sessionStore = class SessionStore { * constructor(app) { * } * * get() {}, * * set() {}, * * destroy() {}, * } * ``` * @param {Class|Object} store session store class or instance */ set sessionStore(store) { if (this.config.session.store && this.config.env !== 'unittest') { this.logger.warn('[egg-session] sessionStore already exists and will be overwrite'); } // supoprt this.sesionStore = null to disable external store if (!store) { this.config.session.store = undefined; return; } if (typeof store === 'function') store = new store(this); assert(typeof store.get === 'function', 'store.get must be function'); assert(typeof store.set === 'function', 'store.set must be function'); assert(typeof store.destroy === 'function', 'store.destroy must be function'); store.get = this.toAsyncFunction(store.get); store.set = this.toAsyncFunction(store.set); store.destroy = this.toAsyncFunction(store.destroy); this.config.session.store = store; }, /** * get sessionStore * * @return {Object} session store instance */ get sessionStore() { return this.config.session.store; }, };