@mic-rexjs/usecases-react 3.7.0 → 4.0.0-beta.3

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.
Files changed (150) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.LICENSE.txt +2 -0
  3. package/es/components/UseCaseFragment/index.js +2 -2
  4. package/es/enums/Statuses/index.d.ts +86 -10
  5. package/es/enums/Statuses/index.js +86 -10
  6. package/es/hooks/useAlternateStatuses/index.d.ts +2 -0
  7. package/es/hooks/useAlternateStatuses/index.js +16 -0
  8. package/es/hooks/useChanged/index.d.ts +2 -0
  9. package/es/hooks/useChanged/index.js +17 -0
  10. package/es/hooks/useChanged/types.d.ts +3 -0
  11. package/es/hooks/useContext/index.d.ts +3 -4
  12. package/es/hooks/useContext/index.js +17 -15
  13. package/es/hooks/useContext/index.test.js +13 -24
  14. package/es/hooks/useContextValue/index.d.ts +5 -0
  15. package/es/hooks/useContextValue/index.js +13 -0
  16. package/es/hooks/useDepsKey/index.js +11 -9
  17. package/es/hooks/useEntity/index.d.ts +3 -2
  18. package/es/hooks/useEntity/index.js +52 -53
  19. package/es/hooks/useEntityReturn/index.d.ts +5 -0
  20. package/es/hooks/useEntityReturn/index.js +15 -0
  21. package/es/hooks/useEntityReturn/types.d.ts +7 -0
  22. package/es/hooks/useEntityRootExec/index.d.ts +5 -0
  23. package/es/hooks/useEntityRootExec/index.js +7 -0
  24. package/es/hooks/useEntityRootExec/types.d.ts +7 -0
  25. package/es/hooks/useEntityRootExec/types.js +1 -0
  26. package/es/hooks/useEntityRootReturn/index.d.ts +5 -0
  27. package/es/hooks/useEntityRootReturn/index.js +14 -0
  28. package/es/hooks/useEntityRootReturn/types.d.ts +7 -0
  29. package/es/hooks/useEntityRootReturn/types.js +1 -0
  30. package/es/hooks/useExec/index.d.ts +2 -3
  31. package/es/hooks/useExec/index.js +3 -12
  32. package/es/hooks/useExec/types.d.ts +10 -2
  33. package/es/hooks/useFullArguments/index.d.ts +2 -3
  34. package/es/hooks/useFullArguments/index.js +4 -6
  35. package/es/hooks/useFullArguments/types.d.ts +2 -2
  36. package/es/hooks/useIfExec/index.d.ts +2 -0
  37. package/es/hooks/useIfExec/index.js +20 -0
  38. package/es/hooks/useIfExec/types.d.ts +6 -0
  39. package/es/hooks/useIfExec/types.js +1 -0
  40. package/es/hooks/useIfReturn/index.d.ts +2 -0
  41. package/es/hooks/useIfReturn/index.js +22 -0
  42. package/es/hooks/useIfReturn/types.d.ts +6 -0
  43. package/es/hooks/useIfReturn/types.js +1 -0
  44. package/es/hooks/useProvider/index.d.ts +3 -5
  45. package/es/hooks/useProvider/index.js +17 -23
  46. package/es/hooks/useProviders/index.js +4 -4
  47. package/es/hooks/useReducers/index.d.ts +5 -4
  48. package/es/hooks/useReducers/index.js +45 -27
  49. package/es/hooks/useReturn/index.d.ts +2 -0
  50. package/es/hooks/useReturn/index.js +33 -0
  51. package/es/hooks/useReturn/types.d.ts +11 -0
  52. package/es/hooks/useReturn/types.js +1 -0
  53. package/es/hooks/useRootInitializing/index.d.ts +2 -0
  54. package/es/hooks/useRootInitializing/index.js +14 -0
  55. package/es/hooks/useRootReturn/index.d.ts +5 -0
  56. package/es/hooks/useRootReturn/index.js +22 -0
  57. package/es/hooks/useRootReturn/types.d.ts +14 -0
  58. package/es/hooks/useRootReturn/types.js +1 -0
  59. package/es/hooks/useStatuses/index.d.ts +4 -4
  60. package/es/hooks/useStatuses/index.js +46 -21
  61. package/es/hooks/useStore/index.d.ts +3 -3
  62. package/es/hooks/useStore/index.js +21 -49
  63. package/es/hooks/useThrottleUpdate/index.d.ts +2 -0
  64. package/es/hooks/useThrottleUpdate/index.js +31 -0
  65. package/es/hooks/useThrottleUpdate/types.d.ts +3 -0
  66. package/es/hooks/useThrottleUpdate/types.js +1 -0
  67. package/es/hooks/useUseCase/index.js +21 -24
  68. package/es/hooks/useUseCase/index.test.js +330 -98
  69. package/es/hooks/useUseCase/types.d.ts +15 -5
  70. package/es/methods/cacheCall/index.d.ts +2 -0
  71. package/es/methods/cacheCall/index.js +38 -0
  72. package/es/methods/cacheCall/types.d.ts +12 -0
  73. package/es/methods/cacheCall/types.js +1 -0
  74. package/es/methods/cacheCalls/index.d.ts +2 -0
  75. package/es/methods/cacheCalls/index.js +12 -0
  76. package/es/types.d.ts +2 -1
  77. package/es/usecases/contextUseCase/index.js +21 -38
  78. package/es/usecases/contextUseCase/types.d.ts +5 -6
  79. package/es/usecases/lifecycleEventUseCase/index.js +37 -9
  80. package/es/usecases/lifecycleEventUseCase/types.d.ts +11 -8
  81. package/lib/components/UseCaseFragment/index.js +2 -2
  82. package/lib/enums/Statuses/index.js +86 -10
  83. package/lib/hooks/useAlternateStatuses/index.js +22 -0
  84. package/lib/hooks/useChanged/index.js +23 -0
  85. package/lib/hooks/useContext/index.js +19 -17
  86. package/lib/hooks/useContext/index.test.js +13 -24
  87. package/lib/hooks/useContextValue/index.js +19 -0
  88. package/lib/hooks/useDepsKey/index.js +10 -8
  89. package/lib/hooks/useEntity/index.js +81 -54
  90. package/lib/hooks/useEntityReturn/index.js +22 -0
  91. package/lib/hooks/useEntityRootExec/index.js +13 -0
  92. package/lib/hooks/useEntityRootExec/types.js +5 -0
  93. package/lib/hooks/useEntityRootReturn/index.js +21 -0
  94. package/lib/hooks/useEntityRootReturn/types.js +5 -0
  95. package/lib/hooks/useExec/index.js +3 -12
  96. package/lib/hooks/useFullArguments/index.js +4 -6
  97. package/lib/hooks/useIfExec/index.js +27 -0
  98. package/lib/hooks/useIfExec/types.js +5 -0
  99. package/lib/hooks/useIfReturn/index.js +29 -0
  100. package/lib/hooks/useIfReturn/types.js +5 -0
  101. package/lib/hooks/useProvider/index.js +16 -22
  102. package/lib/hooks/useProviders/index.js +3 -3
  103. package/lib/hooks/useReducers/index.js +46 -29
  104. package/lib/hooks/useReturn/index.js +40 -0
  105. package/lib/hooks/useReturn/types.js +5 -0
  106. package/lib/hooks/useRootInitializing/index.js +20 -0
  107. package/lib/hooks/useRootReturn/index.js +30 -0
  108. package/lib/hooks/useRootReturn/types.js +5 -0
  109. package/lib/hooks/useStatuses/index.js +47 -21
  110. package/lib/hooks/useStore/index.js +19 -48
  111. package/lib/hooks/useThrottleUpdate/index.js +37 -0
  112. package/lib/hooks/useThrottleUpdate/types.js +5 -0
  113. package/lib/hooks/useUseCase/index.js +22 -25
  114. package/lib/hooks/useUseCase/index.test.js +360 -97
  115. package/lib/methods/cacheCall/index.js +44 -0
  116. package/lib/methods/cacheCall/types.js +5 -0
  117. package/lib/methods/cacheCalls/index.js +19 -0
  118. package/lib/usecases/contextUseCase/index.js +21 -38
  119. package/lib/usecases/lifecycleEventUseCase/index.js +48 -8
  120. package/package.json +3 -3
  121. package/es/enums/ArgumentTypes/index.d.ts +0 -4
  122. package/es/enums/ArgumentTypes/index.js +0 -5
  123. package/es/hooks/useArgumentTypes/index.d.ts +0 -3
  124. package/es/hooks/useArgumentTypes/index.js +0 -14
  125. package/es/hooks/useConstantEntityReducers/index.d.ts +0 -3
  126. package/es/hooks/useConstantEntityReducers/index.js +0 -7
  127. package/es/hooks/useConstantFn/index.d.ts +0 -1
  128. package/es/hooks/useConstantFn/index.js +0 -10
  129. package/es/hooks/useConstantReducers/index.d.ts +0 -3
  130. package/es/hooks/useConstantReducers/index.js +0 -6
  131. package/es/hooks/useContextualItem/index.d.ts +0 -4
  132. package/es/hooks/useContextualItem/index.js +0 -31
  133. package/es/hooks/useContextualItem/types.d.ts +0 -3
  134. package/es/hooks/useEntityInitializing/index.d.ts +0 -2
  135. package/es/hooks/useEntityInitializing/index.js +0 -16
  136. package/es/usecases/methodUseCase/index.d.ts +0 -2
  137. package/es/usecases/methodUseCase/index.js +0 -72
  138. package/es/usecases/methodUseCase/types.d.ts +0 -21
  139. package/lib/enums/ArgumentTypes/index.js +0 -11
  140. package/lib/hooks/useArgumentTypes/index.js +0 -22
  141. package/lib/hooks/useConstantEntityReducers/index.js +0 -13
  142. package/lib/hooks/useConstantFn/index.js +0 -17
  143. package/lib/hooks/useConstantReducers/index.js +0 -12
  144. package/lib/hooks/useContextualItem/index.js +0 -37
  145. package/lib/hooks/useEntityInitializing/index.js +0 -22
  146. package/lib/usecases/methodUseCase/index.js +0 -79
  147. /package/es/hooks/{useContextualItem → useChanged}/types.js +0 -0
  148. /package/es/{usecases/methodUseCase → hooks/useEntityReturn}/types.js +0 -0
  149. /package/lib/hooks/{useContextualItem → useChanged}/types.js +0 -0
  150. /package/lib/{usecases/methodUseCase → hooks/useEntityReturn}/types.js +0 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useContextValue = void 0;
