cache.cjs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. "use strict";
  2. const path = require("path");
  3. const fs = require("fs");
  4. const os = require("os");
  5. const findCacheDir = require("find-cache-dir");
  6. let FILENAME = process.env.BABEL_CACHE_PATH;
  7. exports.initializeCacheFilename = function () {
  8. FILENAME || (FILENAME = path.join(findCacheDir({
  9. name: "@babel/register"
  10. }) || os.homedir() || os.tmpdir(), `.babel.${babel.version}.${babel.getEnv()}.json`));
  11. };
  12. const babel = require("./babel-core.cjs");
  13. let data = {};
  14. let cacheDirty = false;
  15. let cacheDisabled = false;
  16. function isCacheDisabled() {
  17. var _process$env$BABEL_DI;
  18. return (_process$env$BABEL_DI = process.env.BABEL_DISABLE_CACHE) != null ? _process$env$BABEL_DI : cacheDisabled;
  19. }
  20. exports.save = save;
  21. function save() {
  22. if (isCacheDisabled() || !cacheDirty) return;
  23. cacheDirty = false;
  24. let serialised = "{}";
  25. try {
  26. serialised = JSON.stringify(data);
  27. } catch (err) {
  28. if (err.message === "Invalid string length") {
  29. err.message = "Cache too large so it's been cleared.";
  30. console.error(err.stack);
  31. } else {
  32. throw err;
  33. }
  34. }
  35. try {
  36. (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "10.12") ? fs.mkdirSync : require("make-dir").sync)(path.dirname(FILENAME), {
  37. recursive: true
  38. });
  39. fs.writeFileSync(FILENAME, serialised);
  40. } catch (e) {
  41. switch (e.code) {
  42. case "ENOENT":
  43. case "EACCES":
  44. case "EPERM":
  45. console.warn(`Babel could not write cache to file: ${FILENAME}
  46. due to a permission issue. Cache is disabled.`);
  47. cacheDisabled = true;
  48. break;
  49. case "EROFS":
  50. console.warn(`Babel could not write cache to file: ${FILENAME}
  51. because it resides in a readonly filesystem. Cache is disabled.`);
  52. cacheDisabled = true;
  53. break;
  54. default:
  55. throw e;
  56. }
  57. }
  58. }
  59. exports.load = function load() {
  60. if (isCacheDisabled()) {
  61. data = {};
  62. return;
  63. }
  64. process.on("exit", save);
  65. process.nextTick(save);
  66. let cacheContent;
  67. try {
  68. cacheContent = fs.readFileSync(FILENAME, "utf8");
  69. } catch (e) {
  70. switch (e.code) {
  71. case "EACCES":
  72. console.warn(`Babel could not read cache file: ${FILENAME}
  73. due to a permission issue. Cache is disabled.`);
  74. cacheDisabled = true;
  75. default:
  76. return;
  77. }
  78. }
  79. try {
  80. data = JSON.parse(cacheContent);
  81. } catch (_unused) {}
  82. };
  83. exports.get = function get() {
  84. return data;
  85. };
  86. exports.setDirty = function setDirty() {
  87. cacheDirty = true;
  88. };
  89. exports.clear = function clear() {
  90. data = {};
  91. };
  92. //# sourceMappingURL=cache.cjs.map