UNPKG

3.93 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.save = save;
7exports.load = load;
8exports.get = get;
9exports.setDirty = setDirty;
10exports.clear = clear;
11
12var _path = _interopRequireDefault(require("path"));
13
14var _fs = _interopRequireDefault(require("fs"));
15
16var _os = _interopRequireDefault(require("os"));
17
18var babel = _interopRequireWildcard(require("@babel/core"));
19
20var _findCacheDir = _interopRequireDefault(require("find-cache-dir"));
21
22function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
23
24function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
26function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
28const DEFAULT_CACHE_DIR = (0, _findCacheDir.default)({
29 name: "@babel/register"
30}) || _os.default.homedir() || _os.default.tmpdir();
31
32const DEFAULT_FILENAME = _path.default.join(DEFAULT_CACHE_DIR, `.babel.${babel.version}.${babel.getEnv()}.json`);
33
34const FILENAME = process.env.BABEL_CACHE_PATH || DEFAULT_FILENAME;
35let data = {};
36let cacheDirty = false;
37let cacheDisabled = false;
38
39function isCacheDisabled() {
40 var _process$env$BABEL_DI;
41
42 return (_process$env$BABEL_DI = process.env.BABEL_DISABLE_CACHE) != null ? _process$env$BABEL_DI : cacheDisabled;
43}
44
45function save() {
46 if (isCacheDisabled() || !cacheDirty) return;
47 cacheDirty = false;
48 let serialised = "{}";
49
50 try {
51 serialised = JSON.stringify(data, null, " ");
52 } catch (err) {
53 if (err.message === "Invalid string length") {
54 err.message = "Cache too large so it's been cleared.";
55 console.error(err.stack);
56 } else {
57 throw err;
58 }
59 }
60
61 try {
62 (((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.default.mkdirSync : require("make-dir").sync)(_path.default.dirname(FILENAME), {
63 recursive: true
64 });
65
66 _fs.default.writeFileSync(FILENAME, serialised);
67 } catch (e) {
68 switch (e.code) {
69 case "ENOENT":
70 case "EACCES":
71 case "EPERM":
72 console.warn(`Babel could not write cache to file: ${FILENAME}
73due to a permission issue. Cache is disabled.`);
74 cacheDisabled = true;
75 break;
76
77 case "EROFS":
78 console.warn(`Babel could not write cache to file: ${FILENAME}
79because it resides in a readonly filesystem. Cache is disabled.`);
80 cacheDisabled = true;
81 break;
82
83 default:
84 throw e;
85 }
86 }
87}
88
89function load() {
90 if (isCacheDisabled()) {
91 data = {};
92 return;
93 }
94
95 process.on("exit", save);
96 process.nextTick(save);
97 let cacheContent;
98
99 try {
100 cacheContent = _fs.default.readFileSync(FILENAME);
101 } catch (e) {
102 switch (e.code) {
103 case "EACCES":
104 console.warn(`Babel could not read cache file: ${FILENAME}
105due to a permission issue. Cache is disabled.`);
106 cacheDisabled = true;
107
108 default:
109 return;
110 }
111 }
112
113 try {
114 data = JSON.parse(cacheContent);
115 } catch (_unused) {}
116}
117
118function get() {
119 return data;
120}
121
122function setDirty() {
123 cacheDirty = true;
124}
125
126function clear() {
127 data = {};
128}
\No newline at end of file