utiller 1.0.333 → 1.0.334

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.
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports["default"] = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -3787,28 +3788,8 @@ var Utiller = /*#__PURE__*/function () {
3787
3788
  .value();
3788
3789
  }
3789
3790
  }, {
3790
- key: "generateGenericCombinations",
3791
+ key: "generateUidCombinations",
3791
3792
  value:
3792
- /**
3793
- * const array1 = ['黑色', '綠色', '金色']
3794
- * const array2 = ['S', 'M', 'L']
3795
- * const array3 = ['短袖', '長袖']
3796
- * const result = generateGenericCombinations([array1, array2, array3])
3797
- * console.log(result)
3798
- * ['黑色 | S | 短袖', '黑色 | S | 長袖', '黑色 | M | 短袖', '黑色 | M | 長袖', '黑色 | L | 短袖',
3799
- '綠色 | S | 短袖', '綠色 | S | 長袖', '金色 | L | 長袖' '黑色 | L | 長袖' ]
3800
- * */
3801
- function generateGenericCombinations(arrays) {
3802
- var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : " | ";
3803
- return arrays.reduce(function (acc, curr) {
3804
- return _lodash["default"].flatMap(acc, function (a) {
3805
- return curr.map(function (b) {
3806
- return (Array.isArray(a) ? a.join(separator) : a) + separator + b;
3807
- });
3808
- });
3809
- }, arrays[0]);
3810
- }
3811
-
3812
3793
  /** ------------------------------------------------------------------------------------- 起始UID-COMBINATION
3813
3794
  * 建立組合清單及 UID 映射清單
3814
3795
  *
@@ -3832,18 +3813,42 @@ var Utiller = /*#__PURE__*/function () {
3832
3813
  * console.log('✅ 還原結果:', getOriginalFromUid(sampleUid, lookupTable))
3833
3814
  *
3834
3815
  */
3835
- }, {
3836
- key: "generateUidCombinations",
3837
- value: function generateUidCombinations(arrays) {
3816
+ /**
3817
+ * 產生所有排列組合並轉成 Firestore-safe UID
3818
+ * @param {string[][]} arrays - 字串陣列的陣列,例如 [['黑色', '綠色'], ['S', 'M']]
3819
+ * @param {string} separator - 分隔符號,預設為 ' | '
3820
+ * @returns {Array<{[uid: string]: string}>} - 每個 UID 對應一組原始組合的對照表陣列
3821
+ */
3822
+ function generateUidCombinations(arrays) {
3838
3823
  var _this4 = this;
3839
3824
  var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : " | ";
3840
- var combinations = arrays.reduce(function (acc, curr) {
3825
+ if (!arrays.length) return [];
3826
+
3827
+ // 過濾每個子陣列中的 null、undefined、空字串
3828
+ var sanitizedArrays = arrays.map(function (group) {
3829
+ return group.filter(function (item) {
3830
+ return item !== null && item !== undefined && item !== "";
3831
+ });
3832
+ });
3833
+
3834
+ // 若有空陣列,代表某一層無可用資料,無法生成組合
3835
+ if (sanitizedArrays.some(function (group) {
3836
+ return group.length === 0;
3837
+ })) return [];
3838
+
3839
+ // 把第一組當作初始值,從第二組開始遞迴產生所有組合
3840
+ var _sanitizedArrays = (0, _toArray2["default"])(sanitizedArrays),
3841
+ first = _sanitizedArrays[0],
3842
+ rest = _sanitizedArrays.slice(1);
3843
+ var combinations = rest.reduce(function (acc, curr) {
3841
3844
  return _lodash["default"].flatMap(acc, function (a) {
3842
3845
  return curr.map(function (b) {
3843
3846
  return (Array.isArray(a) ? a.join(separator) : a) + separator + b;
3844
3847
  });
3845
3848
  });
3846
- }, arrays[0]);
3849
+ }, first);
3850
+
3851
+ // 每組組合轉成 UID 對照物件
3847
3852
  return combinations.map(function (str) {
3848
3853
  var uid = _this4.encodeToUid(str);
3849
3854
  return (0, _defineProperty2["default"])({}, uid, str);
@@ -3866,7 +3871,7 @@ var Utiller = /*#__PURE__*/function () {
3866
3871
  }
3867
3872
 
3868
3873
  /**
3869
- * 根據 UID 還原原始組合
3874
+ * 根據 UID 還原原始組合(透過對照表或解碼備援)
3870
3875
  */
3871
3876
  }, {
3872
3877
  key: "getOriginalFromUid",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utiller",
3
- "version": "1.0.333",
3
+ "version": "1.0.334",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,7 +11,7 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "configerer": "^1.0.11",
14
- "utiller": "^1.0.332",
14
+ "utiller": "^1.0.333",
15
15
  "linepayer": "^1.0.4",
16
16
  "databazer": "^1.0.12",
17
17
  "lodash": "^4.17.20",