@mic-rexjs/usecases-react 1.5.0 → 1.6.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/hooks/useIsRenderingRef/index.d.ts +1 -0
- package/es/hooks/useIsRenderingRef/index.js +9 -0
- package/es/hooks/useUseCase/index.js +12 -4
- package/es/hooks/useUseCase/index.test.js +477 -198
- package/es/index.d.ts +0 -1
- package/es/index.js +0 -1
- package/es/methods/cacheReducerCalls/index.d.ts +3 -0
- package/es/methods/cacheReducerCalls/index.js +26 -0
- package/es/methods/cacheReducerCalls/types.d.ts +11 -0
- package/es/methods/cacheReducerCalls/types.js +1 -0
- package/lib/hooks/useIsRenderingRef/index.js +16 -0
- package/lib/hooks/useUseCase/index.js +12 -4
- package/lib/hooks/useUseCase/index.test.js +664 -321
- package/lib/index.js +0 -7
- package/lib/methods/cacheReducerCalls/index.js +45 -0
- package/lib/methods/cacheReducerCalls/types.js +5 -0
- package/package.json +1 -1
- package/es/hooks/useReducer/index.d.ts +0 -2
- package/es/hooks/useReducer/index.js +0 -20
- package/lib/hooks/useReducer/index.js +0 -30
package/dist/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.min.js.LICENSE.txt */
|
|
2
|
-
!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("react"),require("ahooks"),require("@mic-rexjs/usecases"));else if("function"==typeof define&&define.amd)define(["react","ahooks","@mic-rexjs/usecases"],r);else{var t="object"==typeof exports?r(require("react"),require("ahooks"),require("@mic-rexjs/usecases")):r(e.react,e.ahooks,e["@mic-rexjs/usecases"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,((e,r,t)=>(()=>{"use strict";var n={251:(e,r,t)=>{var n=t(156),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};r.jsx=function(e,r,t){var n,c={},f=null,s=null;for(n in void 0!==t&&(f=""+t),void 0!==r.key&&(f=""+r.key),void 0!==r.ref&&(s=r.ref),r)u.call(r,n)&&!a.hasOwnProperty(n)&&(c[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===c[n]&&(c[n]=r[n]);return{$$typeof:o,type:e,key:f,ref:s,props:c,_owner:i.current}}},893:(e,r,t)=>{e.exports=t(251)},112:e=>{e.exports=t},749:e=>{e.exports=r},156:r=>{r.exports=e}},o={};function u(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,u),t.exports}u.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return u.d(r,{a:r}),r},u.d=(e,r)=>{for(var t in r)u.o(r,t)&&!u.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},u.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{u.r(i),u.d(i,{UseCaseFragment:()=>C,
|
|
2
|
+
!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("react"),require("ahooks"),require("@mic-rexjs/usecases"));else if("function"==typeof define&&define.amd)define(["react","ahooks","@mic-rexjs/usecases"],r);else{var t="object"==typeof exports?r(require("react"),require("ahooks"),require("@mic-rexjs/usecases")):r(e.react,e.ahooks,e["@mic-rexjs/usecases"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,((e,r,t)=>(()=>{"use strict";var n={251:(e,r,t)=>{var n=t(156),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};r.jsx=function(e,r,t){var n,c={},f=null,s=null;for(n in void 0!==t&&(f=""+t),void 0!==r.key&&(f=""+r.key),void 0!==r.ref&&(s=r.ref),r)u.call(r,n)&&!a.hasOwnProperty(n)&&(c[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===c[n]&&(c[n]=r[n]);return{$$typeof:o,type:e,key:f,ref:s,props:c,_owner:i.current}}},893:(e,r,t)=>{e.exports=t(251)},112:e=>{e.exports=t},749:e=>{e.exports=r},156:r=>{r.exports=e}},o={};function u(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,u),t.exports}u.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return u.d(r,{a:r}),r},u.d=(e,r)=>{for(var t in r)u.o(r,t)&&!u.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},u.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{u.r(i),u.d(i,{UseCaseFragment:()=>C,useUseCase:()=>x});var e=u(893),r=u(156),t=u.n(r);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function a(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,u,i,a=[],c=!0,f=!1;try{if(u=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=u.call(t)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(e,r)||a(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var f=u(749),s=function(e){return c((0,r.useState)(e),1)[0]},l=function(e,r){var t=e.length;if(t!==r.length)return!1;for(var n=0;n<t;n++)if(e[n]!==r[n])return!1;return!0};function y(e,r,t){return(r=function(e){var r=function(e,r){if("object"!==n(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===n(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var p=u(112),v=["stateless","watch","onChange","options"];function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach((function(r){y(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var m=function(e,r){var t=e.indexOf(r);-1!==t&&e.splice(t,1)};function h(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var O=function(e,r){return"object"===n(e)&&null!==e&&Object.hasOwn(e,r)},g=function e(r,t,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=c(n.match(/^([^.]+)\.(.+)$/)||[],3),f=a[1],s=void 0===f?n:f,l=a[2],y=void 0===l?"":l,p=O(r,s),v=O(t,s),b=[].concat(h(u),[s]);if(p||v){var d=p?r[s]:i,m=v?t[s]:i;if(y)return void e(d,m,y,o,b);if(d===m)return;o(d,m,b)}else if(!/^\d+^/.test(s))for(var g=Array.isArray(r)?r:[],j=Array.isArray(t)?t:[],S=g.length,w=j.length,x=Math.max(S,w),C=0;C<x;C++)e(g[C],j[C],n,o,[].concat(h(u),["".concat(C)]))},j=function(e,r,t){for(var n=function(){var e=c(u[o],2),n=e[0],i=e[1];g(t,r,n,(function(e,n,o){i({fieldPaths:o,newEntity:r,oldEntity:t,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()},S=new Map,w=(0,r.createContext)({}),x=function(e,o,u,i){var a,y,b,h,O,g,x,C=s("function"==typeof o),P=(C?u:o)||{},_=P.stateless,E=c((0,r.useState)(C&&!_?e:null),2),A=E[0],R=E[1],k=(b=(C?i:u)||[],h=(0,r.useRef)(0),O=(0,r.useRef)([]),g=O.current,x=l(b,g),O.current=b,h.current+=x?0:1,h.current),I=((a=(0,r.useRef)(!0)).current=!0,(0,r.useEffect)((function(){a.current=!1})),a),M=(y=C?o:e,c((0,r.useState)((function(){return y})),1)[0]),T=M,U=function(e,t){return s((function(){var n=S;if(n.has(e))return n.get(e);if(t)return t;var o=(0,r.createContext)({});return n.set(e,o),o}))}(T,C?null:w),q=(0,r.useContext)(U),D=q.entity,F=q.reducers,L=q.optionsRefCollection,V="object"===n(L),$=C||V,z=function(e,r,t){var n=(0,f.useLatest)(t),o=(0,f.useCreation)((function(){return e?[]:r}),[r,e]),u=(0,f.usePrevious)(o);return(0,f.useCreation)((function(){u&&m(u,n),o.push(n)}),[n,o,u]),(0,f.useUnmount)((function(){m(o,n)})),o}(C||!V,L||null,P),N=(0,f.useCreation)((function(){return C?function(e,r,t){return t?"function"==typeof r?r():r:e}(A,e,_):D}),[C,D,_,A,e]),B=(0,f.useMemoizedFn)((function(e,r){_||R(e),function(e,r,t){for(var n=e.length;n>0;n--){var o=e[n-1].current;if(o){var u=o.onChange,i=o.watch;i&&j(i,r,t),null==u||u(r,t)}}}(z,e,r)})),G=(0,f.useMemoizedFn)((function(){var e={},r={};return C?r=function(e,r,t,n){var o=(0,p.entityReducerUseCase)().createEntityReducers,u=(t.stateless,t.watch,t.onChange,t.options);return o(e,r,d(d(d({},function(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(t,v)),u),{},{onChange:n,onGenerate:function(e,r){return r}}))}(N,T,P,B):F?r=F:e=M(P),[e,r]})),W=C?N:F,Y=c((0,f.useCreation)((function(){return G()}),[G,k,W]),2),H=Y[0],J=Y[1],K=function(e,r,n,o){var u=(0,f.useCreation)((function(){return{entity:r,reducers:n,optionsRefCollection:o}}),[r,n,o]),i=(0,f.useLatest)(u);return s((function(){return function(r){var n=r.children,o=e.Provider;return t().createElement(o,{value:i.current},n)}}))}(U,N,J,z),Q=(0,f.useMemoizedFn)((function(e){return function(e,r){for(var t={},n={},o=function(){var e=c(i[u],2),r=e[0],o=e[1];n[r]=function(){for(var e=t[r],n=I.current,u=arguments.length,i=new Array(u),a=0;a<u;a++)i[a]=arguments[a];if(e&&n){var c=e.parameters,f=e.returnValue;if(l(c,i))return f}var s=o.apply(void 0,i);return n&&(t[r]={parameters:i,returnValue:s}),s}},u=0,i=Object.entries(e);u<i.length;u++)o();return n}(e)})),X=(0,f.useCreation)((function(){return[N,Q(J),C?K:null]}),[C,N,J,K,Q]);return(0,f.useCreation)((function(){return $?X:Q(H)}),[$,H,X,Q])},C=function(t){var n=t.usecase,o=t.watch,u=t.onChange;return x(n,{watch:o,onChange:u}),(0,e.jsx)(r.Fragment,{})}})(),i})()));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useIsRenderingRef: () => React.MutableRefObject<boolean>;
|
|
@@ -10,6 +10,8 @@ import { triggerCallbacks } from '../../methods/triggerCallbacks';
|
|
|
10
10
|
import { getRootEntity } from '../../methods/getRootEntity';
|
|
11
11
|
import { useUseCaseContext } from '../useUseCaseContext';
|
|
12
12
|
import { defaultUseCaseContext } from '../../configs/defaultUseCaseContext';
|
|
13
|
+
import { useIsRenderingRef } from '../useIsRenderingRef';
|
|
14
|
+
import { cacheReducerCalls } from '../../methods/cacheReducerCalls';
|
|
13
15
|
export const useUseCase = (arg1, arg2, arg3, arg4) => {
|
|
14
16
|
const hasInitialEntity = useConstant(typeof arg2 === 'function');
|
|
15
17
|
const options = ((hasInitialEntity ? arg3 : arg2) || {});
|
|
@@ -17,6 +19,7 @@ export const useUseCase = (arg1, arg2, arg3, arg4) => {
|
|
|
17
19
|
const [entityState, setEntityState] = useState(hasInitialEntity && !stateless ? arg1 : null);
|
|
18
20
|
const deps = ((hasInitialEntity ? arg4 : arg3) || []);
|
|
19
21
|
const depsKey = useCompareDeps(deps);
|
|
22
|
+
const isRenderingRef = useIsRenderingRef();
|
|
20
23
|
const usecase = useConstantFn(hasInitialEntity
|
|
21
24
|
? arg2
|
|
22
25
|
: arg1);
|
|
@@ -66,13 +69,18 @@ export const useUseCase = (arg1, arg2, arg3, arg4) => {
|
|
|
66
69
|
return createReducers();
|
|
67
70
|
}, [createReducers, depsKey, createReducersDep]);
|
|
68
71
|
const Provider = useProvider(context, entity, entityReducers, optionsRefCollection);
|
|
72
|
+
const enableCache = useMemoizedFn((cacheableReducers) => {
|
|
73
|
+
return cacheReducerCalls(cacheableReducers, () => {
|
|
74
|
+
return isRenderingRef.current;
|
|
75
|
+
});
|
|
76
|
+
});
|
|
69
77
|
const coreCollection = useCreation(() => {
|
|
70
|
-
return [entity, entityReducers, hasInitialEntity ? Provider : null];
|
|
71
|
-
}, [hasInitialEntity, entity, entityReducers, Provider]);
|
|
78
|
+
return [entity, enableCache(entityReducers), hasInitialEntity ? Provider : null];
|
|
79
|
+
}, [hasInitialEntity, entity, entityReducers, Provider, enableCache]);
|
|
72
80
|
return useCreation(() => {
|
|
73
81
|
if (isContextMode) {
|
|
74
82
|
return coreCollection;
|
|
75
83
|
}
|
|
76
|
-
return reducers;
|
|
77
|
-
}, [isContextMode, reducers, coreCollection]);
|
|
84
|
+
return enableCache(reducers);
|
|
85
|
+
}, [isContextMode, reducers, coreCollection, enableCache]);
|
|
78
86
|
};
|