@mic-rexjs/usecases-react 1.4.0 → 1.5.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 (40) hide show
  1. package/README.md +2 -2
  2. package/dist/index.min.js +1 -1
  3. package/es/components/UseCaseFragment/types.d.ts +1 -1
  4. package/es/hooks/useCompareDeps/index.js +3 -16
  5. package/es/hooks/useReducer/index.d.ts +2 -0
  6. package/es/hooks/useReducer/index.js +20 -0
  7. package/es/hooks/useUseCase/index.js +2 -2
  8. package/es/hooks/useUseCase/index.test.js +493 -41
  9. package/es/hooks/useUseCase/types.d.ts +18 -6
  10. package/es/index.d.ts +1 -0
  11. package/es/index.js +1 -0
  12. package/es/methods/compareProperty/index.d.ts +2 -0
  13. package/es/methods/compareProperty/index.js +34 -0
  14. package/es/methods/compareProperty/types.d.ts +3 -0
  15. package/es/methods/hasField/index.d.ts +1 -0
  16. package/es/methods/hasField/index.js +6 -0
  17. package/es/methods/initEntityReducers/types.d.ts +1 -1
  18. package/es/methods/isSameArray/index.d.ts +1 -0
  19. package/es/methods/isSameArray/index.js +14 -0
  20. package/es/methods/triggerCallbacks/index.d.ts +1 -1
  21. package/es/methods/triggerCallbacks/index.js +3 -3
  22. package/es/methods/triggerWatchers/index.d.ts +1 -1
  23. package/es/methods/triggerWatchers/index.js +12 -8
  24. package/lib/hooks/useCompareDeps/index.js +3 -16
  25. package/lib/hooks/useReducer/index.js +30 -0
  26. package/lib/hooks/useUseCase/index.js +2 -2
  27. package/lib/hooks/useUseCase/index.test.js +643 -91
  28. package/lib/index.js +7 -0
  29. package/lib/methods/compareProperty/index.js +50 -0
  30. package/lib/methods/hasField/index.js +15 -0
  31. package/lib/methods/isSameArray/index.js +21 -0
  32. package/lib/methods/triggerCallbacks/index.js +3 -3
  33. package/lib/methods/triggerWatchers/index.js +16 -9
  34. package/package.json +1 -1
  35. package/es/hooks/useScope/index.d.ts +0 -2
  36. package/es/hooks/useScope/index.js +0 -3
  37. package/es/hooks/useScope/types.d.ts +0 -3
  38. package/lib/hooks/useScope/index.js +0 -10
  39. /package/es/{hooks/useScope → methods/compareProperty}/types.js +0 -0
  40. /package/lib/{hooks/useScope → methods/compareProperty}/types.js +0 -0
