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

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<void>((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
}