@mic-rexjs/usecases-react 3.6.3 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.min.js.LICENSE.txt */
2
- (()=>{var e={698(e,t){"use strict";var n=Symbol.for("react.transitional.element");Symbol.for("react.fragment"),t.jsx=function(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:o,ref:void 0!==t?t:null,props:r}}},848(e,t,n){"use strict";e.exports=n(698)}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var u=t[r]={exports:{}};return e[r](u,u.exports,n),u.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";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,n,r){return(n=function(t){var n=function(t){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=e(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(n)?n:n+""}(n))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.r(r),n.d(r,{UseCaseFragment:()=>N,lifecycleUseCase:()=>q,useProviders:()=>$,useUseCase:()=>L});var u=n(848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u,i,a=[],c=!0,f=!1;try{if(u=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const f=React;var l,s=n.n(f),y=function(e){return c((0,f.useState)(e),1)[0]};!function(e){e[e.None=0]="None",e[e.Entity=2]="Entity"}(l||(l={}));var v=function(e){return c((0,f.useState)(function(){return e}),1)[0]};const b=ahooks,d=usecases;var 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"}(p||(p={}));var O=(0,d.createUseCase)(function(){var e=new Map,t=(0,f.createContext)(null);return function(){return{createContextValue:function(e,t,n){return(n&p.EntityEnabled)===p.EntityEnabled?{store:e,reducers:t,statuses:n}:{reducers:t,statuses:n}},getUseCaseContext:function(n){return e.has(n)?e.get(n).value:t},registerUseCase:function(n,r){if(e.has(n)){var o=e.get(n),u=o.value,i=o.times;return e.set(n,{value:u,times:i+1}),u}if((r&l.Entity)!==l.Entity)return t;var a=(0,f.createContext)(null);return e.set(n,{value:a,times:1}),a},unregisterUseCase:function(t,n){if((n&l.Entity)!==l.Entity)return!1;if(!e.has(t))return!1;var r=e.get(t),o=r.value,u=r.times;return 1===u?e.delete(t):e.set(t,{value:o,times:u-1}),!0}}}}),E=function(e,t){return y(function(){return e(t)})};function h(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var g=function(){var t=function(t){return"object"===e(t)&&null!==t},n=function(e,n){return!!t(e)&&Object.hasOwn(e,n)};return{hasField:n,isObject:t,isEqual:function(e,r,o){if(e===r)return!0;var u=t(e),i=t(r),a=u?Object.keys(e):[],c=i?Object.keys(r):[],f="function"==typeof o;if(!u&&!i)return!1;for(var l=!0,s=a.length,y=[].concat(h(a),h(c)),v=0,b=y.length;v<b;v++){var d=y[v],p=a.includes(d);if(!(v>=s&&p)){var O=n(e,d),E=n(r,d),g=O?e[d]:void 0,j=E?r[d]:void 0;if(!O||!E||g!==j){if(l=!1,!f)break;o(d,j,g)}}}return l},matchProperty:function(e,t,r,o){var u=!0,i=r,a=[{fieldPaths:[],newEntity:t,newValue:t,oldEntity:e,oldValue:e}];do{var f=a.shift(),l=f.oldValue,s=f.newValue,y=f.fieldPaths,v=c(i.match(/^([^.]+)\.(.+)$/)||[],3),b=v[1],d=void 0===b?i:b,p=v[2],O=void 0===p?"":p,E=n(l,d),g=n(s,d);if(E||g){var j=c(E?[l[d]]:[],1)[0],m=c(g?[s[d]]:[],1)[0],w={fieldPaths:[].concat(h(y),[d]),newEntity:t,newValue:m,oldEntity:e,oldValue:j};if(O){i=O,a.push(w);continue}if(m===j)continue;u=!1,null==o||o(w)}else if(!/^\d+^/.test(d))for(var P=Array.isArray(l)?l:[],C=Array.isArray(s)?s:[],S=P.length,x=C.length,R=Math.max(S,x),U=0;U<R;U++)a.push({fieldPaths:[].concat(h(y),["".concat(U)]),newEntity:t,newValue:C[U],oldEntity:e,oldValue:P[U]})}while(a.length>0);return u}}},j=function(e){var t=(0,f.useRef)(0),n=(0,b.usePrevious)(e),r=(0,E(g).isEqual)(e,n);return(0,b.useMemoizedFn)(function(){var e=t.current;if(r)return e;var n=e+1;return t.current=n,n})()},m=function(e){var t=j(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e]),n=(0,b.useMemoizedFn)(function(){return e()});return(0,b.useCreation)(function(){return n()},[t,n])},w=function(e){var t=(0,f.useRef)(!0),n=(e&p.EntityRootEnabled)===p.EntityRootEnabled;return m(function(){if(!n)return t.current=!0,!1;var e=t.current;return t.current=!1,e})},P=(0,d.createUseCase)(function(){var e=new Map,t=null;return function(){return{deleteLifecycleEvents:function(t){return e.delete(t)},setLifecycleEvents:function(e){t=e},getLifecycleEvents:function(t){return e.get(t)||{}},bindLifecycleEventsKey:function(n){if(null===t)return{};var r=t;return t=null,e.set(n,r),r}}}}),C=function(){var e=g().isEqual,t=function(t,n){var r,o=n||{},u=o.onShouldCache,i=void 0===u?function(){return!0}:u,a=o.onCompare,c=void 0===a?function(t,n){return e(t,n)}:a;return function(){for(var e=i(),n=arguments.length,o=new Array(n),u=0;u<n;u++)o[u]=arguments[u];if(r&&e){var a=r,f=a.parameters,l=a.returnValue;if(c(f,o))return l}var s=t.apply(void 0,o);return e&&(r={parameters:o,returnValue:s}),s}};return{cacheCall:t,cacheCalls:function(e,n){var r={};return Object.entries(e).forEach(function(e){var o=c(e,2),u=o[0],i=o[1];r[u]=t(i,n)}),r},captureCalls:function(e,t){var n={};return Object.keys(e).forEach(function(r){var o=e[r];n[r]="function"!=typeof o?o:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return t(r,n)}}),n}}},S=function(e,t,n){var r=j(arguments.length>3&&void 0!==arguments[3]?arguments[3]:[]),o=(0,b.useLatest)(n),u=(0,b.useMemoizedFn)(function(){return(0,C().cacheCall)(o.current,{onCompare:function(){return!0}})}),i=(0,b.useCreation)(function(){return u()},[r,u]);return(0,b.useCreation)(function(){return(t&p.RootEnabled)!==p.RootEnabled&&e?e:i()},[t,e,i])};function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function R(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?x(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):x(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var U=["watch","onChange","options"];function A(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function D(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?A(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):A(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var M=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,d.entityUseCase)(),n=e.onInit;return D(D({},t),{},{initEntity:function(e){return"function"!=typeof n?e:n(e)}})},V=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o="function"==typeof e,u=w(n),i=(0,f.useRef)([]),a=((0,f.useContext)(t)||{}).store,l=void 0===a?null:a,s=(n&p.EntityRootEnabled)===p.EntityRootEnabled,y=c((0,f.useState)(function(){return new d.EntityStore(void 0)}),1)[0],v=(0,b.usePrevious)(e,function(){return!0});return m(function(){switch(!0){case!s:case o:return}u?y.initValue(e):e!==v&&y.setValue(e)}),S(l,n,function(){return s&&o&&(t=i.current,i.current=function(e,t,n,r){var o=!1,u=0,i=[],a=g(),c=a.isObject,f=a.isEqual,l=function(t){return!r||o?t:e.initValue(t)},s=(0,d.createEntityReducers)(e,M,{onInit:function(e){return t(e)},onCreate:function(e,t){var r=u,o=c(t),a=o&&Array.isArray(t);if(u++,i[r]=e,!o||a)return(0,d.createEntity)(t,e);var l={},s=n[r];return f(s,e,function(t){var n=Object.getOwnPropertyDescriptor(e,t)||null;null!==n&&(l[t]=n)}),(0,d.createEntity)(t,Object.defineProperties({},l))},onGenerate:function(t,n){if(void 0===n)return[t,n];var r=(0,d.createEntity)(t,n);return e.setValue(r),[r,n]},onYield:function(e){return l(e)},onReturn:function(t){var n=l(t);return e.setValue(n),n}}).initEntity;return e.disableWatchers(),s(),e.enableWatchers(),o=!0,i}(y,e,t,u)),y;var t},r)};function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var L=function(){for(var n,r=(n=(0,b.useLatest)(!0),(0,f.useEffect)(function(){n.current=!1}),n),u=arguments.length,i=new Array(u),a=0;a<u;a++)i[a]=arguments[a];var j=function(t){return y(function(){return"function"===e(c(t,2)[1])?l.Entity:l.None})}(i),x=function(e,t){var n=c(e,4),r=n[0],o=n[1],u=n[2],i=n[3];return(t&l.Entity)!==l.Entity?[null,r,o||{},u||[]]:[r,o,u||{},i||[]]}(i,j),A=c(x,4),D=A[0],M=A[1],L=A[2],F=A[3],I=v(M),_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.None,n=y(function(){return(0,O().registerUseCase)(e,t)});return(0,b.useUnmount)(function(){(0,O().unregisterUseCase)(e,t)}),n}(I,j),z=_,N=function(e,t){var n=(0,f.useContext)(e);return(0,b.useCreation)(function(){var e=p.None,r=(n||{}).store;return(t&l.Entity)===l.Entity&&(e|=p.EntityRootEnabled),e|=n?p.ContextEnabled:p.RootEnabled,r&&(e|=p.EntityEnabled),e},[t,n])}(_,j),T=V(D,z,N,F),q=function(e,t,n,r,u){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],a=(0,b.useLatest)(u),c=((0,f.useContext)(t)||{}).reducers,l=void 0===c?null:c,s=(r&p.EntityRootEnabled)===p.EntityRootEnabled;return S(l,r,function(){return function(){var t=(0,C().captureCalls)(u,function(e,t){var n,r,o;return null===(r=(o=a.current)[e])||void 0===r?void 0:(n=r).call.apply(n,[o].concat(h(t)))});if(!s)return e(t);var r=t,i=(r.watch,r.onChange,r.options),c=o(r,U);return(0,d.createEntityReducers)(n,e,R(R(R({},c),i),{},{onGenerate:function(e,t){return t}}))}()},i)}(I,_,T,N,L,F),$=function(e,t,n){var r=e.value,o=(0,b.useUpdate)(),u=w(t),i=(0,b.useLatest)(n),a=(0,f.useRef)(r),l=(t&p.EntityEnabled)===p.EntityEnabled,s=(t&p.EntityRootEnabled)===p.EntityRootEnabled,v=E(function(){return P()}),O=v.bindLifecycleEventsKey,h=v.getLifecycleEvents,j=v.deleteLifecycleEvents,C=y(function(){return(0,(0,d.utilsUseCase)().createKey)()}),S=(0,b.useMemoizedFn)(function(e,t){var n=i.current.watch;n&&function(e,t,n){for(var r,o=g().matchProperty,u=function(){var e=a[i],u=(r=c(e,2))[0],f=r[1];o(n,t,u,function(e){f(e)})},i=0,a=Object.entries(e);i<a.length;i++)u()}(n,e,t)}),x=(0,b.useMemoizedFn)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.current;if(l&&a.current!==e){var n=h(C).onUpdate;a.current=e,S(e,t),null==n||n(e,t)}}),R=(0,b.useMemoizedFn)(function(e,t){var n=i.current.onChange,r=h(C).onChange;x(e,t),null==n||n(e,t),null==r||r(e,t),s&&o()});return m(function(){if(s){var e=O(C).onBind;u&&(null==e||e(r))}}),(0,b.useUnmount)(function(){if(s){var t=e.value,n=h(C).onUnbind;j(C),null==n||n(t)}}),m(function(){l&&e.watch(R)},[e,l,R]),(0,f.useEffect)(function(){return function(){e.unwatch(R)}},[e,l,R]),(0,b.useUpdateEffect)(function(){x()},[r,x]),r}(T,N,L),B=function(e,t,n,r){var o=n.value,u=(0,b.useCreation)(function(){return(0,O().createContextValue)(n,r,e)},[e,o,n,r]),i=(0,b.useLatest)(u);return v(function(e){var n=e.children,r=e.with,o=void 0===r?[]:r,u=t.Provider,a=i.current,c=Array.isArray(o)?o:[o];return s().createElement(u,{value:a},c.reduceRight(function(e,t){return s().createElement(t,{},e)},n))})}(N,_,T,q);return(0,b.useCreation)(function(){if((N&p.EntityEnabled)!==p.EntityEnabled)return q;var n=(0,C().cacheCalls)(q,{onShouldCache:function(){return r.current}}),o=null===$,u=Array.isArray($),i="object"!==e($)||o||u?$:function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?k(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},$);return[i,n,B]},[N,$,q,B,r])},F=function(e){var t=e.usecase,n=e.watch,r=e.onMount,o=e.onUpdate,i=e.onChange,a=c(L(t,{watch:n,onChange:i}),1)[0],l=(0,b.useMemoizedFn)(function(){null==o||o(a)});return(0,b.useMount)(function(){null==r||r(a)}),(0,b.useUpdateEffect)(function(){l()},[a,l]),(0,u.jsx)(f.Fragment,{})};function I(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?I(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var z=["usecase"],N=function(e){var t=e.usecase,n=o(e,z),r=(0,L(O).getUseCaseContext)(t),i=(0,f.useContext)(r);return(0,u.jsx)(f.Fragment,{children:null===i?null:(0,u.jsx)(F,_({usecase:t},n))})};function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.onBind,r=e.onUnbind,o=e.onChange,u=e.onUpdate,i=P().setLifecycleEvents,a=(0,d.entityUseCase)();return i({onBind:n,onUnbind:r,onChange:o,onUpdate:u}),function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?T(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},a)},$=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=j(t),o=(0,b.useLatest)(t);return(0,b.useCreation)(function(){return o.current},[r,o])}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
2
+ (()=>{var e={698(e,t){"use strict";var n=Symbol.for("react.transitional.element");Symbol.for("react.fragment"),t.jsx=function(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:o,ref:void 0!==t?t:null,props:r}}},848(e,t,n){"use strict";e.exports=n(698)}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var u=t[r]={exports:{}};return e[r](u,u.exports,n),u.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";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,n,r){return(n=function(t){var n=function(t){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=e(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(n)?n:n+""}(n))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.r(r),n.d(r,{UseCaseFragment:()=>N,lifecycleUseCase:()=>q,useProviders:()=>$,useUseCase:()=>L});var u=n(848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u,i,a=[],c=!0,l=!1;try{if(u=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw o}}return a}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const l=React;var f,s=n.n(l),y=function(e){return c((0,l.useState)(e),1)[0]};!function(e){e[e.None=0]="None",e[e.Entity=2]="Entity"}(f||(f={}));var v=function(e){return c((0,l.useState)(function(){return e}),1)[0]};const b=ahooks,d=usecases;var 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"}(p||(p={}));var O=(0,d.createUseCase)(function(){var e=new Map,t=(0,l.createContext)(null);return function(){return{createContextValue:function(e,t,n){return(n&p.EntityEnabled)===p.EntityEnabled?{store:e,reducers:t,statuses:n}:{reducers:t,statuses:n}},getUseCaseContext:function(n){return e.has(n)?e.get(n).value:t},registerUseCase:function(n,r){if(e.has(n)){var o=e.get(n),u=o.value,i=o.times;return e.set(n,{value:u,times:i+1}),u}if((r&f.Entity)!==f.Entity)return t;var a=(0,l.createContext)(null);return e.set(n,{value:a,times:1}),a},unregisterUseCase:function(t,n){if((n&f.Entity)!==f.Entity)return!1;if(!e.has(t))return!1;var r=e.get(t),o=r.value,u=r.times;return 1===u?e.delete(t):e.set(t,{value:o,times:u-1}),!0}}}}),E=function(e,t){return y(function(){return e(t)})};function h(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var g=function(){var t=function(t){return"object"===e(t)&&null!==t},n=function(e,n){return!!t(e)&&Object.hasOwn(e,n)};return{hasField:n,isObject:t,isEqual:function(e,r,o){if(e===r)return!0;var u=t(e),i=t(r),a=u?Object.keys(e):[],c=i?Object.keys(r):[],l="function"==typeof o;if(!u&&!i)return!1;for(var f=!0,s=a.length,y=[].concat(h(a),h(c)),v=0,b=y.length;v<b;v++){var d=y[v],p=a.includes(d);if(!(v>=s&&p)){var O=n(e,d),E=n(r,d),g=O?e[d]:void 0,j=E?r[d]:void 0;if(!O||!E||g!==j){if(f=!1,!l)break;o(d,j,g)}}}return f},matchProperty:function(e,t,r,o){var u=!0,i=r,a=[{fieldPaths:[],newEntity:t,newValue:t,oldEntity:e,oldValue:e}];do{var l=a.shift(),f=l.oldValue,s=l.newValue,y=l.fieldPaths,v=c(i.match(/^([^.]+)\.(.+)$/)||[],3),b=v[1],d=void 0===b?i:b,p=v[2],O=void 0===p?"":p,E=n(f,d),g=n(s,d);if(E||g){var j=c(E?[f[d]]:[],1)[0],m=c(g?[s[d]]:[],1)[0],w={fieldPaths:[].concat(h(y),[d]),newEntity:t,newValue:m,oldEntity:e,oldValue:j};if(O){i=O,a.push(w);continue}if(m===j)continue;u=!1,null==o||o(w)}else if(!/^\d+^/.test(d))for(var P=Array.isArray(f)?f:[],C=Array.isArray(s)?s:[],S=P.length,x=C.length,A=Math.max(S,x),R=0;R<A;R++)a.push({fieldPaths:[].concat(h(y),["".concat(R)]),newEntity:t,newValue:C[R],oldEntity:e,oldValue:P[R]})}while(a.length>0);return u}}},j=function(e){var t=(0,l.useRef)(0),n=(0,b.usePrevious)(e),r=(0,E(g).isEqual)(e,n);return(0,b.useMemoizedFn)(function(){var e=t.current;if(r)return e;var n=e+1;return t.current=n,n})()},m=function(e){var t=j(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e]),n=(0,b.useMemoizedFn)(function(){return e()});return(0,b.useCreation)(function(){return n()},[t,n])},w=function(e){var t=(0,l.useRef)(!0),n=(e&p.EntityRootEnabled)===p.EntityRootEnabled;return m(function(){if(!n)return t.current=!0,!1;var e=t.current;return t.current=!1,e})},P=(0,d.createUseCase)(function(){var e=new Map,t=null;return function(){return{deleteLifecycleEvents:function(t){return e.delete(t)},setLifecycleEvents:function(e){t=e},getLifecycleEvents:function(t){return e.get(t)||{}},bindLifecycleEventsKey:function(n){if(null===t)return{};var r=t;return t=null,e.set(n,r),r}}}}),C=function(){var e=g().isEqual,t=function(t,n){var r,o=n||{},u=o.onShouldCache,i=void 0===u?function(){return!0}:u,a=o.onCompare,c=void 0===a?function(t,n){return e(t,n)}:a;return function(){for(var e=i(),n=arguments.length,o=new Array(n),u=0;u<n;u++)o[u]=arguments[u];if(r&&e){var a=r,l=a.parameters,f=a.returnValue;if(c(l,o))return f}var s=t.apply(void 0,o);return e&&(r={parameters:o,returnValue:s}),s}};return{cacheCall:t,cacheCalls:function(e,n){var r={};return Object.entries(e).forEach(function(e){var o=c(e,2),u=o[0],i=o[1];r[u]=t(i,n)}),r},captureCalls:function(e,t){var n={};return Object.keys(e).forEach(function(r){var o=e[r];n[r]="function"!=typeof o?o:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return t(r,n)}}),n}}},S=function(e,t,n){var r=j(arguments.length>3&&void 0!==arguments[3]?arguments[3]:[]),o=(0,b.useLatest)(n),u=(0,b.useMemoizedFn)(function(){return(0,C().cacheCall)(o.current,{onCompare:function(){return!0}})}),i=(0,b.useCreation)(function(){return u()},[r,u]);return(0,b.useCreation)(function(){return(t&p.RootEnabled)!==p.RootEnabled&&e?e:i()},[t,e,i])};function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function A(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?x(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):x(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var R=["watch","onChange","options"];function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function D(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?U(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):U(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var M=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,d.entityUseCase)(),n=e.onInit;return D(D({},t),{},{initEntity:function(e){return"function"!=typeof n?e:n(e)}})},V=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o="function"==typeof e,u=w(n),i=(0,l.useRef)([]),a=((0,l.useContext)(t)||{}).store,f=void 0===a?null:a,s=(n&p.EntityRootEnabled)===p.EntityRootEnabled,y=c((0,l.useState)(function(){return new d.EntityStore(void 0)}),1)[0],v=(0,b.usePrevious)(e,function(){return!0});return m(function(){switch(!0){case!s:case o:return}u?y.initValue(e):e!==v&&y.setValue(e)}),S(f,n,function(){return s&&o&&(t=i.current,i.current=function(e,t,n,r){var o=!1,u=0,i=[],a=g(),c=a.isObject,l=a.isEqual,f=function(t){return!r||o?t:e.initValue(t)},s=(0,d.createEntityReducers)(e,M,{onInit:function(e){return t(e)},onCreate:function(e,t){var r=u,o=c(t),a=o&&Array.isArray(t);if(u++,i[r]=e,!o||a)return(0,d.createEntity)(t,e);var f={},s=n[r];return l(s,e,function(t){var n=Object.getOwnPropertyDescriptor(e,t)||null;null!==n&&(f[t]=n)}),(0,d.createEntity)(t,Object.defineProperties({},f))},onGenerate:function(t,n){if(void 0===n)return[t,n];var r=(0,d.createEntity)(t,n);return e.setValue(r),[r,n]},onYield:function(e){return f(e)},onReturn:function(t){var n=f(t);return e.setValue(n),n}}).initEntity;return e.disableWatchers(),s(),e.enableWatchers(),o=!0,i}(y,e,t,u)),y;var t},r)};function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var L=function(){for(var n,r=(n=(0,b.useLatest)(!0),(0,l.useEffect)(function(){n.current=!1}),n),u=arguments.length,i=new Array(u),a=0;a<u;a++)i[a]=arguments[a];var j=function(t){return y(function(){return"function"===e(c(t,2)[1])?f.Entity:f.None})}(i),x=function(e,t){var n=c(e,4),r=n[0],o=n[1],u=n[2],i=n[3];return(t&f.Entity)!==f.Entity?[null,r,o||{},u||[]]:[r,o,u||{},i||[]]}(i,j),U=c(x,4),D=U[0],M=U[1],L=U[2],F=U[3],I=v(M),_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.None,n=y(function(){return(0,O().registerUseCase)(e,t)});return(0,b.useUnmount)(function(){(0,O().unregisterUseCase)(e,t)}),n}(I,j),z=_,N=function(e,t){var n=(0,l.useContext)(e);return(0,b.useCreation)(function(){var e=p.None,r=(n||{}).store;return(t&f.Entity)===f.Entity&&(e|=p.EntityRootEnabled),e|=n?p.ContextEnabled:p.RootEnabled,r&&(e|=p.EntityEnabled),e},[t,n])}(_,j),T=V(D,z,N,F),q=function(e,t,n,r,u){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],a=(0,b.useLatest)(u),c=((0,l.useContext)(t)||{}).reducers,f=void 0===c?null:c,s=(r&p.EntityRootEnabled)===p.EntityRootEnabled;return S(f,r,function(){return function(){var t=(0,C().captureCalls)(u,function(e,t){var n,r,o;return null===(r=(o=a.current)[e])||void 0===r?void 0:(n=r).call.apply(n,[o].concat(h(t)))});if(!s)return e(t);var r=t,i=(r.watch,r.onChange,r.options),c=o(r,R);return(0,d.createEntityReducers)(n,e,A(A(A({},c),i),{},{onGenerate:function(e,t){return t}}))}()},i)}(I,_,T,N,L,F),$=function(e,t,n){var r=e.value,o=(0,b.useUpdate)(),u=w(t),i=(0,b.useLatest)(n),a=(0,l.useRef)(r),f=(t&p.EntityEnabled)===p.EntityEnabled,s=(t&p.EntityRootEnabled)===p.EntityRootEnabled,v=E(function(){return P()}),O=v.bindLifecycleEventsKey,h=v.getLifecycleEvents,j=v.deleteLifecycleEvents,C=y(function(){return(0,(0,d.utilsUseCase)().createKey)()}),S=(0,b.useMemoizedFn)(function(e,t){var n=i.current.watch;n&&function(e,t,n){for(var r,o=g().matchProperty,u=function(){var e=a[i],u=(r=c(e,2))[0],l=r[1];o(n,t,u,function(e){l(e)})},i=0,a=Object.entries(e);i<a.length;i++)u()}(n,e,t)}),x=(0,b.useMemoizedFn)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.current;if(f&&a.current!==e){var n=h(C),o=n.onUpdate,u=n.onAdopt,i=n.onDiscard;a.current=e,S(e,t),null==i||i(t),null==u||u(e,t),null==o||o(e,t)}}),A=(0,b.useMemoizedFn)(function(e,t){var n=i.current.onChange,r=h(C).onChange;x(e,t),null==n||n(e,t),null==r||r(e,t),s&&o()});return m(function(){if(s){var e=O(C),t=e.onBind,n=e.onAdopt;u&&(null==t||t(r),null==n||n(r))}}),(0,b.useUnmount)(function(){if(s){var t=e.value,n=h(C),r=n.onUnbind,o=n.onDiscard;j(C),null==r||r(t),null==o||o(t)}}),m(function(){f&&e.watch(A)},[e,f,A]),(0,l.useEffect)(function(){return function(){e.unwatch(A)}},[e,f,A]),(0,b.useUpdateEffect)(function(){x()},[r,x]),r}(T,N,L),B=function(e,t,n,r){var o=n.value,u=(0,b.useCreation)(function(){return(0,O().createContextValue)(n,r,e)},[e,o,n,r]),i=(0,b.useLatest)(u);return v(function(e){var n=e.children,r=e.with,o=void 0===r?[]:r,u=t.Provider,a=i.current,c=Array.isArray(o)?o:[o];return s().createElement(u,{value:a},c.reduceRight(function(e,t){return s().createElement(t,{},e)},n))})}(N,_,T,q);return(0,b.useCreation)(function(){if((N&p.EntityEnabled)!==p.EntityEnabled)return q;var n=(0,C().cacheCalls)(q,{onShouldCache:function(){return r.current}}),o=null===$,u=Array.isArray($),i="object"!==e($)||o||u?$:function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?k(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},$);return[i,n,B]},[N,$,q,B,r])},F=function(e){var t=e.usecase,n=e.watch,r=e.onMount,o=e.onUpdate,i=e.onChange,a=c(L(t,{watch:n,onChange:i}),1)[0],f=(0,b.useMemoizedFn)(function(){null==o||o(a)});return(0,b.useMount)(function(){null==r||r(a)}),(0,b.useUpdateEffect)(function(){f()},[a,f]),(0,u.jsx)(l.Fragment,{})};function I(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?I(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var z=["usecase"],N=function(e){var t=e.usecase,n=o(e,z),r=(0,L(O).getUseCaseContext)(t),i=(0,l.useContext)(r);return(0,u.jsx)(l.Fragment,{children:null===i?null:(0,u.jsx)(F,_({usecase:t},n))})};function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.onAdopt,r=e.onDiscard,o=e.onBind,u=e.onUnbind,i=e.onChange,a=e.onUpdate,c=P().setLifecycleEvents,l=(0,d.entityUseCase)();return c({onAdopt:n,onDiscard:r,onBind:o,onUnbind:u,onChange:i,onUpdate:a}),function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?T(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},l)},$=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=j(t),o=(0,b.useLatest)(t);return(0,b.useCreation)(function(){return o.current},[r,o])}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
@@ -45,9 +45,13 @@ export const useEntity = (store, statuses, options) => {
45
45
  return;
46
46
  }
