tav-ui
Version:
123 lines (118 loc) • 3.94 kB
JavaScript
'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