7
+ var _useReturn = require("../useReturn");
8
+ var _react = require("react");
9
+ var useContextValue = exports.useContextValue = function useContextValue(entity, store, reducers, statuses) {
10
+ var key = (0, _react.useId)();
11
+ return (0, _useReturn.useReturn)(function () {
12
+ return {
13
+ key: key,
14
+ store: store,
15
+ reducers: reducers,
16
+ statuses: statuses
17
+ };
18
+ }, [key, entity, store, reducers, statuses]);
19
+ };
@@ -4,24 +4,26 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useDepsKey = void 0;
7
- var _useConstantReducers2 = require("../useConstantReducers");
7
+ var _useChanged = require("../useChanged");
8
+ var _useConstant2 = require("../useConstant");
8
9
  var _ahooks = require("ahooks");
9
10
  var _react = require("react");
10
11
  var _objectUtilsUseCase = require("../../usecases/objectUtilsUseCase");
11
12
  var useDepsKey = exports.useDepsKey = function useDepsKey(deps) {
12
13
  var keyRef = (0, _react.useRef)(0);
13
- var prevDeps = (0, _ahooks.usePrevious)(deps);
14
- var _useConstantReducers = (0, _useConstantReducers2.useConstantReducers)(_objectUtilsUseCase.objectUtilsUseCase),
15
- isEqual = _useConstantReducers.isEqual;
16
- var equal = isEqual(deps, prevDeps);
17
- var getDepsKey = (0, _ahooks.useMemoizedFn)(function () {
14
+ var _useConstant = (0, _useConstant2.useConstant)(_objectUtilsUseCase.objectUtilsUseCase),
15
+ isEqual = _useConstant.isEqual;
16
+ var isChanged = (0, _useChanged.useChanged)(deps, function (newDeps, oldDeps) {
17
+ return !isEqual(newDeps, oldDeps);
18
+ });
19
+ var onCreate = (0, _ahooks.useMemoizedFn)(function () {
18
20
  var key = keyRef.current;
19
- if (equal) {
21
+ if (!isChanged) {
20
22
  return key;
21
23
  }
22
24
  var newKey = key + 1;
23
25
  keyRef.current = newKey;
24
26
  return newKey;
25
27
  });
26
- return getDepsKey();
28
+ return onCreate();
27
29
  };
@@ -1,37 +1,37 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.useEntity = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
11
  var _useConstant = require("../useConstant");
8
- var _useConstantReducers2 = require("../useConstantReducers");
9
- var _useEntityInitializing = require("../useEntityInitializing");
10
- var _useExec = require("../useExec");
11
- var _usecases = require("@mic-rexjs/usecases");
12
+ var _useEntityReturn = require("../useEntityReturn");
13
+ var _useEntityRootExec = require("../useEntityRootExec");
14
+ var _useThrottleUpdate = require("../useThrottleUpdate");
12
15
  var _ahooks = require("ahooks");
13
16
  var _react = require("react");
14
17
  var _Statuses = require("../../enums/Statuses");
15
18
  var _triggerWatchers = require("../../methods/triggerWatchers");
16
19
  var _lifecycleEventUseCase = require("../../usecases/lifecycleEventUseCase");
17
- var useEntity = exports.useEntity = function useEntity(store, statuses, options) {
20
+ var useEntity = exports.useEntity = function useEntity(store,
21
+ // 强制传入 `reducers` 参数,目的是让该 `hook` 一定在 `useReducers` 之后执行
22
+ reducers, statuses, options) {
18
23
  var entity = store.value;
19
- var update = (0, _ahooks.useUpdate)();
20
- var isInitializing = (0, _useEntityInitializing.useEntityInitializing)(statuses);
24
+ var update = (0, _useThrottleUpdate.useThrottleUpdate)();
21
25
  var optionsRef = (0, _ahooks.useLatest)(options);
22
26
  var prevEntityRef = (0, _react.useRef)(entity);
23
- var entityEnabled = (statuses & _Statuses.Statuses.EntityEnabled) === _Statuses.Statuses.EntityEnabled;
24
- var entityRootEnabled = (statuses & _Statuses.Statuses.EntityRootEnabled) === _Statuses.Statuses.EntityRootEnabled;
25
- var _useConstantReducers = (0, _useConstantReducers2.useConstantReducers)(function () {
26
- return (0, _lifecycleEventUseCase.lifecycleEventUseCase)();
27
- }),
28
- bindLifecycleEventsKey = _useConstantReducers.bindLifecycleEventsKey,
29
- getLifecycleEvents = _useConstantReducers.getLifecycleEvents,
30
- deleteLifecycleEvents = _useConstantReducers.deleteLifecycleEvents;
27
+ var hasEntity = (statuses & _Statuses.Statuses.Entity) === _Statuses.Statuses.Entity;
28
+ var lifecycleReducers = (0, _useConstant.useConstant)(_lifecycleEventUseCase.lifecycleEventUseCase);
29
+ var createLifecycleKey = lifecycleReducers.createLifecycleKey,
30
+ bindLifecycleEventsKey = lifecycleReducers.bindLifecycleEventsKey,
31
+ getLifecycleEvents = lifecycleReducers.getLifecycleEvents,
32
+ deleteLifecycleEvents = lifecycleReducers.deleteLifecycleEvents;
31
33
  var lifecycleKey = (0, _useConstant.useConstant)(function () {
32
- var _utilsUseCase = (0, _usecases.utilsUseCase)(),
33
- createKey = _utilsUseCase.createKey;
34
- return createKey();
34
+ return createLifecycleKey();
35
35
  });
36
36
  var onTriggerWatchers = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
37
37
  var watch = optionsRef.current.watch;
@@ -43,10 +43,10 @@ var useEntity = exports.useEntity = function useEntity(store, statuses, options)
43
43
  var onEntityUpdate = (0, _ahooks.useMemoizedFn)(function () {
44
44
  var newEntity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : entity;
45
45
  var oldEntity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prevEntityRef.current;
46
- if (!entityEnabled) {
46
+ var prevEntity = prevEntityRef.current;
47
+ if (!hasEntity) {
47
48
  return;
48
49
  }
49
- var prevEntity = prevEntityRef.current;
50
50
  if (prevEntity === newEntity) {
51
51
  return;
52
52
  }
@@ -60,41 +60,69 @@ var useEntity = exports.useEntity = function useEntity(store, statuses, options)
60
60
  onAdopt === null || onAdopt === void 0 || onAdopt(newEntity, oldEntity);
61
61
  onUpdate === null || onUpdate === void 0 || onUpdate(newEntity, oldEntity);
62
62
  });
63
- var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
63
+ var onEntityLifecycleChange = (0, _ahooks.useMemoizedFn)(/*#__PURE__*/function () {
64
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(newEntity, oldEntity) {
65
+ var _getLifecycleEvents2, onChange, result, _t;
66
+ return _regenerator["default"].wrap(function (_context) {
67
+ while (1) switch (_context.prev = _context.next) {
68
+ case 0:
69
+ _getLifecycleEvents2 = getLifecycleEvents(lifecycleKey), onChange = _getLifecycleEvents2.onChange;
70
+ result = onChange === null || onChange === void 0 ? void 0 : onChange(newEntity, oldEntity);
71
+ if (!(result instanceof Promise)) {
72
+ _context.next = 2;
73
+ break;
74
+ }
75
+ _context.next = 1;
76
+ return result;
77
+ case 1:
78
+ result = _context.sent;
79
+ case 2:
80
+ _t = (0, _typeof2["default"])(result);
81
+ _context.next = _t === 'number' ? 3 : _t === 'undefined' ? 4 : 5;
82
+ break;
83
+ case 3:
84
+ update(result);
85
+ return _context.abrupt("return");
86
+ case 4:
87
+ update();
88
+ return _context.abrupt("return");
89
+ case 5:
90
+ if (!result) {
91
+ _context.next = 6;
92
+ break;
93
+ }
94
+ return _context.abrupt("return");
95
+ case 6:
96
+ update();
97
+ case 7:
98
+ case "end":
99
+ return _context.stop();
100
+ }
101
+ }, _callee);
102
+ }));
103
+ return function (_x, _x2) {
104
+ return _ref.apply(this, arguments);
105
+ };
106
+ }());
107
+ var onEntityOptionsChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
64
108
  var currentOptions = optionsRef.current;
65
- var onChange1 = currentOptions.onChange;
66
- var _getLifecycleEvents2 = getLifecycleEvents(lifecycleKey),
67
- onChange2 = _getLifecycleEvents2.onChange;
68
- onEntityUpdate(newEntity, oldEntity);
69
- onChange1 === null || onChange1 === void 0 || onChange1(newEntity, oldEntity);
70
- onChange2 === null || onChange2 === void 0 || onChange2(newEntity, oldEntity);
71
- if (!entityRootEnabled) {
72
- return;
73
- }
74
- update();
109
+ var onChange = currentOptions.onChange;
110
+ onChange === null || onChange === void 0 || onChange(newEntity, oldEntity);
75
111
  });
76
- (0, _useExec.useExec)(function () {
77
- if (!entityRootEnabled) {
78
- return;
79
- }
112
+ (0, _useEntityRootExec.useEntityRootExec)(statuses, function () {
80
113
  var _bindLifecycleEventsK = bindLifecycleEventsKey(lifecycleKey),
81
114
  onBind = _bindLifecycleEventsK.onBind,
82
115
  onAdopt = _bindLifecycleEventsK.onAdopt;
83
- if (!isInitializing) {
84
- return;
85
- }
116
+ store.watch(onEntityLifecycleChange);
86
117
  onBind === null || onBind === void 0 || onBind(entity);
87
118
  onAdopt === null || onAdopt === void 0 || onAdopt(entity);
88
- });
89
- (0, _ahooks.useUnmount)(function () {
90
- if (!entityRootEnabled) {
91
- return;
92
- }
119
+ }, function () {
93
120
  // 要使用最新的 `entity`
94
121
  var currentEntity = store.value;
95
122
  var _getLifecycleEvents3 = getLifecycleEvents(lifecycleKey),
96
123
  onUnbind = _getLifecycleEvents3.onUnbind,
97
124
  onDiscard = _getLifecycleEvents3.onDiscard;
125
+ store.unwatch(onEntityLifecycleChange);
98
126
  deleteLifecycleEvents(lifecycleKey);
99
127
  onUnbind === null || onUnbind === void 0 || onUnbind(currentEntity);
100
128
  onDiscard === null || onDiscard === void 0 || onDiscard(currentEntity);
@@ -103,22 +131,21 @@ var useEntity = exports.useEntity = function useEntity(store, statuses, options)
103
131
  * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
104
132
  * 如果使用了 `setEntity` 则无法监控到变化
105
133
  */
106
- (0, _useExec.useExec)(function () {
107
- if (!entityEnabled) {
108
- return;
109
- }
110
- store.watch(onEntityChange);
111
- }, [store, entityEnabled, onEntityChange]);
134
+ (0, _useEntityReturn.useEntityReturn)(statuses, function () {
135
+ store.watch(onEntityOptionsChange);
136
+ store.watch(onEntityUpdate);
137
+ },
112
138
  /**
113
139
  * 在变化时候,组件更新前,使用 `unwatch`
114
140
  */
115
- (0, _react.useEffect)(function () {
116
- return function () {
117
- store.unwatch(onEntityChange);
118
- };
119
- }, [store, entityEnabled, onEntityChange]);
141
+ function () {
142
+ store.unwatch(onEntityOptionsChange);
143
+ store.unwatch(onEntityUpdate);
144
+ }, [store]);
120
145
  (0, _ahooks.useUpdateEffect)(function () {
121
146
  onEntityUpdate();
122
147
  }, [entity, onEntityUpdate]);
148
+ // 强制传入 `reducers` 参数,目的是让该 `hook` 一定在 `useReducers` 之后执行
149
+ void reducers;
123
150
  return entity;
124
151
  };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEntityReturn = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _useIfReturn = require("../useIfReturn");
10
+ var _Statuses = require("../../enums/Statuses");
11
+ /**
12
+ * 只在 `RootCoreCollectionHook` 或 `ContextualCoreCollectionHook` 模式下才会执行相关回调
13
+ */
14
+ var useEntityReturn = exports.useEntityReturn = function useEntityReturn(statuses, callback, arg3, arg4) {
15
+ var isDepsArgs = Array.isArray(arg3);
16
+ var _ref = isDepsArgs ? [null, arg3] : [arg3, arg4],
17
+ _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
18
+ destructor = _ref2[0],
19
+ deps = _ref2[1];
20
+ var hasEntity = (statuses & _Statuses.Statuses.Entity) === _Statuses.Statuses.Entity;
21
+ return (0, _useIfReturn.useIfReturn)(hasEntity, callback, destructor || null, deps);
22
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useEntityRootExec = void 0;
7
+ var _useEntityRootReturn = require("../useEntityRootReturn");
8
+ /**
9
+ * 只在 `RootCoreCollectionHook` 模式下才会执行相关回调
10
+ */
11
+ var useEntityRootExec = exports.useEntityRootExec = function useEntityRootExec() {
12
+ void _useEntityRootReturn.useEntityRootReturn.apply(void 0, arguments);
13
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEntityRootReturn = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _useRootReturn = require("../useRootReturn");
10
+ var _Statuses = require("../../enums/Statuses");
11
+ /**
12
+ * 只在 `RootCoreCollectionHook` 模式下才会执行相关回调
13
+ */
14
+ var useEntityRootReturn = exports.useEntityRootReturn = function useEntityRootReturn(statuses, callback, arg3, arg4) {
15
+ var isDepsArgs = Array.isArray(arg3);
16
+ var _ref = isDepsArgs ? [null, arg3] : [arg3, arg4],
17
+ _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
18
+ destructor = _ref2[0],
19
+ deps = _ref2[1];
20
+ return (0, _useRootReturn.useRootReturn)(statuses, callback, destructor || null, _Statuses.Statuses.EntityRootRuntime, deps);
21
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -4,16 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useExec = void 0;
7
- var _useDepsKey = require("../useDepsKey");
8
- var _ahooks = require("ahooks");
9
- var useExec = exports.useExec = function useExec(callback) {
10
- var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [callback];
11
- var depsKey = (0, _useDepsKey.useDepsKey)(deps);
12
- var execCallback = (0, _ahooks.useMemoizedFn)(function () {
13
- return callback();
14
- });
15
- return (0, _ahooks.useCreation)(function () {
16
- void depsKey;
17
- return execCallback();
18
- }, [depsKey, execCallback]);
7
+ var _useReturn = require("../useReturn");
8
+ var useExec = exports.useExec = function useExec() {
9
+ void _useReturn.useReturn.apply(void 0, arguments);
19
10
  };
@@ -6,16 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useFullArguments = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var _ArgumentTypes = require("../../enums/ArgumentTypes");
10
- var useFullArguments = exports.useFullArguments = function useFullArguments(args, argumentTypes) {
9
+ var useFullArguments = exports.useFullArguments = function useFullArguments(args, isEntityRoot) {
11
10
  var _args = (0, _slicedToArray2["default"])(args, 4),
12
11
  arg1 = _args[0],
13
12
  arg2 = _args[1],
14
13
  arg3 = _args[2],
15
14
  arg4 = _args[3];
16
- var withoutEntity = (argumentTypes & _ArgumentTypes.ArgumentTypes.Entity) !== _ArgumentTypes.ArgumentTypes.Entity;
17
- if (withoutEntity) {
18
- return [null, arg1, arg2 || {}, arg3 || []];
15
+ if (isEntityRoot) {
16
+ return [arg1, arg2, arg3 || {}, arg4 || []];
19
17
  }
20
- return [arg1, arg2, arg3 || {}, arg4 || []];
18
+ return [null, arg1, arg2 || {}, arg3 || []];
21
19
  };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useIfExec = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _useExec = require("../useExec");
10
+ var useIfExec = exports.useIfExec = function useIfExec(value, callback, arg3, arg4) {
11
+ var hasDestructor = typeof arg3 === 'function' || arg3 === null;
12
+ var _ref = hasDestructor ? [arg3, arg4] : [null, arg3],
13
+ _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
14
+ destructor = _ref2[0],
15
+ deps = _ref2[1];
16
+ return (0, _useExec.useExec)(function () {
17
+ if (!value) {
18
+ return;
19
+ }
20
+ callback();
21
+ }, function (isUnmount) {
22
+ if (!value) {
23
+ return;
24
+ }
25
+ destructor === null || destructor === void 0 || destructor(isUnmount);
26
+ }, deps);
27
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useIfReturn = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _useReturn = require("../useReturn");
10
+ var useIfReturn = exports.useIfReturn = function useIfReturn(value, callback, arg3,
11
+ // 默认:如果 `callback` 没有用 `useMemorizedFn`,就会每次都执行,否则只执行一次
12
+ arg4) {
13
+ var isDepsArg3 = Array.isArray(arg3);
14
+ var _ref = isDepsArg3 ? [null, arg3] : [arg3, arg4],
15
+ _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
16
+ destructor = _ref2[0],
17
+ deps = _ref2[1];
18
+ return (0, _useReturn.useReturn)(function () {
19
+ if (!value) {
20
+ return null;
21
+ }
22
+ return callback();
23
+ }, function (isUnmount) {
24
+ if (!value) {
25
+ return;
26
+ }
27
+ destructor === null || destructor === void 0 || destructor(isUnmount);
28
+ }, deps);
29
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -5,30 +5,24 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.useProvider = void 0;
8
- var _useConstantFn = require("../useConstantFn");
8
+ var _useConstant = require("../useConstant");
9
9
  var _ahooks = require("ahooks");
10
10
  var _react = _interopRequireDefault(require("react"));
11
- var _contextUseCase2 = require("../../usecases/contextUseCase");
12
- var useProvider = exports.useProvider = function useProvider(statuses, context, store, reducers) {
13
- var entity = store.value;
14
- var contextValue = (0, _ahooks.useCreation)(function () {
15
- var _contextUseCase = (0, _contextUseCase2.contextUseCase)(),
16
- createContextValue = _contextUseCase.createContextValue;
17
- void entity;
18
- return createContextValue(store, reducers, statuses);
19
- }, [statuses, entity, store, reducers]);
11
+ var useProvider = exports.useProvider = function useProvider(context, contextValue) {
20
12
  var contextValueRef = (0, _ahooks.useLatest)(contextValue);
21
- return (0, _useConstantFn.useConstantFn)(function (_ref) {
22
- var children = _ref.children,
23
- _ref$with = _ref["with"],
24
- withProviders = _ref$with === void 0 ? [] : _ref$with;
25
- var ContextProvider = context.Provider;
26
- var value = contextValueRef.current;
27
- var providers = Array.isArray(withProviders) ? withProviders : [withProviders];
28
- return _react["default"].createElement(ContextProvider, {
29
- value: value
30
- }, providers.reduceRight(function (currentChildren, withProvider) {
31
- return _react["default"].createElement(withProvider, {}, currentChildren);
32
- }, children));
13
+ return (0, _useConstant.useConstant)(function () {
14
+ return function (_ref) {
15
+ var children = _ref.children,
16
+ _ref$with = _ref["with"],
17
+ withProviders = _ref$with === void 0 ? [] : _ref$with;
18
+ var ContextProvider = context.Provider;
19
+ var value = contextValueRef.current;
20
+ var providers = Array.isArray(withProviders) ? withProviders : [withProviders];
21
+ return _react["default"].createElement(ContextProvider, {
22
+ value: value
23
+ }, providers.reduceRight(function (currentChildren, withProvider) {
24
+ return _react["default"].createElement(withProvider, {}, currentChildren);
25
+ }, children));
26
+ };
33
27
  });
34
28
  };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useProviders = void 0;
7
7
  var _useDepsKey = require("../useDepsKey");
8
+ var _useReturn = require("../useReturn");
8
9
  var _ahooks = require("ahooks");
9
10
  var useProviders = exports.useProviders = function useProviders() {
10
11
  for (var _len = arguments.length, providers = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -12,8 +13,7 @@ var useProviders = exports.useProviders = function useProviders() {
12
13
  }
13
14
  var depsKey = (0, _useDepsKey.useDepsKey)(providers);
14
15
  var providersRef = (0, _ahooks.useLatest)(providers);
15
- return (0, _ahooks.useCreation)(function () {
16
- void depsKey;
16
+ return (0, _useReturn.useReturn)(function () {
17
17
  return providersRef.current;
18
- }, [depsKey, providersRef]);
18
+ }, [depsKey]);
19
19
  };
@@ -6,48 +6,65 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useReducers = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
- var _useContextualItem = require("../useContextualItem");
10
+ var _useReturn = require("../useReturn");
12
11
  var _usecases = require("@mic-rexjs/usecases");
13
12
  var _ahooks = require("ahooks");
14
13
  var _react = require("react");
15
14
  var _Statuses = require("../../enums/Statuses");
16
- var _methodUseCase2 = require("../../usecases/methodUseCase");
17
15
  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; }
18
16
  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; }
19
- var _excluded = ["watch", "onChange", "options"];
20
- var useReducers = exports.useReducers = function useReducers(usecase, context, store, statuses, options) {
21
- var deps = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
22
- var optionsRef = (0, _ahooks.useLatest)(options);
17
+ var _excluded = ["watch", "onChange"];
18
+ var useReducers = exports.useReducers = function useReducers(usecase, store, context, statuses, options) {
23
19
  var contextValue = (0, _react.useContext)(context);
24
20
  var _ref = contextValue || {},
25
21
  _ref$reducers = _ref.reducers,
26
22
  contextReducers = _ref$reducers === void 0 ? null : _ref$reducers;
27
- var entityRootEnabled = (statuses & _Statuses.Statuses.EntityRootEnabled) === _Statuses.Statuses.EntityRootEnabled;
28
- var onCreate = function onCreate() {
29
- var _methodUseCase = (0, _methodUseCase2.methodUseCase)(),
30
- captureCalls = _methodUseCase.captureCalls;
31
- var opts = captureCalls(options, function (key, callArgs) {
32
- var _optionsRef$current$k2;
33
- var _optionsRef$current$k, _optionsRef$current;
34
- return (_optionsRef$current$k = (_optionsRef$current = optionsRef.current)[key]) === null || _optionsRef$current$k === void 0 ? void 0 : (_optionsRef$current$k2 = _optionsRef$current$k).call.apply(_optionsRef$current$k2, [_optionsRef$current].concat((0, _toConsumableArray2["default"])(callArgs)));
35
- });
36
- if (!entityRootEnabled) {
37
- return usecase(opts);
23
+ var watch = options.watch,
24
+ onChange = options.onChange,
25
+ restOptions = (0, _objectWithoutProperties2["default"])(options, _excluded);
26
+ var _options$options = options.options,
27
+ initailOptions = _options$options === void 0 ? restOptions : _options$options;
28
+ var initailOptionsRef = (0, _ahooks.useLatest)(initailOptions);
29
+ var reducersKey = statuses & _Statuses.Statuses.ReducersKey;
30
+ var onOption = function onOption(key) {
31
+ return function () {
32
+ var currentInitailOptions = initailOptionsRef.current;
33
+ var currentValue = currentInitailOptions[key];
34
+ if (typeof currentValue !== 'function') {
35
+ return;
36
+ }
37
+ return currentValue.apply(void 0, arguments);
38
+ };
39
+ };
40
+ var onOptions = function onOptions() {
41
+ var newOptions = _objectSpread({}, initailOptions);
42
+ for (var _i = 0, _Object$keys = Object.keys(newOptions); _i < _Object$keys.length; _i++) {
43
+ var key = _Object$keys[_i];
44
+ var optionKey = key;
45
+ var value = newOptions[optionKey];
46
+ if (typeof value !== 'function') {
47
+ continue;
48
+ }
49
+ newOptions[optionKey] = onOption(optionKey);
38
50
  }
39
- var hookOptions = opts;
40
- var watch = hookOptions.watch,
41
- onChange = hookOptions.onChange,
42
- usecaseOptions = hookOptions.options,
43
- restUseCaseOptions = (0, _objectWithoutProperties2["default"])(hookOptions, _excluded);
44
- return (0, _usecases.createEntityReducers)(store, usecase, _objectSpread(_objectSpread(_objectSpread({}, restUseCaseOptions), usecaseOptions), {}, {
51
+ return newOptions;
52
+ };
53
+ return (0, _useReturn.useReturn)(function () {
54
+ var hasEntity = (statuses & _Statuses.Statuses.Entity) === _Statuses.Statuses.Entity;
55
+ var isEntityRootRuntime = (statuses & _Statuses.Statuses.EntityRootRuntime) === _Statuses.Statuses.EntityRootRuntime;
56
+ if (!hasEntity) {
57
+ return usecase(options);
58
+ }
59
+ if (!isEntityRootRuntime) {
60
+ return contextReducers;
61
+ }
62
+ var newOptions = onOptions();
63
+ return (0, _usecases.createEntityReducers)(store, usecase, {
64
+ options: newOptions,
45
65
  onGenerate: function onGenerate(newEntity, result) {
46
66
  return result;
47
67
  }
48
- }));
49
- };
50
- return (0, _useContextualItem.useContextualItem)(contextReducers, statuses, function () {
51
- return onCreate();
52
- }, deps);
68
+ });
69
+ }, [reducersKey]);
53
70
  };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useReturn = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _useDepsKey = require("../useDepsKey");
10
+ var _ahooks = require("ahooks");
11
+ var _react = require("react");
12
+ var useReturn = exports.useReturn = function useReturn(callback) {
13
+ var arg2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [callback];
14
+ var arg3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [callback];
15
+ var hasDestructor = !Array.isArray(arg2);
16
+ var _ref = hasDestructor ? [arg2, arg3] : [null, arg2],
17
+ _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
18
+ destructor = _ref2[0],
19
+ deps = _ref2[1];
20
+ var depsKey = (0, _useDepsKey.useDepsKey)(deps);
21
+ var destructorRef = (0, _react.useRef)(null);
22
+ var onDestruct = function onDestruct() {
23
+ var _destructorRef$curren;
24
+ var isUnmount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
25
+ (_destructorRef$curren = destructorRef.current) === null || _destructorRef$curren === void 0 || _destructorRef$curren.call(destructorRef, isUnmount);
26
+ };
27
+ var onCreate = (0, _ahooks.useMemoizedFn)(function () {
28
+ onDestruct();
29
+ // `destructor` 一定是在执行回调的时候,同步绑定的,保持两个回调内的闭包变量一致
30
+ destructorRef.current = destructor;
31
+ return callback();
32
+ });
33
+ (0, _ahooks.useUnmount)(function () {
34
+ onDestruct(true);
35
+ });
36
+ return (0, _ahooks.useCreation)(function () {
37
+ void depsKey;
38
+ return onCreate();
39
+ }, [depsKey, onCreate]);
40
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });