UNPKG

memory-card

Version:

ES6 Map like Async API, with Swagger API Backend Support.

74 lines 2.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.StorageFile = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const config_js_1 = require("../config.js"); const backend_js_1 = require("./backend.js"); class StorageFile extends backend_js_1.StorageBackend { absFileName; constructor(name, options) { config_js_1.log.verbose('StorageFile', 'constructor(%s, ...)', name); options.type = 'file'; super(name, options); options = options; this.absFileName = path_1.default.isAbsolute(this.name) ? this.name : path_1.default.resolve(process.cwd(), this.name); if (!/\.memory-card\.json$/.test(this.absFileName)) { this.absFileName += '.memory-card.json'; } } toString() { const text = [ this.constructor.name, '<', this.absFileName, '>', ].join(''); return text; } async load() { config_js_1.log.verbose('StorageFile', 'load() from %s', this.absFileName); if (!fs_1.default.existsSync(this.absFileName)) { config_js_1.log.verbose('MemoryCard', 'load() file not exist, NOOP'); return {}; } const buffer = await new Promise((resolve, reject) => fs_1.default.readFile(this.absFileName, (err, buf) => { if (err) { reject(err); } else { resolve(buf); } })); const text = buffer.toString(); let payload = {}; try { payload = JSON.parse(text); } catch (e) { config_js_1.log.error('MemoryCard', 'load() exception: %s', e); } return payload; } async save(payload) { config_js_1.log.verbose('StorageFile', 'save() to %s', this.absFileName); const text = JSON.stringify(payload); await new Promise((resolve, reject) => { fs_1.default.writeFile(this.absFileName, text, err => err ? reject(err) : resolve()); }); } async destroy() { config_js_1.log.verbose('StorageFile', 'destroy()'); if (fs_1.default.existsSync(this.absFileName)) { fs_1.default.unlinkSync(this.absFileName); } } } exports.StorageFile = StorageFile; exports.default = StorageFile; //# sourceMappingURL=file.js.map