@mic-rexjs/usecases-react 2.7.1 → 2.8.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.
Files changed (33) hide show
  1. package/dist/index.min.js +1 -1
  2. package/es/enums/ArgumentTypes/index.d.ts +1 -3
  3. package/es/enums/ArgumentTypes/index.js +0 -2
  4. package/es/enums/Statuses/index.d.ts +0 -4
  5. package/es/enums/Statuses/index.js +0 -4
  6. package/es/hooks/useArgumentTypes/index.js +1 -6
  7. package/es/hooks/useEntity/index.js +3 -3
  8. package/es/hooks/useFullArguments/index.js +1 -4
  9. package/es/hooks/useStatuses/index.js +3 -7
  10. package/es/hooks/useUseCase/index.js +2 -2
  11. package/es/hooks/useUseCase/index.test.js +0 -105
  12. package/es/hooks/useUseCase/types.d.ts +1 -1
  13. package/es/index.d.ts +0 -1
  14. package/es/index.js +0 -1
  15. package/es/usecases/contextUseCase/index.js +1 -37
  16. package/es/usecases/contextUseCase/types.d.ts +1 -6
  17. package/lib/enums/ArgumentTypes/index.js +0 -2
  18. package/lib/enums/Statuses/index.js +0 -4
  19. package/lib/hooks/useArgumentTypes/index.js +0 -6
  20. package/lib/hooks/useEntity/index.js +3 -3
  21. package/lib/hooks/useFullArguments/index.js +1 -5
  22. package/lib/hooks/useStatuses/index.js +3 -7
  23. package/lib/hooks/useUseCase/index.js +2 -2
  24. package/lib/hooks/useUseCase/index.test.js +6 -151
  25. package/lib/index.js +1 -8
  26. package/lib/usecases/contextUseCase/index.js +1 -37
  27. package/package.json +1 -1
  28. package/es/hooks/useContextValue/index.d.ts +0 -4
  29. package/es/hooks/useContextValue/index.js +0 -13
  30. package/es/methods/registerGlobalUseCase/index.d.ts +0 -1
  31. package/es/methods/registerGlobalUseCase/index.js +0 -2
  32. package/lib/hooks/useContextValue/index.js +0 -20
  33. package/lib/methods/registerGlobalUseCase/index.js +0 -9
