@mic-rexjs/usecases-react 2.10.3 → 2.11.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.min.js +1 -1
- package/es/hooks/useConstantEntityReducers/index.d.ts +3 -0
- package/es/hooks/useConstantEntityReducers/index.js +7 -0
- package/es/hooks/useConstantReducers/index.d.ts +3 -0
- package/es/hooks/useConstantReducers/index.js +6 -0
- package/es/hooks/useContextualItem/index.d.ts +2 -1
- package/es/hooks/useContextualItem/index.js +5 -3
- package/es/hooks/useDepsKey/index.js +2 -2
- package/es/hooks/useEntity/index.d.ts +2 -1
- package/es/hooks/useEntity/index.js +11 -3
- package/es/hooks/useFullArguments/types.d.ts +3 -3
- package/es/hooks/useRuntimeEntity/index.d.ts +2 -1
- package/es/hooks/useRuntimeEntity/index.js +4 -3
- package/es/hooks/useUseCase/index.js +13 -8
- package/es/hooks/useUseCase/index.test.js +60 -0
- package/es/hooks/useUseCase/types.d.ts +3 -3
- package/es/usecases/valueUseCase/index.js +45 -9
- package/es/usecases/valueUseCase/types.d.ts +5 -1
- package/lib/hooks/useConstantEntityReducers/index.js +13 -0
- package/lib/hooks/useConstantReducers/index.js +12 -0
- package/lib/hooks/useContextualItem/index.js +6 -4
- package/lib/hooks/useDepsKey/index.js +3 -3
- package/lib/hooks/useEntity/index.js +15 -4
- package/lib/hooks/useRuntimeEntity/index.js +6 -5
- package/lib/hooks/useUseCase/index.js +19 -11
- package/lib/hooks/useUseCase/index.test.js +152 -72
- package/lib/usecases/valueUseCase/index.js +71 -23
- package/package.json +1 -1
- package/es/hooks/useEntityReducers/index.d.ts +0 -4
- package/es/hooks/useEntityReducers/index.js +0 -18
- package/es/hooks/useReducers/index.d.ts +0 -4
- package/es/hooks/useReducers/index.js +0 -13
- package/es/methods/initEntityReducers/index.d.ts +0 -5
- package/es/methods/initEntityReducers/index.js +0 -11
- package/lib/hooks/useEntityReducers/index.js +0 -30
- package/lib/hooks/useReducers/index.js +0 -20
- package/lib/methods/initEntityReducers/index.js +0 -24
|
@@ -27,7 +27,7 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
|
|
|
27
27
|
var isValueChanged = function isValueChanged(entity, value) {
|
|
28
28
|
return entity !== value;
|
|
29
29
|
};
|
|
30
|
-
var isValueMatched = function isValueMatched(entity, value) {
|
|
30
|
+
var isValueMatched = function isValueMatched(entity, value, onMatchFailed) {
|
|
31
31
|
if (entity === value) {
|
|
32
32
|
return true;
|
|
33
33
|
}
|
|
@@ -36,23 +36,39 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
|
|
|
36
36
|
if (!isObject1 || !isObject2) {
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
|
+
var allMatched = true;
|
|
39
40
|
var keys1 = Object.keys(entity);
|
|
40
41
|
var keys2 = Object.keys(value);
|
|
41
42
|
var length1 = keys1.length;
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var
|
|
43
|
+
var keys = [].concat(keys1, keys2);
|
|
44
|
+
var hasCallback = typeof onMatchFailed === 'function';
|
|
45
|
+
for (var i = 0, length = keys.length; i < length; i++) {
|
|
46
|
+
var key = keys[i];
|
|
47
|
+
var isFromKeys2 = i >= length1;
|
|
48
|
+
var isInKey1 = keys1.includes(key);
|
|
49
|
+
var isUsed = isFromKeys2 && isInKey1;
|
|
50
|
+
if (isUsed) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
var hasField1 = Object.hasOwn(entity, key);
|
|
54
|
+
var hasField2 = Object.hasOwn(value, key);
|
|
55
|
+
var onlyHasField1 = hasField1 && !hasField2;
|
|
56
|
+
var onlyHasField2 = !hasField1 && hasField2;
|
|
57
|
+
var onlyHasOneField = onlyHasField1 || onlyHasField2;
|
|
48
58
|
var value1 = entity[key];
|
|
49
59
|
var value2 = value[key];
|
|
50
|
-
|
|
60
|
+
var matched = value1 === value2;
|
|
61
|
+
if (!onlyHasOneField && matched) {
|
|
51
62
|
continue;
|
|
52
63
|
}
|
|
53
|
-
|
|
64
|
+
allMatched = false;
|
|
65
|
+
if (hasCallback) {
|
|
66
|
+
onMatchFailed(key, value2, value1);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
54
70
|
}
|
|
55
|
-
return
|
|
71
|
+
return allMatched;
|
|
56
72
|
};
|
|
57
73
|
var matchProperty = function matchProperty(entity, value, fieldPath, onFailed) {
|
|
58
74
|
var allMatched = true;
|
|
@@ -141,25 +157,56 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
|
|
|
141
157
|
}
|
|
142
158
|
}, recordValue);
|
|
143
159
|
});
|
|
144
|
-
var
|
|
145
|
-
var matched;
|
|
160
|
+
var recordValueDiff = /*#__PURE__*/_regenerator["default"].mark(function recordValueDiff(entity, value) {
|
|
161
|
+
var isArray1, isArray2, isArray, result, length1, length2, matched;
|
|
146
162
|
return _regenerator["default"].wrap(function (_context2) {
|
|
147
163
|
while (1) switch (_context2.prev = _context2.next) {
|
|
164
|
+
case 0:
|
|
165
|
+
isArray1 = Array.isArray(entity);
|
|
166
|
+
isArray2 = Array.isArray(value);
|
|
167
|
+
isArray = isArray1 && isArray2;
|
|
168
|
+
result = isArray ? [] : {};
|
|
169
|
+
if (isArray) {
|
|
170
|
+
length1 = entity.length;
|
|
171
|
+
length2 = value.length;
|
|
172
|
+
result.length = Math.max(length1, length2);
|
|
173
|
+
}
|
|
174
|
+
matched = isValueMatched(entity, value, function (key, newValue) {
|
|
175
|
+
result[key] = newValue;
|
|
176
|
+
});
|
|
177
|
+
if (matched) {
|
|
178
|
+
_context2.next = 1;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
_context2.next = 1;
|
|
182
|
+
return value;
|
|
183
|
+
case 1:
|
|
184
|
+
return _context2.abrupt("return", result);
|
|
185
|
+
case 2:
|
|
186
|
+
case "end":
|
|
187
|
+
return _context2.stop();
|
|
188
|
+
}
|
|
189
|
+
}, recordValueDiff);
|
|
190
|
+
});
|
|
191
|
+
var recordValueMatch = /*#__PURE__*/_regenerator["default"].mark(function recordValueMatch(entity, value) {
|
|
192
|
+
var matched;
|
|
193
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
194
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
148
195
|
case 0:
|
|
149
196
|
matched = isValueMatched(entity, value);
|
|
150
197
|
if (!matched) {
|
|
151
|
-
|
|
198
|
+
_context3.next = 1;
|
|
152
199
|
break;
|
|
153
200
|
}
|
|
154
|
-
return
|
|
201
|
+
return _context3.abrupt("return", true);
|
|
155
202
|
case 1:
|
|
156
|
-
|
|
203
|
+
_context3.next = 2;
|
|
157
204
|
return value;
|
|
158
205
|
case 2:
|
|
159
|
-
return
|
|
206
|
+
return _context3.abrupt("return", false);
|
|
160
207
|
case 3:
|
|
161
208
|
case "end":
|
|
162
|
-
return
|
|
209
|
+
return _context3.stop();
|
|
163
210
|
}
|
|
164
211
|
}, recordValueMatch);
|
|
165
212
|
});
|
|
@@ -167,21 +214,21 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
|
|
|
167
214
|
var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : keyIndex + 1;
|
|
168
215
|
return /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
169
216
|
var matched;
|
|
170
|
-
return _regenerator["default"].wrap(function (
|
|
171
|
-
while (1) switch (
|
|
217
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
218
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
172
219
|
case 0:
|
|
173
|
-
return
|
|
220
|
+
return _context4.delegateYield(recordValueMatch(entity, value), "t0", 1);
|
|
174
221
|
case 1:
|
|
175
|
-
matched =
|
|
222
|
+
matched = _context4.t0;
|
|
176
223
|
if (!matched) {
|
|
177
224
|
// 不管是不是使用 `keyIndex` 生成的 `key`,都自增一次,如果是,则可以保持一致
|
|
178
225
|
keyIndex++;
|
|
179
226
|
prevKeyIndex = key;
|
|
180
227
|
}
|
|
181
|
-
return
|
|
228
|
+
return _context4.abrupt("return", prevKeyIndex);
|
|
182
229
|
case 2:
|
|
183
230
|
case "end":
|
|
184
|
-
return
|
|
231
|
+
return _context4.stop();
|
|
185
232
|
}
|
|
186
233
|
}, _callee);
|
|
187
234
|
})();
|
|
@@ -191,6 +238,7 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
|
|
|
191
238
|
isValueMatched: isValueMatched,
|
|
192
239
|
matchProperty: matchProperty,
|
|
193
240
|
recordValue: recordValue,
|
|
241
|
+
recordValueDiff: recordValueDiff,
|
|
194
242
|
recordValueMatch: recordValueMatch,
|
|
195
243
|
recordValueMatchWith: recordValueMatchWith
|
|
196
244
|
});
|
package/package.json
CHANGED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { CreateEntityReducersOptions, ScopedEntityReducers } from '@mic-rexjs/usecases/es/methods/createEntityReducers/types';
|
|
2
|
-
import { EntityReducerMap, EntityReducers, InferableEntityUseCase } from '@mic-rexjs/usecases/es/types';
|
|
3
|
-
import { Dependencies } from '../../types';
|
|
4
|
-
export declare const useEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(initailEntity: T, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: CreateEntityReducersOptions<T, TUseCaseOptions>, deps?: Dependencies) => ScopedEntityReducers<T, EntityReducers<T, TEntityReducers>>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { useConstant } from '../useConstant';
|
|
2
|
-
import { createEntityReducers } from '@mic-rexjs/usecases';
|
|
3
|
-
import { useCreation, useMemoizedFn } from 'ahooks';
|
|
4
|
-
import { valueUseCase } from '../../usecases/valueUseCase';
|
|
5
|
-
export const useEntityReducers = (initailEntity, usecase, options, deps = []) => {
|
|
6
|
-
const { recordValueMatchWith } = useConstant(() => {
|
|
7
|
-
return createEntityReducers(deps, valueUseCase);
|
|
8
|
-
});
|
|
9
|
-
const [, depsKey] = recordValueMatchWith(deps);
|
|
10
|
-
const onCreate = useMemoizedFn(() => {
|
|
11
|
-
return createEntityReducers(initailEntity, usecase, options);
|
|
12
|
-
});
|
|
13
|
-
return useCreation(() => {
|
|
14
|
-
void depsKey;
|
|
15
|
-
void usecase;
|
|
16
|
-
return onCreate();
|
|
17
|
-
}, [depsKey, usecase, onCreate]);
|
|
18
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { NonEntitySymbolSet } from '../useUseCase/types';
|
|
2
|
-
import { ReducerMap, SymbolSetTarget, UseCase } from '@mic-rexjs/usecases/es/types';
|
|
3
|
-
import { Dependencies } from '../../types';
|
|
4
|
-
export declare const useReducers: <T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?: Dependencies) => T;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { useDepsKey } from '../useDepsKey';
|
|
2
|
-
import { useCreation, useMemoizedFn } from 'ahooks';
|
|
3
|
-
export const useReducers = (usecase, options, deps = []) => {
|
|
4
|
-
const depsKey = useDepsKey(deps);
|
|
5
|
-
const onCreate = useMemoizedFn(() => {
|
|
6
|
-
return usecase(options);
|
|
7
|
-
});
|
|
8
|
-
return useCreation(() => {
|
|
9
|
-
void depsKey;
|
|
10
|
-
void usecase;
|
|
11
|
-
return onCreate();
|
|
12
|
-
}, [depsKey, usecase, onCreate]);
|
|
13
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { UseCaseHookOptions } from '../../hooks/useUseCase/types';
|
|
2
|
-
import { EntityStore } from '@mic-rexjs/usecases';
|
|
3
|
-
import { EntityReducerMap, InferableEntityUseCase } from '@mic-rexjs/usecases/es/types';
|
|
4
|
-
import { ContextualEntityReducers } from '../../usecases/contextUseCase/types';
|
|
5
|
-
export declare const initEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(usecase: InferableEntityUseCase<T, TEntityReducers, TUseCaseOptions>, store: EntityStore<T>, options: UseCaseHookOptions<T, TUseCaseOptions>) => ContextualEntityReducers<T, TEntityReducers>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createEntityReducers } from '@mic-rexjs/usecases';
|
|
2
|
-
export const initEntityReducers = (usecase, store, options) => {
|
|
3
|
-
const { watch, onChange, options: usecaseOptions, ...restUseCaseOptions } = options;
|
|
4
|
-
return createEntityReducers(store, usecase, {
|
|
5
|
-
...restUseCaseOptions,
|
|
6
|
-
...usecaseOptions,
|
|
7
|
-
onGenerate(newEntity, result) {
|
|
8
|
-
return result;
|
|
9
|
-
},
|
|
10
|
-
});
|
|
11
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.useEntityReducers = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _useConstant2 = require("../useConstant");
|
|
10
|
-
var _usecases = require("@mic-rexjs/usecases");
|
|
11
|
-
var _ahooks = require("ahooks");
|
|
12
|
-
var _valueUseCase = require("../../usecases/valueUseCase");
|
|
13
|
-
var useEntityReducers = exports.useEntityReducers = function useEntityReducers(initailEntity, usecase, options) {
|
|
14
|
-
var deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
15
|
-
var _useConstant = (0, _useConstant2.useConstant)(function () {
|
|
16
|
-
return (0, _usecases.createEntityReducers)(deps, _valueUseCase.valueUseCase);
|
|
17
|
-
}),
|
|
18
|
-
recordValueMatchWith = _useConstant.recordValueMatchWith;
|
|
19
|
-
var _recordValueMatchWith = recordValueMatchWith(deps),
|
|
20
|
-
_recordValueMatchWith2 = (0, _slicedToArray2["default"])(_recordValueMatchWith, 2),
|
|
21
|
-
depsKey = _recordValueMatchWith2[1];
|
|
22
|
-
var onCreate = (0, _ahooks.useMemoizedFn)(function () {
|
|
23
|
-
return (0, _usecases.createEntityReducers)(initailEntity, usecase, options);
|
|
24
|
-
});
|
|
25
|
-
return (0, _ahooks.useCreation)(function () {
|
|
26
|
-
void depsKey;
|
|
27
|
-
void usecase;
|
|
28
|
-
return onCreate();
|
|
29
|
-
}, [depsKey, usecase, onCreate]);
|
|
30
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useReducers = void 0;
|
|
7
|
-
var _useDepsKey = require("../useDepsKey");
|
|
8
|
-
var _ahooks = require("ahooks");
|
|
9
|
-
var useReducers = exports.useReducers = function useReducers(usecase, options) {
|
|
10
|
-
var deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
11
|
-
var depsKey = (0, _useDepsKey.useDepsKey)(deps);
|
|
12
|
-
var onCreate = (0, _ahooks.useMemoizedFn)(function () {
|
|
13
|
-
return usecase(options);
|
|
14
|
-
});
|
|
15
|
-
return (0, _ahooks.useCreation)(function () {
|
|
16
|
-
void depsKey;
|
|
17
|
-
void usecase;
|
|
18
|
-
return onCreate();
|
|
19
|
-
}, [depsKey, usecase, onCreate]);
|
|
20
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.initEntityReducers = void 0;
|
|
8
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
|
-
var _usecases = require("@mic-rexjs/usecases");
|
|
11
|
-
var _excluded = ["watch", "onChange", "options"];
|
|
12
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
-
var initEntityReducers = exports.initEntityReducers = function initEntityReducers(usecase, store, options) {
|
|
15
|
-
var watch = options.watch,
|
|
16
|
-
onChange = options.onChange,
|
|
17
|
-
usecaseOptions = options.options,
|
|
18
|
-
restUseCaseOptions = (0, _objectWithoutProperties2["default"])(options, _excluded);
|
|
19
|
-
return (0, _usecases.createEntityReducers)(store, usecase, _objectSpread(_objectSpread(_objectSpread({}, restUseCaseOptions), usecaseOptions), {}, {
|
|
20
|
-
onGenerate: function onGenerate(newEntity, result) {
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
}));
|
|
24
|
-
};
|