@mic-rexjs/usecases-react 1.8.0 → 2.0.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.
Files changed (61) 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/usecaseContextMap/types.d.ts +2 -5
  7. package/es/enums/UseCaseModes/index.d.ts +6 -0
  8. package/es/enums/UseCaseModes/index.js +7 -0
  9. package/es/hooks/useChangeCallbackCollection/index.d.ts +3 -0
  10. package/es/hooks/useChangeCallbackCollection/index.js +29 -0
  11. package/es/hooks/useGlobalUseCase/index.d.ts +2 -0
  12. package/es/hooks/useGlobalUseCase/index.js +11 -0
  13. package/es/hooks/useGlobalUseCase/index.test.js +71 -0
  14. package/es/hooks/useGlobalUseCase/types.d.ts +12 -0
  15. package/es/hooks/useGlobalUseCase/types.js +1 -0
  16. package/es/hooks/useProvider/index.d.ts +3 -5
  17. package/es/hooks/useProvider/index.js +25 -17
  18. package/es/hooks/useStatelessUseCase/index.d.ts +2 -0
  19. package/es/hooks/useStatelessUseCase/index.js +8 -0
  20. package/es/hooks/useStatelessUseCase/index.test.d.ts +1 -0
  21. package/es/hooks/useStatelessUseCase/index.test.js +75 -0
  22. package/es/hooks/useStatelessUseCase/types.d.ts +5 -0
  23. package/es/hooks/useStatelessUseCase/types.js +1 -0
  24. package/es/hooks/useUseCase/index.js +27 -29
  25. package/es/hooks/useUseCase/index.test.js +243 -207
  26. package/es/hooks/useUseCase/types.d.ts +55 -8
  27. package/es/hooks/useUseCaseContext/index.d.ts +2 -2
  28. package/es/hooks/useUseCaseContext/index.js +1 -1
  29. package/es/index.d.ts +2 -0
  30. package/es/index.js +2 -0
  31. package/es/methods/getRootEntity/index.d.ts +2 -1
  32. package/es/methods/getRootEntity/index.js +6 -5
  33. package/es/methods/initEntityReducers/index.js +1 -1
  34. package/es/methods/toMaxArguments/index.d.ts +3 -0
  35. package/es/methods/toMaxArguments/index.js +28 -0
  36. package/es/methods/triggerCallbacks/index.d.ts +2 -3
  37. package/es/methods/triggerCallbacks/index.js +3 -12
  38. package/lib/configs/defaultUseCaseContext/index.js +1 -1
  39. package/lib/enums/UseCaseModes/index.js +14 -0
  40. package/lib/hooks/useChangeCallbackCollection/index.js +37 -0
  41. package/lib/hooks/useGlobalUseCase/index.js +25 -0
  42. package/lib/hooks/useGlobalUseCase/index.test.js +78 -0
  43. package/lib/hooks/useProvider/index.js +30 -24
  44. package/lib/hooks/useStatelessUseCase/index.js +22 -0
  45. package/lib/hooks/useStatelessUseCase/index.test.js +78 -0
  46. package/lib/hooks/useStatelessUseCase/types.js +5 -0
  47. package/lib/hooks/useUseCase/index.js +40 -31
  48. package/lib/hooks/useUseCase/index.test.js +337 -288
  49. package/lib/hooks/useUseCaseContext/index.js +1 -1
  50. package/lib/index.js +15 -1
  51. package/lib/methods/getRootEntity/index.js +6 -5
  52. package/lib/methods/initEntityReducers/index.js +2 -3
  53. package/lib/methods/toMaxArguments/index.js +25 -0
  54. package/lib/methods/triggerCallbacks/index.js +3 -13
  55. package/package.json +1 -1
  56. package/es/hooks/useOptionsRefCollection/index.d.ts +0 -3
  57. package/es/hooks/useOptionsRefCollection/index.js +0 -22
  58. package/es/hooks/useOptionsRefCollection/types.d.ts +0 -2
  59. package/lib/hooks/useOptionsRefCollection/index.js +0 -29
  60. /package/es/hooks/{useOptionsRefCollection/types.js → useGlobalUseCase/index.test.d.ts} +0 -0
  61. /package/lib/hooks/{useOptionsRefCollection → useGlobalUseCase}/types.js +0 -0
