82 lines
2.7 KiB
TypeScript
82 lines
2.7 KiB
TypeScript
|
import expressSession, {
|
||
|
MemoryStore as ExpressMemoryStore,
|
||
|
} from "express-session";
|
||
|
|
||
|
interface MemoryStoreOptions {
|
||
|
/**
|
||
|
* Define how long MemoryStore will check for expired.
|
||
|
* The period is in ms. The automatic check is disabled by default!
|
||
|
* Not setting this is kind of silly, since that's the whole purpose of
|
||
|
* this lib.
|
||
|
*/
|
||
|
checkPeriod?: number;
|
||
|
/**
|
||
|
* The maximum size of the cache, checked by applying the length
|
||
|
* function to all values in the cache. It defaults to `Infinity`.
|
||
|
*/
|
||
|
max?: number;
|
||
|
/**
|
||
|
* Session TTL (expiration) in milliseconds.
|
||
|
* Defaults to `session.maxAge` (if set), or one day.
|
||
|
*/
|
||
|
ttl?: number | ((options: any, sess: any, sessionId: any) => number);
|
||
|
/**
|
||
|
* Function that is called on sessions when they are dropped from the
|
||
|
* cache. This can be handy if you want to close file descriptors or do
|
||
|
* other cleanup tasks when sessions are no longer accessible. It's
|
||
|
* called before actually removing the item from the internal cache, so
|
||
|
* if you want to immediately put it back in, you'll have to do that in
|
||
|
* a `nextTick` or `setTimeout` callback or it won't do anything.
|
||
|
*/
|
||
|
dispose?: (key: any, value: any) => void;
|
||
|
/**
|
||
|
* By default, if you set a `maxAge`, it'll only actually pull stale
|
||
|
* items out of the cache when you `get(key)`. (That is, it's not
|
||
|
* pre-emptively doing a setTimeout or anything.) If you set
|
||
|
* `stale:true`, it'll return the stale value before deleting it. If
|
||
|
* you don't set this, then it'll return undefined when you try to get
|
||
|
* a stale entry, as if it had already been deleted.
|
||
|
*/
|
||
|
stale?: boolean;
|
||
|
/**
|
||
|
* By default, if you set a `dispose()` method, then it'll be called
|
||
|
* whenever a `set()` operation overwrites an existing key. If you set
|
||
|
* this option, `dispose()` will only be called when a key falls out of
|
||
|
* the cache, not when it is overwritten.
|
||
|
*/
|
||
|
noDisposeOnSet?: boolean;
|
||
|
/**
|
||
|
* An object compatible with Javascript's JSON to override the
|
||
|
* serializer used.
|
||
|
*/
|
||
|
serializer?: {
|
||
|
stringify: (arg: object) => string;
|
||
|
parse: (str: string) => object;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
declare class MemoryStore extends ExpressMemoryStore {
|
||
|
constructor(options: MemoryStoreOptions);
|
||
|
/** method to start the automatic check for expired. */
|
||
|
startInterval(): void;
|
||
|
/** method to clear the automatic check for expired. */
|
||
|
stopInterval(): void;
|
||
|
/** use to manually remove only the expired entries from the store. */
|
||
|
prune(): void;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sample usage:
|
||
|
* ```
|
||
|
* import session from 'express-session';
|
||
|
* import createMemoryStore from 'memorystore';
|
||
|
* const MemoryStore = createMemoryStore(session);
|
||
|
* ...
|
||
|
* app.use(session({ store: new MemoryStore({ ...options }) }));
|
||
|
* ```
|
||
|
*/
|
||
|
declare function createMemoryStore(
|
||
|
session: typeof expressSession
|
||
|
): typeof MemoryStore;
|
||
|
export = createMemoryStore;
|