utiller 1.0.277 → 1.0.279

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.
@@ -9,6 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -41,6 +42,33 @@ var Utiller = /*#__PURE__*/function () {
41
42
  var _this = this;
42
43
  (0, _classCallCheck2["default"])(this, Utiller);
43
44
  (0, _defineProperty2["default"])(this, "mapOfIdNTimeoutId", {});
45
+ /**
46
+ * 從物件中依條件過濾出符合條件的 key-value pair
47
+ * @param {Object} object - 原始物件
48
+ * @param {Function} predict - 過濾條件函式,預設為 each.used === true
49
+ * @returns {Object} - 符合條件的新物件
50
+ *
51
+ * const objects = {
52
+ * a: { used: true },
53
+ * b: { used: false },
54
+ * c: { used: true }
55
+ * };
56
+ *
57
+ * const usedObjects = getObjectBy(objects);
58
+ *
59
+ * console.log(usedObjects);
60
+ * // 👉 { a: { used: true }, c: { used: true } }
61
+ */
62
+ (0, _defineProperty2["default"])(this, "getObjectBy", function (object) {
63
+ var predict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (each) {
64
+ return each.used === true;
65
+ };
66
+ return Object.fromEntries(_lodash["default"].filter(_lodash["default"].entries(object), function (_ref) {
67
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
68
+ value = _ref2[1];
69
+ return predict(value);
70
+ }));
71
+ });
44
72
  (0, _defineProperty2["default"])(this, "getEnvironment", function () {
45
73
  return _this.env;
46
74
  });
@@ -231,7 +259,7 @@ var Utiller = /*#__PURE__*/function () {
231
259
  });
232
260
  */
233
261
  (0, _defineProperty2["default"])(this, "measureExecutionTime", /*#__PURE__*/function () {
234
- var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(fn) {
262
+ var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(fn) {
235
263
  var startTime,
236
264
  _len2,
237
265
  param,
@@ -273,7 +301,7 @@ var Utiller = /*#__PURE__*/function () {
273
301
  }, _callee3);
274
302
  }));
275
303
  return function (_x) {
276
- return _ref3.apply(this, arguments);
304
+ return _ref5.apply(this, arguments);
277
305
  };
278
306
  }());
279
307
  (0, _defineProperty2["default"])(this, "formatPriceWithCurrency", function (number, locale) {
@@ -303,6 +331,31 @@ var Utiller = /*#__PURE__*/function () {
303
331
  minimumFractionDigits: 0 // 確保不顯示小數
304
332
  }).format(number);
305
333
  });
334
+ /**
335
+ * 從絕對路徑中取出 "src/" 之後的部分(包含前置 /)
336
+ * @param {string} fullPath - 完整的絕對檔案路徑
337
+ * @returns {string} - 以 / 開頭、從 src/ 之後開始的相對路徑
338
+ */
339
+ (0, _defineProperty2["default"])(this, "getPathAfterSrc", function (fullPath) {
340
+ return _this.getPathAfterSpecificFolder(fullPath);
341
+ });
342
+ /**
343
+ * 從絕對路徑中取出 "src/" 之後的部分(包含前置 /)
344
+ * @param {string} fullPath - 完整的絕對檔案路徑
345
+ * @param {string} folder - 針對/folder/之後作為split起點
346
+ * @returns {string} - 以 / 開頭、從 src/ 之後開始的相對路徑
347
+ */
348
+ (0, _defineProperty2["default"])(this, "getPathAfterSpecificFolder", function (fullPath) {
349
+ var folder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "src";
350
+ var parts = _lodash["default"].split(fullPath, path.sep);
351
+ var indexOfSrc = _lodash["default"].findLastIndex(parts, function (part) {
352
+ return part === folder;
353
+ });
354
+ if (indexOfSrc === -1) return ""; // 找不到 src,回傳空字串
355
+
356
+ var relativeParts = _lodash["default"].slice(parts, indexOfSrc + 1);
357
+ return _lodash["default"].join(relativeParts, "/");
358
+ });
306
359
  this.init();
307
360
  this.env = "dev";
308
361
  }