feathers-utils 6.0.0 → 7.0.1
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/README.md +3 -4
- package/dist/index.cjs +81 -99
- package/dist/index.d.cts +35 -33
- package/dist/index.d.mts +35 -33
- package/dist/index.d.ts +35 -33
- package/dist/index.mjs +81 -99
- package/package.json +29 -32
- package/src/.DS_Store +0 -0
- package/src/filters/array.ts +11 -13
- package/src/filters/index.ts +2 -2
- package/src/filters/object.ts +11 -11
- package/src/hooks/.DS_Store +0 -0
- package/src/hooks/checkMulti.ts +98 -82
- package/src/hooks/createRelated.ts +41 -41
- package/src/hooks/forEach.ts +32 -32
- package/src/hooks/from-client-for-server/common.ts +1 -1
- package/src/hooks/from-client-for-server/index.ts +2 -2
- package/src/hooks/from-client-for-server/paramsForServer.ts +32 -32
- package/src/hooks/from-client-for-server/paramsFromClient.ts +25 -25
- package/src/hooks/index.ts +9 -9
- package/src/hooks/onDelete.ts +54 -55
- package/src/hooks/parseFields.ts +13 -13
- package/src/hooks/removeRelated.ts +22 -20
- package/src/hooks/runPerItem.ts +17 -18
- package/src/hooks/setData.ts +295 -264
- package/src/index.ts +6 -6
- package/src/mixins/debounce-mixin/DebouncedStore.ts +29 -29
- package/src/mixins/debounce-mixin/debounceMixin.ts +17 -17
- package/src/mixins/debounce-mixin/index.ts +3 -3
- package/src/mixins/debounce-mixin/types.ts +9 -9
- package/src/mixins/debounce-mixin/utils.ts +3 -3
- package/src/mixins/index.ts +1 -1
- package/src/types.ts +3 -5
- package/src/typesInternal.ts +14 -14
- package/src/utility-types/index.ts +48 -48
- package/src/utils/_utils.internal.ts +5 -5
- package/src/utils/defineHooks.ts +8 -8
- package/src/utils/deflattenQuery.ts +31 -31
- package/src/utils/filterQuery.ts +58 -58
- package/src/utils/flattenQuery.ts +54 -54
- package/src/utils/getItemsIsArray.ts +148 -149
- package/src/utils/getPaginate.ts +31 -31
- package/src/utils/index.ts +17 -17
- package/src/utils/isMulti.ts +48 -40
- package/src/utils/isPaginated.ts +30 -30
- package/src/utils/markHookForSkip.ts +177 -178
- package/src/utils/mergeQuery/index.ts +3 -3
- package/src/utils/mergeQuery/mergeArrays.ts +67 -67
- package/src/utils/mergeQuery/mergeQuery.ts +211 -211
- package/src/utils/mergeQuery/types.ts +12 -12
- package/src/utils/mergeQuery/utils.ts +224 -224
- package/src/utils/optimizeBatchPatch.ts +42 -42
- package/src/utils/pushSet.ts +57 -57
- package/src/utils/setQueryKeySafely.ts +68 -68
- package/src/utils/setResultEmpty.ts +125 -123
- package/src/utils/shouldSkip.ts +72 -72
- package/src/utils/toJSON.ts +4 -4
- package/src/utils/validateQueryProperty.ts +10 -10
- package/src/hooks/makeSequelizeQuery.ts_ +0 -90
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Path } from
|
|
2
|
-
import type { Handle, ActionOnEmptyIntersect } from
|
|
1
|
+
import type { Path } from '../../typesInternal.js'
|
|
2
|
+
import type { Handle, ActionOnEmptyIntersect } from './types.js'
|
|
3
3
|
|
|
4
4
|
export function mergeArrays<T>(
|
|
5
5
|
targetArr: T[] | undefined,
|
|
@@ -9,110 +9,110 @@ export function mergeArrays<T>(
|
|
|
9
9
|
actionOnEmptyIntersect?: ActionOnEmptyIntersect,
|
|
10
10
|
): T[] | undefined {
|
|
11
11
|
if (!sourceArr && !targetArr) {
|
|
12
|
-
return
|
|
12
|
+
return
|
|
13
13
|
}
|
|
14
|
-
if (handle ===
|
|
15
|
-
return targetArr
|
|
16
|
-
} else if (handle ===
|
|
17
|
-
return sourceArr
|
|
18
|
-
} else if (handle ===
|
|
14
|
+
if (handle === 'target') {
|
|
15
|
+
return targetArr
|
|
16
|
+
} else if (handle === 'source') {
|
|
17
|
+
return sourceArr
|
|
18
|
+
} else if (handle === 'combine') {
|
|
19
19
|
if (!sourceArr || !Array.isArray(sourceArr)) {
|
|
20
|
-
return targetArr
|
|
20
|
+
return targetArr
|
|
21
21
|
}
|
|
22
22
|
if (!targetArr || !Array.isArray(targetArr)) {
|
|
23
|
-
return sourceArr
|
|
23
|
+
return sourceArr
|
|
24
24
|
}
|
|
25
|
-
const arr = targetArr.concat(sourceArr)
|
|
26
|
-
return [...new Set(arr)]
|
|
27
|
-
} else if (handle ===
|
|
28
|
-
const targetIsNotArray = !targetArr || !Array.isArray(targetArr)
|
|
29
|
-
const sourceIsNotArray = !sourceArr || !Array.isArray(sourceArr)
|
|
25
|
+
const arr = targetArr.concat(sourceArr)
|
|
26
|
+
return [...new Set(arr)]
|
|
27
|
+
} else if (handle === 'intersect' || handle === 'intersectOrFull') {
|
|
28
|
+
const targetIsNotArray = !targetArr || !Array.isArray(targetArr)
|
|
29
|
+
const sourceIsNotArray = !sourceArr || !Array.isArray(sourceArr)
|
|
30
30
|
|
|
31
|
-
if ((targetIsNotArray || sourceIsNotArray) && handle ===
|
|
31
|
+
if ((targetIsNotArray || sourceIsNotArray) && handle === 'intersect') {
|
|
32
32
|
if (actionOnEmptyIntersect) {
|
|
33
33
|
actionOnEmptyIntersect(
|
|
34
34
|
targetArr as unknown,
|
|
35
35
|
sourceArr,
|
|
36
36
|
prependKey || [],
|
|
37
|
-
)
|
|
37
|
+
)
|
|
38
38
|
}
|
|
39
|
-
return
|
|
39
|
+
return
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
if (targetIsNotArray || sourceIsNotArray) {
|
|
43
|
-
const val = !targetIsNotArray ? targetArr : sourceArr
|
|
44
|
-
return val
|
|
43
|
+
const val = !targetIsNotArray ? targetArr : sourceArr
|
|
44
|
+
return val
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
return targetArr!.filter((val) => sourceArr!.includes(val))
|
|
47
|
+
return targetArr!.filter((val) => sourceArr!.includes(val))
|
|
48
48
|
}
|
|
49
|
-
return undefined
|
|
49
|
+
return undefined
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
if (import.meta.vitest) {
|
|
53
|
-
const { it, expect } = import.meta.vitest
|
|
53
|
+
const { it, expect } = import.meta.vitest
|
|
54
54
|
|
|
55
|
-
describe(
|
|
56
|
-
it(
|
|
57
|
-
const arr = mergeArrays([1], [2],
|
|
55
|
+
describe('target', function () {
|
|
56
|
+
it('returns target', function () {
|
|
57
|
+
const arr = mergeArrays([1], [2], 'target')
|
|
58
58
|
|
|
59
|
-
expect(arr).toStrictEqual([1])
|
|
60
|
-
})
|
|
59
|
+
expect(arr).toStrictEqual([1])
|
|
60
|
+
})
|
|
61
61
|
|
|
62
|
-
it(
|
|
63
|
-
const arr = mergeArrays(undefined, [1],
|
|
62
|
+
it('returns target even if undefined', function () {
|
|
63
|
+
const arr = mergeArrays(undefined, [1], 'target')
|
|
64
64
|
|
|
65
|
-
expect(arr).toBeUndefined()
|
|
66
|
-
})
|
|
67
|
-
})
|
|
65
|
+
expect(arr).toBeUndefined()
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
68
|
|
|
69
|
-
describe(
|
|
70
|
-
it(
|
|
71
|
-
const arr = mergeArrays([1], [2],
|
|
69
|
+
describe('source', function () {
|
|
70
|
+
it('returns source', function () {
|
|
71
|
+
const arr = mergeArrays([1], [2], 'source')
|
|
72
72
|
|
|
73
|
-
expect(arr).toStrictEqual([2])
|
|
74
|
-
})
|
|
73
|
+
expect(arr).toStrictEqual([2])
|
|
74
|
+
})
|
|
75
75
|
|
|
76
|
-
it(
|
|
77
|
-
const arr = mergeArrays([1], undefined,
|
|
76
|
+
it('returns source even if undefined', function () {
|
|
77
|
+
const arr = mergeArrays([1], undefined, 'source')
|
|
78
78
|
|
|
79
|
-
expect(arr).toBeUndefined()
|
|
80
|
-
})
|
|
81
|
-
})
|
|
79
|
+
expect(arr).toBeUndefined()
|
|
80
|
+
})
|
|
81
|
+
})
|
|
82
82
|
|
|
83
|
-
describe(
|
|
84
|
-
it(
|
|
85
|
-
const arr = mergeArrays([1, 2], [2, 3],
|
|
83
|
+
describe('combine', function () {
|
|
84
|
+
it('returns combined array', function () {
|
|
85
|
+
const arr = mergeArrays([1, 2], [2, 3], 'combine')
|
|
86
86
|
|
|
87
|
-
expect(arr).toStrictEqual([1, 2, 3])
|
|
88
|
-
})
|
|
87
|
+
expect(arr).toStrictEqual([1, 2, 3])
|
|
88
|
+
})
|
|
89
89
|
|
|
90
|
-
it(
|
|
91
|
-
const arr1 = mergeArrays([1, 2], undefined,
|
|
90
|
+
it('returns one array if combine', function () {
|
|
91
|
+
const arr1 = mergeArrays([1, 2], undefined, 'combine')
|
|
92
92
|
|
|
93
|
-
expect(arr1).toStrictEqual([1, 2])
|
|
93
|
+
expect(arr1).toStrictEqual([1, 2])
|
|
94
94
|
|
|
95
|
-
const arr2 = mergeArrays(undefined, [1, 2],
|
|
95
|
+
const arr2 = mergeArrays(undefined, [1, 2], 'combine')
|
|
96
96
|
|
|
97
|
-
expect(arr2).toStrictEqual([1, 2])
|
|
98
|
-
})
|
|
99
|
-
})
|
|
97
|
+
expect(arr2).toStrictEqual([1, 2])
|
|
98
|
+
})
|
|
99
|
+
})
|
|
100
100
|
|
|
101
|
-
describe(
|
|
102
|
-
it(
|
|
103
|
-
const arr = mergeArrays([1, 2], [2, 3],
|
|
101
|
+
describe('intersect', function () {
|
|
102
|
+
it('returns intersected array', function () {
|
|
103
|
+
const arr = mergeArrays([1, 2], [2, 3], 'intersect')
|
|
104
104
|
|
|
105
|
-
expect(arr).toStrictEqual([2])
|
|
106
|
-
})
|
|
105
|
+
expect(arr).toStrictEqual([2])
|
|
106
|
+
})
|
|
107
107
|
|
|
108
|
-
it(
|
|
109
|
-
const arr1 = mergeArrays([1, 2], undefined,
|
|
108
|
+
it('returns undefined if one is undefined', function () {
|
|
109
|
+
const arr1 = mergeArrays([1, 2], undefined, 'intersect')
|
|
110
110
|
|
|
111
|
-
expect(arr1).toBeUndefined()
|
|
111
|
+
expect(arr1).toBeUndefined()
|
|
112
112
|
|
|
113
|
-
const arr2 = mergeArrays(undefined, [1, 2],
|
|
113
|
+
const arr2 = mergeArrays(undefined, [1, 2], 'intersect')
|
|
114
114
|
|
|
115
|
-
expect(arr2).toBeUndefined()
|
|
116
|
-
})
|
|
117
|
-
})
|
|
115
|
+
expect(arr2).toBeUndefined()
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
118
|
}
|