UNPKG

14 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports["default"] = _default;
7
8require("@babel/polyfill");
9
10var _defaults = _interopRequireDefault(require("lodash/defaults"));
11
12var _outputFileSync = _interopRequireDefault(require("output-file-sync"));
13
14var _mkdirp = require("mkdirp");
15
16var _perf_hooks = require("perf_hooks");
17
18var _rimraf = _interopRequireDefault(require("rimraf"));
19
20var _slash = _interopRequireDefault(require("slash"));
21
22var _path = _interopRequireDefault(require("path"));
23
24var _chalk = _interopRequireDefault(require("chalk"));
25
26var _glob = _interopRequireDefault(require("glob"));
27
28var _fs = _interopRequireDefault(require("fs"));
29
30var util = _interopRequireWildcard(require("./util"));
31
32function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
33
34function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
35
36function _templateObject5() {
37 var data = _taggedTemplateLiteral([", {red ", " error", "}"]);
38
39 _templateObject5 = function _templateObject5() {
40 return data;
41 };
42
43 return data;
44}
45
46function _templateObject4() {
47 var data = _taggedTemplateLiteral(["{cyan >>>> Finish compiling (", " file", "", ")} ", " mseconds"]);
48
49 _templateObject4 = function _templateObject4() {
50 return data;
51 };
52
53 return data;
54}
55
56function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
57
58function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
59
60function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
61
62function _templateObject3() {
63 var data = _taggedTemplateLiteral(["{cyan >>>> Start compiling}"]);
64
65 _templateObject3 = function _templateObject3() {
66 return data;
67 };
68
69 return data;
70}
71
72function _templateObject2() {
73 var data = _taggedTemplateLiteral(["{bold.red Unable to find a generator in your elodin configuration.}\n \n{red A generator is required to be able to compile elodin files.\nFor further information check out {underline https://elodin.dev/docs/setup/configuration}.}"]);
74
75 _templateObject2 = function _templateObject2() {
76 return data;
77 };
78
79 return data;
80}
81
82function _templateObject() {
83 var data = _taggedTemplateLiteral(["{bold.red Unable to locate the elodin config file at ", ".}\n \n{red A valid elodin configuration must be passed.\nStart by creating a {bold elodin.config.js} file.\nFor further information check out {underline https://elodin.dev/docs/setup/getting-started}.}"]);
84
85 _templateObject = function _templateObject() {
86 return data;
87 };
88
89 return data;
90}
91
92function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
93
94function 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); } }
95
96function _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); }); }; }
97
98function _default(_x) {
99 return _ref.apply(this, arguments);
100}
101
102function _ref() {
103 _ref = _asyncToGenerator(
104 /*#__PURE__*/
105 regeneratorRuntime.mark(function _callee4(_ref2) {
106 var cliOptions, elodinOptions, config, configPath, filenames, didClean, ignorePattern, walk, _walk, files, _files2;
107
108 return regeneratorRuntime.wrap(function _callee4$(_context4) {
109 while (1) {
110 switch (_context4.prev = _context4.next) {
111 case 0:
112 _files2 = function _ref7() {
113 _files2 = _asyncToGenerator(
114 /*#__PURE__*/
115 regeneratorRuntime.mark(function _callee3(filenames) {
116 var chokidar;
117 return regeneratorRuntime.wrap(function _callee3$(_context3) {
118 while (1) {
119 switch (_context3.prev = _context3.next) {
120 case 0:
121 if (cliOptions.skipInitialBuild) {
122 _context3.next = 3;
123 break;
124 }
125
126 _context3.next = 3;
127 return walk(filenames);
128
129 case 3:
130 if (cliOptions.watch) {
131 chokidar = util.requireChokidar();
132 chokidar.watch(filenames, {
133 persistent: true,
134 ignoreInitial: true,
135 awaitWriteFinish: {
136 stabilityThreshold: 50,
137 pollInterval: 10
138 }
139 }).on('all', function (type, filename) {
140 if (!util.isCompilableExtension(filename)) {
141 return;
142 }
143
144 if (type === 'add' || type === 'change') {
145 walk(filenames)["catch"](function (err) {
146 console.error(err);
147 });
148 }
149 });
150 }
151
152 case 4:
153 case "end":
154 return _context3.stop();
155 }
156 }
157 }, _callee3);
158 }));
159 return _files2.apply(this, arguments);
160 };
161
162 files = function _ref6(_x3) {
163 return _files2.apply(this, arguments);
164 };
165
166 _walk = function _ref5() {
167 _walk = _asyncToGenerator(
168 /*#__PURE__*/
169 regeneratorRuntime.mark(function _callee2(filenames) {
170 var _filenames, start, files, compileConfig, results, end, fail;
171
172 return regeneratorRuntime.wrap(function _callee2$(_context2) {
173 while (1) {
174 switch (_context2.prev = _context2.next) {
175 case 0:
176 console.log((0, _chalk["default"])(_templateObject3()));
177 _filenames = [];
178 start = _perf_hooks.performance.now();
179 filenames.forEach(function (filename) {
180 if (!_fs["default"].existsSync(filename)) return;
181
182 var stat = _fs["default"].statSync(filename);
183
184 if (stat.isDirectory()) {
185 var dirname = filename;
186 util.readdirForCompilable(filename).forEach(function (filename) {
187 _filenames.push(_path["default"].join(dirname, filename));
188 });
189 } else {
190 _filenames.push(filename);
191 }
192 });
193 files = 0;
194 compileConfig = _objectSpread({}, config, {
195 errors: cliOptions.watch ? 'log' : 'throw',
196 errorCount: 0
197 });
198 _context2.next = 8;
199 return Promise.all(_filenames.map(
200 /*#__PURE__*/
201 function () {
202 var _ref3 = _asyncToGenerator(
203 /*#__PURE__*/
204 regeneratorRuntime.mark(function _callee(filename) {
205 var sourceFilename, didCompile;
206 return regeneratorRuntime.wrap(function _callee$(_context) {
207 while (1) {
208 switch (_context.prev = _context.next) {
209 case 0:
210 sourceFilename = filename;
211 sourceFilename = (0, _slash["default"])(sourceFilename);
212 _context.next = 4;
213 return util.compile(filename, compileConfig);
214
215 case 4:
216 didCompile = _context.sent;
217 files++;
218
219 case 6:
220 case "end":
221 return _context.stop();
222 }
223 }
224 }, _callee);
225 }));
226
227 return function (_x4) {
228 return _ref3.apply(this, arguments);
229 };
230 }()));
231
232 case 8:
233 results = _context2.sent;
234 end = _perf_hooks.performance.now(); // if (successLog.length + failLog.length > 0) {
235 // console.log(successLog + failLog)
236 // }
237
238 fail = compileConfig.errorCount;
239
240 if (files > 0) {
241 console.log((0, _chalk["default"])(_templateObject4(), files, files > 1 ? 's' : '', fail > 0 ? (0, _chalk["default"])(_templateObject5(), fail, fail > 1 ? 's' : '') : '', Math.round(end - start)));
242 }
243
244 case 12:
245 case "end":
246 return _context2.stop();
247 }
248 }
249 }, _callee2);
250 }));
251 return _walk.apply(this, arguments);
252 };
253
254 walk = function _ref4(_x2) {
255 return _walk.apply(this, arguments);
256 };
257
258 cliOptions = _ref2.cliOptions, elodinOptions = _ref2.elodinOptions;
259 configPath = _path["default"].join(process.cwd(), elodinOptions.configFile);
260 _context4.prev = 6;
261 config = require(configPath);
262 _context4.next = 15;
263 break;
264
265 case 10:
266 _context4.prev = 10;
267 _context4.t0 = _context4["catch"](6);
268 console.error((0, _chalk["default"])(_templateObject(), configPath));
269 console.error(_context4.t0);
270 return _context4.abrupt("return", false);
271
272 case 15:
273 filenames = cliOptions.filenames;
274
275 if (config.generator) {
276 _context4.next = 19;
277 break;
278 }
279
280 console.error((0, _chalk["default"])(_templateObject2()));
281 return _context4.abrupt("return", false);
282
283 case 19:
284 if (cliOptions.clean) {
285 if (config.generator.filePattern) {
286 didClean = false;
287 ignorePattern = config.generator.ignorePattern || [];
288 config.generator.filePattern.map(function (v) {
289 try {
290 var _files = _glob["default"].sync(process.cwd() + '/**/' + v);
291
292 var actualFiles = _files.filter(function (file) {
293 return ignorePattern.find(function (pattern) {
294 return file.indexOf(pattern) !== -1;
295 }) === undefined;
296 });
297
298 if (actualFiles.length > 0) {
299 console.log('Cleaning ' + actualFiles.length + ' files.');
300 actualFiles.forEach(_fs["default"].unlinkSync);
301 didClean = true;
302 } // config.generator.filePattern
303 // .map(v => process.cwd() + '/**/' + v)
304 // .map(path => rimraf.sync(path))
305 // console.log('Successfully cleaned all files.')
306
307 } catch (e) {// TODO: throw sth
308 // console.log(e)
309 }
310 });
311
312 if (didClean) {
313 console.log('');
314 }
315 }
316 }
317
318 if (!cliOptions.filenames.length) {
319 _context4.next = 25;
320 break;
321 }
322
323 _context4.next = 23;
324 return files(cliOptions.filenames);
325
326 case 23:
327 _context4.next = 25;
328 break;
329
330 case 25:
331 case "end":
332 return _context4.stop();
333 }
334 }
335 }, _callee4, null, [[6, 10]]);
336 }));
337 return _ref.apply(this, arguments);
338}
\No newline at end of file