utiller 1.0.397 → 1.0.398

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1980 +1 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
16
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
- var _path4 = _interopRequireDefault(require("path"));
20
- var _fs = _interopRequireDefault(require("fs"));
21
- var _promises = _interopRequireDefault(require("fs/promises"));
22
- var _lodash = _interopRequireDefault(require("lodash"));
23
- var _child_process = _interopRequireDefault(require("child_process"));
24
- var _configerer = require("configerer");
25
- var _index = _interopRequireDefault(require("./index"));
26
- var _index2 = _interopRequireDefault(require("../exceptioner/index"));
27
- var _pdfParse = _interopRequireDefault(require("pdf-parse"));
28
- var _del = _interopRequireWildcard(require("del"));
29
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
30
- var _prompt = _interopRequireDefault(require("prompt"));
31
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
32
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
33
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
34
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
35
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
36
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
37
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
38
- var NodeUtiller = /*#__PURE__*/function (_Utiller) {
39
- function NodeUtiller() {
40
- var _this;
41
- (0, _classCallCheck2["default"])(this, NodeUtiller);
42
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
- args[_key] = arguments[_key];
44
- }
45
- _this = _callSuper(this, NodeUtiller, [].concat(args));
46
- /**================================= only in node.js ================================= */
47
- /** 是否把log message 存到 info.txt*/
48
- (0, _defineProperty2["default"])(_this, "isPersistIntoLogFile", true);
49
- /** return [...{path: ,fileName: ,extension: ,absolute: ,dirName:}]*/
50
- (0, _defineProperty2["default"])(_this, "findFilePathByExtension", function (rootpath) {
51
- var _this2;
52
- var _extension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
53
- var reg = new RegExp("^[^.].+.(".concat(_lodash["default"].join(_extension, "|"), ")$"));
54
- for (var _len2 = arguments.length, exclude = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
55
- exclude[_key2 - 2] = arguments[_key2];
56
- }
57
- return (_this2 = _this).findFilePathBy.apply(_this2, [rootpath, function (item) {
58
- return reg.test(item.fileNameExtension);
59
- }].concat(exclude));
60
- });
61
- (0, _defineProperty2["default"])(_this, "executeCommandLine", /*#__PURE__*/function () {
62
- var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(command) {
63
- var self;
64
- return _regenerator["default"].wrap(function _callee$(_context) {
65
- while (1) switch (_context.prev = _context.next) {
66
- case 0:
67
- self = _this;
68
- _this.appendInfo("\u57F7\u884C\u8173\u672C ".concat(command));
69
- return _context.abrupt("return", new Promise(function (resolve, reject) {
70
- _child_process["default"].exec(command, function (error, stdout, stderr) {
71
- self.appendInfo("".concat(stdout));
72
- self.appendInfo("".concat(stderr));
73
- if (error) {
74
- self.appendError("\u57F7\u884C\u932F\u8AA4: ".concat(error));
75
- reject(error);
76
- return;
77
- }
78
- resolve(stdout.trim());
79
- });
80
- }));
81
- case 3:
82
- case "end":
83
- return _context.stop();
84
- }
85
- }, _callee);
86
- }));
87
- return function (_x) {
88
- return _ref.apply(this, arguments);
89
- };
90
- }());
91
- /**
92
- * 從絕對路徑中取出 "src/" 之後的部分(包含前置 /)
93
- * @param {string} fullPath - 完整的絕對檔案路徑
94
- * @param {string} folder - 針對/folder/之後作為split起點(預設為 src)
95
- * @returns {string} - 以 / 開頭、從 src/ 之後開始的相對路徑
96
- */
97
- (0, _defineProperty2["default"])(_this, "getPathAfterSpecificFolder", function (fullPath) {
98
- var folder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "src";
99
- var parts = fullPath.split(_path4["default"].sep);
100
- for (var i = parts.length - 1; i >= 0; i--) {
101
- if (parts[i] === folder) {
102
- return "/" + parts.slice(i + 1).join("/");
103
- }
104
- }
105
- return "";
106
- });
107
- /**
108
- * 從絕對路徑中取出 "src/" 之後的部分(包含前置 /)
109
- * @param {string} fullPath - 完整的絕對檔案路徑
110
- * @returns {string} - 以 / 開頭、從 src/ 之後開始的相對路徑
111
- */
112
- (0, _defineProperty2["default"])(_this, "getPathAfterSrc", function (fullPath) {
113
- return _this.getPathAfterSpecificFolder(fullPath);
114
- });
115
- return _this;
116
- }
117
- (0, _inherits2["default"])(NodeUtiller, _Utiller);
118
- return (0, _createClass2["default"])(NodeUtiller, [{
119
- key: "findSpecificFolderByPath",
120
- value: function findSpecificFolderByPath(path, folderName) {
121
- var absolute = _path4["default"].resolve(path);
122
- var parts = absolute.split(_path4["default"].sep);
123
- while (parts.length) {
124
- var joined = _path4["default"].join.apply(_path4["default"], (0, _toConsumableArray2["default"])(parts).concat([folderName]));
125
- if (_fs["default"].existsSync(joined)) return joined;
126
- parts.pop();
127
- }
128
- return null;
129
- }
130
-
131
- /** {numpages, numrender, info, text, version} */
132
- }, {
133
- key: "getPDFText",
134
- value: (function () {
135
- var _getPDFText = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(path) {
136
- var dataBuffer;
137
- return _regenerator["default"].wrap(function _callee2$(_context2) {
138
- while (1) switch (_context2.prev = _context2.next) {
139
- case 0:
140
- dataBuffer = _fs["default"].readFileSync(path);
141
- return _context2.abrupt("return", (0, _pdfParse["default"])(dataBuffer).then(function (data) {
142
- return data;
143
- }));
144
- case 2:
145
- case "end":
146
- return _context2.stop();
147
- }
148
- }, _callee2);
149
- }));
150
- function getPDFText(_x2) {
151
- return _getPDFText.apply(this, arguments);
152
- }
153
- return getPDFText;
154
- }())
155
- }, {
156
- key: "printf",
157
- value: function printf() {
158
- this.appendInfo("i can use in node.js only yo yo");
159
- }
160
-
161
- /**
162
- * 遞回的去找出folder每一個child file, 預設是全部檔案, 可以透過predicate做filter, 可以exclude 指定的 'folder name'
163
- *
164
- * predicate: predicate(pathInfo); predicate帶的參數是 pathInfo object
165
- *
166
- * excludes 忽略掉的資料夾名稱
167
- *
168
- * return [...{
169
- path: 'database/index.js',
170
- fileName: 'index',
171
- extension: 'js',
172
- dirName: database
173
- absolute: '/Users/davidtu/cross-achieve/mimi19up/mimi19up-scrapy/database/index.js'}
174
- ] */
175
- }, {
176
- key: "findFilePathBy",
177
- value: function findFilePathBy(path) {
178
- var predicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
179
- return true;
180
- };
181
- if (!_fs["default"].existsSync(path)) return [];
182
- var result = [];
183
- var entries = _fs["default"].readdirSync(path, {
184
- withFileTypes: true
185
- });
186
- for (var _len3 = arguments.length, excludes = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
187
- excludes[_key3 - 2] = arguments[_key3];
188
- }
189
- var _iterator = _createForOfIteratorHelper(entries),
190
- _step;
191
- try {
192
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
193
- var entry = _step.value;
194
- if (excludes.includes(entry.name)) continue;
195
- var fullPath = _path4["default"].join(path, entry.name);
196
- if (entry.isDirectory()) {
197
- result.push.apply(result, (0, _toConsumableArray2["default"])(this.findFilePathBy.apply(this, [fullPath, predicate].concat(excludes))));
198
- } else if (entry.isFile()) {
199
- var info = this.getPathInfo(fullPath);
200
- if (predicate(info)) result.push(info);
201
- }
202
- }
203
- } catch (err) {
204
- _iterator.e(err);
205
- } finally {
206
- _iterator.f();
207
- }
208
- return result;
209
- }
210
-
211
- /** 是一個存在的檔案 */
212
- }, {
213
- key: "isPathExist",
214
- value: function isPathExist(path) {
215
- return _fs["default"].existsSync(path);
216
- }
217
-
218
- /** path = a/b/c/file.js , newName = 'two'
219
- * output => a/b/c/two.js
220
- * */
221
- }, {
222
- key: "renameFile",
223
- value: function renameFile(path) {
224
- var newName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fileName";
225
- if (!this.isFile(path) || !newName) {
226
- this.appendError("renameFile \u932F\u8AA4, path: ".concat(path, ", newName: ").concat(newName));
227
- return;
228
- }
229
- var dir = _path4["default"].dirname(path);
230
- var ext = _path4["default"].extname(path);
231
- var newPath = _path4["default"].join(dir, "".concat(newName).concat(ext));
232
- _fs["default"].renameSync(path, newPath);
233
- }
234
-
235
- //todo 應該要改成class
236
- }, {
237
- key: "getPathInfo",
238
- value: function getPathInfo(path) {
239
- var absolute = _path4["default"].resolve(path);
240
- var obj = {
241
- path: path,
242
- absolute: absolute,
243
- isFile: false,
244
- isDirectory: true,
245
- dirName: undefined,
246
- folderName: undefined,
247
- dirPath: undefined,
248
- folderPath: undefined,
249
- extension: undefined,
250
- fileName: undefined,
251
- fileNameExtension: undefined,
252
- lastModifiedTime: undefined,
253
- name: undefined
254
- };
255
- if (this.isFile(absolute)) {
256
- obj["extension"] = absolute.split("\.").pop();
257
- var fileNameStrings = absolute.split("\/").pop().split("\.");
258
- fileNameStrings.pop();
259
- /** todo 要是遇到 asd.sdsd.js 就麻煩了 */
260
- obj["fileName"] = fileNameStrings.join("\.");
261
- obj["name"] = fileNameStrings.join("\.");
262
- obj["dirName"] = _lodash["default"].nth(absolute.split("\/"), -2);
263
- obj["folderName"] = _lodash["default"].nth(absolute.split("\/"), -2);
264
- obj["isFile"] = true;
265
- obj["dirPath"] = this.getFolderPathOfSpecificPath(absolute);
266
- obj["folderPath"] = this.getFolderPathOfSpecificPath(absolute);
267
- obj["isDirectory"] = false;
268
- obj["fileNameExtension"] = "".concat(obj.fileName, ".").concat(obj.extension);
269
- obj["lastModifiedTime"] = this.getFileLastModifiedTime(absolute);
270
- }
271
- if (this.isDirectory(absolute)) {
272
- obj["dirName"] = absolute.split("\/").pop();
273
- }
274
- return obj;
275
- }
276
- }, {
277
- key: "syncExecuteCommandLine",
278
- value: function syncExecuteCommandLine(command) {
279
- var self = this;
280
- this.appendInfo("\u57F7\u884C\u8173\u672C ".concat(command));
281
- _child_process["default"].exec("".concat(command), function (error, stdout, stderr) {
282
- self.appendInfo("".concat(stdout));
283
- self.appendInfo("".concat(stderr));
284
- if (error !== null) {
285
- self.appendError("exec error: ".concat(error));
286
- }
287
- });
288
- }
289
- }, {
290
- key: "persistByPath",
291
- value: /** '/a/b/c.js' 把它變成真的 */
292
- function persistByPath(targetPath) {
293
- var isAbsolute = _path4["default"].isAbsolute(targetPath);
294
- var parts = targetPath.split("/").filter(Boolean);
295
- var lastPart = parts[parts.length - 1];
296
- var isFile = _path4["default"].extname(lastPart) !== ""; // ← 正規判斷副檔名
297
-
298
- var current = isAbsolute ? _path4["default"].sep : "";
299
- for (var i = 0; i < parts.length; i++) {
300
- current = _path4["default"].join(current, parts[i]);
301
- if (!_fs["default"].existsSync(current)) {
302
- if (i === parts.length - 1 && isFile) {
303
- // 最後一個而且是檔案 → 建檔案
304
- _fs["default"].writeFileSync(current, "");
305
- } else {
306
- // 其他 → 建資料夾
307
- _fs["default"].mkdirSync(current, {
308
- recursive: false
309
- });
310
- }
311
- }
312
- }
313
- return _path4["default"].resolve(targetPath);
314
- }
315
-
316
- /**
317
- * filter:function, 就filter,(path) => {要就true}
318
- * override: boolean, 要不要override檔案:default true;
319
- * preserveTimestamps : boolean, 要不要保留原始檔案的時間, 不然就是cp的時間,default true;
320
- * */
321
- }, {
322
- key: "copyFromFolderToDestFolder",
323
- value: (function () {
324
- var _copyFromFolderToDestFolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(from, dest) {
325
- var override,
326
- preserveTimestamps,
327
- filter,
328
- _args3 = arguments;
329
- return _regenerator["default"].wrap(function _callee3$(_context3) {
330
- while (1) switch (_context3.prev = _context3.next) {
331
- case 0:
332
- override = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : true;
333
- preserveTimestamps = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : false;
334
- filter = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : function () {
335
- return true;
336
- };
337
- if (!(!_fs["default"].existsSync(from) || !_fs["default"].existsSync(from))) {
338
- _context3.next = 5;
339
- break;
340
- }
341
- throw new _index2["default"](8009, "".concat(from, " or ").concat(dest, " is not exist!"));
342
- case 5:
343
- this.appendInfo("\u6B63\u5728\u8907\u88FDing ".concat(from, "/* => ").concat(dest, "/* succeed"));
344
- _fsExtra["default"].copySync(from, dest, {
345
- preserveTimestamps: preserveTimestamps,
346
- override: override,
347
- filter: filter
348
- });
349
- this.appendInfo("\u8907\u88FD\u6210\u529F ".concat(from, "/* => ").concat(dest, "/* succeed"));
350
- case 8:
351
- case "end":
352
- return _context3.stop();
353
- }
354
- }, _callee3, this);
355
- }));
356
- function copyFromFolderToDestFolder(_x3, _x4) {
357
- return _copyFromFolderToDestFolder.apply(this, arguments);
358
- }
359
- return copyFromFolderToDestFolder;
360
- }() /** remove all under dir */)
361
- }, {
362
- key: "cleanAllFiles",
363
- value: function cleanAllFiles(dir) {
364
- if (this.isDirectory(dir)) {
365
- this.appendInfo("\u6E96\u5099\u6E05\u9664\u5E95\u4E0B\u7684\u6240\u6709 ".concat(dir));
366
- _fsExtra["default"].emptyDirSync(dir);
367
- this.appendInfo("\u6210\u529F\u6E05\u9664\u5E95\u4E0B\u7684\u6240\u6709 ".concat(dir));
368
- }
369
- }
370
-
371
- /** 刪掉自己, force能夠強制刪除 自己root_dir 以外的path */
372
- }, {
373
- key: "deleteSelfByPath",
374
- value: (function () {
375
- var _deleteSelfByPath = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(path, force) {
376
- return _regenerator["default"].wrap(function _callee4$(_context4) {
377
- while (1) switch (_context4.prev = _context4.next) {
378
- case 0:
379
- if (!_fs["default"].existsSync(path)) {
380
- _context4.next = 5;
381
- break;
382
- }
383
- this.appendInfo("\u6E96\u5099\u522A\u6389 ".concat(path, ",{force:").concat(force, "}"));
384
- _context4.next = 4;
385
- return (0, _del["default"])(path, {
386
- force: force
387
- });
388
- case 4:
389
- this.appendInfo("\u6210\u529F\u522A\u6389\u4E86 ".concat(path));
390
- case 5:
391
- case "end":
392
- return _context4.stop();
393
- }
394
- }, _callee4, this);
395
- }));
396
- function deleteSelfByPath(_x5, _x6) {
397
- return _deleteSelfByPath.apply(this, arguments);
398
- }
399
- return deleteSelfByPath;
400
- }())
401
- }, {
402
- key: "deleteFileOrFolder",
403
- value: function () {
404
- var _deleteFileOrFolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(path) {
405
- return _regenerator["default"].wrap(function _callee5$(_context5) {
406
- while (1) switch (_context5.prev = _context5.next) {
407
- case 0:
408
- this.appendInfo("\u522A\u6389\u4E86 ".concat(path));
409
- _context5.next = 3;
410
- return (0, _del["default"])(path);
411
- case 3:
412
- case "end":
413
- return _context5.stop();
414
- }
415
- }, _callee5, this);
416
- }));
417
- function deleteFileOrFolder(_x7) {
418
- return _deleteFileOrFolder.apply(this, arguments);
419
- }
420
- return deleteFileOrFolder;
421
- }() /** 刪掉自己目錄內的孩子, force能夠強制刪除 自己root_dir 以外的path,保留folder的記體體位置 */
422
- }, {
423
- key: "deleteChildByPath",
424
- value: (function () {
425
- var _deleteChildByPath = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(path) {
426
- var force,
427
- pathes,
428
- _iterator2,
429
- _step2,
430
- _path2,
431
- _args6 = arguments;
432
- return _regenerator["default"].wrap(function _callee6$(_context6) {
433
- while (1) switch (_context6.prev = _context6.next) {
434
- case 0:
435
- force = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : false;
436
- pathes = this.getChildPathByPath(path);
437
- _iterator2 = _createForOfIteratorHelper(pathes);
438
- _context6.prev = 3;
439
- _iterator2.s();
440
- case 5:
441
- if ((_step2 = _iterator2.n()).done) {
442
- _context6.next = 11;
443
- break;
444
- }
445
- _path2 = _step2.value;
446
- _context6.next = 9;
447
- return this.deleteSelfByPath(_path2.absolute, force);
448
- case 9:
449
- _context6.next = 5;
450
- break;
451
- case 11:
452
- _context6.next = 16;
453
- break;
454
- case 13:
455
- _context6.prev = 13;
456
- _context6.t0 = _context6["catch"](3);
457
- _iterator2.e(_context6.t0);
458
- case 16:
459
- _context6.prev = 16;
460
- _iterator2.f();
461
- return _context6.finish(16);
462
- case 19:
463
- case "end":
464
- return _context6.stop();
465
- }
466
- }, _callee6, this, [[3, 13, 16, 19]]);
467
- }));
468
- function deleteChildByPath(_x8) {
469
- return _deleteChildByPath.apply(this, arguments);
470
- }
471
- return deleteChildByPath;
472
- }() /** 取得folder底下的file counts*/)
473
- }, {
474
- key: "getFileCountsOfFolder",
475
- value: function getFileCountsOfFolder(path) {
476
- if (this.isDirectory(path)) {
477
- return _fs["default"].readdirSync(path).length;
478
- }
479
- return -1;
480
- }
481
- }, {
482
- key: "reinstallNodeModules",
483
- value: function () {
484
- var _reinstallNodeModules = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
485
- var path,
486
- _len4,
487
- exclude,
488
- _key4,
489
- ex,
490
- paths,
491
- _iterator3,
492
- _step3,
493
- _json,
494
- path_module_root,
495
- path_gen_node_module,
496
- path_lock_json,
497
- _iterator4,
498
- _step4,
499
- _json2,
500
- _path_module_root,
501
- _path_gen_node_module,
502
- _args7 = arguments;
503
- return _regenerator["default"].wrap(function _callee7$(_context7) {
504
- while (1) switch (_context7.prev = _context7.next) {
505
- case 0:
506
- path = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : "../";
507
- for (_len4 = _args7.length, exclude = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
508
- exclude[_key4 - 1] = _args7[_key4];
509
- }
510
- ex = [].concat(exclude, ["node_modules", "utiller", "configerer"]);
511
- /** utiller 不能刪掉,不然就爆了, configer是他的依賴也不能刪 */
512
- paths = this.findFilePathBy.apply(this, [path, function (each) {
513
- return _lodash["default"].isEqual(each.fileNameExtension, "package.json");
514
- }].concat((0, _toConsumableArray2["default"])(ex)));
515
- _iterator3 = _createForOfIteratorHelper(paths);
516
- _context7.prev = 5;
517
- _iterator3.s();
518
- case 7:
519
- if ((_step3 = _iterator3.n()).done) {
520
- _context7.next = 20;
521
- break;
522
- }
523
- _json = _step3.value;
524
- path_module_root = this.getFileDirPath(_json.absolute);
525
- path_gen_node_module = "".concat(path_module_root, "node_modules");
526
- path_lock_json = "".concat(path_module_root, "package-lock.json");
527
- _context7.next = 14;
528
- return (0, _del["default"])(path_lock_json);
529
- case 14:
530
- this.appendInfo("\u522A\u6389\u4E86 ".concat(path_lock_json));
531
- _context7.next = 17;
532
- return (0, _del["default"])(path_gen_node_module);
533
- case 17:
534
- this.appendInfo("\u522A\u6389\u4E86 ".concat(path_gen_node_module));
535
- case 18:
536
- _context7.next = 7;
537
- break;
538
- case 20:
539
- _context7.next = 25;
540
- break;
541
- case 22:
542
- _context7.prev = 22;
543
- _context7.t0 = _context7["catch"](5);
544
- _iterator3.e(_context7.t0);
545
- case 25:
546
- _context7.prev = 25;
547
- _iterator3.f();
548
- return _context7.finish(25);
549
- case 28:
550
- _iterator4 = _createForOfIteratorHelper(paths);
551
- _context7.prev = 29;
552
- _iterator4.s();
553
- case 31:
554
- if ((_step4 = _iterator4.n()).done) {
555
- _context7.next = 40;
556
- break;
557
- }
558
- _json2 = _step4.value;
559
- _path_module_root = this.getFileDirPath(_json2.absolute);
560
- _path_gen_node_module = "".concat(_path_module_root, "node_modules");
561
- if (_fs["default"].existsSync(_path_gen_node_module)) {
562
- _context7.next = 38;
563
- break;
564
- }
565
- _context7.next = 38;
566
- return this.executeCommandLine("cd ".concat(_path_module_root, " && npm install"));
567
- case 38:
568
- _context7.next = 31;
569
- break;
570
- case 40:
571
- _context7.next = 45;
572
- break;
573
- case 42:
574
- _context7.prev = 42;
575
- _context7.t1 = _context7["catch"](29);
576
- _iterator4.e(_context7.t1);
577
- case 45:
578
- _context7.prev = 45;
579
- _iterator4.f();
580
- return _context7.finish(45);
581
- case 48:
582
- case "end":
583
- return _context7.stop();
584
- }
585
- }, _callee7, this, [[5, 22, 25, 28], [29, 42, 45, 48]]);
586
- }));
587
- function reinstallNodeModules() {
588
- return _reinstallNodeModules.apply(this, arguments);
589
- }
590
- return reinstallNodeModules;
591
- }() /** 拿到目錄下的資料夾列表 */
592
- }, {
593
- key: "getNamesOfFolderChild",
594
- value: function getNamesOfFolderChild(path) {
595
- return this.getChildPathByPath(path).filter(function (p) {
596
- return p.isDirectory;
597
- }).map(function (p) {
598
- return p.dirName;
599
- });
600
- }
601
-
602
- /** 從給的path 找到 one level 的 file/dir Path */
603
- }, {
604
- key: "getChildPathByPath",
605
- value: function getChildPathByPath(_path) {
606
- var _this3 = this;
607
- try {
608
- var files = _fs["default"].readdirSync(_path);
609
- return files.map(function (file) {
610
- return _this3.getPathInfo(_path4["default"].join(_path, file));
611
- });
612
- } catch (error) {
613
- throw new _index2["default"](8002, error);
614
- }
615
- }
616
-
617
- /** from :'./template/sample.babel.config.js
618
- * destDir : '/template'
619
- * fileName: 'fileName.extension' => 如果fileName 是 empty ,dest就是必須包含新檔名
620
- * force 就是強制覆蓋他啦
621
- * */
622
- }, {
623
- key: "copySingleFile",
624
- value: function copySingleFile(from, dest, fileName) {
625
- var force = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
626
- var destination = fileName && fileName.trim() ? _path4["default"].join(dest, fileName) : dest;
627
- if (_fs["default"].existsSync(destination) && !force) {
628
- throw new _index2["default"](8006, destination);
629
- }
630
- _fs["default"].copyFileSync(from, destination);
631
- }
632
- }, {
633
- key: "ensureFolderExists",
634
- value: function ensureFolderExists(folderPath) {
635
- var resolved = _path4["default"].resolve(folderPath);
636
- if (_fs["default"].existsSync(resolved)) return;
637
- _fs["default"].mkdirSync(resolved, {
638
- recursive: true
639
- });
640
- }
641
- }, {
642
- key: "getNodeEnvVariable",
643
- value: function getNodeEnvVariable(key) {
644
- var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
645
- var value = process.env[key];
646
- return value === undefined ? defaultValue : value;
647
- }
648
- }, {
649
- key: "isDirectory",
650
- value: function isDirectory(path) {
651
- if (!this.isPathExist(path)) return false;
652
- return _fs["default"].lstatSync(path).isDirectory();
653
- }
654
- }, {
655
- key: "isFile",
656
- value: function isFile(path) {
657
- if (!this.isPathExist(path)) return false;
658
- return _fs["default"].lstatSync(path).isFile();
659
- }
660
- }, {
661
- key: "isImageFile",
662
- value: function isImageFile(file) {
663
- return ["svg", "png", "jpg", "jpeg"].includes(file.extension);
664
- }
665
-
666
- /** 把內容都抹掉each 是 fileName, ex:index.js*/
667
- }, {
668
- key: "cleanChildFiles",
669
- value: (function () {
670
- var _cleanChildFiles = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(path) {
671
- var _this4 = this;
672
- var predicate,
673
- _len5,
674
- exclude,
675
- _key5,
676
- files,
677
- nonImages,
678
- _args8 = arguments;
679
- return _regenerator["default"].wrap(function _callee8$(_context8) {
680
- while (1) switch (_context8.prev = _context8.next) {
681
- case 0:
682
- predicate = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : function () {
683
- return true;
684
- };
685
- if (_fs["default"].existsSync(path)) {
686
- _context8.next = 3;
687
- break;
688
- }
689
- return _context8.abrupt("return", false);
690
- case 3:
691
- for (_len5 = _args8.length, exclude = new Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {
692
- exclude[_key5 - 2] = _args8[_key5];
693
- }
694
- files = this.findFilePathBy.apply(this, [path, predicate].concat(exclude));
695
- nonImages = files.filter(function (file) {
696
- return !_this4.isImageFile(file);
697
- });
698
- _context8.next = 8;
699
- return Promise.allSettled(nonImages.map(function (file) {
700
- _this4.cleanFileContent(file.absolute);
701
- _this4.appendInfo("\u6210\u529F cleanChildFiles() -> '".concat(file.path, "'"));
702
- return Promise.resolve();
703
- }));
704
- case 8:
705
- return _context8.abrupt("return", files);
706
- case 9:
707
- case "end":
708
- return _context8.stop();
709
- }
710
- }, _callee8, this);
711
- }));
712
- function cleanChildFiles(_x9) {
713
- return _cleanChildFiles.apply(this, arguments);
714
- }
715
- return cleanChildFiles;
716
- }() /** 將檔案清除乾淨, 但不刪掉檔案, 這樣hot reload的監聽才不會遺失*/)
717
- }, {
718
- key: "cleanFileContent",
719
- value: function cleanFileContent(path) {
720
- this.syncDeleteFile(path);
721
- /** 太浪費時間了
722
- * fs.truncateSync(path, 0);
723
- this.appendInfo(`${path} 內容被清除!`);
724
- * */
725
- }
726
- }, {
727
- key: "syncWithExistPackage",
728
- value: function () {
729
- var _syncWithExistPackage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
730
- var path,
731
- paths,
732
- _iterator5,
733
- _step5,
734
- _path3,
735
- _args9 = arguments;
736
- return _regenerator["default"].wrap(function _callee9$(_context9) {
737
- while (1) switch (_context9.prev = _context9.next) {
738
- case 0:
739
- path = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : "../";
740
- /** 產生shell_script_腳本 */
741
- paths = this.findFilePathBy(path, function (each) {
742
- return _lodash["default"].isEqual(each.fileNameExtension, "package.json");
743
- }, "node_modules");
744
- _iterator5 = _createForOfIteratorHelper(paths);
745
- try {
746
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
747
- _path3 = _step5.value;
748
- try {
749
- if (!_lodash["default"].isEqual(_path3.dirName, "..")) this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT, "cd_".concat(_path3.dirName), "cd ".concat(this.getFolderPathOfSpecificPath(_path3.absolute)));
750
- } catch (error) {
751
- this.appendInfo(error.message);
752
- }
753
- }
754
- } catch (err) {
755
- _iterator5.e(err);
756
- } finally {
757
- _iterator5.f();
758
- }
759
- case 4:
760
- case "end":
761
- return _context9.stop();
762
- }
763
- }, _callee9, this);
764
- }));
765
- function syncWithExistPackage() {
766
- return _syncWithExistPackage.apply(this, arguments);
767
- }
768
- return syncWithExistPackage;
769
- }()
770
- }, {
771
- key: "packageTemplatify",
772
- value: function () {
773
- var _packageTemplatify = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(path, packageName) {
774
- var _this5 = this;
775
- var existFolders, dirPath, packagejson, classBase, ideaWorkspacePath, workspace, splited, indexOfRunManager, indexOfList;
776
- return _regenerator["default"].wrap(function _callee10$(_context10) {
777
- while (1) switch (_context10.prev = _context10.next) {
778
- case 0:
779
- existFolders = this.getChildPathByPath(path).map(function (each) {
780
- return each.absolute.split("\/").pop();
781
- });
782
- if (!this.has(existFolders, packageName)) {
783
- _context10.next = 3;
784
- break;
785
- }
786
- throw new _index2["default"](8004, " packageName ===> '".concat(packageName, "'"));
787
- case 3:
788
- dirPath = "".concat(path, "/").concat(packageName);
789
- /** 1.產生package folder */
790
- _fs["default"].mkdirSync(dirPath);
791
-
792
- /** 2.要有babel.config.js? */
793
- _fs["default"].copyFileSync("./template/sample.babel.config.js", "".concat(dirPath, "/babel.config.js"));
794
-
795
- /** 3.要有package,json */
796
- packagejson = this.getJsonObjByFilePath("./template/sample.package.json");
797
- packagejson["name"] = packageName;
798
- this.writeFileInJSON("".concat(dirPath, "/package.json"), packagejson);
799
-
800
- /** 4.要在 src/${index.js}, dir/index.js */
801
- this.persistByPath("".concat(dirPath, "/src"));
802
- classBase = String.format(this.getFileContextInRaw("./template/sample.src.index.js"), packageName, "明悅", new Date());
803
- _fs["default"].writeFileSync("".concat(dirPath, "/src/index.js"), classBase);
804
-
805
- /** 6.要產生webstorm run case? */
806
- ideaWorkspacePath = "".concat(this.findSpecificFolderByPath(dirPath, ".idea"), "/workspace.xml");
807
- /** 7.要產生cd script 腳本 **/
808
- this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT, "cd_".concat(packageName), "cd ".concat(_path4["default"].resolve(dirPath)));
809
- if (_fs["default"].existsSync(ideaWorkspacePath)) {
810
- workspace = this.getFileContextInRaw(ideaWorkspacePath);
811
- splited = workspace.split("\n");
812
- indexOfRunManager = _lodash["default"].findIndex(splited, function (line) {
813
- return _this5.has(line, 'name="RunManager');
814
- });
815
- this.insertToArray(splited, indexOfRunManager, "<configuration name=\"".concat(packageName, "\" \n type=\"NodeJSConfigurationType\" \n path-to-node=\"$USER_HOME$/.nvm/versions/node/v18.19.1/bin/node\" \n node-parameters=\"--require @babel/register\" \n path-to-js-file=\"").concat(_path4["default"].resolve(dirPath), "/src/index.js\" \n working-dir=\"").concat(_path4["default"].resolve(dirPath), "\" >"), " <envs>", " <env name=\"self_debug\" value=\"true\" />", " <env name=\"is_node\" value=\"true\" />", " </envs>", " <method v=\"2\" />", "</configuration>");
816
- indexOfList = _lodash["default"].findIndex(splited, function (line) {
817
- return _lodash["default"].isEqual(_lodash["default"].trim(line), "<list>");
818
- }, indexOfRunManager);
819
- this.insertToArray(splited, indexOfList, " <item itemvalue=\"Node.js.".concat(packageName, "\" />"));
820
- _fs["default"].writeFileSync(ideaWorkspacePath, splited.join("\n"));
821
- } else {
822
- this.appendError("".concat(ideaWorkspacePath, " not exist"));
823
- }
824
- _context10.next = 17;
825
- return this.executeCommandLine("cd ".concat(_path4["default"].resolve(dirPath), " && npm install"));
826
- case 17:
827
- this.appendInfo("build ".concat(packageName, " succeed!"));
828
- case 18:
829
- case "end":
830
- return _context10.stop();
831
- }
832
- }, _callee10, this);
833
- }));
834
- function packageTemplatify(_x10, _x11) {
835
- return _packageTemplatify.apply(this, arguments);
836
- }
837
- return packageTemplatify;
838
- }()
839
- }, {
840
- key: "appendInfo",
841
- value: function appendInfo() {
842
- for (var _len6 = arguments.length, messages = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
843
- messages[_key6] = arguments[_key6];
844
- }
845
- return this.appendLog(_configerer.configerer.PATH_INFO_LOG, messages, false);
846
- }
847
- }, {
848
- key: "appendError",
849
- value: function appendError() {
850
- for (var _len7 = arguments.length, messages = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
851
- messages[_key7] = arguments[_key7];
852
- }
853
- return this.appendLog(_configerer.configerer.PATH_ERROR_LOG, messages, true);
854
- }
855
- }, {
856
- key: "appendLog",
857
- value: function appendLog(path, messages) {
858
- var isError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
859
- var msg = "".concat(this.getCurrentTimeFormat(), " ").concat(isError ? "ERROR" : "LOG", " : ").concat(messages.map(this.stringifyLog).join(" ,"));
860
- if (!this.isProductionEnvironment()) {
861
- var _console, _console2;
862
- isError ? (_console = console).error.apply(_console, (0, _toConsumableArray2["default"])(messages)) : (_console2 = console).log.apply(_console2, (0, _toConsumableArray2["default"])(messages));
863
- }
864
- if (this.isPersistIntoLogFile) {
865
- this.appendFile(path, msg);
866
- }
867
- }
868
- }, {
869
- key: "stringifyLog",
870
- value: function stringifyLog(data) {
871
- return (0, _typeof2["default"])(data) === "object" ? JSON.stringify(data) : String(data);
872
- }
873
-
874
- /** 如果file不存在,就會產生file,force_delete 可以強制刪除cache file*/
875
- }, {
876
- key: "appendFile",
877
- value: function appendFile(filePath, data) {
878
- var newline = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
879
- var forceDelete = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
880
- try {
881
- var resolvedPath = _path4["default"].resolve(filePath); // <<--- 正規化路徑
882
- if (forceDelete && _fs["default"].existsSync(resolvedPath)) _fs["default"].unlinkSync(resolvedPath);
883
- if (!_fs["default"].existsSync(resolvedPath)) this.persistByPath(resolvedPath);
884
- var content = "".concat(newline ? "\n" : "").concat(data);
885
- _fs["default"].appendFileSync(resolvedPath, content);
886
- } catch (err) {
887
- throw new _index2["default"](8001, err);
888
- }
889
- }
890
- }, {
891
- key: "disableLogMessagePersistent",
892
- value: function disableLogMessagePersistent() {
893
- this.isPersistIntoLogFile = false;
894
- }
895
- }, {
896
- key: "getLogString",
897
- value: function getLogString(datas) {
898
- var _this6 = this;
899
- return datas.map(function (data) {
900
- return _this6.isJson(data) || _lodash["default"].isObject(data) || _lodash["default"].isArray(data) ? _this6.deepFlat(data) : data;
901
- }).join(" ,");
902
- }
903
-
904
- /** 常常要把JSON的內容印出來,所以這個很方便 */
905
- }, {
906
- key: "persistJsonFilePrettier",
907
- value: (function () {
908
- var _persistJsonFilePrettier = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(path, object) {
909
- var ignoreP,
910
- _args11 = arguments;
911
- return _regenerator["default"].wrap(function _callee11$(_context11) {
912
- while (1) switch (_context11.prev = _context11.next) {
913
- case 0:
914
- ignoreP = _args11.length > 2 && _args11[2] !== undefined ? _args11[2] : false;
915
- path = _path4["default"].resolve(path);
916
- this.appendFile(path, JSON.stringify(object), true, true);
917
- if (ignoreP) {
918
- _context11.next = 6;
919
- break;
920
- }
921
- _context11.next = 6;
922
- return this.prettier(path, 120);
923
- case 6:
924
- case "end":
925
- return _context11.stop();
926
- }
927
- }, _callee11, this);
928
- }));
929
- function persistJsonFilePrettier(_x12, _x13) {
930
- return _persistJsonFilePrettier.apply(this, arguments);
931
- }
932
- return persistJsonFilePrettier;
933
- }() /** 快速把資料結構印出來看 */)
934
- }, {
935
- key: "printCollectionToFile",
936
- value: function printCollectionToFile(collection) {
937
- var fileName = "./logs/__temp_".concat(this.getCurrentTimeFormat(), ".txt");
938
- this.persistByPath("./logs/");
939
- this.appendFile(fileName, this.deepFlat(collection, " \n\n, "));
940
- this.appendInfo("collectionToFile succeed, file name ==> ".concat(fileName));
941
- }
942
-
943
- /** 重複讀取file IO時,要用這個方式,不然IO太吃資源了
944
- * 重要!!!!!cache可能會導致node.js的 stack memory爆掉
945
- * */
946
- }, {
947
- key: "readFileContentByPath",
948
- value: (function () {
949
- var _readFileContentByPath = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(path) {
950
- var _cache$path;
951
- var cache,
952
- _args12 = arguments;
953
- return _regenerator["default"].wrap(function _callee12$(_context12) {
954
- while (1) switch (_context12.prev = _context12.next) {
955
- case 0:
956
- cache = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : {};
957
- if (!((_cache$path = cache[path]) !== null && _cache$path !== void 0)) {
958
- _context12.next = 5;
959
- break;
960
- }
961
- _context12.t0 = _cache$path;
962
- _context12.next = 8;
963
- break;
964
- case 5:
965
- _context12.next = 7;
966
- return _promises["default"].readFile(path, "utf-8");
967
- case 7:
968
- _context12.t0 = cache[path] = _context12.sent;
969
- case 8:
970
- return _context12.abrupt("return", _context12.t0);
971
- case 9:
972
- case "end":
973
- return _context12.stop();
974
- }
975
- }, _callee12);
976
- }));
977
- function readFileContentByPath(_x14) {
978
- return _readFileContentByPath.apply(this, arguments);
979
- }
980
- return readFileContentByPath;
981
- }())
982
- }, {
983
- key: "singleFileTemplatify",
984
- value: function singleFileTemplatify() {
985
- var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "./";
986
- var all = this.findFilePathByExtension(path, ["js"], "node_modules");
987
- var _iterator6 = _createForOfIteratorHelper(all),
988
- _step6;
989
- try {
990
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
991
- var file = _step6.value;
992
- var content = this.getFileContextInRaw(file.absolute).trim();
993
- if (_lodash["default"].isEmpty(content)) {
994
- this.appendInfo(file.fileName, file.absolute);
995
- var className = _lodash["default"].isEqual(file.fileName, "index") ? file.dirName : file.fileName;
996
- _fs["default"].writeFileSync(file.absolute, String.format(this.getFileContextInRaw(".\n /template/s\n ample.src.index.js"), className, "明悅", new Date()));
997
- }
998
- }
999
- } catch (err) {
1000
- _iterator6.e(err);
1001
- } finally {
1002
- _iterator6.f();
1003
- }
1004
- }
1005
- }, {
1006
- key: "isFileEmpty",
1007
- value: function isFileEmpty(path) {
1008
- var content = this.getFileContextInRaw(path);
1009
- return !content || !content.trim();
1010
- }
1011
-
1012
- /** 保守的複製檔案, 如果檔案比較舊, 或是檔案是空的, 就放棄copy行為 */
1013
- }, {
1014
- key: "copySingleFileConservative",
1015
- value: function copySingleFileConservative(destPath, latestFile) {
1016
- var absolute = latestFile.absolute,
1017
- lastModifiedTime = latestFile.lastModifiedTime;
1018
-
1019
- // 先確認檔案是否為空
1020
- if (!this.isPathExist(absolute) || this.isFileEmpty(absolute)) {
1021
- this.appendInfo("".concat(absolute, " is empty file, ignore copy behavior"));
1022
- return;
1023
- }
1024
- var destExists = _fs["default"].existsSync(destPath);
1025
-
1026
- // 如果目的檔案存在且比來源更新,則跳過
1027
- if (destExists && this.getFileLastModifiedTime(destPath) > lastModifiedTime) {
1028
- this.appendInfo("".concat(destPath, " is the latest, ignore this run"));
1029
- return;
1030
- }
1031
- if (!destExists) {
1032
- this.appendInfo("".concat(destPath, " does not exist, safe to copy."));
1033
- }
1034
-
1035
- // 確保目的路徑存在(遞迴建立)
1036
- this.ensureFolderExists(_path4["default"].dirname(destPath));
1037
-
1038
- // 強制複製
1039
- this.copySingleFile(absolute, destPath, undefined, true);
1040
- }
1041
- }, {
1042
- key: "syncDeleteFile",
1043
- value: function syncDeleteFile(path) {
1044
- if (_fs["default"].existsSync(path)) _fs["default"].unlinkSync(path);
1045
- }
1046
- }, {
1047
- key: "getFileContextInJSON",
1048
- value: function getFileContextInJSON(path) {
1049
- try {
1050
- if (_fs["default"].existsSync(path)) {
1051
- return JSON.parse(_fs["default"].readFileSync(path, "utf-8"));
1052
- }
1053
- } catch (error) {
1054
- throw new _index2["default"](9999, error.message);
1055
- }
1056
- return {};
1057
- }
1058
-
1059
- /** 讀取path,然後用utf-8的方式 */
1060
- }, {
1061
- key: "getFileContextInRaw",
1062
- value: function getFileContextInRaw(path) {
1063
- if (!_fs["default"].existsSync(path)) return "";
1064
- return _fs["default"].readFileSync(path, "utf-8");
1065
- }
1066
- }, {
1067
- key: "writeFileInJSON",
1068
- value: function writeFileInJSON(path, param) {
1069
- var data = JSON.stringify(param, null, 2);
1070
- _fs["default"].writeFileSync(path, data);
1071
- }
1072
-
1073
- /** 用來pack lib_project, 不然其他import lib_project的專案會無法讀懂es6
1074
- * release folder 會被自動ignore到
1075
- * exclude 裡面可以放專案名稱, 例如 free_marker,question_update */
1076
- }, {
1077
- key: "generatePackage",
1078
- value: (function () {
1079
- var _generatePackage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
1080
- var _this7 = this;
1081
- var path,
1082
- deployToNPMServer,
1083
- forceInstallNodeModule,
1084
- packagejsons,
1085
- _len8,
1086
- exclude,
1087
- _key8,
1088
- _iterator7,
1089
- _step7,
1090
- _loop,
1091
- _args14 = arguments;
1092
- return _regenerator["default"].wrap(function _callee13$(_context14) {
1093
- while (1) switch (_context14.prev = _context14.next) {
1094
- case 0:
1095
- path = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : "./";
1096
- deployToNPMServer = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : false;
1097
- forceInstallNodeModule = _args14.length > 2 && _args14[2] !== undefined ? _args14[2] : true;
1098
- packagejsons = this.findFilePathByExtension(path, ["json"], "node_modules", "release");
1099
- packagejsons = _lodash["default"].filter(packagejsons, function (each) {
1100
- return _lodash["default"].isEqual(each.fileName, "package");
1101
- });
1102
- packagejsons = packagejsons.map(function (each) {
1103
- return _this7.getFolderPathOfSpecificPath(each.absolute);
1104
- });
1105
- for (_len8 = _args14.length, exclude = new Array(_len8 > 3 ? _len8 - 3 : 0), _key8 = 3; _key8 < _len8; _key8++) {
1106
- exclude[_key8 - 3] = _args14[_key8];
1107
- }
1108
- _iterator7 = _createForOfIteratorHelper(packagejsons);
1109
- _context14.prev = 8;
1110
- _loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
1111
- var path, tempFolderPath, release, pathOfPackageJson, indexFileName, templatePath, _yield$_this7$upgrade, moduleName, version;
1112
- return _regenerator["default"].wrap(function _loop$(_context13) {
1113
- while (1) switch (_context13.prev = _context13.next) {
1114
- case 0:
1115
- path = _step7.value;
1116
- if (!_this7.isAndEquals.apply(_this7, (0, _toConsumableArray2["default"])(exclude.map(function (projectName) {
1117
- return function () {
1118
- return !_this7.has(path, projectName);
1119
- };
1120
- })))) {
1121
- _context13.next = 46;
1122
- break;
1123
- }
1124
- _context13.next = 4;
1125
- return _this7.generateTempFolderWithCleanSrc(path);
1126
- case 4:
1127
- tempFolderPath = _context13.sent;
1128
- /** 產生release資料夾 */
1129
- release = _this7.persistByPath(_path4["default"].join(path, "release"));
1130
- /** 利用babel 產生出 es5相容性高的src file */
1131
- _context13.next = 8;
1132
- return _this7.executeCommandLine("cd ".concat(path, " && babel ./temp --out-dir ./release/lib --config-file ./babel.config.js"));
1133
- case 8:
1134
- pathOfPackageJson = _path4["default"].join(path, "package.json");
1135
- _context13.prev = 9;
1136
- indexFileName = "sample.npm.module.index.js";
1137
- /** 複製公版的index.js */
1138
- _this7.copySingleFile("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/".concat(indexFileName), release, "index.js", true);
1139
-
1140
- /** template就是樣板的概念 */
1141
- templatePath = _path4["default"].join(path, "template");
1142
- if (!_this7.isPathExist(templatePath)) {
1143
- _context13.next = 16;
1144
- break;
1145
- }
1146
- _context13.next = 16;
1147
- return _this7.copyFromFolderToDestFolder(templatePath, _this7.persistByPath(_path4["default"].join(release, "template")));
1148
- case 16:
1149
- if (!deployToNPMServer) {
1150
- _context13.next = 24;
1151
- break;
1152
- }
1153
- _context13.next = 19;
1154
- return _this7.upgradePackageJsonVersion(pathOfPackageJson);
1155
- case 19:
1156
- _yield$_this7$upgrade = _context13.sent;
1157
- moduleName = _yield$_this7$upgrade.moduleName;
1158
- version = _yield$_this7$upgrade.version;
1159
- _context13.next = 24;
1160
- return _this7.updateVersionOfTemplate(moduleName, version);
1161
- case 24:
1162
- /** 把package.json release放進去 */
1163
- _this7.copySingleFile(pathOfPackageJson, _path4["default"].join(release, "package.json"), undefined, true);
1164
-
1165
- /** 安裝一個沒有devDependency 的node_module */
1166
- if (!(forceInstallNodeModule || !_this7.isPathExist(_path4["default"].join(release, "node_module")))) {
1167
- _context13.next = 30;
1168
- break;
1169
- }
1170
- _context13.next = 28;
1171
- return _this7.executeCommandLine("cd ".concat(release, " && yarn install --production"));
1172
- case 28:
1173
- _context13.next = 31;
1174
- break;
1175
- case 30:
1176
- _this7.appendInfo("ignore node-module install behavior");
1177
- case 31:
1178
- _this7.appendInfo("build ".concat(path, " succeed"));
1179
-
1180
- /** 部署到 local server*/
1181
- if (!deployToNPMServer) {
1182
- _context13.next = 35;
1183
- break;
1184
- }
1185
- _context13.next = 35;
1186
- return _this7.executeCommandLine("cd ".concat(release, " && npm publish"));
1187
- case 35:
1188
- _context13.next = 42;
1189
- break;
1190
- case 37:
1191
- _context13.prev = 37;
1192
- _context13.t0 = _context13["catch"](9);
1193
- _context13.next = 41;
1194
- return _this7.deleteSelfByPath(release, true);
1195
- case 41:
1196
- throw new _index2["default"](9999, "generatePackage \u5831\u932F, ".concat(_context13.t0.message));
1197
- case 42:
1198
- _context13.prev = 42;
1199
- _context13.next = 45;
1200
- return _this7.deleteSelfByPath(tempFolderPath, true);
1201
- case 45:
1202
- return _context13.finish(42);
1203
- case 46:
1204
- case "end":
1205
- return _context13.stop();
1206
- }
1207
- }, _loop, null, [[9, 37, 42, 46]]);
1208
- });
1209
- _iterator7.s();
1210
- case 11:
1211
- if ((_step7 = _iterator7.n()).done) {
1212
- _context14.next = 15;
1213
- break;
1214
- }
1215
- return _context14.delegateYield(_loop(), "t0", 13);
1216
- case 13:
1217
- _context14.next = 11;
1218
- break;
1219
- case 15:
1220
- _context14.next = 20;
1221
- break;
1222
- case 17:
1223
- _context14.prev = 17;
1224
- _context14.t1 = _context14["catch"](8);
1225
- _iterator7.e(_context14.t1);
1226
- case 20:
1227
- _context14.prev = 20;
1228
- _iterator7.f();
1229
- return _context14.finish(20);
1230
- case 23:
1231
- case "end":
1232
- return _context14.stop();
1233
- }
1234
- }, _callee13, this, [[8, 17, 20, 23]]);
1235
- }));
1236
- function generatePackage() {
1237
- return _generatePackage.apply(this, arguments);
1238
- }
1239
- return generatePackage;
1240
- }() /** 用來更新樣板裡面的模組版本 */)
1241
- }, {
1242
- key: "updateVersionOfTemplate",
1243
- value: (function () {
1244
- var _updateVersionOfTemplate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(dependency, newVersion) {
1245
- var paths, _i, _paths, path, succeedOfPersistFile, json;
1246
- return _regenerator["default"].wrap(function _callee14$(_context15) {
1247
- while (1) switch (_context15.prev = _context15.next) {
1248
- case 0:
1249
- paths = ["/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/admin.package.json.mustache", "/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/web.package.json.mustache", "/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/functions.package.json.mustache", "/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/sample.package.json", "/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/package.json"];
1250
- _i = 0, _paths = paths;
1251
- case 2:
1252
- if (!(_i < _paths.length)) {
1253
- _context15.next = 24;
1254
- break;
1255
- }
1256
- path = _paths[_i];
1257
- if (!this.isPathExist(path)) {
1258
- _context15.next = 21;
1259
- break;
1260
- }
1261
- succeedOfPersistFile = false;
1262
- json = this.getJsonObjByFilePath(path);
1263
- if (!(json && json.dependencies && json.dependencies[dependency])) {
1264
- _context15.next = 18;
1265
- break;
1266
- }
1267
- json.dependencies[dependency] = "^".concat(newVersion);
1268
- _context15.prev = 9;
1269
- _context15.next = 12;
1270
- return this.writeJsonThanPrettier(path, json);
1271
- case 12:
1272
- succeedOfPersistFile = true;
1273
- _context15.next = 18;
1274
- break;
1275
- case 15:
1276
- _context15.prev = 15;
1277
- _context15.t0 = _context15["catch"](9);
1278
- succeedOfPersistFile = true;
1279
- case 18:
1280
- if (succeedOfPersistFile) {
1281
- _context15.next = 21;
1282
- break;
1283
- }
1284
- _context15.next = 21;
1285
- return this.updateFileOfSpecificLine(path, function (line) {
1286
- return " \"".concat(dependency, "\":\"^").concat(newVersion, "\"").concat(_lodash["default"].endsWith(_lodash["default"].trim(line), ",") ? "," : "");
1287
- }, function (each) {
1288
- return _lodash["default"].startsWith(_lodash["default"].trim(each), "\"".concat(dependency, "\""));
1289
- });
1290
- case 21:
1291
- _i++;
1292
- _context15.next = 2;
1293
- break;
1294
- case 24:
1295
- _context15.next = 26;
1296
- return this.copyFromFolderToDestFolder("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/", "/Users/davidtu/cross-achieve/high/idea-inventer/newp/template/", true, true);
1297
- case 26:
1298
- case "end":
1299
- return _context15.stop();
1300
- }
1301
- }, _callee14, this, [[9, 15]]);
1302
- }));
1303
- function updateVersionOfTemplate(_x15, _x16) {
1304
- return _updateVersionOfTemplate.apply(this, arguments);
1305
- }
1306
- return updateVersionOfTemplate;
1307
- }()
1308
- /** 把一份文件split(\n),然後透過predicate找出特定的line,再replace成contentOfUpdated
1309
- *
1310
- * 例如一份package.json
1311
- * utiller:1.0.1 => utiller:1.0.1
1312
- *
1313
- * */
1314
- )
1315
- }, {
1316
- key: "updateFileOfSpecificLine",
1317
- value: (function () {
1318
- var _updateFileOfSpecificLine = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15(pathOfFile) {
1319
- var contentOfUpdated,
1320
- predicate,
1321
- context,
1322
- lines,
1323
- index,
1324
- _args16 = arguments;
1325
- return _regenerator["default"].wrap(function _callee15$(_context16) {
1326
- while (1) switch (_context16.prev = _context16.next) {
1327
- case 0:
1328
- contentOfUpdated = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : function (line) {
1329
- return "updated";
1330
- };
1331
- predicate = _args16.length > 2 && _args16[2] !== undefined ? _args16[2] : function (line) {
1332
- return true;
1333
- };
1334
- context = this.getFileContextInRaw(pathOfFile);
1335
- lines = context.split("\n");
1336
- index = lines.findIndex(predicate);
1337
- if (!(index === -1)) {
1338
- _context16.next = 7;
1339
- break;
1340
- }
1341
- return _context16.abrupt("return");
1342
- case 7:
1343
- // 無匹配行則略過
1344
- lines[index] = contentOfUpdated(lines[index]);
1345
- this.appendFile(pathOfFile, lines.join("\n"), true, true);
1346
- _context16.next = 11;
1347
- return this.prettier(pathOfFile);
1348
- case 11:
1349
- case "end":
1350
- return _context16.stop();
1351
- }
1352
- }, _callee15, this);
1353
- }));
1354
- function updateFileOfSpecificLine(_x17) {
1355
- return _updateFileOfSpecificLine.apply(this, arguments);
1356
- }
1357
- return updateFileOfSpecificLine;
1358
- }())
1359
- }, {
1360
- key: "writeJsonThanPrettier",
1361
- value: function () {
1362
- var _writeJsonThanPrettier = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(path, json) {
1363
- return _regenerator["default"].wrap(function _callee16$(_context17) {
1364
- while (1) switch (_context17.prev = _context17.next) {
1365
- case 0:
1366
- this.writeFileInJSON(path, json);
1367
- _context17.next = 3;
1368
- return this.prettier(path);
1369
- case 3:
1370
- case "end":
1371
- return _context17.stop();
1372
- }
1373
- }, _callee16, this);
1374
- }));
1375
- function writeJsonThanPrettier(_x18, _x19) {
1376
- return _writeJsonThanPrettier.apply(this, arguments);
1377
- }
1378
- return writeJsonThanPrettier;
1379
- }() /** 用來豐富package.json的功能 */
1380
- }, {
1381
- key: "enrichEachPackageJson",
1382
- value: (function () {
1383
- var _enrichEachPackageJson = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee17(rootPath) {
1384
- var validNames, jsonFiles, packageFiles, _iterator8, _step8, absolute, json;
1385
- return _regenerator["default"].wrap(function _callee17$(_context18) {
1386
- while (1) switch (_context18.prev = _context18.next) {
1387
- case 0:
1388
- validNames = new Set(["package", "admin.package", "web.package", "functions.package"]);
1389
- jsonFiles = this.findFilePathByExtension(rootPath, ["json"], "gen", "node_modules", "release");
1390
- packageFiles = jsonFiles.filter(function (file) {
1391
- return validNames.has(file.fileName);
1392
- });
1393
- if (!(packageFiles.length === 0)) {
1394
- _context18.next = 5;
1395
- break;
1396
- }
1397
- return _context18.abrupt("return");
1398
- case 5:
1399
- _iterator8 = _createForOfIteratorHelper(packageFiles);
1400
- _context18.prev = 6;
1401
- _iterator8.s();
1402
- case 8:
1403
- if ((_step8 = _iterator8.n()).done) {
1404
- _context18.next = 17;
1405
- break;
1406
- }
1407
- absolute = _step8.value.absolute;
1408
- json = this.getJsonObjByFilePath(absolute);
1409
- json.scripts || (json.scripts = {});
1410
- json.scripts.updateConfigerer = "npm update configerer --save";
1411
- _context18.next = 15;
1412
- return this.writeJsonThanPrettier(absolute, json);
1413
- case 15:
1414
- _context18.next = 8;
1415
- break;
1416
- case 17:
1417
- _context18.next = 22;
1418
- break;
1419
- case 19:
1420
- _context18.prev = 19;
1421
- _context18.t0 = _context18["catch"](6);
1422
- _iterator8.e(_context18.t0);
1423
- case 22:
1424
- _context18.prev = 22;
1425
- _iterator8.f();
1426
- return _context18.finish(22);
1427
- case 25:
1428
- case "end":
1429
- return _context18.stop();
1430
- }
1431
- }, _callee17, this, [[6, 19, 22, 25]]);
1432
- }));
1433
- function enrichEachPackageJson(_x20) {
1434
- return _enrichEachPackageJson.apply(this, arguments);
1435
- }
1436
- return enrichEachPackageJson;
1437
- }())
1438
- }, {
1439
- key: "insertShellCommand",
1440
- value: function insertShellCommand() {
1441
- var shellPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _configerer.configerer.BASE_SHELL_SCRIPT;
1442
- var alias = arguments.length > 1 ? arguments[1] : undefined;
1443
- var command = arguments.length > 2 ? arguments[2] : undefined;
1444
- if (this.isStringContainInLines(this.getFileContextInRaw(shellPath), alias)) {
1445
- throw new _index2["default"](8007, "alias ".concat(alias, " is exist"));
1446
- } else {
1447
- var line = "alias ".concat(alias, "='").concat(command, "'");
1448
- this.appendFile(shellPath, line);
1449
- }
1450
- }
1451
- }, {
1452
- key: "getAdminCredential",
1453
- value: function getAdminCredential() {
1454
- return this.getJsonObjByFilePath("/Users/davidtu/cross-achieve/mimi/idea-inventer/firebaser/key/mimi19up-firebase-adminsdk.json");
1455
- }
1456
- }, {
1457
- key: "isEmptyFile",
1458
- value: function isEmptyFile(path) {
1459
- return !this.isPathExist(path) || _lodash["default"].isEmpty(this.getFileContextInRaw(path).trim());
1460
- }
1461
- }, {
1462
- key: "isEmptyFolder",
1463
- value: function isEmptyFolder(path) {
1464
- return _fs["default"].readdirSync(path).length === 0;
1465
- }
1466
-
1467
- /** 把檔案弄得好看一點
1468
- * width 是指一行能塞下多少的字元
1469
- * preitter真的很花時間,所以做個enable
1470
- * */
1471
- }, {
1472
- key: "prettier",
1473
- value: (function () {
1474
- var _prettier = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee18(path) {
1475
- var width,
1476
- _args19 = arguments;
1477
- return _regenerator["default"].wrap(function _callee18$(_context19) {
1478
- while (1) switch (_context19.prev = _context19.next) {
1479
- case 0:
1480
- width = _args19.length > 1 && _args19[1] !== undefined ? _args19[1] : 200;
1481
- _context19.next = 3;
1482
- return this.executeCommandLine("cd ".concat(_path4["default"].resolve("."), " && npx prettier --write ").concat(_path4["default"].resolve(path), " --print-width ").concat(width));
1483
- case 3:
1484
- case "end":
1485
- return _context19.stop();
1486
- }
1487
- }, _callee18, this);
1488
- }));
1489
- function prettier(_x21) {
1490
- return _prettier.apply(this, arguments);
1491
- }
1492
- return prettier;
1493
- }()
1494
- /**
1495
- * 檔案最後編輯時間!
1496
- console.log('older ==> ',utiller.getFileLastModifiedTime('./folderOfTestUsage/history_older.js'));
1497
- console.log('latest ==> ',utiller.getFileLastModifiedTime('./folderOfTestUsage/history_latest.js'));
1498
- console.log('compare latestTime > olderTime ?? ==> ',utiller.getFileLastModifiedTime('./folderOfTestUsage/history_latest.js') > utiller.getFileLastModifiedTime('./folderOfTestUsage/history_older.js'));
1499
- */
1500
- )
1501
- }, {
1502
- key: "getFileLastModifiedTime",
1503
- value: function getFileLastModifiedTime(path) {
1504
- /**
1505
- * console.log(`File Data Last Modified: ${stats.mtime}`);
1506
- * console.log(`File Status Last Modified: ${stats.ctime}`);
1507
- */
1508
- return _fs["default"].statSync(path).mtimeMs;
1509
- }
1510
- }, {
1511
- key: "getJsonObjByFilePath",
1512
- value: function getJsonObjByFilePath(path) {
1513
- this.appendInfo("ready to json path:".concat(path));
1514
- return JSON.parse(this.getFileContextInRaw(path));
1515
- }
1516
-
1517
- /** increment version number, 回傳latest version, name */
1518
- }, {
1519
- key: "upgradePackageJsonVersion",
1520
- value: (function () {
1521
- var _upgradePackageJsonVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee19(path) {
1522
- var json;
1523
- return _regenerator["default"].wrap(function _callee19$(_context20) {
1524
- while (1) switch (_context20.prev = _context20.next) {
1525
- case 0:
1526
- if (!_lodash["default"].isEqual("json", this.getPathInfo(path).extension)) {
1527
- _context20.next = 8;
1528
- break;
1529
- }
1530
- json = this.getJsonObjByFilePath(path);
1531
- json.version = this.getStringOfVersionIncrement(json.version);
1532
- _context20.next = 5;
1533
- return this.writeJsonThanPrettier(path, json);
1534
- case 5:
1535
- return _context20.abrupt("return", {
1536
- version: json.version,
1537
- moduleName: json.name
1538
- });
1539
- case 8:
1540
- throw new _index2["default"](8020, "path is not package.json, which is ".concat(path));
1541
- case 9:
1542
- case "end":
1543
- return _context20.stop();
1544
- }
1545
- }, _callee19, this);
1546
- }));
1547
- function upgradePackageJsonVersion(_x22) {
1548
- return _upgradePackageJsonVersion.apply(this, arguments);
1549
- }
1550
- return upgradePackageJsonVersion;
1551
- }()
1552
- /** rewrite file of *.json with attributes => {version:'1.0.1'}, {name:'david'}
1553
- *
1554
- * console.log(await utiller.reWriteJsonAttribute(`./test.package.json`,{name:'ugly'},{version:'2.6.101'}));
1555
- * */
1556
- )
1557
- }, {
1558
- key: "reWriteJsonAttribute",
1559
- value: (function () {
1560
- var _reWriteJsonAttribute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee20(filePath) {
1561
- var _this$getPathInfo,
1562
- extension,
1563
- _len9,
1564
- attrs,
1565
- _key9,
1566
- invalidAttr,
1567
- json,
1568
- _i2,
1569
- _attrs,
1570
- attr,
1571
- _args21 = arguments;
1572
- return _regenerator["default"].wrap(function _callee20$(_context21) {
1573
- while (1) switch (_context21.prev = _context21.next) {
1574
- case 0:
1575
- _this$getPathInfo = this.getPathInfo(filePath), extension = _this$getPathInfo.extension;
1576
- if (!(extension !== "json")) {
1577
- _context21.next = 3;
1578
- break;
1579
- }
1580
- throw new _index2["default"](9999, "reWriteJsonAttribute() => path is not package.json, which is ".concat(filePath));
1581
- case 3:
1582
- for (_len9 = _args21.length, attrs = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {
1583
- attrs[_key9 - 1] = _args21[_key9];
1584
- }
1585
- // 驗證所有 attr 必須是 object
1586
- invalidAttr = attrs.find(function (attr) {
1587
- return (0, _typeof2["default"])(attr) !== "object" || attr === null;
1588
- });
1589
- if (!invalidAttr) {
1590
- _context21.next = 7;
1591
- break;
1592
- }
1593
- throw new _index2["default"](9999, "84451515 attr is not object, which is 'type=".concat((0, _typeof2["default"])(invalidAttr), " => ").concat(invalidAttr, "'"));
1594
- case 7:
1595
- json = this.getJsonObjByFilePath(filePath);
1596
- for (_i2 = 0, _attrs = attrs; _i2 < _attrs.length; _i2++) {
1597
- attr = _attrs[_i2];
1598
- json[this.getObjectKey(attr)] = this.getObjectValue(attr);
1599
- }
1600
- _context21.next = 11;
1601
- return this.writeJsonThanPrettier(filePath, json);
1602
- case 11:
1603
- return _context21.abrupt("return", {
1604
- version: json.version,
1605
- moduleName: json.name
1606
- });
1607
- case 12:
1608
- case "end":
1609
- return _context21.stop();
1610
- }
1611
- }, _callee20, this);
1612
- }));
1613
- function reWriteJsonAttribute(_x23) {
1614
- return _reWriteJsonAttribute.apply(this, arguments);
1615
- }
1616
- return reWriteJsonAttribute;
1617
- }())
1618
- }, {
1619
- key: "getVersionOfPackageJson",
1620
- value: function getVersionOfPackageJson(path) {
1621
- return this.getAttributeValueOfJson(path, "version", "1.0.0");
1622
- }
1623
-
1624
- /** 取得*.json 裡面的file*/
1625
- }, {
1626
- key: "getAttributeValueOfJson",
1627
- value: function getAttributeValueOfJson(path, key) {
1628
- var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
1629
- if (_lodash["default"].isEqual("json", this.getPathInfo(path).extension)) {
1630
- var _json$key;
1631
- var json = this.getJsonObjByFilePath(path);
1632
- return (_json$key = json[key]) !== null && _json$key !== void 0 ? _json$key : defaultValue;
1633
- } else {
1634
- throw new _index2["default"](8020, "path is not package.json, which is ".concat(path));
1635
- }
1636
- }
1637
-
1638
- /** 找到 js file 裡面宣告version的value ==> version:'1.0.60'} */
1639
- }, {
1640
- key: "getVersionOfJsFile",
1641
- value: function getVersionOfJsFile(path) {
1642
- return this.getAttributeValueOfJsFile(path, "version", "project without version notice");
1643
- }
1644
-
1645
- /** 找到 js file 裡面宣告attribute的 value ==> 例:version:'1.0.60'} */
1646
- }, {
1647
- key: "getAttributeValueOfJsFile",
1648
- value: function getAttributeValueOfJsFile(path, key) {
1649
- var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
1650
- if (_lodash["default"].isEqual(this.getExtensionFromPath(path), "js")) {
1651
- var _source$key;
1652
- var source = require(_path4["default"].resolve(path))["default"];
1653
- return (_source$key = source[key]) !== null && _source$key !== void 0 ? _source$key : defaultValue;
1654
- } else {
1655
- throw new _index2["default"](8020, "path is not js file, which is ".concat(path));
1656
- }
1657
- }
1658
-
1659
- /** 更新js file裏面attribute
1660
- * attr => {verison:1.0.32}
1661
- * console.log(await utiller.rewriteAttributeOfSourceJs(`./test.source.js`, {name: 'ugly-tu'}, {version: '3.9.123'}));
1662
- * */
1663
- }, {
1664
- key: "rewriteAttributeOfSourceJs",
1665
- value: (function () {
1666
- var _rewriteAttributeOfSourceJs = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee21(path) {
1667
- var _this8 = this;
1668
- var _len10,
1669
- attrs,
1670
- _key10,
1671
- _loop2,
1672
- _i3,
1673
- _attrs2,
1674
- _args23 = arguments;
1675
- return _regenerator["default"].wrap(function _callee21$(_context23) {
1676
- while (1) switch (_context23.prev = _context23.next) {
1677
- case 0:
1678
- if (this.isPathExist(path)) {
1679
- _context23.next = 2;
1680
- break;
1681
- }
1682
- throw new _index2["default"](9999, "4849813 ".concat(path, " is not exist"));
1683
- case 2:
1684
- for (_len10 = _args23.length, attrs = new Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {
1685
- attrs[_key10 - 1] = _args23[_key10];
1686
- }
1687
- _loop2 = /*#__PURE__*/_regenerator["default"].mark(function _loop2() {
1688
- var attr, key, value, contents, index;
1689
- return _regenerator["default"].wrap(function _loop2$(_context22) {
1690
- while (1) switch (_context22.prev = _context22.next) {
1691
- case 0:
1692
- attr = _attrs2[_i3];
1693
- if (_lodash["default"].isObject(attr)) {
1694
- _context22.next = 3;
1695
- break;
1696
- }
1697
- throw new _index2["default"](9999, "4984651 attr is not object, which is 'type=".concat((0, _typeof2["default"])(attr), " => ").concat(attr, "'"));
1698
- case 3:
1699
- key = _this8.getObjectKey(attr);
1700
- value = _this8.getObjectValue(attr);
1701
- contents = _this8.getFileContextInRaw(path).split("\n");
1702
- index = _lodash["default"].findIndex(contents, function (each) {
1703
- return _lodash["default"].startsWith(_lodash["default"].trim(each), "".concat(key));
1704
- });
1705
- /** 故意空4格 */
1706
- contents[index] = " ".concat(key, ": '").concat(value, "',");
1707
- _this8.appendFile(path, contents.join("\n"), true, true);
1708
- case 9:
1709
- case "end":
1710
- return _context22.stop();
1711
- }
1712
- }, _loop2);
1713
- });
1714
- _i3 = 0, _attrs2 = attrs;
1715
- case 5:
1716
- if (!(_i3 < _attrs2.length)) {
1717
- _context23.next = 10;
1718
- break;
1719
- }
1720
- return _context23.delegateYield(_loop2(), "t0", 7);
1721
- case 7:
1722
- _i3++;
1723
- _context23.next = 5;
1724
- break;
1725
- case 10:
1726
- return _context23.abrupt("return", attrs);
1727
- case 11:
1728
- case "end":
1729
- return _context23.stop();
1730
- }
1731
- }, _callee21, this);
1732
- }));
1733
- function rewriteAttributeOfSourceJs(_x24) {
1734
- return _rewriteAttributeOfSourceJs.apply(this, arguments);
1735
- }
1736
- return rewriteAttributeOfSourceJs;
1737
- }())
1738
- }, {
1739
- key: "getAnswerFromPromptQ",
1740
- value: function () {
1741
- var _getAnswerFromPromptQ = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee22() {
1742
- var configs,
1743
- _args24 = arguments;
1744
- return _regenerator["default"].wrap(function _callee22$(_context24) {
1745
- while (1) switch (_context24.prev = _context24.next) {
1746
- case 0:
1747
- configs = _args24.length > 0 && _args24[0] !== undefined ? _args24[0] : [{
1748
- name: "name",
1749
- require: true,
1750
- description: "type the name"
1751
- }];
1752
- _prompt["default"].start();
1753
- _context24.next = 4;
1754
- return _prompt["default"].get(configs);
1755
- case 4:
1756
- return _context24.abrupt("return", _context24.sent);
1757
- case 5:
1758
- case "end":
1759
- return _context24.stop();
1760
- }
1761
- }, _callee22);
1762
- }));
1763
- function getAnswerFromPromptQ() {
1764
- return _getAnswerFromPromptQ.apply(this, arguments);
1765
- }
1766
- return getAnswerFromPromptQ;
1767
- }()
1768
- /**
1769
- * [{
1770
- * name: 'name',
1771
- * require: true,
1772
- * description: 'type the name',
1773
- * },{
1774
- * name: 'age',
1775
- * require: true,
1776
- * description: 'type the age',
1777
- * }]
1778
- *
1779
- * result:{ name: 'david', age: '18' }
1780
- * */
1781
- }, {
1782
- key: "getObjectFromPromptQ",
1783
- value: (function () {
1784
- var _getObjectFromPromptQ = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee23() {
1785
- var _len11,
1786
- configs,
1787
- _key11,
1788
- _args25 = arguments;
1789
- return _regenerator["default"].wrap(function _callee23$(_context25) {
1790
- while (1) switch (_context25.prev = _context25.next) {
1791
- case 0:
1792
- _prompt["default"].start();
1793
- for (_len11 = _args25.length, configs = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
1794
- configs[_key11] = _args25[_key11];
1795
- }
1796
- _context25.next = 4;
1797
- return _prompt["default"].get(configs);
1798
- case 4:
1799
- return _context25.abrupt("return", _context25.sent);
1800
- case 5:
1801
- case "end":
1802
- return _context25.stop();
1803
- }
1804
- }, _callee23);
1805
- }));
1806
- function getObjectFromPromptQ() {
1807
- return _getObjectFromPromptQ.apply(this, arguments);
1808
- }
1809
- return getObjectFromPromptQ;
1810
- }()
1811
- /** 產出一個/temp,然後把/src 複製過去, 再把裡面每一個file的 if(DEBUG)給去除掉,再加上prettier */
1812
- /** 找出if (configerer) 當作start */
1813
- /** 找出 } 當作 end */
1814
- /** 刪除掉 if(configerer.DEBUG) {...........} */
1815
- )
1816
- }, {
1817
- key: "generateTempFolderWithCleanSrc",
1818
- value: (function () {
1819
- var _generateTempFolderWithCleanSrc = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee24(basePath) {
1820
- var sourceFile, tempFolderPath, filePaths, _iterator9, _step9, tempFilePath, rawLines, trimmedLines, start, end, updatedContent;
1821
- return _regenerator["default"].wrap(function _callee24$(_context26) {
1822
- while (1) switch (_context26.prev = _context26.next) {
1823
- case 0:
1824
- this.appendInfo("generateTempFolderWithCleanSrc", basePath);
1825
- sourceFile = _path4["default"].join(basePath, "src");
1826
- tempFolderPath = _path4["default"].join(basePath, "temp");
1827
- if (_fs["default"].existsSync(sourceFile)) {
1828
- _context26.next = 5;
1829
- break;
1830
- }
1831
- return _context26.abrupt("return", tempFolderPath);
1832
- case 5:
1833
- this.appendInfo("generateTempFolderWithCleanSrc", "source", sourceFile);
1834
- this.persistByPath(tempFolderPath);
1835
- _context26.next = 9;
1836
- return this.copyFromFolderToDestFolder(sourceFile, tempFolderPath);
1837
- case 9:
1838
- filePaths = this.findFilePathBy(tempFolderPath);
1839
- _iterator9 = _createForOfIteratorHelper(filePaths);
1840
- _context26.prev = 11;
1841
- _iterator9.s();
1842
- case 13:
1843
- if ((_step9 = _iterator9.n()).done) {
1844
- _context26.next = 27;
1845
- break;
1846
- }
1847
- tempFilePath = _step9.value.absolute;
1848
- rawLines = this.getFileContextInRaw(tempFilePath).split("\n");
1849
- trimmedLines = rawLines.map(function (line) {
1850
- return line.trim();
1851
- });
1852
- start = trimmedLines.findIndex(function (line) {
1853
- return line.startsWith("if (configerer.DEBUG_MODE)");
1854
- });
1855
- end = trimmedLines.lastIndexOf("}");
1856
- if (!(start >= 0 && end > start)) {
1857
- _context26.next = 25;
1858
- break;
1859
- }
1860
- // 移除 DEBUG 區塊
1861
- rawLines.splice(start, end - start + 1);
1862
- updatedContent = rawLines.join("\n");
1863
- this.appendFile(tempFilePath, updatedContent, true, true);
1864
-
1865
- // 美化代碼
1866
- _context26.next = 25;
1867
- return this.executeCommandLine("cd ".concat(_path4["default"].dirname(tempFilePath), " && npx prettier --write \"").concat(tempFilePath, "\""));
1868
- case 25:
1869
- _context26.next = 13;
1870
- break;
1871
- case 27:
1872
- _context26.next = 32;
1873
- break;
1874
- case 29:
1875
- _context26.prev = 29;
1876
- _context26.t0 = _context26["catch"](11);
1877
- _iterator9.e(_context26.t0);
1878
- case 32:
1879
- _context26.prev = 32;
1880
- _iterator9.f();
1881
- return _context26.finish(32);
1882
- case 35:
1883
- return _context26.abrupt("return", tempFolderPath);
1884
- case 36:
1885
- case "end":
1886
- return _context26.stop();
1887
- }
1888
- }, _callee24, this, [[11, 29, 32, 35]]);
1889
- }));
1890
- function generateTempFolderWithCleanSrc(_x25) {
1891
- return _generateTempFolderWithCleanSrc.apply(this, arguments);
1892
- }
1893
- return generateTempFolderWithCleanSrc;
1894
- }()
1895
- /**
1896
- * from, destination
1897
- *
1898
- * 讓file content清除後,在寫入資料, 避免to(destination) file address改變*/
1899
- )
1900
- }, {
1901
- key: "rewriteFile2File",
1902
- value: function rewriteFile2File(from, to) {
1903
- var content = this.getFileContextInRaw(from);
1904
- if (!content.trim()) throw new _index2["default"](9999, "".concat(from, " \u70BA\u7A7A\uFF0C\u907F\u514D\u8986\u84CB"));
1905
- this.appendFile(to, content, true, true);
1906
- this.appendInfo("rewrite from:".concat(from, " => to:").concat(to, " \u6210\u529F"));
1907
- }
1908
-
1909
- /** 取得file第一行statement */
1910
- }, {
1911
- key: "getStringOfHeadOfFile",
1912
- value: function getStringOfHeadOfFile(path) {
1913
- if (this.isPathExist(path)) {
1914
- var context = this.getFileContextInRaw(path);
1915
- return _lodash["default"].head(context.split("\n"));
1916
- }
1917
- return "";
1918
- }
1919
-
1920
- /** 因為code gen有很多要js file要執行 persistent, 沒有修改過{const edit = true}的index persist就不要理它 */
1921
- }, {
1922
- key: "isFileEditSucceed",
1923
- value: function isFileEditSucceed(filePath) {
1924
- if (!this.isPathExist(filePath)) return false;
1925
- var file = this.getPathInfo(filePath);
1926
- var context = this.getFileContextInRaw(filePath).trim();
1927
- if (context === "") {
1928
- this.appendInfo("74985465 path ".concat(file.path, " is empty file, file would not persist"));
1929
- return false;
1930
- }
1931
- try {
1932
- var firstLine = context.split("\n")[0];
1933
-
1934
- /**
1935
- * const\s+:匹配 const 與其後至少一個空白。
1936
- * ([a-zA-Z_]\w*):匹配合法變數名稱(第一個字為英文字母或底線,其後可為英文字母、數字、底線)。
1937
- * \s*=\s*:匹配等號兩邊的空白。
1938
- * (true|false):匹配布林值。
1939
- * \s*;?:匹配可有可無的分號及其前空白。
1940
- */
1941
- var match = firstLine.match(/const\s+([a-zA-Z_]\w*)\s*=\s*(true|false)\s*;?/);
1942
- if (!match || _lodash["default"].size(match) < 3) return false; /** ['const bear = true','bear','true',index: 0,input: 'const bear = true', groups:undefined] */
1943
- var editValue = match[2] === "true";
1944
- if (editValue === true) {
1945
- return true;
1946
- }
1947
- } catch (error) {
1948
- this.appendError("66445411 ".concat(error.message));
1949
- return false;
1950
- }
1951
- return false;
1952
- }
1953
- }, {
1954
- key: "joinRespectingDot",
1955
- value:
1956
- /**
1957
- * console.log(joinRespectingDot('./temp', 'scs', 'qqq', 'as.js'));
1958
- * // ./temp/scs/qqq/as.js
1959
- *
1960
- * console.log(joinRespectingDot('temp', 'scs', 'qqq', 'as.js'));
1961
- * // temp/scs/qqq/as.js
1962
- *
1963
- * console.log(joinRespectingDot('/usr', 'local', 'bin'));
1964
- * // /usr/local/bin
1965
- *
1966
- * 讓./組合的path 不要因為join被拿掉 產生在本機根目錄 /src 的權限問題
1967
- */
1968
- function joinRespectingDot() {
1969
- var _args$, _args$2;
1970
- for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
1971
- args[_key12] = arguments[_key12];
1972
- }
1973
- var shouldHaveDotSlash = (_args$ = args[0]) === null || _args$ === void 0 ? void 0 : _args$.startsWith("./");
1974
- var cleanArgs = (_args$2 = args[0]) !== null && _args$2 !== void 0 && _args$2.startsWith("./") ? [args[0].slice(2)].concat((0, _toConsumableArray2["default"])(args.slice(1))) : args;
1975
- var joined = _path4["default"].join.apply(_path4["default"], (0, _toConsumableArray2["default"])(cleanArgs));
1976
- return shouldHaveDotSlash && !_path4["default"].isAbsolute(joined) ? "./".concat(joined) : joined;
1977
- }
1978
- }]);
1979
- }(_index["default"]);
1980
- var _default = exports["default"] = NodeUtiller;
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof3=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _path4=_interopRequireDefault(require("path"));var _fs=_interopRequireDefault(require("fs"));var _promises=_interopRequireDefault(require("fs/promises"));var _lodash=_interopRequireDefault(require("lodash"));var _child_process=_interopRequireDefault(require("child_process"));var _configerer=require("configerer");var _index=_interopRequireDefault(require("./index"));var _index2=_interopRequireDefault(require("../exceptioner/index"));var _pdfParse=_interopRequireDefault(require("pdf-parse"));var _del=_interopRequireWildcard(require("del"));var _fsExtra=_interopRequireDefault(require("fs-extra"));var _prompt=_interopRequireDefault(require("prompt"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof3(e)&&"function"!=typeof e)return{"default":e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n["default"]=e,t&&t.set(e,n),n}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _callSuper(t,o,e){return o=(0,_getPrototypeOf2["default"])(o),(0,_possibleConstructorReturn2["default"])(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2["default"])(t).constructor):o.apply(t,e))}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}var NodeUtiller=function(_Utiller){function NodeUtiller(){var _this;(0,_classCallCheck2["default"])(this,NodeUtiller);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,NodeUtiller,[].concat(args));(0,_defineProperty2["default"])(_this,"isPersistIntoLogFile",true);(0,_defineProperty2["default"])(_this,"findFilePathByExtension",function(rootpath){var _this2;var _extension=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var reg=new RegExp("^[^.].+.(".concat(_lodash["default"].join(_extension,"|"),")$"));for(var _len2=arguments.length,exclude=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++){exclude[_key2-2]=arguments[_key2]}return(_this2=_this).findFilePathBy.apply(_this2,[rootpath,function(item){return reg.test(item.fileNameExtension)}].concat(exclude))});(0,_defineProperty2["default"])(_this,"executeCommandLine",function(){var _ref=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(command){var self;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:self=_this;_this.appendInfo("\u57F7\u884C\u8173\u672C ".concat(command));return _context.abrupt("return",new Promise(function(resolve,reject){_child_process["default"].exec(command,function(error,stdout,stderr){self.appendInfo("".concat(stdout));self.appendInfo("".concat(stderr));if(error){self.appendError("\u57F7\u884C\u932F\u8AA4: ".concat(error));reject(error);return}resolve(stdout.trim())})}));case 3:case"end":return _context.stop()}},_callee)}));return function(_x){return _ref.apply(this,arguments)}}());(0,_defineProperty2["default"])(_this,"getPathAfterSpecificFolder",function(fullPath){var folder=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"src";var parts=fullPath.split(_path4["default"].sep);for(var i=parts.length-1;i>=0;i--){if(parts[i]===folder){return"/"+parts.slice(i+1).join("/")}}return""});(0,_defineProperty2["default"])(_this,"getPathAfterSrc",function(fullPath){return _this.getPathAfterSpecificFolder(fullPath)});return _this}(0,_inherits2["default"])(NodeUtiller,_Utiller);return(0,_createClass2["default"])(NodeUtiller,[{key:"findSpecificFolderByPath",value:function findSpecificFolderByPath(path,folderName){var absolute=_path4["default"].resolve(path);var parts=absolute.split(_path4["default"].sep);while(parts.length){var joined=_path4["default"].join.apply(_path4["default"],(0,_toConsumableArray2["default"])(parts).concat([folderName]));if(_fs["default"].existsSync(joined))return joined;parts.pop()}return null}},{key:"getPDFText",value:(function(){var _getPDFText=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(path){var dataBuffer;return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:dataBuffer=_fs["default"].readFileSync(path);return _context2.abrupt("return",(0,_pdfParse["default"])(dataBuffer).then(function(data){return data}));case 2:case"end":return _context2.stop()}},_callee2)}));function getPDFText(_x2){return _getPDFText.apply(this,arguments)}return getPDFText}())},{key:"printf",value:function printf(){this.appendInfo("i can use in node.js only yo yo")}},{key:"findFilePathBy",value:function findFilePathBy(path){var predicate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){return true};if(!_fs["default"].existsSync(path))return[];var result=[];var entries=_fs["default"].readdirSync(path,{withFileTypes:true});for(var _len3=arguments.length,excludes=new Array(_len3>2?_len3-2:0),_key3=2;_key3<_len3;_key3++){excludes[_key3-2]=arguments[_key3]}var _iterator=_createForOfIteratorHelper(entries),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var entry=_step.value;if(excludes.includes(entry.name))continue;var fullPath=_path4["default"].join(path,entry.name);if(entry.isDirectory()){result.push.apply(result,(0,_toConsumableArray2["default"])(this.findFilePathBy.apply(this,[fullPath,predicate].concat(excludes))))}else if(entry.isFile()){var info=this.getPathInfo(fullPath);if(predicate(info))result.push(info)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}return result}},{key:"isPathExist",value:function isPathExist(path){return _fs["default"].existsSync(path)}},{key:"renameFile",value:function renameFile(path){var newName=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"fileName";if(!this.isFile(path)||!newName){this.appendError("renameFile \u932F\u8AA4, path: ".concat(path,", newName: ").concat(newName));return}var dir=_path4["default"].dirname(path);var ext=_path4["default"].extname(path);var newPath=_path4["default"].join(dir,"".concat(newName).concat(ext));_fs["default"].renameSync(path,newPath)}},{key:"getPathInfo",value:function getPathInfo(path){var absolute=_path4["default"].resolve(path);var obj={path:path,absolute:absolute,isFile:false,isDirectory:true,dirName:undefined,folderName:undefined,dirPath:undefined,folderPath:undefined,extension:undefined,fileName:undefined,fileNameExtension:undefined,lastModifiedTime:undefined,name:undefined};if(this.isFile(absolute)){obj["extension"]=absolute.split(".").pop();var fileNameStrings=absolute.split("/").pop().split(".");fileNameStrings.pop();obj["fileName"]=fileNameStrings.join(".");obj["name"]=fileNameStrings.join(".");obj["dirName"]=_lodash["default"].nth(absolute.split("/"),-2);obj["folderName"]=_lodash["default"].nth(absolute.split("/"),-2);obj["isFile"]=true;obj["dirPath"]=this.getFolderPathOfSpecificPath(absolute);obj["folderPath"]=this.getFolderPathOfSpecificPath(absolute);obj["isDirectory"]=false;obj["fileNameExtension"]="".concat(obj.fileName,".").concat(obj.extension);obj["lastModifiedTime"]=this.getFileLastModifiedTime(absolute)}if(this.isDirectory(absolute)){obj["dirName"]=absolute.split("/").pop()}return obj}},{key:"syncExecuteCommandLine",value:function syncExecuteCommandLine(command){var self=this;this.appendInfo("\u57F7\u884C\u8173\u672C ".concat(command));_child_process["default"].exec("".concat(command),function(error,stdout,stderr){self.appendInfo("".concat(stdout));self.appendInfo("".concat(stderr));if(error!==null){self.appendError("exec error: ".concat(error))}})}},{key:"persistByPath",value:function persistByPath(targetPath){var isAbsolute=_path4["default"].isAbsolute(targetPath);var parts=targetPath.split("/").filter(Boolean);var lastPart=parts[parts.length-1];var isFile=_path4["default"].extname(lastPart)!=="";var current=isAbsolute?_path4["default"].sep:"";for(var i=0;i<parts.length;i++){current=_path4["default"].join(current,parts[i]);if(!_fs["default"].existsSync(current)){if(i===parts.length-1&&isFile){_fs["default"].writeFileSync(current,"")}else{_fs["default"].mkdirSync(current,{recursive:false})}}}return _path4["default"].resolve(targetPath)}},{key:"copyFromFolderToDestFolder",value:(function(){var _copyFromFolderToDestFolder=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(from,dest){var override,preserveTimestamps,filter,_args3=arguments;return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:override=_args3.length>2&&_args3[2]!==undefined?_args3[2]:true;preserveTimestamps=_args3.length>3&&_args3[3]!==undefined?_args3[3]:false;filter=_args3.length>4&&_args3[4]!==undefined?_args3[4]:function(){return true};if(!(!_fs["default"].existsSync(from)||!_fs["default"].existsSync(from))){_context3.next=5;break}throw new _index2["default"](8009,"".concat(from," or ").concat(dest," is not exist!"));case 5:this.appendInfo("\u6B63\u5728\u8907\u88FDing ".concat(from,"/* => ").concat(dest,"/* succeed"));_fsExtra["default"].copySync(from,dest,{preserveTimestamps:preserveTimestamps,override:override,filter:filter});this.appendInfo("\u8907\u88FD\u6210\u529F ".concat(from,"/* => ").concat(dest,"/* succeed"));case 8:case"end":return _context3.stop()}},_callee3,this)}));function copyFromFolderToDestFolder(_x3,_x4){return _copyFromFolderToDestFolder.apply(this,arguments)}return copyFromFolderToDestFolder}())},{key:"cleanAllFiles",value:function cleanAllFiles(dir){if(this.isDirectory(dir)){this.appendInfo("\u6E96\u5099\u6E05\u9664\u5E95\u4E0B\u7684\u6240\u6709 ".concat(dir));_fsExtra["default"].emptyDirSync(dir);this.appendInfo("\u6210\u529F\u6E05\u9664\u5E95\u4E0B\u7684\u6240\u6709 ".concat(dir))}}},{key:"deleteSelfByPath",value:(function(){var _deleteSelfByPath=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(path,force){return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:if(!_fs["default"].existsSync(path)){_context4.next=5;break}this.appendInfo("\u6E96\u5099\u522A\u6389 ".concat(path,",{force:").concat(force,"}"));_context4.next=4;return(0,_del["default"])(path,{force:force});case 4:this.appendInfo("\u6210\u529F\u522A\u6389\u4E86 ".concat(path));case 5:case"end":return _context4.stop()}},_callee4,this)}));function deleteSelfByPath(_x5,_x6){return _deleteSelfByPath.apply(this,arguments)}return deleteSelfByPath}())},{key:"deleteFileOrFolder",value:function(){var _deleteFileOrFolder=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(path){return _regenerator["default"].wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:this.appendInfo("\u522A\u6389\u4E86 ".concat(path));_context5.next=3;return(0,_del["default"])(path);case 3:case"end":return _context5.stop()}},_callee5,this)}));function deleteFileOrFolder(_x7){return _deleteFileOrFolder.apply(this,arguments)}return deleteFileOrFolder}()},{key:"deleteChildByPath",value:(function(){var _deleteChildByPath=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(path){var force,pathes,_iterator2,_step2,_path2,_args6=arguments;return _regenerator["default"].wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:force=_args6.length>1&&_args6[1]!==undefined?_args6[1]:false;pathes=this.getChildPathByPath(path);_iterator2=_createForOfIteratorHelper(pathes);_context6.prev=3;_iterator2.s();case 5:if((_step2=_iterator2.n()).done){_context6.next=11;break}_path2=_step2.value;_context6.next=9;return this.deleteSelfByPath(_path2.absolute,force);case 9:_context6.next=5;break;case 11:_context6.next=16;break;case 13:_context6.prev=13;_context6.t0=_context6["catch"](3);_iterator2.e(_context6.t0);case 16:_context6.prev=16;_iterator2.f();return _context6.finish(16);case 19:case"end":return _context6.stop()}},_callee6,this,[[3,13,16,19]])}));function deleteChildByPath(_x8){return _deleteChildByPath.apply(this,arguments)}return deleteChildByPath}())},{key:"getFileCountsOfFolder",value:function getFileCountsOfFolder(path){if(this.isDirectory(path)){return _fs["default"].readdirSync(path).length}return-1}},{key:"reinstallNodeModules",value:function(){var _reinstallNodeModules=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(){var path,_len4,exclude,_key4,ex,paths,_iterator3,_step3,_json,path_module_root,path_gen_node_module,path_lock_json,_iterator4,_step4,_json2,_path_module_root,_path_gen_node_module,_args7=arguments;return _regenerator["default"].wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:path=_args7.length>0&&_args7[0]!==undefined?_args7[0]:"../";for(_len4=_args7.length,exclude=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){exclude[_key4-1]=_args7[_key4]}ex=[].concat(exclude,["node_modules","utiller","configerer"]);paths=this.findFilePathBy.apply(this,[path,function(each){return _lodash["default"].isEqual(each.fileNameExtension,"package.json")}].concat((0,_toConsumableArray2["default"])(ex)));_iterator3=_createForOfIteratorHelper(paths);_context7.prev=5;_iterator3.s();case 7:if((_step3=_iterator3.n()).done){_context7.next=20;break}_json=_step3.value;path_module_root=this.getFileDirPath(_json.absolute);path_gen_node_module="".concat(path_module_root,"node_modules");path_lock_json="".concat(path_module_root,"package-lock.json");_context7.next=14;return(0,_del["default"])(path_lock_json);case 14:this.appendInfo("\u522A\u6389\u4E86 ".concat(path_lock_json));_context7.next=17;return(0,_del["default"])(path_gen_node_module);case 17:this.appendInfo("\u522A\u6389\u4E86 ".concat(path_gen_node_module));case 18:_context7.next=7;break;case 20:_context7.next=25;break;case 22:_context7.prev=22;_context7.t0=_context7["catch"](5);_iterator3.e(_context7.t0);case 25:_context7.prev=25;_iterator3.f();return _context7.finish(25);case 28:_iterator4=_createForOfIteratorHelper(paths);_context7.prev=29;_iterator4.s();case 31:if((_step4=_iterator4.n()).done){_context7.next=40;break}_json2=_step4.value;_path_module_root=this.getFileDirPath(_json2.absolute);_path_gen_node_module="".concat(_path_module_root,"node_modules");if(_fs["default"].existsSync(_path_gen_node_module)){_context7.next=38;break}_context7.next=38;return this.executeCommandLine("cd ".concat(_path_module_root," && npm install"));case 38:_context7.next=31;break;case 40:_context7.next=45;break;case 42:_context7.prev=42;_context7.t1=_context7["catch"](29);_iterator4.e(_context7.t1);case 45:_context7.prev=45;_iterator4.f();return _context7.finish(45);case 48:case"end":return _context7.stop()}},_callee7,this,[[5,22,25,28],[29,42,45,48]])}));function reinstallNodeModules(){return _reinstallNodeModules.apply(this,arguments)}return reinstallNodeModules}()},{key:"getNamesOfFolderChild",value:function getNamesOfFolderChild(path){return this.getChildPathByPath(path).filter(function(p){return p.isDirectory}).map(function(p){return p.dirName})}},{key:"getChildPathByPath",value:function getChildPathByPath(_path){var _this3=this;try{var files=_fs["default"].readdirSync(_path);return files.map(function(file){return _this3.getPathInfo(_path4["default"].join(_path,file))})}catch(error){throw new _index2["default"](8002,error)}}},{key:"copySingleFile",value:function copySingleFile(from,dest,fileName){var force=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var destination=fileName&&fileName.trim()?_path4["default"].join(dest,fileName):dest;if(_fs["default"].existsSync(destination)&&!force){throw new _index2["default"](8006,destination)}_fs["default"].copyFileSync(from,destination)}},{key:"ensureFolderExists",value:function ensureFolderExists(folderPath){var resolved=_path4["default"].resolve(folderPath);if(_fs["default"].existsSync(resolved))return;_fs["default"].mkdirSync(resolved,{recursive:true})}},{key:"getNodeEnvVariable",value:function getNodeEnvVariable(key){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:undefined;var value=process.env[key];return value===undefined?defaultValue:value}},{key:"isDirectory",value:function isDirectory(path){if(!this.isPathExist(path))return false;return _fs["default"].lstatSync(path).isDirectory()}},{key:"isFile",value:function isFile(path){if(!this.isPathExist(path))return false;return _fs["default"].lstatSync(path).isFile()}},{key:"isImageFile",value:function isImageFile(file){return["svg","png","jpg","jpeg"].includes(file.extension)}},{key:"cleanChildFiles",value:(function(){var _cleanChildFiles=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(path){var _this4=this;var predicate,_len5,exclude,_key5,files,nonImages,_args8=arguments;return _regenerator["default"].wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:predicate=_args8.length>1&&_args8[1]!==undefined?_args8[1]:function(){return true};if(_fs["default"].existsSync(path)){_context8.next=3;break}return _context8.abrupt("return",false);case 3:for(_len5=_args8.length,exclude=new Array(_len5>2?_len5-2:0),_key5=2;_key5<_len5;_key5++){exclude[_key5-2]=_args8[_key5]}files=this.findFilePathBy.apply(this,[path,predicate].concat(exclude));nonImages=files.filter(function(file){return!_this4.isImageFile(file)});_context8.next=8;return Promise.allSettled(nonImages.map(function(file){_this4.cleanFileContent(file.absolute);_this4.appendInfo("\u6210\u529F cleanChildFiles() -> '".concat(file.path,"'"));return Promise.resolve()}));case 8:return _context8.abrupt("return",files);case 9:case"end":return _context8.stop()}},_callee8,this)}));function cleanChildFiles(_x9){return _cleanChildFiles.apply(this,arguments)}return cleanChildFiles}())},{key:"cleanFileContent",value:function cleanFileContent(path){this.syncDeleteFile(path)}},{key:"syncWithExistPackage",value:function(){var _syncWithExistPackage=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(){var path,paths,_iterator5,_step5,_path3,_args9=arguments;return _regenerator["default"].wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:path=_args9.length>0&&_args9[0]!==undefined?_args9[0]:"../";paths=this.findFilePathBy(path,function(each){return _lodash["default"].isEqual(each.fileNameExtension,"package.json")},"node_modules");_iterator5=_createForOfIteratorHelper(paths);try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){_path3=_step5.value;try{if(!_lodash["default"].isEqual(_path3.dirName,".."))this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT,"cd_".concat(_path3.dirName),"cd ".concat(this.getFolderPathOfSpecificPath(_path3.absolute)))}catch(error){this.appendInfo(error.message)}}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}case 4:case"end":return _context9.stop()}},_callee9,this)}));function syncWithExistPackage(){return _syncWithExistPackage.apply(this,arguments)}return syncWithExistPackage}()},{key:"packageTemplatify",value:function(){var _packageTemplatify=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10(path,packageName){var _this5=this;var existFolders,dirPath,packagejson,classBase,ideaWorkspacePath,workspace,splited,indexOfRunManager,indexOfList;return _regenerator["default"].wrap(function _callee10$(_context10){while(1)switch(_context10.prev=_context10.next){case 0:existFolders=this.getChildPathByPath(path).map(function(each){return each.absolute.split("/").pop()});if(!this.has(existFolders,packageName)){_context10.next=3;break}throw new _index2["default"](8004," packageName ===> '".concat(packageName,"'"));case 3:dirPath="".concat(path,"/").concat(packageName);_fs["default"].mkdirSync(dirPath);_fs["default"].copyFileSync("./template/sample.babel.config.js","".concat(dirPath,"/babel.config.js"));packagejson=this.getJsonObjByFilePath("./template/sample.package.json");packagejson["name"]=packageName;this.writeFileInJSON("".concat(dirPath,"/package.json"),packagejson);this.persistByPath("".concat(dirPath,"/src"));classBase=String.format(this.getFileContextInRaw("./template/sample.src.index.js"),packageName,"\u660E\u6085",new Date);_fs["default"].writeFileSync("".concat(dirPath,"/src/index.js"),classBase);ideaWorkspacePath="".concat(this.findSpecificFolderByPath(dirPath,".idea"),"/workspace.xml");this.insertShellCommand(_configerer.configerer.BASE_SHELL_SCRIPT,"cd_".concat(packageName),"cd ".concat(_path4["default"].resolve(dirPath)));if(_fs["default"].existsSync(ideaWorkspacePath)){workspace=this.getFileContextInRaw(ideaWorkspacePath);splited=workspace.split("\n");indexOfRunManager=_lodash["default"].findIndex(splited,function(line){return _this5.has(line,"name=\"RunManager")});this.insertToArray(splited,indexOfRunManager,"<configuration name=\"".concat(packageName,"\" \n type=\"NodeJSConfigurationType\" \n path-to-node=\"$USER_HOME$/.nvm/versions/node/v18.19.1/bin/node\" \n node-parameters=\"--require @babel/register\" \n path-to-js-file=\"").concat(_path4["default"].resolve(dirPath),"/src/index.js\" \n working-dir=\"").concat(_path4["default"].resolve(dirPath),"\" >")," <envs>"," <env name=\"self_debug\" value=\"true\" />"," <env name=\"is_node\" value=\"true\" />"," </envs>"," <method v=\"2\" />","</configuration>");indexOfList=_lodash["default"].findIndex(splited,function(line){return _lodash["default"].isEqual(_lodash["default"].trim(line),"<list>")},indexOfRunManager);this.insertToArray(splited,indexOfList," <item itemvalue=\"Node.js.".concat(packageName,"\" />"));_fs["default"].writeFileSync(ideaWorkspacePath,splited.join("\n"))}else{this.appendError("".concat(ideaWorkspacePath," not exist"))}_context10.next=17;return this.executeCommandLine("cd ".concat(_path4["default"].resolve(dirPath)," && npm install"));case 17:this.appendInfo("build ".concat(packageName," succeed!"));case 18:case"end":return _context10.stop()}},_callee10,this)}));function packageTemplatify(_x10,_x11){return _packageTemplatify.apply(this,arguments)}return packageTemplatify}()},{key:"appendInfo",value:function appendInfo(){for(var _len6=arguments.length,messages=new Array(_len6),_key6=0;_key6<_len6;_key6++){messages[_key6]=arguments[_key6]}return this.appendLog(_configerer.configerer.PATH_INFO_LOG,messages,false)}},{key:"appendError",value:function appendError(){for(var _len7=arguments.length,messages=new Array(_len7),_key7=0;_key7<_len7;_key7++){messages[_key7]=arguments[_key7]}return this.appendLog(_configerer.configerer.PATH_ERROR_LOG,messages,true)}},{key:"appendLog",value:function appendLog(path,messages){var isError=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var msg="".concat(this.getCurrentTimeFormat()," ").concat(isError?"ERROR":"LOG"," : ").concat(messages.map(this.stringifyLog).join(" ,"));if(!this.isProductionEnvironment()){var _console,_console2;isError?(_console=console).error.apply(_console,(0,_toConsumableArray2["default"])(messages)):(_console2=console).log.apply(_console2,(0,_toConsumableArray2["default"])(messages))}if(this.isPersistIntoLogFile){this.appendFile(path,msg)}}},{key:"stringifyLog",value:function stringifyLog(data){return(0,_typeof2["default"])(data)==="object"?JSON.stringify(data):String(data)}},{key:"appendFile",value:function appendFile(filePath,data){var newline=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var forceDelete=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;try{var resolvedPath=_path4["default"].resolve(filePath);if(forceDelete&&_fs["default"].existsSync(resolvedPath))_fs["default"].unlinkSync(resolvedPath);if(!_fs["default"].existsSync(resolvedPath))this.persistByPath(resolvedPath);var content="".concat(newline?"\n":"").concat(data);_fs["default"].appendFileSync(resolvedPath,content)}catch(err){throw new _index2["default"](8001,err)}}},{key:"disableLogMessagePersistent",value:function disableLogMessagePersistent(){this.isPersistIntoLogFile=false}},{key:"getLogString",value:function getLogString(datas){var _this6=this;return datas.map(function(data){return _this6.isJson(data)||_lodash["default"].isObject(data)||_lodash["default"].isArray(data)?_this6.deepFlat(data):data}).join(" ,")}},{key:"persistJsonFilePrettier",value:(function(){var _persistJsonFilePrettier=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(path,object){var ignoreP,_args11=arguments;return _regenerator["default"].wrap(function _callee11$(_context11){while(1)switch(_context11.prev=_context11.next){case 0:ignoreP=_args11.length>2&&_args11[2]!==undefined?_args11[2]:false;path=_path4["default"].resolve(path);this.appendFile(path,JSON.stringify(object),true,true);if(ignoreP){_context11.next=6;break}_context11.next=6;return this.prettier(path,120);case 6:case"end":return _context11.stop()}},_callee11,this)}));function persistJsonFilePrettier(_x12,_x13){return _persistJsonFilePrettier.apply(this,arguments)}return persistJsonFilePrettier}())},{key:"printCollectionToFile",value:function printCollectionToFile(collection){var fileName="./logs/__temp_".concat(this.getCurrentTimeFormat(),".txt");this.persistByPath("./logs/");this.appendFile(fileName,this.deepFlat(collection," \n\n, "));this.appendInfo("collectionToFile succeed, file name ==> ".concat(fileName))}},{key:"readFileContentByPath",value:(function(){var _readFileContentByPath=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee12(path){var _cache$path;var cache,_args12=arguments;return _regenerator["default"].wrap(function _callee12$(_context12){while(1)switch(_context12.prev=_context12.next){case 0:cache=_args12.length>1&&_args12[1]!==undefined?_args12[1]:{};if(!((_cache$path=cache[path])!==null&&_cache$path!==void 0)){_context12.next=5;break}_context12.t0=_cache$path;_context12.next=8;break;case 5:_context12.next=7;return _promises["default"].readFile(path,"utf-8");case 7:_context12.t0=cache[path]=_context12.sent;case 8:return _context12.abrupt("return",_context12.t0);case 9:case"end":return _context12.stop()}},_callee12)}));function readFileContentByPath(_x14){return _readFileContentByPath.apply(this,arguments)}return readFileContentByPath}())},{key:"singleFileTemplatify",value:function singleFileTemplatify(){var path=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"./";var all=this.findFilePathByExtension(path,["js"],"node_modules");var _iterator6=_createForOfIteratorHelper(all),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var file=_step6.value;var content=this.getFileContextInRaw(file.absolute).trim();if(_lodash["default"].isEmpty(content)){this.appendInfo(file.fileName,file.absolute);var className=_lodash["default"].isEqual(file.fileName,"index")?file.dirName:file.fileName;_fs["default"].writeFileSync(file.absolute,String.format(this.getFileContextInRaw(".\n /template/s\n ample.src.index.js"),className,"\u660E\u6085",new Date))}}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}}},{key:"isFileEmpty",value:function isFileEmpty(path){var content=this.getFileContextInRaw(path);return!content||!content.trim()}},{key:"copySingleFileConservative",value:function copySingleFileConservative(destPath,latestFile){var absolute=latestFile.absolute,lastModifiedTime=latestFile.lastModifiedTime;if(!this.isPathExist(absolute)||this.isFileEmpty(absolute)){this.appendInfo("".concat(absolute," is empty file, ignore copy behavior"));return}var destExists=_fs["default"].existsSync(destPath);if(destExists&&this.getFileLastModifiedTime(destPath)>lastModifiedTime){this.appendInfo("".concat(destPath," is the latest, ignore this run"));return}if(!destExists){this.appendInfo("".concat(destPath," does not exist, safe to copy."))}this.ensureFolderExists(_path4["default"].dirname(destPath));this.copySingleFile(absolute,destPath,undefined,true)}},{key:"syncDeleteFile",value:function syncDeleteFile(path){if(_fs["default"].existsSync(path))_fs["default"].unlinkSync(path)}},{key:"getFileContextInJSON",value:function getFileContextInJSON(path){try{if(_fs["default"].existsSync(path)){return JSON.parse(_fs["default"].readFileSync(path,"utf-8"))}}catch(error){throw new _index2["default"](9999,error.message)}return{}}},{key:"getFileContextInRaw",value:function getFileContextInRaw(path){if(!_fs["default"].existsSync(path))return"";return _fs["default"].readFileSync(path,"utf-8")}},{key:"writeFileInJSON",value:function writeFileInJSON(path,param){var data=JSON.stringify(param,null,2);_fs["default"].writeFileSync(path,data)}},{key:"generatePackage",value:(function(){var _generatePackage=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee13(){var _this7=this;var path,deployToNPMServer,forceInstallNodeModule,packagejsons,_len8,exclude,_key8,_iterator7,_step7,_loop,_args14=arguments;return _regenerator["default"].wrap(function _callee13$(_context14){while(1)switch(_context14.prev=_context14.next){case 0:path=_args14.length>0&&_args14[0]!==undefined?_args14[0]:"./";deployToNPMServer=_args14.length>1&&_args14[1]!==undefined?_args14[1]:false;forceInstallNodeModule=_args14.length>2&&_args14[2]!==undefined?_args14[2]:true;packagejsons=this.findFilePathByExtension(path,["json"],"node_modules","release");packagejsons=_lodash["default"].filter(packagejsons,function(each){return _lodash["default"].isEqual(each.fileName,"package")});packagejsons=packagejsons.map(function(each){return _this7.getFolderPathOfSpecificPath(each.absolute)});for(_len8=_args14.length,exclude=new Array(_len8>3?_len8-3:0),_key8=3;_key8<_len8;_key8++){exclude[_key8-3]=_args14[_key8]}_iterator7=_createForOfIteratorHelper(packagejsons);_context14.prev=8;_loop=_regenerator["default"].mark(function _loop(){var path,tempFolderPath,release,pathOfPackageJson,indexFileName,templatePath,_yield$_this7$upgrade,moduleName,version;return _regenerator["default"].wrap(function _loop$(_context13){while(1)switch(_context13.prev=_context13.next){case 0:path=_step7.value;if(!_this7.isAndEquals.apply(_this7,(0,_toConsumableArray2["default"])(exclude.map(function(projectName){return function(){return!_this7.has(path,projectName)}})))){_context13.next=46;break}_context13.next=4;return _this7.generateTempFolderWithCleanSrc(path);case 4:tempFolderPath=_context13.sent;release=_this7.persistByPath(_path4["default"].join(path,"release"));_context13.next=8;return _this7.executeCommandLine("cd ".concat(path," && babel ./temp --out-dir ./release/lib --config-file ./babel.config.js"));case 8:pathOfPackageJson=_path4["default"].join(path,"package.json");_context13.prev=9;indexFileName="sample.npm.module.index.js";_this7.copySingleFile("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/".concat(indexFileName),release,"index.js",true);templatePath=_path4["default"].join(path,"template");if(!_this7.isPathExist(templatePath)){_context13.next=16;break}_context13.next=16;return _this7.copyFromFolderToDestFolder(templatePath,_this7.persistByPath(_path4["default"].join(release,"template")));case 16:if(!deployToNPMServer){_context13.next=24;break}_context13.next=19;return _this7.upgradePackageJsonVersion(pathOfPackageJson);case 19:_yield$_this7$upgrade=_context13.sent;moduleName=_yield$_this7$upgrade.moduleName;version=_yield$_this7$upgrade.version;_context13.next=24;return _this7.updateVersionOfTemplate(moduleName,version);case 24:_this7.copySingleFile(pathOfPackageJson,_path4["default"].join(release,"package.json"),undefined,true);if(!(forceInstallNodeModule||!_this7.isPathExist(_path4["default"].join(release,"node_module")))){_context13.next=30;break}_context13.next=28;return _this7.executeCommandLine("cd ".concat(release," && yarn install --production"));case 28:_context13.next=31;break;case 30:_this7.appendInfo("ignore node-module install behavior");case 31:_this7.appendInfo("build ".concat(path," succeed"));if(!deployToNPMServer){_context13.next=35;break}_context13.next=35;return _this7.executeCommandLine("cd ".concat(release," && npm publish"));case 35:_context13.next=42;break;case 37:_context13.prev=37;_context13.t0=_context13["catch"](9);_context13.next=41;return _this7.deleteSelfByPath(release,true);case 41:throw new _index2["default"](9999,"generatePackage \u5831\u932F, ".concat(_context13.t0.message));case 42:_context13.prev=42;_context13.next=45;return _this7.deleteSelfByPath(tempFolderPath,true);case 45:return _context13.finish(42);case 46:case"end":return _context13.stop()}},_loop,null,[[9,37,42,46]])});_iterator7.s();case 11:if((_step7=_iterator7.n()).done){_context14.next=15;break}return _context14.delegateYield(_loop(),"t0",13);case 13:_context14.next=11;break;case 15:_context14.next=20;break;case 17:_context14.prev=17;_context14.t1=_context14["catch"](8);_iterator7.e(_context14.t1);case 20:_context14.prev=20;_iterator7.f();return _context14.finish(20);case 23:case"end":return _context14.stop()}},_callee13,this,[[8,17,20,23]])}));function generatePackage(){return _generatePackage.apply(this,arguments)}return generatePackage}())},{key:"updateVersionOfTemplate",value:(function(){var _updateVersionOfTemplate=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee14(dependency,newVersion){var paths,_i,_paths,path,succeedOfPersistFile,json;return _regenerator["default"].wrap(function _callee14$(_context15){while(1)switch(_context15.prev=_context15.next){case 0:paths=["/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/admin.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/web.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/template/functions.package.json.mustache","/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/sample.package.json","/Users/davidtu/cross-achieve/high/idea-inventer/free_marker/package.json"];_i=0,_paths=paths;case 2:if(!(_i<_paths.length)){_context15.next=24;break}path=_paths[_i];if(!this.isPathExist(path)){_context15.next=21;break}succeedOfPersistFile=false;json=this.getJsonObjByFilePath(path);if(!(json&&json.dependencies&&json.dependencies[dependency])){_context15.next=18;break}json.dependencies[dependency]="^".concat(newVersion);_context15.prev=9;_context15.next=12;return this.writeJsonThanPrettier(path,json);case 12:succeedOfPersistFile=true;_context15.next=18;break;case 15:_context15.prev=15;_context15.t0=_context15["catch"](9);succeedOfPersistFile=true;case 18:if(succeedOfPersistFile){_context15.next=21;break}_context15.next=21;return this.updateFileOfSpecificLine(path,function(line){return" \"".concat(dependency,"\":\"^").concat(newVersion,"\"").concat(_lodash["default"].endsWith(_lodash["default"].trim(line),",")?",":"")},function(each){return _lodash["default"].startsWith(_lodash["default"].trim(each),"\"".concat(dependency,"\""))});case 21:_i++;_context15.next=2;break;case 24:_context15.next=26;return this.copyFromFolderToDestFolder("/Users/davidtu/cross-achieve/high/idea-inventer/utiller/template/","/Users/davidtu/cross-achieve/high/idea-inventer/newp/template/",true,true);case 26:case"end":return _context15.stop()}},_callee14,this,[[9,15]])}));function updateVersionOfTemplate(_x15,_x16){return _updateVersionOfTemplate.apply(this,arguments)}return updateVersionOfTemplate}())},{key:"updateFileOfSpecificLine",value:(function(){var _updateFileOfSpecificLine=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee15(pathOfFile){var contentOfUpdated,predicate,context,lines,index,_args16=arguments;return _regenerator["default"].wrap(function _callee15$(_context16){while(1)switch(_context16.prev=_context16.next){case 0:contentOfUpdated=_args16.length>1&&_args16[1]!==undefined?_args16[1]:function(line){return"updated"};predicate=_args16.length>2&&_args16[2]!==undefined?_args16[2]:function(line){return true};context=this.getFileContextInRaw(pathOfFile);lines=context.split("\n");index=lines.findIndex(predicate);if(!(index===-1)){_context16.next=7;break}return _context16.abrupt("return");case 7:lines[index]=contentOfUpdated(lines[index]);this.appendFile(pathOfFile,lines.join("\n"),true,true);_context16.next=11;return this.prettier(pathOfFile);case 11:case"end":return _context16.stop()}},_callee15,this)}));function updateFileOfSpecificLine(_x17){return _updateFileOfSpecificLine.apply(this,arguments)}return updateFileOfSpecificLine}())},{key:"writeJsonThanPrettier",value:function(){var _writeJsonThanPrettier=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee16(path,json){return _regenerator["default"].wrap(function _callee16$(_context17){while(1)switch(_context17.prev=_context17.next){case 0:this.writeFileInJSON(path,json);_context17.next=3;return this.prettier(path);case 3:case"end":return _context17.stop()}},_callee16,this)}));function writeJsonThanPrettier(_x18,_x19){return _writeJsonThanPrettier.apply(this,arguments)}return writeJsonThanPrettier}()},{key:"enrichEachPackageJson",value:(function(){var _enrichEachPackageJson=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee17(rootPath){var validNames,jsonFiles,packageFiles,_iterator8,_step8,absolute,json;return _regenerator["default"].wrap(function _callee17$(_context18){while(1)switch(_context18.prev=_context18.next){case 0:validNames=new Set(["package","admin.package","web.package","functions.package"]);jsonFiles=this.findFilePathByExtension(rootPath,["json"],"gen","node_modules","release");packageFiles=jsonFiles.filter(function(file){return validNames.has(file.fileName)});if(!(packageFiles.length===0)){_context18.next=5;break}return _context18.abrupt("return");case 5:_iterator8=_createForOfIteratorHelper(packageFiles);_context18.prev=6;_iterator8.s();case 8:if((_step8=_iterator8.n()).done){_context18.next=17;break}absolute=_step8.value.absolute;json=this.getJsonObjByFilePath(absolute);json.scripts||(json.scripts={});json.scripts.updateConfigerer="npm update configerer --save";_context18.next=15;return this.writeJsonThanPrettier(absolute,json);case 15:_context18.next=8;break;case 17:_context18.next=22;break;case 19:_context18.prev=19;_context18.t0=_context18["catch"](6);_iterator8.e(_context18.t0);case 22:_context18.prev=22;_iterator8.f();return _context18.finish(22);case 25:case"end":return _context18.stop()}},_callee17,this,[[6,19,22,25]])}));function enrichEachPackageJson(_x20){return _enrichEachPackageJson.apply(this,arguments)}return enrichEachPackageJson}())},{key:"insertShellCommand",value:function insertShellCommand(){var shellPath=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_configerer.configerer.BASE_SHELL_SCRIPT;var alias=arguments.length>1?arguments[1]:undefined;var command=arguments.length>2?arguments[2]:undefined;if(this.isStringContainInLines(this.getFileContextInRaw(shellPath),alias)){throw new _index2["default"](8007,"alias ".concat(alias," is exist"))}else{var line="alias ".concat(alias,"='").concat(command,"'");this.appendFile(shellPath,line)}}},{key:"getAdminCredential",value:function getAdminCredential(){return this.getJsonObjByFilePath("/Users/davidtu/cross-achieve/mimi/idea-inventer/firebaser/key/mimi19up-firebase-adminsdk.json")}},{key:"isEmptyFile",value:function isEmptyFile(path){return!this.isPathExist(path)||_lodash["default"].isEmpty(this.getFileContextInRaw(path).trim())}},{key:"isEmptyFolder",value:function isEmptyFolder(path){return _fs["default"].readdirSync(path).length===0}},{key:"prettier",value:(function(){var _prettier=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee18(path){var width,_args19=arguments;return _regenerator["default"].wrap(function _callee18$(_context19){while(1)switch(_context19.prev=_context19.next){case 0:width=_args19.length>1&&_args19[1]!==undefined?_args19[1]:200;_context19.next=3;return this.executeCommandLine("cd ".concat(_path4["default"].resolve(".")," && npx prettier --write ").concat(_path4["default"].resolve(path)," --print-width ").concat(width));case 3:case"end":return _context19.stop()}},_callee18,this)}));function prettier(_x21){return _prettier.apply(this,arguments)}return prettier}())},{key:"getFileLastModifiedTime",value:function getFileLastModifiedTime(path){return _fs["default"].statSync(path).mtimeMs}},{key:"getJsonObjByFilePath",value:function getJsonObjByFilePath(path){this.appendInfo("ready to json path:".concat(path));return JSON.parse(this.getFileContextInRaw(path))}},{key:"upgradePackageJsonVersion",value:(function(){var _upgradePackageJsonVersion=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee19(path){var json;return _regenerator["default"].wrap(function _callee19$(_context20){while(1)switch(_context20.prev=_context20.next){case 0:if(!_lodash["default"].isEqual("json",this.getPathInfo(path).extension)){_context20.next=8;break}json=this.getJsonObjByFilePath(path);json.version=this.getStringOfVersionIncrement(json.version);_context20.next=5;return this.writeJsonThanPrettier(path,json);case 5:return _context20.abrupt("return",{version:json.version,moduleName:json.name});case 8:throw new _index2["default"](8020,"path is not package.json, which is ".concat(path));case 9:case"end":return _context20.stop()}},_callee19,this)}));function upgradePackageJsonVersion(_x22){return _upgradePackageJsonVersion.apply(this,arguments)}return upgradePackageJsonVersion}())},{key:"reWriteJsonAttribute",value:(function(){var _reWriteJsonAttribute=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee20(filePath){var _this$getPathInfo,extension,_len9,attrs,_key9,invalidAttr,json,_i2,_attrs,attr,_args21=arguments;return _regenerator["default"].wrap(function _callee20$(_context21){while(1)switch(_context21.prev=_context21.next){case 0:_this$getPathInfo=this.getPathInfo(filePath),extension=_this$getPathInfo.extension;if(!(extension!=="json")){_context21.next=3;break}throw new _index2["default"](9999,"reWriteJsonAttribute() => path is not package.json, which is ".concat(filePath));case 3:for(_len9=_args21.length,attrs=new Array(_len9>1?_len9-1:0),_key9=1;_key9<_len9;_key9++){attrs[_key9-1]=_args21[_key9]}invalidAttr=attrs.find(function(attr){return(0,_typeof2["default"])(attr)!=="object"||attr===null});if(!invalidAttr){_context21.next=7;break}throw new _index2["default"](9999,"84451515 attr is not object, which is 'type=".concat((0,_typeof2["default"])(invalidAttr)," => ").concat(invalidAttr,"'"));case 7:json=this.getJsonObjByFilePath(filePath);for(_i2=0,_attrs=attrs;_i2<_attrs.length;_i2++){attr=_attrs[_i2];json[this.getObjectKey(attr)]=this.getObjectValue(attr)}_context21.next=11;return this.writeJsonThanPrettier(filePath,json);case 11:return _context21.abrupt("return",{version:json.version,moduleName:json.name});case 12:case"end":return _context21.stop()}},_callee20,this)}));function reWriteJsonAttribute(_x23){return _reWriteJsonAttribute.apply(this,arguments)}return reWriteJsonAttribute}())},{key:"getVersionOfPackageJson",value:function getVersionOfPackageJson(path){return this.getAttributeValueOfJson(path,"version","1.0.0")}},{key:"getAttributeValueOfJson",value:function getAttributeValueOfJson(path,key){var defaultValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(_lodash["default"].isEqual("json",this.getPathInfo(path).extension)){var _json$key;var json=this.getJsonObjByFilePath(path);return(_json$key=json[key])!==null&&_json$key!==void 0?_json$key:defaultValue}else{throw new _index2["default"](8020,"path is not package.json, which is ".concat(path))}}},{key:"getVersionOfJsFile",value:function getVersionOfJsFile(path){return this.getAttributeValueOfJsFile(path,"version","project without version notice")}},{key:"getAttributeValueOfJsFile",value:function getAttributeValueOfJsFile(path,key){var defaultValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(_lodash["default"].isEqual(this.getExtensionFromPath(path),"js")){var _source$key;var source=require(_path4["default"].resolve(path))["default"];return(_source$key=source[key])!==null&&_source$key!==void 0?_source$key:defaultValue}else{throw new _index2["default"](8020,"path is not js file, which is ".concat(path))}}},{key:"rewriteAttributeOfSourceJs",value:(function(){var _rewriteAttributeOfSourceJs=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee21(path){var _this8=this;var _len10,attrs,_key10,_loop2,_i3,_attrs2,_args23=arguments;return _regenerator["default"].wrap(function _callee21$(_context23){while(1)switch(_context23.prev=_context23.next){case 0:if(this.isPathExist(path)){_context23.next=2;break}throw new _index2["default"](9999,"4849813 ".concat(path," is not exist"));case 2:for(_len10=_args23.length,attrs=new Array(_len10>1?_len10-1:0),_key10=1;_key10<_len10;_key10++){attrs[_key10-1]=_args23[_key10]}_loop2=_regenerator["default"].mark(function _loop2(){var attr,key,value,contents,index;return _regenerator["default"].wrap(function _loop2$(_context22){while(1)switch(_context22.prev=_context22.next){case 0:attr=_attrs2[_i3];if(_lodash["default"].isObject(attr)){_context22.next=3;break}throw new _index2["default"](9999,"4984651 attr is not object, which is 'type=".concat((0,_typeof2["default"])(attr)," => ").concat(attr,"'"));case 3:key=_this8.getObjectKey(attr);value=_this8.getObjectValue(attr);contents=_this8.getFileContextInRaw(path).split("\n");index=_lodash["default"].findIndex(contents,function(each){return _lodash["default"].startsWith(_lodash["default"].trim(each),"".concat(key))});contents[index]=" ".concat(key,": '").concat(value,"',");_this8.appendFile(path,contents.join("\n"),true,true);case 9:case"end":return _context22.stop()}},_loop2)});_i3=0,_attrs2=attrs;case 5:if(!(_i3<_attrs2.length)){_context23.next=10;break}return _context23.delegateYield(_loop2(),"t0",7);case 7:_i3++;_context23.next=5;break;case 10:return _context23.abrupt("return",attrs);case 11:case"end":return _context23.stop()}},_callee21,this)}));function rewriteAttributeOfSourceJs(_x24){return _rewriteAttributeOfSourceJs.apply(this,arguments)}return rewriteAttributeOfSourceJs}())},{key:"getAnswerFromPromptQ",value:function(){var _getAnswerFromPromptQ=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee22(){var configs,_args24=arguments;return _regenerator["default"].wrap(function _callee22$(_context24){while(1)switch(_context24.prev=_context24.next){case 0:configs=_args24.length>0&&_args24[0]!==undefined?_args24[0]:[{name:"name",require:true,description:"type the name"}];_prompt["default"].start();_context24.next=4;return _prompt["default"].get(configs);case 4:return _context24.abrupt("return",_context24.sent);case 5:case"end":return _context24.stop()}},_callee22)}));function getAnswerFromPromptQ(){return _getAnswerFromPromptQ.apply(this,arguments)}return getAnswerFromPromptQ}()},{key:"getObjectFromPromptQ",value:(function(){var _getObjectFromPromptQ=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee23(){var _len11,configs,_key11,_args25=arguments;return _regenerator["default"].wrap(function _callee23$(_context25){while(1)switch(_context25.prev=_context25.next){case 0:_prompt["default"].start();for(_len11=_args25.length,configs=new Array(_len11),_key11=0;_key11<_len11;_key11++){configs[_key11]=_args25[_key11]}_context25.next=4;return _prompt["default"].get(configs);case 4:return _context25.abrupt("return",_context25.sent);case 5:case"end":return _context25.stop()}},_callee23)}));function getObjectFromPromptQ(){return _getObjectFromPromptQ.apply(this,arguments)}return getObjectFromPromptQ}())},{key:"generateTempFolderWithCleanSrc",value:(function(){var _generateTempFolderWithCleanSrc=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee24(basePath){var sourceFile,tempFolderPath,filePaths,_iterator9,_step9,tempFilePath,rawLines,trimmedLines,start,end,updatedContent;return _regenerator["default"].wrap(function _callee24$(_context26){while(1)switch(_context26.prev=_context26.next){case 0:this.appendInfo("generateTempFolderWithCleanSrc",basePath);sourceFile=_path4["default"].join(basePath,"src");tempFolderPath=_path4["default"].join(basePath,"temp");if(_fs["default"].existsSync(sourceFile)){_context26.next=5;break}return _context26.abrupt("return",tempFolderPath);case 5:this.appendInfo("generateTempFolderWithCleanSrc","source",sourceFile);this.persistByPath(tempFolderPath);_context26.next=9;return this.copyFromFolderToDestFolder(sourceFile,tempFolderPath);case 9:filePaths=this.findFilePathBy(tempFolderPath);_iterator9=_createForOfIteratorHelper(filePaths);_context26.prev=11;_iterator9.s();case 13:if((_step9=_iterator9.n()).done){_context26.next=27;break}tempFilePath=_step9.value.absolute;rawLines=this.getFileContextInRaw(tempFilePath).split("\n");trimmedLines=rawLines.map(function(line){return line.trim()});start=trimmedLines.findIndex(function(line){return line.startsWith("if (configerer.DEBUG_MODE)")});end=trimmedLines.lastIndexOf("}");if(!(start>=0&&end>start)){_context26.next=25;break}rawLines.splice(start,end-start+1);updatedContent=rawLines.join("\n");this.appendFile(tempFilePath,updatedContent,true,true);_context26.next=25;return this.executeCommandLine("cd ".concat(_path4["default"].dirname(tempFilePath)," && npx prettier --write \"").concat(tempFilePath,"\""));case 25:_context26.next=13;break;case 27:_context26.next=32;break;case 29:_context26.prev=29;_context26.t0=_context26["catch"](11);_iterator9.e(_context26.t0);case 32:_context26.prev=32;_iterator9.f();return _context26.finish(32);case 35:return _context26.abrupt("return",tempFolderPath);case 36:case"end":return _context26.stop()}},_callee24,this,[[11,29,32,35]])}));function generateTempFolderWithCleanSrc(_x25){return _generateTempFolderWithCleanSrc.apply(this,arguments)}return generateTempFolderWithCleanSrc}())},{key:"rewriteFile2File",value:function rewriteFile2File(from,to){var content=this.getFileContextInRaw(from);if(!content.trim())throw new _index2["default"](9999,"".concat(from," \u70BA\u7A7A\uFF0C\u907F\u514D\u8986\u84CB"));this.appendFile(to,content,true,true);this.appendInfo("rewrite from:".concat(from," => to:").concat(to," \u6210\u529F"))}},{key:"getStringOfHeadOfFile",value:function getStringOfHeadOfFile(path){if(this.isPathExist(path)){var context=this.getFileContextInRaw(path);return _lodash["default"].head(context.split("\n"))}return""}},{key:"isFileEditSucceed",value:function isFileEditSucceed(filePath){if(!this.isPathExist(filePath))return false;var file=this.getPathInfo(filePath);var context=this.getFileContextInRaw(filePath).trim();if(context===""){this.appendInfo("74985465 path ".concat(file.path," is empty file, file would not persist"));return false}try{var firstLine=context.split("\n")[0];var match=firstLine.match(/const\s+([a-zA-Z_]\w*)\s*=\s*(true|false)\s*;?/);if(!match||_lodash["default"].size(match)<3)return false;var editValue=match[2]==="true";if(editValue===true){return true}}catch(error){this.appendError("66445411 ".concat(error.message));return false}return false}},{key:"joinRespectingDot",value:function joinRespectingDot(){var _args$,_args$2;for(var _len12=arguments.length,args=new Array(_len12),_key12=0;_key12<_len12;_key12++){args[_key12]=arguments[_key12]}var shouldHaveDotSlash=(_args$=args[0])===null||_args$===void 0?void 0:_args$.startsWith("./");var cleanArgs=(_args$2=args[0])!==null&&_args$2!==void 0&&_args$2.startsWith("./")?[args[0].slice(2)].concat((0,_toConsumableArray2["default"])(args.slice(1))):args;var joined=_path4["default"].join.apply(_path4["default"],(0,_toConsumableArray2["default"])(cleanArgs));return shouldHaveDotSlash&&!_path4["default"].isAbsolute(joined)?"./".concat(joined):joined}}])}(_index["default"]);var _default=exports["default"]=NodeUtiller;