@mic-rexjs/usecases-react 1.3.36 → 1.4.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/UpdateFragment/index.d.ts +2 -0
- package/es/components/UpdateFragment/index.js +8 -0
- package/es/components/UpdateFragment/types.d.ts +3 -0
- package/es/components/UseCaseFragment/index.d.ts +1 -1
- package/es/components/UseCaseFragment/types.d.ts +2 -2
- package/es/configs/defaultUseCaseContext/index.d.ts +3 -1
- package/es/configs/defaultUseCaseContext/index.js +1 -1
- package/es/configs/defaultUseCaseContext/types.d.ts +11 -0
- package/es/configs/defaultUseCaseContext/types.js +1 -0
- package/es/configs/usecaseContextMap/index.d.ts +1 -3
- package/es/configs/usecaseContextMap/types.d.ts +4 -17
- package/es/hooks/useCompareDeps/index.d.ts +1 -0
- package/es/hooks/useCompareDeps/index.js +24 -0
- package/es/hooks/useConstant/index.d.ts +2 -0
- package/es/hooks/useConstant/index.js +5 -0
- package/es/hooks/useConstant/types.d.ts +3 -0
- package/es/hooks/useConstant/types.js +1 -0
- package/es/hooks/useConstantFn/index.d.ts +1 -0
- package/es/hooks/useConstantFn/index.js +7 -0
- package/es/hooks/useOptionsRefCollection/index.d.ts +3 -0
- package/es/hooks/useOptionsRefCollection/index.js +22 -0
- package/es/hooks/useOptionsRefCollection/types.d.ts +2 -0
- package/es/hooks/useOptionsRefCollection/types.js +1 -0
- package/es/hooks/useProvider/index.d.ts +7 -0
- package/es/hooks/useProvider/index.js +17 -0
- package/es/hooks/useProvider/types.d.ts +3 -0
- package/es/hooks/useProvider/types.js +1 -0
- package/es/hooks/useScope/index.d.ts +2 -0
- package/es/hooks/useScope/index.js +3 -0
- package/es/hooks/useScope/types.d.ts +3 -0
- package/es/hooks/useScope/types.js +1 -0
- package/es/hooks/useUseCase/index.js +68 -89
- package/es/hooks/useUseCase/index.test.js +166 -136
- package/es/hooks/useUseCase/types.d.ts +9 -7
- package/es/hooks/useUseCaseContext/index.d.ts +3 -0
- package/es/hooks/useUseCaseContext/index.js +17 -0
- package/es/index.d.ts +3 -2
- package/es/methods/getRootEntity/index.d.ts +2 -0
- package/es/methods/getRootEntity/index.js +9 -0
- package/es/methods/initEntityReducers/index.d.ts +5 -0
- package/es/methods/initEntityReducers/index.js +13 -0
- package/es/methods/initEntityReducers/types.d.ts +3 -0
- package/es/methods/initEntityReducers/types.js +1 -0
- package/es/methods/removeItem/index.d.ts +1 -0
- package/es/methods/removeItem/index.js +7 -0
- package/es/methods/triggerCallbacks/index.d.ts +3 -0
- package/es/methods/triggerCallbacks/index.js +14 -0
- package/es/{hooks/useUseCase/methods → methods}/triggerWatchers/index.d.ts +1 -1
- package/lib/components/UpdateFragment/index.js +16 -0
- package/lib/configs/defaultUseCaseContext/index.js +1 -1
- package/lib/configs/defaultUseCaseContext/types.js +5 -0
- package/lib/hooks/useCompareDeps/index.js +31 -0
- package/lib/hooks/useConstant/index.js +16 -0
- package/lib/hooks/useConstant/types.js +5 -0
- package/lib/hooks/useConstantFn/index.js +18 -0
- package/lib/hooks/useOptionsRefCollection/index.js +29 -0
- package/lib/hooks/useOptionsRefCollection/types.js +5 -0
- package/lib/hooks/useProvider/index.js +30 -0
- package/lib/hooks/useProvider/types.js +5 -0
- package/lib/hooks/useScope/index.js +10 -0
- package/lib/hooks/useScope/types.js +5 -0
- package/lib/hooks/useUseCase/index.js +73 -115
- package/lib/hooks/useUseCase/index.test.js +226 -177
- package/lib/hooks/useUseCaseContext/index.js +24 -0
- package/lib/methods/getRootEntity/index.js +16 -0
- package/lib/methods/initEntityReducers/index.js +29 -0
- package/lib/methods/initEntityReducers/types.js +5 -0
- package/lib/methods/removeItem/index.js +14 -0
- package/lib/methods/triggerCallbacks/index.js +22 -0
- package/package.json +2 -2
- package/es/core/usecases/optionsGetterCellectionUseCase/index.d.ts +0 -2
- package/es/core/usecases/optionsGetterCellectionUseCase/index.js +0 -13
- package/es/core/usecases/optionsGetterCellectionUseCase/types.d.ts +0 -8
- package/es/hooks/useOptionsTransfer/index.d.ts +0 -3
- package/es/hooks/useOptionsTransfer/index.js +0 -15
- package/es/hooks/useUseCase/methods/triggerCallbacks/index.d.ts +0 -3
- package/es/hooks/useUseCase/methods/triggerCallbacks/index.js +0 -11
- package/lib/core/usecases/optionsGetterCellectionUseCase/index.js +0 -23
- package/lib/hooks/useOptionsTransfer/index.js +0 -23
- package/lib/hooks/useUseCase/methods/triggerCallbacks/index.js +0 -32
- /package/es/{core/usecases/optionsGetterCellectionUseCase → components/UpdateFragment}/types.js +0 -0
- /package/es/{hooks/useUseCase/methods → methods}/triggerWatchers/index.js +0 -0
- /package/lib/{core/usecases/optionsGetterCellectionUseCase → components/UpdateFragment}/types.js +0 -0
- /package/lib/{hooks/useUseCase/methods → methods}/triggerWatchers/index.js +0 -0
|
@@ -459,6 +459,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
459
459
|
});
|
|
460
460
|
}),
|
|
461
461
|
result = _renderHook11.result;
|
|
462
|
+
"";
|
|
462
463
|
var context = result.current;
|
|
463
464
|
var _context14 = (0, _slicedToArray2["default"])(context, 2),
|
|
464
465
|
reducers = _context14[1];
|
|
@@ -621,93 +622,157 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
621
622
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
622
623
|
});
|
|
623
624
|
});
|
|
624
|
-
(0, _globals.describe)('`useUseCase` should work with 1+
|
|
625
|
-
(0, _globals.test)('
|
|
625
|
+
(0, _globals.describe)('`useUseCase` should work with 1+ arguments on non-entity mode', function () {
|
|
626
|
+
(0, _globals.test)('`entity` should equal `defaultFile`', function () {
|
|
626
627
|
var _renderHook17 = (0, _react.renderHook)(function () {
|
|
627
|
-
return (0, _.useUseCase)(
|
|
628
|
+
return (0, _.useUseCase)(mathUseCase);
|
|
628
629
|
}),
|
|
629
630
|
result = _renderHook17.result;
|
|
630
|
-
var
|
|
631
|
-
(0, _globals.expect)(
|
|
631
|
+
var reducers = result.current;
|
|
632
|
+
(0, _globals.expect)(Array.isArray(reducers)).toBe(false);
|
|
632
633
|
});
|
|
633
|
-
(0, _globals.test)('
|
|
634
|
+
(0, _globals.test)('returned reducer should work', function () {
|
|
634
635
|
var _renderHook18 = (0, _react.renderHook)(function () {
|
|
635
|
-
return (0, _.useUseCase)(
|
|
636
|
+
return (0, _.useUseCase)(mathUseCase);
|
|
636
637
|
}),
|
|
637
638
|
result = _renderHook18.result;
|
|
638
|
-
var
|
|
639
|
-
var
|
|
640
|
-
|
|
641
|
-
(0, _globals.expect)(entity).toBe(void 0);
|
|
639
|
+
var reducers = result.current;
|
|
640
|
+
var add = reducers.add;
|
|
641
|
+
(0, _globals.expect)(add(1, 2)).toBe(3);
|
|
642
642
|
});
|
|
643
|
-
(0, _globals.test)('`
|
|
643
|
+
(0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
|
|
644
644
|
var _renderHook19 = (0, _react.renderHook)(function () {
|
|
645
|
-
return (0, _.useUseCase)(
|
|
645
|
+
return (0, _.useUseCase)(mathUseCase, {
|
|
646
|
+
extraValue: 5
|
|
647
|
+
});
|
|
646
648
|
}),
|
|
647
649
|
result = _renderHook19.result;
|
|
648
|
-
var
|
|
649
|
-
var
|
|
650
|
-
|
|
651
|
-
(0, _globals.expect)((0, _typeof2["default"])(reducers)).toBe('object');
|
|
650
|
+
var reducers = result.current;
|
|
651
|
+
var add = reducers.add;
|
|
652
|
+
(0, _globals.expect)(add(1, 2)).toBe(8);
|
|
652
653
|
});
|
|
653
|
-
(0, _globals.test)('
|
|
654
|
+
(0, _globals.test)('when `options` has changed, it should not trigger update', function () {
|
|
654
655
|
var onUpdate = _globals.jest.fn();
|
|
656
|
+
var onDeepUpdate = _globals.jest.fn();
|
|
655
657
|
var _renderHook20 = (0, _react.renderHook)(function () {
|
|
658
|
+
var _useState7 = (0, _react2.useState)(0),
|
|
659
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
660
|
+
extraValue = _useState8[0],
|
|
661
|
+
setExtraValue = _useState8[1];
|
|
662
|
+
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
663
|
+
extraValue: extraValue
|
|
664
|
+
});
|
|
656
665
|
(0, _ahooks.useUpdateEffect)(function () {
|
|
657
666
|
onUpdate();
|
|
658
|
-
});
|
|
659
|
-
|
|
667
|
+
}, [reducers]);
|
|
668
|
+
useDeepCompareUpdate(function () {
|
|
669
|
+
onDeepUpdate();
|
|
670
|
+
}, [reducers]);
|
|
671
|
+
return setExtraValue;
|
|
660
672
|
}),
|
|
661
673
|
result = _renderHook20.result;
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
reducers = _context19[1];
|
|
665
|
-
var setPath = reducers.setPath;
|
|
674
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
675
|
+
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
666
676
|
(0, _react.act)(function () {
|
|
667
|
-
|
|
677
|
+
result.current(3);
|
|
678
|
+
});
|
|
679
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
680
|
+
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
681
|
+
});
|
|
682
|
+
(0, _globals.test)('when `deps` change, it should update reducers', function () {
|
|
683
|
+
var onUpdate = _globals.jest.fn();
|
|
684
|
+
var onDeepUpdate = _globals.jest.fn();
|
|
685
|
+
var _renderHook21 = (0, _react.renderHook)(function () {
|
|
686
|
+
var _useState9 = (0, _react2.useState)(0),
|
|
687
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
688
|
+
extraValue = _useState10[0],
|
|
689
|
+
setExtraValue = _useState10[1];
|
|
690
|
+
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
691
|
+
extraValue: extraValue
|
|
692
|
+
}, [extraValue]);
|
|
693
|
+
(0, _ahooks.useUpdateEffect)(function () {
|
|
694
|
+
onUpdate();
|
|
695
|
+
}, [reducers]);
|
|
696
|
+
useDeepCompareUpdate(function () {
|
|
697
|
+
onDeepUpdate();
|
|
698
|
+
}, [reducers]);
|
|
699
|
+
return setExtraValue;
|
|
700
|
+
}),
|
|
701
|
+
result = _renderHook21.result;
|
|
702
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
703
|
+
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
704
|
+
(0, _react.act)(function () {
|
|
705
|
+
result.current(3);
|
|
706
|
+
});
|
|
707
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
|
|
708
|
+
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
|
|
709
|
+
});
|
|
710
|
+
(0, _globals.test)('empty `deps` should not update reducers', function () {
|
|
711
|
+
var onUpdate = _globals.jest.fn();
|
|
712
|
+
var onDeepUpdate = _globals.jest.fn();
|
|
713
|
+
var _renderHook22 = (0, _react.renderHook)(function () {
|
|
714
|
+
var _useState11 = (0, _react2.useState)(0),
|
|
715
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
716
|
+
extraValue = _useState12[0],
|
|
717
|
+
setExtraValue = _useState12[1];
|
|
718
|
+
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
719
|
+
extraValue: extraValue
|
|
720
|
+
}, []);
|
|
721
|
+
(0, _ahooks.useUpdateEffect)(function () {
|
|
722
|
+
onUpdate();
|
|
723
|
+
}, [reducers]);
|
|
724
|
+
useDeepCompareUpdate(function () {
|
|
725
|
+
onDeepUpdate();
|
|
726
|
+
}, [reducers]);
|
|
727
|
+
return setExtraValue;
|
|
728
|
+
}),
|
|
729
|
+
result = _renderHook22.result;
|
|
730
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
731
|
+
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
732
|
+
(0, _react.act)(function () {
|
|
733
|
+
result.current(3);
|
|
668
734
|
});
|
|
669
|
-
(0, _globals.expect)(result.current).toBe(context);
|
|
670
|
-
(0, _globals.expect)(result.current).toEqual(context);
|
|
671
735
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
736
|
+
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
672
737
|
});
|
|
673
|
-
(0, _globals.test)('should
|
|
738
|
+
(0, _globals.test)('should not trigger update', function () {
|
|
739
|
+
var onUpdate = _globals.jest.fn();
|
|
740
|
+
(0, _react.render)((0, _jsxRuntime.jsx)(MathParent, {
|
|
741
|
+
onUpdate: onUpdate
|
|
742
|
+
}));
|
|
743
|
+
_react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
|
|
744
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
745
|
+
});
|
|
746
|
+
});
|
|
747
|
+
(0, _globals.describe)('`useUseCase` should work with 1+ arguments on context mode', function () {
|
|
748
|
+
(0, _globals.test)('should work within <Child /> which it is under <Parent />', function () {
|
|
674
749
|
var textPrefix = '>>';
|
|
675
|
-
var
|
|
676
|
-
var
|
|
677
|
-
var
|
|
678
|
-
var onUpdate2 = _globals.jest.fn();
|
|
679
|
-
var onPathChange2 = _globals.jest.fn();
|
|
680
|
-
var onUndefinedEntity2 = _globals.jest.fn();
|
|
750
|
+
var onUpdate = _globals.jest.fn();
|
|
751
|
+
var onPathChange = _globals.jest.fn();
|
|
752
|
+
var onUndefinedEntity = _globals.jest.fn();
|
|
681
753
|
var onSetPath = _globals.jest.fn(function () {
|
|
682
754
|
return PATH_1;
|
|
683
755
|
});
|
|
684
|
-
(0, _react.render)((0, _jsxRuntime.
|
|
685
|
-
children:
|
|
756
|
+
(0, _react.render)((0, _jsxRuntime.jsx)("div", {
|
|
757
|
+
children: (0, _jsxRuntime.jsx)(Parent, {
|
|
686
758
|
onSetPath: onSetPath,
|
|
687
759
|
children: (0, _jsxRuntime.jsx)(Child, {
|
|
688
760
|
textPrefix: textPrefix,
|
|
689
|
-
onUpdate:
|
|
690
|
-
onPathChange:
|
|
691
|
-
onUndefinedEntity:
|
|
761
|
+
onUpdate: onUpdate,
|
|
762
|
+
onPathChange: onPathChange,
|
|
763
|
+
onUndefinedEntity: onUndefinedEntity
|
|
692
764
|
})
|
|
693
|
-
})
|
|
694
|
-
onUpdate: onUpdate2,
|
|
695
|
-
onPathChange: onPathChange2,
|
|
696
|
-
onUndefinedEntity: onUndefinedEntity2
|
|
697
|
-
})]
|
|
765
|
+
})
|
|
698
766
|
}));
|
|
699
767
|
_react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
|
|
700
768
|
(0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
|
|
701
|
-
(0, _globals.expect)(
|
|
702
|
-
(0, _globals.expect)(
|
|
769
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
|
|
770
|
+
(0, _globals.expect)(onPathChange).toHaveBeenCalledWith(PATH_1);
|
|
703
771
|
_react.fireEvent.click(_react.screen.getByText(textPrefix + CHILD_BUTTON_TEXT));
|
|
704
772
|
(0, _globals.expect)(onSetPath).toHaveBeenCalledTimes(1);
|
|
705
|
-
(0, _globals.expect)(
|
|
706
|
-
(0, _globals.expect)(
|
|
707
|
-
(0, _globals.expect)(
|
|
708
|
-
(0, _globals.expect)(onPathChange2).toHaveBeenCalledTimes(0);
|
|
709
|
-
(0, _globals.expect)(onUndefinedEntity1).toHaveBeenCalledTimes(0);
|
|
710
|
-
(0, _globals.expect)(onUndefinedEntity2).toHaveBeenCalledTimes(1);
|
|
773
|
+
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(2);
|
|
774
|
+
(0, _globals.expect)(onPathChange).toHaveBeenCalledWith('');
|
|
775
|
+
(0, _globals.expect)(onUndefinedEntity).toHaveBeenCalledTimes(0);
|
|
711
776
|
});
|
|
712
777
|
(0, _globals.test)('`options.onChange` event should be trigger at child elements', function () {
|
|
713
778
|
var onFirstChange = _globals.jest.fn();
|
|
@@ -765,6 +830,56 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
765
830
|
(0, _globals.expect)(onFirstChange).toHaveBeenCalledTimes(1);
|
|
766
831
|
(0, _globals.expect)(onParentPathChange).toHaveBeenCalledTimes(2);
|
|
767
832
|
});
|
|
833
|
+
(0, _globals.test)('`options.onChange` event should be trigger in orders', function () {
|
|
834
|
+
var changeTimes = 0;
|
|
835
|
+
var updateChangeTimes = function updateChangeTimes() {
|
|
836
|
+
return ++changeTimes;
|
|
837
|
+
};
|
|
838
|
+
var onChangeA = _globals.jest.fn(updateChangeTimes);
|
|
839
|
+
var onChangeB = _globals.jest.fn(updateChangeTimes);
|
|
840
|
+
var onChangeC = _globals.jest.fn(updateChangeTimes);
|
|
841
|
+
var buttonText = 'my button';
|
|
842
|
+
var A = function A(_ref7) {
|
|
843
|
+
var children = _ref7.children;
|
|
844
|
+
(0, _.useUseCase)(fileUseCase, {
|
|
845
|
+
onChange: onChangeA
|
|
846
|
+
});
|
|
847
|
+
return (0, _jsxRuntime.jsx)(_react2.Fragment, {
|
|
848
|
+
children: children
|
|
849
|
+
});
|
|
850
|
+
};
|
|
851
|
+
var B = function B() {
|
|
852
|
+
(0, _.useUseCase)(fileUseCase, {
|
|
853
|
+
onChange: onChangeB
|
|
854
|
+
});
|
|
855
|
+
return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
|
|
856
|
+
};
|
|
857
|
+
var C = function C() {
|
|
858
|
+
var _useUseCase8 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
859
|
+
onChange: onChangeC
|
|
860
|
+
}),
|
|
861
|
+
_useUseCase9 = (0, _slicedToArray2["default"])(_useUseCase8, 3),
|
|
862
|
+
setPath = _useUseCase9[1].setPath,
|
|
863
|
+
Provider = _useUseCase9[2];
|
|
864
|
+
var onFirstClick = function onFirstClick() {
|
|
865
|
+
setPath(PATH_1);
|
|
866
|
+
};
|
|
867
|
+
return (0, _jsxRuntime.jsxs)(Provider, {
|
|
868
|
+
children: [(0, _jsxRuntime.jsx)(A, {
|
|
869
|
+
children: (0, _jsxRuntime.jsx)(B, {})
|
|
870
|
+
}), (0, _jsxRuntime.jsx)("button", {
|
|
871
|
+
onClick: onFirstClick,
|
|
872
|
+
children: buttonText
|
|
873
|
+
})]
|
|
874
|
+
});
|
|
875
|
+
};
|
|
876
|
+
(0, _react.render)((0, _jsxRuntime.jsx)(C, {}));
|
|
877
|
+
(0, _globals.expect)(changeTimes).toBe(0);
|
|
878
|
+
_react.fireEvent.click(_react.screen.getByText(buttonText));
|
|
879
|
+
(0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
|
|
880
|
+
(0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
|
|
881
|
+
(0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
|
|
882
|
+
});
|
|
768
883
|
(0, _globals.test)('`options.watch` should be trigger at child elements', function () {
|
|
769
884
|
var onFirstExtChange = _globals.jest.fn();
|
|
770
885
|
var onSecondExtChange = _globals.jest.fn();
|
|
@@ -781,14 +896,14 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
781
896
|
return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
|
|
782
897
|
};
|
|
783
898
|
var B = function B() {
|
|
784
|
-
var
|
|
899
|
+
var _useUseCase10 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
785
900
|
watch: {
|
|
786
901
|
ext: onParentExtChange
|
|
787
902
|
}
|
|
788
903
|
}),
|
|
789
|
-
|
|
790
|
-
setPath =
|
|
791
|
-
Provider =
|
|
904
|
+
_useUseCase11 = (0, _slicedToArray2["default"])(_useUseCase10, 3),
|
|
905
|
+
setPath = _useUseCase11[1].setPath,
|
|
906
|
+
Provider = _useUseCase11[2];
|
|
792
907
|
var onFirstClick = function onFirstClick() {
|
|
793
908
|
setPath(PATH_1);
|
|
794
909
|
onExtChange = onSecondExtChange;
|
|
@@ -825,127 +940,61 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
825
940
|
(0, _globals.expect)(onFirstExtChange).toHaveBeenCalledTimes(1);
|
|
826
941
|
(0, _globals.expect)(onParentExtChange).toHaveBeenCalledTimes(2);
|
|
827
942
|
});
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
var
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
var
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
(0,
|
|
870
|
-
|
|
871
|
-
},
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
(0, _globals.expect)(
|
|
879
|
-
|
|
880
|
-
(0,
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
884
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
885
|
-
});
|
|
886
|
-
(0, _globals.test)('when `deps` change, it should update reducers', function () {
|
|
887
|
-
var onUpdate = _globals.jest.fn();
|
|
888
|
-
var onDeepUpdate = _globals.jest.fn();
|
|
889
|
-
var _renderHook25 = (0, _react.renderHook)(function () {
|
|
890
|
-
var _useState9 = (0, _react2.useState)(0),
|
|
891
|
-
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
892
|
-
extraValue = _useState10[0],
|
|
893
|
-
setExtraValue = _useState10[1];
|
|
894
|
-
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
895
|
-
extraValue: extraValue
|
|
896
|
-
}, [extraValue]);
|
|
897
|
-
(0, _ahooks.useUpdateEffect)(function () {
|
|
898
|
-
onUpdate();
|
|
899
|
-
}, [reducers]);
|
|
900
|
-
useDeepCompareUpdate(function () {
|
|
901
|
-
onDeepUpdate();
|
|
902
|
-
}, [reducers]);
|
|
903
|
-
return setExtraValue;
|
|
904
|
-
}),
|
|
905
|
-
result = _renderHook25.result;
|
|
906
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
907
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
908
|
-
(0, _react.act)(function () {
|
|
909
|
-
result.current(3);
|
|
910
|
-
});
|
|
911
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(1);
|
|
912
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(1);
|
|
913
|
-
});
|
|
914
|
-
(0, _globals.test)('empty `deps` should not update reducers', function () {
|
|
915
|
-
var onUpdate = _globals.jest.fn();
|
|
916
|
-
var onDeepUpdate = _globals.jest.fn();
|
|
917
|
-
var _renderHook26 = (0, _react.renderHook)(function () {
|
|
918
|
-
var _useState11 = (0, _react2.useState)(0),
|
|
919
|
-
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
920
|
-
extraValue = _useState12[0],
|
|
921
|
-
setExtraValue = _useState12[1];
|
|
922
|
-
var reducers = (0, _.useUseCase)(mathUseCase, {
|
|
923
|
-
extraValue: extraValue
|
|
924
|
-
}, []);
|
|
925
|
-
(0, _ahooks.useUpdateEffect)(function () {
|
|
926
|
-
onUpdate();
|
|
927
|
-
}, [reducers]);
|
|
928
|
-
useDeepCompareUpdate(function () {
|
|
929
|
-
onDeepUpdate();
|
|
930
|
-
}, [reducers]);
|
|
931
|
-
return setExtraValue;
|
|
932
|
-
}),
|
|
933
|
-
result = _renderHook26.result;
|
|
934
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
935
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
936
|
-
(0, _react.act)(function () {
|
|
937
|
-
result.current(3);
|
|
938
|
-
});
|
|
939
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
940
|
-
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
941
|
-
});
|
|
942
|
-
(0, _globals.test)('should not trigger update', function () {
|
|
943
|
-
var onUpdate = _globals.jest.fn();
|
|
944
|
-
(0, _react.render)((0, _jsxRuntime.jsx)(MathParent, {
|
|
945
|
-
onUpdate: onUpdate
|
|
946
|
-
}));
|
|
947
|
-
_react.fireEvent.click(_react.screen.getByText(PARENT_BUTTON_TEXT));
|
|
948
|
-
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
943
|
+
(0, _globals.test)('`options.watch` should be trigger in orders', function () {
|
|
944
|
+
var changeTimes = 0;
|
|
945
|
+
var updateChangeTimes = function updateChangeTimes() {
|
|
946
|
+
return ++changeTimes;
|
|
947
|
+
};
|
|
948
|
+
var onChangeA = _globals.jest.fn(updateChangeTimes);
|
|
949
|
+
var onChangeB = _globals.jest.fn(updateChangeTimes);
|
|
950
|
+
var onChangeC = _globals.jest.fn(updateChangeTimes);
|
|
951
|
+
var buttonText = 'my button';
|
|
952
|
+
var A = function A(_ref8) {
|
|
953
|
+
var children = _ref8.children;
|
|
954
|
+
(0, _.useUseCase)(fileUseCase, {
|
|
955
|
+
watch: {
|
|
956
|
+
ext: onChangeA
|
|
957
|
+
}
|
|
958
|
+
});
|
|
959
|
+
return (0, _jsxRuntime.jsx)(_react2.Fragment, {
|
|
960
|
+
children: children
|
|
961
|
+
});
|
|
962
|
+
};
|
|
963
|
+
var B = function B() {
|
|
964
|
+
(0, _.useUseCase)(fileUseCase, {
|
|
965
|
+
watch: {
|
|
966
|
+
ext: onChangeB
|
|
967
|
+
}
|
|
968
|
+
});
|
|
969
|
+
return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
|
|
970
|
+
};
|
|
971
|
+
var C = function C() {
|
|
972
|
+
var _useUseCase12 = (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
973
|
+
watch: {
|
|
974
|
+
ext: onChangeC
|
|
975
|
+
}
|
|
976
|
+
}),
|
|
977
|
+
_useUseCase13 = (0, _slicedToArray2["default"])(_useUseCase12, 3),
|
|
978
|
+
setPath = _useUseCase13[1].setPath,
|
|
979
|
+
Provider = _useUseCase13[2];
|
|
980
|
+
var onFirstClick = function onFirstClick() {
|
|
981
|
+
setPath(PATH_1);
|
|
982
|
+
};
|
|
983
|
+
return (0, _jsxRuntime.jsxs)(Provider, {
|
|
984
|
+
children: [(0, _jsxRuntime.jsx)(A, {
|
|
985
|
+
children: (0, _jsxRuntime.jsx)(B, {})
|
|
986
|
+
}), (0, _jsxRuntime.jsx)("button", {
|
|
987
|
+
onClick: onFirstClick,
|
|
988
|
+
children: buttonText
|
|
989
|
+
})]
|
|
990
|
+
});
|
|
991
|
+
};
|
|
992
|
+
(0, _react.render)((0, _jsxRuntime.jsx)(C, {}));
|
|
993
|
+
(0, _globals.expect)(changeTimes).toBe(0);
|
|
994
|
+
_react.fireEvent.click(_react.screen.getByText(buttonText));
|
|
995
|
+
(0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
|
|
996
|
+
(0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
|
|
997
|
+
(0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
|
|
949
998
|
});
|
|
950
999
|
});
|
|
951
1000
|
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useUseCaseContext = void 0;
|
|
7
|
+
var _useConstant = require("../useConstant");
|
|
8
|
+
var _usecaseContextMap = require("../../configs/usecaseContextMap");
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var useUseCaseContext = function useUseCaseContext(usecase, defaultContext) {
|
|
11
|
+
return (0, _useConstant.useConstant)(function () {
|
|
12
|
+
var map = _usecaseContextMap.usecaseContextMap;
|
|
13
|
+
if (map.has(usecase)) {
|
|
14
|
+
return map.get(usecase);
|
|
15
|
+
}
|
|
16
|
+
if (defaultContext) {
|
|
17
|
+
return defaultContext;
|
|
18
|
+
}
|
|
19
|
+
var ctx = (0, _react.createContext)({});
|
|
20
|
+
map.set(usecase, ctx);
|
|
21
|
+
return ctx;
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
exports.useUseCaseContext = useUseCaseContext;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getRootEntity = void 0;
|
|
7
|
+
var getRootEntity = function getRootEntity(entityState, entityArg, stateless) {
|
|
8
|
+
if (!stateless) {
|
|
9
|
+
return entityState;
|
|
10
|
+
}
|
|
11
|
+
if (typeof entityArg === 'function') {
|
|
12
|
+
return entityArg();
|
|
13
|
+
}
|
|
14
|
+
return entityArg;
|
|
15
|
+
};
|
|
16
|
+
exports.getRootEntity = getRootEntity;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.initEntityReducers = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
|
+
var _usecases = require("@mic-rexjs/usecases");
|
|
11
|
+
var _excluded = ["stateless", "watch", "onChange", "options"];
|
|
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
|
+
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
|
+
var initEntityReducers = function initEntityReducers(entity, usecase, options, onEntityChange) {
|
|
15
|
+
var _entityReducerUseCase = (0, _usecases.entityReducerUseCase)(),
|
|
16
|
+
createEntityReducers = _entityReducerUseCase.createEntityReducers;
|
|
17
|
+
var stateless = options.stateless,
|
|
18
|
+
watch = options.watch,
|
|
19
|
+
onChange = options.onChange,
|
|
20
|
+
usecaseOptions = options.options,
|
|
21
|
+
restUseCaseOptions = (0, _objectWithoutProperties2["default"])(options, _excluded);
|
|
22
|
+
return createEntityReducers(entity, usecase, _objectSpread(_objectSpread(_objectSpread({}, restUseCaseOptions), usecaseOptions), {}, {
|
|
23
|
+
onChange: onEntityChange,
|
|
24
|
+
onGenerate: function onGenerate(newEntity, result) {
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
exports.initEntityReducers = initEntityReducers;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.removeItem = void 0;
|
|
7
|
+
var removeItem = function removeItem(list, item) {
|
|
8
|
+
var index = list.indexOf(item);
|
|
9
|
+
if (index === -1) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
list.splice(index, 1);
|
|
13
|
+
};
|
|
14
|
+
exports.removeItem = removeItem;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.triggerCallbacks = void 0;
|
|
7
|
+
var _triggerWatchers = require("../triggerWatchers");
|
|
8
|
+
var triggerCallbacks = function triggerCallbacks(optionsRefCollection, newEntity, prevEntity) {
|
|
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, prevEntity);
|
|
18
|
+
}
|
|
19
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newEntity, prevEntity);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.triggerCallbacks = triggerCallbacks;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mic-rexjs/usecases-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "React-based solution for use usecases of Clean Architecture",
|
|
5
5
|
"private": false,
|
|
6
6
|
"keywords": [
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@commitlint/cli": "^17.6.6",
|
|
49
49
|
"@commitlint/config-angular": "^17.6.6",
|
|
50
50
|
"@jest/globals": "^29.5.0",
|
|
51
|
-
"@mic-rexjs/usecases": "^1.4.
|
|
51
|
+
"@mic-rexjs/usecases": "^1.4.11",
|
|
52
52
|
"@testing-library/react": "^14.0.0",
|
|
53
53
|
"@types/node": "^20.4.2",
|
|
54
54
|
"@types/react": "^18.2.14",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export const optionsGetterCollectionUseCase = (collection) => {
|
|
2
|
-
const addOptionsGetter = (getter) => {
|
|
3
|
-
collection.unshift(getter);
|
|
4
|
-
};
|
|
5
|
-
const removeOptionsGetter = (getter) => {
|
|
6
|
-
const index = collection.indexOf(getter);
|
|
7
|
-
if (index === -1) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
collection.splice(index, 1);
|
|
11
|
-
};
|
|
12
|
-
return { addOptionsGetter, removeOptionsGetter };
|
|
13
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Reducers } from '@mic-rexjs/usecases';
|
|
2
|
-
export interface OptionsGetter<T> {
|
|
3
|
-
(): T;
|
|
4
|
-
}
|
|
5
|
-
export type OptionsGetterCollectionReducers<T> = Reducers<{
|
|
6
|
-
addOptionsGetter(getter: OptionsGetter<T>): void;
|
|
7
|
-
removeOptionsGetter(getter: OptionsGetter<T>): void;
|
|
8
|
-
}>;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { UseCaseHookOptions } from '../useUseCase/types';
|
|
2
|
-
import { OptionsGetterCollectionReducers } from '../../core/usecases/optionsGetterCellectionUseCase/types';
|
|
3
|
-
export declare const useOptionsTransfer: <T, TOptions extends object>(options: UseCaseHookOptions<T, TOptions>, optionsGetterListReducers: OptionsGetterCollectionReducers<UseCaseHookOptions<T, TOptions>>) => void;
|