UNPKG

@fimbul/wotan

Version:

Pluggable TypeScript and JavaScript linter

53 lines 2 kB
"use strict"; 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