amis-rpc-design/node_modules/@babel/register/lib/worker/cache.js
2023-10-07 19:42:30 +08:00

95 lines
2.5 KiB
JavaScript

"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