@mic-rexjs/usecases-react 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +1 -1
- package/es/components/UseCaseFragment/index.d.ts +2 -2
- package/es/components/UseCaseFragment/types.d.ts +3 -3
- package/es/configs/defaultUseCaseContext/index.d.ts +2 -3
- package/es/configs/defaultUseCaseContext/types.d.ts +13 -12
- package/es/configs/useCaseContextReferenceMap/index.d.ts +1 -0
- package/es/configs/useCaseContextReferenceMap/index.js +1 -0
- package/es/configs/useCaseContextReferenceMap/types.d.ts +8 -0
- package/es/enums/UseCaseArgumentTypes/index.d.ts +5 -0
- package/es/enums/UseCaseArgumentTypes/index.js +6 -0
- package/es/enums/UseCaseStatuses/index.d.ts +10 -0
- package/es/enums/UseCaseStatuses/index.js +18 -0
- package/es/hooks/useArgumentTypes/index.d.ts +3 -0
- package/es/hooks/useArgumentTypes/index.js +19 -0
- package/es/hooks/useContextualItem/index.d.ts +3 -0
- package/es/hooks/useContextualItem/index.js +13 -0
- package/es/hooks/useContextualItem/types.d.ts +3 -0
- package/es/hooks/useEntity/index.d.ts +4 -0
- package/es/hooks/useEntity/index.js +49 -0
- package/es/hooks/useGlobalUseCase/index.js +3 -8
- package/es/hooks/useGlobalUseCase/index.test.js +10 -30
- package/es/hooks/useGlobalUseCase/types.d.ts +7 -10
- package/es/hooks/useMemoizedCall/index.d.ts +2 -0
- package/es/hooks/useMemoizedCall/index.js +15 -0
- package/es/hooks/useProvider/index.d.ts +4 -4
- package/es/hooks/useProvider/index.js +22 -15
- package/es/hooks/useStatelessUseCase/index.js +2 -5
- package/es/hooks/useStatelessUseCase/index.test.js +4 -42
- package/es/hooks/useStatelessUseCase/types.d.ts +2 -4
- package/es/hooks/useUseCase/index.js +44 -74
- package/es/hooks/useUseCase/index.test.js +26 -1
- package/es/hooks/useUseCase/types.d.ts +32 -45
- package/es/hooks/useUseCaseContext/index.d.ts +5 -3
- package/es/hooks/useUseCaseContext/index.js +44 -8
- package/es/hooks/useUseCaseContext/index.test.js +87 -0
- package/es/hooks/useUseCaseStatuses/index.d.ts +6 -0
- package/es/hooks/useUseCaseStatuses/index.js +29 -0
- package/es/index.d.ts +1 -1
- package/es/methods/cacheCall/index.d.ts +2 -0
- package/es/methods/cacheCall/index.js +26 -0
- package/es/methods/cacheCall/types.d.ts +13 -0
- package/es/methods/cacheCall/types.js +1 -0
- package/es/methods/cacheCalls/index.d.ts +2 -0
- package/es/methods/cacheCalls/index.js +8 -0
- package/es/methods/fillArguments/index.d.ts +5 -0
- package/es/methods/fillArguments/index.js +41 -0
- package/es/methods/fillArguments/types.d.ts +10 -0
- package/es/methods/fillArguments/types.js +1 -0
- package/es/methods/getRenderingEntity/index.d.ts +3 -0
- package/es/methods/getRenderingEntity/index.js +13 -0
- package/es/methods/initEntityReducers/index.d.ts +2 -3
- package/es/methods/initEntityReducers/index.js +3 -5
- package/es/methods/transformGlobalArguments/index.d.ts +3 -0
- package/es/methods/transformGlobalArguments/index.js +8 -0
- package/es/methods/transformGlobalArguments/types.d.ts +2 -0
- package/es/methods/transformGlobalArguments/types.js +1 -0
- package/es/methods/triggerCallbacks/index.d.ts +1 -1
- package/es/methods/triggerCallbacks/index.js +3 -3
- package/lib/configs/useCaseContextReferenceMap/index.js +8 -0
- package/lib/enums/UseCaseArgumentTypes/index.js +13 -0
- package/lib/enums/UseCaseStatuses/index.js +25 -0
- package/lib/hooks/useArgumentTypes/index.js +31 -0
- package/lib/hooks/useContextualItem/index.js +21 -0
- package/lib/hooks/useEntity/index.js +63 -0
- package/lib/hooks/useGlobalUseCase/index.js +3 -10
- package/lib/hooks/useGlobalUseCase/index.test.js +8 -35
- package/lib/hooks/useMemoizedCall/index.js +22 -0
- package/lib/hooks/useProvider/index.js +24 -15
- package/lib/hooks/useStatelessUseCase/index.js +2 -12
- package/lib/hooks/useStatelessUseCase/index.test.js +2 -43
- package/lib/hooks/useUseCase/index.js +55 -82
- package/lib/hooks/useUseCase/index.test.js +56 -25
- package/lib/hooks/useUseCaseContext/index.js +48 -8
- package/lib/hooks/useUseCaseContext/index.test.js +101 -0
- package/lib/hooks/useUseCaseStatuses/index.js +36 -0
- package/lib/methods/cacheCall/index.js +42 -0
- package/lib/methods/cacheCalls/index.js +20 -0
- package/lib/methods/fillArguments/index.js +31 -0
- package/lib/methods/fillArguments/types.js +5 -0
- package/lib/methods/getRenderingEntity/index.js +20 -0
- package/lib/methods/initEntityReducers/index.js +2 -5
- package/lib/methods/transformGlobalArguments/index.js +21 -0
- package/lib/methods/transformGlobalArguments/types.js +5 -0
- package/lib/methods/triggerCallbacks/index.js +3 -3
- package/package.json +3 -3
- package/es/configs/usecaseContextMap/index.d.ts +0 -1
- package/es/configs/usecaseContextMap/index.js +0 -1
- package/es/configs/usecaseContextMap/types.d.ts +0 -4
- package/es/hooks/useChangeCallbackCollection/index.d.ts +0 -3
- package/es/hooks/useChangeCallbackCollection/index.js +0 -29
- package/es/methods/cacheReducerCalls/index.d.ts +0 -3
- package/es/methods/cacheReducerCalls/index.js +0 -26
- package/es/methods/cacheReducerCalls/types.d.ts +0 -11
- package/es/methods/getRootEntity/index.d.ts +0 -3
- package/es/methods/getRootEntity/index.js +0 -10
- package/es/methods/initEntityReducers/types.d.ts +0 -3
- package/es/methods/removeItem/index.d.ts +0 -1
- package/es/methods/removeItem/index.js +0 -7
- package/es/methods/toMaxArguments/index.d.ts +0 -3
- package/es/methods/toMaxArguments/index.js +0 -28
- package/lib/configs/usecaseContextMap/index.js +0 -8
- package/lib/hooks/useChangeCallbackCollection/index.js +0 -37
- package/lib/methods/cacheReducerCalls/index.js +0 -45
- package/lib/methods/getRootEntity/index.js +0 -17
- package/lib/methods/removeItem/index.js +0 -14
- package/lib/methods/toMaxArguments/index.js +0 -25
- /package/es/configs/{usecaseContextMap → useCaseContextReferenceMap}/types.js +0 -0
- /package/es/{methods/cacheReducerCalls → hooks/useContextualItem}/types.js +0 -0
- /package/es/{methods/initEntityReducers/types.js → hooks/useUseCaseContext/index.test.d.ts} +0 -0
- /package/lib/configs/{usecaseContextMap → useCaseContextReferenceMap}/types.js +0 -0
- /package/lib/{methods/cacheReducerCalls → hooks/useContextualItem}/types.js +0 -0
- /package/lib/methods/{initEntityReducers → cacheCall}/types.js +0 -0
|
@@ -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 {
|
|
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
|
-
|
|
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,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export const initEntityReducers = (
|
|
3
|
-
const { createEntityReducers } = entityReducerUseCase();
|
|
1
|
+
import { createEntityReducers } from '@mic-rexjs/usecases';
|
|
2
|
+
export const initEntityReducers = (usecase, store, options) => {
|
|
4
3
|
const { watch, onChange, options: usecaseOptions, ...restUseCaseOptions } = options;
|
|
5
|
-
return createEntityReducers(
|
|
4
|
+
return createEntityReducers(store, usecase, {
|
|
6
5
|
...restUseCaseOptions,
|
|
7
6
|
...usecaseOptions,
|
|
8
|
-
onChange: onEntityChange,
|
|
9
7
|
onGenerate(newEntity, result) {
|
|
10
8
|
return result;
|
|
11
9
|
},
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { UseCaseModes } from '../../enums/UseCaseModes';
|
|
2
|
+
export const transformGlobalArguments = (args) => {
|
|
3
|
+
const [arg1, arg2, arg3, arg4] = args;
|
|
4
|
+
if (typeof arg2 === 'function') {
|
|
5
|
+
return [arg1, arg2, UseCaseModes.Global, arg3, arg4];
|
|
6
|
+
}
|
|
7
|
+
return [arg1, UseCaseModes.Global, arg2, arg3];
|
|
8
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ChangeCallback } from '../../configs/defaultUseCaseContext/types';
|
|
2
|
-
export declare const triggerCallbacks: <T>(
|
|
2
|
+
export declare const triggerCallbacks: <T>(callbacks: ChangeCallback<T>[], newEntity: T, oldEntity: T) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const triggerCallbacks = (
|
|
2
|
-
for (let { length: i } =
|
|
3
|
-
|
|
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,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;
|
|
@@ -7,19 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useGlobalUseCase = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
9
|
var _useUseCase = require("../useUseCase");
|
|
10
|
-
var
|
|
10
|
+
var _transformGlobalArguments = require("../../methods/transformGlobalArguments");
|
|
11
11
|
var useGlobalUseCase = function useGlobalUseCase() {
|
|
12
12
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
13
13
|
args[_key] = arguments[_key];
|
|
14
14
|
}
|
|
15
|
-
var
|
|
16
|
-
|
|
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];
|
|
15
|
+
var transformedArgs = (0, _transformGlobalArguments.transformGlobalArguments)(args);
|
|
16
|
+
return _useUseCase.useUseCase.apply(void 0, (0, _toConsumableArray2["default"])(transformedArgs));
|
|
24
17
|
};
|
|
25
18
|
exports.useGlobalUseCase = useGlobalUseCase;
|
|
@@ -1,21 +1,20 @@
|
|
|
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
5
|
var _usecases = require("@mic-rexjs/usecases");
|
|
9
6
|
var _globals = require("@jest/globals");
|
|
10
7
|
var _UseCaseModes = require("../../enums/UseCaseModes");
|
|
11
8
|
var _react = require("@testing-library/react");
|
|
12
|
-
var _ahooks = require("ahooks");
|
|
13
9
|
var useUseCaseModule = _interopRequireWildcard(require("../useUseCase"));
|
|
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); }
|
|
15
11
|
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
12
|
var numberUseCase = function numberUseCase() {
|
|
17
13
|
return (0, _usecases.entityUseCase)();
|
|
18
14
|
};
|
|
15
|
+
var mathUseCase = function mathUseCase() {
|
|
16
|
+
return {};
|
|
17
|
+
};
|
|
19
18
|
(0, _globals.describe)('useGlobalUseCase', function () {
|
|
20
19
|
(0, _globals.describe)('`useGlobalUseCase` should work the same as `RootCoreCollectionHook`', function () {
|
|
21
20
|
(0, _globals.test)('check `useUseCase` has received correct arguments', function () {
|
|
@@ -24,7 +23,7 @@ var numberUseCase = function numberUseCase() {
|
|
|
24
23
|
(0, _react.renderHook)(function () {
|
|
25
24
|
(0, _.useGlobalUseCase)(1, numberUseCase);
|
|
26
25
|
});
|
|
27
|
-
(0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(1, numberUseCase, _UseCaseModes.UseCaseModes.Global);
|
|
26
|
+
(0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(1, numberUseCase, _UseCaseModes.UseCaseModes.Global, void 0, void 0);
|
|
28
27
|
_globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
|
|
29
28
|
});
|
|
30
29
|
(0, _globals.test)('should should return `CoreCollection` with Provider', function () {
|
|
@@ -35,44 +34,18 @@ var numberUseCase = function numberUseCase() {
|
|
|
35
34
|
var current = result.current;
|
|
36
35
|
(0, _globals.expect)(current).toEqual([1, {
|
|
37
36
|
setEntity: _globals.expect.any(Function)
|
|
38
|
-
}, _globals.expect.any(Function)]);
|
|
37
|
+
}, _globals.expect.any(Function), void 0, void 0]);
|
|
39
38
|
});
|
|
40
39
|
});
|
|
41
|
-
(0, _globals.describe)('`useGlobalUseCase` should work the same as `
|
|
40
|
+
(0, _globals.describe)('`useGlobalUseCase` should work the same as `GlobalPseudoCoreCollectionHook`', function () {
|
|
42
41
|
(0, _globals.test)('check `useUseCase` has received correct arguments', function () {
|
|
43
42
|
var useMockedUseCase = _globals.jest.fn();
|
|
44
43
|
_globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockImplementation(useMockedUseCase);
|
|
45
44
|
(0, _react.renderHook)(function () {
|
|
46
|
-
|
|
47
|
-
(0, _.useGlobalUseCase)(numberUseCase);
|
|
48
|
-
} catch (e) {
|
|
49
|
-
//
|
|
50
|
-
}
|
|
45
|
+
(0, _.useGlobalUseCase)(mathUseCase);
|
|
51
46
|
});
|
|
52
|
-
(0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(
|
|
47
|
+
(0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(mathUseCase, _UseCaseModes.UseCaseModes.Global, void 0, void 0);
|
|
53
48
|
_globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
|
|
54
49
|
});
|
|
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
50
|
});
|
|
78
51
|
});
|
|
@@ -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,42 @@ 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
|
|
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(
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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 isGlobal = (statuses & _UseCaseStatuses.UseCaseStatuses.GlobalEnabled) === _UseCaseStatuses.UseCaseStatuses.GlobalEnabled;
|
|
29
|
+
var updateDep = isGlobal ? null : contextValue;
|
|
30
|
+
var contextValueRef = (0, _ahooks.useLatest)(contextValue);
|
|
31
|
+
// 这里必须使用 `useCallback`,因为要使用在 `Provider` 的 `value` 属性上面,需要可变化的
|
|
23
32
|
var getContextValue = (0, _react.useCallback)(function () {
|
|
24
|
-
void
|
|
33
|
+
void updateDep;
|
|
25
34
|
return contextValueRef.current;
|
|
26
|
-
}, [
|
|
27
|
-
var
|
|
35
|
+
}, [updateDep, contextValueRef]);
|
|
36
|
+
var getterRef = (0, _ahooks.useLatest)(getContextValue);
|
|
28
37
|
return (0, _useConstantFn.useConstantFn)(function (_ref) {
|
|
29
38
|
var children = _ref.children,
|
|
30
39
|
_ref$with = _ref["with"],
|
|
31
40
|
withProviders = _ref$with === void 0 ? [] : _ref$with;
|
|
32
41
|
var ContextProvider = context.Provider;
|
|
33
42
|
return _react["default"].createElement(ContextProvider, {
|
|
34
|
-
value:
|
|
43
|
+
value: getterRef.current
|
|
35
44
|
}, withProviders.reduceRight(function (currentChildren, withProvider) {
|
|
36
45
|
return _react["default"].createElement(withProvider, {}, currentChildren);
|
|
37
46
|
}, children));
|
|
@@ -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
|
-
|
|
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
|
});
|