"use strict"; const path = require("path"); const fs = require("fs"); const os = require("os"); const findCacheDir = require("find-cache-dir"); let FILENAME = process.env.BABEL_CACHE_PATH; exports.initializeCacheFilename = function () { FILENAME || (FILENAME = path.join(findCacheDir({ name: "@babel/register" }) || os.homedir() || os.tmpdir(), `.babel.${babel.version}.${babel.getEnv()}.json`)); }; const babel = require("./babel-core.js"); let data = {}; let cacheDirty = false; let cacheDisabled = false; function isCacheDisabled() { var _process$env$BABEL_DI; return (_process$env$BABEL_DI = process.env.BABEL_DISABLE_CACHE) != null ? _process$env$BABEL_DI : cacheDisabled; } exports.save = save; function save() { if (isCacheDisabled() || !cacheDirty) return; cacheDirty = false; let serialised = "{}"; try { serialised = JSON.stringify(data); } catch (err) { if (err.message === "Invalid string length") { err.message = "Cache too large so it's been cleared."; console.error(err.stack); } else { throw err; } } try { (((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), { recursive: true }); fs.writeFileSync(FILENAME, serialised); } catch (e) { switch (e.code) { case "ENOENT": case "EACCES": case "EPERM": console.warn(`Babel could not write cache to file: ${FILENAME} due to a permission issue. Cache is disabled.`); cacheDisabled = true; break; case "EROFS": console.warn(`Babel could not write cache to file: ${FILENAME} because it resides in a readonly filesystem. Cache is disabled.`); cacheDisabled = true; break; default: throw e; } } } exports.load = function load() { if (isCacheDisabled()) { data = {}; return; } process.on("exit", save); process.nextTick(save); let cacheContent; try { cacheContent = fs.readFileSync(FILENAME); } catch (e) { switch (e.code) { case "EACCES": console.warn(`Babel could not read cache file: ${FILENAME} due to a permission issue. Cache is disabled.`); cacheDisabled = true; default: return; } } try { data = JSON.parse(cacheContent); } catch (_unused) {} }; exports.get = function get() { return data; }; exports.setDirty = function setDirty() { cacheDirty = true; }; exports.clear = function clear() { data = {}; }; //# sourceMappingURL=cache.js.map