@fimbul/wotan
Version:
Pluggable TypeScript and JavaScript linter
53 lines • 2 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultStatePersistence = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("inversify");
const cached_file_system_1 = require("../cached-file-system");
const debug = require("debug");
const yaml = require("js-yaml");
const log = debug('wotan:statePersistence');
const CACHE_VERSION = 1;
let DefaultStatePersistence = class DefaultStatePersistence {
constructor(fs) {
this.fs = fs;
}
loadState(project) {
const fileName = buildFilename(project);
if (!this.fs.isFile(fileName))
return;
try {
log("Loading cache from '%s'", fileName);
const content = yaml.load(this.fs.readFile(fileName));
if ((content === null || content === void 0 ? void 0 : content.v) !== CACHE_VERSION) {
log("Version mismatch: expected '%s', actual: '%s'", CACHE_VERSION, content === null || content === void 0 ? void 0 : content.v);
return;
}
return content.state;
}
catch {
log("Error loading cache '%s'", fileName);
return;
}
}
saveState(project, state) {
const fileName = buildFilename(project);
log("Writing cache '%s'", fileName);
try {
const content = { state, v: CACHE_VERSION };
this.fs.writeFile(fileName, yaml.dump(content, { indent: 2, sortKeys: true }));
}
catch {
log("Error writing cache '%s'", fileName);
}
}
};
DefaultStatePersistence = tslib_1.__decorate([
inversify_1.injectable(),
tslib_1.__metadata("design:paramtypes", [cached_file_system_1.CachedFileSystem])
], DefaultStatePersistence);
exports.DefaultStatePersistence = DefaultStatePersistence;
function buildFilename(tsconfigPath) {
return tsconfigPath.replace(/.[^.]+$/, '.fimbullintercache');
}
//# sourceMappingURL=state-persistence.js.map
;