@mic-rexjs/usecases-react 2.0.2 → 2.1.1

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 (102) hide show
  1. package/dist/index.min.js +1 -1
  2. package/es/components/UseCaseFragment/index.d.ts +2 -2
  3. package/es/components/UseCaseFragment/types.d.ts +3 -3
  4. package/es/configs/defaultUseCaseContext/index.d.ts +2 -3
  5. package/es/configs/defaultUseCaseContext/types.d.ts +10 -12
  6. package/es/configs/useCaseContextReferenceMap/types.d.ts +5 -5
  7. package/es/enums/UseCaseArgumentTypes/index.d.ts +5 -0
  8. package/es/enums/UseCaseArgumentTypes/index.js +6 -0
  9. package/es/enums/UseCaseModeErrors/index.d.ts +4 -0
  10. package/es/enums/UseCaseModeErrors/index.js +5 -0
  11. package/es/enums/UseCaseStatuses/index.d.ts +10 -0
  12. package/es/enums/UseCaseStatuses/index.js +18 -0
  13. package/es/hooks/useArgumentTypes/index.d.ts +3 -0
  14. package/es/hooks/useArgumentTypes/index.js +19 -0
  15. package/es/hooks/useContextualItem/index.d.ts +3 -0
  16. package/es/hooks/useContextualItem/index.js +13 -0
  17. package/es/hooks/useContextualItem/types.d.ts +3 -0
  18. package/es/hooks/useEntity/index.d.ts +4 -0
  19. package/es/hooks/useEntity/index.js +49 -0
  20. package/es/hooks/useGlobalUseCase/index.js +2 -8
  21. package/es/hooks/useGlobalUseCase/index.test.js +6 -56
  22. package/es/hooks/useGlobalUseCase/types.d.ts +4 -11
  23. package/es/hooks/useMemoizedCall/index.d.ts +2 -0
  24. package/es/hooks/useMemoizedCall/index.js +15 -0
  25. package/es/hooks/useProvider/index.d.ts +4 -4
  26. package/es/hooks/useProvider/index.js +16 -17
  27. package/es/hooks/useSafeMode/index.d.ts +3 -0
  28. package/es/hooks/useSafeMode/index.js +18 -0
  29. package/es/hooks/useStatelessUseCase/index.js +2 -5
  30. package/es/hooks/useStatelessUseCase/index.test.js +4 -42
  31. package/es/hooks/useStatelessUseCase/types.d.ts +2 -4
  32. package/es/hooks/useUseCase/index.js +45 -75
  33. package/es/hooks/useUseCase/index.test.js +74 -20
  34. package/es/hooks/useUseCase/types.d.ts +40 -45
  35. package/es/hooks/useUseCaseContext/index.d.ts +5 -3
  36. package/es/hooks/useUseCaseContext/index.js +10 -3
  37. package/es/hooks/useUseCaseContext/index.test.js +39 -12
  38. package/es/hooks/useUseCaseStatuses/index.d.ts +6 -0
  39. package/es/hooks/useUseCaseStatuses/index.js +29 -0
  40. package/es/index.d.ts +1 -1
  41. package/es/methods/cacheCall/index.d.ts +2 -0
  42. package/es/methods/cacheCall/index.js +26 -0
  43. package/es/methods/cacheCall/types.d.ts +13 -0
  44. package/es/methods/cacheCalls/index.d.ts +2 -0
  45. package/es/methods/cacheCalls/index.js +8 -0
  46. package/es/methods/fillArguments/index.d.ts +5 -0
  47. package/es/methods/fillArguments/index.js +41 -0
  48. package/es/methods/fillArguments/types.d.ts +10 -0
  49. package/es/methods/fillArguments/types.js +1 -0
  50. package/es/methods/getRenderingEntity/index.d.ts +3 -0
  51. package/es/methods/getRenderingEntity/index.js +13 -0
  52. package/es/methods/initEntityReducers/index.d.ts +2 -3
  53. package/es/methods/initEntityReducers/index.js +2 -3
  54. package/es/methods/triggerCallbacks/index.d.ts +1 -1
  55. package/es/methods/triggerCallbacks/index.js +3 -3
  56. package/lib/enums/UseCaseArgumentTypes/index.js +13 -0
  57. package/lib/enums/UseCaseModeErrors/index.js +12 -0
  58. package/lib/enums/UseCaseStatuses/index.js +25 -0
  59. package/lib/hooks/useArgumentTypes/index.js +31 -0
  60. package/lib/hooks/useContextualItem/index.js +21 -0
  61. package/lib/hooks/useEntity/index.js +63 -0
  62. package/lib/hooks/useGlobalUseCase/index.js +2 -15
  63. package/lib/hooks/useGlobalUseCase/index.test.js +5 -57
  64. package/lib/hooks/useMemoizedCall/index.js +22 -0
  65. package/lib/hooks/useProvider/index.js +18 -17
  66. package/lib/hooks/useSafeMode/index.js +25 -0
  67. package/lib/hooks/useStatelessUseCase/index.js +2 -12
  68. package/lib/hooks/useStatelessUseCase/index.test.js +2 -43
  69. package/lib/hooks/useUseCase/index.js +55 -83
  70. package/lib/hooks/useUseCase/index.test.js +104 -57
  71. package/lib/hooks/useUseCaseContext/index.js +12 -3
  72. package/lib/hooks/useUseCaseContext/index.test.js +45 -19
  73. package/lib/hooks/useUseCaseStatuses/index.js +36 -0
  74. package/lib/methods/cacheCall/index.js +42 -0
  75. package/lib/methods/cacheCalls/index.js +20 -0
  76. package/lib/methods/fillArguments/index.js +31 -0
  77. package/lib/methods/fillArguments/types.js +5 -0
  78. package/lib/methods/getRenderingEntity/index.js +20 -0
  79. package/lib/methods/initEntityReducers/index.js +2 -3
  80. package/lib/methods/triggerCallbacks/index.js +3 -3
  81. package/package.json +3 -3
  82. package/es/hooks/useChangeCallbackCollection/index.d.ts +0 -3
  83. package/es/hooks/useChangeCallbackCollection/index.js +0 -29
  84. package/es/methods/cacheReducerCalls/index.d.ts +0 -3
  85. package/es/methods/cacheReducerCalls/index.js +0 -26
  86. package/es/methods/cacheReducerCalls/types.d.ts +0 -11
  87. package/es/methods/getRootEntity/index.d.ts +0 -3
  88. package/es/methods/getRootEntity/index.js +0 -10
  89. package/es/methods/initEntityReducers/types.d.ts +0 -3
  90. package/es/methods/removeItem/index.d.ts +0 -1
  91. package/es/methods/removeItem/index.js +0 -7
  92. package/es/methods/toMaxArguments/index.d.ts +0 -3
  93. package/es/methods/toMaxArguments/index.js +0 -28
  94. package/lib/hooks/useChangeCallbackCollection/index.js +0 -37
  95. package/lib/methods/cacheReducerCalls/index.js +0 -45
  96. package/lib/methods/getRootEntity/index.js +0 -17
  97. package/lib/methods/removeItem/index.js +0 -14
  98. package/lib/methods/toMaxArguments/index.js +0 -25
  99. /package/es/{methods/cacheReducerCalls → hooks/useContextualItem}/types.js +0 -0
  100. /package/es/methods/{initEntityReducers → cacheCall}/types.js +0 -0
  101. /package/lib/{methods/cacheReducerCalls → hooks/useContextualItem}/types.js +0 -0
  102. /package/lib/methods/{initEntityReducers → cacheCall}/types.js +0 -0