package/dist/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.min.js.LICENSE.txt */
2
- (()=>{var e={20:(e,t,n)=>{"use strict";var r=n(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,n){var r,l={},c=null,f=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(f=t.ref),t)u.call(t,r)&&!i.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:f,props:l,_owner:a.current}}},848:(e,t,n)=>{"use strict";e.exports=n(20)},594:e=>{"use strict";e.exports=React}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var u=t[r]={exports:{}};return e[r](u,u.exports,n),u.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{UseCaseFragment:()=>_,registerGlobalUseCase:()=>A,useUseCase:()=>P});var e=n(848),t=n(594),o=n.n(t);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(e){if("string"==typeof e)return u(e,t);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)?u(e,t):void 0}}function i(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u,a,i=[],l=!0,c=!1;try{if(u=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=u.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return i}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const c=ahooks;var f=function(e){return l((0,t.useState)((function(){return e})),1)[0]},s=function(e){return l((0,t.useState)(e),1)[0]};const y=usecases;var b,v;function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function E(e){var t=function(e,t){if("object"!=d(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==d(t)?t:String(t)}!function(e){e[e.None=0]="None",e[e.Entity=2]="Entity",e[e.Global=4]="Global",e[e.GlobalEntity=6]="GlobalEntity"}(b||(b={})),function(e){e[e.None=0]="None",e[e.RootEnabled=2]="RootEnabled",e[e.ContextEnabled=4]="ContextEnabled",e[e.EntityEnabled=8]="EntityEnabled",e[e.GlobalEnabled=28]="GlobalEnabled",e[e.ContextRootEnabled=6]="ContextRootEnabled",e[e.EntityRootEnabled=14]="EntityRootEnabled"}(v||(v={}));var p=["watch","onChange","options"];function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){var r,o,u;r=e,o=t,u=n[t],(o=E(o))in r?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var g=function(e,t,n){n.watch,n.onChange;var r=n.options,o=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,p);return(0,y.createEntityReducers)(t,e,m(m(m({},o),r),{},{onGenerate:function(e,t){return t}}))},O=(0,y.createUseCase)((function(){var e=new Map,n=new Map,r=new Map,o=(0,t.createContext)(null);return function(){var u=function(e,t,n){return(n&v.EntityEnabled)===v.EntityEnabled?{store:e,reducers:t,statuses:n}:{reducers:t,statuses:n}},a=function(n,r){if(e.has(n)){var u=e.get(n),a=u.value,i=u.times;return e.set(n,{value:a,times:i+1}),a}if((r&b.Entity)!==b.Entity)return o;var l=(0,t.createContext)(null);return e.set(n,{value:l,times:1}),l};return{createContextValue:u,getGlobalContextValue:function(e){var t="function"==typeof e?n.get(e):e;return r.get(t)||null},isGlobal:function(e){return n.has(e)},registerUseCase:a,registerGlobalUseCase:function(e,t){if(n.has(t))return t;var o=new y.EntityStore(e),i=g(t,o,{}),l=u(o,i,v.GlobalEnabled),c=a(t,b.GlobalEntity);return n.set(t,c),r.set(c,l),t},unregisterUseCase:function(t,n){if((n&b.Entity)!==b.Entity)return!1;if(!e.has(t))return!1;var r=e.get(t),o=r.value,u=r.times;return 1===u?e.delete(t):e.set(t,{value:o,times:u-1}),!0},unregisterGlobalUseCase:function(t){if(!n.has(t))return!1;var o=n.get(t);return n.delete(t),r.delete(o),e.delete(t),!0}}}})),w=function(){return s((function(){return O()}))},C=function(e,t){var n=e.length;if(n!==t.length)return!1;for(var r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0},j=function(e,t){var n,r=t||{},o=r.onShouldCache,u=void 0===o?function(){return!0}:o,a=r.onCompare,i=void 0===a?function(e,t){return C(e,t)}:a;return function(){for(var t=u(),r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(n&&t){var l=n,c=l.parameters,f=l.returnValue;if(i(c,o))return f}var s=e.apply(void 0,o);return t&&(n={parameters:o,returnValue:s}),s}},S=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,c.useLatest)(n),u=(0,c.useCreation)((function(){return j(o.current,{onCompare:function(){return!0}})}),[r,o]);return(0,c.useCreation)((function(){return(t&v.RootEnabled)!==v.RootEnabled&&e?e:u()}),[t,e,u])},R=function(e,t){return"object"===d(e)&&null!==e&&Object.hasOwn(e,t)},G=function e(t,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,c=l(r.match(/^([^.]+)\.(.+)$/)||[],3),f=c[1],s=void 0===f?r:f,y=c[2],b=void 0===y?"":y,v=R(t,s),d=R(n,s),E=[].concat(i(u),[s]);if(v||d){var p=v?t[s]:a,h=d?n[s]:a;if(b)return void e(p,h,b,o,E);if(p===h)return;o(p,h,E)}else if(!/^\d+^/.test(s))for(var m=Array.isArray(t)?t:[],g=Array.isArray(n)?n:[],O=m.length,w=g.length,C=Math.max(O,w),j=0;j<C;j++)e(m[j],g[j],r,o,[].concat(i(u),["".concat(j)]))},x=function(e,t,n){for(var r=function(){var e=l(u[o],2),r=e[0],a=e[1];G(n,t,r,(function(e,r,o){a({fieldPaths:o,newEntity:t,oldEntity:n,newValue:r,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)r()},P=function(){for(var e,n=((e=(0,t.useRef)(!0)).current=!0,(0,t.useEffect)((function(){e.current=!1})),e),r=arguments.length,u=new Array(r),a=0;a<r;a++)u[a]=arguments[a];var E=function(e){var t=w().isGlobal;return s((function(){var n=b.None,r=l(e,2),o=r[0];return"function"===d(r[1])?n|=b.Entity:t(o)&&(n|=b.Global),n}))}(u),p=function(e,t){var n=l(e,4),r=n[0],o=n[1],u=n[2],a=n[3],i=(t&b.Entity)!==b.Entity,c=(0,w().isGlobal)(r);return i||c?[null,r,o||{},u||[]]:[r,o,u||{},a||[]]}(u,E),h=l(p,4),m=h[0],O=h[1],R=h[2],G=h[3],P=f(O),_=P,A=P,U=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:b.None,n=w(),r=n.registerUseCase,o=n.unregisterUseCase,u=s((function(){return r(e,t)}));return(0,c.useUnmount)((function(){o(e,t)})),u}(P,E),M=function(e,n){var r=w().getGlobalContextValue,o=(0,t.useContext)(e),u=r(e);return(n&b.Global)===b.Global?u:o}(U,E),N=M,I=function(e,t){return(0,c.useCreation)((function(){var n=v.None,r=(t||{}).store,o=(e&b.Entity)===b.Entity,u=(e&b.Global)===b.Global;return o&&!u&&(n|=v.EntityRootEnabled),n|=t||u?v.ContextEnabled:v.RootEnabled,(r||u)&&(n|=v.EntityEnabled),u&&(n|=v.GlobalEnabled),n}),[e,t])}(E,M),k=(0,c.useLatest)(R),T=function(e){var n=(0,t.useRef)(0),r=(0,t.useRef)([]),o=r.current,u=C(e,o);return r.current=e,n.current+=u?0:1,n.current}(G),V=(M||{}).reducers,L=void 0===V?null:V,D=(N||{}).store,F=l(function(e,n,r,o){var u=(0,c.useUpdate)(),a=(0,c.useLatest)(o),i=r?r.value:null,l=(e&v.EntityEnabled)===v.EntityEnabled,f=(e&v.EntityRootEnabled)===v.EntityRootEnabled,s=S(r,e,(function(){if(!f)return new y.EntityStore(null);var e="function"==typeof n;return new y.EntityStore(e?n():n)})),b=function(e,n,r,o){var u=(0,t.useRef)(n);if((o&v.EntityRootEnabled)!==v.EntityRootEnabled)return r;var a="function"==typeof n,i=u.current;switch(!0){case a:case i===n:return e.value}return u.current=n,n}(s,n,i,e),d=(0,c.useMemoizedFn)((function(t,n){var r=a.current,o=r.onChange,i=r.watch,l=(e&v.GlobalEnabled)===v.GlobalEnabled;i&&x(i,t,n),null==o||o(t,n),(f||l)&&u()}));return f&&(s.value=b),(0,t.useEffect)((function(){if(l)return s.watch(d),function(){s.unwatch(d)}}),[l,s,d]),(0,c.useCreation)((function(){return[b,s]}),[b,s])}(I,m,void 0===D?null:D,R),2),$=F[0],z=F[1],B=S(L,I,(function(){var e,t,n,r=(e=R,t=function(e,t){var n,r;return null===(n=(r=k.current)[e])||void 0===n?void 0:n.call.apply(n,[r].concat(i(t)))},n={},Object.keys(e).forEach((function(r){var o=e[r];n[r]="function"!=typeof o?o:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return t(r,n)}})),n);return(I&v.EntityEnabled)!==v.EntityEnabled?_(r):g(A,z,r)}),T),W=function(e,n,r,u){var a=r.value,i=w().createContextValue,l=(0,t.useMemo)((function(){return i(r,u,e)}),[e,a,r,u,i]),s=(0,c.useLatest)(l);return f((function(e){var t=e.children,r=e.with,u=void 0===r?[]:r,a=n.Provider,i=s.current;return o().createElement(a,{value:i},u.reduceRight((function(e,t){return o().createElement(t,{},e)}),t))}))}(I,U,z,B);return(0,c.useCreation)((function(){if((I&v.EntityEnabled)!==v.EntityEnabled)return B;var e=(I&v.RootEnabled)===v.RootEnabled,t=function(e,t){var n={};return Object.entries(e).forEach((function(e){var r=l(e,2),o=r[0],u=r[1];n[o]=j(u,t)})),n}(B,{onShouldCache:function(){return n.current}});return e?[$,t,W]:[$,t]}),[I,$,B,W,n])},_=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return P(r,{watch:o,onChange:u}),(0,e.jsx)(t.Fragment,{})},A=O().registerGlobalUseCase})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
2
+ (()=>{var t={20:(t,e,n)=>{"use strict";var r=n(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(t,e,n){var r,c={},f=null,l=null;for(r in void 0!==n&&(f=""+n),void 0!==e.key&&(f=""+e.key),void 0!==e.ref&&(l=e.ref),e)u.call(e,r)&&!i.hasOwnProperty(r)&&(c[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps)void 0===c[r]&&(c[r]=e[r]);return{$$typeof:o,type:t,key:f,ref:l,props:c,_owner:a.current}}},848:(t,e,n)=>{"use strict";t.exports=n(20)},594:t=>{"use strict";t.exports=React}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var u=e[r]={exports:{}};return t[r](u,u.exports,n),u.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{UseCaseFragment:()=>x,useUseCase:()=>_});var t=n(848),e=n(594),o=n.n(e);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){if(t){if("string"==typeof t)return u(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(t,e):void 0}}function i(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||a(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 c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,u,a,i=[],c=!0,f=!1;try{if(u=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(f)throw o}}return i}}(t,e)||a(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=ahooks;var l=function(t){return c((0,e.useState)((function(){return t})),1)[0]},s=function(t){return c((0,e.useState)(t),1)[0]};const y=usecases;var v,d;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(v||(v={})),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"}(d||(d={}));var b=(0,y.createUseCase)((function(){var t=new Map,n=(0,e.createContext)(null);return function(){return{createContextValue:function(t,e,n){return(n&d.EntityEnabled)===d.EntityEnabled?{store:t,reducers:e,statuses:n}:{reducers:e,statuses:n}},registerUseCase:function(r,o){if(t.has(r)){var u=t.get(r),a=u.value,i=u.times;return t.set(r,{value:a,times:i+1}),a}if((o&v.Entity)!==v.Entity)return n;var c=(0,e.createContext)(null);return t.set(r,{value:c,times:1}),c},unregisterUseCase:function(e,n){if((n&v.Entity)!==v.Entity)return!1;if(!t.has(e))return!1;var r=t.get(e),o=r.value,u=r.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),p=function(){return s((function(){return b()}))};function E(t){return 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},E(t)}function m(t){var e=function(t,e){if("object"!=E(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:String(e)}var h=["watch","onChange","options"];function g(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?g(Object(n),!0).forEach((function(e){var r,o,u;r=t,o=e,u=n[e],(o=m(o))in r?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var w=function(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0},j=function(t,e){var n,r=e||{},o=r.onShouldCache,u=void 0===o?function(){return!0}:o,a=r.onCompare,i=void 0===a?function(t,e){return w(t,e)}:a;return function(){for(var e=u(),r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(n&&e){var c=n,f=c.parameters,l=c.returnValue;if(i(f,o))return l}var s=t.apply(void 0,o);return e&&(n={parameters:o,returnValue:s}),s}},S=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,f.useLatest)(n),u=(0,f.useCreation)((function(){return j(o.current,{onCompare:function(){return!0}})}),[r,o]);return(0,f.useCreation)((function(){return(e&d.RootEnabled)!==d.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===E(t)&&null!==t&&Object.hasOwn(t,e)},R=function t(e,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,f=c(r.match(/^([^.]+)\.(.+)$/)||[],3),l=f[1],s=void 0===l?r:l,y=f[2],v=void 0===y?"":y,d=C(e,s),b=C(n,s),p=[].concat(i(u),[s]);if(d||b){var E=d?e[s]:a,m=b?n[s]:a;if(v)return void t(E,m,v,o,p);if(E===m)return;o(E,m,p)}else if(!/^\d+^/.test(s))for(var h=Array.isArray(e)?e:[],g=Array.isArray(n)?n:[],O=h.length,w=g.length,j=Math.max(O,w),S=0;S<j;S++)t(h[S],g[S],r,o,[].concat(i(u),["".concat(S)]))},P=function(t,e,n){for(var r=function(){var t=c(u[o],2),r=t[0],a=t[1];R(n,e,r,(function(t,r,o){a({fieldPaths:o,newEntity:e,oldEntity:n,newValue:r,oldValue:t})}))},o=0,u=Object.entries(t);o<u.length;o++)r()},_=function(){for(var t,n=((t=(0,e.useRef)(!0)).current=!0,(0,e.useEffect)((function(){t.current=!1})),t),r=arguments.length,u=new Array(r),a=0;a<r;a++)u[a]=arguments[a];var b=function(t){return s((function(){var e=v.None;return"function"===E(c(t,2)[1])&&(e|=v.Entity),e}))}(u),m=function(t,e){var n=c(t,4),r=n[0],o=n[1],u=n[2],a=n[3];return(e&v.Entity)!==v.Entity?[null,r,o||{},u||[]]:[r,o,u||{},a||[]]}(u,b),g=c(m,4),C=g[0],R=g[1],_=g[2],x=g[3],A=l(R),U=A,M=A,N=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v.None,n=p(),r=n.registerUseCase,o=n.unregisterUseCase,u=s((function(){return r(t,e)}));return(0,f.useUnmount)((function(){o(t,e)})),u}(A,b),I=(0,e.useContext)(N),k=I,T=function(t,e){return(0,f.useCreation)((function(){var n=d.None,r=(e||{}).store;return(t&v.Entity)===v.Entity&&(n|=d.EntityRootEnabled),n|=e?d.ContextEnabled:d.RootEnabled,r&&(n|=d.EntityEnabled),n}),[t,e])}(b,I),L=(0,f.useLatest)(_),D=function(t){var n=(0,e.useRef)(0),r=(0,e.useRef)([]),o=r.current,u=w(t,o);return r.current=t,n.current+=u?0:1,n.current}(x),V=(I||{}).reducers,F=void 0===V?null:V,$=(k||{}).store,z=c(function(t,n,r,o){var u=(0,f.useUpdate)(),a=(0,f.useLatest)(o),i=r?r.value:null,c=(t&d.EntityEnabled)===d.EntityEnabled,l=(t&d.EntityRootEnabled)===d.EntityRootEnabled,s=S(r,t,(function(){if(!l)return new y.EntityStore(null);var t="function"==typeof n;return new y.EntityStore(t?n():n)})),v=function(t,n,r,o){var u=(0,e.useRef)(n);if((o&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var a="function"==typeof n,i=u.current;switch(!0){case a:case i===n:return t.value}return u.current=n,n}(s,n,i,t),b=(0,f.useMemoizedFn)((function(t,e){var n=a.current,r=n.onChange,o=n.watch;o&&P(o,t,e),null==r||r(t,e),l&&u()}));return l&&(s.value=v),(0,e.useEffect)((function(){if(c)return s.watch(b),function(){s.unwatch(b)}}),[c,s,b]),(0,f.useCreation)((function(){return[v,s]}),[v,s])}(T,C,void 0===$?null:$,_),2),B=z[0],G=z[1],W=S(F,T,(function(){var t,e,n,r=(t=_,e=function(t,e){var n,r;return null===(n=(r=L.current)[t])||void 0===n?void 0:n.call.apply(n,[r].concat(i(e)))},n={},Object.keys(t).forEach((function(r){var o=t[r];n[r]="function"!=typeof o?o:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e(r,n)}})),n);return(T&d.EntityEnabled)!==d.EntityEnabled?U(r):function(t,e,n){n.watch,n.onChange;var r=n.options,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},u=Object.keys(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,h);return(0,y.createEntityReducers)(e,t,O(O(O({},o),r),{},{onGenerate:function(t,e){return e}}))}(M,G,r)}),D),Y=function(t,n,r,u){var a=r.value,i=p().createContextValue,c=(0,e.useMemo)((function(){return i(r,u,t)}),[t,a,r,u,i]),s=(0,f.useLatest)(c);return l((function(t){var e=t.children,r=t.with,u=void 0===r?[]:r,a=n.Provider,i=s.current;return o().createElement(a,{value:i},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(T,N,G,W);return(0,f.useCreation)((function(){if((T&d.EntityEnabled)!==d.EntityEnabled)return W;var t=(T&d.RootEnabled)===d.RootEnabled,e=function(t,e){var n={};return Object.entries(t).forEach((function(t){var r=c(t,2),o=r[0],u=r[1];n[o]=j(u,e)})),n}(W,{onShouldCache:function(){return n.current}});return t?[B,e,Y]:[B,e]}),[T,B,W,Y,n])},x=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return _(r,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
@@ -1,6 +1,4 @@
1
1
  export declare enum ArgumentTypes {
2
2
  None = 0,
3
- Entity = 2,
4
- Global = 4,
5
- GlobalEntity = 6
3
+ Entity = 2
6
4
  }
@@ -2,6 +2,4 @@ export var ArgumentTypes;
2
2
  (function (ArgumentTypes) {
3
3
  ArgumentTypes[ArgumentTypes["None"] = 0] = "None";
4
4
  ArgumentTypes[ArgumentTypes["Entity"] = 2] = "Entity";
5
- ArgumentTypes[ArgumentTypes["Global"] = 4] = "Global";
6
- ArgumentTypes[ArgumentTypes["GlobalEntity"] = 6] = "GlobalEntity";
7
5
  })(ArgumentTypes || (ArgumentTypes = {}));
@@ -12,10 +12,6 @@ export declare enum Statuses {
12
12
  * 是否有 `entity`
13
13
  */
14
14
  EntityEnabled = 8,
15
- /**
16
- * 是否为全局模式
17
- */
18
- GlobalEnabled = 28,
19
15
  /**
20
16
  * 是否为需要提供 `Provider` 去挂载根 `context`
21
17
  */
@@ -13,10 +13,6 @@ export var Statuses;
13
13
  * 是否有 `entity`
14
14
  */
15
15
  Statuses[Statuses["EntityEnabled"] = 8] = "EntityEnabled";
16
- /**
17
- * 是否为全局模式
18
- */
19
- Statuses[Statuses["GlobalEnabled"] = 28] = "GlobalEnabled";
20
16
  /**
21
17
  * 是否为需要提供 `Provider` 去挂载根 `context`
22
18
  */
@@ -1,18 +1,13 @@
1
1
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
2
  import { useConstant } from '../useConstant';
3
- import { useContextUseCase } from '../useContextUseCase';
4
3
  export const useArgumentTypes = (args) => {
5
- const { isGlobal } = useContextUseCase();
6
4
  return useConstant(() => {
7
5
  let types = ArgumentTypes.None;
8
- const [arg1, arg2] = args;
6
+ const [, arg2] = args;
9
7
  const type2 = typeof arg2;
10
8
  if (type2 === 'function') {
11
9
  types |= ArgumentTypes.Entity;
12
10
  }
13
- else if (isGlobal(arg1)) {
14
- types |= ArgumentTypes.Global;
15
- }
16
11
  return types;
17
12
  });
18
13
  };
@@ -21,14 +21,14 @@ export const useEntity = (statuses, entityArg, contextStore, options) => {
21
21
  const runtimeEntity = useRuntimeEntity(store, entityArg, contextEntity, statuses);
22
22
  const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
23
23
  const { onChange, watch } = optionsRef.current;
24
- const globalEnabled = (statuses & Statuses.GlobalEnabled) === Statuses.GlobalEnabled;
25
24
  if (watch) {
26
25
  triggerWatchers(watch, newEntity, oldEntity);
27
26
  }
28
27
  onChange?.(newEntity, oldEntity);
29
- if (entityRootEnabled || globalEnabled) {
30
- update();
28
+ if (!entityRootEnabled) {
29
+ return;
31
30
  }
31
+ update();
32
32
  });
33
33
  if (entityRootEnabled) {
34
34
  // 执行同步操作
@@ -1,11 +1,8 @@
1
1
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
- import { useContextUseCase } from '../useContextUseCase';
3
2
  export const useFullArguments = (args, argumentTypes) => {
4
3
  const [arg1, arg2, arg3, arg4] = args;
5
4
  const withoutEntity = (argumentTypes & ArgumentTypes.Entity) !== ArgumentTypes.Entity;
6
- const { isGlobal } = useContextUseCase();
7
- const global = isGlobal(arg1);
8
- if (withoutEntity || global) {
5
+ if (withoutEntity) {
9
6
  return [
10
7
  null,
11
8
  arg1,
@@ -6,22 +6,18 @@ export const useStatuses = (argumentTypes, contextValue) => {
6
6
  let statuses = Statuses.None;
7
7
  const { store } = (contextValue || {});
8
8
  const hasEntity = (argumentTypes & ArgumentTypes.Entity) === ArgumentTypes.Entity;
9
- const isGlobal = (argumentTypes & ArgumentTypes.Global) === ArgumentTypes.Global;
10
- if (hasEntity && !isGlobal) {
9
+ if (hasEntity) {
11
10
  statuses |= Statuses.EntityRootEnabled;
12
11
  }
13
- if (contextValue || isGlobal) {
12
+ if (contextValue) {
14
13
  statuses |= Statuses.ContextEnabled;
15
14
  }
16
15
  else {
17
16
  statuses |= Statuses.RootEnabled;
18
17
  }
19
- if (store || isGlobal) {
18
+ if (store) {
20
19
  statuses |= Statuses.EntityEnabled;
21
20
  }
22
- if (isGlobal) {
23
- statuses |= Statuses.GlobalEnabled;
24
- }
25
21
  return statuses;
26
22
  }, [argumentTypes, contextValue]);
27
23
  };
@@ -1,4 +1,5 @@
1
1
  import { useCreation, useLatest } from 'ahooks';
2
+ import { useContext as useContextValue } from 'react';
2
3
  import { useConstantFn } from '../useConstantFn';
3
4
  import { useProvider } from '../useProvider';
4
5
  import { initEntityReducers } from '../../methods/initEntityReducers';
@@ -13,7 +14,6 @@ import { cacheCalls } from '../../methods/cacheCalls';
13
14
  import { useCompareDeps } from '../useCompareDeps';
14
15
  import { captureCalls } from '../../methods/captureCalls';
15
16
  import { useFullArguments } from '../useFullArguments';
16
- import { useContextValue } from '../useContextValue';
17
17
  export const useUseCase = ((...args) => {
18
18
  const isRenderingRef = useIsRenderingRef();
19
19
  const argumentTypes = useArgumentTypes(args);
@@ -23,7 +23,7 @@ export const useUseCase = ((...args) => {
23
23
  const usecase = unkownUsecase;
24
24
  const entityUseCase = unkownUsecase;
25
25
  const context = useContext(unkownUsecase, argumentTypes);
26
- const contextValue = useContextValue(context, argumentTypes);
26
+ const contextValue = useContextValue(context);
27
27
  const entityContextValue = contextValue;
28
28
  const statuses = useStatuses(argumentTypes, contextValue);
29
29
  const optionsRef = useLatest(options);
@@ -5,7 +5,6 @@ import { renderHook, act, render, fireEvent, screen } from '@testing-library/rea
5
5
  import { useUseCase } from '.';
6
6
  import { useDeepCompareEffect, useMemoizedFn, useMount, useUpdate, useUpdateEffect } from 'ahooks';
7
7
  import { Fragment, useEffect, useRef, useState } from 'react';
8
- import { registerGlobalUseCase } from '../../methods/registerGlobalUseCase';
9
8
  const EXT_1 = '.png';
10
9
  const EXT_2 = '.jpg';
11
10
  const PATH_1 = `hello${EXT_1}`;
@@ -1434,110 +1433,6 @@ describe('useUseCase', () => {
1434
1433
  oldValue: EXT_1,
1435
1434
  });
1436
1435
  });
1437
- test('global usecase should share the entity to any components', () => {
1438
- const onValue = jest.fn();
1439
- const firstButtonText = 'first button';
1440
- const secondButtonText = 'second button';
1441
- const numberUseCase = () => {
1442
- return entityUseCase();
1443
- };
1444
- const A = () => {
1445
- const [entity, { setEntity }] = useUseCase(numberUseCase);
1446
- const onButtonClick = () => {
1447
- setEntity(2);
1448
- };
1449
- useMount(() => {
1450
- onValue(entity);
1451
- });
1452
- return (_jsx("div", { children: _jsx("button", { onClick: onButtonClick, children: firstButtonText }) }));
1453
- };
1454
- const B = () => {
1455
- const [entity, { setEntity }] = useUseCase(numberUseCase);
1456
- const onButtonClick = () => {
1457
- setEntity(3);
1458
- };
1459
- useMount(() => {
1460
- onValue(entity);
1461
- });
1462
- return (_jsx("div", { children: _jsx("button", { onClick: onButtonClick, children: secondButtonText }) }));
1463
- };
1464
- registerGlobalUseCase(1, numberUseCase);
1465
- render(_jsx(A, {}));
1466
- expect(onValue).toHaveBeenNthCalledWith(1, 1);
1467
- fireEvent.click(screen.getByText(firstButtonText));
1468
- render(_jsx(B, {}));
1469
- expect(onValue).toHaveBeenNthCalledWith(2, 2);
1470
- fireEvent.click(screen.getByText(secondButtonText));
1471
- });
1472
- test('global usecase should trigger `onChange` in any components when entity has changed', () => {
1473
- const onValueChange1 = jest.fn();
1474
- const onValueChange2 = jest.fn();
1475
- const firstButtonText = 'first button';
1476
- const secondButtonText = 'second button';
1477
- const numberUseCase = () => {
1478
- return entityUseCase();
1479
- };
1480
- const A = () => {
1481
- const [, { setEntity }] = useUseCase(numberUseCase, {
1482
- onChange(value) {
1483
- onValueChange1(value);
1484
- },
1485
- });
1486
- const onButtonClick = () => {
1487
- setEntity(2);
1488
- };
1489
- return (_jsx("div", { children: _jsx("button", { onClick: onButtonClick, children: firstButtonText }) }));
1490
- };
1491
- const B = () => {
1492
- const [, { setEntity }] = useUseCase(numberUseCase, {
1493
- onChange(value) {
1494
- onValueChange2(value);
1495
- },
1496
- });
1497
- const onButtonClick = () => {
1498
- setEntity(3);
1499
- };
1500
- return (_jsx("div", { children: _jsx("button", { onClick: onButtonClick, children: secondButtonText }) }));
1501
- };
1502
- registerGlobalUseCase(1, numberUseCase);
1503
- render(_jsx(A, {}));
1504
- fireEvent.click(screen.getByText(firstButtonText));
1505
- expect(onValueChange1).toHaveBeenNthCalledWith(1, 2);
1506
- render(_jsx(B, {}));
1507
- fireEvent.click(screen.getByText(secondButtonText));
1508
- expect(onValueChange1).toHaveBeenNthCalledWith(2, 3);
1509
- expect(onValueChange2).toHaveBeenNthCalledWith(1, 3);
1510
- });
1511
- test('global usecase should trigger update for components when entity has changed', () => {
1512
- const onUpdate1 = jest.fn();
1513
- const onUpdate2 = jest.fn();
1514
- const buttonText = 'my button';
1515
- const numberUseCase = () => {
1516
- return entityUseCase();
1517
- };
1518
- const A = () => {
1519
- const [entity, { setEntity }] = useUseCase(numberUseCase);
1520
- const onButtonClick = () => {
1521
- setEntity(6);
1522
- };
1523
- useUpdateEffect(() => {
1524
- onUpdate1(entity);
1525
- }, [entity]);
1526
- return (_jsx("div", { children: _jsx("button", { onClick: onButtonClick, children: buttonText }) }));
1527
- };
1528
- const B = () => {
1529
- const [entity] = useUseCase(numberUseCase);
1530
- useUpdateEffect(() => {
1531
- onUpdate2(entity);
1532
- }, [entity]);
1533
- return _jsx(A, {});
1534
- };
1535
- registerGlobalUseCase(1, numberUseCase);
1536
- render(_jsx(B, {}));
1537
- fireEvent.click(screen.getByText(buttonText));
1538
- expect(onUpdate1).toHaveBeenNthCalledWith(1, 6);
1539
- expect(onUpdate2).toHaveBeenNthCalledWith(1, 6);
1540
- });
1541
1436
  });
1542
1437
  describe('`useUseCase` should work the same as `useReducers`', () => {
1543
1438
  test('`entity` should equal `defaultFile`', () => {
@@ -50,7 +50,7 @@ export interface ReducersHook {
50
50
  <T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions, deps?: unknown[]): T;
51
51
  }
52
52
  export interface ContextualCoreCollectionHook {
53
- <T, TEntityReducers extends EntityReducers<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>, options?: UseCaseHookContextualOptions<T>, deps?: unknown[]): ContextualCoreCollection<T, TEntityReducers>;
53
+ <T, TEntityReducers extends EntityReducerMap<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>, options?: UseCaseHookContextualOptions<T>, deps?: unknown[]): ContextualCoreCollection<T, TEntityReducers>;
54
54
  }
55
55
  export interface RootCoreCollectionHook {
56
56
  <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(entity: T | EntityGetter<T>, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: UseCaseHookOptions<T, TUseCaseOptions>, deps?: unknown[]): RootCoreCollection<T, EntityReducers<T, TEntityReducers>>;
package/es/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export { UseCaseFragment } from './components/UseCaseFragment';
2
2
  export { useUseCase } from './hooks/useUseCase';
3
- export { registerGlobalUseCase } from './methods/registerGlobalUseCase';
4
3
  export type { EntityWatchEvent, RootCoreCollection, ContextualCoreCollection, CoreCollection, } from './hooks/useUseCase/types';
5
4
  export type { UseCaseHookOptions } from './hooks/useUseCase/types';
6
5
  export type { UseCaseProvider } from './hooks/useProvider/types';
package/es/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export { UseCaseFragment } from './components/UseCaseFragment';
2
2
  export { useUseCase } from './hooks/useUseCase';
3
- export { registerGlobalUseCase } from './methods/registerGlobalUseCase';
@@ -1,12 +1,9 @@
1
- import { createUseCase, EntityStore } from '@mic-rexjs/usecases';
1
+ import { createUseCase } from '@mic-rexjs/usecases';
2
2
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
3
3
  import { createContext } from 'react';
4
4
  import { Statuses } from '../../enums/Statuses';
5
- import { initEntityReducers } from '../../methods/initEntityReducers';
6
5
  export const contextUseCase = createUseCase(() => {
7
6
  const referenceMap = new Map();
8
- const globalContextMap = new Map();
9
- const globalContextValueMap = new Map();
10
7
  const defaultUseCaseContext = createContext(null);
11
8
  return () => {
12
9
  const createContextValue = (store, reducers, statuses) => {
@@ -19,13 +16,6 @@ export const contextUseCase = createUseCase(() => {
19
16
  }
20
17
  return { reducers, statuses };
21
18
  };
22
- const getGlobalContextValue = (key) => {
23
- const context = typeof key === 'function' ? globalContextMap.get(key) : key;
24
- return globalContextValueMap.get(context) || null;
25
- };
26
- const isGlobal = (usecase) => {
27
- return globalContextMap.has(usecase);
28
- };
29
19
  const registerUseCase = (usecase, argumentTypes) => {
30
20
  if (referenceMap.has(usecase)) {
31
21
  const reference = referenceMap.get(usecase);
@@ -66,36 +56,10 @@ export const contextUseCase = createUseCase(() => {
66
56
  }
67
57
  return true;
68
58
  };
69
- const registerGlobalUseCase = (entity, usecase) => {
70
- if (globalContextMap.has(usecase)) {
71
- return usecase;
72
- }
73
- const store = new EntityStore(entity);
74
- const reducers = initEntityReducers(usecase, store, {});
75
- const contextValue = createContextValue(store, reducers, Statuses.GlobalEnabled);
76
- const context = registerUseCase(usecase, ArgumentTypes.GlobalEntity);
77
- globalContextMap.set(usecase, context);
78
- globalContextValueMap.set(context, contextValue);
79
- return usecase;
80
- };
81
- const unregisterGlobalUseCase = (usecase) => {
82
- if (!globalContextMap.has(usecase)) {
83
- return false;
84
- }
85
- const context = globalContextMap.get(usecase);
86
- globalContextMap.delete(usecase);
87
- globalContextValueMap.delete(context);
88
- referenceMap.delete(usecase);
89
- return true;
90
- };
91
59
  return {
92
60
  createContextValue,
93
- getGlobalContextValue,
94
- isGlobal,
95
61
  registerUseCase,
96
- registerGlobalUseCase,
97
62
  unregisterUseCase,
98
- unregisterGlobalUseCase,
99
63
  };
100
64
  };
101
65
  });
@@ -2,7 +2,7 @@
2
2
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
3
3
  import { Statuses } from '../../enums/Statuses';
4
4
  import { AsyncEntityGenerator, EntityGenerator, EntityReducer, EntityStore, ReducerKeys, Reducers } from '@mic-rexjs/usecases';
5
- import { EntityReducerMap, InferableEntityUseCase, InferableUseCase, ReducerMap } from '@mic-rexjs/usecases/es/types';
5
+ import { EntityReducerMap, InferableUseCase, ReducerMap } from '@mic-rexjs/usecases/es/types';
6
6
  export type ContextualEntityReducer<T, TEntityReducer extends EntityReducer<T>> = TEntityReducer extends (entity: infer TEntity, ...args: infer TArgs) => infer TReturn ? (...args: TArgs) => TReturn extends AsyncEntityGenerator<TEntity, infer TResult> ? Promise<TResult> : TReturn extends EntityGenerator<TEntity, infer TResult> ? TResult : TReturn : never;
7
7
  export type ContextualEntityReducers<T, TEntityReducers extends EntityReducerMap<T>> = {
8
8
  [K in ReducerKeys<TEntityReducers>]: ContextualEntityReducer<T, TEntityReducers[K]>;
@@ -22,13 +22,8 @@ export interface ContextReference<T> {
22
22
  }
23
23
  export type ContextReducers = Reducers<{
24
24
  createContextValue<T, TReducers extends ReducerMap>(store: EntityStore<T>, reducers: TReducers, statuses: Statuses): ContextValue<TReducers>;
25
- getGlobalContextValue<T, TEntityReducers extends EntityReducerMap<T>, TContextValue extends ContextValue<TEntityReducers> = ContextValue<TEntityReducers>>(key: Context<TContextValue>): TContextValue;
26
- getGlobalContextValue<T, TEntityReducers extends EntityReducerMap<T>>(usecase: InferableEntityUseCase<T, TEntityReducers>): ContextValue<TEntityReducers> | null;
27
- isGlobal<T>(usecase: InferableEntityUseCase<T>): boolean;
28
25
  registerUseCase<T extends ReducerMap, TUseCaseOptions extends object, TContext extends Context<ContextValue<T>> = Context<ContextValue<T>>>(usecase: InferableUseCase<T, TUseCaseOptions>, argumentTypes: ArgumentTypes): TContext;
29
26
  unregisterUseCase<T extends ReducerMap, TUseCaseOptions extends object>(usecase: InferableUseCase<T, TUseCaseOptions>, argumentTypes: ArgumentTypes): boolean;
30
- registerGlobalUseCase<T, TUseCase extends InferableEntityUseCase<T>>(entity: T, usecase: TUseCase): TUseCase;
31
- unregisterGlobalUseCase<T>(usecase: InferableEntityUseCase<T>): boolean;
32
27
  }>;
33
28
  export interface ContextUseCase {
34
29
  (): ContextReducers;
@@ -8,6 +8,4 @@ var ArgumentTypes;
8
8
  (function (ArgumentTypes) {
9
9
  ArgumentTypes[ArgumentTypes["None"] = 0] = "None";
10
10
  ArgumentTypes[ArgumentTypes["Entity"] = 2] = "Entity";
11
- ArgumentTypes[ArgumentTypes["Global"] = 4] = "Global";
12
- ArgumentTypes[ArgumentTypes["GlobalEntity"] = 6] = "GlobalEntity";
13
11
  })(ArgumentTypes || (exports.ArgumentTypes = ArgumentTypes = {}));
@@ -19,10 +19,6 @@ var Statuses;
19
19
  * 是否有 `entity`
20
20
  */
21
21
  Statuses[Statuses["EntityEnabled"] = 8] = "EntityEnabled";
22
- /**
23
- * 是否为全局模式
24
- */
25
- Statuses[Statuses["GlobalEnabled"] = 28] = "GlobalEnabled";
26
22
  /**
27
23
  * 是否为需要提供 `Provider` 去挂载根 `context`
28
24
  */
@@ -9,20 +9,14 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _ArgumentTypes = require("../../enums/ArgumentTypes");
11
11
  var _useConstant = require("../useConstant");
12
- var _useContextUseCase2 = require("../useContextUseCase");
13
12
  var useArgumentTypes = exports.useArgumentTypes = function useArgumentTypes(args) {
14
- var _useContextUseCase = (0, _useContextUseCase2.useContextUseCase)(),
15
- isGlobal = _useContextUseCase.isGlobal;
16
13
  return (0, _useConstant.useConstant)(function () {
17
14
  var types = _ArgumentTypes.ArgumentTypes.None;
18
15
  var _args = (0, _slicedToArray2["default"])(args, 2),
19
- arg1 = _args[0],
20
16
  arg2 = _args[1];
21
17
  var type2 = (0, _typeof2["default"])(arg2);
22
18
  if (type2 === 'function') {
23
19
  types |= _ArgumentTypes.ArgumentTypes.Entity;
24
- } else if (isGlobal(arg1)) {
25
- types |= _ArgumentTypes.ArgumentTypes.Global;
26
20
  }
27
21
  return types;
28
22
  });
@@ -29,14 +29,14 @@ var useEntity = exports.useEntity = function useEntity(statuses, entityArg, cont
29
29
  var _optionsRef$current = optionsRef.current,
30
30
  onChange = _optionsRef$current.onChange,
31
31
  watch = _optionsRef$current.watch;
32
- var globalEnabled = (statuses & _Statuses.Statuses.GlobalEnabled) === _Statuses.Statuses.GlobalEnabled;
33
32
  if (watch) {
34
33
  (0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
35
34
  }
36
35
  onChange === null || onChange === void 0 || onChange(newEntity, oldEntity);
37
- if (entityRootEnabled || globalEnabled) {
38
- update();
36
+ if (!entityRootEnabled) {
37
+ return;
39
38
  }
39
+ update();
40
40
  });
41
41
  if (entityRootEnabled) {
42
42
  // 执行同步操作
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useFullArguments = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _ArgumentTypes = require("../../enums/ArgumentTypes");
10
- var _useContextUseCase2 = require("../useContextUseCase");
11
10
  var useFullArguments = exports.useFullArguments = function useFullArguments(args, argumentTypes) {
12
11
  var _args = (0, _slicedToArray2["default"])(args, 4),
13
12
  arg1 = _args[0],
@@ -15,10 +14,7 @@ var useFullArguments = exports.useFullArguments = function useFullArguments(args
15
14
  arg3 = _args[2],
16
15
  arg4 = _args[3];
17
16
  var withoutEntity = (argumentTypes & _ArgumentTypes.ArgumentTypes.Entity) !== _ArgumentTypes.ArgumentTypes.Entity;
18
- var _useContextUseCase = (0, _useContextUseCase2.useContextUseCase)(),
19
- isGlobal = _useContextUseCase.isGlobal;
20
- var global = isGlobal(arg1);
21
- if (withoutEntity || global) {
17
+ if (withoutEntity) {
22
18
  return [null, arg1, arg2 || {}, arg3 || []];
23
19
  }
24
20
  return [arg1, arg2, arg3 || {}, arg4 || []];
@@ -13,21 +13,17 @@ var useStatuses = exports.useStatuses = function useStatuses(argumentTypes, cont
13
13
  var _ref = contextValue || {},
14
14
  store = _ref.store;
15
15
  var hasEntity = (argumentTypes & _ArgumentTypes.ArgumentTypes.Entity) === _ArgumentTypes.ArgumentTypes.Entity;
16
- var isGlobal = (argumentTypes & _ArgumentTypes.ArgumentTypes.Global) === _ArgumentTypes.ArgumentTypes.Global;
17
- if (hasEntity && !isGlobal) {
16
+ if (hasEntity) {
18
17
  statuses |= _Statuses.Statuses.EntityRootEnabled;
19
18
  }
20
- if (contextValue || isGlobal) {
19
+ if (contextValue) {
21
20
  statuses |= _Statuses.Statuses.ContextEnabled;
22
21
  } else {
23
22
  statuses |= _Statuses.Statuses.RootEnabled;
24
23
  }
25
- if (store || isGlobal) {
24
+ if (store) {
26
25
  statuses |= _Statuses.Statuses.EntityEnabled;
27
26
  }
28
- if (isGlobal) {
29
- statuses |= _Statuses.Statuses.GlobalEnabled;
30
- }
31
27
  return statuses;
32
28
  }, [argumentTypes, contextValue]);
33
29
  };
@@ -8,6 +8,7 @@ exports.useUseCase = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _ahooks = require("ahooks");
11
+ var _react = require("react");
11
12
  var _useConstantFn = require("../useConstantFn");
12
13
  var _useProvider = require("../useProvider");
13
14
  var _initEntityReducers = require("../../methods/initEntityReducers");
@@ -22,7 +23,6 @@ var _cacheCalls = require("../../methods/cacheCalls");
22
23
  var _useCompareDeps = require("../useCompareDeps");
23
24
  var _captureCalls = require("../../methods/captureCalls");
24
25
  var _useFullArguments = require("../useFullArguments");
25
- var _useContextValue = require("../useContextValue");
26
26
  var useUseCase = exports.useUseCase = function useUseCase() {
27
27
  var isRenderingRef = (0, _useIsRenderingRef.useIsRenderingRef)();
28
28
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -39,7 +39,7 @@ var useUseCase = exports.useUseCase = function useUseCase() {
39
39
  var usecase = unkownUsecase;
40
40
  var entityUseCase = unkownUsecase;
41
41
  var context = (0, _useContext.useContext)(unkownUsecase, argumentTypes);
42
- var contextValue = (0, _useContextValue.useContextValue)(context, argumentTypes);
42
+ var contextValue = (0, _react.useContext)(context);
43
43
  var entityContextValue = contextValue;
44
44
  var statuses = (0, _useStatuses.useStatuses)(argumentTypes, contextValue);
45
45
  var optionsRef = (0, _ahooks.useLatest)(options);
@@ -16,7 +16,6 @@ var _react = require("@testing-library/react");
16
16
  var _ = require(".");
17
17
  var _ahooks = require("ahooks");
18
18
  var _react2 = require("react");
19
- var _registerGlobalUseCase = require("../../methods/registerGlobalUseCase");
20
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
21
  function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
@@ -1919,150 +1918,6 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1919
1918
  oldValue: EXT_1
1920
1919
  });
1921
1920
  });
1922
- (0, _globals.test)('global usecase should share the entity to any components', function () {
1923
- var onValue = _globals.jest.fn();
1924
- var firstButtonText = 'first button';
1925
- var secondButtonText = 'second button';
1926
- var numberUseCase = function numberUseCase() {
1927
- return (0, _usecases.entityUseCase)();
1928
- };
1929
- var A = function A() {
1930
- var _useUseCase54 = (0, _.useUseCase)(numberUseCase),
1931
- _useUseCase55 = (0, _slicedToArray2["default"])(_useUseCase54, 2),
1932
- entity = _useUseCase55[0],
1933
- setEntity = _useUseCase55[1].setEntity;
1934
- var onButtonClick = function onButtonClick() {
1935
- setEntity(2);
1936
- };
1937
- (0, _ahooks.useMount)(function () {
1938
- onValue(entity);
1939
- });
1940
- return (0, _jsxRuntime.jsx)("div", {
1941
- children: (0, _jsxRuntime.jsx)("button", {
1942
- onClick: onButtonClick,
1943
- children: firstButtonText
1944
- })
1945
- });
1946
- };
1947
- var B = function B() {
1948
- var _useUseCase56 = (0, _.useUseCase)(numberUseCase),
1949
- _useUseCase57 = (0, _slicedToArray2["default"])(_useUseCase56, 2),
1950
- entity = _useUseCase57[0],
1951
- setEntity = _useUseCase57[1].setEntity;
1952
- var onButtonClick = function onButtonClick() {
1953
- setEntity(3);
1954
- };
1955
- (0, _ahooks.useMount)(function () {
1956
- onValue(entity);
1957
- });
1958
- return (0, _jsxRuntime.jsx)("div", {
1959
- children: (0, _jsxRuntime.jsx)("button", {
1960
- onClick: onButtonClick,
1961
- children: secondButtonText
1962
- })
1963
- });
1964
- };
1965
- (0, _registerGlobalUseCase.registerGlobalUseCase)(1, numberUseCase);
1966
- (0, _react.render)((0, _jsxRuntime.jsx)(A, {}));
1967
- (0, _globals.expect)(onValue).toHaveBeenNthCalledWith(1, 1);
1968
- _react.fireEvent.click(_react.screen.getByText(firstButtonText));
1969
- (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
1970
- (0, _globals.expect)(onValue).toHaveBeenNthCalledWith(2, 2);
1971
- _react.fireEvent.click(_react.screen.getByText(secondButtonText));
1972
- });
1973
- (0, _globals.test)('global usecase should trigger `onChange` in any components when entity has changed', function () {
1974
- var onValueChange1 = _globals.jest.fn();
1975
- var onValueChange2 = _globals.jest.fn();
1976
- var firstButtonText = 'first button';
1977
- var secondButtonText = 'second button';
1978
- var numberUseCase = function numberUseCase() {
1979
- return (0, _usecases.entityUseCase)();
1980
- };
1981
- var A = function A() {
1982
- var _useUseCase58 = (0, _.useUseCase)(numberUseCase, {
1983
- onChange: function onChange(value) {
1984
- onValueChange1(value);
1985
- }
1986
- }),
1987
- _useUseCase59 = (0, _slicedToArray2["default"])(_useUseCase58, 2),
1988
- setEntity = _useUseCase59[1].setEntity;
1989
- var onButtonClick = function onButtonClick() {
1990
- setEntity(2);
1991
- };
1992
- return (0, _jsxRuntime.jsx)("div", {
1993
- children: (0, _jsxRuntime.jsx)("button", {
1994
- onClick: onButtonClick,
1995
- children: firstButtonText
1996
- })
1997
- });
1998
- };
1999
- var B = function B() {
2000
- var _useUseCase60 = (0, _.useUseCase)(numberUseCase, {
2001
- onChange: function onChange(value) {
2002
- onValueChange2(value);
2003
- }
2004
- }),
2005
- _useUseCase61 = (0, _slicedToArray2["default"])(_useUseCase60, 2),
2006
- setEntity = _useUseCase61[1].setEntity;
2007
- var onButtonClick = function onButtonClick() {
2008
- setEntity(3);
2009
- };
2010
- return (0, _jsxRuntime.jsx)("div", {
2011
- children: (0, _jsxRuntime.jsx)("button", {
2012
- onClick: onButtonClick,
2013
- children: secondButtonText
2014
- })
2015
- });
2016
- };
2017
- (0, _registerGlobalUseCase.registerGlobalUseCase)(1, numberUseCase);
2018
- (0, _react.render)((0, _jsxRuntime.jsx)(A, {}));
2019
- _react.fireEvent.click(_react.screen.getByText(firstButtonText));
2020
- (0, _globals.expect)(onValueChange1).toHaveBeenNthCalledWith(1, 2);
2021
- (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
2022
- _react.fireEvent.click(_react.screen.getByText(secondButtonText));
2023
- (0, _globals.expect)(onValueChange1).toHaveBeenNthCalledWith(2, 3);
2024
- (0, _globals.expect)(onValueChange2).toHaveBeenNthCalledWith(1, 3);
2025
- });
2026
- (0, _globals.test)('global usecase should trigger update for components when entity has changed', function () {
2027
- var onUpdate1 = _globals.jest.fn();
2028
- var onUpdate2 = _globals.jest.fn();
2029
- var buttonText = 'my button';
2030
- var numberUseCase = function numberUseCase() {
2031
- return (0, _usecases.entityUseCase)();
2032
- };
2033
- var A = function A() {
2034
- var _useUseCase62 = (0, _.useUseCase)(numberUseCase),
2035
- _useUseCase63 = (0, _slicedToArray2["default"])(_useUseCase62, 2),
2036
- entity = _useUseCase63[0],
2037
- setEntity = _useUseCase63[1].setEntity;
2038
- var onButtonClick = function onButtonClick() {
2039
- setEntity(6);
2040
- };
2041
- (0, _ahooks.useUpdateEffect)(function () {
2042
- onUpdate1(entity);
2043
- }, [entity]);
2044
- return (0, _jsxRuntime.jsx)("div", {
2045
- children: (0, _jsxRuntime.jsx)("button", {
2046
- onClick: onButtonClick,
2047
- children: buttonText
2048
- })
2049
- });
2050
- };
2051
- var B = function B() {
2052
- var _useUseCase64 = (0, _.useUseCase)(numberUseCase),
2053
- _useUseCase65 = (0, _slicedToArray2["default"])(_useUseCase64, 1),
2054
- entity = _useUseCase65[0];
2055
- (0, _ahooks.useUpdateEffect)(function () {
2056
- onUpdate2(entity);
2057
- }, [entity]);
2058
- return (0, _jsxRuntime.jsx)(A, {});
2059
- };
2060
- (0, _registerGlobalUseCase.registerGlobalUseCase)(1, numberUseCase);
2061
- (0, _react.render)((0, _jsxRuntime.jsx)(B, {}));
2062
- _react.fireEvent.click(_react.screen.getByText(buttonText));
2063
- (0, _globals.expect)(onUpdate1).toHaveBeenNthCalledWith(1, 6);
2064
- (0, _globals.expect)(onUpdate2).toHaveBeenNthCalledWith(1, 6);
2065
- });
2066
1921
  });
2067
1922
  (0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
2068
1923
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
@@ -2116,8 +1971,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2116
1971
  (0, _globals.test)('reducer call should not be cached if component is at rendering phase', function () {
2117
1972
  var buttonText = 'button';
2118
1973
  var CacheTestComponent = function CacheTestComponent() {
2119
- var _useUseCase66 = (0, _.useUseCase)(mathUseCase),
2120
- subtraction = _useUseCase66.subtraction;
1974
+ var _useUseCase54 = (0, _.useUseCase)(mathUseCase),
1975
+ subtraction = _useUseCase54.subtraction;
2121
1976
  var update = (0, _ahooks.useUpdate)();
2122
1977
  var onClick = function onClick() {
2123
1978
  update();
@@ -2140,8 +1995,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2140
1995
  (0, _globals.test)('reducer call should not be cached if component is not at rendering phase', function () {
2141
1996
  var buttonText = 'button';
2142
1997
  var CacheTestComponent = function CacheTestComponent() {
2143
- var _useUseCase67 = (0, _.useUseCase)(mathUseCase),
2144
- subtraction = _useUseCase67.subtraction;
1998
+ var _useUseCase55 = (0, _.useUseCase)(mathUseCase),
1999
+ subtraction = _useUseCase55.subtraction;
2145
2000
  var onClick = function onClick() {
2146
2001
  subtraction(5, 3);
2147
2002
  };
@@ -2169,8 +2024,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2169
2024
  var count = 0;
2170
2025
  var buttonText = 'button';
2171
2026
  var StringUseCaseTestComponent = function StringUseCaseTestComponent() {
2172
- var _useUseCase68 = (0, _.useUseCase)(mathUseCase),
2173
- subtraction = _useUseCase68.subtraction;
2027
+ var _useUseCase56 = (0, _.useUseCase)(mathUseCase),
2028
+ subtraction = _useUseCase56.subtraction;
2174
2029
  var update = (0, _ahooks.useUpdate)();
2175
2030
  subtraction(5, count++);
2176
2031
  var onUpdate = function onUpdate() {
package/lib/index.js CHANGED
@@ -9,12 +9,6 @@ Object.defineProperty(exports, "UseCaseFragment", {
9
9
  return _UseCaseFragment.UseCaseFragment;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "registerGlobalUseCase", {
13
- enumerable: true,
14
- get: function get() {
15
- return _registerGlobalUseCase.registerGlobalUseCase;
16
- }
17
- });
18
12
  Object.defineProperty(exports, "useUseCase", {
19
13
  enumerable: true,
20
14
  get: function get() {
@@ -22,5 +16,4 @@ Object.defineProperty(exports, "useUseCase", {
22
16
  }
23
17
  });
24
18
  var _UseCaseFragment = require("./components/UseCaseFragment");
25
- var _useUseCase = require("./hooks/useUseCase");
26
- var _registerGlobalUseCase = require("./methods/registerGlobalUseCase");
19
+ var _useUseCase = require("./hooks/useUseCase");
@@ -8,11 +8,8 @@ var _usecases = require("@mic-rexjs/usecases");
8
8
  var _ArgumentTypes = require("../../enums/ArgumentTypes");
9
9
  var _react = require("react");
10
10
  var _Statuses = require("../../enums/Statuses");
11
- var _initEntityReducers = require("../../methods/initEntityReducers");
12
11
  var contextUseCase = exports.contextUseCase = (0, _usecases.createUseCase)(function () {
13
12
  var referenceMap = new Map();
14
- var globalContextMap = new Map();
15
- var globalContextValueMap = new Map();
16
13
  var defaultUseCaseContext = (0, _react.createContext)(null);
17
14
  return function () {
18
15
  var createContextValue = function createContextValue(store, reducers, statuses) {
@@ -28,13 +25,6 @@ var contextUseCase = exports.contextUseCase = (0, _usecases.createUseCase)(funct
28
25
  statuses: statuses
29
26
  };
30
27
  };
31
- var getGlobalContextValue = function getGlobalContextValue(key) {
32
- var context = typeof key === 'function' ? globalContextMap.get(key) : key;
33
- return globalContextValueMap.get(context) || null;
34
- };
35
- var isGlobal = function isGlobal(usecase) {
36
- return globalContextMap.has(usecase);
37
- };
38
28
  var registerUseCase = function registerUseCase(usecase, argumentTypes) {
39
29
  if (referenceMap.has(usecase)) {
40
30
  var reference = referenceMap.get(usecase);
@@ -76,36 +66,10 @@ var contextUseCase = exports.contextUseCase = (0, _usecases.createUseCase)(funct
76
66
  }
77
67
  return true;
78
68
  };
79
- var registerGlobalUseCase = function registerGlobalUseCase(entity, usecase) {
80
- if (globalContextMap.has(usecase)) {
81
- return usecase;
82
- }
83
- var store = new _usecases.EntityStore(entity);
84
- var reducers = (0, _initEntityReducers.initEntityReducers)(usecase, store, {});
85
- var contextValue = createContextValue(store, reducers, _Statuses.Statuses.GlobalEnabled);
86
- var context = registerUseCase(usecase, _ArgumentTypes.ArgumentTypes.GlobalEntity);
87
- globalContextMap.set(usecase, context);
88
- globalContextValueMap.set(context, contextValue);
89
- return usecase;
90
- };
91
- var unregisterGlobalUseCase = function unregisterGlobalUseCase(usecase) {
92
- if (!globalContextMap.has(usecase)) {
93
- return false;
94
- }
95
- var context = globalContextMap.get(usecase);
96
- globalContextMap["delete"](usecase);
97
- globalContextValueMap["delete"](context);
98
- referenceMap["delete"](usecase);
99
- return true;
100
- };
101
69
  return {
102
70
  createContextValue: createContextValue,
103
- getGlobalContextValue: getGlobalContextValue,
104
- isGlobal: isGlobal,
105
71
  registerUseCase: registerUseCase,
106
- registerGlobalUseCase: registerGlobalUseCase,
107
- unregisterUseCase: unregisterUseCase,
108
- unregisterGlobalUseCase: unregisterGlobalUseCase
72
+ unregisterUseCase: unregisterUseCase
109
73
  };
110
74
  };
111
75
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "2.7.1",
3
+ "version": "2.8.0",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "keywords": [
@@ -1,4 +0,0 @@
1
- import { Context, ContextValue } from '../../usecases/contextUseCase/types';
2
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
3
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
4
- export declare const useContextValue: <T extends ReducerMap<import("@mic-rexjs/usecases/es/types").Reducer<unknown>>, TContextValue extends ContextValue<T>>(context: Context<TContextValue>, argumentType: ArgumentTypes) => TContextValue | null;
@@ -1,13 +0,0 @@
1
- import { useContextUseCase } from '../useContextUseCase';
2
- import { useContext } from 'react';
3
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
4
- export const useContextValue = (context, argumentType) => {
5
- const { getGlobalContextValue } = useContextUseCase();
6
- const contextValue = useContext(context);
7
- const globalContextValue = getGlobalContextValue(context);
8
- const isGlobal = (argumentType & ArgumentTypes.Global) === ArgumentTypes.Global;
9
- if (isGlobal) {
10
- return globalContextValue;
11
- }
12
- return contextValue;
13
- };
@@ -1 +0,0 @@
1
- export declare const registerGlobalUseCase: <T, TUseCase extends import("@mic-rexjs/usecases/es/types").InferableEntityUseCase<T>>(entity: T, usecase: TUseCase) => TUseCase;
@@ -1,2 +0,0 @@
1
- import { contextUseCase } from '../../usecases/contextUseCase';
2
- export const { registerGlobalUseCase } = contextUseCase();
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useContextValue = void 0;
7
- var _useContextUseCase2 = require("../useContextUseCase");
8
- var _react = require("react");
9
- var _ArgumentTypes = require("../../enums/ArgumentTypes");
10
- var useContextValue = exports.useContextValue = function useContextValue(context, argumentType) {
11
- var _useContextUseCase = (0, _useContextUseCase2.useContextUseCase)(),
12
- getGlobalContextValue = _useContextUseCase.getGlobalContextValue;
13
- var contextValue = (0, _react.useContext)(context);
14
- var globalContextValue = getGlobalContextValue(context);
15
- var isGlobal = (argumentType & _ArgumentTypes.ArgumentTypes.Global) === _ArgumentTypes.ArgumentTypes.Global;
16
- if (isGlobal) {
17
- return globalContextValue;
18
- }
19
- return contextValue;
20
- };
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.registerGlobalUseCase = void 0;
7
- var _contextUseCase2 = require("../../usecases/contextUseCase");
8
- var _contextUseCase = (0, _contextUseCase2.contextUseCase)(),
9
- registerGlobalUseCase = exports.registerGlobalUseCase = _contextUseCase.registerGlobalUseCase;