@mic-rexjs/usecases-react 2.3.1 → 2.3.4

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 (35) hide show
  1. package/dist/index.min.js +1 -1
  2. package/es/components/UseCaseFragment/index.d.ts +1 -1
  3. package/es/components/UseCaseFragment/index.js +2 -2
  4. package/es/components/UseCaseFragment/types.d.ts +0 -2
  5. package/es/hooks/useCompareDeps/index.d.ts +1 -1
  6. package/es/hooks/useContextualItem/index.d.ts +1 -1
  7. package/es/hooks/useContextualItem/index.js +12 -4
  8. package/es/hooks/useEntity/index.d.ts +1 -1
  9. package/es/hooks/useEntity/index.js +6 -9
  10. package/es/hooks/useUseCase/index.js +12 -5
  11. package/es/hooks/useUseCase/index.test.js +89 -607
  12. package/es/hooks/useUseCase/types.d.ts +1 -15
  13. package/es/methods/captureCalls/index.d.ts +2 -0
  14. package/es/methods/captureCalls/index.js +14 -0
  15. package/es/methods/captureCalls/types.d.ts +4 -0
  16. package/es/methods/captureCalls/types.js +1 -0
  17. package/es/methods/initEntityReducers/index.js +1 -1
  18. package/lib/components/UseCaseFragment/index.js +0 -2
  19. package/lib/hooks/useContextualItem/index.js +11 -3
  20. package/lib/hooks/useEntity/index.js +6 -11
  21. package/lib/hooks/useUseCase/index.js +13 -4
  22. package/lib/hooks/useUseCase/index.test.js +234 -868
  23. package/lib/methods/captureCalls/index.js +23 -0
  24. package/lib/methods/captureCalls/types.js +5 -0
  25. package/lib/methods/initEntityReducers/index.js +2 -3
  26. package/package.json +3 -3
  27. package/es/hooks/useMemoizedCall/index.d.ts +0 -2
  28. package/es/hooks/useMemoizedCall/index.js +0 -15
  29. package/es/methods/triggerCallbacks/index.d.ts +0 -2
  30. package/es/methods/triggerCallbacks/index.js +0 -5
  31. package/es/methods/triggerWatchers/index.d.ts +0 -2
  32. package/es/methods/triggerWatchers/index.js +0 -14
  33. package/lib/hooks/useMemoizedCall/index.js +0 -21
  34. package/lib/methods/triggerCallbacks/index.js +0 -11
  35. package/lib/methods/triggerWatchers/index.js +0 -28
