@mic-rexjs/usecases-react 1.8.0 → 2.0.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.
Files changed (73) hide show
  1. package/README.md +1 -1
  2. package/dist/index.min.js +1 -1
  3. package/es/configs/defaultUseCaseContext/index.d.ts +2 -3
  4. package/es/configs/defaultUseCaseContext/index.js +1 -1
  5. package/es/configs/defaultUseCaseContext/types.d.ts +11 -3
  6. package/es/configs/useCaseContextReferenceMap/index.d.ts +1 -0
  7. package/es/configs/useCaseContextReferenceMap/index.js +1 -0
  8. package/es/configs/useCaseContextReferenceMap/types.d.ts +8 -0
  9. package/es/enums/UseCaseModes/index.d.ts +6 -0
  10. package/es/enums/UseCaseModes/index.js +7 -0
  11. package/es/hooks/useChangeCallbackCollection/index.d.ts +3 -0
  12. package/es/hooks/useChangeCallbackCollection/index.js +29 -0
  13. package/es/hooks/useGlobalUseCase/index.d.ts +2 -0
  14. package/es/hooks/useGlobalUseCase/index.js +11 -0
  15. package/es/hooks/useGlobalUseCase/index.test.js +71 -0
  16. package/es/hooks/useGlobalUseCase/types.d.ts +12 -0
  17. package/es/hooks/useGlobalUseCase/types.js +1 -0
  18. package/es/hooks/useProvider/index.d.ts +3 -5
  19. package/es/hooks/useProvider/index.js +25 -17
  20. package/es/hooks/useStatelessUseCase/index.d.ts +2 -0
  21. package/es/hooks/useStatelessUseCase/index.js +8 -0
  22. package/es/hooks/useStatelessUseCase/index.test.d.ts +1 -0
  23. package/es/hooks/useStatelessUseCase/index.test.js +75 -0
  24. package/es/hooks/useStatelessUseCase/types.d.ts +5 -0
  25. package/es/hooks/useStatelessUseCase/types.js +1 -0
  26. package/es/hooks/useUseCase/index.js +27 -29
  27. package/es/hooks/useUseCase/index.test.js +243 -207
  28. package/es/hooks/useUseCase/types.d.ts +55 -8
  29. package/es/hooks/useUseCaseContext/index.d.ts +3 -3
  30. package/es/hooks/useUseCaseContext/index.js +35 -6
  31. package/es/hooks/useUseCaseContext/index.test.d.ts +1 -0
  32. package/es/hooks/useUseCaseContext/index.test.js +60 -0
  33. package/es/index.d.ts +2 -0
  34. package/es/index.js +2 -0
  35. package/es/methods/getRootEntity/index.d.ts +2 -1
  36. package/es/methods/getRootEntity/index.js +6 -5
  37. package/es/methods/initEntityReducers/index.js +2 -3
  38. package/es/methods/toMaxArguments/index.d.ts +3 -0
  39. package/es/methods/toMaxArguments/index.js +28 -0
  40. package/es/methods/triggerCallbacks/index.d.ts +2 -3
  41. package/es/methods/triggerCallbacks/index.js +3 -12
  42. package/lib/configs/defaultUseCaseContext/index.js +1 -1
  43. package/lib/configs/useCaseContextReferenceMap/index.js +8 -0
  44. package/lib/enums/UseCaseModes/index.js +14 -0
  45. package/lib/hooks/useChangeCallbackCollection/index.js +37 -0
  46. package/lib/hooks/useGlobalUseCase/index.js +25 -0
  47. package/lib/hooks/useGlobalUseCase/index.test.js +78 -0
  48. package/lib/hooks/useProvider/index.js +30 -24
  49. package/lib/hooks/useStatelessUseCase/index.js +22 -0
  50. package/lib/hooks/useStatelessUseCase/index.test.js +78 -0
  51. package/lib/hooks/useStatelessUseCase/types.js +5 -0
  52. package/lib/hooks/useUseCase/index.js +40 -31
  53. package/lib/hooks/useUseCase/index.test.js +337 -288
  54. package/lib/hooks/useUseCaseContext/index.js +37 -6
  55. package/lib/hooks/useUseCaseContext/index.test.js +75 -0
  56. package/lib/index.js +15 -1
  57. package/lib/methods/getRootEntity/index.js +6 -5
  58. package/lib/methods/initEntityReducers/index.js +3 -6
  59. package/lib/methods/toMaxArguments/index.js +25 -0
  60. package/lib/methods/triggerCallbacks/index.js +3 -13
  61. package/package.json +3 -3
  62. package/es/configs/usecaseContextMap/index.d.ts +0 -1
  63. package/es/configs/usecaseContextMap/index.js +0 -1
  64. package/es/configs/usecaseContextMap/types.d.ts +0 -7
  65. package/es/hooks/useOptionsRefCollection/index.d.ts +0 -3
  66. package/es/hooks/useOptionsRefCollection/index.js +0 -22
  67. package/es/hooks/useOptionsRefCollection/types.d.ts +0 -2
  68. package/lib/configs/usecaseContextMap/index.js +0 -8
  69. package/lib/hooks/useOptionsRefCollection/index.js +0 -29
  70. /package/es/configs/{usecaseContextMap → useCaseContextReferenceMap}/types.js +0 -0
  71. /package/es/hooks/{useOptionsRefCollection/types.js → useGlobalUseCase/index.test.d.ts} +0 -0
  72. /package/lib/configs/{usecaseContextMap → useCaseContextReferenceMap}/types.js +0 -0
  73. /package/lib/hooks/{useOptionsRefCollection → useGlobalUseCase}/types.js +0 -0
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.useUseCase = void 0;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
9
  var _ahooks = require("ahooks");