@@ -16,7 +16,7 @@ var useUseCaseContext = function useUseCaseContext(usecase, defaultContext) {
16
16
  if (defaultContext) {
17
17
  return defaultContext;
18
18
  }
19
- var ctx = (0, _react.createContext)({});
19
+ var ctx = (0, _react.createContext)(null);
20
20
  map.set(usecase, ctx);
21
21
  return ctx;
22
22
  });
package/lib/index.js CHANGED
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "UseCaseFragment", {
9
9
  return _UseCaseFragment.UseCaseFragment;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "useGlobalUseCase", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _useGlobalUseCase.useGlobalUseCase;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "useStatelessUseCase", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _useStatelessUseCase.useStatelessUseCase;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "useUseCase", {
13
25
  enumerable: true,
14
26
  get: function get() {
@@ -16,4 +28,6 @@ Object.defineProperty(exports, "useUseCase", {
16
28
  }
17
29
  });
18
30
  var _UseCaseFragment = require("./components/UseCaseFragment");
19
- var _useUseCase = require("./hooks/useUseCase");
31
+ var _useUseCase = require("./hooks/useUseCase");
32
+ var _useGlobalUseCase = require("./hooks/useGlobalUseCase");
33
+ var _useStatelessUseCase = require("./hooks/useStatelessUseCase");
@@ -4,13 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getRootEntity = void 0;
7
- var getRootEntity = function getRootEntity(entityState, entityArg, stateless) {
8
- if (!stateless) {
7
+ var _UseCaseModes = require("../../enums/UseCaseModes");
8
+ var getRootEntity = function getRootEntity(entityState, unsafeEntity, mode) {
9
+ if ((mode & _UseCaseModes.UseCaseModes.Stateless) !== _UseCaseModes.UseCaseModes.Stateless) {
9
10
  return entityState;
10
11
  }
11
- if (typeof entityArg === 'function') {
12
- return entityArg();
12
+ if (typeof unsafeEntity === 'function') {
13
+ return unsafeEntity();
13
14
  }
14
- return entityArg;
15
+ return unsafeEntity;
15
16
  };
16
17
  exports.getRootEntity = getRootEntity;
@@ -8,14 +8,13 @@ exports.initEntityReducers = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
10
  var _usecases = require("@mic-rexjs/usecases");
11
- var _excluded = ["stateless", "watch", "onChange", "options"];
11
+ var _excluded = ["watch", "onChange", "options"];
12
12
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
13
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
14
  var initEntityReducers = function initEntityReducers(entity, usecase, options, onEntityChange) {
15
15
  var _entityReducerUseCase = (0, _usecases.entityReducerUseCase)(),
16
16
  createEntityReducers = _entityReducerUseCase.createEntityReducers;
17
- var stateless = options.stateless,
18
- watch = options.watch,
17
+ var watch = options.watch,
19
18
  onChange = options.onChange,
20
19
  usecaseOptions = options.options,
21
20
  restUseCaseOptions = (0, _objectWithoutProperties2["default"])(options, _excluded);
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.toMaxArguments = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _UseCaseModes = require("../../enums/UseCaseModes");
10
+ var toMaxArguments = function toMaxArguments(_ref) {
11
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 5),
12
+ arg1 = _ref2[0],
13
+ arg2 = _ref2[1],
14
+ arg3 = _ref2[2],
15
+ arg4 = _ref2[3],
16
+ arg5 = _ref2[4];
17
+ if (typeof arg2 !== 'function') {
18
+ return [null, arg1, _UseCaseModes.UseCaseModes.Normal, arg2 || {}, arg3 || []];
19
+ }
20
+ if (typeof arg3 === 'number') {
21
+ return [arg1, arg2, arg3, arg4 || {}, arg5 || []];
22
+ }
23
+ return [arg1, arg2, _UseCaseModes.UseCaseModes.Normal, arg3 || {}, arg4 || []];
24
+ };
25
+ exports.toMaxArguments = toMaxArguments;
@@ -4,19 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.triggerCallbacks = void 0;
7
- var _triggerWatchers = require("../triggerWatchers");
8
- var triggerCallbacks = function triggerCallbacks(optionsRefCollection, newEntity, oldEntity) {
9
- for (var i = optionsRefCollection.length; i > 0; i--) {
10
- var options = optionsRefCollection[i - 1].current;
11
- if (!options) {
12
- continue;
13
- }
14
- var onChange = options.onChange,
15
- watch = options.watch;
16
- if (watch) {
17
- (0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
18
- }
19
- onChange === null || onChange === void 0 ? void 0 : onChange(newEntity, oldEntity);
7
+ var triggerCallbacks = function triggerCallbacks(changeCallbackCollection, newEntity, oldEntity) {
8
+ for (var i = changeCallbackCollection.length; i > 0; i--) {
9
+ changeCallbackCollection[i - 1](newEntity, oldEntity);
20
10
  }
21
11
  };
22
12
  exports.triggerCallbacks = triggerCallbacks;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "1.8.0",
3
+ "version": "2.0.0",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "keywords": [
@@ -1,3 +0,0 @@
1
- import { UseCaseHookOptions } from '../useUseCase/types';
2
- import { OptionsRefCollection } from './types';
3
- export declare const useOptionsRefCollection: <T, TUseCaseOptions extends object, TOptions extends UseCaseHookOptions<T, TUseCaseOptions> = UseCaseHookOptions<T, TUseCaseOptions>>(isRoot: boolean, contextOptionsRefCollection: OptionsRefCollection<TOptions> | null, options: TOptions) => OptionsRefCollection<TOptions>;
@@ -1,22 +0,0 @@
1
- import { useCreation, useLatest, usePrevious, useUnmount } from 'ahooks';
2
- import { removeItem } from '../../methods/removeItem';
3
- export const useOptionsRefCollection = (isRoot, contextOptionsRefCollection, options) => {
4
- const optionsRef = useLatest(options);
5
- const optionsRefCollection = useCreation(() => {
6
- if (isRoot) {
7
- return [];
8
- }
9
- return contextOptionsRefCollection;
10
- }, [contextOptionsRefCollection, isRoot]);
11
- const prevOptionsRefCollection = usePrevious(optionsRefCollection);
12
- useCreation(() => {
13
- if (prevOptionsRefCollection) {
14
- removeItem(prevOptionsRefCollection, optionsRef);
15
- }
16
- optionsRefCollection.push(optionsRef);
17
- }, [optionsRef, optionsRefCollection, prevOptionsRefCollection]);
18
- useUnmount(() => {
19
- removeItem(optionsRefCollection, optionsRef);
20
- });
21
- return optionsRefCollection;
22
- };
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export type OptionsRefCollection<T> = React.MutableRefObject<T>[];
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useOptionsRefCollection = void 0;
7
- var _ahooks = require("ahooks");
8
- var _removeItem = require("../../methods/removeItem");
9
- var useOptionsRefCollection = function useOptionsRefCollection(isRoot, contextOptionsRefCollection, options) {
10
- var optionsRef = (0, _ahooks.useLatest)(options);
11
- var optionsRefCollection = (0, _ahooks.useCreation)(function () {
12
- if (isRoot) {
13
- return [];
14
- }
15
- return contextOptionsRefCollection;
16
- }, [contextOptionsRefCollection, isRoot]);
17
- var prevOptionsRefCollection = (0, _ahooks.usePrevious)(optionsRefCollection);
18
- (0, _ahooks.useCreation)(function () {
19
- if (prevOptionsRefCollection) {
20
- (0, _removeItem.removeItem)(prevOptionsRefCollection, optionsRef);
21
- }
22
- optionsRefCollection.push(optionsRef);
23
- }, [optionsRef, optionsRefCollection, prevOptionsRefCollection]);
24
- (0, _ahooks.useUnmount)(function () {
25
- (0, _removeItem.removeItem)(optionsRefCollection, optionsRef);
26
- });
27
- return optionsRefCollection;
28
- };
29
- exports.useOptionsRefCollection = useOptionsRefCollection;