feathers-utils 2.1.2 → 3.0.0
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.
- package/dist/index.cjs +56 -44
- package/dist/index.mjs +6 -6
- package/package.json +22 -19
- package/src/utils/mergeQuery/mergeArrays.ts +7 -7
package/dist/index.cjs
CHANGED
|
@@ -15,8 +15,20 @@ const feathersHooksCommon = require('feathers-hooks-common');
|
|
|
15
15
|
const _debounce = require('lodash/debounce.js');
|
|
16
16
|
const _isObject = require('lodash/isObject.js');
|
|
17
17
|
|
|
18
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
|
|
19
|
+
|
|
20
|
+
const _merge__default = /*#__PURE__*/_interopDefaultCompat(_merge);
|
|
21
|
+
const _isEmpty__default = /*#__PURE__*/_interopDefaultCompat(_isEmpty);
|
|
22
|
+
const _get__default = /*#__PURE__*/_interopDefaultCompat(_get);
|
|
23
|
+
const _has__default = /*#__PURE__*/_interopDefaultCompat(_has);
|
|
24
|
+
const _set__default = /*#__PURE__*/_interopDefaultCompat(_set);
|
|
25
|
+
const _uniqWith__default = /*#__PURE__*/_interopDefaultCompat(_uniqWith);
|
|
26
|
+
const _isEqual__default = /*#__PURE__*/_interopDefaultCompat(_isEqual);
|
|
27
|
+
const _debounce__default = /*#__PURE__*/_interopDefaultCompat(_debounce);
|
|
28
|
+
const _isObject__default = /*#__PURE__*/_interopDefaultCompat(_isObject);
|
|
29
|
+
|
|
18
30
|
function mergeArrays(targetArr, sourceArr, handle, prependKey, actionOnEmptyIntersect) {
|
|
19
|
-
if (!sourceArr
|
|
31
|
+
if (!sourceArr && !targetArr) {
|
|
20
32
|
return;
|
|
21
33
|
}
|
|
22
34
|
if (handle === "target") {
|
|
@@ -33,9 +45,9 @@ function mergeArrays(targetArr, sourceArr, handle, prependKey, actionOnEmptyInte
|
|
|
33
45
|
const arr = targetArr.concat(sourceArr);
|
|
34
46
|
return [...new Set(arr)];
|
|
35
47
|
} else if (handle === "intersect" || handle === "intersectOrFull") {
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
if ((
|
|
48
|
+
const targetIsNotArray = !targetArr || !Array.isArray(targetArr);
|
|
49
|
+
const sourceIsNotArray = !sourceArr || !Array.isArray(sourceArr);
|
|
50
|
+
if ((targetIsNotArray || sourceIsNotArray) && handle === "intersect") {
|
|
39
51
|
if (actionOnEmptyIntersect) {
|
|
40
52
|
actionOnEmptyIntersect(
|
|
41
53
|
targetArr,
|
|
@@ -45,8 +57,8 @@ function mergeArrays(targetArr, sourceArr, handle, prependKey, actionOnEmptyInte
|
|
|
45
57
|
}
|
|
46
58
|
return;
|
|
47
59
|
}
|
|
48
|
-
if (
|
|
49
|
-
const val = !
|
|
60
|
+
if (targetIsNotArray || sourceIsNotArray) {
|
|
61
|
+
const val = !targetIsNotArray ? targetArr : sourceArr;
|
|
50
62
|
return val;
|
|
51
63
|
}
|
|
52
64
|
return targetArr.filter((val) => sourceArr.includes(val));
|
|
@@ -59,12 +71,12 @@ const hasOwnProperty = (obj, ...keys) => {
|
|
|
59
71
|
};
|
|
60
72
|
|
|
61
73
|
function handleArray(target, source, key, options) {
|
|
62
|
-
const targetVal =
|
|
63
|
-
const sourceVal =
|
|
74
|
+
const targetVal = _get__default(target, key);
|
|
75
|
+
const sourceVal = _get__default(source, key);
|
|
64
76
|
if (!sourceVal && !targetVal) {
|
|
65
77
|
return;
|
|
66
78
|
}
|
|
67
|
-
const handle =
|
|
79
|
+
const handle = _get__default(
|
|
68
80
|
options,
|
|
69
81
|
["handle", ...key],
|
|
70
82
|
options.defaultHandle
|
|
@@ -76,7 +88,7 @@ function handleArray(target, source, key, options) {
|
|
|
76
88
|
key,
|
|
77
89
|
options.actionOnEmptyIntersect
|
|
78
90
|
);
|
|
79
|
-
|
|
91
|
+
_set__default(target, key, arr);
|
|
80
92
|
}
|
|
81
93
|
function handleCircular(target, source, prependKey, options) {
|
|
82
94
|
if (target?.$or) {
|
|
@@ -103,11 +115,11 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
103
115
|
delete source.$and;
|
|
104
116
|
}
|
|
105
117
|
}
|
|
106
|
-
if (!
|
|
118
|
+
if (!_has__default(source, prependKey)) {
|
|
107
119
|
return;
|
|
108
120
|
}
|
|
109
|
-
if (!
|
|
110
|
-
|
|
121
|
+
if (!_has__default(target, prependKey)) {
|
|
122
|
+
_set__default(target, prependKey, _get__default(source, prependKey));
|
|
111
123
|
return;
|
|
112
124
|
}
|
|
113
125
|
const { defaultHandle, actionOnEmptyIntersect } = options;
|
|
@@ -115,10 +127,10 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
115
127
|
return;
|
|
116
128
|
}
|
|
117
129
|
const getTargetVal = () => {
|
|
118
|
-
return prependKey.length > 0 ?
|
|
130
|
+
return prependKey.length > 0 ? _get__default(target, prependKey) : target;
|
|
119
131
|
};
|
|
120
132
|
const getSourceVal = () => {
|
|
121
|
-
return prependKey.length > 0 ?
|
|
133
|
+
return prependKey.length > 0 ? _get__default(source, prependKey) : source;
|
|
122
134
|
};
|
|
123
135
|
const targetVal = getTargetVal();
|
|
124
136
|
const sourceVal = getSourceVal();
|
|
@@ -126,11 +138,11 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
126
138
|
return;
|
|
127
139
|
}
|
|
128
140
|
if (defaultHandle === "source") {
|
|
129
|
-
|
|
141
|
+
_set__default(target, prependKey, sourceVal);
|
|
130
142
|
return;
|
|
131
143
|
}
|
|
132
144
|
if (targetVal === null || sourceVal === null) {
|
|
133
|
-
|
|
145
|
+
_set__default(target, prependKey, sourceVal);
|
|
134
146
|
return;
|
|
135
147
|
}
|
|
136
148
|
const typeOfTargetVal = typeof targetVal;
|
|
@@ -138,7 +150,7 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
138
150
|
if (defaultHandle === "intersect") {
|
|
139
151
|
actionOnEmptyIntersect(target, source, prependKey);
|
|
140
152
|
}
|
|
141
|
-
|
|
153
|
+
_set__default(target, prependKey, sourceVal);
|
|
142
154
|
return;
|
|
143
155
|
}
|
|
144
156
|
const typeOfSourceVal = typeof sourceVal;
|
|
@@ -147,7 +159,7 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
147
159
|
if (isTargetSimple || isSourceSimple) {
|
|
148
160
|
if (isTargetSimple && isSourceSimple) {
|
|
149
161
|
if (defaultHandle === "combine") {
|
|
150
|
-
|
|
162
|
+
_set__default(target, prependKey, { $in: [.../* @__PURE__ */ new Set([targetVal, sourceVal])] });
|
|
151
163
|
return;
|
|
152
164
|
} else if (defaultHandle === "intersect") {
|
|
153
165
|
actionOnEmptyIntersect(target, source, prependKey);
|
|
@@ -159,17 +171,17 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
159
171
|
const $in = targetHasIn ? targetVal["$in"] : sourceVal["$in"];
|
|
160
172
|
const otherVal = isTargetSimple ? targetVal : sourceVal;
|
|
161
173
|
if ($in.length === 1 && fastEquals.deepEqual($in[0], otherVal)) {
|
|
162
|
-
|
|
174
|
+
_set__default(target, prependKey, otherVal);
|
|
163
175
|
return;
|
|
164
176
|
} else if (defaultHandle === "combine") {
|
|
165
177
|
if (!$in.some((x) => fastEquals.deepEqual(x, otherVal))) {
|
|
166
178
|
$in.push(otherVal);
|
|
167
179
|
}
|
|
168
|
-
|
|
180
|
+
_set__default(target, `${prependKey}.$in`, $in);
|
|
169
181
|
return;
|
|
170
182
|
} else if (defaultHandle === "intersect") {
|
|
171
183
|
if ($in.some((x) => fastEquals.deepEqual(x, otherVal))) {
|
|
172
|
-
|
|
184
|
+
_set__default(target, prependKey, otherVal);
|
|
173
185
|
} else {
|
|
174
186
|
actionOnEmptyIntersect(target, source, prependKey);
|
|
175
187
|
}
|
|
@@ -228,7 +240,7 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
228
240
|
if (defaultHandle === "combine") {
|
|
229
241
|
let $in = targetVal.concat(sourceVal);
|
|
230
242
|
$in = [...new Set($in)];
|
|
231
|
-
|
|
243
|
+
_set__default(target, prependKey, $in);
|
|
232
244
|
return;
|
|
233
245
|
} else if (defaultHandle === "intersect") {
|
|
234
246
|
const $in = targetVal.filter(
|
|
@@ -237,19 +249,19 @@ function handleCircular(target, source, prependKey, options) {
|
|
|
237
249
|
if ($in.length === 0) {
|
|
238
250
|
actionOnEmptyIntersect(target, source, prependKey);
|
|
239
251
|
} else if ($in.length === 1) {
|
|
240
|
-
|
|
252
|
+
_set__default(target, prependKey.slice(0, -1), $in[0]);
|
|
241
253
|
return;
|
|
242
254
|
} else {
|
|
243
|
-
|
|
255
|
+
_set__default(target, prependKey, $in);
|
|
244
256
|
}
|
|
245
257
|
}
|
|
246
258
|
return;
|
|
247
259
|
}
|
|
248
|
-
|
|
260
|
+
_set__default(target, prependKey, sourceVal);
|
|
249
261
|
return;
|
|
250
262
|
}
|
|
251
263
|
if (typeOfTargetVal !== "object" || typeOfSourceVal !== "object") {
|
|
252
|
-
|
|
264
|
+
_set__default(target, prependKey, sourceVal);
|
|
253
265
|
return;
|
|
254
266
|
}
|
|
255
267
|
const sourceKeys = Object.keys(sourceVal);
|
|
@@ -285,13 +297,13 @@ function getParentProp(target, path) {
|
|
|
285
297
|
return target;
|
|
286
298
|
}
|
|
287
299
|
const pathOneUp = path.slice(0, -1);
|
|
288
|
-
return
|
|
300
|
+
return _get__default(target, pathOneUp);
|
|
289
301
|
}
|
|
290
302
|
function cleanOr(target) {
|
|
291
303
|
if (!target || !Array.isArray(target) || target.length <= 0) {
|
|
292
304
|
return target;
|
|
293
305
|
}
|
|
294
|
-
if (target.some((x) =>
|
|
306
|
+
if (target.some((x) => _isEmpty__default(x))) {
|
|
295
307
|
return void 0;
|
|
296
308
|
} else {
|
|
297
309
|
return arrayWithoutDuplicates(target);
|
|
@@ -301,10 +313,10 @@ function cleanAnd(target) {
|
|
|
301
313
|
if (!target || !Array.isArray(target) || target.length <= 0) {
|
|
302
314
|
return target;
|
|
303
315
|
}
|
|
304
|
-
if (target.every((x) =>
|
|
316
|
+
if (target.every((x) => _isEmpty__default(x))) {
|
|
305
317
|
return void 0;
|
|
306
318
|
} else {
|
|
307
|
-
target = target.filter((x) => !
|
|
319
|
+
target = target.filter((x) => !_isEmpty__default(x));
|
|
308
320
|
return arrayWithoutDuplicates(target);
|
|
309
321
|
}
|
|
310
322
|
}
|
|
@@ -312,7 +324,7 @@ function arrayWithoutDuplicates(target) {
|
|
|
312
324
|
if (!target || !Array.isArray(target)) {
|
|
313
325
|
return target;
|
|
314
326
|
}
|
|
315
|
-
return
|
|
327
|
+
return _uniqWith__default(target, fastEquals.deepEqual);
|
|
316
328
|
}
|
|
317
329
|
function isQueryMoreExplicitThanQuery(target, source) {
|
|
318
330
|
if (!target || !source) {
|
|
@@ -404,7 +416,7 @@ function mergeQuery(target, source, _options) {
|
|
|
404
416
|
}
|
|
405
417
|
handleArray(targetFilters, sourceFilters, ["$select"], options);
|
|
406
418
|
delete sourceFilters["$select"];
|
|
407
|
-
|
|
419
|
+
_merge__default(targetFilters, sourceFilters);
|
|
408
420
|
const subsetQuery = isQueryMoreExplicitThanQuery(targetQuery, sourceQuery);
|
|
409
421
|
if (options.defaultHandle === "intersect" && !!subsetQuery && !hasOwnProperty(targetQuery, "$or", "$and") && !hasOwnProperty(sourceQuery, "$or", "$and")) {
|
|
410
422
|
return {
|
|
@@ -419,7 +431,7 @@ function mergeQuery(target, source, _options) {
|
|
|
419
431
|
...sourceQuery
|
|
420
432
|
};
|
|
421
433
|
}
|
|
422
|
-
if (options.useLogicalConjunction && (options.defaultHandle === "combine" || options.defaultHandle === "intersect") && !
|
|
434
|
+
if (options.useLogicalConjunction && (options.defaultHandle === "combine" || options.defaultHandle === "intersect") && !_isEmpty__default(targetQuery)) {
|
|
423
435
|
const logicalOp = options.defaultHandle === "combine" ? "$or" : "$and";
|
|
424
436
|
if (hasOwnProperty(sourceQuery, logicalOp)) {
|
|
425
437
|
const andOr = sourceQuery[logicalOp];
|
|
@@ -501,13 +513,13 @@ const isPaginated = (context) => {
|
|
|
501
513
|
|
|
502
514
|
const pushSet = (obj, path, val, options) => {
|
|
503
515
|
options = options || {};
|
|
504
|
-
let arr =
|
|
516
|
+
let arr = _get__default(obj, path);
|
|
505
517
|
if (!arr || !Array.isArray(arr)) {
|
|
506
518
|
arr = [val];
|
|
507
|
-
|
|
519
|
+
_set__default(obj, path, arr);
|
|
508
520
|
return arr;
|
|
509
521
|
} else {
|
|
510
|
-
if (options.unique && arr.some((x) =>
|
|
522
|
+
if (options.unique && arr.some((x) => _isEqual__default(x, val))) {
|
|
511
523
|
return arr;
|
|
512
524
|
}
|
|
513
525
|
arr.push(val);
|
|
@@ -802,16 +814,16 @@ function setData(from, to, _options) {
|
|
|
802
814
|
return context;
|
|
803
815
|
}
|
|
804
816
|
const { items } = getItemsIsArray(context);
|
|
805
|
-
if (!
|
|
817
|
+
if (!_has__default(context, from)) {
|
|
806
818
|
if (!context.params?.provider || options.allowUndefined === true) {
|
|
807
819
|
return context;
|
|
808
820
|
}
|
|
809
|
-
if (!options.overwrite && items.every((item) =>
|
|
821
|
+
if (!options.overwrite && items.every((item) => _has__default(item, to))) {
|
|
810
822
|
return context;
|
|
811
823
|
}
|
|
812
824
|
throw new errors.Forbidden(`Expected field ${from.toString()} not available`);
|
|
813
825
|
}
|
|
814
|
-
const val =
|
|
826
|
+
const val = _get__default(context, from);
|
|
815
827
|
items.forEach((item) => {
|
|
816
828
|
let overwrite;
|
|
817
829
|
if (typeof options.overwrite === "function") {
|
|
@@ -819,10 +831,10 @@ function setData(from, to, _options) {
|
|
|
819
831
|
} else {
|
|
820
832
|
overwrite = options.overwrite;
|
|
821
833
|
}
|
|
822
|
-
if (!overwrite &&
|
|
834
|
+
if (!overwrite && _has__default(item, to)) {
|
|
823
835
|
return;
|
|
824
836
|
}
|
|
825
|
-
|
|
837
|
+
_set__default(item, to, val);
|
|
826
838
|
});
|
|
827
839
|
return context;
|
|
828
840
|
};
|
|
@@ -862,7 +874,7 @@ class DebouncedStore {
|
|
|
862
874
|
if (typeof this._queueById[id] === "function") {
|
|
863
875
|
return this._queueById[id](id, action);
|
|
864
876
|
}
|
|
865
|
-
this._queueById[id] =
|
|
877
|
+
this._queueById[id] = _debounce__default(
|
|
866
878
|
(id2, action2) => {
|
|
867
879
|
this.unbounced(id2, action2);
|
|
868
880
|
},
|
|
@@ -922,7 +934,7 @@ const filterArray = (...keys) => {
|
|
|
922
934
|
};
|
|
923
935
|
|
|
924
936
|
const filterQueryObject = (key) => (obj, { operators }) => {
|
|
925
|
-
if (obj && !
|
|
937
|
+
if (obj && !_isObject__default(obj)) {
|
|
926
938
|
throw new Error(
|
|
927
939
|
`Invalid query parameter: '${key}'. It has to be an object`
|
|
928
940
|
);
|
package/dist/index.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import _debounce from 'lodash/debounce.js';
|
|
|
14
14
|
import _isObject from 'lodash/isObject.js';
|
|
15
15
|
|
|
16
16
|
function mergeArrays(targetArr, sourceArr, handle, prependKey, actionOnEmptyIntersect) {
|
|
17
|
-
if (!sourceArr
|
|
17
|
+
if (!sourceArr && !targetArr) {
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
if (handle === "target") {
|
|
@@ -31,9 +31,9 @@ function mergeArrays(targetArr, sourceArr, handle, prependKey, actionOnEmptyInte
|
|
|
31
31
|
const arr = targetArr.concat(sourceArr);
|
|
32
32
|
return [...new Set(arr)];
|
|
33
33
|
} else if (handle === "intersect" || handle === "intersectOrFull") {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
if ((
|
|
34
|
+
const targetIsNotArray = !targetArr || !Array.isArray(targetArr);
|
|
35
|
+
const sourceIsNotArray = !sourceArr || !Array.isArray(sourceArr);
|
|
36
|
+
if ((targetIsNotArray || sourceIsNotArray) && handle === "intersect") {
|
|
37
37
|
if (actionOnEmptyIntersect) {
|
|
38
38
|
actionOnEmptyIntersect(
|
|
39
39
|
targetArr,
|
|
@@ -43,8 +43,8 @@ function mergeArrays(targetArr, sourceArr, handle, prependKey, actionOnEmptyInte
|
|
|
43
43
|
}
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
|
-
if (
|
|
47
|
-
const val = !
|
|
46
|
+
if (targetIsNotArray || sourceIsNotArray) {
|
|
47
|
+
const val = !targetIsNotArray ? targetArr : sourceArr;
|
|
48
48
|
return val;
|
|
49
49
|
}
|
|
50
50
|
return targetArr.filter((val) => sourceArr.includes(val));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "feathers-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Some utils for projects using '@feathersjs/feathers'",
|
|
5
5
|
"author": "fratzinger",
|
|
6
6
|
"repository": {
|
|
@@ -39,36 +39,39 @@
|
|
|
39
39
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@feathersjs/adapter-commons": "5.0.
|
|
43
|
-
"@feathersjs/commons": "^5.0.
|
|
44
|
-
"@feathersjs/errors": "5.0.
|
|
45
|
-
"@feathersjs/feathers": "5.0.1",
|
|
42
|
+
"@feathersjs/adapter-commons": "^5.0.5",
|
|
43
|
+
"@feathersjs/commons": "^5.0.5",
|
|
44
|
+
"@feathersjs/errors": "^5.0.5",
|
|
46
45
|
"fast-equals": "^5.0.1",
|
|
47
|
-
"feathers-hooks-common": "^7.0.
|
|
46
|
+
"feathers-hooks-common": "^7.0.3",
|
|
48
47
|
"lodash": "^4.17.21"
|
|
49
48
|
},
|
|
50
49
|
"devDependencies": {
|
|
51
|
-
"@feathersjs/
|
|
50
|
+
"@feathersjs/feathers": "^5.0.5",
|
|
51
|
+
"@feathersjs/memory": "^5.0.5",
|
|
52
52
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
53
|
-
"@types/lodash": "^4.14.
|
|
53
|
+
"@types/lodash": "^4.14.195",
|
|
54
54
|
"@types/mocha": "^10.0.1",
|
|
55
|
-
"@types/node": "^
|
|
56
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
57
|
-
"@typescript-eslint/parser": "^5.
|
|
58
|
-
"@vitest/coverage-c8": "^0.
|
|
55
|
+
"@types/node": "^20.2.5",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^5.59.8",
|
|
57
|
+
"@typescript-eslint/parser": "^5.59.8",
|
|
58
|
+
"@vitest/coverage-c8": "^0.31.4",
|
|
59
59
|
"cross-env": "^7.0.3",
|
|
60
|
-
"eslint": "^8.
|
|
60
|
+
"eslint": "^8.41.0",
|
|
61
61
|
"eslint-config-prettier": "^8.8.0",
|
|
62
|
-
"eslint-import-resolver-typescript": "^3.5.
|
|
62
|
+
"eslint-import-resolver-typescript": "^3.5.5",
|
|
63
63
|
"eslint-plugin-import": "^2.27.5",
|
|
64
64
|
"eslint-plugin-prettier": "^4.2.1",
|
|
65
65
|
"eslint-plugin-security": "^1.7.1",
|
|
66
|
-
"np": "^
|
|
66
|
+
"np": "^8.0.2",
|
|
67
67
|
"nyc": "^15.1.0",
|
|
68
|
-
"prettier": "^2.8.
|
|
68
|
+
"prettier": "^2.8.8",
|
|
69
69
|
"shx": "^0.3.4",
|
|
70
|
-
"typescript": "^5.
|
|
71
|
-
"unbuild": "^1.1
|
|
72
|
-
"vitest": "^0.
|
|
70
|
+
"typescript": "^5.1.3",
|
|
71
|
+
"unbuild": "^1.2.1",
|
|
72
|
+
"vitest": "^0.31.4"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"@feathersjs/feathers": "^5.0.0"
|
|
73
76
|
}
|
|
74
77
|
}
|
|
@@ -8,7 +8,7 @@ export function mergeArrays<T>(
|
|
|
8
8
|
prependKey?: Path,
|
|
9
9
|
actionOnEmptyIntersect?: ActionOnEmptyIntersect
|
|
10
10
|
): T[] | undefined {
|
|
11
|
-
if (!sourceArr
|
|
11
|
+
if (!sourceArr && !targetArr) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
if (handle === "target") {
|
|
@@ -25,10 +25,10 @@ export function mergeArrays<T>(
|
|
|
25
25
|
const arr = targetArr.concat(sourceArr);
|
|
26
26
|
return [...new Set(arr)];
|
|
27
27
|
} else if (handle === "intersect" || handle === "intersectOrFull") {
|
|
28
|
-
const
|
|
29
|
-
const
|
|
28
|
+
const targetIsNotArray = !targetArr || !Array.isArray(targetArr);
|
|
29
|
+
const sourceIsNotArray = !sourceArr || !Array.isArray(sourceArr);
|
|
30
30
|
|
|
31
|
-
if ((
|
|
31
|
+
if ((targetIsNotArray || sourceIsNotArray) && handle === "intersect") {
|
|
32
32
|
if (actionOnEmptyIntersect) {
|
|
33
33
|
actionOnEmptyIntersect(
|
|
34
34
|
targetArr as unknown,
|
|
@@ -39,12 +39,12 @@ export function mergeArrays<T>(
|
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
if (
|
|
43
|
-
const val = !
|
|
42
|
+
if (targetIsNotArray || sourceIsNotArray) {
|
|
43
|
+
const val = !targetIsNotArray ? targetArr : sourceArr;
|
|
44
44
|
return val;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
return targetArr
|
|
47
|
+
return targetArr!.filter((val) => sourceArr!.includes(val));
|
|
48
48
|
}
|
|
49
49
|
return undefined;
|
|
50
50
|
}
|