@mic-rexjs/usecases-react 2.10.1 → 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.
Files changed (96) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.LICENSE.txt +4 -2
  3. package/es/components/SafeUseCaseFragment/index.js +1 -1
  4. package/es/components/UseCaseFragment/index.js +4 -3
  5. package/es/components/UseCaseFragment/types.d.ts +1 -1
  6. package/es/entities/matchPropertyFailedResult/types.d.ts +7 -0
  7. package/es/hooks/useArgumentTypes/index.d.ts +1 -1
  8. package/es/hooks/useArgumentTypes/index.js +3 -4
  9. package/es/hooks/useContext/index.d.ts +2 -2
  10. package/es/hooks/useContext/index.test.js +2 -2
  11. package/es/hooks/useContextualItem/index.d.ts +1 -1
  12. package/es/hooks/useContextualItem/index.js +15 -7
  13. package/es/hooks/useDepsKey/index.d.ts +2 -0
  14. package/es/hooks/useDepsKey/index.js +7 -0
  15. package/es/hooks/useEntity/index.d.ts +1 -1
  16. package/es/hooks/useEntity/index.js +6 -6
  17. package/es/hooks/useEntityReducers/index.d.ts +4 -0
  18. package/es/hooks/useEntityReducers/index.js +18 -0
  19. package/es/hooks/useFullArguments/index.d.ts +3 -3
  20. package/es/hooks/useFullArguments/types.d.ts +3 -2
  21. package/es/hooks/useIsRenderingRef/index.js +3 -3
  22. package/es/hooks/useProvider/index.d.ts +3 -3
  23. package/es/hooks/useProvider/index.js +3 -3
  24. package/es/hooks/useProvider/types.d.ts +0 -1
  25. package/es/hooks/useReducers/index.d.ts +4 -0
  26. package/es/hooks/useReducers/index.js +13 -0
  27. package/es/hooks/useRuntimeEntity/index.d.ts +1 -1
  28. package/es/hooks/useRuntimeEntity/index.js +6 -5
  29. package/es/hooks/useStatuses/index.d.ts +2 -2
  30. package/es/hooks/useStatuses/index.js +1 -1
  31. package/es/hooks/useUseCase/index.js +14 -13
  32. package/es/hooks/useUseCase/index.test.js +10 -6
  33. package/es/hooks/useUseCase/types.d.ts +11 -14
  34. package/es/methods/initEntityReducers/index.d.ts +2 -2
  35. package/es/methods/triggerWatchers/index.js +4 -9
  36. package/es/types.d.ts +3 -0
  37. package/es/usecases/contextUseCase/index.js +2 -2
  38. package/es/usecases/contextUseCase/types.d.ts +3 -4
  39. package/es/usecases/methodUseCase/index.d.ts +2 -0
  40. package/es/usecases/methodUseCase/index.js +55 -0
  41. package/es/usecases/methodUseCase/types.d.ts +21 -0
  42. package/es/usecases/valueUseCase/index.d.ts +2 -0
  43. package/es/usecases/valueUseCase/index.js +136 -0
  44. package/es/usecases/valueUseCase/types.d.ts +16 -0
  45. package/es/usecases/valueUseCase/types.js +1 -0
  46. package/lib/components/SafeUseCaseFragment/index.js +1 -1
  47. package/lib/components/UseCaseFragment/index.js +4 -3
  48. package/lib/hooks/useArgumentTypes/index.js +3 -4
  49. package/lib/hooks/useContext/index.test.js +2 -2
  50. package/lib/hooks/useContextualItem/index.js +15 -6
  51. package/lib/hooks/useDepsKey/index.js +18 -0
  52. package/lib/hooks/useEntity/index.js +6 -6
  53. package/lib/hooks/useEntityReducers/index.js +30 -0
  54. package/lib/hooks/useIsRenderingRef/index.js +2 -2
  55. package/lib/hooks/useProvider/index.js +4 -6
  56. package/lib/hooks/useReducers/index.js +20 -0
  57. package/lib/hooks/useRuntimeEntity/index.js +8 -5
  58. package/lib/hooks/useStatuses/index.js +1 -1
  59. package/lib/hooks/useUseCase/index.js +18 -15
  60. package/lib/hooks/useUseCase/index.test.js +222 -218
  61. package/lib/methods/triggerWatchers/index.js +5 -9
  62. package/lib/usecases/contextUseCase/index.js +2 -2
  63. package/lib/usecases/methodUseCase/index.js +79 -0
  64. package/lib/usecases/valueUseCase/index.js +198 -0
  65. package/lib/usecases/valueUseCase/types.js +5 -0
  66. package/package.json +45 -40
  67. package/es/hooks/useCompareDeps/index.d.ts +0 -1
  68. package/es/hooks/useCompareDeps/index.js +0 -11
  69. package/es/methods/cacheCall/index.d.ts +0 -2
  70. package/es/methods/cacheCall/index.js +0 -26
  71. package/es/methods/cacheCall/types.d.ts +0 -13
  72. package/es/methods/cacheCalls/index.d.ts +0 -2
  73. package/es/methods/cacheCalls/index.js +0 -8
  74. package/es/methods/captureCalls/index.d.ts +0 -2
  75. package/es/methods/captureCalls/index.js +0 -14
  76. package/es/methods/captureCalls/types.d.ts +0 -4
  77. package/es/methods/compareProperty/index.d.ts +0 -2
  78. package/es/methods/compareProperty/index.js +0 -34
  79. package/es/methods/compareProperty/types.d.ts +0 -3
  80. package/es/methods/hasField/index.d.ts +0 -1
  81. package/es/methods/hasField/index.js +0 -6
  82. package/es/methods/isSameArray/index.d.ts +0 -1
  83. package/es/methods/isSameArray/index.js +0 -14
  84. package/lib/hooks/useCompareDeps/index.js +0 -17
  85. package/lib/methods/cacheCall/index.js +0 -41
  86. package/lib/methods/cacheCalls/index.js +0 -19
  87. package/lib/methods/captureCalls/index.js +0 -23
  88. package/lib/methods/compareProperty/index.js +0 -49
  89. package/lib/methods/hasField/index.js +0 -14
  90. package/lib/methods/isSameArray/index.js +0 -20
  91. /package/es/{methods/cacheCall → entities/matchPropertyFailedResult}/types.js +0 -0
  92. /package/es/{methods/captureCalls/types.js → types.js} +0 -0
  93. /package/es/{methods/compareProperty → usecases/methodUseCase}/types.js +0 -0
  94. /package/lib/{methods/cacheCall → entities/matchPropertyFailedResult}/types.js +0 -0
  95. /package/lib/{methods/captureCalls/types.js → types.js} +0 -0
  96. /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(t){return e.has(t)?e.get(t).value:null},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}},P=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])},S=function(t,r){return"object"===e(t)&&null!==t&&Object.hasOwn(t,r)},C=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=S(t,l),p=S(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),P=0;P<w;P++)e(h[P],g[P],n,o,[].concat(f(u),["".concat(P)]))},R=function(e,t,r){for(var n=function(){var e=s(u[o],2),n=e[0],i=e[1];C(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),S=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),C=s(S,4),_=C[0],A=C[1],D=C[2],U=C[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=P(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=P(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);return(0,u.jsx)(i.Fragment,{children:null===n?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.min.js
5
+ * react-jsx-runtime.production.js
4
6
  *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
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,10 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Fragment } 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);
9
- return _jsx(Fragment, { children: context === null ? null : _jsx(SafeUseCaseFragment, { usecase: usecase, ...props }) });
9
+ const contextValue = useContext(context);
10
+ return _jsx(Fragment, { children: contextValue === null ? null : _jsx(SafeUseCaseFragment, { usecase: usecase, ...props }) });
10
11
  };
@@ -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
  }
@@ -0,0 +1,7 @@
1
+ export interface MatchPropertyFailedResult<T, TValue = unknown> {
2
+ fieldPaths: string[];
3
+ newEntity: T;
4
+ newValue: TValue;
5
+ oldEntity: T;
6
+ oldValue: TValue;
7
+ }
@@ -1,3 +1,3 @@
1
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
1
  import { UseCaseHookParameters } from '../useUseCase/types';
2
+ import { ArgumentTypes } from '../../enums/ArgumentTypes';
3
3
  export declare const useArgumentTypes: (args: UseCaseHookParameters) => ArgumentTypes;
@@ -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
- types |= ArgumentTypes.Entity;
8
+ return ArgumentTypes.Entity;
10
9
  }
11
- return types;
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
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
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 { useCreation, useLatest } from 'ahooks';
1
+ import { useReducers } from '../useReducers';
2
+ import { useCreation, useLatest, useMemoizedFn } from 'ahooks';
2
3
  import { Statuses } from '../../enums/Statuses';
3
- import { cacheCall } from '../../methods/cacheCall';
4
+ import { methodUseCase } from '../../usecases/methodUseCase';
4
5
  export const useContextualItem = (contextItem, statuses, createFactory, depsKey = 0) => {
5
6
  const factoryRef = useLatest(createFactory);
6
- const create = useCreation(() => {
7
+ const { cacheCall } = useReducers(methodUseCase);
8
+ const onCache = useMemoizedFn(() => {
9
+ const { current: currentFactory } = factoryRef;
7
10
  void depsKey;
8
- return cacheCall(factoryRef.current, {
11
+ // 防止在以下 `onCreate()` 多次调用实际 `factory`
12
+ return cacheCall(currentFactory, {
9
13
  onCompare() {
10
14
  return true;
11
15
  },
12
16
  });
13
- }, [depsKey, factoryRef]);
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 create();
20
- }, [statuses, contextItem, create]);
27
+ return onCreate();
28
+ }, [statuses, contextItem, onCreate]);
21
29
  };
@@ -0,0 +1,2 @@
1
+ import { Dependencies } from '../../types';
2
+ export declare const useDepsKey: (deps: Dependencies) => number;
@@ -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.value = runtimeEntity;
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
- export declare const useFullArguments: <T, TReducers extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>, TUseCaseOptions extends object>(args: UseCaseHookParameters, argumentTypes: ArgumentTypes) => FullParameters<T, TReducers, TUseCaseOptions>;
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: unknown[]
9
+ deps: Dependencies
9
10
  ];
