json.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.readFile = exports.writeFile = void 0;
  4. const fs = require("fs");
  5. const json = require("@discoveryjs/json-ext");
  6. const loggers_1 = require("./loggers");
  7. const logger = (0, loggers_1.getLogger)('json');
  8. const writeFile = (path, obj) => new Promise((resolve, reject) => {
  9. const renameSync = (oldPath, newPath) => {
  10. try {
  11. fs.renameSync(oldPath, newPath);
  12. return newPath;
  13. }
  14. catch (err) {
  15. reject(err);
  16. }
  17. };
  18. let backupPath;
  19. if (fs.statSync(path).size > 0) {
  20. backupPath = renameSync(path, `${path}.bak`);
  21. }
  22. json.stringifyStream(obj)
  23. .on('error', err => { logger.error(err); if (backupPath)
  24. renameSync(backupPath, path); resolve(false); })
  25. .pipe(fs.createWriteStream(path))
  26. .on('error', err => { reject(err); })
  27. .on('finish', () => { fs.unlinkSync(`${path}.bak`); resolve(true); });
  28. });
  29. exports.writeFile = writeFile;
  30. const readFile = (path) => new Promise((resolve, reject) => {
  31. json.parseChunked(fs.createReadStream(path)
  32. .on('error', err => { reject(err); })).then(resolve);
  33. });
  34. exports.readFile = readFile;