@mic-rexjs/usecases-react 2.11.2 → 2.12.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 (46) hide show
  1. package/dist/index.min.js +1 -1
  2. package/es/components/SafeUseCaseFragment/index.js +17 -7
  3. package/es/components/SafeUseCaseFragment/types.js +1 -1
  4. package/es/components/UseCaseFragment/index.js +16 -6
  5. package/es/components/UseCaseFragment/types.js +1 -1
  6. package/es/entities/matchPropertyFailedResult/types.js +1 -1
  7. package/es/enums/ArgumentTypes/index.js +3 -3
  8. package/es/enums/Statuses/index.js +22 -22
  9. package/es/hooks/useArgumentTypes/index.js +12 -10
  10. package/es/hooks/useConstant/index.js +7 -4
  11. package/es/hooks/useConstant/types.js +1 -1
  12. package/es/hooks/useConstantEntityReducers/index.js +4 -4
  13. package/es/hooks/useConstantFn/index.js +9 -6
  14. package/es/hooks/useConstantReducers/index.js +4 -4
  15. package/es/hooks/useContext/index.js +14 -11
  16. package/es/hooks/useContext/index.test.js +50 -44
  17. package/es/hooks/useContextualItem/index.js +27 -25
  18. package/es/hooks/useContextualItem/types.js +1 -1
  19. package/es/hooks/useDepsKey/index.js +9 -5
  20. package/es/hooks/useEntity/index.js +65 -61
  21. package/es/hooks/useFullArguments/index.js +12 -17
  22. package/es/hooks/useFullArguments/types.js +1 -1
  23. package/es/hooks/useIsRenderingRef/index.js +6 -6
  24. package/es/hooks/useProvider/index.js +21 -15
  25. package/es/hooks/useProvider/types.js +1 -1
  26. package/es/hooks/useRuntimeEntity/index.js +18 -16
  27. package/es/hooks/useStatuses/index.js +19 -19
  28. package/es/hooks/useUseCase/index.js +78 -57
  29. package/es/hooks/useUseCase/index.test.js +2402 -1701
  30. package/es/hooks/useUseCase/types.d.ts +11 -8
  31. package/es/hooks/useUseCase/types.js +1 -1
  32. package/es/index.js +1 -1
  33. package/es/methods/triggerWatchers/index.js +12 -7
  34. package/es/types.js +1 -1
  35. package/es/usecases/contextUseCase/index.js +70 -65
  36. package/es/usecases/contextUseCase/types.js +1 -1
  37. package/es/usecases/methodUseCase/index.js +69 -52
  38. package/es/usecases/methodUseCase/types.js +1 -1
  39. package/es/usecases/valueUseCase/index.js +175 -167
  40. package/es/usecases/valueUseCase/types.js +1 -1
  41. package/lib/components/UseCaseFragment/index.js +1 -1
  42. package/lib/hooks/useUseCase/index.js +5 -8
  43. package/lib/hooks/useUseCase/index.test.js +198 -104
  44. package/lib/methods/triggerWatchers/index.js +9 -7
  45. package/lib/usecases/valueUseCase/index.js +1 -1
  46. package/package.json +3 -3
@@ -7,16 +7,19 @@ import { ContextualEntityReducers } from '../../usecases/contextUseCase/types';
7
7
  export interface NonEntitySymbolSet extends SymbolSet {
8
8
  entity?: never;
9
9
  }
10
- export type RootCoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = [
10
+ export type CoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = [
11
11
  entity: T,
12
12
  reducers: ContextualEntityReducers<T, TEntityReducers>,
13
13
  Provider: UseCaseProvider
14
14
  ];
15
- export type ContextualCoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = [
16
- entity: T,
17
- reducers: ContextualEntityReducers<T, TEntityReducers>
18
- ];
19
- export type CoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = RootCoreCollection<T, TEntityReducers> | ContextualCoreCollection<T, TEntityReducers>;
15
+ /**
16
+ * @deprecated 请用 `CoreCollection` 代替
17
+ */
18
+ export type RootCoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = CoreCollection<T, TEntityReducers>;
19
+ /**
20
+ * @deprecated 请用 `CoreCollection` 代替
21
+ */
22
+ export type ContextualCoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = CoreCollection<T, TEntityReducers>;
20
23
  export interface EntityGetter<T, TDependencies extends Dependencies = Dependencies> {
21
24
  (entity: T | undefined, changedDeps: TDependencies): T;
22
25
  }
@@ -51,10 +54,10 @@ export interface ReducersHook {
51
54
  <T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?: Dependencies): T;
52
55
  }
