You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.6 KiB
57 lines
1.6 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
class FilesRegister {
|
|
constructor(dataFactory) {
|
|
this.dataFactory = dataFactory;
|
|
this.files = {};
|
|
this.dataFactory = dataFactory;
|
|
}
|
|
keys() {
|
|
return Object.keys(this.files);
|
|
}
|
|
add(filePath) {
|
|
this.files[filePath] = {
|
|
mtime: undefined,
|
|
data: this.dataFactory(undefined)
|
|
};
|
|
}
|
|
remove(filePath) {
|
|
if (this.has(filePath)) {
|
|
delete this.files[filePath];
|
|
}
|
|
}
|
|
has(filePath) {
|
|
return this.files.hasOwnProperty(filePath);
|
|
}
|
|
get(filePath) {
|
|
if (!this.has(filePath)) {
|
|
throw new Error('File "' + filePath + '" not found in register.');
|
|
}
|
|
return this.files[filePath];
|
|
}
|
|
ensure(filePath) {
|
|
if (!this.has(filePath)) {
|
|
this.add(filePath);
|
|
}
|
|
}
|
|
getData(filePath) {
|
|
return this.get(filePath).data;
|
|
}
|
|
mutateData(filePath, mutator) {
|
|
this.ensure(filePath);
|
|
mutator(this.files[filePath].data);
|
|
}
|
|
getMtime(filePath) {
|
|
return this.get(filePath).mtime;
|
|
}
|
|
setMtime(filePath, mtime) {
|
|
this.ensure(filePath);
|
|
if (this.files[filePath].mtime !== mtime) {
|
|
this.files[filePath].mtime = mtime;
|
|
// file has been changed - we have to reset data
|
|
this.files[filePath].data = this.dataFactory(this.files[filePath].data);
|
|
}
|
|
}
|
|
}
|
|
exports.FilesRegister = FilesRegister;
|
|
//# sourceMappingURL=FilesRegister.js.map
|