-
Notifications
You must be signed in to change notification settings - Fork 17
/
storage.js
55 lines (46 loc) · 1.13 KB
/
storage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const fs = require("fs");
class Storage {
/**
* Path to the storage file.
* @member {string}
*/
filePath = "";
/**
* Encoding of the serialized data.
* @member {string}
*/
ENCODING = "utf8";
constructor(filePath) {
this.filePath = filePath;
}
async read() {
return new Promise((resolve, reject) => {
fs.readFile(this.filePath, this.ENCODING, (err, data) => {
if (err) {
return reject(err);
}
resolve(data);
});
});
}
readSync() {
return fs.readFileSync(this.filePath, this.ENCODING);
}
async readJson() {
return JSON.parse(await this.read());
}
readJsonSync() {
return JSON.parse(this.readSync());
}
async write(value) {
return new Promise((resolve, reject) => {
fs.writeFile(this.filePath, JSON.stringify(value), (err) => {
if (err) {
return reject(err);
}
resolve();
});
});
}
}
module.exports = Storage;