@mic-rexjs/usecases-react 2.13.1 → 2.13.4
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/components/SafeUseCaseFragment/index.d.ts +1 -1
- package/es/components/SafeUseCaseFragment/index.js +8 -1
- package/es/components/SafeUseCaseFragment/types.d.ts +1 -0
- package/es/hooks/useStore/index.js +28 -8
- package/es/hooks/useUseCase/index.test.js +78 -29
- package/es/usecases/valueUseCase/index.js +21 -5
- package/lib/components/SafeUseCaseFragment/index.js +7 -0
- package/lib/hooks/useStore/index.js +27 -7
- package/lib/hooks/useUseCase/index.test.js +74 -29
- package/lib/usecases/valueUseCase/index.js +21 -5
- package/package.json +3 -3
package/dist/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.min.js.LICENSE.txt */
|
|
2
|
-
(()=>{var t={698(t,e){"use strict";var r=Symbol.for("react.transitional.element");Symbol.for("react.fragment"),e.jsx=function(t,e,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==e.key&&(o=""+e.key),"key"in e)for(var u in n={},e)"key"!==u&&(n[u]=e[u]);else n=e;return e=n.ref,{$$typeof:r,type:t,key:o,ref:void 0!==e?e:null,props:n}}},848(t,e,r){"use strict";t.exports=r(698)},172(t){t.exports=function(t,e){this.v=t,this.k=e},t.exports.__esModule=!0,t.exports.default=t.exports},993(t,e,r){var n=r(546);function o(){var e,r,u="function"==typeof Symbol?Symbol:{},a=u.iterator||"@@iterator",i=u.toStringTag||"@@toStringTag";function c(t,o,u,a){var i=o&&o.prototype instanceof f?o:f,c=Object.create(i.prototype);return n(c,"_invoke",function(t,n,o){var u,a,i,c=0,f=o||[],l=!1,p={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,r){return u=t,a=0,i=e,p.n=r,s}};function y(t,n){for(a=t,i=n,r=0;!l&&c&&!o&&r<f.length;r++){var o,u=f[r],y=p.p,b=u[2];t>3?(o=b===n)&&(i=u[(a=u[4])?5:(a=3,3)],u[4]=u[5]=e):u[0]<=y&&((o=t<2&&y<u[1])?(a=0,p.v=n,p.n=u[1]):y<b&&(o=t<3||u[0]>n||n>b)&&(u[4]=t,u[5]=n,p.n=b,a=0))}if(o||t>1)return s;throw l=!0,n}return function(o,f,b){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&y(f,b),a=f,i=b;(r=a<2?e:i)||!l;){u||(a?a<3?(a>1&&(p.n=-1),y(a,i)):p.n=i:p.v=i);try{if(c=2,u){if(a||(o="next"),r=u[o]){if(!(r=r.call(u,i)))throw TypeError("iterator result is not an object");if(!r.done)return r;i=r.value,a<2&&(a=0)}else 1===a&&(r=u.return)&&r.call(u),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);u=e}else if((r=(l=p.n<0)?i:t.call(n,p))!==s)break}catch(t){u=e,a=1,i=t}finally{c=1}}return{value:r,done:l}}}(t,u,a),!0),c}var s={};function f(){}function l(){}function p(){}r=Object.getPrototypeOf;var y=[][a]?r(r([][a]())):(n(r={},a,function(){return this}),r),b=p.prototype=f.prototype=Object.create(y);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,i,"GeneratorFunction")),t.prototype=Object.create(b),t}return l.prototype=p,n(b,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(b),n(b,i,"Generator"),n(b,a,function(){return this}),n(b,"toString",function(){return"[object Generator]"}),(t.exports=o=function(){return{w:c,m:v}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},869(t,e,r){var n=r(887);t.exports=function(t,e,r,o,u){var a=n(t,e,r,o,u);return a.next().then(function(t){return t.done?t.value:a.next()})},t.exports.__esModule=!0,t.exports.default=t.exports},887(t,e,r){var n=r(993),o=r(791);t.exports=function(t,e,r,u,a){return new o(n().w(t,e,r,u),a||Promise)},t.exports.__esModule=!0,t.exports.default=t.exports},791(t,e,r){var n=r(172),o=r(546);t.exports=function t(e,r){function u(t,o,a,i){try{var c=e[t](o),s=c.value;return s instanceof n?r.resolve(s.v).then(function(t){u("next",t,a,i)},function(t){u("throw",t,a,i)}):r.resolve(s).then(function(t){c.value=t,a(c)},function(t){return u("throw",t,a,i)})}catch(t){i(t)}}var a;this.next||(o(t.prototype),o(t.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),o(this,"_invoke",function(t,e,n){function o(){return new r(function(e,r){u(t,n,e,r)})}return a=a?a.then(o,o):o()},!0)},t.exports.__esModule=!0,t.exports.default=t.exports},546(t){function e(r,n,o,u){var a=Object.defineProperty;try{a({},"",{})}catch(r){a=0}t.exports=e=function(t,r,n,o){function u(r,n){e(t,r,function(t){return this._invoke(r,n,t)})}r?a?a(t,r,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[r]=n:(u("next",0),u("throw",1),u("return",2))},t.exports.__esModule=!0,t.exports.default=t.exports,e(r,n,o,u)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},373(t){t.exports=function(t){var e=Object(t),r=[];for(var n in e)r.unshift(n);return function t(){for(;r.length;)if((n=r.pop())in e)return t.value=n,t.done=!1,t;return t.done=!0,t}},t.exports.__esModule=!0,t.exports.default=t.exports},633(t,e,r){var n=r(172),o=r(993),u=r(869),a=r(887),i=r(791),c=r(373),s=r(579);function f(){"use strict";var e=o(),r=e.m(f),l=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function p(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===l||"GeneratorFunction"===(e.displayName||e.name))}var y={throw:1,return:2,break:3,continue:3};function b(t){var e,r;return function(n){e||(e={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(t,e){return r(n.a,y[t],e)},delegateYield:function(t,o,u){return e.resultName=o,r(n.d,s(t),u)},finish:function(t){return r(n.f,t)}},r=function(t,r,o){n.p=e.prev,n.n=e.next;try{return t(r,o)}finally{e.next=n.n}}),e.resultName&&(e[e.resultName]=n.v,e.resultName=void 0),e.sent=n.v,e.next=n.n;try{return t.call(this,e)}finally{n.p=e.prev,n.n=e.next}}}return(t.exports=f=function(){return{wrap:function(t,r,n,o){return e.w(b(t),r,n,o&&o.reverse())},isGeneratorFunction:p,mark:e.m,awrap:function(t,e){return new n(t,e)},AsyncIterator:i,async:function(t,e,r,n,o){return(p(e)?a:u)(b(t),e,r,n,o)},keys:c,values:s}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=f,t.exports.__esModule=!0,t.exports.default=t.exports},579(t,e,r){var n=r(738).default;t.exports=function(t){if(null!=t){var e=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}throw new TypeError(n(t)+" is not iterable")},t.exports.__esModule=!0,t.exports.default=t.exports},738(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},756(t,e,r){var n=r(633)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var u=e[n]={exports:{}};return t[n](u,u.exports,r),u.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(e,r,n){return(r=function(e){var r=function(e){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=t(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)r=u[n],-1===e.indexOf(r)&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}r.r(n),r.d(n,{UseCaseFragment:()=>G,useUseCase:()=>U});var u=r(848);function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,u,a,i=[],c=!0,s=!1;try{if(u=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=u.call(r)).done)&&(i.push(n.value),i.length!==e);c=!0);}catch(t){s=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return i}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const s=React;var f,l=r.n(s),p=function(t){return c((0,s.useState)(t),1)[0]};!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(f||(f={}));var y=function(t){return c((0,s.useState)(function(){return t}),1)[0]},b=function(t,e){return p(function(){return t(e)})};const v=ahooks,d=usecases;var h;!function(t){t[t.None=0]="None",t[t.RootEnabled=2]="RootEnabled",t[t.ContextEnabled=4]="ContextEnabled",t[t.EntityEnabled=8]="EntityEnabled",t[t.ContextRootEnabled=6]="ContextRootEnabled",t[t.EntityRootEnabled=14]="EntityRootEnabled"}(h||(h={}));var O=(0,d.createUseCase)(function(){var t=new Map,e=(0,s.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&h.EntityEnabled)===h.EntityEnabled?{store:t,reducers:e,statuses:r}:{reducers:e,statuses:r}},getUseCaseContext:function(r){return t.has(r)?t.get(r).value:e},registerUseCase:function(r,n){if(t.has(r)){var o=t.get(r),u=o.value,a=o.times;return t.set(r,{value:u,times:a+1}),u}if((n&f.Entity)!==f.Entity)return e;var i=(0,s.createContext)(null);return t.set(r,{value:i,times:1}),i},unregisterUseCase:function(e,r){if((r&f.Entity)!==f.Entity)return!1;if(!t.has(e))return!1;var n=t.get(e),o=n.value,u=n.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}}),m=function(t,e,r){return p(function(){return(0,d.createEntityReducers)(t,e,r)})};function g(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var x=r(756),j=r.n(x);function w(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function E(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?w(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):w(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var P=(0,d.createUseCase)(function(){return function(){var e=(0,d.entityUseCase)(),r=(0,d.utilsUseCase)().createKey,n=r(),o=function(e,r){return"object"===t(e)&&null!==e&&Object.hasOwn(e,r)},u=function(t,e){return t!==e},a=function(e,r,n){if(e===r)return!0;var o="object"===t(e)&&null!==e,u="object"===t(r)&&null!==r;if(!o||!u)return!1;for(var a=!0,i=Object.keys(e),c=Object.keys(r),s=i.length,f=[].concat(i,c),l="function"==typeof n,p=0,y=f.length;p<y;p++){var b=f[p],v=p>=s,d=i.includes(b);if(!v||!d){var h=Object.hasOwn(e,b),O=Object.hasOwn(r,b),m=h&&!O||!h&&O,g=e[b],x=r[b];if(m||g!==x){if(a=!1,!l)break;n(b,x,g)}}}return a},i=j().mark(function t(e,r){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(u(e,r)){t.next=1;break}return t.abrupt("return",!1);case 1:return t.next=2,r;case 2:return t.abrupt("return",!0);case 3:case"end":return t.stop()}},t)}),s=j().mark(function t(e,r){var n,o,u,i,c,s;return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=Array.isArray(e),o=Array.isArray(r),i=(u=n&&o)?[]:{},u&&(c=e.length,s=r.length,i.length=Math.max(c,s)),a(e,r,function(t,e){i[t]=e})){t.next=1;break}return t.next=1,r;case 1:return t.abrupt("return",i);case 2:case"end":return t.stop()}},t)}),f=j().mark(function t(e,r){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!a(e,r)){t.next=1;break}return t.abrupt("return",!0);case 1:return t.next=2,r;case 2:return t.abrupt("return",!1);case 3:case"end":return t.stop()}},t)}),l=j().mark(function t(e,o,u){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(f(e,o),"t0",1);case 1:return t.t0||(n=null!=u?u:r()),t.abrupt("return",n);case 2:case"end":return t.stop()}},t)});return E(E({},e),{},{isValueChanged:u,isValueMatched:a,matchProperty:function(t,e,r,n){var u=!0,a=r,i=[{fieldPaths:[],newEntity:e,newValue:e,oldEntity:t,oldValue:t}];do{var s=i.shift(),f=s.oldValue,l=s.newValue,p=s.fieldPaths,y=c(a.match(/^([^.]+)\.(.+)$/)||[],3),b=y[1],v=void 0===b?a:b,d=y[2],h=void 0===d?"":d,O=o(f,v),m=o(l,v);if(O||m){var x=O?f[v]:void 0,j=m?l[v]:void 0,w={fieldPaths:[].concat(g(p),[v]),newEntity:e,newValue:j,oldEntity:t,oldValue:x};if(h){a=h,i.push(w);continue}if(x===j)continue;u=!1,null==n||n(w)}else if(!/^\d+^/.test(v))for(var E=Array.isArray(f)?f:[],P=Array.isArray(l)?l:[],S=E.length,C=P.length,_=Math.max(S,C),M=0;M<_;M++)i.push({fieldPaths:[].concat(g(p),["".concat(M)]),newEntity:e,newValue:P[M],oldEntity:t,oldValue:E[M]})}while(i.length>0);return u},recordValue:i,recordValueDiff:s,recordValueMatch:f,recordValueMatchWith:l})}}),S=function(){var t=P().isValueMatched,e=function(e,r){var n,o=r||{},u=o.onShouldCache,a=void 0===u?function(){return!0}:u,i=o.onCompare,c=void 0===i?function(e,r){return t(e,r)}:i;return function(){for(var t=a(),r=arguments.length,o=new Array(r),u=0;u<r;u++)o[u]=arguments[u];if(n&&t){var i=n,s=i.parameters,f=i.returnValue;if(c(s,o))return f}var l=e.apply(void 0,o);return t&&(n={parameters:o,returnValue:l}),l}};return{cacheCall:e,cacheCalls:function(t,r){var n={};return Object.entries(t).forEach(function(t){var o=c(t,2),u=o[0],a=o[1];n[u]=e(a,r)}),n},captureCalls:function(t,e){var r={};return Object.keys(t).forEach(function(n){var o=t[n];r[n]="function"!=typeof o?o:function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return e(n,r)}}),r}}},C=function(t,e,r){var n,o=c((0,m(n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],P).recordValueMatchWith)(n),2)[1],u=(0,v.useLatest)(r),a=b(S).cacheCall,i=(0,v.useMemoizedFn)(function(){var t=u.current;return a(t,{onCompare:function(){return!0}})}),s=(0,v.useCreation)(function(){return i()},[o,i]);return(0,v.useCreation)(function(){return(e&h.RootEnabled)!==h.RootEnabled&&t?t:s()},[e,t,s])};function _(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function M(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?_(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var k=["watch","onChange","options"];function V(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function R(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?V(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var A=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,d.entityUseCase)(),r=t.onInit;return R(R({},e),{},{initEntity:function(t){return"function"!=typeof r?t:r(t)}})};function D(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}var U=function(){for(var r,n=(r=(0,v.useLatest)(!0),(0,s.useEffect)(function(){r.current=!1}),r),u=arguments.length,a=new Array(u),i=0;i<u;i++)a[i]=arguments[i];var x=function(e){return p(function(){return"function"===t(c(e,2)[1])?f.Entity:f.None})}(a),j=function(t,e){var r=c(t,4),n=r[0],o=r[1],u=r[2],a=r[3];return(e&f.Entity)!==f.Entity?[null,n,o||{},u||[]]:[n,o,u||{},a||[]]}(a,x),w=c(j,4),E=w[0],_=w[1],V=w[2],R=w[3],U=b(S).cacheCalls,N=y(_),T=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.None,r=p(function(){return(0,O().registerUseCase)(t,e)});return(0,v.useUnmount)(function(){(0,O().unregisterUseCase)(t,e)}),r}(N,x),F=T,I=function(t,e){var r=(0,s.useContext)(t);return(0,v.useCreation)(function(){var t=h.None,n=(r||{}).store;return(e&f.Entity)===f.Entity&&(t|=h.EntityRootEnabled),t|=r?h.ContextEnabled:h.RootEnabled,n&&(t|=h.EntityEnabled),t},[e,r])}(T,x),G=function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],u=(0,v.useUpdate)(),a=(0,v.useLatest)(n),i=(0,s.useRef)(null),f=(r&h.EntityEnabled)===h.EntityEnabled,l=(r&h.EntityRootEnabled)===h.EntityRootEnabled,p=((0,s.useContext)(t)||{}).store,y=void 0===p?null:p,b=m(o,P).recordValueDiff,O=C(y,r,function(){if(!l)return new d.EntityStore(null);var t=i.current,r=c(b(o),2)[1],n=function(t,e,r){if("function"!=typeof t)return new d.EntityStore(t);var n=(e||{}).value,o=new d.EntityStore(n);return(0,(0,d.createEntityReducers)(o,A,{onInit:function(e){return t(e,r)},onReturn:function(t){return o.setValue(t),t}}).initEntity)(),o}(e,t,r);return i.current=n,n},o),g=(0,v.useMemoizedFn)(function(t,e){var r=a.current,n=r.onChange,o=r.watch;o&&function(t,e,r){for(var n,o=P().matchProperty,u=function(){var t=i[a],u=(n=c(t,2))[0],s=n[1];o(r,e,u,function(t){s(t)})},a=0,i=Object.entries(t);a<i.length;a++)u()}(o,t,e),null==n||n(t,e),l&&u()});return(0,v.useCreation)(function(){f&&O.watch(g)},[f,O,g]),(0,s.useEffect)(function(){return function(){O.unwatch(g)}},[f,O,g]),O}(F,E,I,V,R),L=function(t,e,r){var n=m(e,P),o=n.isValueChanged,u=n.recordValue,a=o(e),i=(r&h.EntityRootEnabled)!==h.EntityRootEnabled,c="function"==typeof e,s=t.value;switch(!0){case i:case c:case!a:return s}return u(e),t.disableWatchers(),t.setValue(e),t.enableWatchers(),e}(G,E,I),W=function(t,e,r,n,u){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],i=(0,v.useLatest)(u),c=((0,s.useContext)(e)||{}).reducers,f=void 0===c?null:c,l=b(S).captureCalls;return C(f,n,function(){var e=l(u,function(t,e){var r,n,o;return null===(n=(o=i.current)[t])||void 0===n?void 0:(r=n).call.apply(r,[o].concat(g(e)))});if((n&h.EntityEnabled)!==h.EntityEnabled)return t(e);var a=e,c=(a.watch,a.onChange,a.options),s=o(a,k);return(0,d.createEntityReducers)(r,t,M(M(M({},s),c),{},{onGenerate:function(t,e){return e}}))},a)}(N,T,G,I,V,R),$=function(t,e,r,n){var o=r.value,u=(0,v.useCreation)(function(){return(0,O().createContextValue)(r,n,t)},[t,o,r,n]),a=(0,v.useLatest)(u);return y(function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=a.current;return l().createElement(u,{value:i},o.reduceRight(function(t,e){return l().createElement(e,{},t)},r))})}(I,T,G,W);return(0,v.useCreation)(function(){if((I&h.EntityEnabled)!==h.EntityEnabled)return W;var r=U(W,{onShouldCache:function(){return n.current}}),o=null===L,u=Array.isArray(L),a="object"!==t(L)||o||u?L:function(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?D(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},L);return[a,r,$]},[I,L,W,$,n,U])},N=function(t){var e=t.usecase,r=t.watch,n=t.onMount,o=t.onChange,a=c(U(e,{watch:r,onChange:o}),1)[0];return(0,v.useMount)(function(){null==n||n(a)}),(0,u.jsx)(s.Fragment,{})};function T(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function F(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?T(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):T(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var I=["usecase"],G=function(t){var e=t.usecase,r=o(t,I),n=(0,U(O).getUseCaseContext)(e),a=(0,s.useContext)(n);return(0,u.jsx)(s.Fragment,{children:null===a?null:(0,u.jsx)(N,F({usecase:e},r))})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in n)o[u]=n[u];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|
|
2
|
+
(()=>{var t={698(t,e){"use strict";var r=Symbol.for("react.transitional.element");Symbol.for("react.fragment"),e.jsx=function(t,e,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==e.key&&(o=""+e.key),"key"in e)for(var u in n={},e)"key"!==u&&(n[u]=e[u]);else n=e;return e=n.ref,{$$typeof:r,type:t,key:o,ref:void 0!==e?e:null,props:n}}},848(t,e,r){"use strict";t.exports=r(698)},172(t){t.exports=function(t,e){this.v=t,this.k=e},t.exports.__esModule=!0,t.exports.default=t.exports},993(t,e,r){var n=r(546);function o(){var e,r,u="function"==typeof Symbol?Symbol:{},a=u.iterator||"@@iterator",i=u.toStringTag||"@@toStringTag";function c(t,o,u,a){var i=o&&o.prototype instanceof s?o:s,c=Object.create(i.prototype);return n(c,"_invoke",function(t,n,o){var u,a,i,c=0,s=o||[],l=!1,p={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,r){return u=t,a=0,i=e,p.n=r,f}};function y(t,n){for(a=t,i=n,r=0;!l&&c&&!o&&r<s.length;r++){var o,u=s[r],y=p.p,b=u[2];t>3?(o=b===n)&&(i=u[(a=u[4])?5:(a=3,3)],u[4]=u[5]=e):u[0]<=y&&((o=t<2&&y<u[1])?(a=0,p.v=n,p.n=u[1]):y<b&&(o=t<3||u[0]>n||n>b)&&(u[4]=t,u[5]=n,p.n=b,a=0))}if(o||t>1)return f;throw l=!0,n}return function(o,s,b){if(c>1)throw TypeError("Generator is already running");for(l&&1===s&&y(s,b),a=s,i=b;(r=a<2?e:i)||!l;){u||(a?a<3?(a>1&&(p.n=-1),y(a,i)):p.n=i:p.v=i);try{if(c=2,u){if(a||(o="next"),r=u[o]){if(!(r=r.call(u,i)))throw TypeError("iterator result is not an object");if(!r.done)return r;i=r.value,a<2&&(a=0)}else 1===a&&(r=u.return)&&r.call(u),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);u=e}else if((r=(l=p.n<0)?i:t.call(n,p))!==f)break}catch(t){u=e,a=1,i=t}finally{c=1}}return{value:r,done:l}}}(t,u,a),!0),c}var f={};function s(){}function l(){}function p(){}r=Object.getPrototypeOf;var y=[][a]?r(r([][a]())):(n(r={},a,function(){return this}),r),b=p.prototype=s.prototype=Object.create(y);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,i,"GeneratorFunction")),t.prototype=Object.create(b),t}return l.prototype=p,n(b,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(b),n(b,i,"Generator"),n(b,a,function(){return this}),n(b,"toString",function(){return"[object Generator]"}),(t.exports=o=function(){return{w:c,m:v}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},869(t,e,r){var n=r(887);t.exports=function(t,e,r,o,u){var a=n(t,e,r,o,u);return a.next().then(function(t){return t.done?t.value:a.next()})},t.exports.__esModule=!0,t.exports.default=t.exports},887(t,e,r){var n=r(993),o=r(791);t.exports=function(t,e,r,u,a){return new o(n().w(t,e,r,u),a||Promise)},t.exports.__esModule=!0,t.exports.default=t.exports},791(t,e,r){var n=r(172),o=r(546);t.exports=function t(e,r){function u(t,o,a,i){try{var c=e[t](o),f=c.value;return f instanceof n?r.resolve(f.v).then(function(t){u("next",t,a,i)},function(t){u("throw",t,a,i)}):r.resolve(f).then(function(t){c.value=t,a(c)},function(t){return u("throw",t,a,i)})}catch(t){i(t)}}var a;this.next||(o(t.prototype),o(t.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),o(this,"_invoke",function(t,e,n){function o(){return new r(function(e,r){u(t,n,e,r)})}return a=a?a.then(o,o):o()},!0)},t.exports.__esModule=!0,t.exports.default=t.exports},546(t){function e(r,n,o,u){var a=Object.defineProperty;try{a({},"",{})}catch(r){a=0}t.exports=e=function(t,r,n,o){function u(r,n){e(t,r,function(t){return this._invoke(r,n,t)})}r?a?a(t,r,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[r]=n:(u("next",0),u("throw",1),u("return",2))},t.exports.__esModule=!0,t.exports.default=t.exports,e(r,n,o,u)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},373(t){t.exports=function(t){var e=Object(t),r=[];for(var n in e)r.unshift(n);return function t(){for(;r.length;)if((n=r.pop())in e)return t.value=n,t.done=!1,t;return t.done=!0,t}},t.exports.__esModule=!0,t.exports.default=t.exports},633(t,e,r){var n=r(172),o=r(993),u=r(869),a=r(887),i=r(791),c=r(373),f=r(579);function s(){"use strict";var e=o(),r=e.m(s),l=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function p(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===l||"GeneratorFunction"===(e.displayName||e.name))}var y={throw:1,return:2,break:3,continue:3};function b(t){var e,r;return function(n){e||(e={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(t,e){return r(n.a,y[t],e)},delegateYield:function(t,o,u){return e.resultName=o,r(n.d,f(t),u)},finish:function(t){return r(n.f,t)}},r=function(t,r,o){n.p=e.prev,n.n=e.next;try{return t(r,o)}finally{e.next=n.n}}),e.resultName&&(e[e.resultName]=n.v,e.resultName=void 0),e.sent=n.v,e.next=n.n;try{return t.call(this,e)}finally{n.p=e.prev,n.n=e.next}}}return(t.exports=s=function(){return{wrap:function(t,r,n,o){return e.w(b(t),r,n,o&&o.reverse())},isGeneratorFunction:p,mark:e.m,awrap:function(t,e){return new n(t,e)},AsyncIterator:i,async:function(t,e,r,n,o){return(p(e)?a:u)(b(t),e,r,n,o)},keys:c,values:f}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=s,t.exports.__esModule=!0,t.exports.default=t.exports},579(t,e,r){var n=r(738).default;t.exports=function(t){if(null!=t){var e=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}throw new TypeError(n(t)+" is not iterable")},t.exports.__esModule=!0,t.exports.default=t.exports},738(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},756(t,e,r){var n=r(633)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var u=e[n]={exports:{}};return t[n](u,u.exports,r),u.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(e,r,n){return(r=function(e){var r=function(e){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=t(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)r=u[n],-1===e.indexOf(r)&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}r.r(n),r.d(n,{UseCaseFragment:()=>G,useUseCase:()=>U});var u=r(848);function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,u,a,i=[],c=!0,f=!1;try{if(u=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=u.call(r)).done)&&(i.push(n.value),i.length!==e);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(f)throw o}}return i}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const f=React;var s,l=r.n(f),p=function(t){return c((0,f.useState)(t),1)[0]};!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(s||(s={}));var y=function(t){return c((0,f.useState)(function(){return t}),1)[0]},b=function(t,e){return p(function(){return t(e)})};const v=ahooks,d=usecases;var h;!function(t){t[t.None=0]="None",t[t.RootEnabled=2]="RootEnabled",t[t.ContextEnabled=4]="ContextEnabled",t[t.EntityEnabled=8]="EntityEnabled",t[t.ContextRootEnabled=6]="ContextRootEnabled",t[t.EntityRootEnabled=14]="EntityRootEnabled"}(h||(h={}));var O=(0,d.createUseCase)(function(){var t=new Map,e=(0,f.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&h.EntityEnabled)===h.EntityEnabled?{store:t,reducers:e,statuses:r}:{reducers:e,statuses:r}},getUseCaseContext:function(r){return t.has(r)?t.get(r).value:e},registerUseCase:function(r,n){if(t.has(r)){var o=t.get(r),u=o.value,a=o.times;return t.set(r,{value:u,times:a+1}),u}if((n&s.Entity)!==s.Entity)return e;var i=(0,f.createContext)(null);return t.set(r,{value:i,times:1}),i},unregisterUseCase:function(e,r){if((r&s.Entity)!==s.Entity)return!1;if(!t.has(e))return!1;var n=t.get(e),o=n.value,u=n.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}}),m=function(t,e,r){return p(function(){return(0,d.createEntityReducers)(t,e,r)})};function g(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var x=r(756),j=r.n(x);function w(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function E(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?w(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):w(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var P=(0,d.createUseCase)(function(){return function(){var e=(0,d.entityUseCase)(),r=(0,d.utilsUseCase)().createKey,n=r(),o=function(e,r){return"object"===t(e)&&null!==e&&Object.hasOwn(e,r)},u=function(t,e){return t!==e},a=function(e,r,n){if(e===r)return!0;var o="object"===t(e)&&null!==e,u="object"===t(r)&&null!==r;if(!o||!u)return!1;for(var a=!0,i=Object.keys(e),c=Object.keys(r),f=i.length,s=[].concat(i,c),l="function"==typeof n,p=0,y=s.length;p<y;p++){var b=s[p],v=p>=f,d=i.includes(b);if(!v||!d){var h=Object.hasOwn(e,b),O=Object.hasOwn(r,b),m=h&&!O||!h&&O,g=e[b],x=r[b];if(m||g!==x){if(a=!1,!l)break;n(b,x,g)}}}return a},i=j().mark(function t(e,r){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(u(e,r)){t.next=1;break}return t.abrupt("return",!1);case 1:return t.next=2,r;case 2:return t.abrupt("return",!0);case 3:case"end":return t.stop()}},t)}),f=j().mark(function t(e,r){var n,o,u,i,c,f;return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=Array.isArray(e),o=Array.isArray(r),i=(u=n&&o)?[]:{},u&&(c=e.length,f=r.length,i.length=Math.max(c,f)),a(e,r,function(t,e){i[t]=e})){t.next=1;break}return t.next=1,r;case 1:return t.abrupt("return",i);case 2:case"end":return t.stop()}},t)}),s=j().mark(function t(e,r){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!a(e,r)){t.next=1;break}return t.abrupt("return",!0);case 1:return t.next=2,r;case 2:return t.abrupt("return",!1);case 3:case"end":return t.stop()}},t)}),l=j().mark(function t(e,o,u){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(s(e,o),"t0",1);case 1:return t.t0||(n=null!=u?u:r()),t.abrupt("return",n);case 2:case"end":return t.stop()}},t)});return E(E({},e),{},{isValueChanged:u,isValueMatched:a,matchProperty:function(t,e,r,n){var u=!0,a=r,i=[{fieldPaths:[],newEntity:e,newValue:e,oldEntity:t,oldValue:t}];do{var f=i.shift(),s=f.oldValue,l=f.newValue,p=f.fieldPaths,y=c(a.match(/^([^.]+)\.(.+)$/)||[],3),b=y[1],v=void 0===b?a:b,d=y[2],h=void 0===d?"":d,O=o(s,v),m=o(l,v);if(O||m){var x=Object.getOwnPropertyDescriptor(O?s:{},v)||{},j=Object.getOwnPropertyDescriptor(m?l:{},v)||{},w=x.value,E=x.get,P=x.set,S=j.value,C=j.get,_=j.set,M={fieldPaths:[].concat(g(p),[v]),newEntity:e,newValue:S,oldEntity:t,oldValue:w};if(h){a=h,i.push(M);continue}if(!("function"!=typeof E&&"function"!=typeof P||"function"!=typeof C&&"function"!=typeof _))continue;if(S===w)continue;u=!1,null==n||n(M)}else if(!/^\d+^/.test(v))for(var k=Array.isArray(s)?s:[],R=Array.isArray(l)?l:[],V=k.length,D=R.length,A=Math.max(V,D),U=0;U<A;U++)i.push({fieldPaths:[].concat(g(p),["".concat(U)]),newEntity:e,newValue:R[U],oldEntity:t,oldValue:k[U]})}while(i.length>0);return u},recordValue:i,recordValueDiff:f,recordValueMatch:s,recordValueMatchWith:l})}}),S=function(){var t=P().isValueMatched,e=function(e,r){var n,o=r||{},u=o.onShouldCache,a=void 0===u?function(){return!0}:u,i=o.onCompare,c=void 0===i?function(e,r){return t(e,r)}:i;return function(){for(var t=a(),r=arguments.length,o=new Array(r),u=0;u<r;u++)o[u]=arguments[u];if(n&&t){var i=n,f=i.parameters,s=i.returnValue;if(c(f,o))return s}var l=e.apply(void 0,o);return t&&(n={parameters:o,returnValue:l}),l}};return{cacheCall:e,cacheCalls:function(t,r){var n={};return Object.entries(t).forEach(function(t){var o=c(t,2),u=o[0],a=o[1];n[u]=e(a,r)}),n},captureCalls:function(t,e){var r={};return Object.keys(t).forEach(function(n){var o=t[n];r[n]="function"!=typeof o?o:function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return e(n,r)}}),r}}},C=function(t,e,r){var n,o=c((0,m(n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],P).recordValueMatchWith)(n),2)[1],u=(0,v.useLatest)(r),a=b(S).cacheCall,i=(0,v.useMemoizedFn)(function(){var t=u.current;return a(t,{onCompare:function(){return!0}})}),f=(0,v.useCreation)(function(){return i()},[o,i]);return(0,v.useCreation)(function(){return(e&h.RootEnabled)!==h.RootEnabled&&t?t:f()},[e,t,f])};function _(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function M(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?_(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var k=["watch","onChange","options"];function R(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function V(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?R(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var D=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,d.entityUseCase)(),r=t.onInit;return V(V({},e),{},{initEntity:function(t){return"function"!=typeof r?t:r(t)}})};function A(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}var U=function(){for(var r,n=(r=(0,v.useLatest)(!0),(0,f.useEffect)(function(){r.current=!1}),r),u=arguments.length,a=new Array(u),i=0;i<u;i++)a[i]=arguments[i];var x=function(e){return p(function(){return"function"===t(c(e,2)[1])?s.Entity:s.None})}(a),j=function(t,e){var r=c(t,4),n=r[0],o=r[1],u=r[2],a=r[3];return(e&s.Entity)!==s.Entity?[null,n,o||{},u||[]]:[n,o,u||{},a||[]]}(a,x),w=c(j,4),E=w[0],_=w[1],R=w[2],V=w[3],U=b(S).cacheCalls,N=y(_),F=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.None,r=p(function(){return(0,O().registerUseCase)(t,e)});return(0,v.useUnmount)(function(){(0,O().unregisterUseCase)(t,e)}),r}(N,x),T=F,I=function(t,e){var r=(0,f.useContext)(t);return(0,v.useCreation)(function(){var t=h.None,n=(r||{}).store;return(e&s.Entity)===s.Entity&&(t|=h.EntityRootEnabled),t|=r?h.ContextEnabled:h.RootEnabled,n&&(t|=h.EntityEnabled),t},[e,r])}(F,x),G=function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],u=(0,v.useUpdate)(),a=(0,v.useLatest)(n),i=(0,f.useRef)(null),s=(r&h.EntityEnabled)===h.EntityEnabled,l=(r&h.EntityRootEnabled)===h.EntityRootEnabled,p=((0,f.useContext)(t)||{}).store,y=void 0===p?null:p,b=m([],P).recordValueDiff,O=C(y,r,function(){if(!l)return new d.EntityStore(null);var t=i.current,r=c(b(o),2)[1],n=function(t,e,r){if("function"!=typeof t)return new d.EntityStore(t);var n=(e||{}).value,o=new d.EntityStore(n);return(0,(0,d.createEntityReducers)(o,D,{onInit:function(e){return t(e,r)},onReturn:function(t){return o.setValue(t),t}}).initEntity)(),o}(e,t,r);return i.current=n,n},o),g=O.value,x=(0,f.useRef)(g),j=(0,v.useMemoizedFn)(function(t,e){var r=a.current.watch;r&&function(t,e,r){for(var n,o=P().matchProperty,u=function(){var t=i[a],u=(n=c(t,2))[0],f=n[1];o(r,e,u,function(t){f(t)})},a=0,i=Object.entries(t);a<i.length;a++)u()}(r,t,e)}),w=(0,v.useMemoizedFn)(function(t,e){var r=a.current.onChange;x.current=t,j(t,e),null==r||r(t,e),l&&u()}),E=(0,v.useMemoizedFn)(function(){if(l){var t=x.current;g!==t&&(x.current=g,j(g,t))}});return(0,v.useUpdateEffect)(function(){E()},[g,E]),(0,v.useCreation)(function(){s&&O.watch(w)},[s,O,w]),(0,f.useEffect)(function(){return function(){O.unwatch(w)}},[s,O,w]),O}(T,E,I,R,V),z=function(t,e,r){var n=m(e,P),o=n.isValueChanged,u=n.recordValue,a=o(e),i=(r&h.EntityRootEnabled)!==h.EntityRootEnabled,c="function"==typeof e,f=t.value;switch(!0){case i:case c:case!a:return f}return u(e),t.disableWatchers(),t.setValue(e),t.enableWatchers(),e}(G,E,I),L=function(t,e,r,n,u){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],i=(0,v.useLatest)(u),c=((0,f.useContext)(e)||{}).reducers,s=void 0===c?null:c,l=b(S).captureCalls;return C(s,n,function(){var e=l(u,function(t,e){var r,n,o;return null===(n=(o=i.current)[t])||void 0===n?void 0:(r=n).call.apply(r,[o].concat(g(e)))});if((n&h.EntityEnabled)!==h.EntityEnabled)return t(e);var a=e,c=(a.watch,a.onChange,a.options),f=o(a,k);return(0,d.createEntityReducers)(r,t,M(M(M({},f),c),{},{onGenerate:function(t,e){return e}}))},a)}(N,F,G,I,R,V),W=function(t,e,r,n){var o=r.value,u=(0,v.useCreation)(function(){return(0,O().createContextValue)(r,n,t)},[t,o,r,n]),a=(0,v.useLatest)(u);return y(function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=a.current;return l().createElement(u,{value:i},o.reduceRight(function(t,e){return l().createElement(e,{},t)},r))})}(I,F,G,L);return(0,v.useCreation)(function(){if((I&h.EntityEnabled)!==h.EntityEnabled)return L;var r=U(L,{onShouldCache:function(){return n.current}}),o=null===z,u=Array.isArray(z),a="object"!==t(z)||o||u?z:function(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?A(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):A(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},z);return[a,r,W]},[I,z,L,W,n,U])},N=function(t){var e=t.usecase,r=t.watch,n=t.onMount,o=t.onUpdate,a=t.onChange,i=c(U(e,{watch:r,onChange:a}),1)[0],s=(0,v.useMemoizedFn)(function(){null==o||o(i)});return(0,v.useMount)(function(){null==n||n(i)}),(0,v.useUpdateEffect)(function(){s()},[i,s]),(0,u.jsx)(f.Fragment,{})};function F(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function T(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?F(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var I=["usecase"],G=function(t){var e=t.usecase,r=o(t,I),n=(0,U(O).getUseCaseContext)(e),a=(0,f.useContext)(n);return(0,u.jsx)(f.Fragment,{children:null===a?null:(0,u.jsx)(N,T({usecase:e},r))})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in n)o[u]=n[u];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { SafeUseCaseFragmentProps } from './types';
|
|
2
2
|
import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
3
|
-
export declare const SafeUseCaseFragment: <T, TEntityReducers extends EntityReducerMap<T>>({ usecase, watch, onMount, onChange, }: SafeUseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
|
|
3
|
+
export declare const SafeUseCaseFragment: <T, TEntityReducers extends EntityReducerMap<T>>({ usecase, watch, onMount, onUpdate, onChange, }: SafeUseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useUseCase } from '../../hooks/useUseCase';
|
|
4
|
-
import { useMount } from 'ahooks';
|
|
4
|
+
import { useMemoizedFn, useMount, useUpdateEffect } from 'ahooks';
|
|
5
5
|
import { Fragment } from 'react';
|
|
6
6
|
export const SafeUseCaseFragment = _ref => {
|
|
7
7
|
let usecase = _ref.usecase,
|
|
8
8
|
watch = _ref.watch,
|
|
9
9
|
onMount = _ref.onMount,
|
|
10
|
+
onUpdate = _ref.onUpdate,
|
|
10
11
|
onChange = _ref.onChange;
|
|
11
12
|
const _useUseCase = useUseCase(usecase, {
|
|
12
13
|
watch,
|
|
@@ -14,8 +15,14 @@ export const SafeUseCaseFragment = _ref => {
|
|
|
14
15
|
}),
|
|
15
16
|
_useUseCase2 = _slicedToArray(_useUseCase, 1),
|
|
16
17
|
entity = _useUseCase2[0];
|
|
18
|
+
const onEntityUpdate = useMemoizedFn(() => {
|
|
19
|
+
onUpdate === null || onUpdate === void 0 || onUpdate(entity);
|
|
20
|
+
});
|
|
17
21
|
useMount(() => {
|
|
18
22
|
onMount === null || onMount === void 0 || onMount(entity);
|
|
19
23
|
});
|
|
24
|
+
useUpdateEffect(() => {
|
|
25
|
+
onEntityUpdate();
|
|
26
|
+
}, [entity, onEntityUpdate]);
|
|
20
27
|
return _jsx(Fragment, {});
|
|
21
28
|
};
|
|
@@ -4,5 +4,6 @@ export interface SafeUseCaseFragmentProps<T, TEntityReducers extends EntityReduc
|
|
|
4
4
|
usecase: InferableEntityUseCase<T, TEntityReducers>;
|
|
5
5
|
watch?: EntityWatchMap<T>;
|
|
6
6
|
onMount?(entity: T): void;
|
|
7
|
+
onUpdate?(entity: T): void;
|
|
7
8
|
onChange?(newEntity: T, oldEntity: T): void;
|
|
8
9
|
}
|
|
@@ -2,7 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
2
2
|
import { useConstantEntityReducers } from '../useConstantEntityReducers';
|
|
3
3
|
import { useContextualItem } from '../useContextualItem';
|
|
4
4
|
import { EntityStore } from '@mic-rexjs/usecases';
|
|
5
|
-
import { useCreation, useLatest, useMemoizedFn, useUpdate } from 'ahooks';
|
|
5
|
+
import { useCreation, useLatest, useMemoizedFn, useUpdate, useUpdateEffect } from 'ahooks';
|
|
6
6
|
import { useContext, useEffect, useRef } from 'react';
|
|
7
7
|
import { Statuses } from '../../enums/Statuses';
|
|
8
8
|
import { initStore } from '../../methods/initStore';
|
|
@@ -19,7 +19,7 @@ export const useStore = function (context, entity, statuses, options) {
|
|
|
19
19
|
const _ref = contextValue || {},
|
|
20
20
|
_ref$store = _ref.store,
|
|
21
21
|
contextStore = _ref$store === void 0 ? null : _ref$store;
|
|
22
|
-
const _useConstantEntityRed = useConstantEntityReducers(
|
|
22
|
+
const _useConstantEntityRed = useConstantEntityReducers([], valueUseCase),
|
|
23
23
|
recordValueDiff = _useConstantEntityRed.recordValueDiff;
|
|
24
24
|
const store = useContextualItem(contextStore, statuses, () => {
|
|
25
25
|
if (!entityRootEnabled) {
|
|
@@ -33,19 +33,39 @@ export const useStore = function (context, entity, statuses, options) {
|
|
|
33
33
|
storeRef.current = newStore;
|
|
34
34
|
return newStore;
|
|
35
35
|
}, deps);
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (watch) {
|
|
41
|
-
|
|
36
|
+
const value = store.value;
|
|
37
|
+
const prevValueRef = useRef(value);
|
|
38
|
+
const onTriggerWatchers = useMemoizedFn((newEntity, oldEntity) => {
|
|
39
|
+
const watch = optionsRef.current.watch;
|
|
40
|
+
if (!watch) {
|
|
41
|
+
return;
|
|
42
42
|
}
|
|
43
|
+
triggerWatchers(watch, newEntity, oldEntity);
|
|
44
|
+
});
|
|
45
|
+
const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
|
|
46
|
+
const onChange = optionsRef.current.onChange;
|
|
47
|
+
prevValueRef.current = newEntity;
|
|
48
|
+
onTriggerWatchers(newEntity, oldEntity);
|
|
43
49
|
onChange === null || onChange === void 0 || onChange(newEntity, oldEntity);
|
|
44
50
|
if (!entityRootEnabled) {
|
|
45
51
|
return;
|
|
46
52
|
}
|
|
47
53
|
update();
|
|
48
54
|
});
|
|
55
|
+
const onValueChange = useMemoizedFn(() => {
|
|
56
|
+
if (!entityRootEnabled) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const prevValue = prevValueRef.current;
|
|
60
|
+
if (value === prevValue) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
prevValueRef.current = value;
|
|
64
|
+
onTriggerWatchers(value, prevValue);
|
|
65
|
+
});
|
|
66
|
+
useUpdateEffect(() => {
|
|
67
|
+
onValueChange();
|
|
68
|
+
}, [value, onValueChange]);
|
|
49
69
|
/**
|
|
50
70
|
* 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
|
|
51
71
|
* 如果使用了 `setEntity` 则无法监控到变化
|
|
@@ -460,7 +460,7 @@ describe('useUseCase', () => {
|
|
|
460
460
|
const _result$current6 = _slicedToArray(result.current, 2),
|
|
461
461
|
setPath = _result$current6[1].setPath;
|
|
462
462
|
expect(onChangedDeps).toHaveBeenCalledTimes(1);
|
|
463
|
-
expect(onChangedDeps).toHaveBeenCalledWith([
|
|
463
|
+
expect(onChangedDeps).toHaveBeenCalledWith([0, 0, 1, 'xyz', 2, false]);
|
|
464
464
|
act(() => {
|
|
465
465
|
setPath(PATH_1);
|
|
466
466
|
});
|
|
@@ -1134,18 +1134,67 @@ describe('useUseCase', () => {
|
|
|
1134
1134
|
oldValue: ''
|
|
1135
1135
|
});
|
|
1136
1136
|
});
|
|
1137
|
+
test('`options.watch` should be trigger after update entity by entity initializer', () => {
|
|
1138
|
+
const onPathChange = jest.fn();
|
|
1139
|
+
const _renderHook29 = renderHook(function () {
|
|
1140
|
+
let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
1141
|
+
return useUseCase(function () {
|
|
1142
|
+
let currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
|
|
1143
|
+
return {
|
|
1144
|
+
...currentFile,
|
|
1145
|
+
path
|
|
1146
|
+
};
|
|
1147
|
+
}, fileUseCase, {
|
|
1148
|
+
watch: {
|
|
1149
|
+
path: onPathChange
|
|
1150
|
+
}
|
|
1151
|
+
}, [path]);
|
|
1152
|
+
}),
|
|
1153
|
+
rerender = _renderHook29.rerender;
|
|
1154
|
+
expect(onPathChange).toHaveBeenCalledTimes(0);
|
|
1155
|
+
act(() => {
|
|
1156
|
+
rerender(PATH_1);
|
|
1157
|
+
});
|
|
1158
|
+
expect(onPathChange).toHaveBeenCalledTimes(1);
|
|
1159
|
+
expect(onPathChange).toHaveBeenLastCalledWith({
|
|
1160
|
+
fieldPaths: ['path'],
|
|
1161
|
+
newEntity: {
|
|
1162
|
+
...defaultFile,
|
|
1163
|
+
path: PATH_1
|
|
1164
|
+
},
|
|
1165
|
+
oldEntity: defaultFile,
|
|
1166
|
+
newValue: PATH_1,
|
|
1167
|
+
oldValue: ''
|
|
1168
|
+
});
|
|
1169
|
+
act(() => {
|
|
1170
|
+
rerender(PATH_2);
|
|
1171
|
+
});
|
|
1172
|
+
expect(onPathChange).toHaveBeenLastCalledWith({
|
|
1173
|
+
fieldPaths: ['path'],
|
|
1174
|
+
newEntity: {
|
|
1175
|
+
...defaultFile,
|
|
1176
|
+
path: PATH_2
|
|
1177
|
+
},
|
|
1178
|
+
oldEntity: {
|
|
1179
|
+
...defaultFile,
|
|
1180
|
+
path: PATH_1
|
|
1181
|
+
},
|
|
1182
|
+
newValue: PATH_2,
|
|
1183
|
+
oldValue: PATH_1
|
|
1184
|
+
});
|
|
1185
|
+
});
|
|
1137
1186
|
test('`options.watch` should trigger the latest one', () => {
|
|
1138
1187
|
const onPathChange1 = jest.fn();
|
|
1139
1188
|
const onPathChange2 = jest.fn();
|
|
1140
1189
|
let onPathChange = onPathChange1;
|
|
1141
|
-
const
|
|
1190
|
+
const _renderHook30 = renderHook(() => {
|
|
1142
1191
|
return useUseCase(defaultFile, fileUseCase, {
|
|
1143
1192
|
watch: {
|
|
1144
1193
|
path: onPathChange
|
|
1145
1194
|
}
|
|
1146
1195
|
});
|
|
1147
1196
|
}),
|
|
1148
|
-
result =
|
|
1197
|
+
result = _renderHook30.result;
|
|
1149
1198
|
const cores = result.current;
|
|
1150
1199
|
const _cores12 = _slicedToArray(cores, 2),
|
|
1151
1200
|
_cores12$ = _cores12[1],
|
|
@@ -1196,7 +1245,7 @@ describe('useUseCase', () => {
|
|
|
1196
1245
|
const initialData = {};
|
|
1197
1246
|
const onExtChange = jest.fn();
|
|
1198
1247
|
const onSizeChange = jest.fn();
|
|
1199
|
-
const
|
|
1248
|
+
const _renderHook31 = renderHook(() => {
|
|
1200
1249
|
return useUseCase(initialData, fieldPathUseCase, {
|
|
1201
1250
|
watch: {
|
|
1202
1251
|
'list.ext': onExtChange,
|
|
@@ -1204,7 +1253,7 @@ describe('useUseCase', () => {
|
|
|
1204
1253
|
}
|
|
1205
1254
|
});
|
|
1206
1255
|
}),
|
|
1207
|
-
result =
|
|
1256
|
+
result = _renderHook31.result;
|
|
1208
1257
|
const cores = result.current;
|
|
1209
1258
|
const _cores13 = _slicedToArray(cores, 2),
|
|
1210
1259
|
setEntity = _cores13[1].setEntity;
|
|
@@ -1548,7 +1597,7 @@ describe('useUseCase', () => {
|
|
|
1548
1597
|
const lengthUseCase = () => {
|
|
1549
1598
|
return entityUseCase();
|
|
1550
1599
|
};
|
|
1551
|
-
const
|
|
1600
|
+
const _renderHook32 = renderHook(() => {
|
|
1552
1601
|
return useUseCase([], lengthUseCase, {
|
|
1553
1602
|
watch: {
|
|
1554
1603
|
length: onEntityLengthChange,
|
|
@@ -1556,7 +1605,7 @@ describe('useUseCase', () => {
|
|
|
1556
1605
|
}
|
|
1557
1606
|
});
|
|
1558
1607
|
}),
|
|
1559
|
-
result =
|
|
1608
|
+
result = _renderHook32.result;
|
|
1560
1609
|
const cores = result.current;
|
|
1561
1610
|
const _cores14 = _slicedToArray(cores, 2),
|
|
1562
1611
|
setEntity = _cores14[1].setEntity;
|
|
@@ -1591,14 +1640,14 @@ describe('useUseCase', () => {
|
|
|
1591
1640
|
test('`options.watch` should work with field path of nested array', () => {
|
|
1592
1641
|
const initialData = {};
|
|
1593
1642
|
const onChange = jest.fn();
|
|
1594
|
-
const
|
|
1643
|
+
const _renderHook33 = renderHook(() => {
|
|
1595
1644
|
return useUseCase(initialData, fieldPathUseCase, {
|
|
1596
1645
|
watch: {
|
|
1597
1646
|
'nestedList.size': onChange
|
|
1598
1647
|
}
|
|
1599
1648
|
});
|
|
1600
1649
|
}),
|
|
1601
|
-
result =
|
|
1650
|
+
result = _renderHook33.result;
|
|
1602
1651
|
const cores = result.current;
|
|
1603
1652
|
const _cores15 = _slicedToArray(cores, 2),
|
|
1604
1653
|
setEntity = _cores15[1].setEntity;
|
|
@@ -1698,7 +1747,7 @@ describe('useUseCase', () => {
|
|
|
1698
1747
|
const initialData = {};
|
|
1699
1748
|
const onExtChange = jest.fn();
|
|
1700
1749
|
const onSizeChange = jest.fn();
|
|
1701
|
-
const
|
|
1750
|
+
const _renderHook34 = renderHook(() => {
|
|
1702
1751
|
return useUseCase(initialData, fieldPathUseCase, {
|
|
1703
1752
|
watch: {
|
|
1704
1753
|
'obj.file.ext': onExtChange,
|
|
@@ -1706,7 +1755,7 @@ describe('useUseCase', () => {
|
|
|
1706
1755
|
}
|
|
1707
1756
|
});
|
|
1708
1757
|
}),
|
|
1709
|
-
result =
|
|
1758
|
+
result = _renderHook34.result;
|
|
1710
1759
|
const cores = result.current;
|
|
1711
1760
|
const _cores16 = _slicedToArray(cores, 2),
|
|
1712
1761
|
setEntity = _cores16[1].setEntity;
|
|
@@ -2375,38 +2424,38 @@ describe('useUseCase', () => {
|
|
|
2375
2424
|
});
|
|
2376
2425
|
describe('`useUseCase` should work the same as `useReducers`', () => {
|
|
2377
2426
|
test('`entity` should equal `defaultFile`', () => {
|
|
2378
|
-
const
|
|
2427
|
+
const _renderHook35 = renderHook(() => {
|
|
2379
2428
|
return useUseCase(mathUseCase);
|
|
2380
2429
|
}),
|
|
2381
|
-
result =
|
|
2430
|
+
result = _renderHook35.result;
|
|
2382
2431
|
const reducers = result.current;
|
|
2383
2432
|
expect(Array.isArray(reducers)).toBe(false);
|
|
2384
2433
|
});
|
|
2385
2434
|
test('returned reducer should work', () => {
|
|
2386
|
-
const
|
|
2435
|
+
const _renderHook36 = renderHook(() => {
|
|
2387
2436
|
return useUseCase(mathUseCase);
|
|
2388
2437
|
}),
|
|
2389
|
-
result =
|
|
2438
|
+
result = _renderHook36.result;
|
|
2390
2439
|
const reducers = result.current;
|
|
2391
2440
|
const add = reducers.add;
|
|
2392
2441
|
expect(add(1, 2)).toBe(3);
|
|
2393
2442
|
});
|
|
2394
2443
|
test('`usecase` should be called only once if deps has not provided', () => {
|
|
2395
2444
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2396
|
-
const
|
|
2445
|
+
const _renderHook37 = renderHook(() => {
|
|
2397
2446
|
return useUseCase(mockUseCase);
|
|
2398
2447
|
}),
|
|
2399
|
-
rerender =
|
|
2448
|
+
rerender = _renderHook37.rerender;
|
|
2400
2449
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2401
2450
|
rerender();
|
|
2402
2451
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2403
2452
|
});
|
|
2404
2453
|
test('`usecase` should be called only once if deps has not changed', () => {
|
|
2405
2454
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2406
|
-
const
|
|
2455
|
+
const _renderHook38 = renderHook(() => {
|
|
2407
2456
|
return useUseCase(mockUseCase, {}, [1, 'x']);
|
|
2408
2457
|
}),
|
|
2409
|
-
rerender =
|
|
2458
|
+
rerender = _renderHook38.rerender;
|
|
2410
2459
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2411
2460
|
rerender();
|
|
2412
2461
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
@@ -2414,10 +2463,10 @@ describe('useUseCase', () => {
|
|
|
2414
2463
|
test('`usecase` should be called if deps has changed', () => {
|
|
2415
2464
|
let i = 0;
|
|
2416
2465
|
const mockUseCase = jest.fn(mathUseCase);
|
|
2417
|
-
const
|
|
2466
|
+
const _renderHook39 = renderHook(() => {
|
|
2418
2467
|
return useUseCase(mockUseCase, {}, [i++, 'x']);
|
|
2419
2468
|
}),
|
|
2420
|
-
rerender =
|
|
2469
|
+
rerender = _renderHook39.rerender;
|
|
2421
2470
|
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2422
2471
|
rerender();
|
|
2423
2472
|
expect(mockUseCase).toHaveBeenCalledTimes(2);
|
|
@@ -2501,12 +2550,12 @@ describe('useUseCase', () => {
|
|
|
2501
2550
|
expect(subtractionReducer).toHaveReturnedWith(4);
|
|
2502
2551
|
});
|
|
2503
2552
|
test('`options.extraValue` should be added after call `add` method', () => {
|
|
2504
|
-
const
|
|
2553
|
+
const _renderHook40 = renderHook(() => {
|
|
2505
2554
|
return useUseCase(mathUseCase, {
|
|
2506
2555
|
extraValue: 5
|
|
2507
2556
|
});
|
|
2508
2557
|
}),
|
|
2509
|
-
result =
|
|
2558
|
+
result = _renderHook40.result;
|
|
2510
2559
|
const reducers = result.current;
|
|
2511
2560
|
const add = reducers.add;
|
|
2512
2561
|
expect(add(1, 2)).toBe(8);
|
|
@@ -2514,7 +2563,7 @@ describe('useUseCase', () => {
|
|
|
2514
2563
|
test('when `options` has changed, it should not trigger update', () => {
|
|
2515
2564
|
const onUpdate = jest.fn();
|
|
2516
2565
|
const onDeepUpdate = jest.fn();
|
|
2517
|
-
const
|
|
2566
|
+
const _renderHook41 = renderHook(() => {
|
|
2518
2567
|
const _useState7 = useState(0),
|
|
2519
2568
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
2520
2569
|
extraValue = _useState8[0],
|
|
@@ -2530,7 +2579,7 @@ describe('useUseCase', () => {
|
|
|
2530
2579
|
}, [reducers]);
|
|
2531
2580
|
return setExtraValue;
|
|
2532
2581
|
}),
|
|
2533
|
-
result =
|
|
2582
|
+
result = _renderHook41.result;
|
|
2534
2583
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2535
2584
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2536
2585
|
act(() => {
|
|
@@ -2542,7 +2591,7 @@ describe('useUseCase', () => {
|
|
|
2542
2591
|
test('when `deps` change, it should update reducers', () => {
|
|
2543
2592
|
const onUpdate = jest.fn();
|
|
2544
2593
|
const onDeepUpdate = jest.fn();
|
|
2545
|
-
const
|
|
2594
|
+
const _renderHook42 = renderHook(() => {
|
|
2546
2595
|
const _useState9 = useState(0),
|
|
2547
2596
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
2548
2597
|
extraValue = _useState0[0],
|
|
@@ -2558,7 +2607,7 @@ describe('useUseCase', () => {
|
|
|
2558
2607
|
}, [reducers]);
|
|
2559
2608
|
return setExtraValue;
|
|
2560
2609
|
}),
|
|
2561
|
-
result =
|
|
2610
|
+
result = _renderHook42.result;
|
|
2562
2611
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2563
2612
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2564
2613
|
act(() => {
|
|
@@ -2570,7 +2619,7 @@ describe('useUseCase', () => {
|
|
|
2570
2619
|
test('empty `deps` should not update reducers', () => {
|
|
2571
2620
|
const onUpdate = jest.fn();
|
|
2572
2621
|
const onDeepUpdate = jest.fn();
|
|
2573
|
-
const
|
|
2622
|
+
const _renderHook43 = renderHook(() => {
|
|
2574
2623
|
const _useState1 = useState(0),
|
|
2575
2624
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
2576
2625
|
extraValue = _useState10[0],
|
|
@@ -2586,7 +2635,7 @@ describe('useUseCase', () => {
|
|
|
2586
2635
|
}, [reducers]);
|
|
2587
2636
|
return setExtraValue;
|
|
2588
2637
|
}),
|
|
2589
|
-
result =
|
|
2638
|
+
result = _renderHook43.result;
|
|
2590
2639
|
expect(onUpdate).toHaveBeenCalledTimes(0);
|
|
2591
2640
|
expect(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2592
2641
|
act(() => {
|
|
@@ -82,21 +82,37 @@ export const valueUseCase = createUseCase(() => {
|
|
|
82
82
|
const hasOldField = hasField(oldValue, key);
|
|
83
83
|
const hasNewField = hasField(newValue, key);
|
|
84
84
|
if (hasOldField || hasNewField) {
|
|
85
|
-
const
|
|
86
|
-
const
|
|
85
|
+
const oldFieldDescriptor = Object.getOwnPropertyDescriptor(hasOldField ? oldValue : {}, key) || {};
|
|
86
|
+
const newFieldDescriptor = Object.getOwnPropertyDescriptor(hasNewField ? newValue : {}, key) || {};
|
|
87
|
+
const oldSubValue = oldFieldDescriptor.value,
|
|
88
|
+
oldFieldGet = oldFieldDescriptor.get,
|
|
89
|
+
oldFieldSet = oldFieldDescriptor.set;
|
|
90
|
+
const newSubValue = newFieldDescriptor.value,
|
|
91
|
+
newFieldGet = newFieldDescriptor.get,
|
|
92
|
+
newFieldSet = newFieldDescriptor.set;
|
|
87
93
|
const result = {
|
|
88
94
|
fieldPaths: [...fieldPaths, key],
|
|
89
95
|
newEntity: value,
|
|
90
|
-
newValue:
|
|
96
|
+
newValue: newSubValue,
|
|
91
97
|
oldEntity: entity,
|
|
92
|
-
oldValue:
|
|
98
|
+
oldValue: oldSubValue
|
|
93
99
|
};
|
|
94
100
|
if (subFieldPath) {
|
|
95
101
|
currentFieldPath = subFieldPath;
|
|
96
102
|
list.push(result);
|
|
97
103
|
continue;
|
|
98
104
|
}
|
|
99
|
-
|
|
105
|
+
const hasOldFieldGet = typeof oldFieldGet === 'function';
|
|
106
|
+
const hasOldFieldSet = typeof oldFieldSet === 'function';
|
|
107
|
+
const hasNewFieldGet = typeof newFieldGet === 'function';
|
|
108
|
+
const hasNewFieldSet = typeof newFieldSet === 'function';
|
|
109
|
+
const hasOldFieldAccessor = hasOldFieldGet || hasOldFieldSet;
|
|
110
|
+
const hasNewFieldAccessor = hasNewFieldGet || hasNewFieldSet;
|
|
111
|
+
// 如果都是访问器
|
|
112
|
+
if (hasOldFieldAccessor && hasNewFieldAccessor) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (newSubValue === oldSubValue) {
|
|
100
116
|
continue;
|
|
101
117
|
}
|
|
102
118
|
allMatched = false;
|
|
@@ -14,6 +14,7 @@ var SafeUseCaseFragment = exports.SafeUseCaseFragment = function SafeUseCaseFrag
|
|
|
14
14
|
var usecase = _ref.usecase,
|
|
15
15
|
watch = _ref.watch,
|
|
16
16
|
onMount = _ref.onMount,
|
|
17
|
+
onUpdate = _ref.onUpdate,
|
|
17
18
|
onChange = _ref.onChange;
|
|
18
19
|
var _useUseCase = (0, _useUseCase3.useUseCase)(usecase, {
|
|
19
20
|
watch: watch,
|
|
@@ -21,8 +22,14 @@ var SafeUseCaseFragment = exports.SafeUseCaseFragment = function SafeUseCaseFrag
|
|
|
21
22
|
}),
|
|
22
23
|
_useUseCase2 = (0, _slicedToArray2["default"])(_useUseCase, 1),
|
|
23
24
|
entity = _useUseCase2[0];
|
|
25
|
+
var onEntityUpdate = (0, _ahooks.useMemoizedFn)(function () {
|
|
26
|
+
onUpdate === null || onUpdate === void 0 || onUpdate(entity);
|
|
27
|
+
});
|
|
24
28
|
(0, _ahooks.useMount)(function () {
|
|
25
29
|
onMount === null || onMount === void 0 || onMount(entity);
|
|
26
30
|
});
|
|
31
|
+
(0, _ahooks.useUpdateEffect)(function () {
|
|
32
|
+
onEntityUpdate();
|
|
33
|
+
}, [entity, onEntityUpdate]);
|
|
27
34
|
return (0, _jsxRuntime.jsx)(_react.Fragment, {});
|
|
28
35
|
};
|
|
@@ -26,7 +26,7 @@ var useStore = exports.useStore = function useStore(context, entity, statuses, o
|
|
|
26
26
|
var _ref = contextValue || {},
|
|
27
27
|
_ref$store = _ref.store,
|
|
28
28
|
contextStore = _ref$store === void 0 ? null : _ref$store;
|
|
29
|
-
var _useConstantEntityRed = (0, _useConstantEntityReducers.useConstantEntityReducers)(
|
|
29
|
+
var _useConstantEntityRed = (0, _useConstantEntityReducers.useConstantEntityReducers)([], _valueUseCase.valueUseCase),
|
|
30
30
|
recordValueDiff = _useConstantEntityRed.recordValueDiff;
|
|
31
31
|
var store = (0, _useContextualItem.useContextualItem)(contextStore, statuses, function () {
|
|
32
32
|
if (!entityRootEnabled) {
|
|
@@ -40,19 +40,39 @@ var useStore = exports.useStore = function useStore(context, entity, statuses, o
|
|
|
40
40
|
storeRef.current = newStore;
|
|
41
41
|
return newStore;
|
|
42
42
|
}, deps);
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (watch) {
|
|
48
|
-
|
|
43
|
+
var value = store.value;
|
|
44
|
+
var prevValueRef = (0, _react.useRef)(value);
|
|
45
|
+
var onTriggerWatchers = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
|
|
46
|
+
var watch = optionsRef.current.watch;
|
|
47
|
+
if (!watch) {
|
|
48
|
+
return;
|
|
49
49
|
}
|
|
50
|
+
(0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
|
|
51
|
+
});
|
|
52
|
+
var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
|
|
53
|
+
var onChange = optionsRef.current.onChange;
|
|
54
|
+
prevValueRef.current = newEntity;
|
|
55
|
+
onTriggerWatchers(newEntity, oldEntity);
|
|
50
56
|
onChange === null || onChange === void 0 || onChange(newEntity, oldEntity);
|
|
51
57
|
if (!entityRootEnabled) {
|
|
52
58
|
return;
|
|
53
59
|
}
|
|
54
60
|
update();
|
|
55
61
|
});
|
|
62
|
+
var onValueChange = (0, _ahooks.useMemoizedFn)(function () {
|
|
63
|
+
if (!entityRootEnabled) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
var prevValue = prevValueRef.current;
|
|
67
|
+
if (value === prevValue) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
prevValueRef.current = value;
|
|
71
|
+
onTriggerWatchers(value, prevValue);
|
|
72
|
+
});
|
|
73
|
+
(0, _ahooks.useUpdateEffect)(function () {
|
|
74
|
+
onValueChange();
|
|
75
|
+
}, [value, onValueChange]);
|
|
56
76
|
/**
|
|
57
77
|
* 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
|
|
58
78
|
* 如果使用了 `setEntity` 则无法监控到变化
|
|
@@ -550,7 +550,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
550
550
|
var _result$current6 = (0, _slicedToArray2["default"])(result.current, 2),
|
|
551
551
|
setPath = _result$current6[1].setPath;
|
|
552
552
|
(0, _globals.expect)(onChangedDeps).toHaveBeenCalledTimes(1);
|
|
553
|
-
(0, _globals.expect)(onChangedDeps).toHaveBeenCalledWith([
|
|
553
|
+
(0, _globals.expect)(onChangedDeps).toHaveBeenCalledWith([0, 0, 1, 'xyz', 2, false]);
|
|
554
554
|
(0, _react.act)(function () {
|
|
555
555
|
setPath(PATH_1);
|
|
556
556
|
});
|
|
@@ -1210,18 +1210,63 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1210
1210
|
oldValue: ''
|
|
1211
1211
|
});
|
|
1212
1212
|
});
|
|
1213
|
+
(0, _globals.test)('`options.watch` should be trigger after update entity by entity initializer', function () {
|
|
1214
|
+
var onPathChange = _globals.jest.fn();
|
|
1215
|
+
var _renderHook29 = (0, _react.renderHook)(function () {
|
|
1216
|
+
var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
1217
|
+
return (0, _.useUseCase)(function () {
|
|
1218
|
+
var currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
|
|
1219
|
+
return _objectSpread(_objectSpread({}, currentFile), {}, {
|
|
1220
|
+
path: path
|
|
1221
|
+
});
|
|
1222
|
+
}, fileUseCase, {
|
|
1223
|
+
watch: {
|
|
1224
|
+
path: onPathChange
|
|
1225
|
+
}
|
|
1226
|
+
}, [path]);
|
|
1227
|
+
}),
|
|
1228
|
+
rerender = _renderHook29.rerender;
|
|
1229
|
+
(0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(0);
|
|
1230
|
+
(0, _react.act)(function () {
|
|
1231
|
+
rerender(PATH_1);
|
|
1232
|
+
});
|
|
1233
|
+
(0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(1);
|
|
1234
|
+
(0, _globals.expect)(onPathChange).toHaveBeenLastCalledWith({
|
|
1235
|
+
fieldPaths: ['path'],
|
|
1236
|
+
newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
|
|
1237
|
+
path: PATH_1
|
|
1238
|
+
}),
|
|
1239
|
+
oldEntity: defaultFile,
|
|
1240
|
+
newValue: PATH_1,
|
|
1241
|
+
oldValue: ''
|
|
1242
|
+
});
|
|
1243
|
+
(0, _react.act)(function () {
|
|
1244
|
+
rerender(PATH_2);
|
|
1245
|
+
});
|
|
1246
|
+
(0, _globals.expect)(onPathChange).toHaveBeenLastCalledWith({
|
|
1247
|
+
fieldPaths: ['path'],
|
|
1248
|
+
newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
|
|
1249
|
+
path: PATH_2
|
|
1250
|
+
}),
|
|
1251
|
+
oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
|
|
1252
|
+
path: PATH_1
|
|
1253
|
+
}),
|
|
1254
|
+
newValue: PATH_2,
|
|
1255
|
+
oldValue: PATH_1
|
|
1256
|
+
});
|
|
1257
|
+
});
|
|
1213
1258
|
(0, _globals.test)('`options.watch` should trigger the latest one', function () {
|
|
1214
1259
|
var onPathChange1 = _globals.jest.fn();
|
|
1215
1260
|
var onPathChange2 = _globals.jest.fn();
|
|
1216
1261
|
var onPathChange = onPathChange1;
|
|
1217
|
-
var
|
|
1262
|
+
var _renderHook30 = (0, _react.renderHook)(function () {
|
|
1218
1263
|
return (0, _.useUseCase)(defaultFile, fileUseCase, {
|
|
1219
1264
|
watch: {
|
|
1220
1265
|
path: onPathChange
|
|
1221
1266
|
}
|
|
1222
1267
|
});
|
|
1223
1268
|
}),
|
|
1224
|
-
result =
|
|
1269
|
+
result = _renderHook30.result;
|
|
1225
1270
|
var cores = result.current;
|
|
1226
1271
|
var _cores12 = (0, _slicedToArray2["default"])(cores, 2),
|
|
1227
1272
|
_cores12$ = _cores12[1],
|
|
@@ -1269,7 +1314,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1269
1314
|
var initialData = {};
|
|
1270
1315
|
var onExtChange = _globals.jest.fn();
|
|
1271
1316
|
var onSizeChange = _globals.jest.fn();
|
|
1272
|
-
var
|
|
1317
|
+
var _renderHook31 = (0, _react.renderHook)(function () {
|
|
1273
1318
|
return (0, _.useUseCase)(initialData, fieldPathUseCase, {
|
|
1274
1319
|
watch: {
|
|
1275
1320
|
'list.ext': onExtChange,
|
|
@@ -1277,7 +1322,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1277
1322
|
}
|
|
1278
1323
|
});
|
|
1279
1324
|
}),
|
|
1280
|
-
result =
|
|
1325
|
+
result = _renderHook31.result;
|
|
1281
1326
|
var cores = result.current;
|
|
1282
1327
|
var _cores13 = (0, _slicedToArray2["default"])(cores, 2),
|
|
1283
1328
|
setEntity = _cores13[1].setEntity;
|
|
@@ -1575,7 +1620,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1575
1620
|
var lengthUseCase = function lengthUseCase() {
|
|
1576
1621
|
return (0, _usecases.entityUseCase)();
|
|
1577
1622
|
};
|
|
1578
|
-
var
|
|
1623
|
+
var _renderHook32 = (0, _react.renderHook)(function () {
|
|
1579
1624
|
return (0, _.useUseCase)([], lengthUseCase, {
|
|
1580
1625
|
watch: {
|
|
1581
1626
|
length: onEntityLengthChange,
|
|
@@ -1583,7 +1628,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1583
1628
|
}
|
|
1584
1629
|
});
|
|
1585
1630
|
}),
|
|
1586
|
-
result =
|
|
1631
|
+
result = _renderHook32.result;
|
|
1587
1632
|
var cores = result.current;
|
|
1588
1633
|
var _cores14 = (0, _slicedToArray2["default"])(cores, 2),
|
|
1589
1634
|
setEntity = _cores14[1].setEntity;
|
|
@@ -1618,14 +1663,14 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1618
1663
|
(0, _globals.test)('`options.watch` should work with field path of nested array', function () {
|
|
1619
1664
|
var initialData = {};
|
|
1620
1665
|
var onChange = _globals.jest.fn();
|
|
1621
|
-
var
|
|
1666
|
+
var _renderHook33 = (0, _react.renderHook)(function () {
|
|
1622
1667
|
return (0, _.useUseCase)(initialData, fieldPathUseCase, {
|
|
1623
1668
|
watch: {
|
|
1624
1669
|
'nestedList.size': onChange
|
|
1625
1670
|
}
|
|
1626
1671
|
});
|
|
1627
1672
|
}),
|
|
1628
|
-
result =
|
|
1673
|
+
result = _renderHook33.result;
|
|
1629
1674
|
var cores = result.current;
|
|
1630
1675
|
var _cores15 = (0, _slicedToArray2["default"])(cores, 2),
|
|
1631
1676
|
setEntity = _cores15[1].setEntity;
|
|
@@ -1713,7 +1758,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1713
1758
|
var initialData = {};
|
|
1714
1759
|
var onExtChange = _globals.jest.fn();
|
|
1715
1760
|
var onSizeChange = _globals.jest.fn();
|
|
1716
|
-
var
|
|
1761
|
+
var _renderHook34 = (0, _react.renderHook)(function () {
|
|
1717
1762
|
return (0, _.useUseCase)(initialData, fieldPathUseCase, {
|
|
1718
1763
|
watch: {
|
|
1719
1764
|
'obj.file.ext': onExtChange,
|
|
@@ -1721,7 +1766,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1721
1766
|
}
|
|
1722
1767
|
});
|
|
1723
1768
|
}),
|
|
1724
|
-
result =
|
|
1769
|
+
result = _renderHook34.result;
|
|
1725
1770
|
var cores = result.current;
|
|
1726
1771
|
var _cores16 = (0, _slicedToArray2["default"])(cores, 2),
|
|
1727
1772
|
setEntity = _cores16[1].setEntity;
|
|
@@ -2377,38 +2422,38 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2377
2422
|
});
|
|
2378
2423
|
(0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
|
|
2379
2424
|
(0, _globals.test)('`entity` should equal `defaultFile`', function () {
|
|
2380
|
-
var
|
|
2425
|
+
var _renderHook35 = (0, _react.renderHook)(function () {
|
|
2381
2426
|
return (0, _.useUseCase)(mathUseCase);
|
|
2382
2427
|
}),
|
|
2383
|
-
result =
|
|
2428
|
+
result = _renderHook35.result;
|
|
2384
2429
|
var reducers = result.current;
|
|
2385
2430
|
(0, _globals.expect)(Array.isArray(reducers)).toBe(false);
|
|
2386
2431
|
});
|
|
2387
2432
|
(0, _globals.test)('returned reducer should work', function () {
|
|
2388
|
-
var
|
|
2433
|
+
var _renderHook36 = (0, _react.renderHook)(function () {
|
|
2389
2434
|
return (0, _.useUseCase)(mathUseCase);
|
|
2390
2435
|
}),
|
|
2391
|
-
result =
|
|
2436
|
+
result = _renderHook36.result;
|
|
2392
2437
|
var reducers = result.current;
|
|
2393
2438
|
var add = reducers.add;
|
|
2394
2439
|
(0, _globals.expect)(add(1, 2)).toBe(3);
|
|
2395
2440
|
});
|
|
2396
2441
|
(0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
|
|
2397
2442
|
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
2398
|
-
var
|
|
2443
|
+
var _renderHook37 = (0, _react.renderHook)(function () {
|
|
2399
2444
|
return (0, _.useUseCase)(mockUseCase);
|
|
2400
2445
|
}),
|
|
2401
|
-
rerender =
|
|
2446
|
+
rerender = _renderHook37.rerender;
|
|
2402
2447
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2403
2448
|
rerender();
|
|
2404
2449
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2405
2450
|
});
|
|
2406
2451
|
(0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
|
|
2407
2452
|
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
2408
|
-
var
|
|
2453
|
+
var _renderHook38 = (0, _react.renderHook)(function () {
|
|
2409
2454
|
return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
|
|
2410
2455
|
}),
|
|
2411
|
-
rerender =
|
|
2456
|
+
rerender = _renderHook38.rerender;
|
|
2412
2457
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2413
2458
|
rerender();
|
|
2414
2459
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
@@ -2416,10 +2461,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2416
2461
|
(0, _globals.test)('`usecase` should be called if deps has changed', function () {
|
|
2417
2462
|
var i = 0;
|
|
2418
2463
|
var mockUseCase = _globals.jest.fn(mathUseCase);
|
|
2419
|
-
var
|
|
2464
|
+
var _renderHook39 = (0, _react.renderHook)(function () {
|
|
2420
2465
|
return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
|
|
2421
2466
|
}),
|
|
2422
|
-
rerender =
|
|
2467
|
+
rerender = _renderHook39.rerender;
|
|
2423
2468
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
2424
2469
|
rerender();
|
|
2425
2470
|
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
|
|
@@ -2503,12 +2548,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2503
2548
|
(0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
|
|
2504
2549
|
});
|
|
2505
2550
|
(0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
|
|
2506
|
-
var
|
|
2551
|
+
var _renderHook40 = (0, _react.renderHook)(function () {
|
|
2507
2552
|
return (0, _.useUseCase)(mathUseCase, {
|
|
2508
2553
|
extraValue: 5
|
|
2509
2554
|
});
|
|
2510
2555
|
}),
|
|
2511
|
-
result =
|
|
2556
|
+
result = _renderHook40.result;
|
|
2512
2557
|
var reducers = result.current;
|
|
2513
2558
|
var add = reducers.add;
|
|
2514
2559
|
(0, _globals.expect)(add(1, 2)).toBe(8);
|
|
@@ -2516,7 +2561,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2516
2561
|
(0, _globals.test)('when `options` has changed, it should not trigger update', function () {
|
|
2517
2562
|
var onUpdate = _globals.jest.fn();
|
|
2518
2563
|
var onDeepUpdate = _globals.jest.fn();
|
|
2519
|
-
var
|
|
2564
|
+
var _renderHook41 = (0, _react.renderHook)(function () {
|
|
2520
2565
|
var _useState7 = (0, _react2.useState)(0),
|
|
2521
2566
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
2522
2567
|
extraValue = _useState8[0],
|
|
@@ -2532,7 +2577,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2532
2577
|
}, [reducers]);
|
|
2533
2578
|
return setExtraValue;
|
|
2534
2579
|
}),
|
|
2535
|
-
result =
|
|
2580
|
+
result = _renderHook41.result;
|
|
2536
2581
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2537
2582
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2538
2583
|
(0, _react.act)(function () {
|
|
@@ -2544,7 +2589,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2544
2589
|
(0, _globals.test)('when `deps` change, it should update reducers', function () {
|
|
2545
2590
|
var onUpdate = _globals.jest.fn();
|
|
2546
2591
|
var onDeepUpdate = _globals.jest.fn();
|
|
2547
|
-
var
|
|
2592
|
+
var _renderHook42 = (0, _react.renderHook)(function () {
|
|
2548
2593
|
var _useState9 = (0, _react2.useState)(0),
|
|
2549
2594
|
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
2550
2595
|
extraValue = _useState0[0],
|
|
@@ -2560,7 +2605,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2560
2605
|
}, [reducers]);
|
|
2561
2606
|
return setExtraValue;
|
|
2562
2607
|
}),
|
|
2563
|
-
result =
|
|
2608
|
+
result = _renderHook42.result;
|
|
2564
2609
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2565
2610
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2566
2611
|
(0, _react.act)(function () {
|
|
@@ -2572,7 +2617,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2572
2617
|
(0, _globals.test)('empty `deps` should not update reducers', function () {
|
|
2573
2618
|
var onUpdate = _globals.jest.fn();
|
|
2574
2619
|
var onDeepUpdate = _globals.jest.fn();
|
|
2575
|
-
var
|
|
2620
|
+
var _renderHook43 = (0, _react.renderHook)(function () {
|
|
2576
2621
|
var _useState1 = (0, _react2.useState)(0),
|
|
2577
2622
|
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
2578
2623
|
extraValue = _useState10[0],
|
|
@@ -2588,7 +2633,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
2588
2633
|
}, [reducers]);
|
|
2589
2634
|
return setExtraValue;
|
|
2590
2635
|
}),
|
|
2591
|
-
result =
|
|
2636
|
+
result = _renderHook43.result;
|
|
2592
2637
|
(0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
|
|
2593
2638
|
(0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
|
|
2594
2639
|
(0, _react.act)(function () {
|
|
@@ -95,21 +95,37 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
|
|
|
95
95
|
var hasOldField = hasField(oldValue, key);
|
|
96
96
|
var hasNewField = hasField(newValue, key);
|
|
97
97
|
if (hasOldField || hasNewField) {
|
|
98
|
-
var
|
|
99
|
-
var
|
|
98
|
+
var oldFieldDescriptor = Object.getOwnPropertyDescriptor(hasOldField ? oldValue : {}, key) || {};
|
|
99
|
+
var newFieldDescriptor = Object.getOwnPropertyDescriptor(hasNewField ? newValue : {}, key) || {};
|
|
100
|
+
var oldSubValue = oldFieldDescriptor.value,
|
|
101
|
+
oldFieldGet = oldFieldDescriptor.get,
|
|
102
|
+
oldFieldSet = oldFieldDescriptor.set;
|
|
103
|
+
var newSubValue = newFieldDescriptor.value,
|
|
104
|
+
newFieldGet = newFieldDescriptor.get,
|
|
105
|
+
newFieldSet = newFieldDescriptor.set;
|
|
100
106
|
var result = {
|
|
101
107
|
fieldPaths: [].concat((0, _toConsumableArray2["default"])(fieldPaths), [key]),
|
|
102
108
|
newEntity: value,
|
|
103
|
-
newValue:
|
|
109
|
+
newValue: newSubValue,
|
|
104
110
|
oldEntity: entity,
|
|
105
|
-
oldValue:
|
|
111
|
+
oldValue: oldSubValue
|
|
106
112
|
};
|
|
107
113
|
if (subFieldPath) {
|
|
108
114
|
currentFieldPath = subFieldPath;
|
|
109
115
|
list.push(result);
|
|
110
116
|
continue;
|
|
111
117
|
}
|
|
112
|
-
|
|
118
|
+
var hasOldFieldGet = typeof oldFieldGet === 'function';
|
|
119
|
+
var hasOldFieldSet = typeof oldFieldSet === 'function';
|
|
120
|
+
var hasNewFieldGet = typeof newFieldGet === 'function';
|
|
121
|
+
var hasNewFieldSet = typeof newFieldSet === 'function';
|
|
122
|
+
var hasOldFieldAccessor = hasOldFieldGet || hasOldFieldSet;
|
|
123
|
+
var hasNewFieldAccessor = hasNewFieldGet || hasNewFieldSet;
|
|
124
|
+
// 如果都是访问器
|
|
125
|
+
if (hasOldFieldAccessor && hasNewFieldAccessor) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (newSubValue === oldSubValue) {
|
|
113
129
|
continue;
|
|
114
130
|
}
|
|
115
131
|
allMatched = false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mic-rexjs/usecases-react",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.4",
|
|
4
4
|
"description": "React-based solution for use usecases of Clean Architecture",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": false,
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"license": "MIT",
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@mic-rexjs/usecases": "^3.0.
|
|
38
|
+
"@mic-rexjs/usecases": "^3.0.4",
|
|
39
39
|
"react": ">=16.8.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@eslint/js": "^10.0.1",
|
|
55
55
|
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
|
|
56
56
|
"@jest/globals": "^30.3.0",
|
|
57
|
-
"@mic-rexjs/usecases": "^3.0.
|
|
57
|
+
"@mic-rexjs/usecases": "^3.0.4",
|
|
58
58
|
"@testing-library/dom": "^10.4.1",
|
|
59
59
|
"@testing-library/react": "^16.3.2",
|
|
60
60
|
"@types/node": "^25.6.0",
|