2b0490ca1f6b90de695694eb1ba1b3ac22501cdf0e8b032e6a953d006ab4ff3a7c449dd8e17726366a7f55eafb85013012618e44ac64eae184a69fc9bb5c8f 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. exports.__esModule = true;
  3. var _stringify = require("babel-runtime/core-js/json/stringify");
  4. var _stringify2 = _interopRequireDefault(_stringify);
  5. exports.save = save;
  6. exports.load = load;
  7. exports.get = get;
  8. var _path = require("path");
  9. var _path2 = _interopRequireDefault(_path);
  10. var _fs = require("fs");
  11. var _fs2 = _interopRequireDefault(_fs);
  12. var _mkdirp = require("mkdirp");
  13. var _homeOrTmp = require("home-or-tmp");
  14. var _homeOrTmp2 = _interopRequireDefault(_homeOrTmp);
  15. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16. var FILENAME = process.env.BABEL_CACHE_PATH || _path2.default.join(_homeOrTmp2.default, ".babel.json");
  17. var data = {};
  18. function save() {
  19. var serialised = "{}";
  20. try {
  21. serialised = (0, _stringify2.default)(data, null, " ");
  22. } catch (err) {
  23. if (err.message === "Invalid string length") {
  24. err.message = "Cache too large so it's been cleared.";
  25. console.error(err.stack);
  26. } else {
  27. throw err;
  28. }
  29. }
  30. (0, _mkdirp.sync)(_path2.default.dirname(FILENAME));
  31. _fs2.default.writeFileSync(FILENAME, serialised);
  32. }
  33. function load() {
  34. if (process.env.BABEL_DISABLE_CACHE) return;
  35. process.on("exit", save);
  36. process.nextTick(save);
  37. if (!_fs2.default.existsSync(FILENAME)) return;
  38. try {
  39. data = JSON.parse(_fs2.default.readFileSync(FILENAME));
  40. } catch (err) {
  41. return;
  42. }
  43. }
  44. function get() {
  45. return data;
  46. }