47
47
  const _getLifecycleEvents = getLifecycleEvents(lifecycleKey),
48
- onUpdate = _getLifecycleEvents.onUpdate;
48
+ onUpdate = _getLifecycleEvents.onUpdate,
49
+ onAdopt = _getLifecycleEvents.onAdopt,
50
+ onDiscard = _getLifecycleEvents.onDiscard;
49
51
  prevEntityRef.current = newEntity;
50
52
  onTriggerWatchers(newEntity, oldEntity);
53
+ onDiscard === null || onDiscard === void 0 || onDiscard(oldEntity);
54
+ onAdopt === null || onAdopt === void 0 || onAdopt(newEntity, oldEntity);
51
55
  onUpdate === null || onUpdate === void 0 || onUpdate(newEntity, oldEntity);
52
56
  });
53
57
  const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
@@ -68,11 +72,13 @@ export const useEntity = (store, statuses, options) => {
68
72
  return;
69
73
  }
70
74
  const _bindLifecycleEventsK = bindLifecycleEventsKey(lifecycleKey),
71
- onBind = _bindLifecycleEventsK.onBind;
75
+ onBind = _bindLifecycleEventsK.onBind,
76
+ onAdopt = _bindLifecycleEventsK.onAdopt;
72
77
  if (!isInitializing) {
73
78
  return;
74
79
  }
