session.mjs 584 Bytes
import NodeCache from 'node-cache'
import { configureStore } from '@reduxjs/toolkit'

export const sessionStoreCache = new NodeCache({
  stdTTL: 600,    // in seconds
  useClones: false,
})

export const createGetSessionStore = (storeConfig) => (session) => {
  const getStore = (sessionId) => {
    const currentStore = sessionStoreCache.get(sessionId)
    if (currentStore) return currentStore
    const newStore = configureStore(storeConfig)
    sessionStoreCache.set(sessionId, newStore)
    return newStore
  }
  const { id: sessionId } = session
  return getStore(sessionId)
}