@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 +1 -1
- package/es/hooks/useEntity/index.js +11 -3
- package/es/hooks/useUseCase/index.test.js +76 -18
- package/es/usecases/lifecycleEventUseCase/types.d.ts +14 -0
- package/es/usecases/lifecycleUseCase/index.js +5 -1
- package/lib/hooks/useEntity/index.js +11 -3
- package/lib/hooks/useUseCase/index.test.js +72 -18
- package/lib/usecases/lifecycleUseCase/index.js +5 -1
- package/package.json +1 -1
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
|
|
2724
|
+
const _renderHook42 = renderHook(() => {
|
|
2667
2725
|
return useUseCase(mathUseCase);
|
|
2668
2726
|
}),
|
|
2669
|
-
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
|
|
2732
|
+
const _renderHook43 = renderHook(() => {
|
|
2675
2733
|
return useUseCase(mathUseCase);
|
|
2676
2734
|
}),
|
|
2677
|
-
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
|
|
2742
|
+
const _renderHook44 = renderHook(() => {
|
|
2685
2743
|
return useUseCase(mockUseCase);
|
|
2686
2744
|
}),
|
|
2687
|
-
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
|
|
2752
|
+
const _renderHook45 = renderHook(() => {
|
|
2695
2753
|
return useUseCase(mockUseCase, {}, [1, 'x']);
|
|
2696
2754
|
}),
|
|
2697
|
-
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
|
|
2763
|
+
const _renderHook46 = renderHook(() => {
|
|
2706
2764
|
return useUseCase(mockUseCase, {}, [i++, 'x']);
|
|
2707
2765
|
}),
|
|
2708
|
-
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
|
|
2850
|
+
const _renderHook47 = renderHook(() => {
|
|
2793
2851
|
return useUseCase(mathUseCase, {
|
|
2794
2852
|
extraValue: 5
|
|
2795
2853
|
});
|
|
2796
2854
|
}),
|
|
2797
|
-
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
2726
|
+
var _renderHook42 = (0, _react.renderHook)(function () {
|
|
2673
2727
|
return (0, _.useUseCase)(mathUseCase);
|
|
2674
2728
|
}),
|
|
2675
|
-
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
|
|
2734
|
+
var _renderHook43 = (0, _react.renderHook)(function () {
|
|
2681
2735
|
return (0, _.useUseCase)(mathUseCase);
|
|
2682
2736
|
}),
|
|
2683
|
-
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
|
|
2744
|
+
var _renderHook44 = (0, _react.renderHook)(function () {
|
|
2691
2745
|
return (0, _.useUseCase)(mockUseCase);
|
|
2692
2746
|
}),
|
|
2693
|
-
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
|
|
2754
|
+
var _renderHook45 = (0, _react.renderHook)(function () {
|
|
2701
2755
|
return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
|
|
2702
2756
|
}),
|
|
2703
|
-
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
|
|
2765
|
+
var _renderHook46 = (0, _react.renderHook)(function () {
|
|
2712
2766
|
return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
|
|
2713
2767
|
}),
|
|
2714
|
-
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
|
|
2852
|
+
var _renderHook47 = (0, _react.renderHook)(function () {
|
|
2799
2853
|
return (0, _.useUseCase)(mathUseCase, {
|
|
2800
2854
|
extraValue: 5
|
|
2801
2855
|
});
|
|
2802
2856
|
}),
|
|
2803
|
-
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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,
|