feathers-utils 2.0.0-9 → 2.1.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/LICENSE +1 -1
- package/README.md +3 -1
- package/dist/index.cjs +964 -0
- package/dist/index.d.ts +262 -5
- package/dist/index.mjs +938 -0
- package/package.json +35 -38
- package/src/filters/object.ts +1 -1
- package/src/hooks/forEach.ts +47 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/makeSequelizeQuery.ts_ +4 -4
- package/src/hooks/parseFields.ts +27 -0
- package/src/hooks/runPerItem.ts +4 -6
- package/src/hooks/setData.ts +4 -5
- package/src/index.ts +1 -0
- package/src/typesInternal.ts +7 -0
- package/src/utility-types/index.ts +116 -0
- package/src/utils/getItemsIsArray.ts +27 -11
- package/src/utils/getPaginate.ts +2 -1
- package/src/utils/internal.utils.ts +6 -0
- package/src/utils/mergeQuery/mergeQuery.ts +62 -25
- package/src/utils/mergeQuery/utils.ts +82 -29
- package/dist/esm/filters/array.d.ts +0 -2
- package/dist/esm/filters/array.js +0 -17
- package/dist/esm/filters/index.d.ts +0 -2
- package/dist/esm/filters/index.js +0 -2
- package/dist/esm/filters/object.d.ts +0 -2
- package/dist/esm/filters/object.js +0 -15
- package/dist/esm/hooks/checkMulti.d.ts +0 -5
- package/dist/esm/hooks/checkMulti.js +0 -20
- package/dist/esm/hooks/createRelated.d.ts +0 -12
- package/dist/esm/hooks/createRelated.js +0 -31
- package/dist/esm/hooks/index.d.ts +0 -6
- package/dist/esm/hooks/index.js +0 -6
- package/dist/esm/hooks/onDelete.d.ts +0 -12
- package/dist/esm/hooks/onDelete.js +0 -47
- package/dist/esm/hooks/removeRelated.d.ts +0 -11
- package/dist/esm/hooks/removeRelated.js +0 -37
- package/dist/esm/hooks/runPerItem.d.ts +0 -10
- package/dist/esm/hooks/runPerItem.js +0 -29
- package/dist/esm/hooks/setData.d.ts +0 -11
- package/dist/esm/hooks/setData.js +0 -46
- package/dist/esm/index.d.ts +0 -5
- package/dist/esm/index.js +0 -5
- package/dist/esm/mixins/debounce-mixin/DebouncedStore.d.ts +0 -18
- package/dist/esm/mixins/debounce-mixin/DebouncedStore.js +0 -46
- package/dist/esm/mixins/debounce-mixin/debounceMixin.d.ts +0 -3
- package/dist/esm/mixins/debounce-mixin/debounceMixin.js +0 -19
- package/dist/esm/mixins/debounce-mixin/index.d.ts +0 -3
- package/dist/esm/mixins/debounce-mixin/index.js +0 -3
- package/dist/esm/mixins/debounce-mixin/types.d.ts +0 -13
- package/dist/esm/mixins/debounce-mixin/types.js +0 -1
- package/dist/esm/mixins/index.d.ts +0 -1
- package/dist/esm/mixins/index.js +0 -1
- package/dist/esm/types.d.ts +0 -3
- package/dist/esm/types.js +0 -1
- package/dist/esm/typesInternal.d.ts +0 -3
- package/dist/esm/typesInternal.js +0 -3
- package/dist/esm/utils/filterQuery.d.ts +0 -8
- package/dist/esm/utils/filterQuery.js +0 -30
- package/dist/esm/utils/getItemsIsArray.d.ts +0 -10
- package/dist/esm/utils/getItemsIsArray.js +0 -16
- package/dist/esm/utils/getPaginate.d.ts +0 -9
- package/dist/esm/utils/getPaginate.js +0 -20
- package/dist/esm/utils/index.d.ts +0 -11
- package/dist/esm/utils/index.js +0 -11
- package/dist/esm/utils/isMulti.d.ts +0 -11
- package/dist/esm/utils/isMulti.js +0 -26
- package/dist/esm/utils/isPaginated.d.ts +0 -5
- package/dist/esm/utils/isPaginated.js +0 -11
- package/dist/esm/utils/markHookForSkip.d.ts +0 -7
- package/dist/esm/utils/markHookForSkip.js +0 -18
- package/dist/esm/utils/mergeQuery/index.d.ts +0 -3
- package/dist/esm/utils/mergeQuery/index.js +0 -3
- package/dist/esm/utils/mergeQuery/mergeArrays.d.ts +0 -3
- package/dist/esm/utils/mergeQuery/mergeArrays.js +0 -37
- package/dist/esm/utils/mergeQuery/mergeQuery.d.ts +0 -3
- package/dist/esm/utils/mergeQuery/mergeQuery.js +0 -70
- package/dist/esm/utils/mergeQuery/types.d.ts +0 -13
- package/dist/esm/utils/mergeQuery/types.js +0 -1
- package/dist/esm/utils/mergeQuery/utils.d.ts +0 -11
- package/dist/esm/utils/mergeQuery/utils.js +0 -272
- package/dist/esm/utils/pushSet.d.ts +0 -8
- package/dist/esm/utils/pushSet.js +0 -22
- package/dist/esm/utils/setResultEmpty.d.ts +0 -5
- package/dist/esm/utils/setResultEmpty.js +0 -28
- package/dist/esm/utils/shouldSkip.d.ts +0 -8
- package/dist/esm/utils/shouldSkip.js +0 -29
- package/dist/esm/utils/validateQueryProperty.d.ts +0 -5
- package/dist/esm/utils/validateQueryProperty.js +0 -23
- package/dist/filters/array.d.ts +0 -2
- package/dist/filters/array.js +0 -21
- package/dist/filters/index.d.ts +0 -2
- package/dist/filters/index.js +0 -18
- package/dist/filters/object.d.ts +0 -2
- package/dist/filters/object.js +0 -22
- package/dist/hooks/checkMulti.d.ts +0 -5
- package/dist/hooks/checkMulti.js +0 -24
- package/dist/hooks/createRelated.d.ts +0 -12
- package/dist/hooks/createRelated.js +0 -44
- package/dist/hooks/index.d.ts +0 -6
- package/dist/hooks/index.js +0 -22
- package/dist/hooks/onDelete.d.ts +0 -12
- package/dist/hooks/onDelete.js +0 -60
- package/dist/hooks/removeRelated.d.ts +0 -11
- package/dist/hooks/removeRelated.js +0 -50
- package/dist/hooks/runPerItem.d.ts +0 -10
- package/dist/hooks/runPerItem.js +0 -42
- package/dist/hooks/setData.d.ts +0 -11
- package/dist/hooks/setData.js +0 -54
- package/dist/index.js +0 -21
- package/dist/mixins/debounce-mixin/DebouncedStore.d.ts +0 -18
- package/dist/mixins/debounce-mixin/DebouncedStore.js +0 -65
- package/dist/mixins/debounce-mixin/debounceMixin.d.ts +0 -3
- package/dist/mixins/debounce-mixin/debounceMixin.js +0 -23
- package/dist/mixins/debounce-mixin/index.d.ts +0 -3
- package/dist/mixins/debounce-mixin/index.js +0 -19
- package/dist/mixins/debounce-mixin/types.d.ts +0 -13
- package/dist/mixins/debounce-mixin/types.js +0 -2
- package/dist/mixins/index.d.ts +0 -1
- package/dist/mixins/index.js +0 -17
- package/dist/types.d.ts +0 -3
- package/dist/types.js +0 -2
- package/dist/typesInternal.d.ts +0 -3
- package/dist/typesInternal.js +0 -4
- package/dist/utils/filterQuery.d.ts +0 -8
- package/dist/utils/filterQuery.js +0 -46
- package/dist/utils/getItemsIsArray.d.ts +0 -10
- package/dist/utils/getItemsIsArray.js +0 -20
- package/dist/utils/getPaginate.d.ts +0 -9
- package/dist/utils/getPaginate.js +0 -22
- package/dist/utils/index.d.ts +0 -11
- package/dist/utils/index.js +0 -27
- package/dist/utils/isMulti.d.ts +0 -11
- package/dist/utils/isMulti.js +0 -30
- package/dist/utils/isPaginated.d.ts +0 -5
- package/dist/utils/isPaginated.js +0 -15
- package/dist/utils/markHookForSkip.d.ts +0 -7
- package/dist/utils/markHookForSkip.js +0 -22
- package/dist/utils/mergeQuery/index.d.ts +0 -3
- package/dist/utils/mergeQuery/index.js +0 -19
- package/dist/utils/mergeQuery/mergeArrays.d.ts +0 -3
- package/dist/utils/mergeQuery/mergeArrays.js +0 -41
- package/dist/utils/mergeQuery/mergeQuery.d.ts +0 -3
- package/dist/utils/mergeQuery/mergeQuery.js +0 -77
- package/dist/utils/mergeQuery/types.d.ts +0 -13
- package/dist/utils/mergeQuery/types.js +0 -2
- package/dist/utils/mergeQuery/utils.d.ts +0 -11
- package/dist/utils/mergeQuery/utils.js +0 -287
- package/dist/utils/pushSet.d.ts +0 -8
- package/dist/utils/pushSet.js +0 -29
- package/dist/utils/setResultEmpty.d.ts +0 -5
- package/dist/utils/setResultEmpty.js +0 -32
- package/dist/utils/shouldSkip.d.ts +0 -8
- package/dist/utils/shouldSkip.js +0 -33
- package/dist/utils/validateQueryProperty.d.ts +0 -5
- package/dist/utils/validateQueryProperty.js +0 -25
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.arrayWithoutDuplicates = exports.cleanAnd = exports.cleanOr = exports.getParentProp = exports.moveProperty = exports.makeDefaultOptions = exports.handleCircular = exports.handleArray = exports.hasOwnProperty = void 0;
|
|
7
|
-
const errors_1 = require("@feathersjs/errors");
|
|
8
|
-
const get_js_1 = __importDefault(require("lodash/get.js"));
|
|
9
|
-
const has_js_1 = __importDefault(require("lodash/has.js"));
|
|
10
|
-
const isEmpty_js_1 = __importDefault(require("lodash/isEmpty.js"));
|
|
11
|
-
const isEqual_js_1 = __importDefault(require("lodash/isEqual.js"));
|
|
12
|
-
const set_js_1 = __importDefault(require("lodash/set.js"));
|
|
13
|
-
const uniqWith_js_1 = __importDefault(require("lodash/uniqWith.js"));
|
|
14
|
-
const mergeArrays_1 = require("./mergeArrays");
|
|
15
|
-
const hasOwnProperty = (obj, key) => {
|
|
16
|
-
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
17
|
-
};
|
|
18
|
-
exports.hasOwnProperty = hasOwnProperty;
|
|
19
|
-
function handleArray(target, source, key, options) {
|
|
20
|
-
const targetVal = (0, get_js_1.default)(target, key);
|
|
21
|
-
const sourceVal = (0, get_js_1.default)(source, key);
|
|
22
|
-
if (!sourceVal && !targetVal) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const handle = (0, get_js_1.default)(options, ["handle", ...key], options.defaultHandle);
|
|
26
|
-
const arr = (0, mergeArrays_1.mergeArrays)(targetVal, sourceVal, handle, key, options.actionOnEmptyIntersect);
|
|
27
|
-
(0, set_js_1.default)(target, key, arr);
|
|
28
|
-
}
|
|
29
|
-
exports.handleArray = handleArray;
|
|
30
|
-
function handleCircular(target, source, prependKey, options) {
|
|
31
|
-
if (target === null || target === void 0 ? void 0 : target.$or) {
|
|
32
|
-
target.$or = cleanOr(target.$or);
|
|
33
|
-
if (!target.$or) {
|
|
34
|
-
delete target.$or;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (source === null || source === void 0 ? void 0 : source.$or) {
|
|
38
|
-
source.$or = cleanOr(source.$or);
|
|
39
|
-
if (!source.$or) {
|
|
40
|
-
delete source.$or;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (target === null || target === void 0 ? void 0 : target.$and) {
|
|
44
|
-
target.$and = cleanAnd(target.$and);
|
|
45
|
-
if (!target.$and) {
|
|
46
|
-
delete target.$and;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (source === null || source === void 0 ? void 0 : source.$and) {
|
|
50
|
-
source.$and = cleanAnd(source.$and);
|
|
51
|
-
if (!source.$and) {
|
|
52
|
-
delete source.$and;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
if (!(0, has_js_1.default)(source, prependKey)) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
if (!(0, has_js_1.default)(target, prependKey)) {
|
|
59
|
-
(0, set_js_1.default)(target, prependKey, (0, get_js_1.default)(source, prependKey));
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
const { defaultHandle, actionOnEmptyIntersect } = options;
|
|
63
|
-
if (defaultHandle === "target") {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const getTargetVal = () => {
|
|
67
|
-
return prependKey.length > 0 ? (0, get_js_1.default)(target, prependKey) : target;
|
|
68
|
-
};
|
|
69
|
-
const getSourceVal = () => {
|
|
70
|
-
return prependKey.length > 0 ? (0, get_js_1.default)(source, prependKey) : source;
|
|
71
|
-
};
|
|
72
|
-
const targetVal = getTargetVal();
|
|
73
|
-
const sourceVal = getSourceVal();
|
|
74
|
-
if ((0, isEqual_js_1.default)(targetVal, sourceVal)) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (defaultHandle === "source") {
|
|
78
|
-
(0, set_js_1.default)(target, prependKey, sourceVal);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
if (targetVal === null || sourceVal === null) {
|
|
82
|
-
(0, set_js_1.default)(target, prependKey, sourceVal);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const typeOfTargetVal = typeof targetVal;
|
|
86
|
-
if (["boolean"].includes(typeOfTargetVal)) {
|
|
87
|
-
if (defaultHandle === "intersect") {
|
|
88
|
-
actionOnEmptyIntersect(target, source, prependKey);
|
|
89
|
-
}
|
|
90
|
-
(0, set_js_1.default)(target, prependKey, sourceVal);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
const typeOfSourceVal = typeof sourceVal;
|
|
94
|
-
const isTargetSimple = ["string", "number"].includes(typeOfTargetVal);
|
|
95
|
-
const isSourceSimple = ["string", "number"].includes(typeOfSourceVal);
|
|
96
|
-
if (isTargetSimple || isSourceSimple) {
|
|
97
|
-
if (isTargetSimple && isSourceSimple) {
|
|
98
|
-
if (defaultHandle === "combine") {
|
|
99
|
-
(0, set_js_1.default)(target, prependKey, { $in: [...new Set([targetVal, sourceVal])] });
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
else if (defaultHandle === "intersect") {
|
|
103
|
-
actionOnEmptyIntersect(target, source, prependKey);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
throw new Error("should not reach here");
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
else if ((0, exports.hasOwnProperty)(targetVal, "$in") ||
|
|
110
|
-
(0, exports.hasOwnProperty)(sourceVal, "$in")) {
|
|
111
|
-
const targetHasIn = (0, exports.hasOwnProperty)(targetVal, "$in");
|
|
112
|
-
const $in = targetHasIn ? targetVal["$in"] : sourceVal["$in"];
|
|
113
|
-
const otherVal = isTargetSimple ? targetVal : sourceVal;
|
|
114
|
-
if ($in.length === 1 && (0, isEqual_js_1.default)($in[0], otherVal)) {
|
|
115
|
-
(0, set_js_1.default)(target, prependKey, otherVal);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
else if (defaultHandle === "combine") {
|
|
119
|
-
if (!$in.some((x) => (0, isEqual_js_1.default)(x, otherVal))) {
|
|
120
|
-
$in.push(otherVal);
|
|
121
|
-
}
|
|
122
|
-
(0, set_js_1.default)(target, `${prependKey}.$in`, $in);
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
else if (defaultHandle === "intersect") {
|
|
126
|
-
if ($in.some((x) => (0, isEqual_js_1.default)(x, otherVal))) {
|
|
127
|
-
(0, set_js_1.default)(target, prependKey, otherVal);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
actionOnEmptyIntersect(target, source, prependKey);
|
|
131
|
-
}
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
const isTargetArray = Array.isArray(targetVal);
|
|
138
|
-
const isSourceArray = Array.isArray(sourceVal);
|
|
139
|
-
if (isTargetArray && isSourceArray) {
|
|
140
|
-
const key = prependKey[prependKey.length - 1];
|
|
141
|
-
if (key === "$or") {
|
|
142
|
-
if (defaultHandle === "combine") {
|
|
143
|
-
const newVals = sourceVal.filter((x) => !targetVal.some((y) => (0, isEqual_js_1.default)(x, y)));
|
|
144
|
-
targetVal.push(...newVals);
|
|
145
|
-
}
|
|
146
|
-
else if (defaultHandle === "intersect") {
|
|
147
|
-
// combine into "$and"
|
|
148
|
-
const targetParent = getParentProp(target, prependKey);
|
|
149
|
-
const sourceParent = getParentProp(source, prependKey);
|
|
150
|
-
targetParent.$and = targetParent.$and || [];
|
|
151
|
-
targetParent.$and.push({ $or: targetVal }, { $or: sourceVal });
|
|
152
|
-
targetParent.$and = cleanAnd(targetParent.$and);
|
|
153
|
-
if (!targetParent.$and) {
|
|
154
|
-
delete targetParent.$and;
|
|
155
|
-
}
|
|
156
|
-
delete targetParent.$or;
|
|
157
|
-
delete sourceParent.$or;
|
|
158
|
-
handleCircular(target, source, [...prependKey, "$and"], options);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
else if (key === "$and") {
|
|
164
|
-
if (defaultHandle === "combine") {
|
|
165
|
-
// combine into "$or"
|
|
166
|
-
const targetParent = getParentProp(target, prependKey);
|
|
167
|
-
const sourceParent = getParentProp(source, prependKey);
|
|
168
|
-
targetParent.$or = targetParent.$or || [];
|
|
169
|
-
targetParent.$or.push({ $and: targetVal }, { $and: sourceVal });
|
|
170
|
-
targetParent.$or = cleanOr(targetParent.$or);
|
|
171
|
-
if (!targetParent.$or) {
|
|
172
|
-
delete targetParent.$or;
|
|
173
|
-
}
|
|
174
|
-
delete targetParent.$and;
|
|
175
|
-
delete sourceParent.$and;
|
|
176
|
-
handleCircular(target, source, [...prependKey, "$or"], options);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
else if (defaultHandle === "intersect") {
|
|
180
|
-
const newVals = sourceVal.filter((x) => !targetVal.some((y) => (0, isEqual_js_1.default)(x, y)));
|
|
181
|
-
targetVal.push(...newVals);
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
else if (key === "$in") {
|
|
186
|
-
if (defaultHandle === "combine") {
|
|
187
|
-
let $in = targetVal.concat(sourceVal);
|
|
188
|
-
$in = [...new Set($in)];
|
|
189
|
-
(0, set_js_1.default)(target, prependKey, $in);
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
else if (defaultHandle === "intersect") {
|
|
193
|
-
const $in = targetVal.filter((x) => sourceVal.some((y) => (0, isEqual_js_1.default)(x, y)));
|
|
194
|
-
if ($in.length === 0) {
|
|
195
|
-
actionOnEmptyIntersect(target, source, prependKey);
|
|
196
|
-
}
|
|
197
|
-
else if ($in.length === 1) {
|
|
198
|
-
(0, set_js_1.default)(target, prependKey.slice(0, -1), $in[0]);
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
(0, set_js_1.default)(target, prependKey, $in);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
(0, set_js_1.default)(target, prependKey, sourceVal);
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
if (typeOfTargetVal !== "object" || typeOfSourceVal !== "object") {
|
|
211
|
-
(0, set_js_1.default)(target, prependKey, sourceVal);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
// both are objects
|
|
215
|
-
const sourceKeys = Object.keys(sourceVal);
|
|
216
|
-
for (let i = 0, n = sourceKeys.length; i < n; i++) {
|
|
217
|
-
const key = sourceKeys[i];
|
|
218
|
-
handleCircular(target, source, [...prependKey, key], options);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
exports.handleCircular = handleCircular;
|
|
222
|
-
function makeDefaultOptions(options) {
|
|
223
|
-
options = options || {};
|
|
224
|
-
options.defaultHandle = options.defaultHandle || "combine";
|
|
225
|
-
options.useLogicalConjunction = Object.prototype.hasOwnProperty.call(options, "useLogicalConjunction")
|
|
226
|
-
? options.useLogicalConjunction
|
|
227
|
-
: false;
|
|
228
|
-
options.actionOnEmptyIntersect =
|
|
229
|
-
options.actionOnEmptyIntersect ||
|
|
230
|
-
(() => {
|
|
231
|
-
throw new errors_1.Forbidden("You're not allowed to make this request");
|
|
232
|
-
});
|
|
233
|
-
options.handle = options.handle || {};
|
|
234
|
-
if (options.defaultHandle === "intersect") {
|
|
235
|
-
options.handle.$select = options.handle.$select || "intersectOrFull";
|
|
236
|
-
}
|
|
237
|
-
return options;
|
|
238
|
-
}
|
|
239
|
-
exports.makeDefaultOptions = makeDefaultOptions;
|
|
240
|
-
function moveProperty(source, target, key) {
|
|
241
|
-
if (!Object.prototype.hasOwnProperty.call(source, key)) {
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
target[key] = source[key];
|
|
245
|
-
delete source[key];
|
|
246
|
-
}
|
|
247
|
-
exports.moveProperty = moveProperty;
|
|
248
|
-
function getParentProp(target, path) {
|
|
249
|
-
if (path.length <= 1) {
|
|
250
|
-
return target;
|
|
251
|
-
}
|
|
252
|
-
const pathOneUp = path.slice(0, -1);
|
|
253
|
-
return (0, get_js_1.default)(target, pathOneUp);
|
|
254
|
-
}
|
|
255
|
-
exports.getParentProp = getParentProp;
|
|
256
|
-
function cleanOr(target) {
|
|
257
|
-
if (!target || !Array.isArray(target) || target.length <= 0) {
|
|
258
|
-
return target;
|
|
259
|
-
}
|
|
260
|
-
if (target.some((x) => (0, isEmpty_js_1.default)(x))) {
|
|
261
|
-
return undefined;
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
return arrayWithoutDuplicates(target);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
exports.cleanOr = cleanOr;
|
|
268
|
-
function cleanAnd(target) {
|
|
269
|
-
if (!target || !Array.isArray(target) || target.length <= 0) {
|
|
270
|
-
return target;
|
|
271
|
-
}
|
|
272
|
-
if (target.every((x) => (0, isEmpty_js_1.default)(x))) {
|
|
273
|
-
return undefined;
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
target = target.filter((x) => !(0, isEmpty_js_1.default)(x));
|
|
277
|
-
return arrayWithoutDuplicates(target);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
exports.cleanAnd = cleanAnd;
|
|
281
|
-
function arrayWithoutDuplicates(target) {
|
|
282
|
-
if (!target || !Array.isArray(target)) {
|
|
283
|
-
return target;
|
|
284
|
-
}
|
|
285
|
-
return (0, uniqWith_js_1.default)(target, isEqual_js_1.default);
|
|
286
|
-
}
|
|
287
|
-
exports.arrayWithoutDuplicates = arrayWithoutDuplicates;
|
package/dist/utils/pushSet.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Path } from "../typesInternal";
|
|
2
|
-
export interface PushSetOptions {
|
|
3
|
-
unique?: boolean;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* util to push a value to an array at a given path in an object
|
|
7
|
-
*/
|
|
8
|
-
export declare const pushSet: (obj: Record<string, unknown>, path: string | Path, val: unknown, options?: PushSetOptions) => unknown[];
|
package/dist/utils/pushSet.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.pushSet = void 0;
|
|
7
|
-
const isEqual_js_1 = __importDefault(require("lodash/isEqual.js"));
|
|
8
|
-
const get_js_1 = __importDefault(require("lodash/get.js"));
|
|
9
|
-
const set_js_1 = __importDefault(require("lodash/set.js"));
|
|
10
|
-
/**
|
|
11
|
-
* util to push a value to an array at a given path in an object
|
|
12
|
-
*/
|
|
13
|
-
const pushSet = (obj, path, val, options) => {
|
|
14
|
-
options = options || {};
|
|
15
|
-
let arr = (0, get_js_1.default)(obj, path);
|
|
16
|
-
if (!arr || !Array.isArray(arr)) {
|
|
17
|
-
arr = [val];
|
|
18
|
-
(0, set_js_1.default)(obj, path, arr);
|
|
19
|
-
return arr;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
if (options.unique && arr.some((x) => (0, isEqual_js_1.default)(x, val))) {
|
|
23
|
-
return arr;
|
|
24
|
-
}
|
|
25
|
-
arr.push(val);
|
|
26
|
-
return arr;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
exports.pushSet = pushSet;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { HookContext } from "@feathersjs/feathers";
|
|
2
|
-
/**
|
|
3
|
-
* util to set `context.result` to an empty array or object, depending on the hook type
|
|
4
|
-
*/
|
|
5
|
-
export declare const setResultEmpty: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any> = HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(context: H) => H;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setResultEmpty = void 0;
|
|
4
|
-
const isMulti_1 = require("./isMulti");
|
|
5
|
-
const isPaginated_1 = require("./isPaginated");
|
|
6
|
-
/**
|
|
7
|
-
* util to set `context.result` to an empty array or object, depending on the hook type
|
|
8
|
-
*/
|
|
9
|
-
const setResultEmpty = (context) => {
|
|
10
|
-
if (context.result) {
|
|
11
|
-
return context;
|
|
12
|
-
}
|
|
13
|
-
const multi = (0, isMulti_1.isMulti)(context);
|
|
14
|
-
if (multi) {
|
|
15
|
-
if (context.method === "find" && (0, isPaginated_1.isPaginated)(context)) {
|
|
16
|
-
context.result = {
|
|
17
|
-
total: 0,
|
|
18
|
-
skip: 0,
|
|
19
|
-
limit: 0,
|
|
20
|
-
data: [],
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
context.result = [];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
context.result = null;
|
|
29
|
-
}
|
|
30
|
-
return context;
|
|
31
|
-
};
|
|
32
|
-
exports.setResultEmpty = setResultEmpty;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { HookContext } from "@feathersjs/feathers";
|
|
2
|
-
export type ShouldSkipOptions = {
|
|
3
|
-
notSkippable?: boolean;
|
|
4
|
-
};
|
|
5
|
-
/**
|
|
6
|
-
* util to detect if a hook should be skipped
|
|
7
|
-
*/
|
|
8
|
-
export declare const shouldSkip: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any> = HookContext<import("@feathersjs/feathers").Application<any, any>, any>, O extends ShouldSkipOptions = ShouldSkipOptions>(hookName: string, context: H, options?: O | undefined) => boolean;
|
package/dist/utils/shouldSkip.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Kudos to @DaddyWarbucks! This is a cheeky copy of his awesome library: 'feathers-fletching'.
|
|
3
|
-
// Definitely check it out! https://daddywarbucks.github.io/feathers-fletching/overview.html
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.shouldSkip = void 0;
|
|
6
|
-
const errors_1 = require("@feathersjs/errors");
|
|
7
|
-
/**
|
|
8
|
-
* util to detect if a hook should be skipped
|
|
9
|
-
*/
|
|
10
|
-
const shouldSkip = (hookName, context, options) => {
|
|
11
|
-
if (!context.params || !context.params.skipHooks || (options === null || options === void 0 ? void 0 : options.notSkippable)) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const { skipHooks } = context.params;
|
|
15
|
-
if (!Array.isArray(skipHooks)) {
|
|
16
|
-
throw new errors_1.GeneralError("The `skipHooks` param must be an Array of Strings");
|
|
17
|
-
}
|
|
18
|
-
const { type } = context;
|
|
19
|
-
if (skipHooks.includes(hookName)) {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
else if (skipHooks.includes("all")) {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
else if (skipHooks.includes(type)) {
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
else if (skipHooks.includes(`${type}:${hookName}`)) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
return false;
|
|
32
|
-
};
|
|
33
|
-
exports.shouldSkip = shouldSkip;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateQueryProperty = void 0;
|
|
4
|
-
const commons_1 = require("@feathersjs/commons");
|
|
5
|
-
const errors_1 = require("@feathersjs/errors");
|
|
6
|
-
const isPlainObject = (value) => commons_1._.isObject(value) && value.constructor === {}.constructor;
|
|
7
|
-
/**
|
|
8
|
-
* util to validate a query for operators
|
|
9
|
-
*/
|
|
10
|
-
const validateQueryProperty = (query, operators = []) => {
|
|
11
|
-
if (!isPlainObject(query)) {
|
|
12
|
-
return query;
|
|
13
|
-
}
|
|
14
|
-
for (const key of Object.keys(query)) {
|
|
15
|
-
if (key.startsWith("$") && !operators.includes(key)) {
|
|
16
|
-
throw new errors_1.BadRequest(`Invalid query parameter ${key}`, query);
|
|
17
|
-
}
|
|
18
|
-
const value = query[key];
|
|
19
|
-
if (isPlainObject(value)) {
|
|
20
|
-
query[key] = (0, exports.validateQueryProperty)(value, operators);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return Object.assign({}, query);
|
|
24
|
-
};
|
|
25
|
-
exports.validateQueryProperty = validateQueryProperty;
|