| 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() |