@mic-rexjs/usecases-react 2.10.2 → 2.10.3
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/dist/index.min.js.LICENSE.txt +4 -2
- package/es/components/SafeUseCaseFragment/index.js +1 -1
- package/es/components/UseCaseFragment/index.js +2 -2
- package/es/components/UseCaseFragment/types.d.ts +1 -1
- package/es/entities/matchPropertyFailedResult/types.d.ts +7 -0
- package/es/hooks/useArgumentTypes/index.d.ts +1 -1
- package/es/hooks/useArgumentTypes/index.js +3 -4
- package/es/hooks/useContext/index.d.ts +2 -2
- package/es/hooks/useContext/index.test.js +2 -2
- package/es/hooks/useContextualItem/index.d.ts +1 -1
- package/es/hooks/useContextualItem/index.js +15 -7
- package/es/hooks/useDepsKey/index.d.ts +2 -0
- package/es/hooks/useDepsKey/index.js +7 -0
- package/es/hooks/useEntity/index.d.ts +1 -1
- package/es/hooks/useEntity/index.js +6 -6
- package/es/hooks/useEntityReducers/index.d.ts +4 -0
- package/es/hooks/useEntityReducers/index.js +18 -0
- package/es/hooks/useFullArguments/index.d.ts +3 -3
- package/es/hooks/useFullArguments/types.d.ts +3 -2
- package/es/hooks/useIsRenderingRef/index.js +3 -3
- package/es/hooks/useProvider/index.d.ts +3 -3
- package/es/hooks/useProvider/index.js +3 -3
- package/es/hooks/useProvider/types.d.ts +0 -1
- package/es/hooks/useReducers/index.d.ts +4 -0
- package/es/hooks/useReducers/index.js +13 -0
- package/es/hooks/useRuntimeEntity/index.d.ts +1 -1
- package/es/hooks/useRuntimeEntity/index.js +6 -5
- package/es/hooks/useStatuses/index.d.ts +2 -2
- package/es/hooks/useStatuses/index.js +1 -1
- package/es/hooks/useUseCase/index.js +14 -13
- package/es/hooks/useUseCase/index.test.js +10 -6
- package/es/hooks/useUseCase/types.d.ts +11 -14
- package/es/methods/initEntityReducers/index.d.ts +2 -2
- package/es/methods/triggerWatchers/index.js +4 -9
- package/es/types.d.ts +3 -0
- package/es/usecases/contextUseCase/index.js +1 -1
- package/es/usecases/contextUseCase/types.d.ts +2 -3
- package/es/usecases/methodUseCase/index.d.ts +2 -0
- package/es/usecases/methodUseCase/index.js +55 -0
- package/es/usecases/methodUseCase/types.d.ts +21 -0
- package/es/usecases/valueUseCase/index.d.ts +2 -0
- package/es/usecases/valueUseCase/index.js +136 -0
- package/es/usecases/valueUseCase/types.d.ts +16 -0
- package/es/usecases/valueUseCase/types.js +1 -0
- package/lib/components/SafeUseCaseFragment/index.js +1 -1
- package/lib/components/UseCaseFragment/index.js +2 -2
- package/lib/hooks/useArgumentTypes/index.js +3 -4
- package/lib/hooks/useContext/index.test.js +2 -2
- package/lib/hooks/useContextualItem/index.js +15 -6
- package/lib/hooks/useDepsKey/index.js +18 -0
- package/lib/hooks/useEntity/index.js +6 -6
- package/lib/hooks/useEntityReducers/index.js +30 -0
- package/lib/hooks/useIsRenderingRef/index.js +2 -2
- package/lib/hooks/useProvider/index.js +4 -6
- package/lib/hooks/useReducers/index.js +20 -0
- package/lib/hooks/useRuntimeEntity/index.js +8 -5
- package/lib/hooks/useStatuses/index.js +1 -1
- package/lib/hooks/useUseCase/index.js +18 -15
- package/lib/hooks/useUseCase/index.test.js +222 -218
- package/lib/methods/triggerWatchers/index.js +5 -9
- package/lib/usecases/contextUseCase/index.js +1 -1
- package/lib/usecases/methodUseCase/index.js +79 -0
- package/lib/usecases/valueUseCase/index.js +198 -0
- package/lib/usecases/valueUseCase/types.js +5 -0
- package/package.json +45 -40
- package/es/hooks/useCompareDeps/index.d.ts +0 -1
- package/es/hooks/useCompareDeps/index.js +0 -11
- package/es/methods/cacheCall/index.d.ts +0 -2
- package/es/methods/cacheCall/index.js +0 -26
- package/es/methods/cacheCall/types.d.ts +0 -13
- package/es/methods/cacheCalls/index.d.ts +0 -2
- package/es/methods/cacheCalls/index.js +0 -8
- package/es/methods/captureCalls/index.d.ts +0 -2
- package/es/methods/captureCalls/index.js +0 -14
- package/es/methods/captureCalls/types.d.ts +0 -4
- package/es/methods/compareProperty/index.d.ts +0 -2
- package/es/methods/compareProperty/index.js +0 -34
- package/es/methods/compareProperty/types.d.ts +0 -3
- package/es/methods/hasField/index.d.ts +0 -1
- package/es/methods/hasField/index.js +0 -6
- package/es/methods/isSameArray/index.d.ts +0 -1
- package/es/methods/isSameArray/index.js +0 -14
- package/lib/hooks/useCompareDeps/index.js +0 -17
- package/lib/methods/cacheCall/index.js +0 -41
- package/lib/methods/cacheCalls/index.js +0 -19
- package/lib/methods/captureCalls/index.js +0 -23
- package/lib/methods/compareProperty/index.js +0 -49
- package/lib/methods/hasField/index.js +0 -14
- package/lib/methods/isSameArray/index.js +0 -20
- /package/es/{methods/cacheCall → entities/matchPropertyFailedResult}/types.js +0 -0
- /package/es/{methods/captureCalls/types.js → types.js} +0 -0
- /package/es/{methods/compareProperty → usecases/methodUseCase}/types.js +0 -0
- /package/lib/{methods/cacheCall → entities/matchPropertyFailedResult}/types.js +0 -0
- /package/lib/{methods/captureCalls/types.js → types.js} +0 -0
- /package/lib/{methods/compareProperty → usecases/methodUseCase}/types.js +0 -0
package/dist/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.min.js.LICENSE.txt */
|
|
2
|
-
(()=>{var e={20:(e,t,r)=>{"use strict";var n=r(594),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};t.jsx=function(e,t,r){var n,c={},l=null,f=null;for(n in void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(f=t.ref),t)u.call(t,n)&&!a.hasOwnProperty(n)&&(c[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===c[n]&&(c[n]=t[n]);return{$$typeof:o,type:e,key:l,ref:f,props:c,_owner:i.current}}},848:(e,t,r)=>{"use strict";e.exports=r(20)},594:e=>{"use strict";e.exports=React}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";function e(t){return e="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},e(t)}function t(t,r,n){return(r=function(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:String(r)}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}function o(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)r=u[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)r=u[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}r.r(n),r.d(n,{UseCaseFragment:()=>k,useUseCase:()=>_});var u=r(848),i=r(594),a=r.n(i);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function l(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function f(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(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.")}()}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,u,i,a=[],c=!0,l=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=u.call(r)).done)&&(a.push(n.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return a}}(e,t)||l(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 y=ahooks;var b=function(e){return s((0,i.useState)((function(){return e})),1)[0]};const v=usecases;var p,d;!function(e){e[e.None=0]="None",e[e.Entity=2]="Entity"}(p||(p={})),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=6]="ContextRootEnabled",e[e.EntityRootEnabled=14]="EntityRootEnabled"}(d||(d={}));var E=(0,v.createUseCase)((function(){var e=new Map,t=(0,i.createContext)(null);return function(){return{createContextValue:function(e,t,r){return(r&d.EntityEnabled)===d.EntityEnabled?{store:e,reducers:t,statuses:r}:{reducers:t,statuses:r}},getUseCaseContext:function(r){return e.has(r)?e.get(r).value:t},registerUseCase:function(r,n){if(e.has(r)){var o=e.get(r),u=o.value,a=o.times;return e.set(r,{value:u,times:a+1}),u}if((n&p.Entity)!==p.Entity)return t;var c=(0,i.createContext)(null);return e.set(r,{value:c,times:1}),c},unregisterUseCase:function(t,r){if((r&p.Entity)!==p.Entity)return!1;if(!e.has(t))return!1;var n=e.get(t),o=n.value,u=n.times;return 1===u?e.delete(t):e.set(t,{value:o,times:u-1}),!0}}}})),O=["watch","onChange","options"];function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?h(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var m=function(e){return s((0,i.useState)(e),1)[0]},j=function(e,t){var r=e.length;if(r!==t.length)return!1;for(var n=0;n<r;n++)if(e[n]!==t[n])return!1;return!0},w=function(e,t){var r,n=t||{},o=n.onShouldCache,u=void 0===o?function(){return!0}:o,i=n.onCompare,a=void 0===i?function(e,t){return j(e,t)}:i;return function(){for(var t=u(),n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];if(r&&t){var c=r,l=c.parameters,f=c.returnValue;if(a(l,o))return f}var s=e.apply(void 0,o);return t&&(r={parameters:o,returnValue:s}),s}},C=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,y.useLatest)(r),u=(0,y.useCreation)((function(){return w(o.current,{onCompare:function(){return!0}})}),[n,o]);return(0,y.useCreation)((function(){return(t&d.RootEnabled)!==d.RootEnabled&&e?e:u()}),[t,e,u])},P=function(t,r){return"object"===e(t)&&null!==t&&Object.hasOwn(t,r)},S=function e(t,r,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=s(n.match(/^([^.]+)\.(.+)$/)||[],3),c=a[1],l=void 0===c?n:c,y=a[2],b=void 0===y?"":y,v=P(t,l),p=P(r,l),d=[].concat(f(u),[l]);if(v||p){var E=v?t[l]:i,O=p?r[l]:i;if(b)return void e(E,O,b,o,d);if(E===O)return;o(E,O,d)}else if(!/^\d+^/.test(l))for(var h=Array.isArray(t)?t:[],g=Array.isArray(r)?r:[],m=h.length,j=g.length,w=Math.max(m,j),C=0;C<w;C++)e(h[C],g[C],n,o,[].concat(f(u),["".concat(C)]))},R=function(e,t,r){for(var n=function(){var e=s(u[o],2),n=e[0],i=e[1];S(r,t,n,(function(e,n,o){i({fieldPaths:o,newEntity:t,oldEntity:r,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()};function x(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var _=function(){for(var r,n=((r=(0,i.useRef)(!0)).current=!0,(0,i.useEffect)((function(){r.current=!1})),r),u=arguments.length,c=new Array(u),l=0;l<u;l++)c[l]=arguments[l];var h=function(t){return m((function(){var r=p.None;return"function"===e(s(t,2)[1])&&(r|=p.Entity),r}))}(c),P=function(e,t){var r=s(e,4),n=r[0],o=r[1],u=r[2],i=r[3];return(t&p.Entity)!==p.Entity?[null,n,o||{},u||[]]:[n,o,u||{},i||[]]}(c,h),S=s(P,4),_=S[0],A=S[1],D=S[2],U=S[3],M=b(A),k=M,N=M,I=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p.None,r=m((function(){return(0,E().registerUseCase)(e,t)}));return(0,y.useUnmount)((function(){(0,E().unregisterUseCase)(e,t)})),r}(M,h),T=(0,i.useContext)(I),L=T,V=function(e,t){return(0,y.useCreation)((function(){var r=d.None,n=(t||{}).store;return(e&p.Entity)===p.Entity&&(r|=d.EntityRootEnabled),r|=t?d.ContextEnabled:d.RootEnabled,n&&(r|=d.EntityEnabled),r}),[e,t])}(h,T),F=(0,y.useLatest)(D),$=function(e){var t=(0,i.useRef)(0),r=(0,i.useRef)([]),n=r.current,o=j(e,n);return r.current=e,t.current+=o?0:1,t.current}(U),z=(T||{}).reducers,B=void 0===z?null:z,G=(L||{}).store,W=s(function(e,t,r,n,o){var u=(0,y.useUpdate)(),a=(0,i.useRef)(),c=(0,y.useLatest)(n),l=r?r.value:null,f=(e&d.EntityEnabled)===d.EntityEnabled,s=(e&d.EntityRootEnabled)===d.EntityRootEnabled,b=C(r,e,(function(){var e;if(s){var r,n="function"==typeof t?t(null===(r=a.current)||void 0===r?void 0:r.value):t;e=new v.EntityStore(n)}else e=new v.EntityStore(null);return a.current=e,e}),o),p=function(e,t,r,n){var o=(0,i.useRef)(t);if((n&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var u="function"==typeof t,a=o.current;switch(!0){case u:case a===t:return e.value}return o.current=t,t}(b,t,l,e),E=(0,y.useMemoizedFn)((function(e,t){var r=c.current,n=r.onChange,o=r.watch;o&&R(o,e,t),null==n||n(e,t),s&&u()}));return s&&(b.value=p),(0,y.useCreation)((function(){f&&b.watch(E)}),[f,b,E]),(0,i.useEffect)((function(){return function(){b.unwatch(E)}}),[f,b,E]),(0,y.useCreation)((function(){return[p,b]}),[p,b])}(V,_,void 0===G?null:G,D,$),2),Y=W[0],q=W[1],H=C(B,V,(function(){var e,t,r,n=(e=D,t=function(e,t){var r,n;return null===(r=(n=F.current)[e])||void 0===r?void 0:r.call.apply(r,[n].concat(f(t)))},r={},Object.keys(e).forEach((function(n){var o=e[n];r[n]="function"!=typeof o?o:function(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];return t(n,r)}})),r);return(V&d.EntityEnabled)!==d.EntityEnabled?k(n):function(e,t,r){r.watch,r.onChange;var n=r.options,u=o(r,O);return(0,v.createEntityReducers)(t,e,g(g(g({},u),n),{},{onGenerate:function(e,t){return t}}))}(N,q,n)}),$),J=function(e,t,r,n){var o=r.value,u=(0,i.useMemo)((function(){return(0,E().createContextValue)(r,n,e)}),[e,o,r,n]),c=(0,y.useLatest)(u);return b((function(e){var r=e.children,n=e.with,o=void 0===n?[]:n,u=t.Provider,i=c.current;return a().createElement(u,{value:i},o.reduceRight((function(e,t){return a().createElement(t,{},e)}),r))}))}(V,I,q,H);return(0,y.useCreation)((function(){if((V&d.EntityEnabled)!==d.EntityEnabled)return H;var r=(V&d.RootEnabled)===d.RootEnabled,o=function(e,t){var r={};return Object.entries(e).forEach((function(e){var n=s(e,2),o=n[0],u=n[1];r[o]=w(u,t)})),r}(H,{onShouldCache:function(){return n.current}}),u=null===Y,i=Array.isArray(Y),a="object"!==e(Y)||u||i?Y:function(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?x(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Y);return r?[a,o,J]:[a,o]}),[V,Y,H,J,n])},A=function(e){var t=e.usecase,r=e.watch,n=e.onMount,o=e.onChange,a=s(_(t,{watch:r,onChange:o}),1)[0];return(0,y.useMount)((function(){null==n||n(a)})),(0,u.jsx)(i.Fragment,{})},D=["usecase"];function U(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function M(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?U(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var k=function(e){var t=e.usecase,r=o(e,D),n=(0,_(E).getUseCaseContext)(t),a=(0,i.useContext)(n);return(0,u.jsx)(i.Fragment,{children:null===a?null:(0,u.jsx)(A,M({usecase:t},r))})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in n)o[u]=n[u];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|
|
2
|
+
(()=>{var t={698(t,e){"use strict";var r=Symbol.for("react.transitional.element");Symbol.for("react.fragment"),e.jsx=function(t,e,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==e.key&&(o=""+e.key),"key"in e)for(var u in n={},e)"key"!==u&&(n[u]=e[u]);else n=e;return e=n.ref,{$$typeof:r,type:t,key:o,ref:void 0!==e?e:null,props:n}}},848(t,e,r){"use strict";t.exports=r(698)},172(t){t.exports=function(t,e){this.v=t,this.k=e},t.exports.__esModule=!0,t.exports.default=t.exports},993(t,e,r){var n=r(546);function o(){var e,r,u="function"==typeof Symbol?Symbol:{},a=u.iterator||"@@iterator",i=u.toStringTag||"@@toStringTag";function c(t,o,u,a){var i=o&&o.prototype instanceof l?o:l,c=Object.create(i.prototype);return n(c,"_invoke",function(t,n,o){var u,a,i,c=0,l=o||[],f=!1,p={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,r){return u=t,a=0,i=e,p.n=r,s}};function y(t,n){for(a=t,i=n,r=0;!f&&c&&!o&&r<l.length;r++){var o,u=l[r],y=p.p,v=u[2];t>3?(o=v===n)&&(i=u[(a=u[4])?5:(a=3,3)],u[4]=u[5]=e):u[0]<=y&&((o=t<2&&y<u[1])?(a=0,p.v=n,p.n=u[1]):y<v&&(o=t<3||u[0]>n||n>v)&&(u[4]=t,u[5]=n,p.n=v,a=0))}if(o||t>1)return s;throw f=!0,n}return function(o,l,v){if(c>1)throw TypeError("Generator is already running");for(f&&1===l&&y(l,v),a=l,i=v;(r=a<2?e:i)||!f;){u||(a?a<3?(a>1&&(p.n=-1),y(a,i)):p.n=i:p.v=i);try{if(c=2,u){if(a||(o="next"),r=u[o]){if(!(r=r.call(u,i)))throw TypeError("iterator result is not an object");if(!r.done)return r;i=r.value,a<2&&(a=0)}else 1===a&&(r=u.return)&&r.call(u),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);u=e}else if((r=(f=p.n<0)?i:t.call(n,p))!==s)break}catch(t){u=e,a=1,i=t}finally{c=1}}return{value:r,done:f}}}(t,u,a),!0),c}var s={};function l(){}function f(){}function p(){}r=Object.getPrototypeOf;var y=[][a]?r(r([][a]())):(n(r={},a,function(){return this}),r),v=p.prototype=l.prototype=Object.create(y);function d(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,i,"GeneratorFunction")),t.prototype=Object.create(v),t}return f.prototype=p,n(v,"constructor",p),n(p,"constructor",f),f.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(v),n(v,i,"Generator"),n(v,a,function(){return this}),n(v,"toString",function(){return"[object Generator]"}),(t.exports=o=function(){return{w:c,m:d}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},869(t,e,r){var n=r(887);t.exports=function(t,e,r,o,u){var a=n(t,e,r,o,u);return a.next().then(function(t){return t.done?t.value:a.next()})},t.exports.__esModule=!0,t.exports.default=t.exports},887(t,e,r){var n=r(993),o=r(791);t.exports=function(t,e,r,u,a){return new o(n().w(t,e,r,u),a||Promise)},t.exports.__esModule=!0,t.exports.default=t.exports},791(t,e,r){var n=r(172),o=r(546);t.exports=function t(e,r){function u(t,o,a,i){try{var c=e[t](o),s=c.value;return s instanceof n?r.resolve(s.v).then(function(t){u("next",t,a,i)},function(t){u("throw",t,a,i)}):r.resolve(s).then(function(t){c.value=t,a(c)},function(t){return u("throw",t,a,i)})}catch(t){i(t)}}var a;this.next||(o(t.prototype),o(t.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),o(this,"_invoke",function(t,e,n){function o(){return new r(function(e,r){u(t,n,e,r)})}return a=a?a.then(o,o):o()},!0)},t.exports.__esModule=!0,t.exports.default=t.exports},546(t){function e(r,n,o,u){var a=Object.defineProperty;try{a({},"",{})}catch(r){a=0}t.exports=e=function(t,r,n,o){function u(r,n){e(t,r,function(t){return this._invoke(r,n,t)})}r?a?a(t,r,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[r]=n:(u("next",0),u("throw",1),u("return",2))},t.exports.__esModule=!0,t.exports.default=t.exports,e(r,n,o,u)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},373(t){t.exports=function(t){var e=Object(t),r=[];for(var n in e)r.unshift(n);return function t(){for(;r.length;)if((n=r.pop())in e)return t.value=n,t.done=!1,t;return t.done=!0,t}},t.exports.__esModule=!0,t.exports.default=t.exports},633(t,e,r){var n=r(172),o=r(993),u=r(869),a=r(887),i=r(791),c=r(373),s=r(579);function l(){"use strict";var e=o(),r=e.m(l),f=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function p(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===f||"GeneratorFunction"===(e.displayName||e.name))}var y={throw:1,return:2,break:3,continue:3};function v(t){var e,r;return function(n){e||(e={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(t,e){return r(n.a,y[t],e)},delegateYield:function(t,o,u){return e.resultName=o,r(n.d,s(t),u)},finish:function(t){return r(n.f,t)}},r=function(t,r,o){n.p=e.prev,n.n=e.next;try{return t(r,o)}finally{e.next=n.n}}),e.resultName&&(e[e.resultName]=n.v,e.resultName=void 0),e.sent=n.v,e.next=n.n;try{return t.call(this,e)}finally{n.p=e.prev,n.n=e.next}}}return(t.exports=l=function(){return{wrap:function(t,r,n,o){return e.w(v(t),r,n,o&&o.reverse())},isGeneratorFunction:p,mark:e.m,awrap:function(t,e){return new n(t,e)},AsyncIterator:i,async:function(t,e,r,n,o){return(p(e)?a:u)(v(t),e,r,n,o)},keys:c,values:s}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=l,t.exports.__esModule=!0,t.exports.default=t.exports},579(t,e,r){var n=r(738).default;t.exports=function(t){if(null!=t){var e=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}throw new TypeError(n(t)+" is not iterable")},t.exports.__esModule=!0,t.exports.default=t.exports},738(t){function e(r){return t.exports=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},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},756(t,e,r){var n=r(633)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var u=e[n]={exports:{}};return t[n](u,u.exports,r),u.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";function t(e){return t="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},t(e)}function e(e,r,n){return(r=function(e){var r=function(e){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=t(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)r=u[n],-1===e.indexOf(r)&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}r.r(n),r.d(n,{UseCaseFragment:()=>F,useUseCase:()=>A});var u=r(848);function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}function c(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(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 s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,u,a,i=[],c=!0,s=!1;try{if(u=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=u.call(r)).done)&&(i.push(n.value),i.length!==e);c=!0);}catch(t){s=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return i}}(t,e)||i(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=usecases;var f=["watch","onChange","options"];function p(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function y(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?p(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}const v=React;var d,b=r.n(v),h=function(t){return s((0,v.useState)(t),1)[0]};!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(d||(d={}));var m=function(t){return s((0,v.useState)(function(){return t}),1)[0]};const O=ahooks;var g;!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"}(g||(g={}));var x=(0,l.createUseCase)(function(){var t=new Map,e=(0,v.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&g.EntityEnabled)===g.EntityEnabled?{store:t,reducers:e,statuses:r}:{reducers:e,statuses:r}},getUseCaseContext:function(r){return t.has(r)?t.get(r).value:e},registerUseCase:function(r,n){if(t.has(r)){var o=t.get(r),u=o.value,a=o.times;return t.set(r,{value:u,times:a+1}),u}if((n&d.Entity)!==d.Entity)return e;var i=(0,v.createContext)(null);return t.set(r,{value:i,times:1}),i},unregisterUseCase:function(e,r){if((r&d.Entity)!==d.Entity)return!1;if(!t.has(e))return!1;var n=t.get(e),o=n.value,u=n.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}}),E=r(756),j=r.n(E);function w(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function P(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?w(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):w(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var S=(0,l.createUseCase)(function(){var e=0;return function(){var r=e++,n=(0,l.entityUseCase)(),o=function(e,r){return"object"===t(e)&&null!==e&&Object.hasOwn(e,r)},u=function(t,e){return t!==e},a=function(e,r){if(e===r)return!0;var n="object"===t(e)&&null!==e,o="object"===t(r)&&null!==r;if(!n||!o)return!1;var u=Object.keys(e),a=Object.keys(r);if(u.length!==a.length)return!1;for(var i=0,c=u;i<c.length;i++){var s=c[i];if(e[s]!==r[s])return!1}return!0},i=j().mark(function t(e,r){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(u(e,r)){t.next=1;break}return t.abrupt("return",!1);case 1:return t.next=2,r;case 2:return t.abrupt("return",!0);case 3:case"end":return t.stop()}},t)}),f=j().mark(function t(e,r){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!a(e,r)){t.next=1;break}return t.abrupt("return",!0);case 1:return t.next=2,r;case 2:return t.abrupt("return",!1);case 3:case"end":return t.stop()}},t)});return P(P({},n),{},{isValueChanged:u,isValueMatched:a,matchProperty:function(t,e,r,n){var u=!0,a=r,i=[{fieldPaths:[],newEntity:e,newValue:e,oldEntity:t,oldValue:t}];do{var l=i.shift(),f=l.oldValue,p=l.newValue,y=l.fieldPaths,v=s(a.match(/^([^.]+)\.(.+)$/)||[],3),d=v[1],b=void 0===d?a:d,h=v[2],m=void 0===h?"":h,O=o(f,b),g=o(p,b);if(O||g){var x=O?f[b]:void 0,E=g?p[b]:void 0,j={fieldPaths:[].concat(c(y),[b]),newEntity:e,newValue:E,oldEntity:t,oldValue:x};if(m){a=m,i.push(j);continue}if(x===E)continue;u=!1,null==n||n(j)}else if(!/^\d+^/.test(b))for(var w=Array.isArray(f)?f:[],P=Array.isArray(p)?p:[],S=w.length,C=P.length,_=Math.max(S,C),M=0;M<_;M++)i.push({fieldPaths:[].concat(c(y),["".concat(M)]),newEntity:e,newValue:P[M],oldEntity:t,oldValue:w[M]})}while(i.length>0);return u},recordValue:i,recordValueMatch:f,recordValueMatchWith:function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e+1;return j().mark(function u(){return j().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return u.delegateYield(f(t,n),"t0",1);case 1:return u.t0||(e++,r=o),u.abrupt("return",r);case 2:case"end":return u.stop()}},u)})()}})}}),C=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=s((0,h(function(){return(0,l.createEntityReducers)(n,S)}).recordValueMatchWith)(n),2)[1],u=(0,O.useMemoizedFn)(function(){return(0,l.createEntityReducers)(t,e,r)});return(0,O.useCreation)(function(){return u()},[o,e,u])},_=function(t){return s((0,C(t,S).recordValueMatchWith)(t),2)[1]},M=function(t,e){var r=_(arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]),n=(0,O.useMemoizedFn)(function(){return t(e)});return(0,O.useCreation)(function(){return n()},[r,t,n])},k=function(){var t=S().isValueMatched,e=function(e,r){var n,o=r||{},u=o.onShouldCache,a=void 0===u?function(){return!0}:u,i=o.onCompare,c=void 0===i?function(e,r){return t(e,r)}:i;return function(){for(var t=a(),r=arguments.length,o=new Array(r),u=0;u<r;u++)o[u]=arguments[u];if(n&&t){var i=n,s=i.parameters,l=i.returnValue;if(c(s,o))return l}var f=e.apply(void 0,o);return t&&(n={parameters:o,returnValue:f}),f}};return{cacheCall:e,cacheCalls:function(t,r){var n={};return Object.entries(t).forEach(function(t){var o=s(t,2),u=o[0],a=o[1];n[u]=e(a,r)}),n},captureCalls:function(t,e){var r={};return Object.keys(t).forEach(function(n){var o=t[n];r[n]="function"!=typeof o?o:function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return e(n,r)}}),r}}},R=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,O.useLatest)(r),u=M(k).cacheCall,a=(0,O.useMemoizedFn)(function(){var t=o.current;return u(t,{onCompare:function(){return!0}})}),i=(0,O.useCreation)(function(){return a()},[n,a]);return(0,O.useCreation)(function(){return(e&g.RootEnabled)!==g.RootEnabled&&t?t:i()},[e,t,i])};function V(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}var A=function(){for(var r,n=(r=(0,O.useLatest)(!0),(0,v.useEffect)(function(){r.current=!1}),r),u=arguments.length,a=new Array(u),i=0;i<u;i++)a[i]=arguments[i];var p=function(e){return h(function(){return"function"===t(s(e,2)[1])?d.Entity:d.None})}(a),E=function(t,e){var r=s(t,4),n=r[0],o=r[1],u=r[2],a=r[3];return(e&d.Entity)!==d.Entity?[null,n,o||{},u||[]]:[n,o,u||{},a||[]]}(a,p),j=s(E,4),w=j[0],P=j[1],A=j[2],D=j[3],N=m(P),T=N,U=N,F=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.None,r=h(function(){return(0,x().registerUseCase)(t,e)});return(0,O.useUnmount)(function(){(0,x().unregisterUseCase)(t,e)}),r}(N,p),G=(0,v.useContext)(F),I=G,L=function(t,e){return(0,O.useCreation)(function(){var r=g.None,n=(e||{}).store;return(t&d.Entity)===d.Entity&&(r|=g.EntityRootEnabled),r|=e?g.ContextEnabled:g.RootEnabled,n&&(r|=g.EntityEnabled),r},[t,e])}(p,G),z=(0,O.useLatest)(A),$=_(D),W=(G||{}).reducers,Y=void 0===W?null:W,q=(I||{}).store,B=s(function(t,e,r,n,o){var u=(0,O.useUpdate)(),a=(0,v.useRef)(null),i=(0,O.useLatest)(n),c=r?r.value:null,f=(t&g.EntityEnabled)===g.EntityEnabled,p=(t&g.EntityRootEnabled)===g.EntityRootEnabled,y=R(r,t,function(){var t;if(p){var r,n="function"==typeof e?e(null===(r=a.current)||void 0===r?void 0:r.value):e;t=new l.EntityStore(n)}else t=new l.EntityStore(null);return a.current=t,t},o),d=function(t,e,r,n){var o=C(e,S),u=o.isValueChanged,a=o.recordValue,i=u(e);if((n&g.EntityRootEnabled)!==g.EntityRootEnabled)return r;switch(!0){case"function"==typeof e:case!i:return t.value}return a(e),e}(y,e,c,t),b=(0,O.useMemoizedFn)(function(t,e){var r=i.current,n=r.onChange,o=r.watch;o&&function(t,e,r){for(var n=S().matchProperty,o=function(){var t=s(a[u],2),o=t[0],i=t[1];n(r,e,o,function(t){i(t)})},u=0,a=Object.entries(t);u<a.length;u++)o()}(o,t,e),null==n||n(t,e),p&&u()});return p&&y.setValue(d,!0),(0,O.useCreation)(function(){f&&y.watch(b)},[f,y,b]),(0,v.useEffect)(function(){return function(){y.unwatch(b)}},[f,y,b]),(0,O.useCreation)(function(){return[d,y]},[d,y])}(L,w,void 0===q?null:q,A,$),2),H=B[0],J=B[1],K=M(k),Q=K.cacheCalls,X=K.captureCalls,Z=R(Y,L,function(){var t=X(A,function(t,e){var r,n;return null===(r=(n=z.current)[t])||void 0===r?void 0:r.call.apply(r,[n].concat(c(e)))});return(L&g.EntityEnabled)!==g.EntityEnabled?T(t):function(t,e,r){r.watch,r.onChange;var n=r.options,u=o(r,f);return(0,l.createEntityReducers)(e,t,y(y(y({},u),n),{},{onGenerate:function(t,e){return e}}))}(U,J,t)},$),tt=function(t,e,r,n){var o=r.value,u=(0,O.useCreation)(function(){return(0,x().createContextValue)(r,n,t)},[t,o,r,n]),a=(0,O.useLatest)(u);return m(function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=a.current;return b().createElement(u,{value:i},o.reduceRight(function(t,e){return b().createElement(e,{},t)},r))})}(L,F,J,Z);return(0,O.useCreation)(function(){if((L&g.EntityEnabled)!==g.EntityEnabled)return Z;var r=(L&g.RootEnabled)===g.RootEnabled,o=Q(Z,{onShouldCache:function(){return n.current}}),u=null===H,a=Array.isArray(H),i="object"!==t(H)||u||a?H:function(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?V(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},H);return r?[i,o,tt]:[i,o]},[L,H,Z,tt,n,Q])},D=function(t){var e=t.usecase,r=t.watch,n=t.onMount,o=t.onChange,a=s(A(e,{watch:r,onChange:o}),1)[0];return(0,O.useMount)(function(){null==n||n(a)}),(0,u.jsx)(v.Fragment,{})},N=["usecase"];function T(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function U(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?T(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):T(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var F=function(t){var e=t.usecase,r=o(t,N),n=(0,A(x).getUseCaseContext)(e),a=(0,v.useContext)(n);return(0,u.jsx)(v.Fragment,{children:null===a?null:(0,u.jsx)(D,U({usecase:e},r))})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in n)o[u]=n[u];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* @license React
|
|
3
|
-
* react-jsx-runtime.production.
|
|
5
|
+
* react-jsx-runtime.production.js
|
|
4
6
|
*
|
|
5
|
-
* Copyright (c)
|
|
7
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
8
|
*
|
|
7
9
|
* This source code is licensed under the MIT license found in the
|
|
8
10
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Fragment } from 'react';
|
|
3
2
|
import { useUseCase } from '../../hooks/useUseCase';
|
|
4
3
|
import { useMount } from 'ahooks';
|
|
4
|
+
import { Fragment } from 'react';
|
|
5
5
|
export const SafeUseCaseFragment = ({ usecase, watch, onMount, onChange, }) => {
|
|
6
6
|
const [entity] = useUseCase(usecase, { watch, onChange });
|
|
7
7
|
useMount(() => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Fragment, useContext } from 'react';
|
|
3
2
|
import { useUseCase } from '../../hooks/useUseCase';
|
|
4
|
-
import { contextUseCase } from '../../usecases/contextUseCase';
|
|
5
3
|
import { SafeUseCaseFragment } from '../SafeUseCaseFragment';
|
|
4
|
+
import { Fragment, useContext } from 'react';
|
|
5
|
+
import { contextUseCase } from '../../usecases/contextUseCase';
|
|
6
6
|
export const UseCaseFragment = ({ usecase, ...props }) => {
|
|
7
7
|
const { getUseCaseContext } = useUseCase(contextUseCase);
|
|
8
8
|
const context = getUseCaseContext(usecase);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
2
1
|
import { SafeUseCaseFragmentProps } from '../SafeUseCaseFragment/types';
|
|
2
|
+
import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
3
3
|
export interface UseCaseFragmentProps<T, TEntityReducers extends EntityReducerMap<T>> extends SafeUseCaseFragmentProps<T, TEntityReducers> {
|
|
4
4
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
2
1
|
import { useConstant } from '../useConstant';
|
|
2
|
+
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
3
3
|
export const useArgumentTypes = (args) => {
|
|
4
4
|
return useConstant(() => {
|
|
5
|
-
let types = ArgumentTypes.None;
|
|
6
5
|
const [, arg2] = args;
|
|
7
6
|
const type2 = typeof arg2;
|
|
8
7
|
if (type2 === 'function') {
|
|
9
|
-
|
|
8
|
+
return ArgumentTypes.Entity;
|
|
10
9
|
}
|
|
11
|
-
return
|
|
10
|
+
return ArgumentTypes.None;
|
|
12
11
|
});
|
|
13
12
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UseCase } from '@mic-rexjs/usecases';
|
|
2
|
+
import { ReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
2
3
|
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
3
4
|
import { Context, ContextValue } from '../../usecases/contextUseCase/types';
|
|
4
|
-
|
|
5
|
-
export declare const useContext: <T extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>, TUseCaseOptions extends object>(usecase: UseCase<T, TUseCaseOptions>, argumentTypes?: ArgumentTypes) => Context<ContextValue<T>>;
|
|
5
|
+
export declare const useContext: <T extends ReducerMap, TUseCaseOptions extends object>(usecase: UseCase<T, TUseCaseOptions>, argumentTypes?: ArgumentTypes) => Context<ContextValue<T>>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { useContext } from '.';
|
|
1
2
|
import { describe, expect, test } from '@jest/globals';
|
|
2
3
|
import { renderHook } from '@testing-library/react';
|
|
3
|
-
import { useContext } from '.';
|
|
4
|
-
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
5
4
|
import { useContext as useReactContext } from 'react';
|
|
5
|
+
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
6
6
|
const testUseCase = () => {
|
|
7
7
|
return {};
|
|
8
8
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Statuses } from '../../enums/Statuses';
|
|
2
1
|
import { CreateContextualItemFactory } from './types';
|
|
2
|
+
import { Statuses } from '../../enums/Statuses';
|
|
3
3
|
export declare const useContextualItem: <T>(contextItem: T | null, statuses: Statuses, createFactory: CreateContextualItemFactory<T>, depsKey?: number) => T;
|
|
@@ -1,21 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useReducers } from '../useReducers';
|
|
2
|
+
import { useCreation, useLatest, useMemoizedFn } from 'ahooks';
|
|
2
3
|
import { Statuses } from '../../enums/Statuses';
|
|
3
|
-
import {
|
|
4
|
+
import { methodUseCase } from '../../usecases/methodUseCase';
|
|
4
5
|
export const useContextualItem = (contextItem, statuses, createFactory, depsKey = 0) => {
|
|
5
6
|
const factoryRef = useLatest(createFactory);
|
|
6
|
-
const
|
|
7
|
+
const { cacheCall } = useReducers(methodUseCase);
|
|
8
|
+
const onCache = useMemoizedFn(() => {
|
|
9
|
+
const { current: currentFactory } = factoryRef;
|
|
7
10
|
void depsKey;
|
|
8
|
-
|
|
11
|
+
// 防止在以下 `onCreate()` 多次调用实际 `factory`
|
|
12
|
+
return cacheCall(currentFactory, {
|
|
9
13
|
onCompare() {
|
|
10
14
|
return true;
|
|
11
15
|
},
|
|
12
16
|
});
|
|
13
|
-
}
|
|
17
|
+
});
|
|
18
|
+
const onCreate = useCreation(() => {
|
|
19
|
+
void depsKey;
|
|
20
|
+
return onCache();
|
|
21
|
+
}, [depsKey, onCache]);
|
|
14
22
|
return useCreation(() => {
|
|
15
23
|
const rootEnabled = (statuses & Statuses.RootEnabled) === Statuses.RootEnabled;
|
|
16
24
|
if (!rootEnabled && contextItem) {
|
|
17
25
|
return contextItem;
|
|
18
26
|
}
|
|
19
|
-
return
|
|
20
|
-
}, [statuses, contextItem,
|
|
27
|
+
return onCreate();
|
|
28
|
+
}, [statuses, contextItem, onCreate]);
|
|
21
29
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useEntityReducers } from '../useEntityReducers';
|
|
2
|
+
import { valueUseCase } from '../../usecases/valueUseCase';
|
|
3
|
+
export const useDepsKey = (deps) => {
|
|
4
|
+
const { recordValueMatchWith } = useEntityReducers(deps, (valueUseCase));
|
|
5
|
+
const [, depsKey] = recordValueMatchWith(deps);
|
|
6
|
+
return depsKey;
|
|
7
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
+
import { EntityGetter, UseCaseHookOptions } from '../useUseCase/types';
|
|
1
2
|
import { EntityStore } from '@mic-rexjs/usecases';
|
|
2
3
|
import { Statuses } from '../../enums/Statuses';
|
|
3
|
-
import { EntityGetter, UseCaseHookOptions } from '../useUseCase/types';
|
|
4
4
|
export declare const useEntity: <T, TUseCaseOptions extends object, TOptions extends UseCaseHookOptions<T, TUseCaseOptions> = UseCaseHookOptions<T, TUseCaseOptions>>(statuses: Statuses, entityArg: T | EntityGetter<T>, contextStore: EntityStore<T> | null, options: TOptions, depsKey: number) => [entity: T, store: EntityStore<T>];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { useEffect, useRef } from 'react';
|
|
2
|
-
import { EntityStore } from '@mic-rexjs/usecases';
|
|
3
|
-
import { Statuses } from '../../enums/Statuses';
|
|
4
1
|
import { useContextualItem } from '../useContextualItem';
|
|
2
|
+
import { useRuntimeEntity } from '../useRuntimeEntity';
|
|
3
|
+
import { EntityStore } from '@mic-rexjs/usecases';
|
|
5
4
|
import { useCreation, useLatest, useMemoizedFn, useUpdate } from 'ahooks';
|
|
5
|
+
import { useEffect, useRef } from 'react';
|
|
6
|
+
import { Statuses } from '../../enums/Statuses';
|
|
6
7
|
import { triggerWatchers } from '../../methods/triggerWatchers';
|
|
7
|
-
import { useRuntimeEntity } from '../useRuntimeEntity';
|
|
8
8
|
export const useEntity = (statuses, entityArg, contextStore, options, depsKey) => {
|
|
9
9
|
const update = useUpdate();
|
|
10
|
-
const storeRef = useRef();
|
|
10
|
+
const storeRef = useRef(null);
|
|
11
11
|
const optionsRef = useLatest(options);
|
|
12
12
|
const contextEntity = (contextStore ? contextStore.value : null);
|
|
13
13
|
const entityEnabled = (statuses & Statuses.EntityEnabled) === Statuses.EntityEnabled;
|
|
@@ -39,7 +39,7 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
|
|
|
39
39
|
});
|
|
40
40
|
if (entityRootEnabled) {
|
|
41
41
|
// 执行同步操作
|
|
42
|
-
store.
|
|
42
|
+
store.setValue(runtimeEntity, true);
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CreateEntityReducersOptions, ScopedEntityReducers } from '@mic-rexjs/usecases/es/methods/createEntityReducers/types';
|
|
2
|
+
import { EntityReducerMap, EntityReducers, InferableEntityUseCase } from '@mic-rexjs/usecases/es/types';
|
|
3
|
+
import { Dependencies } from '../../types';
|
|
4
|
+
export declare const useEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(initailEntity: T, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: CreateEntityReducersOptions<T, TUseCaseOptions>, deps?: Dependencies) => ScopedEntityReducers<T, EntityReducers<T, TEntityReducers>>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useConstant } from '../useConstant';
|
|
2
|
+
import { createEntityReducers } from '@mic-rexjs/usecases';
|
|
3
|
+
import { useCreation, useMemoizedFn } from 'ahooks';
|
|
4
|
+
import { valueUseCase } from '../../usecases/valueUseCase';
|
|
5
|
+
export const useEntityReducers = (initailEntity, usecase, options, deps = []) => {
|
|
6
|
+
const { recordValueMatchWith } = useConstant(() => {
|
|
7
|
+
return createEntityReducers(deps, valueUseCase);
|
|
8
|
+
});
|
|
9
|
+
const [, depsKey] = recordValueMatchWith(deps);
|
|
10
|
+
const onCreate = useMemoizedFn(() => {
|
|
11
|
+
return createEntityReducers(initailEntity, usecase, options);
|
|
12
|
+
});
|
|
13
|
+
return useCreation(() => {
|
|
14
|
+
void depsKey;
|
|
15
|
+
void usecase;
|
|
16
|
+
return onCreate();
|
|
17
|
+
}, [depsKey, usecase, onCreate]);
|
|
18
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { UseCaseHookParameters } from '../../hooks/useUseCase/types';
|
|
2
1
|
import { FullParameters } from './types';
|
|
3
|
-
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
4
2
|
import { ReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
5
|
-
|
|
3
|
+
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
4
|
+
import { UseCaseHookParameters } from '../../hooks/useUseCase/types';
|
|
5
|
+
export declare const useFullArguments: <T, TReducers extends ReducerMap, TUseCaseOptions extends object>(args: UseCaseHookParameters, argumentTypes: ArgumentTypes) => FullParameters<T, TReducers, TUseCaseOptions>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { EntityGetter, UseCaseHookContextualOptions, UseCaseHookOptions } from '../../hooks/useUseCase/types';
|
|
2
1
|
import { EntityReducers, EntityUseCase, UseCase } from '@mic-rexjs/usecases';
|
|
3
2
|
import { ReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
3
|
+
import { EntityGetter, UseCaseHookContextualOptions, UseCaseHookOptions } from '../../hooks/useUseCase/types';
|
|
4
|
+
import { Dependencies } from '../../types';
|
|
4
5
|
export type FullParameters<T, TReducers extends ReducerMap, TUseCaseOptions extends object> = [
|
|
5
6
|
entity: T | EntityGetter<T>,
|
|
6
7
|
usecase: UseCase<TReducers, TUseCaseOptions> | EntityUseCase<T, TReducers & EntityReducers<T>, TUseCaseOptions>,
|
|
7
8
|
options: TUseCaseOptions | UseCaseHookOptions<T, TUseCaseOptions> | UseCaseHookContextualOptions<T>,
|
|
8
|
-
deps:
|
|
9
|
+
deps: Dependencies
|
|
9
10
|
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useLatest } from 'ahooks';
|
|
2
|
+
import { useEffect } from 'react';
|
|
2
3
|
export const useIsRenderingRef = () => {
|
|
3
|
-
const ref =
|
|
4
|
-
ref.current = true;
|
|
4
|
+
const ref = useLatest(true);
|
|
5
5
|
useEffect(() => {
|
|
6
6
|
ref.current = false;
|
|
7
7
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EntityStore } from '@mic-rexjs/usecases';
|
|
2
1
|
import { UseCaseProvider } from './types';
|
|
2
|
+
import { EntityStore } from '@mic-rexjs/usecases';
|
|
3
|
+
import { ReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
3
4
|
import { Statuses } from '../../enums/Statuses';
|
|
4
5
|
import { Context, ContextValue } from '../../usecases/contextUseCase/types';
|
|
5
|
-
|
|
6
|
-
export declare const useProvider: <T, TReducers extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>>(statuses: Statuses, context: Context<ContextValue<TReducers>>, store: EntityStore<T>, reducers: TReducers) => UseCaseProvider;
|
|
6
|
+
export declare const useProvider: <T, TReducers extends ReducerMap>(statuses: Statuses, context: Context<ContextValue<TReducers>>, store: EntityStore<T>, reducers: TReducers) => UseCaseProvider;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
2
|
-
import { useLatest } from 'ahooks';
|
|
3
1
|
import { useConstantFn } from '../useConstantFn';
|
|
2
|
+
import { useCreation, useLatest } from 'ahooks';
|
|
3
|
+
import React from 'react';
|
|
4
4
|
import { contextUseCase } from '../../usecases/contextUseCase';
|
|
5
5
|
export const useProvider = (statuses, context, store, reducers) => {
|
|
6
6
|
const { value: entity } = store;
|
|
7
|
-
const contextValue =
|
|
7
|
+
const contextValue = useCreation(() => {
|
|
8
8
|
const { createContextValue } = contextUseCase();
|
|
9
9
|
void entity;
|
|
10
10
|
return createContextValue(store, reducers, statuses);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NonEntitySymbolSet } from '../useUseCase/types';
|
|
2
|
+
import { ReducerMap, SymbolSetTarget, UseCase } from '@mic-rexjs/usecases/es/types';
|
|
3
|
+
import { Dependencies } from '../../types';
|
|
4
|
+
export declare const useReducers: <T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?: Dependencies) => T;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useDepsKey } from '../useDepsKey';
|
|
2
|
+
import { useCreation, useMemoizedFn } from 'ahooks';
|
|
3
|
+
export const useReducers = (usecase, options, deps = []) => {
|
|
4
|
+
const depsKey = useDepsKey(deps);
|
|
5
|
+
const onCreate = useMemoizedFn(() => {
|
|
6
|
+
return usecase(options);
|
|
7
|
+
});
|
|
8
|
+
return useCreation(() => {
|
|
9
|
+
void depsKey;
|
|
10
|
+
void usecase;
|
|
11
|
+
return onCreate();
|
|
12
|
+
}, [depsKey, usecase, onCreate]);
|
|
13
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
+
import { EntityStore } from '@mic-rexjs/usecases';
|
|
1
2
|
import { Statuses } from '../../enums/Statuses';
|
|
2
3
|
import { EntityGetter } from '../../hooks/useUseCase/types';
|
|
3
|
-
import { EntityStore } from '@mic-rexjs/usecases';
|
|
4
4
|
export declare const useRuntimeEntity: <T>(store: EntityStore<T>, entityArg: T | EntityGetter<T>, contextEntity: T, statuses: Statuses) => T;
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import { useEntityReducers } from '../useEntityReducers';
|
|
1
2
|
import { Statuses } from '../../enums/Statuses';
|
|
2
|
-
import {
|
|
3
|
+
import { valueUseCase } from '../../usecases/valueUseCase';
|
|
3
4
|
export const useRuntimeEntity = (store, entityArg, contextEntity, statuses) => {
|
|
4
|
-
const
|
|
5
|
+
const { isValueChanged, recordValue } = useEntityReducers(entityArg, (valueUseCase));
|
|
6
|
+
const changed = isValueChanged(entityArg);
|
|
5
7
|
const entityRootDisabled = (statuses & Statuses.EntityRootEnabled) !== Statuses.EntityRootEnabled;
|
|
6
8
|
if (entityRootDisabled) {
|
|
7
9
|
return contextEntity;
|
|
8
10
|
}
|
|
9
11
|
const isFunction = typeof entityArg === 'function';
|
|
10
|
-
const { current: prevEntityArg } = prevEntityArgRef;
|
|
11
12
|
switch (true) {
|
|
12
13
|
case isFunction:
|
|
13
|
-
case
|
|
14
|
+
case !changed:
|
|
14
15
|
return store.value;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
recordValue(entityArg);
|
|
17
18
|
return entityArg;
|
|
18
19
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { ReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
1
2
|
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
2
3
|
import { Statuses } from '../../enums/Statuses';
|
|
3
4
|
import { ContextValue } from '../../usecases/contextUseCase/types';
|
|
4
|
-
|
|
5
|
-
export declare const useStatuses: <T extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>>(argumentTypes: ArgumentTypes, contextValue: ContextValue<T> | null) => Statuses;
|
|
5
|
+
export declare const useStatuses: <T extends ReducerMap>(argumentTypes: ArgumentTypes, contextValue: ContextValue<T> | null) => Statuses;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { useCreation } from 'ahooks';
|
|
1
2
|
import { ArgumentTypes } from '../../enums/ArgumentTypes';
|
|
2
3
|
import { Statuses } from '../../enums/Statuses';
|
|
3
|
-
import { useCreation } from 'ahooks';
|
|
4
4
|
export const useStatuses = (argumentTypes, contextValue) => {
|
|
5
5
|
return useCreation(() => {
|
|
6
6
|
let statuses = Statuses.None;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { useCreation, useLatest } from 'ahooks';
|
|
2
|
-
import { useContext as useContextValue } from 'react';
|
|
3
|
-
import { useConstantFn } from '../useConstantFn';
|
|
4
|
-
import { useProvider } from '../useProvider';
|
|
5
1
|
import { initEntityReducers } from '../../methods/initEntityReducers';
|
|
2
|
+
import { useArgumentTypes } from '../useArgumentTypes';
|
|
3
|
+
import { useConstantFn } from '../useConstantFn';
|
|
6
4
|
import { useContext } from '../useContext';
|
|
5
|
+
import { useContextualItem } from '../useContextualItem';
|
|
6
|
+
import { useDepsKey } from '../useDepsKey';
|
|
7
|
+
import { useEntity } from '../useEntity';
|
|
8
|
+
import { useFullArguments } from '../useFullArguments';
|
|
7
9
|
import { useIsRenderingRef } from '../useIsRenderingRef';
|
|
8
|
-
import {
|
|
10
|
+
import { useProvider } from '../useProvider';
|
|
11
|
+
import { useReducers } from '../useReducers';
|
|
9
12
|
import { useStatuses } from '../useStatuses';
|
|
13
|
+
import { useCreation, useLatest } from 'ahooks';
|
|
14
|
+
import { useContext as useContextValue } from 'react';
|
|
10
15
|
import { Statuses } from '../../enums/Statuses';
|
|
11
|
-
import {
|
|
12
|
-
import { useContextualItem } from '../useContextualItem';
|
|
13
|
-
import { cacheCalls } from '../../methods/cacheCalls';
|
|
14
|
-
import { useCompareDeps } from '../useCompareDeps';
|
|
15
|
-
import { captureCalls } from '../../methods/captureCalls';
|
|
16
|
-
import { useFullArguments } from '../useFullArguments';
|
|
16
|
+
import { methodUseCase } from '../../usecases/methodUseCase';
|
|
17
17
|
export const useUseCase = ((...args) => {
|
|
18
18
|
const isRenderingRef = useIsRenderingRef();
|
|
19
19
|
const argumentTypes = useArgumentTypes(args);
|
|
@@ -27,10 +27,11 @@ export const useUseCase = ((...args) => {
|
|
|
27
27
|
const entityContextValue = contextValue;
|
|
28
28
|
const statuses = useStatuses(argumentTypes, contextValue);
|
|
29
29
|
const optionsRef = useLatest(options);
|
|
30
|
-
const depsKey =
|
|
30
|
+
const depsKey = useDepsKey(deps);
|
|
31
31
|
const { reducers: contextReducers = null } = contextValue || {};
|
|
32
32
|
const { store: contextStore = null } = entityContextValue || {};
|
|
33
33
|
const [entity, store] = useEntity(statuses, unsafeEntity, contextStore, options, depsKey);
|
|
34
|
+
const { cacheCalls, captureCalls } = useReducers(methodUseCase);
|
|
34
35
|
const reducers = useContextualItem(contextReducers, statuses, () => {
|
|
35
36
|
const opts = captureCalls(options, (key, callArgs) => {
|
|
36
37
|
return optionsRef.current[key]?.(...callArgs);
|
|
@@ -62,5 +63,5 @@ export const useUseCase = ((...args) => {
|
|
|
62
63
|
return [newEntity, cachedReducers, Provider];
|
|
63
64
|
}
|
|
64
65
|
return [newEntity, cachedReducers];
|
|
65
|
-
}, [statuses, entity, reducers, Provider, isRenderingRef]);
|
|
66
|
+
}, [statuses, entity, reducers, Provider, isRenderingRef, cacheCalls]);
|
|
66
67
|
});
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { objectUseCase, entityUseCase, } from '@mic-rexjs/usecases';
|
|
3
|
-
import { beforeEach, describe, expect, jest, test } from '@jest/globals';
|
|
4
|
-
import { renderHook, act, render, fireEvent, screen } from '@testing-library/react';
|
|
5
2
|
import { useUseCase } from '.';
|
|
3
|
+
import { useDepsKey } from '../useDepsKey';
|
|
4
|
+
import { beforeEach, describe, expect, jest, test } from '@jest/globals';
|
|
5
|
+
import { entityUseCase, objectUseCase, } from '@mic-rexjs/usecases';
|
|
6
|
+
import { fireEvent, screen } from '@testing-library/dom';
|
|
7
|
+
import { act, render, renderHook } from '@testing-library/react';
|
|
6
8
|
import { useDeepCompareEffect, useMemoizedFn, useMount, useUpdate, useUpdateEffect } from 'ahooks';
|
|
7
9
|
import { Fragment, useEffect, useMemo, useRef, useState } from 'react';
|
|
8
10
|
const EXT_1 = '.png';
|
|
@@ -110,17 +112,19 @@ const MathParent = ({ extraValue = 0, onUpdate }) => {
|
|
|
110
112
|
};
|
|
111
113
|
const useDeepCompareUpdate = (callback, deps) => {
|
|
112
114
|
const isFirstRef = useRef(true);
|
|
115
|
+
const memoizedCallback = useMemoizedFn(callback);
|
|
116
|
+
const depsKey = useDepsKey(deps);
|
|
113
117
|
useEffect(() => {
|
|
114
118
|
return () => {
|
|
115
119
|
isFirstRef.current = false;
|
|
116
120
|
};
|
|
117
121
|
});
|
|
118
|
-
useDeepCompareEffect
|
|
122
|
+
useDeepCompareEffect(() => {
|
|
119
123
|
if (isFirstRef.current) {
|
|
120
124
|
return;
|
|
121
125
|
}
|
|
122
|
-
|
|
123
|
-
},
|
|
126
|
+
memoizedCallback();
|
|
127
|
+
}, [depsKey, memoizedCallback]);
|
|
124
128
|
};
|
|
125
129
|
beforeEach(() => {
|
|
126
130
|
subtractionReducer.mockClear();
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { UseCase } from '@mic-rexjs/usecases';
|
|
2
1
|
import { UseCaseProvider } from '../useProvider/types';
|
|
2
|
+
import { UseCase } from '@mic-rexjs/usecases';
|
|
3
|
+
import { EntityReducerMap, EntityReducers, InferableEntityUseCase, ReducerMap, RestArguments, SymbolSet, SymbolSetTarget } from '@mic-rexjs/usecases/es/types';
|
|
4
|
+
import { MatchPropertyFailedResult } from '../../entities/matchPropertyFailedResult/types';
|
|
5
|
+
import { Dependencies } from '../../types';
|
|
3
6
|
import { ContextualEntityReducers } from '../../usecases/contextUseCase/types';
|
|
4
|
-
import { EntityReducerMap, EntityReducers, InferableEntityUseCase, ReducerMap, SymbolSet, SymbolSetTarget } from '@mic-rexjs/usecases/es/types';
|
|
5
7
|
export interface NonEntitySymbolSet extends SymbolSet {
|
|
6
8
|
entity?: never;
|
|
7
9
|
}
|
|
@@ -18,12 +20,7 @@ export type CoreCollection<T, TEntityReducers extends EntityReducerMap<T>> = Roo
|
|
|
18
20
|
export interface EntityGetter<T> {
|
|
19
21
|
(entity?: T): T;
|
|
20
22
|
}
|
|
21
|
-
export interface EntityWatchEvent<T, TValue = unknown> {
|
|
22
|
-
fieldPaths: string[];
|
|
23
|
-
newEntity: T;
|
|
24
|
-
newValue: TValue;
|
|
25
|
-
oldEntity: T;
|
|
26
|
-
oldValue: TValue;
|
|
23
|
+
export interface EntityWatchEvent<T, TValue = unknown> extends MatchPropertyFailedResult<T, TValue> {
|
|
27
24
|
}
|
|
28
25
|
export interface EntityWatcher<T, TValue = unknown> {
|
|
29
26
|
(event: EntityWatchEvent<T, TValue>): void;
|
|
@@ -31,9 +28,9 @@ export interface EntityWatcher<T, TValue = unknown> {
|
|
|
31
28
|
export type PathTemplate = '1.2.3';
|
|
32
29
|
export type NextPathTemplate<T extends string> = T extends `${string}.${infer U}` ? U : T;
|
|
33
30
|
export type PropertyPath<T, TTemplate extends string, K extends keyof T = keyof T & string> = TTemplate extends `${string}.${string}` ? K extends infer TKey ? `${TKey & (string | number)}${'' | DotAccessorFieldPath<T[TKey & keyof T], TTemplate>}` : never : never;
|
|
34
|
-
export type DotAccessorFieldPath<T, TTemplate extends string> = TTemplate extends `${string}.${string}` ? T extends
|
|
35
|
-
export type FieldPath<T, TTemplate extends string = PathTemplate> = TTemplate extends `${string}.${string}` ? T extends
|
|
36
|
-
export type ExtractPropertyType<T, TPath> = TPath extends `${infer TKey}.${infer TSubPath}` ? T extends
|
|
31
|
+
export type DotAccessorFieldPath<T, TTemplate extends string> = TTemplate extends `${string}.${string}` ? T extends RestArguments ? '.length' | `${'' | `.${number}`}${DotAccessorFieldPath<T[number], NextPathTemplate<TTemplate>>}` : T extends object ? `.${PropertyPath<T, NextPathTemplate<TTemplate>>}` : '' : '';
|
|
32
|
+
export type FieldPath<T, TTemplate extends string = PathTemplate> = TTemplate extends `${string}.${string}` ? T extends RestArguments ? FieldPath<T[number], NextPathTemplate<TTemplate>> | 'length' : T extends object ? PropertyPath<T, TTemplate> : never : never;
|
|
33
|
+
export type ExtractPropertyType<T, TPath> = TPath extends `${infer TKey}.${infer TSubPath}` ? T extends RestArguments ? ExtractPropertyType<T[number], TKey extends `${number}` ? TSubPath : TPath> : ExtractPropertyType<T[TKey & keyof T], TSubPath> : T extends RestArguments ? TPath extends 'length' ? T[TPath] : TPath extends `${number}` ? T[number] : ExtractPropertyType<T[number], TPath> : T[TPath & keyof T];
|
|
37
34
|
export type ExtractFieldType<T, TPath> = TPath extends `${infer TKey}.${infer TSubProperty}` ? ExtractPropertyType<T[TKey & keyof T], TSubProperty> : T[TPath & keyof T];
|
|
38
35
|
export type EntityWatchMap<T> = {
|
|
39
36
|
[K in FieldPath<T>]?: EntityWatcher<T, ExtractFieldType<T, K>>;
|
|
@@ -51,13 +48,13 @@ export type UnextendOptionTypes<T> = {
|
|
|
51
48
|
};
|
|
52
49
|
export type UseCaseHookOptions<T, TUseCaseOptions extends object = object> = UnextendOptionTypes<TUseCaseOptions> & UseCaseHookOwnOptions<T, TUseCaseOptions>;
|
|
53
50
|
export interface ReducersHook {
|
|
54
|
-
<T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?:
|
|
51
|
+
<T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?: Dependencies): T;
|
|
55
52
|
}
|
|
56
53
|
export interface ContextualCoreCollectionHook {
|
|
57
|
-
<T, TEntityReducers extends EntityReducerMap<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>, options?: UseCaseHookContextualOptions<T>, deps?:
|
|
54
|
+
<T, TEntityReducers extends EntityReducerMap<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>, options?: UseCaseHookContextualOptions<T>, deps?: Dependencies): ContextualCoreCollection<T, TEntityReducers>;
|
|
58
55
|
}
|
|
59
56
|
export interface RootCoreCollectionHook {
|
|
60
|
-
<T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(entity: T | EntityGetter<T>, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: UseCaseHookOptions<T, TUseCaseOptions>, deps?:
|
|
57
|
+
<T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(entity: T | EntityGetter<T>, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: UseCaseHookOptions<T, TUseCaseOptions>, deps?: Dependencies): RootCoreCollection<T, EntityReducers<T, TEntityReducers>>;
|
|
61
58
|
}
|
|
62
59
|
export interface CoreCollectionHook extends ContextualCoreCollectionHook, RootCoreCollectionHook {
|
|
63
60
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EntityStore } from '@mic-rexjs/usecases';
|
|
2
1
|
import { UseCaseHookOptions } from '../../hooks/useUseCase/types';
|
|
3
|
-
import {
|
|
2
|
+
import { EntityStore } from '@mic-rexjs/usecases';
|
|
4
3
|
import { EntityReducerMap, InferableEntityUseCase } from '@mic-rexjs/usecases/es/types';
|
|
4
|
+
import { ContextualEntityReducers } from '../../usecases/contextUseCase/types';
|
|
5
5
|
export declare const initEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(usecase: InferableEntityUseCase<T, TEntityReducers, TUseCaseOptions>, store: EntityStore<T>, options: UseCaseHookOptions<T, TUseCaseOptions>) => ContextualEntityReducers<T, TEntityReducers>;
|