@@ -0,0 +1,41 @@
1
+ import { UseCaseModes } from '../../enums/UseCaseModes';
2
+ import { UseCaseArgumentTypes } from '../../enums/UseCaseArgumentTypes';
3
+ export const fillArguments = (args, argumentTypes) => {
4
+ const [arg1, arg2, arg3, arg4, arg5] = args;
5
+ const hasEntity = (argumentTypes & UseCaseArgumentTypes.Entity) === UseCaseArgumentTypes.Entity;
6
+ const hasMode = (argumentTypes & UseCaseArgumentTypes.Mode) === UseCaseArgumentTypes.Mode;
7
+ if (hasEntity) {
8
+ if (hasMode) {
9
+ return [
10
+ arg1,
11
+ arg2,
12
+ arg3,
13
+ (arg4 || {}),
14
+ arg5 || [],
15
+ ];
16
+ }
17
+ return [
18
+ arg1,
19
+ arg2,
20
+ UseCaseModes.Normal,
21
+ (arg3 || {}),
22
+ (arg4 || []),
23
+ ];
24
+ }
25
+ if (hasMode) {
26
+ return [
27
+ null,
28
+ arg1,
29
+ arg2,
30
+ (arg3 || {}),
31
+ (arg4 || []),
32
+ ];
33
+ }
34
+ return [
35
+ null,
36
+ arg1,
37
+ UseCaseModes.Normal,
38
+ (arg2 || {}),
39
+ (arg3 || []),
40
+ ];
41
+ };
@@ -0,0 +1,10 @@
1
+ import { UseCaseModes } from '../../enums/UseCaseModes';
2
+ import { EntityGetter, UseCaseHookContextualOptions, UseCaseHookOptions } from '../../hooks/useUseCase/types';
3
+ import { EntityReducerMap, EntityUseCase, ReducerMap, UseCase } from '@mic-rexjs/usecases';
4
+ export type UseCaseHookFullParameters<T, TReducers extends ReducerMap, TUseCaseOptions extends object> = [
5
+ entity: T | EntityGetter<T>,
6
+ usecase: UseCase<TReducers, TUseCaseOptions> | EntityUseCase<T, TReducers & EntityReducerMap<T>, TUseCaseOptions>,
7
+ mode: UseCaseModes,
8
+ options: TUseCaseOptions | UseCaseHookOptions<T, TUseCaseOptions> | UseCaseHookContextualOptions<T>,
9
+ deps: unknown[]
10
+ ];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
2
+ import { EntityGetter } from '../../hooks/useUseCase/types';
3
+ export declare const getRenderingEntity: <T>(statuses: UseCaseStatuses, entityState: T, rootEntity: T | EntityGetter<T>, contextEntity: T) => T;
@@ -0,0 +1,13 @@
1
+ import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
2
+ export const getRenderingEntity = (statuses, entityState, rootEntity, contextEntity) => {
3
+ if ((statuses & UseCaseStatuses.EntityRootEnabled) !== UseCaseStatuses.EntityRootEnabled) {
4
+ return contextEntity;
5
+ }
6
+ if ((statuses & UseCaseStatuses.StatelessEnabled) !== UseCaseStatuses.StatelessEnabled) {
7
+ return entityState;
8
+ }
9
+ if (typeof rootEntity === 'function') {
10
+ return rootEntity();
11
+ }
12
+ return rootEntity;
13
+ };
@@ -1,5 +1,4 @@
1
- import { EntityReducers, EntityUseCase } from '@mic-rexjs/usecases';
1
+ import { EntityReducerMap, EntityStore, EntityUseCase } from '@mic-rexjs/usecases';
2
2
  import { UseCaseHookOptions } from '../../hooks/useUseCase/types';
