ios-dev/comments/Home/node_modules/lowdb/lib/adapters/node/DataFile.js

46 lines
1.1 KiB
JavaScript
Raw Permalink Normal View History

2024-03-11 14:47:28 +03:00
import { TextFile, TextFileSync } from './TextFile.js';
export class DataFile {
#adapter;
#parse;
#stringify;
constructor(filename, { parse, stringify, }) {
this.#adapter = new TextFile(filename);
this.#parse = parse;
this.#stringify = stringify;
}
async read() {
const data = await this.#adapter.read();
if (data === null) {
return null;
}
else {
return this.#parse(data);
}
}
write(obj) {
return this.#adapter.write(this.#stringify(obj));
}
}
export class DataFileSync {
#adapter;
#parse;
#stringify;
constructor(filename, { parse, stringify, }) {
this.#adapter = new TextFileSync(filename);
this.#parse = parse;
this.#stringify = stringify;
}
read() {
const data = this.#adapter.read();
if (data === null) {
return null;
}
else {
return this.#parse(data);
}
}
write(obj) {
this.#adapter.write(this.#stringify(obj));
}
}