11
10
  var _react = require("react");
@@ -14,52 +13,62 @@ var _useConstantFn = require("../useConstantFn");
14
13
  var _useProvider = require("../useProvider");
15
14
  var _useCompareDeps = require("../useCompareDeps");
16
15
  var _initEntityReducers = require("../../methods/initEntityReducers");
17
- var _useOptionsRefCollection = require("../useOptionsRefCollection");
18
16
  var _triggerCallbacks = require("../../methods/triggerCallbacks");
19
17
  var _getRootEntity = require("../../methods/getRootEntity");
20
18
  var _useUseCaseContext = require("../useUseCaseContext");
21
19
  var _defaultUseCaseContext = require("../../configs/defaultUseCaseContext");
22
20
  var _useIsRenderingRef = require("../useIsRenderingRef");
23
21
  var _cacheReducerCalls = require("../../methods/cacheReducerCalls");
24
- var useUseCase = function useUseCase(arg1, arg2, arg3, arg4) {
25
- var hasInitialEntity = (0, _useConstant.useConstant)(typeof arg2 === 'function');
26
- var options = (hasInitialEntity ? arg3 : arg2) || {};
27
- var stateless = options.stateless;
28
- var _useState = (0, _react.useState)(hasInitialEntity && !stateless ? arg1 : null),
22
+ var _UseCaseModes = require("../../enums/UseCaseModes");
23
+ var _toMaxArguments3 = require("../../methods/toMaxArguments");
24
+ var _useChangeCallbackCollection = require("../useChangeCallbackCollection");
25
+ var useUseCase = function useUseCase() {
26
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ args[_key] = arguments[_key];
28
+ }
29
+ var _toMaxArguments = (0, _toMaxArguments3.toMaxArguments)(args),
30
+ _toMaxArguments2 = (0, _slicedToArray2["default"])(_toMaxArguments, 5),
31
+ unsafeEntity = _toMaxArguments2[0],
32
+ unsafeUsecase = _toMaxArguments2[1],
33
+ unsafeMode = _toMaxArguments2[2],
34
+ options = _toMaxArguments2[3],
35
+ deps = _toMaxArguments2[4];
36
+ var _useState = (0, _react.useState)(unsafeEntity),
29
37
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
30
38
  entityState = _useState2[0],
31
39
  setEntityState = _useState2[1];
32
- var deps = (hasInitialEntity ? arg4 : arg3) || [];
40
+ var usecase = (0, _useConstantFn.useConstantFn)(unsafeUsecase);
41
+ var entityUseCase = usecase;
42
+ var mode = (0, _useConstant.useConstant)(unsafeMode);
33
43
  var depsKey = (0, _useCompareDeps.useCompareDeps)(deps);
34
44
  var isRenderingRef = (0, _useIsRenderingRef.useIsRenderingRef)();
35
- var usecase = (0, _useConstantFn.useConstantFn)(hasInitialEntity ? arg2 : arg1);
36
- var entityUseCase = usecase;
45
+ var isContextRoot = (0, _useConstant.useConstant)(typeof args[1] === 'function');
37
46
  var defaultContext = _defaultUseCaseContext.defaultUseCaseContext;
38
- var context = (0, _useUseCaseContext.useUseCaseContext)(entityUseCase, hasInitialEntity ? null : defaultContext);
39
- var _useContext = (0, _react.useContext)(context),
40
- contextEntity = _useContext.entity,
41
- _useContext$reducers = _useContext.reducers,
42
- contextEntityReducers = _useContext$reducers === void 0 ? null : _useContext$reducers,
43
- contextOptionsRefCollection = _useContext.optionsRefCollection;
44
- // 只有 `contextOptionsRefCollection` 是可控的,是当前 `hook` 生成的,所以用其来判断最保险
45
- var hasContextOptionsRefCollection = (0, _typeof2["default"])(contextOptionsRefCollection) === 'object';
47
+ var context = (0, _useUseCaseContext.useUseCaseContext)(entityUseCase, isContextRoot ? null : defaultContext);
48
+ var getContextValue = (0, _react.useContext)(context);
49
+ var hasContextValueGetter = getContextValue !== null;
50
+ var _ref = (getContextValue === null || getContextValue === void 0 ? void 0 : getContextValue()) || {},
51
+ contextEntity = _ref.entity,
52
+ _ref$reducers = _ref.reducers,
53
+ contextEntityReducers = _ref$reducers === void 0 ? null : _ref$reducers,
54
+ _ref$changeCallbackCo = _ref.changeCallbackCollection,
55
+ contextChangeCallbackCollection = _ref$changeCallbackCo === void 0 ? null : _ref$changeCallbackCo;
46
56
  // 是否需要初始化根 `redurcers`
47
- var isRoot = hasInitialEntity || !hasContextOptionsRefCollection;
57
+ var isRoot = isContextRoot || !hasContextValueGetter;
48
58
  // 是否为上下文模式
49
- var isContextMode = hasInitialEntity || hasContextOptionsRefCollection;
50
- // 获取 `optionsRefCollection`
51
- var optionsRefCollection = (0, _useOptionsRefCollection.useOptionsRefCollection)(isRoot, contextOptionsRefCollection || null, options);
59
+ var isContextMode = isContextRoot || hasContextValueGetter;
60
+ var changeCallbackCollection = (0, _useChangeCallbackCollection.useChangeCallbackCollection)(isRoot, contextChangeCallbackCollection, options);
52
61
  var entity = (0, _ahooks.useCreation)(function () {
53
- if (!hasInitialEntity) {
62
+ if (!isContextRoot) {
54
63
  return contextEntity;
55
64
  }
56
- return (0, _getRootEntity.getRootEntity)(entityState, arg1, stateless);
57
- }, [hasInitialEntity, contextEntity, stateless, entityState, arg1]);
65
+ return (0, _getRootEntity.getRootEntity)(entityState, unsafeEntity, mode);
66
+ }, [isContextRoot, contextEntity, mode, entityState, unsafeEntity]);
58
67
  var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