53
56
  export interface ContextualCoreCollectionHook {
54
- <T, TEntityReducers extends EntityReducerMap<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>, options?: UseCaseHookContextualOptions<T>, deps?: Dependencies): ContextualCoreCollection<T, TEntityReducers>;
57
+ <T, TEntityReducers extends EntityReducerMap<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>, options?: UseCaseHookContextualOptions<T>, deps?: Dependencies): CoreCollection<T, TEntityReducers>;
55
58
  }
56
59
  export interface RootCoreCollectionHook {
57
- <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object, TDependencies extends Dependencies = Dependencies>(entity: T | EntityGetter<T, TDependencies>, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: UseCaseHookOptions<T, TUseCaseOptions>, deps?: TDependencies): RootCoreCollection<T, EntityReducers<T, TEntityReducers>>;
60
+ <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object, TDependencies extends Dependencies = Dependencies>(entity: T | EntityGetter<T, TDependencies>, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: UseCaseHookOptions<T, TUseCaseOptions>, deps?: TDependencies): CoreCollection<T, EntityReducers<T, TEntityReducers>>;
58
61
  }
59
62
  export interface CoreCollectionHook extends ContextualCoreCollectionHook, RootCoreCollectionHook {
60
63
  }
@@ -1 +1 @@
1
- export {};
1
+ export {};
package/es/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export { UseCaseFragment } from './components/UseCaseFragment';
2
- export { useUseCase } from './hooks/useUseCase';
2
+ export { useUseCase } from './hooks/useUseCase';
@@ -1,9 +1,14 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import { valueUseCase } from '../../usecases/valueUseCase';
2
3
  export const triggerWatchers = (watch, newEntity, oldEntity) => {
3
- const { matchProperty } = valueUseCase();
4
- for (const [fieldPath, watcher] of Object.entries(watch)) {
5
- matchProperty(oldEntity, newEntity, fieldPath, (result) => {
6
- watcher(result);
7
- });
8
- }
9
- };
4
+ const _valueUseCase = valueUseCase(),
5
+ matchProperty = _valueUseCase.matchProperty;
6
+ for (const _ref of Object.entries(watch)) {
7
+ var _ref2 = _slicedToArray(_ref, 2);
8
+ const fieldPath = _ref2[0];
9
+ const watcher = _ref2[1];
10
+ matchProperty(oldEntity, newEntity, fieldPath, result => {
11
+ watcher(result);
12
+ });
13
+ }
14
+ };
package/es/types.js CHANGED
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -3,71 +3,76 @@ import { createContext } from 'react';
3
3
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
4
4
  import { Statuses } from '../../enums/Statuses';