75
80
  onBind === null || onBind === void 0 || onBind(entity);
81
+ onAdopt === null || onAdopt === void 0 || onAdopt(entity);
76
82
  });
77
83
  useUnmount(() => {
78
84
  if (!entityRootEnabled) {
@@ -81,9 +87,11 @@ export const useEntity = (store, statuses, options) => {
81
87
  // 要使用最新的 `entity`
82
88
  const currentEntity = store.value;
83
89
  const _getLifecycleEvents3 = getLifecycleEvents(lifecycleKey),
84
- onUnbind = _getLifecycleEvents3.onUnbind;
90
+ onUnbind = _getLifecycleEvents3.onUnbind,
91
+ onDiscard = _getLifecycleEvents3.onDiscard;
85
92
  deleteLifecycleEvents(lifecycleKey);
86
93
  onUnbind === null || onUnbind === void 0 || onUnbind(currentEntity);
94
+ onDiscard === null || onDiscard === void 0 || onDiscard(currentEntity);
87
95
  });
88
96
  /**
89
97
  * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
@@ -2103,6 +2103,64 @@ describe('useUseCase', () => {
2103
2103
  expect(onUnbind).toHaveBeenCalledWith(100);
2104
2104
  });
2105
2105
  });
2106
+ test('`onAdopt` event should be called when entity change', () => {
2107
+ const onAdopt = jest.fn((newEntity, oldeEntity) => {
2108
+ void newEntity;
2109
+ void oldeEntity;
2110
+ });
2111
+ const testUseCase = () => {
2112
+ const lifecycleReducers = lifecycleUseCase({
2113
+ onAdopt
2114
+ });
2115
+ return {
2116
+ ...lifecycleReducers
2117
+ };
2118
+ };
2119
+ const _renderHook40 = renderHook(() => {
2120
+ return useUseCase(5, testUseCase);
2121
+ }),
2122
+ result = _renderHook40.result;
2123
+ const current = result.current;
2124
+ const _current0 = _slicedToArray(current, 2),
2125
+ setEntity = _current0[1].setEntity;
2126
+ expect(onAdopt).toHaveBeenCalledTimes(1);
2127
+ expect(onAdopt).toHaveBeenCalledWith(5);
2128
+ act(() => {
2129
+ setEntity(100);
2130
+ });
2131
+ expect(onAdopt).toHaveBeenCalledTimes(2);
2132
+ expect(onAdopt).toHaveBeenCalledWith(100, 5);
2133
+ });
2134
+ test('`onDiscard` event should be called when component unmount', () => {
2135
+ const onDiscard = jest.fn(entity => {
2136
+ void entity;
2137
+ });
2138
+ const testUseCase = () => {
2139
+ const lifecycleReducers = lifecycleUseCase({
2140
+ onDiscard
2141
+ });
2142
+ return {
2143
+ ...lifecycleReducers
2144
+ };
2145
+ };
2146
+ const _renderHook41 = renderHook(() => {
2147
+ return useUseCase(5, testUseCase);
2148
+ }),
2149
+ result = _renderHook41.result,
2150
+ unmount = _renderHook41.unmount;
2151
+ const current = result.current;
2152
+ const _current1 = _slicedToArray(current, 2),
2153
+ setEntity = _current1[1].setEntity;
2154
+ expect(onDiscard).toHaveBeenCalledTimes(0);
2155
+ act(() => {
2156
+ setEntity(100);
2157
+ });
2158
+ expect(onDiscard).toHaveBeenCalledTimes(1);
2159
+ expect(onDiscard).toHaveBeenCalledWith(5);
2160
+ unmount();
2161
+ expect(onDiscard).toHaveBeenCalledTimes(2);
2162
+ expect(onDiscard).toHaveBeenCalledWith(100);
2163
+ });
2106
2164
  describe('`useUseCase` should work the same as `useContextualCoreCollection`', () => {
2107
2165
  test('Provider should be returned in child component', () => {
2108
2166
  const onCore = jest.fn();
@@ -2663,38 +2721,38 @@ describe('useUseCase', () => {
2663
2721
  });
2664
2722
  describe('`useUseCase` should work the same as `useReducers`', () => {
2665
2723
  test('`entity` should equal `defaultFile`', () => {
2666
- const _renderHook40 = renderHook(() => {
2724
+ const _renderHook42 = renderHook(() => {
2667
2725
  return useUseCase(mathUseCase);
2668
2726
  }),
2669
- result = _renderHook40.result;
2727
+ result = _renderHook42.result;
2670
2728
  const reducers = result.current;
2671
2729
  expect(Array.isArray(reducers)).toBe(false);
2672
2730
  });
2673
2731
  test('returned reducer should work', () => {
2674
- const _renderHook41 = renderHook(() => {
2732
+ const _renderHook43 = renderHook(() => {
2675
2733
  return useUseCase(mathUseCase);
2676
2734
  }),
2677
- result = _renderHook41.result;
2735
+ result = _renderHook43.result;
2678
2736
  const reducers = result.current;
2679
2737
  const add = reducers.add;
2680
2738
  expect(add(1, 2)).toBe(3);
2681
2739
  });
2682
2740
  test('`usecase` should be called only once if deps has not provided', () => {
2683
2741
  const mockUseCase = jest.fn(mathUseCase);
2684
- const _renderHook42 = renderHook(() => {
2742
+ const _renderHook44 = renderHook(() => {
2685
2743
  return useUseCase(mockUseCase);
2686
2744
  }),
2687
- rerender = _renderHook42.rerender;
2745
+ rerender = _renderHook44.rerender;
2688
2746
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2689
2747
  rerender();
2690
2748
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2691
2749
  });
2692
2750
  test('`usecase` should be called only once if deps has not changed', () => {
2693
2751
  const mockUseCase = jest.fn(mathUseCase);
2694
- const _renderHook43 = renderHook(() => {
2752
+ const _renderHook45 = renderHook(() => {
2695
2753
  return useUseCase(mockUseCase, {}, [1, 'x']);
2696
2754
  }),
2697
- rerender = _renderHook43.rerender;
2755
+ rerender = _renderHook45.rerender;
2698
2756
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2699
2757
  rerender();
2700
2758
  expect(mockUseCase).toHaveBeenCalledTimes(1);
@@ -2702,10 +2760,10 @@ describe('useUseCase', () => {
2702
2760
  test('`usecase` should be called if deps has changed', () => {
2703
2761
  let i = 0;
2704
2762
  const mockUseCase = jest.fn(mathUseCase);
2705
- const _renderHook44 = renderHook(() => {
2763
+ const _renderHook46 = renderHook(() => {
2706
2764
  return useUseCase(mockUseCase, {}, [i++, 'x']);
2707
2765
  }),
2708
- rerender = _renderHook44.rerender;
2766
+ rerender = _renderHook46.rerender;
2709
2767
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2710
2768
  rerender();
2711
2769
  expect(mockUseCase).toHaveBeenCalledTimes(2);
@@ -2789,12 +2847,12 @@ describe('useUseCase', () => {
2789
2847
  expect(subtractionReducer).toHaveReturnedWith(4);
2790
2848
  });
2791
2849
  test('`options.extraValue` should be added after call `add` method', () => {
2792
- const _renderHook45 = renderHook(() => {
2850
+ const _renderHook47 = renderHook(() => {
2793
2851
  return useUseCase(mathUseCase, {
2794
2852
  extraValue: 5
2795
2853
  });
2796
2854
  }),
2797
- result = _renderHook45.result;
2855
+ result = _renderHook47.result;
2798
2856
  const reducers = result.current;
2799
2857
  const add = reducers.add;
2800
2858
  expect(add(1, 2)).toBe(8);
@@ -2802,7 +2860,7 @@ describe('useUseCase', () => {
2802
2860
  test('when `options` has changed, it should not trigger update', () => {
2803
2861
  const onUpdate = jest.fn();
2804
2862
  const onDeepUpdate = jest.fn();
2805
- const _renderHook46 = renderHook(() => {
2863
+ const _renderHook48 = renderHook(() => {
2806
2864
  const _useState7 = useState(0),
2807
2865
  _useState8 = _slicedToArray(_useState7, 2),
2808
2866
  extraValue = _useState8[0],
@@ -2818,7 +2876,7 @@ describe('useUseCase', () => {
2818
2876
  }, [reducers]);
2819
2877
  return setExtraValue;
2820
2878
  }),
2821
- result = _renderHook46.result;
2879
+ result = _renderHook48.result;
2822
2880
  expect(onUpdate).toHaveBeenCalledTimes(0);
2823
2881
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2824
2882
  act(() => {
@@ -2830,7 +2888,7 @@ describe('useUseCase', () => {
2830
2888
  test('when `deps` change, it should update reducers', () => {
2831
2889
  const onUpdate = jest.fn();
2832
2890
  const onDeepUpdate = jest.fn();
2833
- const _renderHook47 = renderHook(() => {
2891
+ const _renderHook49 = renderHook(() => {
2834
2892
  const _useState9 = useState(0),
2835
2893
  _useState0 = _slicedToArray(_useState9, 2),
2836
2894
  extraValue = _useState0[0],
@@ -2846,7 +2904,7 @@ describe('useUseCase', () => {
2846
2904
  }, [reducers]);
2847
2905
  return setExtraValue;
2848
2906
  }),
2849
- result = _renderHook47.result;
2907
+ result = _renderHook49.result;
2850
2908
  expect(onUpdate).toHaveBeenCalledTimes(0);
2851
2909
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2852
2910
  act(() => {
@@ -2858,7 +2916,7 @@ describe('useUseCase', () => {
2858
2916
  test('empty `deps` should not update reducers', () => {
2859
2917
  const onUpdate = jest.fn();
2860
2918
  const onDeepUpdate = jest.fn();
2861
- const _renderHook48 = renderHook(() => {
2919
+ const _renderHook50 = renderHook(() => {
2862
2920
  const _useState1 = useState(0),
2863
2921
  _useState10 = _slicedToArray(_useState1, 2),
2864
2922
  extraValue = _useState10[0],
@@ -2874,7 +2932,7 @@ describe('useUseCase', () => {
2874
2932
  }, [reducers]);
2875
2933
  return setExtraValue;
2876
2934
  }),
2877
- result = _renderHook48.result;
2935
+ result = _renderHook50.result;
2878
2936
  expect(onUpdate).toHaveBeenCalledTimes(0);
2879
2937
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2880
2938
  act(() => {
@@ -10,6 +10,13 @@ export interface LifecycleEvents<T = unknown> {
10
10
  * `unmount` 的时候触发。
11
11
  */
12
12
  onUnbind(entity: T): void;
13
+ /**
14
+ * 使用新的 `entity` 的时候触发,包括:
15
+ *
16
+ * 1. `onBind` 的时候;
17
+ * 2. `onUpdate` 或 `onChange` 的时候。
18
+ */
19
+ onAdopt(newEntity: T, oldEntity?: T): void;
13
20
  /**
14
21
  * 非渲染阶段触发,随后会触发组件的更新:
15
22
  *
@@ -24,6 +31,13 @@ export interface LifecycleEvents<T = unknown> {
24
31
  * 2. 由 `useUseCase(entity, usecase)` 中的 `entity` 变化触发 - 渲染阶段。
25
32
  */
26
33
  onUpdate(newEntity: T, oldEntity: T): void;
34
+ /**
35
+ * 当 `entity` 被废弃时候调用,包括以下两种情况:
36
+ *
37
+ * 1. `onUpdate` 或 `onChange` 的时候;
38
+ * 2. `onUnbind` 的时候。
39
+ */
40
+ onDiscard(entity: T): void;
27
41
  }
28
42
  export interface CaptureLifecycleEventsCallback<T> {
29
43
  (): T;
@@ -2,7 +2,9 @@ import { lifecycleEventUseCase } from '../lifecycleEventUseCase';
2
2
  import { entityUseCase } from '@mic-rexjs/usecases';
3
3
  export const lifecycleUseCase = function () {
4
4
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
- const onBind = options.onBind,
5
+ const onAdopt = options.onAdopt,
6
+ onDiscard = options.onDiscard,
7
+ onBind = options.onBind,
6
8
  onUnbind = options.onUnbind,
7
9
  onChange = options.onChange,
8
10
  onUpdate = options.onUpdate;
@@ -10,6 +12,8 @@ export const lifecycleUseCase = function () {
10
12
  setLifecycleEvents = _lifecycleEventUseCas.setLifecycleEvents;
11
13
  const entityReducers = entityUseCase();
12
14
  setLifecycleEvents({
15
+ onAdopt,
16
+ onDiscard,
13
17
  onBind,
14
18
  onUnbind,
15
19
  onChange,
@@ -51,9 +51,13 @@ var useEntity = exports.useEntity = function useEntity(store, statuses, options)
51
51
  return;
52
52
  }
53
53
  var _getLifecycleEvents = getLifecycleEvents(lifecycleKey),
54
- onUpdate = _getLifecycleEvents.onUpdate;
54
+ onUpdate = _getLifecycleEvents.onUpdate,
55
+ onAdopt = _getLifecycleEvents.onAdopt,
56
+ onDiscard = _getLifecycleEvents.onDiscard;
55
57
  prevEntityRef.current = newEntity;
56
58
  onTriggerWatchers(newEntity, oldEntity);
59
+ onDiscard === null || onDiscard === void 0 || onDiscard(oldEntity);
60
+ onAdopt === null || onAdopt === void 0 || onAdopt(newEntity, oldEntity);
57
61
  onUpdate === null || onUpdate === void 0 || onUpdate(newEntity, oldEntity);
58
62
  });
59
63
  var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
@@ -74,11 +78,13 @@ var useEntity = exports.useEntity = function useEntity(store, statuses, options)
74
78
  return;
75
79
  }
76
80
  var _bindLifecycleEventsK = bindLifecycleEventsKey(lifecycleKey),
77
- onBind = _bindLifecycleEventsK.onBind;
81
+ onBind = _bindLifecycleEventsK.onBind,
82
+ onAdopt = _bindLifecycleEventsK.onAdopt;
78
83
  if (!isInitializing) {
79
84
  return;
80
85
  }
81
86
  onBind === null || onBind === void 0 || onBind(entity);
87
+ onAdopt === null || onAdopt === void 0 || onAdopt(entity);
82
88
  });