package/lib/index.js CHANGED
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "UseCaseFragment", {
9
9
  return _UseCaseFragment.UseCaseFragment;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "useReducer", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _useReducer.useReducer;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "useUseCase", {
13
19
  enumerable: true,
14
20
  get: function get() {
@@ -16,4 +22,5 @@ Object.defineProperty(exports, "useUseCase", {
16
22
  }
17
23
  });
18
24
  var _UseCaseFragment = require("./components/UseCaseFragment");
25
+ var _useReducer = require("./hooks/useReducer");
19
26
  var _useUseCase = require("./hooks/useUseCase");
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.compareProperty = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _hasField = require("../hasField");
11
+ var compareProperty = function compareProperty(from, to, fieldPath, callback) {
12
+ var fieldPathStack = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
13
+ var undef = void 0;
14
+ var _ref = fieldPath.match(/^([^.]+)\.(.+)$/) || [],
15
+ _ref2 = (0, _slicedToArray2["default"])(_ref, 3),
16
+ _ref2$ = _ref2[1],
17
+ key = _ref2$ === void 0 ? fieldPath : _ref2$,
18
+ _ref2$2 = _ref2[2],
19
+ subFieldPath = _ref2$2 === void 0 ? '' : _ref2$2;
20
+ var hasFromField = (0, _hasField.hasField)(from, key);
21
+ var hasToField = (0, _hasField.hasField)(to, key);
22
+ var currentFieldPathStack = [].concat((0, _toConsumableArray2["default"])(fieldPathStack), [key]);
23
+ if (hasFromField || hasToField) {
24
+ var fromValue = hasFromField ? from[key] : undef;
25
+ var toValue = hasToField ? to[key] : undef;
26
+ if (subFieldPath) {
27
+ compareProperty(fromValue, toValue, subFieldPath, callback, currentFieldPathStack);
28
+ return;
29
+ }
30
+ if (fromValue === toValue) {
31
+ return;
32
+ }
33
+ callback(fromValue, toValue, currentFieldPathStack);
34
+ return;
35
+ }
36
+ if (/^\d+^/.test(key)) {
37
+ return;
38
+ }
39
+ var fromArray = Array.isArray(from) ? from : [];
40
+ var toArray = Array.isArray(to) ? to : [];
41
+ var fromLength = fromArray.length;
42
+ var toLength = toArray.length;
43
+ var length = Math.max(fromLength, toLength);
44
+ for (var i = 0; i < length; i++) {
45
+ var fromItem = fromArray[i];
46
+ var toItem = toArray[i];
47
+ compareProperty(fromItem, toItem, fieldPath, callback, [].concat((0, _toConsumableArray2["default"])(fieldPathStack), ["".concat(i)]));
48
+ }
49
+ };
50
+ exports.compareProperty = compareProperty;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.hasField = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var hasField = function hasField(data, field) {
10
+ if ((0, _typeof2["default"])(data) !== 'object' || data === null) {
11
+ return false;
12
+ }
13
+ return Object.hasOwn(data, field);
14
+ };
15
+ exports.hasField = hasField;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isSameArray = void 0;
7
+ var isSameArray = function isSameArray(array1, array2) {
8
+ var length1 = array1.length;
9
+ var length2 = array2.length;
10
+ if (length1 !== length2) {
11
+ return false;
12
+ }
13
+ for (var i = 0; i < length1; i++) {
14
+ if (array1[i] === array2[i]) {
15
+ continue;
16
+ }
17
+ return false;
18
+ }
19
+ return true;
20
+ };
21
+ exports.isSameArray = isSameArray;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.triggerCallbacks = void 0;
7
7
  var _triggerWatchers = require("../triggerWatchers");
8
- var triggerCallbacks = function triggerCallbacks(optionsRefCollection, newEntity, prevEntity) {
8
+ var triggerCallbacks = function triggerCallbacks(optionsRefCollection, newEntity, oldEntity) {
9
9
  for (var i = optionsRefCollection.length; i > 0; i--) {
10
10
  var options = optionsRefCollection[i - 1].current;
11
11
  if (!options) {
@@ -14,9 +14,9 @@ var triggerCallbacks = function triggerCallbacks(optionsRefCollection, newEntity
14
14
  var onChange = options.onChange,
15
15
  watch = options.watch;
16
16
  if (watch) {
17
- (0, _triggerWatchers.triggerWatchers)(watch, newEntity, prevEntity);
17
+ (0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
18
18
  }
19
- onChange === null || onChange === void 0 ? void 0 : onChange(newEntity, prevEntity);
19
+ onChange === null || onChange === void 0 ? void 0 : onChange(newEntity, oldEntity);
20
20
  }
21
21
  };
22
22
  exports.triggerCallbacks = triggerCallbacks;
@@ -6,17 +6,24 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.triggerWatchers = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var triggerWatchers = function triggerWatchers(watch, newEntity, prevEntity) {
10
- for (var _i = 0, _Object$entries = Object.entries(watch); _i < _Object$entries.length; _i++) {
9
+ var _compareProperty = require("../compareProperty");
10
+ var triggerWatchers = function triggerWatchers(watch, newEntity, oldEntity) {
11
+ var _loop = function _loop() {
11
12
  var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
12
- property = _Object$entries$_i[0],
13
+ fieldPath = _Object$entries$_i[0],
13
14
  watcher = _Object$entries$_i[1];
14
- var newValue = newEntity === null || newEntity === void 0 ? void 0 : newEntity[property];
15
- var prevValue = prevEntity === null || prevEntity === void 0 ? void 0 : prevEntity[property];
16
- if (newValue === prevValue) {
17
- continue;
18
- }
19
- watcher(newEntity, prevEntity);
15
+ (0, _compareProperty.compareProperty)(oldEntity, newEntity, fieldPath, function (oldValue, newValue, fieldPaths) {
16
+ watcher({
17
+ fieldPaths: fieldPaths,
18
+ newEntity: newEntity,
19
+ oldEntity: oldEntity,
20
+ newValue: newValue,
21
+ oldValue: oldValue
22
+ });
23
+ });
24
+ };
25
+ for (var _i = 0, _Object$entries = Object.entries(watch); _i < _Object$entries.length; _i++) {
26
+ _loop();
20
27
  }
21
28
  };
22
29
  exports.triggerWatchers = triggerWatchers;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "keywords": [
@@ -1,2 +0,0 @@
1
- import { Scope } from './types';
2
- export declare const useScope: <T>(scope: Scope<T>) => T;
@@ -1,3 +0,0 @@
1
- export const useScope = (scope) => {
2
- return scope();
3
- };
@@ -1,3 +0,0 @@
1
- export interface Scope<T> {
2
- (): T;
3
- }
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useScope = void 0;
7
- var useScope = function useScope(scope) {
8
- return scope();
9
- };
10
- exports.useScope = useScope;