3
3
  import { ContextualEntityReducers } from '../../configs/defaultUseCaseContext/types';
4
- import { EntityChangeEventHandler } from './types';
5
- export declare const initEntityReducers: <T, TEntityReducers extends EntityReducers<T>, TUseCaseOptions extends object = object>(entity: T, usecase: EntityUseCase<T, TEntityReducers, TUseCaseOptions>, options: UseCaseHookOptions<T, TUseCaseOptions>, onEntityChange: EntityChangeEventHandler<T>) => ContextualEntityReducers<T, TEntityReducers>;
4
+ export declare const initEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(usecase: EntityUseCase<T, TEntityReducers, TUseCaseOptions>, store: EntityStore<T>, options: UseCaseHookOptions<T, TUseCaseOptions>) => ContextualEntityReducers<T, TEntityReducers>;
@@ -1,10 +1,9 @@
1
1
  import { createEntityReducers } from '@mic-rexjs/usecases';
2
- export const initEntityReducers = (entity, usecase, options, onEntityChange) => {
2
+ export const initEntityReducers = (usecase, store, options) => {
3
3
  const { watch, onChange, options: usecaseOptions, ...restUseCaseOptions } = options;
4
- return createEntityReducers(entity, usecase, {
4
+ return createEntityReducers(store, usecase, {
5
5
  ...restUseCaseOptions,
6
6
  ...usecaseOptions,
7
- onChange: onEntityChange,
8
7
  onGenerate(newEntity, result) {
9
8
  return result;
10
9
  },
@@ -1,2 +1,2 @@
1
1
  import { ChangeCallback } from '../../configs/defaultUseCaseContext/types';
2
- export declare const triggerCallbacks: <T>(changeCallbackCollection: ChangeCallback<T>[], newEntity: T, oldEntity: T) => void;
2
+ export declare const triggerCallbacks: <T>(callbacks: ChangeCallback<T>[], newEntity: T, oldEntity: T) => void;
@@ -1,5 +1,5 @@
1
- export const triggerCallbacks = (changeCallbackCollection, newEntity, oldEntity) => {
2
- for (let { length: i } = changeCallbackCollection; i > 0; i--) {
3
- changeCallbackCollection[i - 1](newEntity, oldEntity);
1
+ export const triggerCallbacks = (callbacks, newEntity, oldEntity) => {
2
+ for (let { length: i } = callbacks; i > 0; i--) {
3
+ callbacks[i - 1](newEntity, oldEntity);
4
4
  }
5
5
  };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UseCaseArgumentTypes = void 0;
7
+ var UseCaseArgumentTypes;
8
+ exports.UseCaseArgumentTypes = UseCaseArgumentTypes;
9
+ (function (UseCaseArgumentTypes) {
10
+ UseCaseArgumentTypes[UseCaseArgumentTypes["None"] = 0] = "None";
11
+ UseCaseArgumentTypes[UseCaseArgumentTypes["Entity"] = 2] = "Entity";
12
+ UseCaseArgumentTypes[UseCaseArgumentTypes["Mode"] = 4] = "Mode";
13
+ })(UseCaseArgumentTypes || (exports.UseCaseArgumentTypes = UseCaseArgumentTypes = {}));
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UseCaseModeErrors = void 0;
7
+ var UseCaseModeErrors;
8
+ exports.UseCaseModeErrors = UseCaseModeErrors;
9
+ (function (UseCaseModeErrors) {
10
+ UseCaseModeErrors["UnsupportedGlobal"] = "useUseCase does not support \"global\" mode with entity usecase";
11
+ UseCaseModeErrors["UnsupportedStateless"] = "useUseCase does not support \"stateless\" mode with non-entity usecase";
12
+ })(UseCaseModeErrors || (exports.UseCaseModeErrors = UseCaseModeErrors = {}));
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UseCaseStatuses = void 0;
7
+ var UseCaseStatuses;
8
+ exports.UseCaseStatuses = UseCaseStatuses;
9
+ (function (UseCaseStatuses) {
10
+ UseCaseStatuses[UseCaseStatuses["None"] = 0] = "None";
11
+ // 是否需要初始化根 `redurcers`
12
+ UseCaseStatuses[UseCaseStatuses["RootEnabled"] = 2] = "RootEnabled";
13
+ // 是否为上下文模式
14
+ UseCaseStatuses[UseCaseStatuses["ContextEnabled"] = 4] = "ContextEnabled";
15
+ // 是否有 `entity`
16
+ UseCaseStatuses[UseCaseStatuses["EntityEnabled"] = 8] = "EntityEnabled";
17
+ // 是否为需要提供 `Provider` 去挂载根 `context`
18
+ UseCaseStatuses[UseCaseStatuses["ContextRootEnabled"] = 22] = "ContextRootEnabled";
19
+ // 是否初始化与 `entity` 相关的 `reducers`
20
+ UseCaseStatuses[UseCaseStatuses["EntityRootEnabled"] = 62] = "EntityRootEnabled";
21
+ // 是否不需要 `entity` 状态管理
22
+ UseCaseStatuses[UseCaseStatuses["StatelessEnabled"] = 72] = "StatelessEnabled";
23
+ // 是否为全局模式
24
+ UseCaseStatuses[UseCaseStatuses["GlobalEnabled"] = 150] = "GlobalEnabled";
25
+ })(UseCaseStatuses || (exports.UseCaseStatuses = UseCaseStatuses = {}));
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useArgumentTypes = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _UseCaseArgumentTypes = require("../../enums/UseCaseArgumentTypes");
11
+ var _useConstant = require("../useConstant");
12
+ var useArgumentTypes = function useArgumentTypes(args) {
13
+ return (0, _useConstant.useConstant)(function () {
14
+ var types = _UseCaseArgumentTypes.UseCaseArgumentTypes.None;
15
+ var _args = (0, _slicedToArray2["default"])(args, 3),
16
+ arg2 = _args[1],
17
+ arg3 = _args[2];
18
+ var type2 = (0, _typeof2["default"])(arg2);
19
+ if (type2 === 'function') {
20
+ types |= _UseCaseArgumentTypes.UseCaseArgumentTypes.Entity;
21
+ }
22
+ switch ('number') {
23
+ case type2:
24
+ case (0, _typeof2["default"])(arg3):
25
+ types |= _UseCaseArgumentTypes.UseCaseArgumentTypes.Mode;
26
+ break;
27
+ }
28
+ return types;
29
+ });
30
+ };
31
+ exports.useArgumentTypes = useArgumentTypes;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useContextualItem = void 0;
7
+ var _ahooks = require("ahooks");
8
+ var _UseCaseStatuses = require("../../enums/UseCaseStatuses");
9
+ var _useMemoizedCall = require("../useMemoizedCall");
10
+ var useContextualItem = function useContextualItem(statuses, contextItem, createFactory) {
11
+ var deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
12
+ var create = (0, _useMemoizedCall.useMemoizedCall)(createFactory, deps);
13
+ return (0, _ahooks.useCreation)(function () {
14
+ var rootEnabled = (statuses & _UseCaseStatuses.UseCaseStatuses.RootEnabled) === _UseCaseStatuses.UseCaseStatuses.RootEnabled;
15
+ if (!rootEnabled && contextItem) {
16
+ return contextItem;
17
+ }
18
+ return create();
19
+ }, [statuses, contextItem, create]);
20
+ };
21
+ exports.useContextualItem = useContextualItem;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEntity = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _usecases = require("@mic-rexjs/usecases");
11
+ var _UseCaseStatuses = require("../../enums/UseCaseStatuses");
12
+ var _getRenderingEntity = require("../../methods/getRenderingEntity");
13
+ var _useContextualItem = require("../useContextualItem");
14
+ var _ahooks = require("ahooks");
15
+ var _triggerWatchers = require("../../methods/triggerWatchers");
16
+ var useEntity = function useEntity(statuses, rootEntity, contextStore, options) {
17
+ var _useState = (0, _react.useState)(rootEntity),
18
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
19
+ entityState = _useState2[0],
20
+ setEntityState = _useState2[1];
21
+ var contextEntity = (contextStore === null || contextStore === void 0 ? void 0 : contextStore.getValue()) || null;
22
+ var renderingEntity = (0, _getRenderingEntity.getRenderingEntity)(statuses, entityState, rootEntity, contextEntity);
23
+ var optionsRef = (0, _ahooks.useLatest)(options);
24
+ var entityRootEnabled = (statuses & _UseCaseStatuses.UseCaseStatuses.EntityRootEnabled) === _UseCaseStatuses.UseCaseStatuses.EntityRootEnabled;
25
+ var store = (0, _useContextualItem.useContextualItem)(statuses, contextStore, function () {
26
+ if (!entityRootEnabled) {
27
+ return new _usecases.EntityStore(null);
28
+ }
29
+ var stateless = (statuses & _UseCaseStatuses.UseCaseStatuses.StatelessEnabled) === _UseCaseStatuses.UseCaseStatuses.StatelessEnabled;
30
+ return new _usecases.EntityStore(renderingEntity, function (newEntity) {
31
+ if (stateless) {
32
+ return;
33
+ }
34
+ setEntityState(newEntity);
35
+ });
36
+ });
37
+ if (entityRootEnabled) {
38
+ // 执行同步操作
39
+ store.setValue(renderingEntity);
40
+ }
41
+ (0, _react.useEffect)(function () {
42
+ if ((statuses & _UseCaseStatuses.UseCaseStatuses.EntityEnabled) !== _UseCaseStatuses.UseCaseStatuses.EntityEnabled) {
43
+ return;
44
+ }
45
+ var watcher = function watcher(newEntity, oldEntity) {
46
+ var _optionsRef$current = optionsRef.current,
47
+ onChange = _optionsRef$current.onChange,
48
+ watch = _optionsRef$current.watch;
49
+ if (watch) {
50
+ (0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
51
+ }
52
+ onChange === null || onChange === void 0 ? void 0 : onChange(newEntity, oldEntity);
53
+ };
54
+ store.watch(watcher);
55
+ return function () {
56
+ store.unwatch(watcher);
57
+ };
58
+ }, [statuses, store, optionsRef]);
59
+ return (0, _ahooks.useCreation)(function () {
60
+ return [renderingEntity, store];
61
+ }, [renderingEntity, store]);
62
+ };
63
+ exports.useEntity = useEntity;
@@ -1,25 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.useGlobalUseCase = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
7
  var _useUseCase = require("../useUseCase");
10
8
  var _UseCaseModes = require("../../enums/UseCaseModes");
11
- var useGlobalUseCase = function useGlobalUseCase() {
12
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13
- args[_key] = arguments[_key];
14
- }
15
- var arg1 = args[0],
16
- arg2 = args[1],
17
- rest = args.slice(2);
18
- var isContextRoot = typeof arg2 === 'function';
19
- var coreCollection = _useUseCase.useUseCase.apply(void 0, (0, _toConsumableArray2["default"])(isContextRoot ? [arg1, arg2, _UseCaseModes.UseCaseModes.Global].concat((0, _toConsumableArray2["default"])(rest)) : args));
20
- if (isContextRoot) {
21
- return coreCollection;
22
- }
23
- return coreCollection[1];
9
+ var useGlobalUseCase = function useGlobalUseCase(useCase, options, deps) {
10
+ return (0, _useUseCase.useUseCase)(useCase, _UseCaseModes.UseCaseModes.Global, options, deps);
24
11
  };
25
12
  exports.useGlobalUseCase = useGlobalUseCase;
@@ -1,78 +1,26 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  var _typeof = require("@babel/runtime/helpers/typeof");
5
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
6
- var _jsxRuntime = require("react/jsx-runtime");
7
4
  var _ = require(".");
8
- var _usecases = require("@mic-rexjs/usecases");
9
5
  var _globals = require("@jest/globals");
10
6
  var _UseCaseModes = require("../../enums/UseCaseModes");
11
7
  var _react = require("@testing-library/react");
12
- var _ahooks = require("ahooks");
13
8
  var useUseCaseModule = _interopRequireWildcard(require("../useUseCase"));
14
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
- var numberUseCase = function numberUseCase() {
17
- return (0, _usecases.entityUseCase)();
11
+ var mathUseCase = function mathUseCase() {
12
+ return {};
18
13
  };
19
14
  (0, _globals.describe)('useGlobalUseCase', function () {
20
- (0, _globals.describe)('`useGlobalUseCase` should work the same as `RootCoreCollectionHook`', function () {
15
+ (0, _globals.describe)('`useGlobalUseCase` should work the same as `GlobalPseudoCoreCollectionHook`', function () {
21
16
  (0, _globals.test)('check `useUseCase` has received correct arguments', function () {
22
17
  var useMockedUseCase = _globals.jest.fn();
23
18
  _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockImplementation(useMockedUseCase);
24
19
  (0, _react.renderHook)(function () {
25
- (0, _.useGlobalUseCase)(1, numberUseCase);
20
+ (0, _.useGlobalUseCase)(mathUseCase);
26
21
  });
27
- (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(1, numberUseCase, _UseCaseModes.UseCaseModes.Global);
22
+ (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(mathUseCase, _UseCaseModes.UseCaseModes.Global, void 0, void 0);
28
23
  _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
29
24
  });
30
- (0, _globals.test)('should should return `CoreCollection` with Provider', function () {
31
- var _renderHook = (0, _react.renderHook)(function () {
32
- return (0, _.useGlobalUseCase)(1, numberUseCase);
33
- }),
34
- result = _renderHook.result;
35
- var current = result.current;
36
- (0, _globals.expect)(current).toEqual([1, {
37
- setEntity: _globals.expect.any(Function)
38
- }, _globals.expect.any(Function)]);
39
- });
40
- });
41
- (0, _globals.describe)('`useGlobalUseCase` should work the same as `GlobalReducersHook`', function () {
42
- (0, _globals.test)('check `useUseCase` has received correct arguments', function () {
43
- var useMockedUseCase = _globals.jest.fn();
44
- _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockImplementation(useMockedUseCase);
45
- (0, _react.renderHook)(function () {
46
- try {
47
- (0, _.useGlobalUseCase)(numberUseCase);
48
- } catch (e) {
49
- //
50
- }
51
- });
52
- (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(numberUseCase);
53
- _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
54
- });
55
- (0, _globals.test)('should should only return reducers', function () {
56
- var onChildMount = _globals.jest.fn();
57
- var Child = function Child() {
58
- var reducers = (0, _.useGlobalUseCase)(numberUseCase);
59
- (0, _ahooks.useMount)(function () {
60
- onChildMount(reducers);
61
- });
62
- return null;
63
- };
64
- var Parent = function Parent() {
65
- var _useGlobalUseCase = (0, _.useGlobalUseCase)(1, numberUseCase),
66
- _useGlobalUseCase2 = (0, _slicedToArray2["default"])(_useGlobalUseCase, 3),
67
- Provider = _useGlobalUseCase2[2];
68
- return (0, _jsxRuntime.jsx)(Provider, {
69
- children: (0, _jsxRuntime.jsx)(Child, {})
70
- });
71
- };
72
- (0, _react.render)((0, _jsxRuntime.jsx)(Parent, {}));
73
- (0, _globals.expect)(onChildMount).toHaveBeenCalledWith({
74
- setEntity: _globals.expect.any(Function)
75
- });
76
- });
77
25
  });
78
26
  });
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useMemoizedCall = void 0;
7
+ var _ahooks = require("ahooks");
8
+ var _useCompareDeps = require("../useCompareDeps");
9
+ var _cacheCall = require("../../methods/cacheCall");
10
+ var useMemoizedCall = function useMemoizedCall(factory, deps) {
11
+ var depsKey = (0, _useCompareDeps.useCompareDeps)(deps);
12
+ var factoryRef = (0, _ahooks.useLatest)(factory);
13
+ return (0, _ahooks.useCreation)(function () {
14
+ void depsKey;
15
+ return (0, _cacheCall.cacheCall)(factoryRef.current, {
16
+ onCompare: function onCompare() {
17
+ return true;
18
+ }
19
+ });
20
+ }, [depsKey, factoryRef]);
21
+ };
22
+ exports.useMemoizedCall = useMemoizedCall;
@@ -5,33 +5,34 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.useProvider = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
8
  var _ahooks = require("ahooks");
10
- var _UseCaseModes = require("../../enums/UseCaseModes");
11
- var _useCompareDeps = require("../useCompareDeps");
9
+ var _react = _interopRequireWildcard(require("react"));
12
10
  var _useConstantFn = require("../useConstantFn");
11
+ var _UseCaseStatuses = require("../../enums/UseCaseStatuses");
13
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
- var useProvider = function useProvider(context, mode, entity, reducers, changeCallbackCollection) {
16
- var isGlobal = (mode & _UseCaseModes.UseCaseModes.Global) === _UseCaseModes.UseCaseModes.Global;
17
- var contextValueRef = (0, _ahooks.useLatest)({
18
- entity: entity,
19
- reducers: reducers,
20
- changeCallbackCollection: changeCallbackCollection
21
- });
22
- var key = (0, _useCompareDeps.useCompareDeps)(isGlobal ? [] : [entity, reducers, changeCallbackCollection]);
23
- var getContextValue = (0, _react.useCallback)(function () {
24
- void key;
25
- return contextValueRef.current;
26
- }, [key, contextValueRef]);
27
- var getContextValueRef = (0, _ahooks.useLatest)(getContextValue);
14
+ var useProvider = function useProvider(statuses, context, store, reducers) {
15
+ var entity = store.getValue();
16
+ var contextValue = (0, _react.useMemo)(function () {
17
+ void entity;
18
+ if ((statuses & _UseCaseStatuses.UseCaseStatuses.EntityEnabled) === _UseCaseStatuses.UseCaseStatuses.EntityEnabled) {
19
+ return {
20
+ store: store,
21
+ reducers: reducers
22
+ };
23
+ }
24
+ return {
25
+ reducers: reducers
26
+ };
27
+ }, [statuses, entity, store, reducers]);
28
+ var contextValueRef = (0, _ahooks.useLatest)(contextValue);
28
29
  return (0, _useConstantFn.useConstantFn)(function (_ref) {
29
30
  var children = _ref.children,
30
31
  _ref$with = _ref["with"],
31
32
  withProviders = _ref$with === void 0 ? [] : _ref$with;
32
33
  var ContextProvider = context.Provider;
33
34
  return _react["default"].createElement(ContextProvider, {
34
- value: getContextValueRef.current
35
+ value: contextValueRef.current
35
36
  }, withProviders.reduceRight(function (currentChildren, withProvider) {
36
37
  return _react["default"].createElement(withProvider, {}, currentChildren);
37
38
  }, children));
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSafeMode = void 0;
7
+ var _UseCaseArgumentTypes = require("../../enums/UseCaseArgumentTypes");
8
+ var _UseCaseModes = require("../../enums/UseCaseModes");
9
+ var _useConstant = require("../useConstant");
10
+ var _UseCaseModeErrors = require("../../enums/UseCaseModeErrors");
11
+ var useSafeMode = function useSafeMode(unsafeMode, argumentTypes) {
12
+ return (0, _useConstant.useConstant)(function () {
13
+ if ((argumentTypes & _UseCaseArgumentTypes.UseCaseArgumentTypes.Entity) === _UseCaseArgumentTypes.UseCaseArgumentTypes.Entity) {
14
+ if ((unsafeMode & _UseCaseModes.UseCaseModes.Global) === _UseCaseModes.UseCaseModes.Global) {
15
+ throw _UseCaseModeErrors.UseCaseModeErrors.UnsupportedGlobal;
16
+ }
17
+ return unsafeMode;
18
+ }
19
+ if ((unsafeMode & _UseCaseModes.UseCaseModes.Stateless) === _UseCaseModes.UseCaseModes.Stateless) {
20
+ throw _UseCaseModeErrors.UseCaseModeErrors.UnsupportedStateless;
21
+ }
22
+ return unsafeMode;
23
+ });
24
+ };
25
+ exports.useSafeMode = useSafeMode;
@@ -1,22 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.useStatelessUseCase = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
7
  var _useUseCase = require("../useUseCase");
10
8
  var _UseCaseModes = require("../../enums/UseCaseModes");
11
- var useStatelessUseCase = function useStatelessUseCase() {
12
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13
- args[_key] = arguments[_key];
14
- }
15
- var arg1 = args[0],
16
- arg2 = args[1],
17
- rest = args.slice(2);
18
- var isContextRoot = typeof arg2 === 'function';
19
- var coreCollection = _useUseCase.useUseCase.apply(void 0, (0, _toConsumableArray2["default"])(isContextRoot ? [arg1, arg2, _UseCaseModes.UseCaseModes.Stateless].concat((0, _toConsumableArray2["default"])(rest)) : args));
20
- return coreCollection;
9
+ var useStatelessUseCase = function useStatelessUseCase(entity, useCase, options, deps) {
10
+ return (0, _useUseCase.useUseCase)(entity, useCase, _UseCaseModes.UseCaseModes.Stateless, options, deps);
21
11
  };
22
12
  exports.useStatelessUseCase = useStatelessUseCase;
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  var _typeof = require("@babel/runtime/helpers/typeof");
5
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
6
- var _jsxRuntime = require("react/jsx-runtime");
7
4
  var _usecases = require("@mic-rexjs/usecases");
8
5
  var _globals = require("@jest/globals");
9
6
  var _UseCaseModes = require("../../enums/UseCaseModes");
10
7
  var _react = require("@testing-library/react");
11
- var _ahooks = require("ahooks");
12
8
  var useUseCaseModule = _interopRequireWildcard(require("../useUseCase"));
13
9
  var _ = require(".");
14
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -24,7 +20,7 @@ var numberUseCase = function numberUseCase() {
24
20
  (0, _react.renderHook)(function () {
25
21
  (0, _.useStatelessUseCase)(1, numberUseCase);
26
22
  });
27
- (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(1, numberUseCase, _UseCaseModes.UseCaseModes.Stateless);
23
+ (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(1, numberUseCase, _UseCaseModes.UseCaseModes.Stateless, void 0, void 0);
28
24
  _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
29
25
  });
30
26
  (0, _globals.test)('should should return `CoreCollection` with Provider', function () {
@@ -35,44 +31,7 @@ var numberUseCase = function numberUseCase() {
35
31
  var current = result.current;
36
32
  (0, _globals.expect)(current).toEqual([1, {
37
33
  setEntity: _globals.expect.any(Function)
38
- }, _globals.expect.any(Function)]);
39
- });
40
- });
41
- (0, _globals.describe)('`useStatelessUseCase` should work the same as `ContextualCoreCollectionHook`', function () {
42
- (0, _globals.test)('check `useUseCase` has received correct arguments', function () {
43
- var useMockedUseCase = _globals.jest.fn();
44
- _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockImplementation(useMockedUseCase);
45
- (0, _react.renderHook)(function () {
46
- try {
47
- (0, _.useStatelessUseCase)(numberUseCase);
48
- } catch (e) {
49
- //
50
- }
51
- });
52
- (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(numberUseCase);
53
- _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
54
- });
55
- (0, _globals.test)('should should only return reducers', function () {
56
- var onChildMount = _globals.jest.fn();
57
- var Child = function Child() {
58
- var coreCollection = (0, _.useStatelessUseCase)(numberUseCase);
59
- (0, _ahooks.useMount)(function () {
60
- onChildMount(coreCollection);
61
- });
62
- return null;
63
- };
64
- var Parent = function Parent() {
65
- var _useStatelessUseCase = (0, _.useStatelessUseCase)(1, numberUseCase),
66
- _useStatelessUseCase2 = (0, _slicedToArray2["default"])(_useStatelessUseCase, 3),
67
- Provider = _useStatelessUseCase2[2];
68
- return (0, _jsxRuntime.jsx)(Provider, {
69
- children: (0, _jsxRuntime.jsx)(Child, {})
70
- });
71
- };
72
- (0, _react.render)((0, _jsxRuntime.jsx)(Parent, {}));
73
- (0, _globals.expect)(onChildMount).toHaveBeenCalledWith([1, {
74
- setEntity: _globals.expect.any(Function)
75
- }, null]);
34
+ }, _globals.expect.any(Function), void 0, void 0]);
76
35
  });
77
36
  });
78
37
  });