@mic-rexjs/usecases-react 2.9.5 → 2.10.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/components/UseCaseFragment/index.d.ts +1 -1
- package/es/components/UseCaseFragment/index.js +6 -2
- package/es/components/UseCaseFragment/types.d.ts +1 -0
- package/es/hooks/useUseCase/index.test.js +17 -0
- package/es/hooks/useUseCase/types.d.ts +5 -1
- package/lib/components/UseCaseFragment/index.js +13 -4
- package/lib/hooks/useUseCase/index.test.js +18 -0
- 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 t={20:(t,e,r)=>{"use strict";var n=r(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(t,e,r){var n,c={},f=null,l=null;for(n in void 0!==r&&(f=""+r),void 0!==e.key&&(f=""+e.key),void 0!==e.ref&&(l=e.ref),e)u.call(e,n)&&!a.hasOwnProperty(n)&&(c[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps)void 0===c[n]&&(c[n]=e[n]);return{$$typeof:o,type:t,key:f,ref:l,props:c,_owner:i.current}}},848:(t,e,r)=>{"use strict";t.exports=r(20)},594:t=>{"use strict";t.exports=React}},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";r.r(n),r.d(n,{UseCaseFragment:()=>A,useUseCase:()=>x});var t=r(848),e=r(594),o=r.n(e);function u(t){return u="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},u(t)}function i(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=u(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==u(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function c(t,e){if(t){if("string"==typeof t)return a(t,e);var r=Object.prototype.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 f(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)||c(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(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,i,a=[],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)&&(a.push(n.value),a.length!==e);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(t,e)||c(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=ahooks;var y=function(t){return l((0,e.useState)((function(){return t})),1)[0]},v=function(t){return l((0,e.useState)(t),1)[0]};const b=usecases;var d,p;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(d||(d={})),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"}(p||(p={}));var E=(0,b.createUseCase)((function(){var t=new Map,r=(0,e.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&p.EntityEnabled)===p.EntityEnabled?{store:t,reducers:e,statuses:r}:{reducers:e,statuses:r}},registerUseCase:function(n,o){if(t.has(n)){var u=t.get(n),i=u.value,a=u.times;return t.set(n,{value:i,times:a+1}),i}if((o&d.Entity)!==d.Entity)return r;var c=(0,e.createContext)(null);return t.set(n,{value:c,times:1}),c},unregisterUseCase:function(e,r){if((r&d.Entity)!==d.Entity)return!1;if(!t.has(e))return!1;var n=t.get(e),o=n.value,u=n.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),h=function(){return v((function(){return E()}))};var m=["watch","onChange","options"];function O(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 g(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?O(Object(r),!0).forEach((function(e){i(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var j=function(t,e){var r=t.length;if(r!==e.length)return!1;for(var n=0;n<r;n++)if(t[n]!==e[n])return!1;return!0},w=function(t,e){var r,n=e||{},o=n.onShouldCache,u=void 0===o?function(){return!0}:o,i=n.onCompare,a=void 0===i?function(t,e){return j(t,e)}:i;return function(){for(var e=u(),n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];if(r&&e){var c=r,f=c.parameters,l=c.returnValue;if(a(f,o))return l}var s=t.apply(void 0,o);return e&&(r={parameters:o,returnValue:s}),s}},S=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,s.useLatest)(r),u=(0,s.useCreation)((function(){return w(o.current,{onCompare:function(){return!0}})}),[n,o]);return(0,s.useCreation)((function(){return(e&p.RootEnabled)!==p.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===u(t)&&null!==t&&Object.hasOwn(t,e)},P=function t(e,r,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=l(n.match(/^([^.]+)\.(.+)$/)||[],3),c=a[1],s=void 0===c?n:c,y=a[2],v=void 0===y?"":y,b=C(e,s),d=C(r,s),p=[].concat(f(u),[s]);if(b||d){var E=b?e[s]:i,h=d?r[s]:i;if(v)return void t(E,h,v,o,p);if(E===h)return;o(E,h,p)}else if(!/^\d+^/.test(s))for(var m=Array.isArray(e)?e:[],O=Array.isArray(r)?r:[],g=m.length,j=O.length,w=Math.max(g,j),S=0;S<w;S++)t(m[S],O[S],n,o,[].concat(f(u),["".concat(S)]))},R=function(t,e,r){for(var n=function(){var t=l(u[o],2),n=t[0],i=t[1];P(r,e,n,(function(t,n,o){i({fieldPaths:o,newEntity:e,oldEntity:r,newValue:n,oldValue:t})}))},o=0,u=Object.entries(t);o<u.length;o++)n()};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}var x=function(){for(var t,r=((t=(0,e.useRef)(!0)).current=!0,(0,e.useEffect)((function(){t.current=!1})),t),n=arguments.length,a=new Array(n),c=0;c<n;c++)a[c]=arguments[c];var E=function(t){return v((function(){var e=d.None;return"function"===u(l(t,2)[1])&&(e|=d.Entity),e}))}(a),O=function(t,e){var r=l(t,4),n=r[0],o=r[1],u=r[2],i=r[3];return(e&d.Entity)!==d.Entity?[null,n,o||{},u||[]]:[n,o,u||{},i||[]]}(a,E),C=l(O,4),P=C[0],x=C[1],A=C[2],U=C[3],D=y(x),M=D,N=D,k=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.None,r=h(),n=r.registerUseCase,o=r.unregisterUseCase,u=v((function(){return n(t,e)}));return(0,s.useUnmount)((function(){o(t,e)})),u}(D,E),I=(0,e.useContext)(k),T=I,L=function(t,e){return(0,s.useCreation)((function(){var r=p.None,n=(e||{}).store;return(t&d.Entity)===d.Entity&&(r|=p.EntityRootEnabled),r|=e?p.ContextEnabled:p.RootEnabled,n&&(r|=p.EntityEnabled),r}),[t,e])}(E,I),V=(0,s.useLatest)(A),F=function(t){var r=(0,e.useRef)(0),n=(0,e.useRef)([]),o=n.current,u=j(t,o);return n.current=t,r.current+=u?0:1,r.current}(U),$=(I||{}).reducers,z=void 0===$?null:$,B=(T||{}).store,G=l(function(t,r,n,o,u){var i=(0,s.useUpdate)(),a=(0,e.useRef)(),c=(0,s.useLatest)(o),f=n?n.value:null,l=(t&p.EntityEnabled)===p.EntityEnabled,y=(t&p.EntityRootEnabled)===p.EntityRootEnabled,v=S(n,t,(function(){var t;if(y){var e,n="function"==typeof r?r(null===(e=a.current)||void 0===e?void 0:e.value):r;t=new b.EntityStore(n)}else t=new b.EntityStore(null);return a.current=t,t}),u),d=function(t,r,n,o){var u=(0,e.useRef)(r);if((o&p.EntityRootEnabled)!==p.EntityRootEnabled)return n;var i="function"==typeof r,a=u.current;switch(!0){case i:case a===r:return t.value}return u.current=r,r}(v,r,f,t),E=(0,s.useMemoizedFn)((function(t,e){var r=c.current,n=r.onChange,o=r.watch;o&&R(o,t,e),null==n||n(t,e),y&&i()}));return y&&(v.value=d),(0,s.useCreation)((function(){l&&v.watch(E)}),[l,v,E]),(0,e.useEffect)((function(){return function(){v.unwatch(E)}}),[l,v,E]),(0,s.useCreation)((function(){return[d,v]}),[d,v])}(L,P,void 0===B?null:B,A,F),2),W=G[0],Y=G[1],q=S(z,L,(function(){var t,e,r,n=(t=A,e=function(t,e){var r,n;return null===(r=(n=V.current)[t])||void 0===r?void 0:r.call.apply(r,[n].concat(f(e)))},r={},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);return(L&p.EntityEnabled)!==p.EntityEnabled?M(n):function(t,e,r){r.watch,r.onChange;var n=r.options,o=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},u=Object.keys(t);for(n=0;n<u.length;n++)r=u[n],e.indexOf(r)>=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)r=u[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(r,m);return(0,b.createEntityReducers)(e,t,g(g(g({},o),n),{},{onGenerate:function(t,e){return e}}))}(N,Y,n)}),F),H=function(t,r,n,u){var i=n.value,a=h().createContextValue,c=(0,e.useMemo)((function(){return a(n,u,t)}),[t,i,n,u,a]),f=(0,s.useLatest)(c);return y((function(t){var e=t.children,n=t.with,u=void 0===n?[]:n,i=r.Provider,a=f.current;return o().createElement(i,{value:a},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(L,k,Y,q);return(0,s.useCreation)((function(){if((L&p.EntityEnabled)!==p.EntityEnabled)return q;var t=(L&p.RootEnabled)===p.RootEnabled,e=function(t,e){var r={};return Object.entries(t).forEach((function(t){var n=l(t,2),o=n[0],u=n[1];r[o]=w(u,e)})),r}(q,{onShouldCache:function(){return r.current}}),n=null===W,o=Array.isArray(W),a="object"!==u(W)||n||o?W:function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?_(Object(r),!0).forEach((function(e){i(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},W);return t?[a,e,H]:[a,e]}),[L,W,q,H,r])},A=function(r){var n=r.usecase,o=r.watch,u=r.onChange;return x(n,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})}})();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={20:(t,e,r)=>{"use strict";var n=r(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(t,e,r){var n,c={},l=null,f=null;for(n in void 0!==r&&(l=""+r),void 0!==e.key&&(l=""+e.key),void 0!==e.ref&&(f=e.ref),e)u.call(e,n)&&!a.hasOwnProperty(n)&&(c[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps)void 0===c[n]&&(c[n]=e[n]);return{$$typeof:o,type:t,key:l,ref:f,props:c,_owner:i.current}}},848:(t,e,r)=>{"use strict";t.exports=r(20)},594:t=>{"use strict";t.exports=React}},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(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function e(e,r){if(e){if("string"==typeof e)return t(e,r);var n=Object.prototype.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)?t(e,r):void 0}}function o(t,r){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,i,a=[],c=!0,l=!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)&&(a.push(n.value),a.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return a}}(t,r)||e(t,r)||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.")}()}r.r(n),r.d(n,{UseCaseFragment:()=>A,useUseCase:()=>x});var u=r(848),i=r(594),a=r.n(i);function c(t){return c="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},c(t)}function l(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==c(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function f(r){return function(e){if(Array.isArray(e))return t(e)}(r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||e(r)||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.")}()}const s=ahooks;var y=function(t){return o((0,i.useState)((function(){return t})),1)[0]},v=function(t){return o((0,i.useState)(t),1)[0]};const b=usecases;var d,p;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(d||(d={})),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"}(p||(p={}));var E=(0,b.createUseCase)((function(){var t=new Map,e=(0,i.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&p.EntityEnabled)===p.EntityEnabled?{store:t,reducers:e,statuses:r}:{reducers:e,statuses:r}},registerUseCase:function(r,n){if(t.has(r)){var o=t.get(r),u=o.value,a=o.times;return t.set(r,{value:u,times:a+1}),u}if((n&d.Entity)!==d.Entity)return e;var c=(0,i.createContext)(null);return t.set(r,{value:c,times:1}),c},unregisterUseCase:function(e,r){if((r&d.Entity)!==d.Entity)return!1;if(!t.has(e))return!1;var n=t.get(e),o=n.value,u=n.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),h=function(){return v((function(){return E()}))};var m=["watch","onChange","options"];function O(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 g(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?O(Object(r),!0).forEach((function(e){l(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var j=function(t,e){var r=t.length;if(r!==e.length)return!1;for(var n=0;n<r;n++)if(t[n]!==e[n])return!1;return!0},w=function(t,e){var r,n=e||{},o=n.onShouldCache,u=void 0===o?function(){return!0}:o,i=n.onCompare,a=void 0===i?function(t,e){return j(t,e)}:i;return function(){for(var e=u(),n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];if(r&&e){var c=r,l=c.parameters,f=c.returnValue;if(a(l,o))return f}var s=t.apply(void 0,o);return e&&(r={parameters:o,returnValue:s}),s}},S=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,s.useLatest)(r),u=(0,s.useCreation)((function(){return w(o.current,{onCompare:function(){return!0}})}),[n,o]);return(0,s.useCreation)((function(){return(e&p.RootEnabled)!==p.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===c(t)&&null!==t&&Object.hasOwn(t,e)},P=function t(e,r,n,u){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,c=o(n.match(/^([^.]+)\.(.+)$/)||[],3),l=c[1],s=void 0===l?n:l,y=c[2],v=void 0===y?"":y,b=C(e,s),d=C(r,s),p=[].concat(f(i),[s]);if(b||d){var E=b?e[s]:a,h=d?r[s]:a;if(v)return void t(E,h,v,u,p);if(E===h)return;u(E,h,p)}else if(!/^\d+^/.test(s))for(var m=Array.isArray(e)?e:[],O=Array.isArray(r)?r:[],g=m.length,j=O.length,w=Math.max(g,j),S=0;S<w;S++)t(m[S],O[S],n,u,[].concat(f(i),["".concat(S)]))},R=function(t,e,r){for(var n=function(){var t=o(i[u],2),n=t[0],a=t[1];P(r,e,n,(function(t,n,o){a({fieldPaths:o,newEntity:e,oldEntity:r,newValue:n,oldValue:t})}))},u=0,i=Object.entries(t);u<i.length;u++)n()};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}var x=function(){for(var t,e=((t=(0,i.useRef)(!0)).current=!0,(0,i.useEffect)((function(){t.current=!1})),t),r=arguments.length,n=new Array(r),u=0;u<r;u++)n[u]=arguments[u];var E=function(t){return v((function(){var e=d.None;return"function"===c(o(t,2)[1])&&(e|=d.Entity),e}))}(n),O=function(t,e){var r=o(t,4),n=r[0],u=r[1],i=r[2],a=r[3];return(e&d.Entity)!==d.Entity?[null,n,u||{},i||[]]:[n,u,i||{},a||[]]}(n,E),C=o(O,4),P=C[0],x=C[1],A=C[2],M=C[3],U=y(x),D=U,N=U,k=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.None,r=h(),n=r.registerUseCase,o=r.unregisterUseCase,u=v((function(){return n(t,e)}));return(0,s.useUnmount)((function(){o(t,e)})),u}(U,E),I=(0,i.useContext)(k),T=I,L=function(t,e){return(0,s.useCreation)((function(){var r=p.None,n=(e||{}).store;return(t&d.Entity)===d.Entity&&(r|=p.EntityRootEnabled),r|=e?p.ContextEnabled:p.RootEnabled,n&&(r|=p.EntityEnabled),r}),[t,e])}(E,I),V=(0,s.useLatest)(A),F=function(t){var e=(0,i.useRef)(0),r=(0,i.useRef)([]),n=r.current,o=j(t,n);return r.current=t,e.current+=o?0:1,e.current}(M),$=(I||{}).reducers,z=void 0===$?null:$,B=(T||{}).store,G=o(function(t,e,r,n,o){var u=(0,s.useUpdate)(),a=(0,i.useRef)(),c=(0,s.useLatest)(n),l=r?r.value:null,f=(t&p.EntityEnabled)===p.EntityEnabled,y=(t&p.EntityRootEnabled)===p.EntityRootEnabled,v=S(r,t,(function(){var t;if(y){var r,n="function"==typeof e?e(null===(r=a.current)||void 0===r?void 0:r.value):e;t=new b.EntityStore(n)}else t=new b.EntityStore(null);return a.current=t,t}),o),d=function(t,e,r,n){var o=(0,i.useRef)(e);if((n&p.EntityRootEnabled)!==p.EntityRootEnabled)return r;var u="function"==typeof e,a=o.current;switch(!0){case u:case a===e:return t.value}return o.current=e,e}(v,e,l,t),E=(0,s.useMemoizedFn)((function(t,e){var r=c.current,n=r.onChange,o=r.watch;o&&R(o,t,e),null==n||n(t,e),y&&u()}));return y&&(v.value=d),(0,s.useCreation)((function(){f&&v.watch(E)}),[f,v,E]),(0,i.useEffect)((function(){return function(){v.unwatch(E)}}),[f,v,E]),(0,s.useCreation)((function(){return[d,v]}),[d,v])}(L,P,void 0===B?null:B,A,F),2),W=G[0],Y=G[1],q=S(z,L,(function(){var t,e,r,n=(t=A,e=function(t,e){var r,n;return null===(r=(n=V.current)[t])||void 0===r?void 0:r.call.apply(r,[n].concat(f(e)))},r={},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);return(L&p.EntityEnabled)!==p.EntityEnabled?D(n):function(t,e,r){r.watch,r.onChange;var n=r.options,o=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},u=Object.keys(t);for(n=0;n<u.length;n++)r=u[n],e.indexOf(r)>=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)r=u[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(r,m);return(0,b.createEntityReducers)(e,t,g(g(g({},o),n),{},{onGenerate:function(t,e){return e}}))}(N,Y,n)}),F),H=function(t,e,r,n){var o=r.value,u=h().createContextValue,c=(0,i.useMemo)((function(){return u(r,n,t)}),[t,o,r,n,u]),l=(0,s.useLatest)(c);return y((function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=l.current;return a().createElement(u,{value:i},o.reduceRight((function(t,e){return a().createElement(e,{},t)}),r))}))}(L,k,Y,q);return(0,s.useCreation)((function(){if((L&p.EntityEnabled)!==p.EntityEnabled)return q;var t=(L&p.RootEnabled)===p.RootEnabled,r=function(t,e){var r={};return Object.entries(t).forEach((function(t){var n=o(t,2),u=n[0],i=n[1];r[u]=w(i,e)})),r}(q,{onShouldCache:function(){return e.current}}),n=null===W,u=Array.isArray(W),i="object"!==c(W)||n||u?W:function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?_(Object(r),!0).forEach((function(e){l(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},W);return t?[i,r,H]:[i,r]}),[L,W,q,H,e])},A=function(t){var e=t.usecase,r=t.watch,n=t.onMount,a=t.onChange,c=o(x(e,{watch:r,onChange:a}),1)[0];return(0,s.useMount)((function(){null==n||n(c)})),(0,u.jsx)(i.Fragment,{})}})();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 { UseCaseFragmentProps } from './types';
|
|
2
2
|
import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
|
|
3
|
-
export declare const UseCaseFragment: <T, TEntityReducers extends EntityReducerMap<T>>({ usecase, watch, onChange, }: UseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
|
|
3
|
+
export declare const UseCaseFragment: <T, TEntityReducers extends EntityReducerMap<T>>({ usecase, watch, onMount, onChange, }: UseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Fragment } from 'react';
|
|
3
3
|
import { useUseCase } from '../../hooks/useUseCase';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { useMount } from 'ahooks';
|
|
5
|
+
export const UseCaseFragment = ({ usecase, watch, onMount, onChange, }) => {
|
|
6
|
+
const [entity] = useUseCase(usecase, { watch, onChange });
|
|
7
|
+
useMount(() => {
|
|
8
|
+
onMount?.(entity);
|
|
9
|
+
});
|
|
6
10
|
return _jsx(Fragment, {});
|
|
7
11
|
};
|
|
@@ -3,5 +3,6 @@ import { EntityReducerMap, InferableEntityUseCase } from '@mic-rexjs/usecases/es
|
|
|
3
3
|
export interface UseCaseFragmentProps<T, TEntityReducers extends EntityReducerMap<T>> {
|
|
4
4
|
usecase: InferableEntityUseCase<T, TEntityReducers>;
|
|
5
5
|
watch?: EntityWatchMap<T>;
|
|
6
|
+
onMount?(entity: T): void;
|
|
6
7
|
onChange?(newEntity: T, oldEntity: T): void;
|
|
7
8
|
}
|
|
@@ -591,6 +591,23 @@ describe('useUseCase', () => {
|
|
|
591
591
|
});
|
|
592
592
|
expect(result.current[0].path).toBe('123/' + PATH_1);
|
|
593
593
|
});
|
|
594
|
+
test('Option functions: use `T` (not `S`) when `S extends T`', () => {
|
|
595
|
+
const testObjectUseCase = (options = {}) => {
|
|
596
|
+
const objectReducers = objectUseCase();
|
|
597
|
+
void options;
|
|
598
|
+
return { ...objectReducers };
|
|
599
|
+
};
|
|
600
|
+
renderHook(() => {
|
|
601
|
+
useUseCase(defaultFile, testObjectUseCase, {
|
|
602
|
+
onUpdate(data) {
|
|
603
|
+
void data;
|
|
604
|
+
return Promise.reject();
|
|
605
|
+
},
|
|
606
|
+
});
|
|
607
|
+
});
|
|
608
|
+
// 这个测试仅仅是为了确保类型不会报错,不验证实际逻辑
|
|
609
|
+
expect(1).toBe(1);
|
|
610
|
+
});
|
|
594
611
|
test('when `options` has changed, it should not trigger update', () => {
|
|
595
612
|
const onUpdate = jest.fn();
|
|
596
613
|
const onDeepUpdate = jest.fn();
|
|
@@ -45,7 +45,11 @@ export interface UseCaseHookContextualOptions<T> {
|
|
|
45
45
|
export interface UseCaseHookOwnOptions<T, TUseCaseOptions extends object> extends UseCaseHookContextualOptions<T> {
|
|
46
46
|
options?: TUseCaseOptions;
|
|
47
47
|
}
|
|
48
|
-
export type
|
|
48
|
+
export type UnextendFunctionTypes<T> = T extends (...args: infer TArgs) => infer TReturn ? (...args: TArgs) => TReturn : T;
|
|
49
|
+
export type UnextendOptionTypes<T> = {
|
|
50
|
+
[K in keyof T]: UnextendFunctionTypes<T[K]>;
|
|
51
|
+
};
|
|
52
|
+
export type UseCaseHookOptions<T, TUseCaseOptions extends object = object> = UnextendOptionTypes<TUseCaseOptions> & UseCaseHookOwnOptions<T, TUseCaseOptions>;
|
|
49
53
|
export interface ReducersHook {
|
|
50
54
|
<T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?: unknown[]): T;
|
|
51
55
|
}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.UseCaseFragment = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
7
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
10
|
var _react = require("react");
|
|
9
|
-
var
|
|
11
|
+
var _useUseCase3 = require("../../hooks/useUseCase");
|
|
12
|
+
var _ahooks = require("ahooks");
|
|
10
13
|
var UseCaseFragment = exports.UseCaseFragment = function UseCaseFragment(_ref) {
|
|
11
14
|
var usecase = _ref.usecase,
|
|
12
15
|
watch = _ref.watch,
|
|
16
|
+
onMount = _ref.onMount,
|
|
13
17
|
onChange = _ref.onChange;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
var _useUseCase = (0, _useUseCase3.useUseCase)(usecase, {
|
|
19
|
+
watch: watch,
|
|
20
|
+
onChange: onChange
|
|
21
|
+
}),
|
|
22
|
+
_useUseCase2 = (0, _slicedToArray2["default"])(_useUseCase, 1),
|
|
23
|
+
entity = _useUseCase2[0];
|
|
24
|
+
(0, _ahooks.useMount)(function () {
|
|
25
|
+
onMount === null || onMount === void 0 || onMount(entity);
|
|
17
26
|
});
|
|
18
27
|
return (0, _jsxRuntime.jsx)(_react.Fragment, {});
|
|
19
28
|
};
|
|
@@ -826,6 +826,24 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
826
826
|
});
|
|
827
827
|
(0, _globals.expect)(result.current[0].path).toBe('123/' + PATH_1);
|
|
828
828
|
});
|
|
829
|
+
(0, _globals.test)('Option functions: use `T` (not `S`) when `S extends T`', function () {
|
|
830
|
+
var testObjectUseCase = function testObjectUseCase() {
|
|
831
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
832
|
+
var objectReducers = (0, _usecases.objectUseCase)();
|
|
833
|
+
void options;
|
|
834
|
+
return _objectSpread({}, objectReducers);
|
|
835
|
+
};
|
|
836
|
+
(0, _react.renderHook)(function () {
|
|
837
|
+
(0, _.useUseCase)(defaultFile, testObjectUseCase, {
|
|
838
|
+
onUpdate: function onUpdate(data) {
|
|
839
|
+
void data;
|
|
840
|
+
return Promise.reject();
|
|
841
|
+
}
|
|
842
|
+
});
|
|
843
|
+
});
|
|
844
|
+
// 这个测试仅仅是为了确保类型不会报错,不验证实际逻辑
|
|
845
|
+
(0, _globals.expect)(1).toBe(1);
|
|
846
|
+
});
|
|
829
847
|
(0, _globals.test)('when `options` has changed, it should not trigger update', function () {
|
|
830
848
|
var onUpdate = _globals.jest.fn();
|
|
831
849
|
var onDeepUpdate = _globals.jest.fn();
|