@mic-rexjs/usecases-react 3.3.0 → 3.6.2
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/dist/index.min.js.LICENSE.txt +0 -2
- package/es/components/RenderingEventTrigger/index.d.ts +2 -0
- package/es/components/RenderingEventTrigger/index.js +7 -0
- package/es/components/RenderingEventTrigger/types.d.ts +3 -0
- package/es/hooks/useContextualItem/index.js +2 -3
- package/es/hooks/useDepsKey/index.js +19 -9
- package/es/hooks/useEntity/index.d.ts +1 -4
- package/es/hooks/useEntity/index.js +59 -50
- package/es/hooks/useEntityInitializing/index.d.ts +2 -0
- package/es/hooks/useEntityInitializing/index.js +16 -0
- package/es/hooks/useExec/index.d.ts +2 -1
- package/es/hooks/useExec/index.js +3 -3
- package/es/hooks/useExec/types.d.ts +3 -0
- package/es/hooks/useProvider/index.d.ts +1 -1
- package/es/hooks/useProvider/index.js +5 -2
- package/es/hooks/useReducers/index.js +8 -6
- package/es/hooks/useStore/index.d.ts +1 -2
- package/es/hooks/useStore/index.js +55 -69
- package/es/hooks/useUseCase/index.js +5 -6
- package/es/hooks/useUseCase/index.test.js +92 -35
- package/es/index.d.ts +2 -2
- package/es/index.js +1 -1
- package/es/methods/runEntityInitializer/index.d.ts +3 -0
- package/es/methods/runEntityInitializer/index.js +67 -0
- package/es/methods/triggerWatchers/index.js +3 -3
- package/es/usecases/lifecycleEventUseCase/index.d.ts +3 -0
- package/es/usecases/lifecycleEventUseCase/index.js +34 -0
- package/es/usecases/lifecycleEventUseCase/types.d.ts +36 -0
- package/es/usecases/lifecycleEventUseCase/types.js +1 -0
- package/es/usecases/lifecycleUseCase/index.d.ts +2 -0
- package/es/usecases/lifecycleUseCase/index.js +21 -0
- package/es/usecases/lifecycleUseCase/types.d.ts +5 -0
- package/es/usecases/lifecycleUseCase/types.js +1 -0
- package/es/usecases/methodUseCase/index.js +4 -4
- package/es/usecases/objectUtilsUseCase/index.d.ts +2 -0
- package/es/usecases/objectUtilsUseCase/index.js +131 -0
- package/es/usecases/objectUtilsUseCase/types.d.ts +14 -0
- package/es/usecases/objectUtilsUseCase/types.js +1 -0
- package/lib/components/RenderingEventTrigger/index.js +13 -0
- package/lib/hooks/useContextualItem/index.js +3 -4
- package/lib/hooks/useDepsKey/index.js +19 -10
- package/lib/hooks/useEntity/index.js +59 -50
- package/lib/hooks/useEntityInitializing/index.js +22 -0
- package/lib/hooks/useExec/index.js +3 -3
- package/lib/hooks/useProvider/index.js +5 -2
- package/lib/hooks/useReducers/index.js +9 -7
- package/lib/hooks/useStore/index.js +54 -67
- package/lib/hooks/useUseCase/index.js +6 -7
- package/lib/hooks/useUseCase/index.test.js +86 -35
- package/lib/index.js +3 -3
- package/lib/methods/runEntityInitializer/index.js +73 -0
- package/lib/methods/triggerWatchers/index.js +3 -3
- package/lib/usecases/lifecycleEventUseCase/index.js +40 -0
- package/lib/usecases/lifecycleEventUseCase/types.js +5 -0
- package/lib/usecases/{lifeCycleUseCase → lifecycleUseCase}/index.js +14 -12
- package/lib/usecases/lifecycleUseCase/types.js +5 -0
- package/lib/usecases/methodUseCase/index.js +4 -4
- package/lib/usecases/objectUtilsUseCase/index.js +140 -0
- package/lib/usecases/objectUtilsUseCase/types.js +5 -0
- package/package.json +3 -3
- package/es/usecases/lifeCycleUseCase/index.d.ts +0 -2
- package/es/usecases/lifeCycleUseCase/index.js +0 -18
- package/es/usecases/lifeCycleUseCase/types.d.ts +0 -9
- package/es/usecases/valueUseCase/index.d.ts +0 -2
- package/es/usecases/valueUseCase/index.js +0 -168
- package/es/usecases/valueUseCase/types.d.ts +0 -21
- package/lib/usecases/valueUseCase/index.js +0 -219
- /package/es/{usecases/lifeCycleUseCase → components/RenderingEventTrigger}/types.js +0 -0
- /package/es/{usecases/valueUseCase → hooks/useExec}/types.js +0 -0
- /package/lib/{usecases/lifeCycleUseCase → components/RenderingEventTrigger}/types.js +0 -0
- /package/lib/{usecases/valueUseCase → hooks/useExec}/types.js +0 -0
|
@@ -10,7 +10,6 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
11
|
var _useArgumentTypes = require("../useArgumentTypes");
|
|
12
12
|
var _useConstantFn = require("../useConstantFn");
|
|
13
|
-
var _useConstantReducers2 = require("../useConstantReducers");
|
|
14
13
|
var _useContext = require("../useContext");
|
|
15
14
|
var _useEntity = require("../useEntity");
|
|
16
15
|
var _useFullArguments = require("../useFullArguments");
|
|
@@ -21,7 +20,7 @@ var _useStatuses = require("../useStatuses");
|
|
|
21
20
|
var _useStore = require("../useStore");
|
|
22
21
|
var _ahooks = require("ahooks");
|
|
23
22
|
var _Statuses = require("../../enums/Statuses");
|
|
24
|
-
var
|
|
23
|
+
var _methodUseCase2 = require("../../usecases/methodUseCase");
|
|
25
24
|
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; }
|
|
26
25
|
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; }
|
|
27
26
|
var useUseCase = exports.useUseCase = function useUseCase() {
|
|
@@ -36,20 +35,20 @@ var useUseCase = exports.useUseCase = function useUseCase() {
|
|
|
36
35
|
unsafeUsecase = _fullArguments[1],
|
|
37
36
|
options = _fullArguments[2],
|
|
38
37
|
deps = _fullArguments[3];
|
|
39
|
-
var _useConstantReducers = (0, _useConstantReducers2.useConstantReducers)(_methodUseCase.methodUseCase),
|
|
40
|
-
cacheCalls = _useConstantReducers.cacheCalls;
|
|
41
38
|
var usecase = (0, _useConstantFn.useConstantFn)(unsafeUsecase);
|
|
42
39
|
var context = (0, _useContext.useContext)(usecase, argumentTypes);
|
|
43
40
|
var entityContext = context;
|
|
44
41
|
var statuses = (0, _useStatuses.useStatuses)(context, argumentTypes);
|
|
45
|
-
var store = (0, _useStore.useStore)(unsafeEntity, entityContext, statuses,
|
|
42
|
+
var store = (0, _useStore.useStore)(unsafeEntity, entityContext, statuses, deps);
|
|
46
43
|
var reducers = (0, _useReducers.useReducers)(usecase, context, store, statuses, options, deps);
|
|
47
|
-
var entity = (0, _useEntity.useEntity)(
|
|
44
|
+
var entity = (0, _useEntity.useEntity)(store, statuses, options);
|
|
48
45
|
var Provider = (0, _useProvider.useProvider)(statuses, context, store, reducers);
|
|
49
46
|
return (0, _ahooks.useCreation)(function () {
|
|
50
47
|
if ((statuses & _Statuses.Statuses.EntityEnabled) !== _Statuses.Statuses.EntityEnabled) {
|
|
51
48
|
return reducers;
|
|
52
49
|
}
|
|
50
|
+
var _methodUseCase = (0, _methodUseCase2.methodUseCase)(),
|
|
51
|
+
cacheCalls = _methodUseCase.cacheCalls;
|
|
53
52
|
var cachedReducers = cacheCalls(reducers, {
|
|
54
53
|
onShouldCache: function onShouldCache() {
|
|
55
54
|
return isRenderingRef.current;
|
|
@@ -62,5 +61,5 @@ var useUseCase = exports.useUseCase = function useUseCase() {
|
|
|
62
61
|
// 这里是为了让访问器 `getter` 的值保持唯一性,否则每次 `getter` 返回的对象都是新对象,无法用于 `deps`
|
|
63
62
|
var newEntity = isObjectEntity ? _objectSpread({}, entity) : entity;
|
|
64
63
|
return [newEntity, cachedReducers, Provider];
|
|
65
|
-
}, [statuses, entity, reducers, Provider, isRenderingRef
|
|
64
|
+
}, [statuses, entity, reducers, Provider, isRenderingRef]);
|
|
66
65
|
};
|
|
@@ -19,6 +19,7 @@ var _react = require("@testing-library/react");
|
|
|
19
19
|
var _ahooks = require("ahooks");
|
|
20
20
|
var _react2 = require("react");
|
|
21
21
|
var _reactDom = require("react-dom");
|
|
22
|
+
var _lifecycleUseCase = require("../../usecases/lifecycleUseCase");
|
|
22
23
|
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; }
|
|
23
24
|
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; }
|
|
24
25
|
function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
@@ -2025,15 +2026,15 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2025
2026
|
(0, _globals.expect)(onStringMount).toHaveBeenCalledWith('hello');
|
|
2026
2027
|
(0, _globals.expect)(onBooleanMount).toHaveBeenCalledWith(true);
|
|
2027
2028
|
});
|
|
2028
|
-
(0, _globals.test)('`
|
|
2029
|
-
var
|
|
2029
|
+
(0, _globals.test)('`onBind` event should be called when component mount', function () {
|
|
2030
|
+
var onBind = _globals.jest.fn(function (entity) {
|
|
2030
2031
|
void entity;
|
|
2031
2032
|
});
|
|
2032
2033
|
var testUseCase = function testUseCase() {
|
|
2033
|
-
var
|
|
2034
|
-
|
|
2035
|
-
bindEntity: bindEntity
|
|
2034
|
+
var lifecycleReducers = (0, _lifecycleUseCase.lifecycleUseCase)({
|
|
2035
|
+
onBind: onBind
|
|
2036
2036
|
});
|
|
2037
|
+
return _objectSpread({}, lifecycleReducers);
|
|
2037
2038
|
};
|
|
2038
2039
|
(0, _react.renderHook)(function () {
|
|
2039
2040
|
var _useUseCase24 = (0, _.useUseCase)(5, testUseCase),
|
|
@@ -2043,20 +2044,70 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2043
2044
|
setEntity(100);
|
|
2044
2045
|
});
|
|
2045
2046
|
});
|
|
2046
|
-
(0, _globals.expect)(
|
|
2047
|
-
(0, _globals.expect)(
|
|
2047
|
+
(0, _globals.expect)(onBind).toHaveBeenCalledTimes(1);
|
|
2048
|
+
(0, _globals.expect)(onBind).toHaveBeenCalledWith(5);
|
|
2048
2049
|
});
|
|
2049
|
-
(0, _globals.test)('`
|
|
2050
|
-
var
|
|
2051
|
-
void
|
|
2050
|
+
(0, _globals.test)('`onChange` event should be called when entity change', function () {
|
|
2051
|
+
var onChange = _globals.jest.fn(function (newEntity, oldEntity) {
|
|
2052
|
+
void newEntity;
|
|
2053
|
+
void oldEntity;
|
|
2052
2054
|
});
|
|
2053
2055
|
var testUseCase = function testUseCase() {
|
|
2054
|
-
var
|
|
2055
|
-
|
|
2056
|
-
unbindEntity: unbindEntity
|
|
2056
|
+
var lifecycleReducers = (0, _lifecycleUseCase.lifecycleUseCase)({
|
|
2057
|
+
onChange: onChange
|
|
2057
2058
|
});
|
|
2059
|
+
return _objectSpread({}, lifecycleReducers);
|
|
2058
2060
|
};
|
|
2059
2061
|
var _renderHook37 = (0, _react.renderHook)(function () {
|
|
2062
|
+
return (0, _.useUseCase)(5, testUseCase);
|
|
2063
|
+
}),
|
|
2064
|
+
result = _renderHook37.result;
|
|
2065
|
+
var current = result.current;
|
|
2066
|
+
var _current8 = (0, _slicedToArray2["default"])(current, 2),
|
|
2067
|
+
setEntity = _current8[1].setEntity;
|
|
2068
|
+
(0, _globals.expect)(onChange).toHaveBeenCalledTimes(0);
|
|
2069
|
+
(0, _react.act)(function () {
|
|
2070
|
+
setEntity(100);
|
|
2071
|
+
});
|
|
2072
|
+
(0, _globals.expect)(onChange).toHaveBeenCalledTimes(1);
|
|
2073
|
+
(0, _globals.expect)(onChange).toHaveBeenCalledWith(100, 5);
|
|
2074
|
+
});
|
|
2075
|
+
(0, _globals.test)('`onUpdate` event should be called when entity change', function () {
|
|
2076
|
+
var onUpdate = _globals.jest.fn(function (newEntity, oldEntity) {
|
|
2077
|
+
void newEntity;
|
|
2078
|
+
void oldEntity;
|
|
2079
|
+
});
|
|
2080
|
+
var testUseCase = function testUseCase() {
|
|
2081
|
+
var lifecycleReducers = (0, _lifecycleUseCase.lifecycleUseCase)({
|
|
2082
|
+
onUpdate: onUpdate
|
|
2083
|
+
});
|
|
2084
|
+
return _objectSpread({}, lifecycleReducers);
|
|
2085
|
+
};
|
|
2086
|
+
var _renderHook38 = (0, _react.renderHook)(function () {
|
|
2087
|
+
return (0, _.useUseCase)(5, testUseCase);
|
|
2088
|
+
}),
|
|
2089
|
+
result = _renderHook38.result;
|
|
2090
|
+
var current = result.current;
|
|
2091
|
+
var _current9 = (0, _slicedToArray2["default"])(current, 2),
|
|
2092
|
+
setEntity = _current9[1].setEntity;
|
|
2093
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2094
|
+
(0, _react.act)(function () {
|
|
2095
|
+
setEntity(100);
|
|
2096
|
+
});
|
|
2097
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
|
|
2098
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledWith(100, 5);
|
|
2099
|
+
});
|
|
2100
|
+
(0, _globals.test)('`onUnbind` event should be called when component unmount', function () {
|
|
2101
|
+
var onUnbind = _globals.jest.fn(function (entity) {
|
|
2102
|
+
void entity;
|
|
2103
|
+
});
|
|
2104
|
+
var testUseCase = function testUseCase() {
|
|
2105
|
+
var lifecycleReducers = (0, _lifecycleUseCase.lifecycleUseCase)({
|
|
2106
|
+
onUnbind: onUnbind
|
|
2107
|
+
});
|
|
2108
|
+
return _objectSpread({}, lifecycleReducers);
|
|
2109
|
+
};
|
|
2110
|
+
var _renderHook39 = (0, _react.renderHook)(function () {
|
|
2060
2111
|
var _useUseCase26 = (0, _.useUseCase)(5, testUseCase),
|
|
2061
2112
|
_useUseCase27 = (0, _slicedToArray2["default"])(_useUseCase26, 2),
|
|
2062
2113
|
setEntity = _useUseCase27[1].setEntity;
|
|
@@ -2064,11 +2115,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2064
2115
|
setEntity(100);
|
|
2065
2116
|
});
|
|
2066
2117
|
}),
|
|
2067
|
-
unmount =
|
|
2068
|
-
(0, _globals.expect)(
|
|
2118
|
+
unmount = _renderHook39.unmount;
|
|
2119
|
+
(0, _globals.expect)(onUnbind).toHaveBeenCalledTimes(0);
|
|
2069
2120
|
unmount();
|
|
2070
|
-
(0, _globals.expect)(
|
|
2071
|
-
(0, _globals.expect)(
|
|
2121
|
+
(0, _globals.expect)(onUnbind).toHaveBeenCalledTimes(1);
|
|
2122
|
+
(0, _globals.expect)(onUnbind).toHaveBeenCalledWith(100);
|
|
2072
2123
|
});
|
|
2073
2124
|
});
|
|
2074
2125
|
(0, _globals.describe)('`useUseCase` should work the same as `useContextualCoreCollection`', function () {
|
|
@@ -2618,38 +2669,38 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2618
2669
|
});
|
|
2619
2670
|
(0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
|
|
2620
2671
|
(0, _globals.test)('`entity` should equal `defaultFile`', function () {
|
|
2621
|
-
var
|
|
2672
|
+
var _renderHook40 = (0, _react.renderHook)(function () {
|
|
2622
2673
|
return (0, _.useUseCase)(mathUseCase);
|
|
2623
2674
|
}),
|
|
2624
|
-
result =
|
|
2675
|
+
result = _renderHook40.result;
|
|
2625
2676
|
var reducers = result.current;
|
|
2626
2677
|
(0, _globals.expect)(Array.isArray(reducers)).toBe(false);
|
|
2627
2678
|
});
|
|
2628
2679
|
(0, _globals.test)('returned reducer should work', function () {
|
|
2629
|
-
var
|
|
2680
|
+
var _renderHook41 = (0, _react.renderHook)(function () {
|
|
2630
2681
|
return (0, _.useUseCase)(mathUseCase);
|
|
2631
2682
|
}),
|
|
2632
|
-
result =
|
|
2683
|
+
result = _renderHook41.result;
|
|
2633
2684
|
var reducers = result.current;
|
|
2634
2685
|
var add = reducers.add;
|
|
2635
2686
|
(0, _globals.expect)(add(1, 2)).toBe(3);
|
|
2636
2687
|
});
|
|
2637
2688
|
(0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
|
|
2638
2689
|
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
2639
|
-
var
|
|
2690
|
+
var _renderHook42 = (0, _react.renderHook)(function () {
|
|
2640
2691
|
return (0, _.useUseCase)(mockUseCase);
|
|
2641
2692
|
}),
|
|
2642
|
-
rerender =
|
|
2693
|
+
rerender = _renderHook42.rerender;
|
|
2643
2694
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2644
2695
|
rerender();
|
|
2645
2696
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2646
2697
|
});
|
|
2647
2698
|
(0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
|
|
2648
2699
|
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
2649
|
-
var
|
|
2700
|
+
var _renderHook43 = (0, _react.renderHook)(function () {
|
|
2650
2701
|
return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
|
|
2651
2702
|
}),
|
|
2652
|
-
rerender =
|
|
2703
|
+
rerender = _renderHook43.rerender;
|
|
2653
2704
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2654
2705
|
rerender();
|
|
2655
2706
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
@@ -2657,10 +2708,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2657
2708
|
(0, _globals.test)('`usecase` should be called if deps has changed', function () {
|
|
2658
2709
|
var i = 0;
|
|
2659
2710
|
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
2660
|
-
var
|
|
2711
|
+
var _renderHook44 = (0, _react.renderHook)(function () {
|
|
2661
2712
|
return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
|
|
2662
2713
|
}),
|
|
2663
|
-
rerender =
|
|
2714
|
+
rerender = _renderHook44.rerender;
|
|
2664
2715
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2665
2716
|
rerender();
|
|
2666
2717
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
|
|
@@ -2744,12 +2795,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2744
2795
|
(0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
|
|
2745
2796
|
});
|
|
2746
2797
|
(0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
|
|
2747
|
-
var
|
|
2798
|
+
var _renderHook45 = (0, _react.renderHook)(function () {
|
|
2748
2799
|
return (0, _.useUseCase)(mathUseCase, {
|
|
2749
2800
|
extraValue: 5
|
|
2750
2801
|
});
|
|
2751
2802
|
}),
|
|
2752
|
-
result =
|
|
2803
|
+
result = _renderHook45.result;
|
|
2753
2804
|
var reducers = result.current;
|
|
2754
2805
|
var add = reducers.add;
|
|
2755
2806
|
(0, _globals.expect)(add(1, 2)).toBe(8);
|
|
@@ -2757,7 +2808,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2757
2808
|
(0, _globals.test)('when `options` has changed, it should not trigger update', function () {
|
|
2758
2809
|
var onUpdate = _globals.jest.fn();
|
|
2759
2810
|
var onDeepUpdate = _globals.jest.fn();
|
|
2760
|
-
var
|
|
2811
|
+
var _renderHook46 = (0, _react.renderHook)(function () {
|
|
2761
2812
|
var _useState7 = (0, _react2.useState)(0),
|
|
2762
2813
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
2763
2814
|
extraValue = _useState8[0],
|
|
@@ -2773,7 +2824,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2773
2824
|
}, [reducers]);
|
|
2774
2825
|
return setExtraValue;
|
|
2775
2826
|
}),
|
|
2776
|
-
result =
|
|
2827
|
+
result = _renderHook46.result;
|
|
2777
2828
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2778
2829
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2779
2830
|
(0, _react.act)(function () {
|
|
@@ -2785,7 +2836,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2785
2836
|
(0, _globals.test)('when `deps` change, it should update reducers', function () {
|
|
2786
2837
|
var onUpdate = _globals.jest.fn();
|
|
2787
2838
|
var onDeepUpdate = _globals.jest.fn();
|
|
2788
|
-
var
|
|
2839
|
+
var _renderHook47 = (0, _react.renderHook)(function () {
|
|
2789
2840
|
var _useState9 = (0, _react2.useState)(0),
|
|
2790
2841
|
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
2791
2842
|
extraValue = _useState0[0],
|
|
@@ -2801,7 +2852,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2801
2852
|
}, [reducers]);
|
|
2802
2853
|
return setExtraValue;
|
|
2803
2854
|
}),
|
|
2804
|
-
result =
|
|
2855
|
+
result = _renderHook47.result;
|
|
2805
2856
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2806
2857
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2807
2858
|
(0, _react.act)(function () {
|
|
@@ -2813,7 +2864,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2813
2864
|
(0, _globals.test)('empty `deps` should not update reducers', function () {
|
|
2814
2865
|
var onUpdate = _globals.jest.fn();
|
|
2815
2866
|
var onDeepUpdate = _globals.jest.fn();
|
|
2816
|
-
var
|
|
2867
|
+
var _renderHook48 = (0, _react.renderHook)(function () {
|
|
2817
2868
|
var _useState1 = (0, _react2.useState)(0),
|
|
2818
2869
|
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
2819
2870
|
extraValue = _useState10[0],
|
|
@@ -2829,7 +2880,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2829
2880
|
}, [reducers]);
|
|
2830
2881
|
return setExtraValue;
|
|
2831
2882
|
}),
|
|
2832
|
-
result =
|
|
2883
|
+
result = _renderHook48.result;
|
|
2833
2884
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2834
2885
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2835
2886
|
(0, _react.act)(function () {
|
package/lib/index.js
CHANGED
|
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "UseCaseFragment", {
|
|
|
9
9
|
return _UseCaseFragment.UseCaseFragment;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "lifecycleUseCase", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function get() {
|
|
15
|
-
return
|
|
15
|
+
return _lifecycleUseCase.lifecycleUseCase;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "useProviders", {
|
|
@@ -29,5 +29,5 @@ Object.defineProperty(exports, "useUseCase", {
|
|
|
29
29
|
});
|
|
30
30
|
var _UseCaseFragment = require("./components/UseCaseFragment");
|
|
31
31
|
var _useUseCase = require("./hooks/useUseCase");
|
|
32
|
-
var
|
|
32
|
+
var _lifecycleUseCase = require("./usecases/lifecycleUseCase");
|
|
33
33
|
var _useProviders = require("./hooks/useProviders");
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.runEntityInitializer = void 0;
|
|
7
|
+
var _usecases = require("@mic-rexjs/usecases");
|
|
8
|
+
var _entityRuntimeUseCase = require("../../usecases/entityRuntimeUseCase");
|
|
9
|
+
var _objectUtilsUseCase2 = require("../../usecases/objectUtilsUseCase");
|
|
10
|
+
var runEntityInitializer = exports.runEntityInitializer = function runEntityInitializer(store, initializer, prevCreateEntityList, isInitializing) {
|
|
11
|
+
var isAsync = false;
|
|
12
|
+
var index = 0;
|
|
13
|
+
var createEntityList = [];
|
|
14
|
+
var _objectUtilsUseCase = (0, _objectUtilsUseCase2.objectUtilsUseCase)(),
|
|
15
|
+
isObject = _objectUtilsUseCase.isObject,
|
|
16
|
+
isEqual = _objectUtilsUseCase.isEqual;
|
|
17
|
+
var onInitStoreValue = function onInitStoreValue(value) {
|
|
18
|
+
if (!isInitializing || isAsync) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
return store.initValue(value);
|
|
22
|
+
};
|
|
23
|
+
var _createEntityReducers = (0, _usecases.createEntityReducers)(store, _entityRuntimeUseCase.entityRuntimeUseCase, {
|
|
24
|
+
onInit: function onInit(currentValue) {
|
|
25
|
+
return initializer(currentValue);
|
|
26
|
+
},
|
|
27
|
+
onCreate: function onCreate(newEntity, oldEntity) {
|
|
28
|
+
var currentIndex = index;
|
|
29
|
+
var isObj = isObject(oldEntity);
|
|
30
|
+
var isArray = isObj && Array.isArray(oldEntity);
|
|
31
|
+
index++;
|
|
32
|
+
createEntityList[currentIndex] = newEntity;
|
|
33
|
+
if (!isObj || isArray) {
|
|
34
|
+
return (0, _usecases.createEntity)(oldEntity, newEntity);
|
|
35
|
+
}
|
|
36
|
+
var descriptors = {};
|
|
37
|
+
var prevEntity = prevCreateEntityList[currentIndex];
|
|
38
|
+
isEqual(prevEntity, newEntity, function (key) {
|
|
39
|
+
var descriptor = Object.getOwnPropertyDescriptor(newEntity, key) || null;
|
|
40
|
+
if (descriptor === null) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
descriptors[key] = descriptor;
|
|
44
|
+
});
|
|
45
|
+
return (0, _usecases.createEntity)(oldEntity, Object.defineProperties({}, descriptors));
|
|
46
|
+
},
|
|
47
|
+
onGenerate: function onGenerate(entity, result) {
|
|
48
|
+
if (typeof result === 'undefined') {
|
|
49
|
+
return [entity, result];
|
|
50
|
+
}
|
|
51
|
+
var newResult = (0, _usecases.createEntity)(entity, result);
|
|
52
|
+
// 不能用 `store.value`,因为可能存在异步,异步更新是需要触发组件更新的
|
|
53
|
+
store.setValue(newResult);
|
|
54
|
+
return [newResult, result];
|
|
55
|
+
},
|
|
56
|
+
onYield: function onYield(entity) {
|
|
57
|
+
return onInitStoreValue(entity);
|
|
58
|
+
},
|
|
59
|
+
onReturn: function onReturn(entity) {
|
|
60
|
+
var newEntity = onInitStoreValue(entity);
|
|
61
|
+
// 不能用 `store.value`,因为可能存在异步,异步更新是需要触发组件更新的
|
|
62
|
+
store.setValue(newEntity);
|
|
63
|
+
return newEntity;
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
66
|
+
initEntity = _createEntityReducers.initEntity;
|
|
67
|
+
// 禁用 `store` 的事件,避免触发 `onChange`
|
|
68
|
+
store.disableWatchers();
|
|
69
|
+
initEntity();
|
|
70
|
+
store.enableWatchers();
|
|
71
|
+
isAsync = true;
|
|
72
|
+
return createEntityList;
|
|
73
|
+
};
|
|
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.triggerWatchers = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var
|
|
9
|
+
var _objectUtilsUseCase2 = require("../../usecases/objectUtilsUseCase");
|
|
10
10
|
var triggerWatchers = exports.triggerWatchers = function triggerWatchers(watch, newEntity, oldEntity) {
|
|
11
|
-
var
|
|
12
|
-
matchProperty =
|
|
11
|
+
var _objectUtilsUseCase = (0, _objectUtilsUseCase2.objectUtilsUseCase)(),
|
|
12
|
+
matchProperty = _objectUtilsUseCase.matchProperty;
|
|
13
13
|
var _loop = function _loop() {
|
|
14
14
|
var _ref = _Object$entries[_i];
|
|
15
15
|
_ref2 = (0, _slicedToArray2["default"])(_ref, 2);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.lifecycleEventUseCase = void 0;
|
|
7
|
+
var _usecases = require("@mic-rexjs/usecases");
|
|
8
|
+
var lifecycleEventUseCase = exports.lifecycleEventUseCase = (0, _usecases.createUseCase)(function () {
|
|
9
|
+
var map = new Map();
|
|
10
|
+
var events = null;
|
|
11
|
+
/**
|
|
12
|
+
* 逻辑是:先存,再绑定 `key`,再通过 `key` 获取,最后清除
|
|
13
|
+
*/
|
|
14
|
+
return function () {
|
|
15
|
+
var deleteLifecycleEvents = function deleteLifecycleEvents(key) {
|
|
16
|
+
return map["delete"](key);
|
|
17
|
+
};
|
|
18
|
+
var bindLifecycleEventsKey = function bindLifecycleEventsKey(key) {
|
|
19
|
+
if (events === null) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
var currentEvents = events;
|
|
23
|
+
events = null;
|
|
24
|
+
map.set(key, currentEvents);
|
|
25
|
+
return currentEvents;
|
|
26
|
+
};
|
|
27
|
+
var getLifecycleEvents = function getLifecycleEvents(key) {
|
|
28
|
+
return map.get(key) || {};
|
|
29
|
+
};
|
|
30
|
+
var setLifecycleEvents = function setLifecycleEvents(e) {
|
|
31
|
+
events = e;
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
deleteLifecycleEvents: deleteLifecycleEvents,
|
|
35
|
+
setLifecycleEvents: setLifecycleEvents,
|
|
36
|
+
getLifecycleEvents: getLifecycleEvents,
|
|
37
|
+
bindLifecycleEventsKey: bindLifecycleEventsKey
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
});
|
|
@@ -4,24 +4,26 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.lifecycleUseCase = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _lifecycleEventUseCase = require("../lifecycleEventUseCase");
|
|
9
10
|
var _usecases = require("@mic-rexjs/usecases");
|
|
10
11
|
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; }
|
|
11
12
|
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; }
|
|
12
|
-
var
|
|
13
|
+
var lifecycleUseCase = exports.lifecycleUseCase = function lifecycleUseCase() {
|
|
13
14
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
14
15
|
var onBind = options.onBind,
|
|
15
|
-
onUnbind = options.onUnbind
|
|
16
|
+
onUnbind = options.onUnbind,
|
|
17
|
+
onChange = options.onChange,
|
|
18
|
+
onUpdate = options.onUpdate;
|
|
19
|
+
var _lifecycleEventUseCas = (0, _lifecycleEventUseCase.lifecycleEventUseCase)(),
|
|
20
|
+
setLifecycleEvents = _lifecycleEventUseCas.setLifecycleEvents;
|
|
16
21
|
var entityReducers = (0, _usecases.entityUseCase)();
|
|
17
|
-
|
|
18
|
-
onBind
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
23
|
-
return _objectSpread(_objectSpread({}, entityReducers), {}, {
|
|
24
|
-
bindEntity: bindEntity,
|
|
25
|
-
unbindEntity: unbindEntity
|
|
22
|
+
setLifecycleEvents({
|
|
23
|
+
onBind: onBind,
|
|
24
|
+
onUnbind: onUnbind,
|
|
25
|
+
onChange: onChange,
|
|
26
|
+
onUpdate: onUpdate
|
|
26
27
|
});
|
|
28
|
+
return _objectSpread({}, entityReducers);
|
|
27
29
|
};
|
|
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.methodUseCase = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var
|
|
9
|
+
var _objectUtilsUseCase2 = require("../objectUtilsUseCase");
|
|
10
10
|
var methodUseCase = exports.methodUseCase = function methodUseCase() {
|
|
11
|
-
var
|
|
12
|
-
|
|
11
|
+
var _objectUtilsUseCase = (0, _objectUtilsUseCase2.objectUtilsUseCase)(),
|
|
12
|
+
isEqual = _objectUtilsUseCase.isEqual;
|
|
13
13
|
var cacheCall = function cacheCall(factory, options) {
|
|
14
14
|
var cache;
|
|
15
15
|
var _ref = options || {},
|
|
@@ -19,7 +19,7 @@ var methodUseCase = exports.methodUseCase = function methodUseCase() {
|
|
|
19
19
|
} : _ref$onShouldCache,
|
|
20
20
|
_ref$onCompare = _ref.onCompare,
|
|
21
21
|
onCompare = _ref$onCompare === void 0 ? function (newArgs, oldArgs) {
|
|
22
|
-
return
|
|
22
|
+
return isEqual(newArgs, oldArgs);
|
|
23
23
|
} : _ref$onCompare;
|
|
24
24
|
return function () {
|
|
25
25
|
var cacheable = onShouldCache();
|