memory-card
Version:
ES6 Map like Async API, with Swagger API Backend Support.
74 lines • 2.6 kB
JavaScript
;
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