@mic-rexjs/usecases-react 2.9.0 → 2.9.2

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 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,c={},l=null,f=null;for(r in void 0!==n&&(l=""+n),void 0!==e.key&&(l=""+e.key),void 0!==e.ref&&(f=e.ref),e)u.call(e,r)&&!i.hasOwnProperty(r)&&(c[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps)void 0===c[r]&&(c[r]=e[r]);return{$$typeof:o,type:t,key:l,ref:f,props:c,_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:()=>x,useUseCase:()=>_});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){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.")}()}function c(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=[],c=!0,l=!1;try{if(u=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)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 f=function(t){return c((0,e.useState)((function(){return t})),1)[0]},s=function(t){return c((0,e.useState)(t),1)[0]};const y=usecases;var v,d;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(v||(v={})),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=6]="ContextRootEnabled",t[t.EntityRootEnabled=14]="EntityRootEnabled"}(d||(d={}));var b=(0,y.createUseCase)((function(){var t=new Map,n=(0,e.createContext)(null);return function(){return{createContextValue:function(t,e,n){return(n&d.EntityEnabled)===d.EntityEnabled?{store:t,reducers:e,statuses:n}:{reducers:e,statuses:n}},registerUseCase:function(r,o){if(t.has(r)){var u=t.get(r),a=u.value,i=u.times;return t.set(r,{value:a,times:i+1}),a}if((o&v.Entity)!==v.Entity)return n;var c=(0,e.createContext)(null);return t.set(r,{value:c,times:1}),c},unregisterUseCase:function(e,n){if((n&v.Entity)!==v.Entity)return!1;if(!t.has(e))return!1;var r=t.get(e),o=r.value,u=r.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),p=function(){return s((function(){return b()}))};function E(t){return E="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},E(t)}function m(t){var e=function(t,e){if("object"!=E(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:String(e)}var h=["watch","onChange","options"];function g(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 O(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?g(Object(n),!0).forEach((function(e){var r,o,u;r=t,o=e,u=n[e],(o=m(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)):g(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var w=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},j=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 w(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 c=n,l=c.parameters,f=c.returnValue;if(i(l,o))return f}var s=t.apply(void 0,o);return e&&(n={parameters:o,returnValue:s}),s}},S=function(t,e,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(e&d.RootEnabled)!==d.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===E(t)&&null!==t&&Object.hasOwn(t,e)},R=function t(e,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,l=c(r.match(/^([^.]+)\.(.+)$/)||[],3),f=l[1],s=void 0===f?r:f,y=l[2],v=void 0===y?"":y,d=C(e,s),b=C(n,s),p=[].concat(i(u),[s]);if(d||b){var E=d?e[s]:a,m=b?n[s]:a;if(v)return void t(E,m,v,o,p);if(E===m)return;o(E,m,p)}else if(!/^\d+^/.test(s))for(var h=Array.isArray(e)?e:[],g=Array.isArray(n)?n:[],O=h.length,w=g.length,j=Math.max(O,w),S=0;S<j;S++)t(h[S],g[S],r,o,[].concat(i(u),["".concat(S)]))},P=function(t,e,n){for(var r=function(){var t=c(u[o],2),r=t[0],a=t[1];R(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()},_=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 b=function(t){return s((function(){var e=v.None;return"function"===E(c(t,2)[1])&&(e|=v.Entity),e}))}(u),m=function(t,e){var n=c(t,4),r=n[0],o=n[1],u=n[2],a=n[3];return(e&v.Entity)!==v.Entity?[null,r,o||{},u||[]]:[r,o,u||{},a||[]]}(u,b),g=c(m,4),C=g[0],R=g[1],_=g[2],x=g[3],A=f(R),U=A,M=A,N=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v.None,n=p(),r=n.registerUseCase,o=n.unregisterUseCase,u=s((function(){return r(t,e)}));return(0,l.useUnmount)((function(){o(t,e)})),u}(A,b),I=(0,e.useContext)(N),k=I,T=function(t,e){return(0,l.useCreation)((function(){var n=d.None,r=(e||{}).store;return(t&v.Entity)===v.Entity&&(n|=d.EntityRootEnabled),n|=e?d.ContextEnabled:d.RootEnabled,r&&(n|=d.EntityEnabled),n}),[t,e])}(b,I),L=(0,l.useLatest)(_),D=function(t){var n=(0,e.useRef)(0),r=(0,e.useRef)([]),o=r.current,u=w(t,o);return r.current=t,n.current+=u?0:1,n.current}(x),V=(I||{}).reducers,F=void 0===V?null:V,$=(k||{}).store,z=c(function(t,n,r,o,u){var a=(0,l.useUpdate)(),i=(0,e.useRef)(),c=(0,l.useLatest)(o),f=r?r.value:null,s=(t&d.EntityEnabled)===d.EntityEnabled,v=(t&d.EntityRootEnabled)===d.EntityRootEnabled,b=S(r,t,(function(){var t;if(!v)return new y.EntityStore(null);var e="function"==typeof n?n(null===(t=i.current)||void 0===t?void 0:t.value):n;return new y.EntityStore(e)}),u),p=function(t,n,r,o){var u=(0,e.useRef)(n);if((o&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var a="function"==typeof n,i=u.current;switch(!0){case a:case i===n:return t.value}return u.current=n,n}(b,n,f,t),E=(0,l.useMemoizedFn)((function(t,e){var n=c.current,r=n.onChange,o=n.watch;o&&P(o,t,e),null==r||r(t,e),v&&a()}));return i.current=b,v&&(b.value=p),(0,e.useEffect)((function(){if(s)return b.watch(E),function(){b.unwatch(E)}}),[s,b,E]),(0,l.useCreation)((function(){return[p,b]}),[p,b])}(T,C,void 0===$?null:$,_,D),2),B=z[0],G=z[1],W=S(F,T,(function(){var t,e,n,r=(t=_,e=function(t,e){var n,r;return null===(n=(r=L.current)[t])||void 0===n?void 0:n.call.apply(n,[r].concat(i(e)))},n={},Object.keys(t).forEach((function(r){var o=t[r];n[r]="function"!=typeof o?o:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e(r,n)}})),n);return(T&d.EntityEnabled)!==d.EntityEnabled?U(r):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,h);return(0,y.createEntityReducers)(e,t,O(O(O({},o),r),{},{onGenerate:function(t,e){return e}}))}(M,G,r)}),D),Y=function(t,n,r,u){var a=r.value,i=p().createContextValue,c=(0,e.useMemo)((function(){return i(r,u,t)}),[t,a,r,u,i]),s=(0,l.useLatest)(c);return f((function(t){var e=t.children,r=t.with,u=void 0===r?[]:r,a=n.Provider,i=s.current;return o().createElement(a,{value:i},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(T,N,G,W);return(0,l.useCreation)((function(){if((T&d.EntityEnabled)!==d.EntityEnabled)return W;var t=(T&d.RootEnabled)===d.RootEnabled,e=function(t,e){var n={};return Object.entries(t).forEach((function(t){var r=c(t,2),o=r[0],u=r[1];n[o]=j(u,e)})),n}(W,{onShouldCache:function(){return n.current}});return t?[B,e,Y]:[B,e]}),[T,B,W,Y,n])},x=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return _(r,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})}})();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 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,c={},l=null,f=null;for(r in void 0!==n&&(l=""+n),void 0!==e.key&&(l=""+e.key),void 0!==e.ref&&(f=e.ref),e)u.call(e,r)&&!i.hasOwnProperty(r)&&(c[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps)void 0===c[r]&&(c[r]=e[r]);return{$$typeof:o,type:t,key:l,ref:f,props:c,_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:()=>x,useUseCase:()=>_});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){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.")}()}function c(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=[],c=!0,l=!1;try{if(u=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)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 f=function(t){return c((0,e.useState)((function(){return t})),1)[0]},s=function(t){return c((0,e.useState)(t),1)[0]};const y=usecases;var v,d;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(v||(v={})),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=6]="ContextRootEnabled",t[t.EntityRootEnabled=14]="EntityRootEnabled"}(d||(d={}));var b=(0,y.createUseCase)((function(){var t=new Map,n=(0,e.createContext)(null);return function(){return{createContextValue:function(t,e,n){return(n&d.EntityEnabled)===d.EntityEnabled?{store:t,reducers:e,statuses:n}:{reducers:e,statuses:n}},registerUseCase:function(r,o){if(t.has(r)){var u=t.get(r),a=u.value,i=u.times;return t.set(r,{value:a,times:i+1}),a}if((o&v.Entity)!==v.Entity)return n;var c=(0,e.createContext)(null);return t.set(r,{value:c,times:1}),c},unregisterUseCase:function(e,n){if((n&v.Entity)!==v.Entity)return!1;if(!t.has(e))return!1;var r=t.get(e),o=r.value,u=r.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),p=function(){return s((function(){return b()}))};function E(t){return E="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},E(t)}function m(t){var e=function(t,e){if("object"!=E(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:String(e)}var h=["watch","onChange","options"];function g(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 O(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?g(Object(n),!0).forEach((function(e){var r,o,u;r=t,o=e,u=n[e],(o=m(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)):g(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var w=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},j=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 w(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 c=n,l=c.parameters,f=c.returnValue;if(i(l,o))return f}var s=t.apply(void 0,o);return e&&(n={parameters:o,returnValue:s}),s}},S=function(t,e,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(e&d.RootEnabled)!==d.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===E(t)&&null!==t&&Object.hasOwn(t,e)},R=function t(e,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,l=c(r.match(/^([^.]+)\.(.+)$/)||[],3),f=l[1],s=void 0===f?r:f,y=l[2],v=void 0===y?"":y,d=C(e,s),b=C(n,s),p=[].concat(i(u),[s]);if(d||b){var E=d?e[s]:a,m=b?n[s]:a;if(v)return void t(E,m,v,o,p);if(E===m)return;o(E,m,p)}else if(!/^\d+^/.test(s))for(var h=Array.isArray(e)?e:[],g=Array.isArray(n)?n:[],O=h.length,w=g.length,j=Math.max(O,w),S=0;S<j;S++)t(h[S],g[S],r,o,[].concat(i(u),["".concat(S)]))},P=function(t,e,n){for(var r=function(){var t=c(u[o],2),r=t[0],a=t[1];R(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()},_=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 b=function(t){return s((function(){var e=v.None;return"function"===E(c(t,2)[1])&&(e|=v.Entity),e}))}(u),m=function(t,e){var n=c(t,4),r=n[0],o=n[1],u=n[2],a=n[3];return(e&v.Entity)!==v.Entity?[null,r,o||{},u||[]]:[r,o,u||{},a||[]]}(u,b),g=c(m,4),C=g[0],R=g[1],_=g[2],x=g[3],A=f(R),U=A,M=A,N=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v.None,n=p(),r=n.registerUseCase,o=n.unregisterUseCase,u=s((function(){return r(t,e)}));return(0,l.useUnmount)((function(){o(t,e)})),u}(A,b),I=(0,e.useContext)(N),k=I,T=function(t,e){return(0,l.useCreation)((function(){var n=d.None,r=(e||{}).store;return(t&v.Entity)===v.Entity&&(n|=d.EntityRootEnabled),n|=e?d.ContextEnabled:d.RootEnabled,r&&(n|=d.EntityEnabled),n}),[t,e])}(b,I),L=(0,l.useLatest)(_),D=function(t){var n=(0,e.useRef)(0),r=(0,e.useRef)([]),o=r.current,u=w(t,o);return r.current=t,n.current+=u?0:1,n.current}(x),V=(I||{}).reducers,F=void 0===V?null:V,$=(k||{}).store,z=c(function(t,n,r,o,u){var a=(0,l.useUpdate)(),i=(0,e.useRef)(),c=(0,l.useLatest)(o),f=r?r.value:null,s=(t&d.EntityEnabled)===d.EntityEnabled,v=(t&d.EntityRootEnabled)===d.EntityRootEnabled,b=S(r,t,(function(){var t;if(v){var e,r="function"==typeof n?n(null===(e=i.current)||void 0===e?void 0:e.value):n;t=new y.EntityStore(r)}else t=new y.EntityStore(null);return i.current=t,t}),u),p=function(t,n,r,o){var u=(0,e.useRef)(n);if((o&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var a="function"==typeof n,i=u.current;switch(!0){case a:case i===n:return t.value}return u.current=n,n}(b,n,f,t),E=(0,l.useMemoizedFn)((function(t,e){var n=c.current,r=n.onChange,o=n.watch;o&&P(o,t,e),null==r||r(t,e),v&&a()}));return v&&(b.value=p),(0,l.useCreation)((function(){s&&b.watch(E)}),[s,b,E]),(0,e.useEffect)((function(){return function(){b.unwatch(E)}}),[s,b,E]),(0,l.useCreation)((function(){return[p,b]}),[p,b])}(T,C,void 0===$?null:$,_,D),2),B=z[0],G=z[1],W=S(F,T,(function(){var t,e,n,r=(t=_,e=function(t,e){var n,r;return null===(n=(r=L.current)[t])||void 0===n?void 0:n.call.apply(n,[r].concat(i(e)))},n={},Object.keys(t).forEach((function(r){var o=t[r];n[r]="function"!=typeof o?o:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e(r,n)}})),n);return(T&d.EntityEnabled)!==d.EntityEnabled?U(r):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,h);return(0,y.createEntityReducers)(e,t,O(O(O({},o),r),{},{onGenerate:function(t,e){return e}}))}(M,G,r)}),D),Y=function(t,n,r,u){var a=r.value,i=p().createContextValue,c=(0,e.useMemo)((function(){return i(r,u,t)}),[t,a,r,u,i]),s=(0,l.useLatest)(c);return f((function(t){var e=t.children,r=t.with,u=void 0===r?[]:r,a=n.Provider,i=s.current;return o().createElement(a,{value:i},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(T,N,G,W);return(0,l.useCreation)((function(){if((T&d.EntityEnabled)!==d.EntityEnabled)return W;var t=(T&d.RootEnabled)===d.RootEnabled,e=function(t,e){var n={};return Object.entries(t).forEach((function(t){var r=c(t,2),o=r[0],u=r[1];n[o]=j(u,e)})),n}(W,{onShouldCache:function(){return n.current}});return t?[B,e,Y]:[B,e]}),[T,B,W,Y,n])},x=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return _(r,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
@@ -13,12 +13,17 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
13
13
  const entityEnabled = (statuses & Statuses.EntityEnabled) === Statuses.EntityEnabled;
14
14
  const entityRootEnabled = (statuses & Statuses.EntityRootEnabled) === Statuses.EntityRootEnabled;
15
15
  const store = useContextualItem(contextStore, statuses, () => {
16
- if (!entityRootEnabled) {
17
- return new EntityStore(null);
16
+ let newStore;
17
+ if (entityRootEnabled) {
18
+ const isFunction = typeof entityArg === 'function';
19
+ const initailEntity = isFunction ? entityArg(storeRef.current?.value) : entityArg;
20
+ newStore = new EntityStore(initailEntity);
21
+ }
22
+ else {
23
+ newStore = new EntityStore(null);
18
24
  }
19
- const isFunction = typeof entityArg === 'function';
20
- const initailEntity = isFunction ? entityArg(storeRef.current?.value) : entityArg;
21
- return new EntityStore(initailEntity);
25
+ storeRef.current = newStore;
26
+ return newStore;
22
27
  }, depsKey);
23
28
  const runtimeEntity = useRuntimeEntity(store, entityArg, contextEntity, statuses);
24
29
  const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
@@ -32,16 +37,24 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
32
37
  }
33
38
  update();
34
39
  });
35
- storeRef.current = store;
36
40
  if (entityRootEnabled) {
37
41
  // 执行同步操作
38
42
  store.value = runtimeEntity;
39
43
  }
40
- useEffect(() => {
44
+ /**
45
+ * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
46
+ * 如果使用了 `setEntity` 则无法监控到变化
47
+ */
48
+ useCreation(() => {
41
49
  if (!entityEnabled) {
42
50
  return;
43
51
  }
44
52
  store.watch(onEntityChange);
53
+ }, [entityEnabled, store, onEntityChange]);
54
+ /**
55
+ * 在变化时候,组件更新前,使用 `unwatch`
56
+ */
57
+ useEffect(() => {
45
58
  return () => {
46
59
  store.unwatch(onEntityChange);
47
60
  };
@@ -276,9 +276,9 @@ describe('useUseCase', () => {
276
276
  ...defaultFile,
277
277
  });
278
278
  });
279
- expect(mockUseCase).toHaveBeenCalledTimes(2);
279
+ expect(mockUseCase).toHaveBeenCalledTimes(1);
280
280
  rerender();
281
- expect(mockUseCase).toHaveBeenCalledTimes(3);
281
+ expect(mockUseCase).toHaveBeenCalledTimes(2);
282
282
  });
283
283
  test('after call non-generator reducer, it should not trigger update', () => {
284
284
  const onUpdate = jest.fn();
@@ -1317,8 +1317,8 @@ describe('useUseCase', () => {
1317
1317
  expect(changeTimes).toBe(0);
1318
1318
  fireEvent.click(screen.getByText(buttonText));
1319
1319
  expect(onChangeA).toHaveReturnedWith(2);
1320
- expect(onChangeB).toHaveReturnedWith(1);
1321
- expect(onChangeC).toHaveReturnedWith(3);
1320
+ expect(onChangeB).toHaveReturnedWith(3);
1321
+ expect(onChangeC).toHaveReturnedWith(1);
1322
1322
  });
1323
1323
  test('`options.onChange` should always trigger the latest one in child components', () => {
1324
1324
  const onFirstChange = jest.fn();
@@ -1424,8 +1424,8 @@ describe('useUseCase', () => {
1424
1424
  expect(changeTimes).toBe(0);
1425
1425
  fireEvent.click(screen.getByText(buttonText));
1426
1426
  expect(onChangeA).toHaveReturnedWith(2);
1427
- expect(onChangeB).toHaveReturnedWith(1);
1428
- expect(onChangeC).toHaveReturnedWith(3);
1427
+ expect(onChangeB).toHaveReturnedWith(3);
1428
+ expect(onChangeC).toHaveReturnedWith(1);
1429
1429
  });
1430
1430
  test('`options.watch` should trigger the latest one in child components', () => {
1431
1431
  const onFirstExtChange = jest.fn();
@@ -19,13 +19,17 @@ var useEntity = exports.useEntity = function useEntity(statuses, entityArg, cont
19
19
  var entityEnabled = (statuses & _Statuses.Statuses.EntityEnabled) === _Statuses.Statuses.EntityEnabled;
20
20
  var entityRootEnabled = (statuses & _Statuses.Statuses.EntityRootEnabled) === _Statuses.Statuses.EntityRootEnabled;
21
21
  var store = (0, _useContextualItem.useContextualItem)(contextStore, statuses, function () {
22
- var _storeRef$current;
23
- if (!entityRootEnabled) {
24
- return new _usecases.EntityStore(null);
22
+ var newStore;
23
+ if (entityRootEnabled) {
24
+ var _storeRef$current;
25
+ var isFunction = typeof entityArg === 'function';
26
+ var initailEntity = isFunction ? entityArg((_storeRef$current = storeRef.current) === null || _storeRef$current === void 0 ? void 0 : _storeRef$current.value) : entityArg;
27
+ newStore = new _usecases.EntityStore(initailEntity);
28
+ } else {
29
+ newStore = new _usecases.EntityStore(null);
25
30
  }
26
- var isFunction = typeof entityArg === 'function';
27
- var initailEntity = isFunction ? entityArg((_storeRef$current = storeRef.current) === null || _storeRef$current === void 0 ? void 0 : _storeRef$current.value) : entityArg;
28
- return new _usecases.EntityStore(initailEntity);
31
+ storeRef.current = newStore;
32
+ return newStore;
29
33
  }, depsKey);
30
34
  var runtimeEntity = (0, _useRuntimeEntity.useRuntimeEntity)(store, entityArg, contextEntity, statuses);
31
35
  var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
@@ -41,16 +45,24 @@ var useEntity = exports.useEntity = function useEntity(statuses, entityArg, cont
41
45
  }
42
46
  update();
43
47
  });
44
- storeRef.current = store;
45
48
  if (entityRootEnabled) {
46
49
  // 执行同步操作
47
50
  store.value = runtimeEntity;
48
51
  }
49
- (0, _react.useEffect)(function () {
52
+ /**
53
+ * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
54
+ * 如果使用了 `setEntity` 则无法监控到变化
55
+ */
56
+ (0, _ahooks.useCreation)(function () {
50
57
  if (!entityEnabled) {
51
58
  return;
52
59
  }
53
60
  store.watch(onEntityChange);
61
+ }, [entityEnabled, store, onEntityChange]);
62
+ /**
63
+ * 在变化时候,组件更新前,使用 `unwatch`
64
+ */
65
+ (0, _react.useEffect)(function () {
54
66
  return function () {
55
67
  store.unwatch(onEntityChange);
56
68
  };
@@ -438,9 +438,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
438
438
  (0, _react.act)(function () {
439
439
  setEntity(_objectSpread({}, defaultFile));
440
440
  });
441
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
441
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
442
442
  rerender();
443
- (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(3);
443
+ (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
444
444
  });
445
445
  (0, _globals.test)('after call non-generator reducer, it should not trigger update', function () {
446
446
  var onUpdate = _globals.jest.fn();
@@ -1755,8 +1755,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1755
1755
  (0, _globals.expect)(changeTimes).toBe(0);
1756
1756
  _react.fireEvent.click(_react.screen.getByText(buttonText));
1757
1757
  (0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
1758
- (0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
1759
- (0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
1758
+ (0, _globals.expect)(onChangeB).toHaveReturnedWith(3);
1759
+ (0, _globals.expect)(onChangeC).toHaveReturnedWith(1);
1760
1760
  });
1761
1761
  (0, _globals.test)('`options.onChange` should always trigger the latest one in child components', function () {
1762
1762
  var onFirstChange = _globals.jest.fn();
@@ -1904,8 +1904,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1904
1904
  (0, _globals.expect)(changeTimes).toBe(0);
1905
1905
  _react.fireEvent.click(_react.screen.getByText(buttonText));
1906
1906
  (0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
1907
- (0, _globals.expect)(onChangeB).toHaveReturnedWith(1);
1908
- (0, _globals.expect)(onChangeC).toHaveReturnedWith(3);
1907
+ (0, _globals.expect)(onChangeB).toHaveReturnedWith(3);
1908
+ (0, _globals.expect)(onChangeC).toHaveReturnedWith(1);
1909
1909
  });
1910
1910
  (0, _globals.test)('`options.watch` should trigger the latest one in child components', function () {
1911
1911
  var onFirstExtChange = _globals.jest.fn();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "2.9.0",
3
+ "version": "2.9.2",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "license": "MIT",
37
37
  "peerDependencies": {
38
- "@mic-rexjs/usecases": "^2.12.5",
38
+ "@mic-rexjs/usecases": "^2.12.6",
39
39
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
40
40
  },
41
41
  "dependencies": {
@@ -51,7 +51,7 @@
51
51
  "@commitlint/cli": "^19.0.3",
52
52
  "@commitlint/config-angular": "^19.0.3",
53
53
  "@jest/globals": "^29.5.0",
54
- "@mic-rexjs/usecases": "^2.12.5",
54
+ "@mic-rexjs/usecases": "^2.12.6",
55
55
  "@testing-library/react": "^14.0.0",
56
56
  "@types/node": "^20.4.2",
57
57
  "@types/react": "^18.2.14",