You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
![]()
7 years ago
|
import * as fs from 'fs';
|
||
|
|
||
|
async function getJsonData(filename: string): Promise<Object> {
|
||
|
var data = await new Promise<string>((resolve, reject) => {
|
||
|
fs.readFile(filename, 'utf8', (err, data) => {
|
||
|
if(err) {
|
||
|
console.error(err);
|
||
|
reject('Can`t read file');
|
||
|
} else {
|
||
|
resolve(data);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
try {
|
||
|
return JSON.parse(data);
|
||
|
} catch(e) {
|
||
|
console.error(e);
|
||
|
throw new Error('Wrong file format');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function writeJsonData(filename: string, data: Object) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
fs.writeFile(filename, JSON.stringify(data), 'utf8', (err) => {
|
||
|
if(err) {
|
||
|
console.error(err);
|
||
|
reject('Cat`t write file');
|
||
|
} else {
|
||
|
resolve();
|
||
|
}
|
||
|
});
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function getJsonDataSync(filename: string) {
|
||
|
let data = fs.readFileSync(filename, 'utf8');
|
||
|
try {
|
||
|
return JSON.parse(data);
|
||
|
} catch(e) {
|
||
|
console.error(e);
|
||
|
throw new Error('Wrong file format');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function writeJsonDataSync(filename: string, data: Object) {
|
||
|
fs.writeFileSync(filename, JSON.stringify(data));
|
||
|
}
|
||
|
|
||
|
export {
|
||
|
getJsonData,
|
||
|
writeJsonData,
|
||
|
getJsonDataSync,
|
||
|
writeJsonDataSync
|
||
|
}
|