40 lines
743 B
JavaScript
40 lines
743 B
JavaScript
import { DEFAULT_CONTEXT_SIZE } from "../config";
|
|
|
|
const historyMap = new Map();
|
|
|
|
const MsgHistory = (maxSize = DEFAULT_CONTEXT_SIZE) => {
|
|
const messages = [];
|
|
|
|
const add = (...msgs) => {
|
|
messages.push(...msgs.filter(Boolean));
|
|
const extra = messages.length - maxSize;
|
|
if (extra > 0) {
|
|
messages.splice(0, extra);
|
|
}
|
|
};
|
|
|
|
const getAll = () => {
|
|
return [...messages];
|
|
};
|
|
|
|
const clear = () => {
|
|
messages.length = 0;
|
|
};
|
|
|
|
return {
|
|
add,
|
|
getAll,
|
|
clear,
|
|
};
|
|
};
|
|
|
|
export const getMsgHistory = (apiSlug, maxSize) => {
|
|
if (historyMap.has(apiSlug)) {
|
|
return historyMap.get(apiSlug);
|
|
}
|
|
|
|
const msgHistory = MsgHistory(maxSize);
|
|
historyMap.set(apiSlug, msgHistory);
|
|
return msgHistory;
|
|
};
|