5
5
  export const contextUseCase = createUseCase(() => {
6
- const referenceMap = new Map();
7
- const defaultUseCaseContext = createContext(null);
8
- return () => {
9
- const createContextValue = (store, reducers, statuses) => {
10
- if ((statuses & Statuses.EntityEnabled) === Statuses.EntityEnabled) {
11
- return {
12
- store,
13
- reducers,
14
- statuses,
15
- };
16
- }
17
- return { reducers, statuses };
18
- };
19
- const getUseCaseContext = (usecase) => {
20
- if (!referenceMap.has(usecase)) {
21
- return defaultUseCaseContext;
22
- }
23
- const { value } = referenceMap.get(usecase);
24
- return value;
25
- };
26
- const registerUseCase = (usecase, argumentTypes) => {
27
- if (referenceMap.has(usecase)) {
28
- const reference = referenceMap.get(usecase);
29
- const { value, times } = reference;
30
- referenceMap.set(usecase, {
31
- value,
32
- times: times + 1,
33
- });
34
- return value;
35
- }
36
- if ((argumentTypes & ArgumentTypes.Entity) !== ArgumentTypes.Entity) {
37
- return defaultUseCaseContext;
38
- }
39
- const context = createContext(null);
40
- referenceMap.set(usecase, {
41
- value: context,
42
- times: 1,
43
- });
44
- return context;
45
- };
46
- const unregisterUseCase = (usecase, argumentTypes) => {
47
- if ((argumentTypes & ArgumentTypes.Entity) !== ArgumentTypes.Entity) {
48
- return false;
49
- }
50
- if (!referenceMap.has(usecase)) {
51
- return false;
52
- }
53
- const reference = referenceMap.get(usecase);
54
- const { value, times } = reference;
55
- if (times === 1) {
56
- referenceMap.delete(usecase);
57
- }
58
- else {
59
- referenceMap.set(usecase, {
60
- value,
61
- times: times - 1,
62
- });
63
- }
64
- return true;
65
- };
6
+ const referenceMap = new Map();
7
+ const defaultUseCaseContext = createContext(null);
8
+ return () => {
9
+ const createContextValue = (store, reducers, statuses) => {
10
+ if ((statuses & Statuses.EntityEnabled) === Statuses.EntityEnabled) {
66
11
  return {
67
- createContextValue,
68
- getUseCaseContext,
69
- registerUseCase,
70
- unregisterUseCase,
12
+ store,
13
+ reducers,
14
+ statuses
71
15
  };
16
+ }
17
+ return {
18
+ reducers,
19
+ statuses
20
+ };
21
+ };
22
+ const getUseCaseContext = usecase => {
23
+ if (!referenceMap.has(usecase)) {
24
+ return defaultUseCaseContext;
25
+ }
26
+ const _referenceMap$get = referenceMap.get(usecase),
27
+ value = _referenceMap$get.value;
28
+ return value;
29
+ };
30
+ const registerUseCase = (usecase, argumentTypes) => {
31
+ if (referenceMap.has(usecase)) {
32
+ const reference = referenceMap.get(usecase);
33
+ const value = reference.value,
34
+ times = reference.times;
35
+ referenceMap.set(usecase, {
36
+ value,
37
+ times: times + 1
38
+ });
39
+ return value;
40
+ }
41
+ if ((argumentTypes & ArgumentTypes.Entity) !== ArgumentTypes.Entity) {
42
+ return defaultUseCaseContext;
43
+ }
44
+ const context = createContext(null);
45
+ referenceMap.set(usecase, {
46
+ value: context,
47
+ times: 1
48
+ });
49
+ return context;
50
+ };
51
+ const unregisterUseCase = (usecase, argumentTypes) => {
52
+ if ((argumentTypes & ArgumentTypes.Entity) !== ArgumentTypes.Entity) {
53
+ return false;
54
+ }
55
+ if (!referenceMap.has(usecase)) {
56
+ return false;
57
+ }
58
+ const reference = referenceMap.get(usecase);
59
+ const value = reference.value,
60
+ times = reference.times;
61
+ if (times === 1) {
62
+ referenceMap.delete(usecase);
63
+ } else {
64
+ referenceMap.set(usecase, {
65
+ value,
66
+ times: times - 1
67
+ });
68
+ }
69
+ return true;
70
+ };
71
+ return {
72
+ createContextValue,
73
+ getUseCaseContext,
74
+ registerUseCase,
75
+ unregisterUseCase
72
76
  };
73
- });
77
+ };
78
+ });
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,55 +1,72 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import { valueUseCase } from '../valueUseCase';
2
3
  export const methodUseCase = () => {
3
- const { isValueMatched } = valueUseCase();
4
- const cacheCall = (factory, options) => {
5
- let cache;
6
- const { onShouldCache = () => {
7
- return true;
8
- }, onCompare = (newArgs, oldArgs) => {
9
- return isValueMatched(newArgs, oldArgs);
10
- }, } = options || {};
11
- return ((...args) => {
12
- const cacheable = onShouldCache();
13
- if (cache && cacheable) {
14
- const { parameters, returnValue } = cache;
15
- if (onCompare(parameters, args)) {
16
- return returnValue;
17
- }
18
- }
19
- const returnValue = factory(...args);
20
- if (cacheable) {
21
- cache = {
22
- parameters: args,
23
- returnValue,
24
- };
25
- }
26
- return returnValue;
27
- });
4
+ const _valueUseCase = valueUseCase(),
5
+ isValueMatched = _valueUseCase.isValueMatched;
6
+ const cacheCall = (factory, options) => {
7
+ let cache;
8
+ const _ref = options || {},
9
+ _ref$onShouldCache = _ref.onShouldCache,
10
+ onShouldCache = _ref$onShouldCache === void 0 ? () => {
11
+ return true;
12
+ } : _ref$onShouldCache,
13
+ _ref$onCompare = _ref.onCompare,
14
+ onCompare = _ref$onCompare === void 0 ? (newArgs, oldArgs) => {
15
+ return isValueMatched(newArgs, oldArgs);
16
+ } : _ref$onCompare;
17
+ return function () {
18
+ const cacheable = onShouldCache();
19
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
20
+ args[_key] = arguments[_key];
21
+ }
22
+ if (cache && cacheable) {
23
+ const _cache = cache,
24
+ parameters = _cache.parameters,
25
+ returnValue = _cache.returnValue;
26
+ if (onCompare(parameters, args)) {
27
+ return returnValue;
28
+ }
29
+ }
30
+ const returnValue = factory(...args);
31
+ if (cacheable) {
32
+ cache = {
33
+ parameters: args,
34
+ returnValue
35
+ };
36
+ }
37
+ return returnValue;
28
38
  };
29
- const cacheCalls = (sourceFactories, options) => {
30
- const cachedFactories = {};
31
- Object.entries(sourceFactories).forEach(([key, factory]) => {
32
- cachedFactories[key] = cacheCall(factory, options);
33
- });
34
- return cachedFactories;
35
- };
36
- const captureCalls = (obj, callback) => {
37
- const newObj = {};
38
- Object.keys(obj).forEach((key) => {
39
- const value = obj[key];
40
- if (typeof value === 'function') {
41
- newObj[key] = ((...args) => {
42
- return callback(key, args);
43
- });
44
- return;
45
- }
46
- newObj[key] = value;
47
- });
48
- return newObj;
49
- };
50
- return {
51
- cacheCall,
52
- cacheCalls,
53
- captureCalls,
54
- };
55
- };
39
+ };
40
+ const cacheCalls = (sourceFactories, options) => {
41
+ const cachedFactories = {};
42
+ Object.entries(sourceFactories).forEach(_ref2 => {
43
+ let _ref3 = _slicedToArray(_ref2, 2),
44
+ key = _ref3[0],
45
+ factory = _ref3[1];
46
+ cachedFactories[key] = cacheCall(factory, options);
47
+ });
48
+ return cachedFactories;
49
+ };
50
+ const captureCalls = (obj, callback) => {
51
+ const newObj = {};
52
+ Object.keys(obj).forEach(key => {
53
+ const value = obj[key];
54
+ if (typeof value === 'function') {
55
+ newObj[key] = function () {
56
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
57
+ args[_key2] = arguments[_key2];
58
+ }
59
+ return callback(key, args);
60
+ };
61
+ return;
62
+ }
63
+ newObj[key] = value;
64
+ });
65
+ return newObj;
66
+ };
67
+ return {
68
+ cacheCall,
69
+ cacheCalls,
70
+ captureCalls
71
+ };
72
+ };
@@ -1 +1 @@
1
- export {};
1
+ export {};