|
|
class VueFileCache {
|
|
|
constructor() {
|
|
|
this.cache = new Map();
|
|
|
this.idCounter = 0;
|
|
|
this.cleanupInterval = setInterval(() => this.cleanupCache(), 600000);
|
|
|
}
|
|
|
|
|
|
generateUniqueId() {
|
|
|
return `cache-${Date.now()}-${++this.idCounter}`;
|
|
|
}
|
|
|
|
|
|
addCache(vueContent, vueFileName, additionalData) {
|
|
|
const cacheId = this.generateUniqueId();
|
|
|
const cacheEntry = { widget: vueContent, name: vueFileName, data: additionalData, time: Date.now() };
|
|
|
this.cache.set(cacheId, cacheEntry);
|
|
|
return cacheId;
|
|
|
}
|
|
|
|
|
|
getCache(cacheId) {
|
|
|
const cacheEntry = this.cache.get(cacheId);
|
|
|
if (cacheEntry) {
|
|
|
cacheEntry.lastAccessed = Date.now();
|
|
|
return cacheEntry;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
deleteCache(cacheId) {
|
|
|
return this.cache.delete(cacheId);
|
|
|
}
|
|
|
|
|
|
cleanupCache() {
|
|
|
const now = Date.now();
|
|
|
for (const [cacheId, cacheEntry] of this.cache.entries()) {
|
|
|
if (now - cacheEntry.lastAccessed > 600000) {
|
|
|
this.cache.delete(cacheId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
export default new VueFileCache() |