UNPKG

3.18 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.getSha1 = getSha1;
7exports.getCacheDB = getCacheDB;
8exports.logError = logError;
9exports.getBabelTransformFile = getBabelTransformFile;
10exports.CLIError = void 0;
11
12var _os = _interopRequireDefault(require("os"));
13
14var _lowdb = _interopRequireDefault(require("lowdb"));
15
16var _pify = _interopRequireDefault(require("pify"));
17
18var _path = _interopRequireDefault(require("path"));
19
20var _crypto = _interopRequireDefault(require("crypto"));
21
22var _makeDir = _interopRequireDefault(require("make-dir"));
23
24var _debounce = _interopRequireDefault(require("lodash/debounce"));
25
26var _resolveFrom = _interopRequireDefault(require("resolve-from"));
27
28var _FileAsync = _interopRequireDefault(require("lowdb/adapters/FileAsync"));
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
33
34function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
35
36class CLIError extends Error {}
37
38exports.CLIError = CLIError;
39
40function getSha1(contents) {
41 const hash = _crypto.default.createHash('sha1');
42
43 hash.update(contents);
44 return hash.digest('hex');
45}
46
47function getCacheDB(_x, _x2) {
48 return _getCacheDB.apply(this, arguments);
49}
50
51function _getCacheDB() {
52 _getCacheDB = _asyncToGenerator(function* (projectPath, loadState) {
53 const configPath = _path.default.join(_os.default.homedir(), '.sb-babel-cli', `cache-timestamps-${getSha1(projectPath)}`);
54
55 yield (0, _makeDir.default)(_path.default.dirname(configPath));
56 const adapter = new _FileAsync.default(configPath, {
57 serialize: JSON.stringify
58 });
59 adapter.write = (0, _debounce.default)(adapter.write, 1000);
60 const db = yield (0, _lowdb.default)(adapter);
61
62 if (!loadState) {
63 yield db.setState({});
64 }
65
66 return db;
67 });
68 return _getCacheDB.apply(this, arguments);
69}
70
71function logError(error) {
72 if (error instanceof CLIError) {
73 console.error('ERROR', error.message);
74 } else {
75 console.error(error);
76 }
77}
78
79let transformFileCached;
80
81function getBabelTransformFile(projectPath) {
82 if (!transformFileCached) {
83 let resolved;
84
85 try {
86 resolved = (0, _resolveFrom.default)(projectPath, '@babel/core');
87 } catch (_) {
88 /* No Op */
89 }
90
91 if (!resolved) {
92 throw new CLIError('Unable to find @babel/core in your project');
93 } // eslint-disable-next-line global-require,import/no-dynamic-require
94
95
96 const babelCore = require(resolved);
97
98 transformFileCached = (0, _pify.default)(babelCore.transformFile);
99 }
100
101 return transformFileCached;
102}
\No newline at end of file