59
- if (!stateless) {
68
+ if ((mode & _UseCaseModes.UseCaseModes.Stateless) !== _UseCaseModes.UseCaseModes.Stateless) {
60
69
  setEntityState(newEntity);
61
70
  }
62
- (0, _triggerCallbacks.triggerCallbacks)(optionsRefCollection, newEntity, oldEntity);
71
+ (0, _triggerCallbacks.triggerCallbacks)(changeCallbackCollection, newEntity, oldEntity);
63
72
  });
64
73
  var createRootEntityReducers = (0, _ahooks.useMemoizedFn)(function () {
65
74
  var initOptions = options;
@@ -70,11 +79,11 @@ var useUseCase = function useUseCase(arg1, arg2, arg3, arg4) {
70
79
  });
71
80
  var rootEntityReducers = (0, _ahooks.useCreation)(function () {
72
81
  void depsKey;
73
- if (!hasInitialEntity) {
82
+ if (!isContextRoot) {
74
83
  return null;
75
84
  }
76
85
  return createRootEntityReducers();
77
- }, [hasInitialEntity, depsKey, createRootEntityReducers]);
86
+ }, [isContextRoot, depsKey, createRootEntityReducers]);
78
87
  var entityReducers = (0, _ahooks.useCreation)(function () {
79
88
  return rootEntityReducers || contextEntityReducers || {};
80
89
  }, [rootEntityReducers, contextEntityReducers]);
@@ -85,11 +94,11 @@ var useUseCase = function useUseCase(arg1, arg2, arg3, arg4) {
85
94
  }
86
95
  return createReducers();
87
96
  }, [isContextMode, depsKey, createReducers]);
88
- var Provider = (0, _useProvider.useProvider)(context, entity, entityReducers, optionsRefCollection);
97
+ var Provider = (0, _useProvider.useProvider)(context, mode, entity, entityReducers, changeCallbackCollection);
89
98
  var createCoreCollection = (0, _ahooks.useMemoizedFn)(function (coreEntity, coreReducers) {
90
99
  return [coreEntity, (0, _cacheReducerCalls.cacheReducerCalls)(coreReducers, function () {
91
100
  return isRenderingRef.current;
92
- }), hasInitialEntity ? Provider : null];
101
+ }), isContextRoot ? Provider : null];
93
102
  });
94
103
  return (0, _ahooks.useCreation)(function () {
95
104
  if (isContextMode) {