UNPKG

2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.DefaultStatePersistence = void 0;
4const tslib_1 = require("tslib");
5const inversify_1 = require("inversify");
6const cached_file_system_1 = require("../cached-file-system");
7const debug = require("debug");
8const yaml = require("js-yaml");
9const log = debug('wotan:statePersistence');
10const CACHE_VERSION = 1;
11let DefaultStatePersistence = class DefaultStatePersistence {
12 constructor(fs) {
13 this.fs = fs;
14 }
15 loadState(project) {
16 const fileName = buildFilename(project);
17 if (!this.fs.isFile(fileName))
18 return;
19 try {
20 log("Loading cache from '%s'", fileName);
21 const content = yaml.load(this.fs.readFile(fileName));
22 if ((content === null || content === void 0 ? void 0 : content.v) !== CACHE_VERSION) {
23 log("Version mismatch: expected '%s', actual: '%s'", CACHE_VERSION, content === null || content === void 0 ? void 0 : content.v);
24 return;
25 }
26 return content.state;
27 }
28 catch {
29 log("Error loading cache '%s'", fileName);
30 return;
31 }
32 }
33 saveState(project, state) {
34 const fileName = buildFilename(project);
35 log("Writing cache '%s'", fileName);
36 try {
37 const content = { state, v: CACHE_VERSION };
38 this.fs.writeFile(fileName, yaml.dump(content, { indent: 2, sortKeys: true }));
39 }
40 catch {
41 log("Error writing cache '%s'", fileName);
42 }
43 }
44};
45DefaultStatePersistence = tslib_1.__decorate([
46 inversify_1.injectable(),
47 tslib_1.__metadata("design:paramtypes", [cached_file_system_1.CachedFileSystem])
48], DefaultStatePersistence);
49exports.DefaultStatePersistence = DefaultStatePersistence;
50function buildFilename(tsconfigPath) {
51 return tsconfigPath.replace(/.[^.]+$/, '.fimbullintercache');
52}
53//# sourceMappingURL=state-persistence.js.map
\No newline at end of file