@@ -1,7 +1,7 @@
1
- import { useEffect, useRef } from 'react';
1
+ import { useLatest } from 'ahooks';
2
+ import { useEffect } from 'react';
2
3
  export const useIsRenderingRef = () => {
3
- const ref = useRef(true);
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
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
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 = useMemo(() => {
7
+ const contextValue = useCreation(() => {
8
8
  const { createContextValue } = contextUseCase();
9
9
  void entity;
10
10
  return createContextValue(store, reducers, statuses);
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface UseCaseProviderProps {
3
2
  children?: React.ReactNode;
4
3
  with?: UseCaseProvider[];
@@ -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 { useRef } from 'react';
3
+ import { valueUseCase } from '../../usecases/valueUseCase';
3
4
  export const useRuntimeEntity = (store, entityArg, contextEntity, statuses) => {
4
- const prevEntityArgRef = useRef(entityArg);
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 prevEntityArg === entityArg:
14
+ case !changed:
14
15
  return store.value;
15
16
  }
16
- prevEntityArgRef.current = entityArg;
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
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
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 { useArgumentTypes } from '../useArgumentTypes';
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 { useEntity } from '../useEntity';
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 = useCompareDeps(deps);
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.call(null, () => {
122
+ useDeepCompareEffect(() => {
119
123
  if (isFirstRef.current) {
120
124
  return;
121
125
  }
122
- callback();
123
- }, deps);
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 unknown[] ? '.length' | `${'' | `.${number}`}${DotAccessorFieldPath<T[number], NextPathTemplate<TTemplate>>}` : T extends object ? `.${PropertyPath<T, NextPathTemplate<TTemplate>>}` : '' : '';
35
- export type FieldPath<T, TTemplate extends string = PathTemplate> = TTemplate extends `${string}.${string}` ? T extends unknown[] ? FieldPath<T[number], NextPathTemplate<TTemplate>> | 'length' : T extends object ? PropertyPath<T, TTemplate> : never : never;
36
- export type ExtractPropertyType<T, TPath> = TPath extends `${infer TKey}.${infer TSubPath}` ? T extends unknown[] ? ExtractPropertyType<T[number], TKey extends `${number}` ? TSubPath : TPath> : ExtractPropertyType<T[TKey & keyof T], TSubPath> : T extends unknown[] ? TPath extends 'length' ? T[TPath] : TPath extends `${number}` ? T[number] : ExtractPropertyType<T[number], TPath> : T[TPath & keyof T];
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?: unknown[]): T;
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?: unknown[]): ContextualCoreCollection<T, TEntityReducers>;
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?: unknown[]): RootCoreCollection<T, EntityReducers<T, TEntityReducers>>;
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 { ContextualEntityReducers } from '../../usecases/contextUseCase/types';
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>;