UNPKG

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