83
89
  (0, _ahooks.useUnmount)(function () {
84
90
  if (!entityRootEnabled) {
@@ -87,9 +93,11 @@ var useEntity = exports.useEntity = function useEntity(store, statuses, options)
87
93
  // 要使用最新的 `entity`
88
94
  var currentEntity = store.value;
89
95
  var _getLifecycleEvents3 = getLifecycleEvents(lifecycleKey),
90
- onUnbind = _getLifecycleEvents3.onUnbind;
96
+ onUnbind = _getLifecycleEvents3.onUnbind,
97
+ onDiscard = _getLifecycleEvents3.onDiscard;
91
98
  deleteLifecycleEvents(lifecycleKey);
92
99
  onUnbind === null || onUnbind === void 0 || onUnbind(currentEntity);
100
+ onDiscard === null || onDiscard === void 0 || onDiscard(currentEntity);
93
101
  });
94
102
  /**
95
103
  * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
@@ -2122,6 +2122,60 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2122
2122
  (0, _globals.expect)(onUnbind).toHaveBeenCalledWith(100);
2123
2123
  });
2124
2124
  });
2125
+ (0, _globals.test)('`onAdopt` event should be called when entity change', function () {
2126
+ var onAdopt = _globals.jest.fn(function (newEntity, oldeEntity) {
2127
+ void newEntity;
2128
+ void oldeEntity;
2129
+ });
2130
+ var testUseCase = function testUseCase() {
2131
+ var lifecycleReducers = (0, _lifecycleUseCase.lifecycleUseCase)({
2132
+ onAdopt: onAdopt
2133
+ });
2134
+ return _objectSpread({}, lifecycleReducers);
2135
+ };
2136
+ var _renderHook40 = (0, _react.renderHook)(function () {
2137
+ return (0, _.useUseCase)(5, testUseCase);
2138
+ }),
2139
+ result = _renderHook40.result;
2140
+ var current = result.current;
2141
+ var _current0 = (0, _slicedToArray2["default"])(current, 2),
2142
+ setEntity = _current0[1].setEntity;
2143
+ (0, _globals.expect)(onAdopt).toHaveBeenCalledTimes(1);
2144
+ (0, _globals.expect)(onAdopt).toHaveBeenCalledWith(5);
2145
+ (0, _react.act)(function () {
2146
+ setEntity(100);
2147
+ });
2148
+ (0, _globals.expect)(onAdopt).toHaveBeenCalledTimes(2);
2149
+ (0, _globals.expect)(onAdopt).toHaveBeenCalledWith(100, 5);
2150
+ });
2151
+ (0, _globals.test)('`onDiscard` event should be called when component unmount', function () {
2152
+ var onDiscard = _globals.jest.fn(function (entity) {
2153
+ void entity;
2154
+ });
2155
+ var testUseCase = function testUseCase() {
2156
+ var lifecycleReducers = (0, _lifecycleUseCase.lifecycleUseCase)({
2157
+ onDiscard: onDiscard
2158
+ });
2159
+ return _objectSpread({}, lifecycleReducers);
2160
+ };
2161
+ var _renderHook41 = (0, _react.renderHook)(function () {
2162
+ return (0, _.useUseCase)(5, testUseCase);
2163
+ }),
2164
+ result = _renderHook41.result,
2165
+ unmount = _renderHook41.unmount;
2166
+ var current = result.current;
2167
+ var _current1 = (0, _slicedToArray2["default"])(current, 2),
2168
+ setEntity = _current1[1].setEntity;
2169
+ (0, _globals.expect)(onDiscard).toHaveBeenCalledTimes(0);
2170
+ (0, _react.act)(function () {
2171
+ setEntity(100);
2172
+ });
2173
+ (0, _globals.expect)(onDiscard).toHaveBeenCalledTimes(1);
2174
+ (0, _globals.expect)(onDiscard).toHaveBeenCalledWith(5);
2175
+ unmount();
2176
+ (0, _globals.expect)(onDiscard).toHaveBeenCalledTimes(2);
2177
+ (0, _globals.expect)(onDiscard).toHaveBeenCalledWith(100);
2178
+ });
2125
2179
  (0, _globals.describe)('`useUseCase` should work the same as `useContextualCoreCollection`', function () {
2126
2180
  (0, _globals.test)('Provider should be returned in child component', function () {
2127
2181
  var onCore = _globals.jest.fn();
@@ -2669,38 +2723,38 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2669
2723
  });
2670
2724
  (0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
2671
2725
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
2672
- var _renderHook40 = (0, _react.renderHook)(function () {
2726
+ var _renderHook42 = (0, _react.renderHook)(function () {
2673
2727
  return (0, _.useUseCase)(mathUseCase);
2674
2728
  }),
2675
- result = _renderHook40.result;
2729
+ result = _renderHook42.result;
2676
2730
  var reducers = result.current;
2677
2731
  (0, _globals.expect)(Array.isArray(reducers)).toBe(false);
2678
2732
  });
2679
2733
  (0, _globals.test)('returned reducer should work', function () {
2680
- var _renderHook41 = (0, _react.renderHook)(function () {
2734
+ var _renderHook43 = (0, _react.renderHook)(function () {
2681
2735
  return (0, _.useUseCase)(mathUseCase);
2682
2736
  }),
2683
- result = _renderHook41.result;
2737
+ result = _renderHook43.result;
2684
2738
  var reducers = result.current;
2685
2739
  var add = reducers.add;
2686
2740
  (0, _globals.expect)(add(1, 2)).toBe(3);
2687
2741
  });
2688
2742
  (0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
2689
2743
  var mockUseCase = _globals.jest.fn(mathUseCase);
2690
- var _renderHook42 = (0, _react.renderHook)(function () {
2744
+ var _renderHook44 = (0, _react.renderHook)(function () {
2691
2745
  return (0, _.useUseCase)(mockUseCase);
2692
2746
  }),
2693
- rerender = _renderHook42.rerender;
2747
+ rerender = _renderHook44.rerender;
2694
2748
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2695
2749
  rerender();
2696
2750
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2697
2751
  });
2698
2752
  (0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
2699
2753
  var mockUseCase = _globals.jest.fn(mathUseCase);
2700
- var _renderHook43 = (0, _react.renderHook)(function () {
2754
+ var _renderHook45 = (0, _react.renderHook)(function () {
2701
2755
  return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
2702
2756
  }),
2703
- rerender = _renderHook43.rerender;
2757
+ rerender = _renderHook45.rerender;
2704
2758
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2705
2759
  rerender();
2706
2760
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
@@ -2708,10 +2762,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2708
2762
  (0, _globals.test)('`usecase` should be called if deps has changed', function () {
2709
2763
  var i = 0;
2710
2764
  var mockUseCase = _globals.jest.fn(mathUseCase);
2711
- var _renderHook44 = (0, _react.renderHook)(function () {
2765
+ var _renderHook46 = (0, _react.renderHook)(function () {
2712
2766
  return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
2713
2767
  }),
2714
- rerender = _renderHook44.rerender;
2768
+ rerender = _renderHook46.rerender;
2715
2769
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2716
2770
  rerender();
2717
2771
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
@@ -2795,12 +2849,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2795
2849
  (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
2796
2850
  });
2797
2851
  (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
2798
- var _renderHook45 = (0, _react.renderHook)(function () {
2852
+ var _renderHook47 = (0, _react.renderHook)(function () {
2799
2853
  return (0, _.useUseCase)(mathUseCase, {
2800
2854
  extraValue: 5
2801
2855
  });
2802
2856
  }),
2803
- result = _renderHook45.result;
2857
+ result = _renderHook47.result;
2804
2858
  var reducers = result.current;
2805
2859
  var add = reducers.add;
2806
2860
  (0, _globals.expect)(add(1, 2)).toBe(8);
@@ -2808,7 +2862,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2808
2862
  (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
2809
2863
  var onUpdate = _globals.jest.fn();
2810
2864
  var onDeepUpdate = _globals.jest.fn();
2811
- var _renderHook46 = (0, _react.renderHook)(function () {
2865
+ var _renderHook48 = (0, _react.renderHook)(function () {
2812
2866
  var _useState7 = (0, _react2.useState)(0),
2813
2867
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
2814
2868
  extraValue = _useState8[0],
@@ -2824,7 +2878,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2824
2878
  }, [reducers]);
2825
2879
  return setExtraValue;
2826
2880
  }),
2827
- result = _renderHook46.result;
2881
+ result = _renderHook48.result;
2828
2882
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2829
2883
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2830
2884
  (0, _react.act)(function () {
@@ -2836,7 +2890,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2836
2890
  (0, _globals.test)('when `deps` change, it should update reducers', function () {
2837
2891
  var onUpdate = _globals.jest.fn();
2838
2892
  var onDeepUpdate = _globals.jest.fn();
2839
- var _renderHook47 = (0, _react.renderHook)(function () {
2893
+ var _renderHook49 = (0, _react.renderHook)(function () {
2840
2894
  var _useState9 = (0, _react2.useState)(0),
2841
2895
  _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
2842
2896
  extraValue = _useState0[0],
@@ -2852,7 +2906,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2852
2906
  }, [reducers]);
2853
2907
  return setExtraValue;
2854
2908
  }),
2855
- result = _renderHook47.result;
2909
+ result = _renderHook49.result;
2856
2910
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2857
2911
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2858
2912
  (0, _react.act)(function () {
@@ -2864,7 +2918,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2864
2918
  (0, _globals.test)('empty `deps` should not update reducers', function () {
2865
2919
  var onUpdate = _globals.jest.fn();
2866
2920
  var onDeepUpdate = _globals.jest.fn();
2867
- var _renderHook48 = (0, _react.renderHook)(function () {
2921
+ var _renderHook50 = (0, _react.renderHook)(function () {
2868
2922
  var _useState1 = (0, _react2.useState)(0),
2869
2923
  _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
2870
2924
  extraValue = _useState10[0],
@@ -2880,7 +2934,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2880
2934
  }, [reducers]);
2881
2935
  return setExtraValue;
2882
2936
  }),
2883
- result = _renderHook48.result;
2937
+ result = _renderHook50.result;
2884
2938
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2885
2939
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2886
2940
  (0, _react.act)(function () {
@@ -12,7 +12,9 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
12
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
13
  var lifecycleUseCase = exports.lifecycleUseCase = function lifecycleUseCase() {
14
14
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
- var onBind = options.onBind,
15
+ var onAdopt = options.onAdopt,
16
+ onDiscard = options.onDiscard,
17
+ onBind = options.onBind,
16
18
  onUnbind = options.onUnbind,
17
19
  onChange = options.onChange,
18
20
  onUpdate = options.onUpdate;
@@ -20,6 +22,8 @@ var lifecycleUseCase = exports.lifecycleUseCase = function lifecycleUseCase() {
20
22
  setLifecycleEvents = _lifecycleEventUseCas.setLifecycleEvents;
21
23
  var entityReducers = (0, _usecases.entityUseCase)();
22
24
  setLifecycleEvents({
25
+ onAdopt: onAdopt,
26
+ onDiscard: onDiscard,
23
27
  onBind: onBind,
24
28
  onUnbind: onUnbind,
25
29
  onChange: onChange,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "3.6.3",
3
+ "version": "3.7.0",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "sideEffects": false,