UNPKG

tsbase

Version:

Base class libraries for TypeScript

67 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FSPersister = void 0; /** * Persists data using the node fs / path api */ var FSPersister = /** @class */ (function () { function FSPersister(localFilesDirectory, filePath, key, pathResolver, fileSystemAdapter) { this.localFilesDirectory = localFilesDirectory; this.filePath = filePath; this.key = key; this.pathResolver = pathResolver; this.fileSystemAdapter = fileSystemAdapter; this.ensureLocalFilesDirExists(); this.ensureFileExists(); } Object.defineProperty(FSPersister.prototype, "dir", { get: function () { return this.pathResolver.resolve(this.localFilesDirectory); }, enumerable: false, configurable: true }); Object.defineProperty(FSPersister.prototype, "file", { get: function () { return this.pathResolver.resolve(this.localFilesDirectory, this.filePath); }, enumerable: false, configurable: true }); FSPersister.prototype.Retrieve = function () { var json = this.retrieveDataFileJson(); return json[this.key] ? json[this.key] : []; }; FSPersister.prototype.Persist = function (items) { var json = this.retrieveDataFileJson(); json[this.key] = items; this.fileSystemAdapter.writeFileSync(this.file, JSON.stringify(json)); }; FSPersister.prototype.Purge = function () { this.Persist([]); }; FSPersister.prototype.ensureLocalFilesDirExists = function () { if (!this.fileSystemAdapter.existsSync(this.dir)) { this.fileSystemAdapter.mkdirSync(this.dir); } }; FSPersister.prototype.ensureFileExists = function () { try { this.fileSystemAdapter.accessSync(this.file, this.fileSystemAdapter.constants.W_OK); } catch (error) { this.writeBlankJsonToFile(); } }; FSPersister.prototype.writeBlankJsonToFile = function () { var blankJson = {}; this.fileSystemAdapter.writeFileSync(this.file, JSON.stringify(blankJson)); }; FSPersister.prototype.retrieveDataFileJson = function () { var fileContents = this.fileSystemAdapter.readFileSync(this.pathResolver.resolve(this.localFilesDirectory, this.filePath), 'utf8'); return JSON.parse(fileContents.toString()); }; return FSPersister; }()); exports.FSPersister = FSPersister; //# sourceMappingURL=FSPersister.js.map