package/dist/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.min.js.LICENSE.txt */
2
- (()=>{var t={20:(t,e,n)=>{"use strict";var r=n(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(t,e,n){var r,l={},c=null,f=null;for(r in void 0!==n&&(c=""+n),void 0!==e.key&&(c=""+e.key),void 0!==e.ref&&(f=e.ref),e)u.call(e,r)&&!i.hasOwnProperty(r)&&(l[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps)void 0===l[r]&&(l[r]=e[r]);return{$$typeof:o,type:t,key:c,ref:f,props:l,_owner:a.current}}},848:(t,e,n)=>{"use strict";t.exports=n(20)},594:t=>{"use strict";t.exports=React}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var u=e[r]={exports:{}};return t[r](u,u.exports,n),u.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{UseCaseFragment:()=>A,useStatelessUseCase:()=>M,useUseCase:()=>x});var t=n(848),e=n(594),o=n.n(e);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){if(t){if("string"==typeof t)return u(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(t,e):void 0}}function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,u,a,i=[],l=!0,c=!1;try{if(u=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=u.call(n)).done)&&(i.push(r.value),i.length!==e);l=!0);}catch(t){c=!0,o=t}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return i}}(t,e)||a(t,e)||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.")}()}const l=ahooks;var c,f=function(t){return i((0,e.useState)((function(){return t})),1)[0]};function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function y(t){var e=function(t,e){if("object"!=s(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==s(e)?e:String(e)}!function(t){t[t.None=0]="None",t[t.RootEnabled=2]="RootEnabled",t[t.ContextEnabled=4]="ContextEnabled",t[t.EntityEnabled=8]="EntityEnabled",t[t.ContextRootEnabled=22]="ContextRootEnabled",t[t.EntityRootEnabled=62]="EntityRootEnabled",t[t.StatelessEnabled=72]="StatelessEnabled"}(c||(c={}));const d=usecases;var b=["watch","onChange","options"];function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function E(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?v(Object(n),!0).forEach((function(e){var r,o,u;r=t,o=e,u=n[e],(o=y(o))in r?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var p,m=function(t){return i((0,e.useState)(t),1)[0]},h=new Map;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity",t[t.Mode=4]="Mode"}(p||(p={}));var S,g=(0,e.createContext)(null);!function(t){t[t.Normal=2]="Normal",t[t.Stateless=4]="Stateless"}(S||(S={}));var O=function(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0},w=function(t,e){var n,r=e||{},o=r.onShouldCache,u=void 0===o?function(){return!0}:o,a=r.onCompare,i=void 0===a?function(t,e){return O(t,e)}:a;return function(){for(var e=u(),r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(n&&e){var l=n,c=l.parameters,f=l.returnValue;if(i(c,o))return f}var s=t.apply(void 0,o);return e&&(n={parameters:o,returnValue:s}),s}},j=function(t,n,r){var o,u,a,i=(o=r,u=function(t){var n=(0,e.useRef)(0),r=(0,e.useRef)([]),o=r.current,u=O(t,o);return r.current=t,n.current+=u?0:1,n.current}(arguments.length>3&&void 0!==arguments[3]?arguments[3]:[]),a=(0,l.useLatest)(o),(0,l.useCreation)((function(){return w(a.current,{onCompare:function(){return!0}})}),[u,a]));return(0,l.useCreation)((function(){return(n&c.RootEnabled)!==c.RootEnabled&&t?t:i()}),[n,t,i])};function C(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||a(t)||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 R=function(t,e){return"object"===s(t)&&null!==t&&Object.hasOwn(t,e)},P=function t(e,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,l=i(r.match(/^([^.]+)\.(.+)$/)||[],3),c=l[1],f=void 0===c?r:c,s=l[2],y=void 0===s?"":s,d=R(e,f),b=R(n,f),v=[].concat(C(u),[f]);if(d||b){var E=d?e[f]:a,p=b?n[f]:a;if(y)return void t(E,p,y,o,v);if(E===p)return;o(E,p,v)}else if(!/^\d+^/.test(f))for(var m=Array.isArray(e)?e:[],h=Array.isArray(n)?n:[],S=m.length,g=h.length,O=Math.max(S,g),w=0;w<O;w++)t(m[w],h[w],r,o,[].concat(C(u),["".concat(w)]))},_=function(t,e,n){for(var r=function(){var t=i(u[o],2),r=t[0],a=t[1];P(n,e,r,(function(t,r,o){a({fieldPaths:o,newEntity:e,oldEntity:n,newValue:r,oldValue:t})}))},o=0,u=Object.entries(t);o<u.length;o++)r()},x=function(){for(var t,n=((t=(0,e.useRef)(!0)).current=!0,(0,e.useEffect)((function(){t.current=!1})),t),r=arguments.length,u=new Array(r),a=0;a<r;a++)u[a]=arguments[a];var y=function(t){return m((function(){var e=p.None,n=i(t,3),r=n[1],o=n[2];return"function"===s(r)&&(e|=p.Entity,"number"==typeof o&&(e|=p.Mode)),e}))}(u),v=function(t,e){var n=i(t,5),r=n[0],o=n[1],u=n[2],a=n[3],l=n[4],c=(e&p.Entity)===p.Entity,f=(e&p.Mode)===p.Mode;return c?f?[r,o,u,a||{},l||[]]:[r,o,S.Normal,u||{},a||[]]:[null,r,S.Normal,o||{},u||[]]}(u,y),O=i(v,5),C=O[0],R=O[1],P=O[2],x=O[3],A=O[4],M=f(R),N=M,I=M,T=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p.None,r=h,o=m((function(){if(r.has(t)){var o=r.get(t),u=o.value,a=o.times;return r.set(t,{value:u,times:a+1}),u}if((n&p.Entity)!==p.Entity)return g;var i=(0,e.createContext)(null);return r.set(t,{value:i,times:1}),i}));return(0,l.useUnmount)((function(){if(r.has(t)){var e=r.get(t),n=e.value,u=e.times;o===n&&(1!==u?r.set(t,{value:n,times:u-1}):r.delete(t))}})),o}(M,y),k=(0,e.useContext)(T),U=k,D=function(t,e,n){return(0,l.useCreation)((function(){var r=c.None,o=(n||{}).store;return(t&p.Entity)===p.Entity&&(r|=c.EntityRootEnabled),r|=n?c.ContextEnabled:c.RootEnabled,o&&(r|=c.EntityEnabled),(e&S.Stateless)===S.Stateless&&(r|=c.StatelessEnabled),r}),[t,n,e])}(y,P,k),L=(k||{}).reducers,V=void 0===L?null:L,$=(U||{}).store,F=i(function(t,n,r,o){var u=i((0,e.useState)(n),2),a=u[0],f=u[1],s=r?r.value:null,y=function(t,e,n,r){return(t&c.EntityRootEnabled)!==c.EntityRootEnabled?r:(t&c.StatelessEnabled)!==c.StatelessEnabled?e:"function"==typeof n?n():n}(t,a,n,s),b=(0,l.useLatest)(o),v=(t&c.EntityRootEnabled)===c.EntityRootEnabled,E=j(r,t,(function(){if(!v)return new d.EntityStore(null);var e=(t&c.StatelessEnabled)===c.StatelessEnabled;return new d.EntityStore(y,{onChange:function(t){e||f(t)}})}));return v&&(E.value=y),(0,e.useEffect)((function(){if((t&c.EntityEnabled)===c.EntityEnabled){var e=function(t,e){var n=b.current,r=n.onChange,o=n.watch;o&&_(o,t,e),null==r||r(t,e)};return E.watch(e),function(){E.unwatch(e)}}}),[t,E,b]),(0,l.useCreation)((function(){return[y,E]}),[y,E])}(D,C,void 0===$?null:$,x),2),B=F[0],G=F[1],W=j(V,D,(function(){return(D&c.EntityEnabled)!==c.EntityEnabled?N(x):function(t,e,n){n.watch,n.onChange;var r=n.options,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},u=Object.keys(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,b);return(0,d.createEntityReducers)(e,t,E(E(E({},o),r),{},{onGenerate:function(t,e){return e}}))}(I,G,x)}),A),Y=function(t,n,r,u){var a=r.value,i=(0,e.useMemo)((function(){return(t&c.EntityEnabled)===c.EntityEnabled?{store:r,reducers:u,statuses:t}:{reducers:u,statuses:t}}),[t,a,r,u]),s=(0,l.useLatest)(i);return f((function(t){var e=t.children,r=t.with,u=void 0===r?[]:r,a=n.Provider;return o().createElement(a,{value:s.current},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(D,T,G,W);return(0,l.useCreation)((function(){if((D&c.EntityEnabled)!==c.EntityEnabled)return W;var t=(D&c.RootEnabled)===c.RootEnabled,e=function(t,e){var n={};return Object.entries(t).forEach((function(t){var r=i(t,2),o=r[0],u=r[1];n[o]=w(u,e)})),n}(W,{onShouldCache:function(){return n.current}});return t?[B,e,Y]:[B,e]}),[D,B,W,Y,n])},A=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return x(r,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})},M=function(t,e,n,r){return x(t,e,S.Stateless,n,r)}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
2
+ (()=>{var e={20:(e,t,n)=>{"use strict";var r=n(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,n){var r,l={},c=null,f=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(f=t.ref),t)u.call(t,r)&&!i.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:f,props:l,_owner:a.current}}},848:(e,t,n)=>{"use strict";e.exports=n(20)},594:e=>{"use strict";e.exports=React}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var u=t[r]={exports:{}};return e[r](u,u.exports,n),u.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{UseCaseFragment:()=>R,useStatelessUseCase:()=>_,useUseCase:()=>C});var e=n(848),t=n(594),o=n.n(t);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u,a,i=[],l=!0,c=!1;try{if(u=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=u.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return i}}(e,t)||a(e,t)||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.")}()}const l=ahooks;var c,f=function(e){return i((0,t.useState)((function(){return e})),1)[0]};function s(e){return s="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},s(e)}function y(e){var t=function(e,t){if("object"!=s(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==s(t)?t:String(t)}!function(e){e[e.None=0]="None",e[e.RootEnabled=2]="RootEnabled",e[e.ContextEnabled=4]="ContextEnabled",e[e.EntityEnabled=8]="EntityEnabled",e[e.ContextRootEnabled=22]="ContextRootEnabled",e[e.EntityRootEnabled=62]="EntityRootEnabled",e[e.StatelessEnabled=72]="StatelessEnabled"}(c||(c={}));const d=usecases;var b=["onChange","options"];function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){var r,o,u;r=e,o=t,u=n[t],(o=y(o))in r?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p,m=function(e){return i((0,t.useState)(e),1)[0]},S=new Map;!function(e){e[e.None=0]="None",e[e.Entity=2]="Entity",e[e.Mode=4]="Mode"}(p||(p={}));var h,O=(0,t.createContext)(null);!function(e){e[e.Normal=2]="Normal",e[e.Stateless=4]="Stateless"}(h||(h={}));var g=function(e,t){var n=e.length;if(n!==t.length)return!1;for(var r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0},j=function(e,t){var n,r=t||{},o=r.onShouldCache,u=void 0===o?function(){return!0}:o,a=r.onCompare,i=void 0===a?function(e,t){return g(e,t)}:a;return function(){for(var t=u(),r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(n&&t){var l=n,c=l.parameters,f=l.returnValue;if(i(c,o))return f}var s=e.apply(void 0,o);return t&&(n={parameters:o,returnValue:s}),s}},w=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,l.useLatest)(n),u=(0,l.useCreation)((function(){return j(o.current,{onCompare:function(){return!0}})}),[r,o]);return(0,l.useCreation)((function(){return(t&c.RootEnabled)!==c.RootEnabled&&e?e:u()}),[t,e,u])},C=function(){for(var e,n=((e=(0,t.useRef)(!0)).current=!0,(0,t.useEffect)((function(){e.current=!1})),e),r=arguments.length,y=new Array(r),v=0;v<r;v++)y[v]=arguments[v];var C=function(e){return m((function(){var t=p.None,n=i(e,3),r=n[1],o=n[2];return"function"===s(r)&&(t|=p.Entity,"number"==typeof o&&(t|=p.Mode)),t}))}(y),R=function(e,t){var n=i(e,5),r=n[0],o=n[1],u=n[2],a=n[3],l=n[4],c=(t&p.Entity)===p.Entity,f=(t&p.Mode)===p.Mode;return c?f?[r,o,u,a||{},l||[]]:[r,o,h.Normal,u||{},a||[]]:[null,r,h.Normal,o||{},u||[]]}(y,C),_=i(R,5),P=_[0],x=_[1],N=_[2],A=_[3],M=_[4],I=f(x),k=I,T=I,L=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p.None,r=S,o=m((function(){if(r.has(e)){var o=r.get(e),u=o.value,a=o.times;return r.set(e,{value:u,times:a+1}),u}if((n&p.Entity)!==p.Entity)return O;var i=(0,t.createContext)(null);return r.set(e,{value:i,times:1}),i}));return(0,l.useUnmount)((function(){if(r.has(e)){var t=r.get(e),n=t.value,u=t.times;o===n&&(1!==u?r.set(e,{value:n,times:u-1}):r.delete(e))}})),o}(I,C),U=(0,t.useContext)(L),D=U,F=function(e,t,n){return(0,l.useCreation)((function(){var r=c.None,o=(n||{}).store;return(e&p.Entity)===p.Entity&&(r|=c.EntityRootEnabled),r|=n?c.ContextEnabled:c.RootEnabled,o&&(r|=c.EntityEnabled),(t&h.Stateless)===h.Stateless&&(r|=c.StatelessEnabled),r}),[e,n,t])}(C,N,U),$=(0,l.useLatest)(A),V=function(e){var n=(0,t.useRef)(0),r=(0,t.useRef)([]),o=r.current,u=g(e,o);return r.current=e,n.current+=u?0:1,n.current}(M),B=(U||{}).reducers,G=void 0===B?null:B,W=(D||{}).store,Y=i(function(e,n,r,o,u){var a=i((0,t.useState)(n),2),f=a[0],s=a[1],y=(0,l.useLatest)(o),b=r?r.value:null,v=function(e,t,n,r){return(e&c.EntityRootEnabled)!==c.EntityRootEnabled?r:(e&c.StatelessEnabled)!==c.StatelessEnabled?t:"function"==typeof n?n():n}(e,f,n,b),E=(e&c.EntityEnabled)===c.EntityEnabled,p=(e&c.EntityRootEnabled)===c.EntityRootEnabled,m=w(r,e,(function(){if(!p)return new d.EntityStore(null);var t=(e&c.StatelessEnabled)===c.StatelessEnabled;return new d.EntityStore(v,{onChange:function(e){t||s(e)}})}));return p&&(m.value=v),(0,t.useEffect)((function(){if(E){var e=function(e,t){var n=y.current.onChange;null==n||n(e,t)};return m.watch(e),function(){m.unwatch(e)}}}),[E,m,u,y]),(0,l.useCreation)((function(){return[v,m]}),[v,m])}(F,P,void 0===W?null:W,A,V),2),q=Y[0],z=Y[1],H=w(G,F,(function(){var e,t,n,r=(e=A,t=function(e,t){var n,r,o;return null===(n=(r=$.current)[e])||void 0===n?void 0:n.call.apply(n,[r].concat(function(e){if(Array.isArray(e))return u(e)}(o=t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||a(o)||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.")}()))},n={},Object.keys(e).forEach((function(r){var o=e[r];n[r]="function"!=typeof o?o:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return t(r,n)}})),n);return(F&c.EntityEnabled)!==c.EntityEnabled?k(r):function(e,t,n){n.onChange;var r=n.options,o=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,b);return(0,d.createEntityReducers)(t,e,E(E(E({},o),r),{},{onGenerate:function(e,t){return t}}))}(T,z,r)}),V),J=function(e,n,r,u){var a=r.value,i=(0,t.useMemo)((function(){return(e&c.EntityEnabled)===c.EntityEnabled?{store:r,reducers:u,statuses:e}:{reducers:u,statuses:e}}),[e,a,r,u]),s=(0,l.useLatest)(i);return f((function(e){var t=e.children,r=e.with,u=void 0===r?[]:r,a=n.Provider;return o().createElement(a,{value:s.current},u.reduceRight((function(e,t){return o().createElement(t,{},e)}),t))}))}(F,L,z,H);return(0,l.useCreation)((function(){if((F&c.EntityEnabled)!==c.EntityEnabled)return H;var e=(F&c.RootEnabled)===c.RootEnabled,t=function(e,t){var n={};return Object.entries(e).forEach((function(e){var r=i(e,2),o=r[0],u=r[1];n[o]=j(u,t)})),n}(H,{onShouldCache:function(){return n.current}});return e?[q,t,J]:[q,t]}),[F,q,H,J,n])},R=function(n){var r=n.usecase,o=n.onChange;return C(r,{onChange:o}),(0,e.jsx)(t.Fragment,{})},_=function(e,t,n,r){return C(e,t,h.Stateless,n,r)}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
@@ -1,3 +1,3 @@
1
1
  import { UseCaseFragmentProps } from './types';
2
2
  import { EntityReducers } from '@mic-rexjs/usecases';
3
- export declare const UseCaseFragment: <T, TEntityReducers extends EntityReducers<T>>({ usecase, watch, onChange, }: UseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
3
+ export declare const UseCaseFragment: <T, TEntityReducers extends EntityReducers<T>>({ usecase, onChange, }: UseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Fragment } from 'react';
3
3
  import { useUseCase } from '../../hooks/useUseCase';
4
- export const UseCaseFragment = ({ usecase, watch, onChange, }) => {
5
- void useUseCase(usecase, { watch, onChange });
4
+ export const UseCaseFragment = ({ usecase, onChange, }) => {
5
+ void useUseCase(usecase, { onChange });
6
6
  return _jsx(Fragment, {});
7
7
  };
@@ -1,7 +1,5 @@
1
1
  import { EntityReducers, EntityUseCase, UseCase } from '@mic-rexjs/usecases';
2
- import { EntityWatchMap } from '../../hooks/useUseCase/types';
3
2
  export interface UseCaseFragmentProps<T, TEntityReducers extends EntityReducers<T>> {
4
3
  usecase: EntityUseCase<T, TEntityReducers> & UseCase<EntityReducers<T>>;
5
- watch?: EntityWatchMap<T>;
6
4
  onChange?(newEntity: T, oldEntity: T): void;
7
5
  }
@@ -1 +1 @@
1
- export declare const useCompareDeps: <T>(deps: T[]) => React.Key;
1
+ export declare const useCompareDeps: <T>(deps: T[]) => number;
@@ -1,3 +1,3 @@
1
1
  import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
2
2
  import { CreateContextualItemFactory } from './types';
3
- export declare const useContextualItem: <T>(contextItem: T | null, statuses: UseCaseStatuses, createFactory: CreateContextualItemFactory<T>, deps?: unknown[]) => T;
3
+ export declare const useContextualItem: <T>(contextItem: T | null, statuses: UseCaseStatuses, createFactory: CreateContextualItemFactory<T>, depsKey?: number) => T;
@@ -1,8 +1,16 @@
1
- import { useCreation } from 'ahooks';
1
+ import { useCreation, useLatest } from 'ahooks';
2
2
  import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
3
- import { useMemoizedCall } from '../useMemoizedCall';
4
- export const useContextualItem = (contextItem, statuses, createFactory, deps = []) => {
5
- const create = useMemoizedCall(createFactory, deps);
3
+ import { cacheCall } from '../../methods/cacheCall';
4
+ export const useContextualItem = (contextItem, statuses, createFactory, depsKey = 0) => {
5
+ const factoryRef = useLatest(createFactory);
6
+ const create = useCreation(() => {
7
+ void depsKey;
8
+ return cacheCall(factoryRef.current, {
9
+ onCompare() {
10
+ return true;
11
+ },
12
+ });
13
+ }, [depsKey, factoryRef]);
6
14
  return useCreation(() => {
7
15
  const rootEnabled = (statuses & UseCaseStatuses.RootEnabled) === UseCaseStatuses.RootEnabled;
8
16
  if (!rootEnabled && contextItem) {
@@ -1,4 +1,4 @@
1
1
  import { EntityStore } from '@mic-rexjs/usecases';
2
2
  import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
3
3
  import { EntityGetter, UseCaseHookOptions } from '../useUseCase/types';
4
- export declare const useEntity: <T, TUseCaseOptions extends object, TOptions extends UseCaseHookOptions<T, TUseCaseOptions> = UseCaseHookOptions<T, TUseCaseOptions>>(statuses: UseCaseStatuses, rootEntity: T | EntityGetter<T>, contextStore: EntityStore<T> | null, options: TOptions) => [entity: T, store: EntityStore<T>];
4
+ export declare const useEntity: <T, TUseCaseOptions extends object, TOptions extends UseCaseHookOptions<T, TUseCaseOptions> = UseCaseHookOptions<T, TUseCaseOptions>>(statuses: UseCaseStatuses, rootEntity: T | EntityGetter<T>, contextStore: EntityStore<T> | null, options: TOptions, depsKey: number) => [entity: T, store: EntityStore<T>];
@@ -4,12 +4,12 @@ import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
4
4
  import { getRenderingEntity } from '../../methods/getRenderingEntity';
5
5
  import { useContextualItem } from '../useContextualItem';
6
6
  import { useCreation, useLatest } from 'ahooks';
7
- import { triggerWatchers } from '../../methods/triggerWatchers';
8
- export const useEntity = (statuses, rootEntity, contextStore, options) => {
7
+ export const useEntity = (statuses, rootEntity, contextStore, options, depsKey) => {
9
8
  const [entityState, setEntityState] = useState(rootEntity);
9
+ const optionsRef = useLatest(options);
10
10
  const contextEntity = (contextStore ? contextStore.value : null);
11
11
  const renderingEntity = getRenderingEntity(statuses, entityState, rootEntity, contextEntity);
12
- const optionsRef = useLatest(options);
12
+ const entityEnabled = (statuses & UseCaseStatuses.EntityEnabled) === UseCaseStatuses.EntityEnabled;
13
13
  const entityRootEnabled = (statuses & UseCaseStatuses.EntityRootEnabled) === UseCaseStatuses.EntityRootEnabled;
14
14
  const store = useContextualItem(contextStore, statuses, () => {
15
15
  if (!entityRootEnabled) {
@@ -30,21 +30,18 @@ export const useEntity = (statuses, rootEntity, contextStore, options) => {
30
30
  store.value = renderingEntity;
31
31
  }
32
32
  useEffect(() => {
33
- if ((statuses & UseCaseStatuses.EntityEnabled) !== UseCaseStatuses.EntityEnabled) {
33
+ if (!entityEnabled) {
34
34
  return;
35
35
  }
36
36
  const onEntityChange = (newEntity, oldEntity) => {
37
- const { onChange, watch } = optionsRef.current;
38
- if (watch) {
39
- triggerWatchers(watch, newEntity, oldEntity);
40
- }
37
+ const { onChange } = optionsRef.current;
41
38
  onChange?.(newEntity, oldEntity);
42
39
  };
43
40
  store.watch(onEntityChange);
44
41
  return () => {
45
42
  store.unwatch(onEntityChange);
46
43
  };
47
- }, [statuses, store, optionsRef]);
44
+ }, [entityEnabled, store, depsKey, optionsRef]);
48
45
  return useCreation(() => {
49
46
  return [renderingEntity, store];
50
47
  }, [renderingEntity, store]);
@@ -1,4 +1,4 @@
1
- import { useCreation } from 'ahooks';
1
+ import { useCreation, useLatest } from 'ahooks';
2
2
  import { useContext } from 'react';
3
3
  import { useConstantFn } from '../useConstantFn';
4
4
  import { useProvider } from '../useProvider';
@@ -12,6 +12,8 @@ import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
12
12
  import { useEntity } from '../useEntity';
13
13
  import { useContextualItem } from '../useContextualItem';
14
14
  import { cacheCalls } from '../../methods/cacheCalls';
15
+ import { useCompareDeps } from '../useCompareDeps';
16
+ import { captureCalls } from '../../methods/captureCalls';
15
17
  export const useUseCase = ((...args) => {
16
18
  const isRenderingRef = useIsRenderingRef();
17
19
  const argumentTypes = useArgumentTypes(args);
@@ -24,16 +26,21 @@ export const useUseCase = ((...args) => {
24
26
  const contextValue = useContext(context);
25
27
  const entityContextValue = contextValue;
26
28
  const statuses = useUseCaseStatuses(argumentTypes, mode, contextValue);
29
+ const optionsRef = useLatest(options);
30
+ const depsKey = useCompareDeps(deps);
27
31
  const { reducers: contextReducers = null } = contextValue || {};
28
32
  const { store: contextStore = null } = entityContextValue || {};
29
- const [entity, store] = useEntity(statuses, unsafeEntity, contextStore, options);
33
+ const [entity, store] = useEntity(statuses, unsafeEntity, contextStore, options, depsKey);
30
34
  const reducers = useContextualItem(contextReducers, statuses, () => {
35
+ const opts = captureCalls(options, (key, callArgs) => {
36
+ return optionsRef.current[key]?.(...callArgs);
37
+ });
31
38
  if ((statuses & UseCaseStatuses.EntityEnabled) !== UseCaseStatuses.EntityEnabled) {
32
- return usecase(options);
39
+ return usecase(opts);
33
40
  }
34
- const hookOptions = options;
41
+ const hookOptions = opts;
35
42
  return initEntityReducers(entityUseCase, store, hookOptions);
36
- }, deps);
43
+ }, depsKey);
37
44
  const Provider = useProvider(statuses, context, store, reducers);
38
45
  return useCreation(() => {
39
46
  if ((statuses & UseCaseStatuses.EntityEnabled) !== UseCaseStatuses.EntityEnabled) {