UNPKG

tav-ui

Version:
123 lines (118 loc) 3.94 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); require('../utils/index2.js'); var validate = require('../utils/validate2.js'); class VersionCaches { constructor(caches = {}, actualidCaches = /* @__PURE__ */ new Set()) { this.caches = caches; this.actualidCaches = actualidCaches; this.filterCacheKeys = ["__id"]; } static getInstance() { if (!this.controller) { this.controller = new VersionCaches(); } return this.controller; } createAllFileCaches(files, mode) { if (mode === "update" || mode === "updateInstantly") { files.forEach((_file) => { const file = this.serialize(_file); if (!this.caches[file.actualId]) { this.caches[file.actualId] = [file]; } }); } } createFileCaches(_file, _histories) { const file = this.serialize(_file); const histories = this.serialize(_histories); histories.pop(); this.caches[file.actualId] = [ ...histories.map((history) => this.buildCache(history)), ...this.caches[file.actualId] || [file] ]; return this.caches[file.actualId]; } createFileCache(updatedFile, mode) { const _updatedFile = this.serialize(updatedFile); const isApiFileUpdatedOrIsLocalFile = mode !== "updateInstantly" && (this.actualidCaches.has(_updatedFile.actualId) || !validate.validateVersionCachesHasApiFile(this.caches[_updatedFile.actualId])); if (isApiFileUpdatedOrIsLocalFile) { this.updateFileCaches(updatedFile); return; } this.actualidCaches.add(_updatedFile.actualId); this.updateFileCacheVersion(_updatedFile); } readFileCaches(actualId) { return this.caches[actualId]; } getCaches() { return Object.keys(this.caches).map((k) => ({ actualId: k, moduleCode: this.caches[k][0].moduleCode, versionList: this.caches[k] })); } updateFileCaches(updatedFile) { const fileCaches = this.readFileCaches(updatedFile.actualId); if (!fileCaches) return; const latestVersionFileCache = this.readFileCacheLatestVersion(updatedFile.actualId); if (!latestVersionFileCache) return; this.caches[updatedFile.actualId].pop(); this.caches[updatedFile.actualId] = [ ...this.caches[updatedFile.actualId], { ...updatedFile, version: latestVersionFileCache.version } ]; } deleteFileCaches(actualId) { const fileCaches = this.readFileCaches(actualId); if (!fileCaches) return; this.actualidCaches.delete(actualId); Reflect.deleteProperty(this.caches, actualId); } deleteAllFileCaches() { this.actualidCaches.clear(); this.caches = {}; } readFileCacheLatestVersion(actualId) { const fileCaches = this.readFileCaches(actualId); if (!fileCaches) return; return fileCaches.at(-1); } updateFileCacheVersion(updatedFile) { const latestVersionFileCache = this.readFileCacheLatestVersion(updatedFile.actualId); if (!latestVersionFileCache) return; const cacheFile = this.buildCache(updatedFile); if (this.caches[updatedFile.actualId]) { cacheFile.version = latestVersionFileCache.version + 1; this.caches[updatedFile.actualId] = [...this.caches[updatedFile.actualId], cacheFile]; } else { this.caches[updatedFile.actualId] = [cacheFile]; } } isCachesEmpty() { return !this.caches || Object.keys(this.caches).length === 0; } buildCache(file) { const cache = Object.keys(file).reduce((_cache, k) => { if (!this.filterCacheKeys.includes(k) && !_cache[k]) { _cache[k] = file[k]; } return _cache; }, {}); return cache; } serialize(data) { return JSON.parse(JSON.stringify(data)); } } const VersionCachesSingleton = VersionCaches.getInstance(); exports.VersionCaches = VersionCaches; exports.VersionCachesSingleton = VersionCachesSingleton; //# sourceMappingURL=version-caches2.js.map