New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@airma/react-effect

Package Overview
Dependencies
Maintainers
1
Versions
89
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@airma/react-effect - npm Package Compare versions

Comparing version 18.3.0-alpha.12 to 18.3.0

2

dist/index.js

@@ -1,1 +0,1 @@

!function(r,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react"),require("@airma/react-state"),require("@airma/react-hooks-core")):"function"==typeof define&&define.amd?define(["react","@airma/react-state","@airma/react-hooks-core"],e):"object"==typeof exports?exports["@airma/react-effect"]=e(require("react"),require("@airma/react-state"),require("@airma/react-hooks-core")):r["@airma/react-effect"]=e(r.react,r["@airma/react-state"],r["@airma/react-hooks-core"])}(self,(function(r,e,n){return function(){"use strict";var t={309:function(r){r.exports=n},719:function(r){r.exports=e},156:function(e){e.exports=r}},o={};function u(r){var e=o[r];if(void 0!==e)return e.exports;var n=o[r]={exports:{}};return t[r](n,n.exports,u),n.exports}u.d=function(r,e){for(var n in e)u.o(e,n)&&!u.o(r,n)&&Object.defineProperty(r,n,{enumerable:!0,get:e[n]})},u.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},u.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})};var i={};return function(){function r(r,e,n){return e in r?Object.defineProperty(r,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):r[e]=n,r}function e(r,e){(null==e||e>r.length)&&(e=r.length);for(var n=0,t=new Array(e);n<e;n++)t[n]=r[n];return t}function n(r,n){if(r){if("string"==typeof r)return e(r,n);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?e(r,n):void 0}}function t(r){return function(r){if(Array.isArray(r))return e(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||n(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.")}()}function o(r,e){return function(r){if(Array.isArray(r))return r}(r)||function(r,e){var n=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=n){var t,o,u=[],i=!0,c=!1;try{for(n=n.call(r);!(i=(t=n.next()).done)&&(u.push(t.value),!e||u.length!==e);i=!0);}catch(r){c=!0,o=r}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return u}}(r,e)||n(r,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.")}()}u.r(i),u.d(i,{ConfigProvider:function(){return w},Provider:function(){return $},SessionProvider:function(){return Y},Strategy:function(){return L},createSessionKey:function(){return g},provide:function(){return B},session:function(){return H},useIsFetching:function(){return J},useLazyComponent:function(){return N},useLoadedSession:function(){return z},useMutation:function(){return Q},useQuery:function(){return R},useResponse:function(){return _},useSession:function(){return U}});var c=u(156),a=u(719),s=u(309);function f(r,e){if(null==r)return{};var n,t,o=function(r,e){if(null==r)return{};var n,t,o={},u=Object.keys(r);for(t=0;t<u.length;t++)n=u[t],e.indexOf(n)>=0||(o[n]=r[n]);return o}(r,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(r);for(t=0;t<u.length;t++)n=u[t],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(r,n)&&(o[n]=r[n])}return o}var l=["version"];function d(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function v(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?d(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):d(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function y(r){var e=r.version,n=f(r,l),t=function(n){return v(v({},n),{},{version:e,uniqueKey:r.uniqueKey})},o=function(e){return e.isFetching?e:v(v({},e),{},{fetchVersion:(r.fetchVersion||0)+1})};return{state:n,version:e||0,setState:function(e){return o(t("function"!=typeof e?e:e(r)))},setFetchingKey:function(e){return t(v(v({},r),{},{fetchingKey:e,finalFetchingKey:null!=e?e:r.finalFetchingKey}))},removeFetchingKey:function(e){return r.fetchingKey!==e?r:t(v(v({},r),{},{fetchingKey:void 0}))},trigger:function(){return v(v({},r),{},{version:(e||0)+1})}}}var p=function(r){return v({data:void 0,variables:void 0,isError:!1,isFetching:!1,abandon:!1,triggerType:void 0,loaded:!1,sessionLoaded:!1,cache:[]},r)};function h(r,e,n){if(!("function"==typeof r.pipe))return[y,r,n,!1];var t=o(r.effect,2),u=t[0],i=t[1].sessionType;if(null!=i&&i!==e)throw new Error("The sessionType is not matched, can not use '".concat(i," type' sessionKey with '").concat("query"===e?"useQuery":"useMutation","'"));return[r,u,n,!0]}function b(r,e){return o(h(r,"query",Array.isArray(e)?{variables:e}:e),3)[2]||{}}function g(r,e){var n=(0,a.createKey)(y,p());return n.effect=[function(){return r.apply(void 0,arguments)},e?{sessionType:e}:{}],n}var m=[],O=(0,a.createKey)((function(r){return{isFetching:r.length>0,setGlobalFetchingKey:function(e){return r.some((function(r){return r===e}))?r:r.concat(e)},removeGlobalFetchingKey:function(e){return r.some((function(r){return r===e}))?r.filter((function(r){return r!==e})):r}}}),m),j=(0,c.createContext)(null);function w(r){var e=r.value,n=r.children,t=(0,c.useMemo)((function(){return e.useGlobalFetching?O:void 0}),[]);return(0,c.createElement)(j.Provider,{value:e},t?(0,c.createElement)(a.Provider,{value:t},n):n)}function P(){return(0,c.useContext)(j)}function E(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function S(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?E(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):E(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function F(r){return Array.isArray(r)?r:[r]}function T(r,e,n){var u=F(n.strategy),i=(0,c.useRef)(u.map((function(){return{current:void 0}})));return[function(c,a){var s,f,l=a||[],d={current:function(){return r.state},variables:l,runner:function(n){var t=r.state,o=r.setState,u=S(S({},t),{},{isFetching:!0}),i=n?n(u):u;return i.abandon||o(S(S({},i),{},{triggerType:c})),e(c,l)},triggerType:c,config:n,store:i,runtimeCache:(s=[],f=function(r){var e=s.find((function(e){return o(e,1)[0]===r}));if(Array.isArray(e))return e},{set:function(r,e){var n=f(r);n?n[1]=e:s.push([r,e])},get:function(r){var e=f(r);if(e)return e[1]}})};return function(r){return function(e){var n=[],o=e.store.current;return t(r).reverse().reduce((function(r,e,t){var u=o[t]||{current:void 0};return function(t){var o=S(S({},t),{},{store:u});return null==e?r(o):e(S(S({},o),{},{runner:function(e){return null!=e&&n.push(e),r(o)}}))}}),(function(r){return r.runner((function(r){return n.reduce((function(r,e){return r.abandon?r:e(r)}),r)}))}))(e).then((function(r){var n=e.current(),t=n.loaded,o=n.sessionLoaded,u=r.abandon,i=r.isError,c=r.isFetching,a=t||!u&&!i&&!c,s=o||!u&&!i&&!c;return S(S({},r),{},{loaded:a,sessionLoaded:s})}))}}(u)(d).then((function(e){return e.abandon||r.setState(e),e}))},u.map((function(r){if(r)return r.effect})).filter((function(r){return!!r})),u.map((function(r){if(r)return r.response})).filter((function(r){return!!r}))]}var A=["cache"];function K(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function D(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?K(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):K(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var M=function(r,e){return!!Object.is(r,e)||null!=r&&null!=e&&JSON.stringify(r)===JSON.stringify(e)};function q(r,e){var n=(e||{}).withAbandoned;return function(e){var t=e.runner,o=e.runtimeCache,u=e.store,i=o.get(q);return o.set(q,!0),u.current=r,t().then((function(r){var e=u.current;return!r.isError||i||!e||r.abandon&&!n||e(r.error,r),r}))}}function x(r){var e=function(r){return(0,r.runner)()};return e.response=r,e}function k(){return(new Date).getTime()}function I(r,e){var n=null==e?1:e;function u(r,e){var n=r.find((function(r){return o(r,1)[0]===e}))||[void 0,void 0];return o(n,2)[1]}return{get:function(e){if(!(n<1))return u(r,e)},set:function(e,i){if(n<1)return[];var c={data:i,lastUpdateTime:k()};if(null!=u(r,e))return r.map((function(r){var n=o(r,2),t=n[0],u=n[1];return e!==t?[t,u]:[e,c]}));var a=[].concat(t(r),[[e,c]]);return a.length>n?a.slice(a.length-n):a}}}x.success=function(r){var e=function(r){return(0,r.runner)()};return e.response=function(e){e.isError||e.isFetching||!e.sessionLoaded||r(e.data,e)},e},x.error=function(r){var e=function(r){var e=r.runner;return r.runtimeCache.set(q,!0),e()};return e.response=function(e){e.isError&&!e.isFetching&&r(e.error,e)},e},x.failure=function(r){var e=function(r){var e=r.runner;return r.runtimeCache.set(q,!0),e()};return e.response=function(e){e.isError&&!e.isFetching&&r(e.error,e)},e};var L={cache:function(r){var e=r||{},n=e.key,t=void 0===n?function(r){return JSON.stringify(r)}:n,o=e.staleTime,u=e.capacity,i=void 0===u?1:u;return function(r){var e=r.current,n=r.runner,u=r.variables,c=e(),a=c.cache,s=(f(c,A),t(u)),l=I(a,i).get(s);if(l&&o&&k()<o+l.lastUpdateTime){var d=D(D({},c),{},{data:l.data,variables:u});return Promise.resolve(d)}return n((function(r){return l&&(!o||o<0)?D(D({},r),{},{data:l.data}):r})).then((function(r){if(r.isError)return r;var e=t(r.variables||[]),n=I(r.cache,i).set(e,r.data);return D(D({},r),{},{cache:n})}))}},debounce:function(r){var e="number"==typeof r?r:r.duration,n="number"!=typeof r&&!!r.lead;return function(r){return n?function(){var n=r.current,t=r.runner,o=r.store;o.current&&o.current.id&&(clearTimeout(o.current.id),o.current.id=void 0);var u=setTimeout((function(){o.current=void 0}),e);if(null!=o.current)return o.current.id=u,o.current.promise.then((function(r){return D(D({},r),{},{abandon:!0})}));var i={id:u,version:0,resolve:function(){},promise:new Promise((function(r){r(D(D({},n()),{},{abandon:!0}))}))},c=new Promise((function(r){r(t()),i.resolve=r}));return i.promise=c,o.current=i,c}():function(){var n=r.current,t=r.runner,o=r.store;if(o.current){var u=o.current,i=u.id,c=u.resolve;clearTimeout(i),o.current.id=setTimeout((function(){o.current=void 0,c(t())}),e),o.current.version+=1;var a=o.current.version;return o.current.promise.then((function(r){var e;return a===(null===(e=o.current)||void 0===e?void 0:e.version)?r:D(D({},r),{},{abandon:!0})}))}var s={id:null,version:0,resolve:function(){},promise:new Promise((function(r){r(D(D({},n()),{},{abandon:!0}))}))},f=new Promise((function(r){s.id=setTimeout((function(){o.current=void 0,r(t())}),e),s.resolve=r}));s.promise=f,o.current=s;var l=s.version;return f.then((function(r){var e;return null!==(e=o.current)&&void 0!==e&&e.version||0===l?r:D(D({},r),{},{abandon:!0})}))}()}},throttle:function(r){var e=function(){if(null!=r)return"number"==typeof r?r:r.duration}();return function(r){var n=r.current,t=r.runner,o=r.store,u=r.variables,i=void 0===u?[]:u;o.current=o.current||{timeoutId:null,variables:void 0};var c=o.current.variables,a=o.current.timeoutId;return function(r,e){return null==r||!M(r,e)}(c,i)||null==a&&null!=e?(o.current.variables=i,null==e||(null!=a&&clearTimeout(a),o.current.timeoutId=setTimeout((function(){o.current=o.current||{},o.current.timeoutId=null}),e)),t()):new Promise((function(r){r(n())}))}},once:function(){return function(r){var e=r.runner,n=r.store;return n.current?n.current.then((function(r){return D(D({},r),{},{abandon:!0})})):(n.current=e().then((function(r){return r.isError&&(n.current=void 0),r})),n.current)}},error:q,failure:function(r,e){var n=(e||{}).withAbandoned;return function(e){var t=e.runner,o=e.runtimeCache,u=e.store,i=o.get(q);return o.set(q,!0),u.current=r,t().then((function(r){var e=u.current;return!r.isError||i||!e||r.abandon&&!n||e(r.error,r),r}))}},success:function(r,e){var n=(e||{}).withAbandoned;return function(e){var t=e.runner,o=e.store;return o.current=r,t().then((function(r){var e=o.current;return r.isError||!e||r.abandon&&!n||e(r.data,r),r}))}},validate:function(r){return function(e){var n=e.runner,t=e.current;if(!r()){var o=t();return new Promise((function(r){r(D(D({},o),{},{abandon:!0}))}))}return n()}},memo:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:M;return function(e){var n=e.runner,t=e.current;return n().then((function(e){var n=t();return("function"==typeof r?r(n.data,e.data):n.data===e.data)?D(D({},e),{},{data:n.data}):e}))}},reduce:function(r){return function(e){var n=e.runner,t=e.current;return n().then((function(e){if(e.isError||e.abandon)return e;var n=t(),o=r(n.data,e.data,[n,e]);return D(D({},e),{},{data:o})}))}},response:x};function C(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function V(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?C(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):C(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function G(r,e){var n=(0,c.useRef)({}),u=function(r,e,n){var u=Array.isArray(n)?{variables:n}:n,i=o(h(r,"query",u),4),c=i[0],s=i[1],f=i[2],l=i[3],d=f||{},v=d.defaultData,y=d.loaded,b=Object.prototype.hasOwnProperty.call(d,"defaultData"),g=l?b?[c,p({data:v,uniqueKey:r,loaded:!0})]:[c]:[c,p(b?{data:v,uniqueKey:e,loaded:!0}:void 0)],m=a.useModel.apply(void 0,t(g));if(y&&!m.state.loaded)throw new Error('This session is not loaded, you should remove "config.loaded" option.');return[m,d,s]}(r,n.current,e),i=o(u,3),f=i[0],l=i[1],d=i[2],v=l.variables,y=l.deps,b=l.triggerOn,g=void 0===b?["mount","update","manual"]:b,j=(0,a.useRealtimeInstance)(f),w=(0,a.useModel)(O,m,{autoLink:!0}),P=w.setGlobalFetchingKey,E=w.removeGlobalFetchingKey,S=T(j,(function(r,e){var o=function(r){return function(e){var n=r(e);if(!n||"function"!=typeof n.then)throw new Error("The callback have to return a promise object.");return n.then((function(r){return{data:r,variables:e,error:void 0,isError:!1}}),(function(r){return{variables:e,error:r,isError:!0}}))}}((function(r){return d.apply(void 0,t(r))}));return o(e).then((function(e){var t=null!=j.state.finalFetchingKey&&n.current!==j.state.finalFetchingKey;return V(V(V({},j.state),e),{},{abandon:t,isFetching:!1,triggerType:r})}))}),l),F=o(S,3),A=F[0],K=F[1],D=F[2],M=function(r,e){var t=j.state.fetchingKey;return g.indexOf(r)<0||t&&t!==n.current?new Promise((function(r){r(V(V({},j.state),{},{abandon:!0}))})):(j.setFetchingKey(n.current),Promise.resolve(void 0).then((function(){j.removeFetchingKey(n.current)})),A(r,e||v))},q=(0,s.usePersistFn)((function(){return M("manual")})),x=(0,s.usePersistFn)((function(){for(var r=arguments.length,e=new Array(r),n=0;n<r;n++)e[n]=arguments[n];return M("manual",e)})),k=y||v||[];(0,s.useMount)((function(){M("mount")})),(0,s.useUpdate)((function(){M("update")}),k);var I=(0,c.useRef)(f.version);return(0,c.useEffect)((function(){if(I.current!==f.version){I.current=f.version;var r=j.state.fetchingKey;r&&r!==n.current||q()}}),[f.version]),(0,c.useEffect)((function(){f.state.isFetching?P(n.current):E(n.current)}),[f.state.isFetching]),(0,s.useUnmount)((function(){E(n.current),j.removeFetchingKey(n.current)})),(0,c.useEffect)((function(){K.forEach((function(r){r(f.state)}))}),[f.state]),(0,c.useEffect)((function(){null!=f.state.fetchVersion&&D.forEach((function(r){r(f.state)}))}),[f.state.fetchVersion]),[f.state,q,x]}function R(r,e){var n=b(r,e),t=n.variables,o=n.deps,u=n.manual,i=n.triggerOn,c=void 0===i?["mount","update","manual"]:i,a=n.strategy,s=!o&&!t||u?["manual"]:c,f=(P()||{}).strategy,l=F(a),d=f?f(l,"query"):l;return G(r,V(V({},n),{},{triggerOn:s,strategy:d.concat((function(r){var e=r.runner,n=r.store;n.current=n.current||0;var t=n.current+1;return n.current=t,e().then((function(r){return n.current!==t?S(S({},r),{},{abandon:!0}):r}))}))}))}function Q(r,e){var n=b(r,e),t=n.triggerOn,o=void 0===t?["manual"]:t,u=n.strategy,i=(P()||{}).strategy,c=F(u),a=i?i(c,"mutation"):c;return G(r,V(V({},n),{},{triggerOn:o,strategy:a.concat((function(r){var e=r.runner,n=r.store;if("manual"!==r.triggerType)return e();if(n.current)return n.current.then((function(r){return S(S({},r),{},{abandon:!0})}));var t=e();return n.current=t.then((function(r){return n.current=void 0,r})),t}))}))}function U(r,e){var n=o(r.effect,2)[1].sessionType,t=(0,a.useSelector)(r,(function(r){return[r.state,r.trigger]})),u="string"==typeof e?{sessionType:e,loaded:void 0}:e||{},i=u.loaded,c=u.sessionType,s=o(t,1)[0].loaded;if(c&&n&&c!==n)throw new Error("The sessionType is not matched, can not use '".concat(n," type' sessionKey with '").concat(c," type' useSession."));if(i&&!s)throw new Error("The session is not loaded yet, check config, and set {loaded: undefined}.");return t}function J(){for(var r=arguments.length,e=new Array(r),n=0;n<r;n++)e[n]=arguments[n];var t=(0,c.useMemo)((function(){return e.map((function(r){return Array.isArray(r)?o(r,1)[0]:r})).some((function(r){return r.isFetching}))}),e),u=(0,a.useIsModelMatchedInStore)(O),i=(0,a.useModel)(O,m,{autoLink:!0}).isFetching;if(!u&&!e.length)throw new Error("You should provide a `GlobalRefreshProvider` to support a global `isFetching` detect.");return u&&!e.length?i:t}function N(r){for(var e=arguments.length,n=new Array(e>1?e-1:0),u=1;u<e;u++)n[u-1]=arguments[u];var i=(0,c.useMemo)((function(){return n.map((function(r){var e={loaded:!1};return e.promise=new Promise((function(r,n){e.resolve=r,e.reject=n})),e}))}),[]),a=(0,c.useRef)(i);function s(r){return r.default?r:{default:r}}return(0,c.useEffect)((function(){var r=a.current;n.forEach((function(e,n){var t=Array.isArray(e)?e[0]:e,o=r[n];if(t.isError&&!o.loaded)return o.loaded=!0,void o.reject(t);t.loaded&&!o.loaded&&(o.loaded=!0,o.resolve(!0))}))}),[].concat(n)),(0,c.useMemo)((function(){var e=a.current.map((function(r){return r.promise}));return(0,c.lazy)((function(){var n=r();return Promise.all([n].concat(t(e))).then((function(r){return s(o(r,1)[0])}),(function(r){return n.then((function(e){var n=function(r){var e=r;return e.default&&"function"==typeof e.default?e.default:r}(e),t=function(r,e){return function(n){return(0,c.createElement)(r,V(V({},n),{},{error:e}))}}(n,r);return s(t)}))}))}))}),[])}function z(r,e){return U(r,"string"==typeof e?{sessionType:e,loaded:!0}:V(V({},e),{},{loaded:!0}))}function _(r,e){(0,c.useEffect)((function(){if(null!=e.fetchVersion){var n=!e.isFetching&&e.isError,t=!e.isFetching&&e.sessionLoaded&&!e.isError;(n||t)&&r(e)}}),[e.fetchVersion])}_.useSuccess=function(r,e){(0,c.useEffect)((function(){null!=e.fetchVersion&&(!e.isFetching&&e.sessionLoaded&&!e.isError&&r(e.data,e))}),[e.fetchVersion])},_.useFailure=function(r,e){(0,c.useEffect)((function(){null!=e.fetchVersion&&(!e.isFetching&&e.isError&&r(e.error,e))}),[e.fetchVersion])},_.success=_.useSuccess,_.error=_.useFailure;var Y=a.Provider,$=a.Provider,B=a.provide,H=function(r,e){var n=e,o=function(){return r.apply(void 0,arguments)},u=function r(e){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=null!=e?e:g(o,n),a={key:i,with:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];var o=u.concat(n.map((function(r){return"function"==typeof r?r:r.key})));return r(i,o)},asGlobal:function(){var r=i.global(),e={useSession:function(){return U(r,n)},useLoadedSession:function(){return z(r,n)}};return V(V({},e),{},"query"===n?{useQuery:function(e){return R(r,e)}}:{useMutation:function(e){return Q(r,e)}})},useSession:function(){return U(i,n)},useLoadedSession:function(){return z(i,n)},provide:function(){return B([i].concat(t(u)))},provideTo:function(r){return B([i].concat(t(u)))(r)},Provider:function(r){var e=r.children;return(0,c.createElement)($,{value:[i].concat(t(u))},e)}};return V(V({},a),{},"query"===n?{useQuery:function(r){return R(i,r)}}:{useMutation:function(r){return Q(i,r)}})},i={store:u,createStore:u},a=V(V({},i),{},{useQuery:function(r){return R(o,r)}}),s=V(V({},i),{},{useMutation:function(r){return Q(o,r)}}),f="query"===n?a:s;return Object.assign(o,f)}}(),i}()}));
!function(r,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("react"),require("@airma/react-state"),require("@airma/react-hooks-core")):"function"==typeof define&&define.amd?define(["react","@airma/react-state","@airma/react-hooks-core"],n):"object"==typeof exports?exports["@airma/react-effect"]=n(require("react"),require("@airma/react-state"),require("@airma/react-hooks-core")):r["@airma/react-effect"]=n(r.react,r["@airma/react-state"],r["@airma/react-hooks-core"])}(self,(function(r,n,e){return function(){var t={4933:function(r,n,e){var t=e(6291),o=e(7073),u=TypeError;r.exports=function(r){if(t(r))return r;throw u(o(r)+" is not a function")}},5822:function(r,n,e){var t=e(6802),o=e(2275),u=e(6462).f,i=t("unscopables"),c=Array.prototype;null==c[i]&&u(c,i,{configurable:!0,value:o(null)}),r.exports=function(r){c[i][r]=!0}},4905:function(r,n,e){var t=e(2366),o=String,u=TypeError;r.exports=function(r){if(t(r))return r;throw u(o(r)+" is not an object")}},5029:function(r,n,e){var t=e(678),o=e(6971),u=e(4821),i=function(r){return function(n,e,i){var c,a=t(n),f=u(a),s=o(i,f);if(r&&e!=e){for(;f>s;)if((c=a[s++])!=c)return!0}else for(;f>s;s++)if((r||s in a)&&a[s]===e)return r||s||0;return!r&&-1}};r.exports={includes:i(!0),indexOf:i(!1)}},5489:function(r,n,e){var t=e(936),o=t({}.toString),u=t("".slice);r.exports=function(r){return u(o(r),8,-1)}},6810:function(r,n,e){var t=e(8382),o=e(2466),u=e(8117),i=e(6462);r.exports=function(r,n,e){for(var c=o(n),a=i.f,f=u.f,s=0;s<c.length;s++){var l=c[s];t(r,l)||e&&t(e,l)||a(r,l,f(n,l))}}},430:function(r,n,e){var t=e(1502),o=e(6462),u=e(6034);r.exports=t?function(r,n,e){return o.f(r,n,u(1,e))}:function(r,n,e){return r[n]=e,r}},6034:function(r){r.exports=function(r,n){return{enumerable:!(1&r),configurable:!(2&r),writable:!(4&r),value:n}}},5850:function(r,n,e){var t=e(6291),o=e(6462),u=e(7192),i=e(1756);r.exports=function(r,n,e,c){c||(c={});var a=c.enumerable,f=void 0!==c.name?c.name:n;if(t(e)&&u(e,f,c),c.global)a?r[n]=e:i(n,e);else{try{c.unsafe?r[n]&&(a=!0):delete r[n]}catch(r){}a?r[n]=e:o.f(r,n,{value:e,enumerable:!1,configurable:!c.nonConfigurable,writable:!c.nonWritable})}return r}},1756:function(r,n,e){var t=e(5001),o=Object.defineProperty;r.exports=function(r,n){try{o(t,r,{value:n,configurable:!0,writable:!0})}catch(e){t[r]=n}return n}},1502:function(r,n,e){var t=e(5061);r.exports=!t((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},5178:function(r){var n="object"==typeof document&&document.all,e=void 0===n&&void 0!==n;r.exports={all:n,IS_HTMLDDA:e}},6009:function(r,n,e){var t=e(5001),o=e(2366),u=t.document,i=o(u)&&o(u.createElement);r.exports=function(r){return i?u.createElement(r):{}}},9966:function(r,n,e){var t=e(3425);r.exports=t("navigator","userAgent")||""},2821:function(r,n,e){var t,o,u=e(5001),i=e(9966),c=u.process,a=u.Deno,f=c&&c.versions||a&&a.version,s=f&&f.v8;s&&(o=(t=s.split("."))[0]>0&&t[0]<4?1:+(t[0]+t[1])),!o&&i&&(!(t=i.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=i.match(/Chrome\/(\d+)/))&&(o=+t[1]),r.exports=o},2089:function(r){r.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},9638:function(r,n,e){var t=e(5001),o=e(8117).f,u=e(430),i=e(5850),c=e(1756),a=e(6810),f=e(1092);r.exports=function(r,n){var e,s,l,v,p,d=r.target,y=r.global,b=r.stat;if(e=y?t:b?t[d]||c(d,{}):(t[d]||{}).prototype)for(s in n){if(v=n[s],l=r.dontCallGetSet?(p=o(e,s))&&p.value:e[s],!f(y?s:d+(b?".":"#")+s,r.forced)&&void 0!==l){if(typeof v==typeof l)continue;a(v,l)}(r.sham||l&&l.sham)&&u(v,"sham",!0),i(e,s,v,r)}}},5061:function(r){r.exports=function(r){try{return!!r()}catch(r){return!0}}},8483:function(r,n,e){var t=e(5061);r.exports=!t((function(){var r=function(){}.bind();return"function"!=typeof r||r.hasOwnProperty("prototype")}))},3927:function(r,n,e){var t=e(8483),o=Function.prototype.call;r.exports=t?o.bind(o):function(){return o.apply(o,arguments)}},9873:function(r,n,e){var t=e(1502),o=e(8382),u=Function.prototype,i=t&&Object.getOwnPropertyDescriptor,c=o(u,"name"),a=c&&"something"===function(){}.name,f=c&&(!t||t&&i(u,"name").configurable);r.exports={EXISTS:c,PROPER:a,CONFIGURABLE:f}},936:function(r,n,e){var t=e(8483),o=Function.prototype,u=o.call,i=t&&o.bind.bind(u,u);r.exports=t?i:function(r){return function(){return u.apply(r,arguments)}}},3425:function(r,n,e){var t=e(5001),o=e(6291);r.exports=function(r,n){return arguments.length<2?(e=t[r],o(e)?e:void 0):t[r]&&t[r][n];var e}},3815:function(r,n,e){var t=e(4933),o=e(860);r.exports=function(r,n){var e=r[n];return o(e)?void 0:t(e)}},5001:function(r,n,e){var t=function(r){return r&&r.Math==Math&&r};r.exports=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof e.g&&e.g)||function(){return this}()||Function("return this")()},8382:function(r,n,e){var t=e(936),o=e(7615),u=t({}.hasOwnProperty);r.exports=Object.hasOwn||function(r,n){return u(o(r),n)}},2499:function(r){r.exports={}},2118:function(r,n,e){var t=e(3425);r.exports=t("document","documentElement")},7788:function(r,n,e){var t=e(1502),o=e(5061),u=e(6009);r.exports=!t&&!o((function(){return 7!=Object.defineProperty(u("div"),"a",{get:function(){return 7}}).a}))},2901:function(r,n,e){var t=e(936),o=e(5061),u=e(5489),i=Object,c=t("".split);r.exports=o((function(){return!i("z").propertyIsEnumerable(0)}))?function(r){return"String"==u(r)?c(r,""):i(r)}:i},685:function(r,n,e){var t=e(936),o=e(6291),u=e(9982),i=t(Function.toString);o(u.inspectSource)||(u.inspectSource=function(r){return i(r)}),r.exports=u.inspectSource},684:function(r,n,e){var t,o,u,i=e(1899),c=e(5001),a=e(2366),f=e(430),s=e(8382),l=e(9982),v=e(1695),p=e(2499),d="Object already initialized",y=c.TypeError,b=c.WeakMap;if(i||l.state){var h=l.state||(l.state=new b);h.get=h.get,h.has=h.has,h.set=h.set,t=function(r,n){if(h.has(r))throw y(d);return n.facade=r,h.set(r,n),n},o=function(r){return h.get(r)||{}},u=function(r){return h.has(r)}}else{var g=v("state");p[g]=!0,t=function(r,n){if(s(r,g))throw y(d);return n.facade=r,f(r,g,n),n},o=function(r){return s(r,g)?r[g]:{}},u=function(r){return s(r,g)}}r.exports={set:t,get:o,has:u,enforce:function(r){return u(r)?o(r):t(r,{})},getterFor:function(r){return function(n){var e;if(!a(n)||(e=o(n)).type!==r)throw y("Incompatible receiver, "+r+" required");return e}}}},6291:function(r,n,e){var t=e(5178),o=t.all;r.exports=t.IS_HTMLDDA?function(r){return"function"==typeof r||r===o}:function(r){return"function"==typeof r}},1092:function(r,n,e){var t=e(5061),o=e(6291),u=/#|\.prototype\./,i=function(r,n){var e=a[c(r)];return e==s||e!=f&&(o(n)?t(n):!!n)},c=i.normalize=function(r){return String(r).replace(u,".").toLowerCase()},a=i.data={},f=i.NATIVE="N",s=i.POLYFILL="P";r.exports=i},860:function(r){r.exports=function(r){return null==r}},2366:function(r,n,e){var t=e(6291),o=e(5178),u=o.all;r.exports=o.IS_HTMLDDA?function(r){return"object"==typeof r?null!==r:t(r)||r===u}:function(r){return"object"==typeof r?null!==r:t(r)}},13:function(r){r.exports=!1},6448:function(r,n,e){var t=e(3425),o=e(6291),u=e(6282),i=e(7558),c=Object;r.exports=i?function(r){return"symbol"==typeof r}:function(r){var n=t("Symbol");return o(n)&&u(n.prototype,c(r))}},4821:function(r,n,e){var t=e(4479);r.exports=function(r){return t(r.length)}},7192:function(r,n,e){var t=e(5061),o=e(6291),u=e(8382),i=e(1502),c=e(9873).CONFIGURABLE,a=e(685),f=e(684),s=f.enforce,l=f.get,v=Object.defineProperty,p=i&&!t((function(){return 8!==v((function(){}),"length",{value:8}).length})),d=String(String).split("String"),y=r.exports=function(r,n,e){"Symbol("===String(n).slice(0,7)&&(n="["+String(n).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),e&&e.getter&&(n="get "+n),e&&e.setter&&(n="set "+n),(!u(r,"name")||c&&r.name!==n)&&(i?v(r,"name",{value:n,configurable:!0}):r.name=n),p&&e&&u(e,"arity")&&r.length!==e.arity&&v(r,"length",{value:e.arity});try{e&&u(e,"constructor")&&e.constructor?i&&v(r,"prototype",{writable:!1}):r.prototype&&(r.prototype=void 0)}catch(r){}var t=s(r);return u(t,"source")||(t.source=d.join("string"==typeof n?n:"")),r};Function.prototype.toString=y((function(){return o(this)&&l(this).source||a(this)}),"toString")},1367:function(r){var n=Math.ceil,e=Math.floor;r.exports=Math.trunc||function(r){var t=+r;return(t>0?e:n)(t)}},2275:function(r,n,e){var t,o=e(4905),u=e(6191),i=e(2089),c=e(2499),a=e(2118),f=e(6009),s=e(1695),l="prototype",v="script",p=s("IE_PROTO"),d=function(){},y=function(r){return"<"+v+">"+r+"</"+v+">"},b=function(r){r.write(y("")),r.close();var n=r.parentWindow.Object;return r=null,n},h=function(){try{t=new ActiveXObject("htmlfile")}catch(r){}var r,n,e;h="undefined"!=typeof document?document.domain&&t?b(t):(n=f("iframe"),e="java"+v+":",n.style.display="none",a.appendChild(n),n.src=String(e),(r=n.contentWindow.document).open(),r.write(y("document.F=Object")),r.close(),r.F):b(t);for(var o=i.length;o--;)delete h[l][i[o]];return h()};c[p]=!0,r.exports=Object.create||function(r,n){var e;return null!==r?(d[l]=o(r),e=new d,d[l]=null,e[p]=r):e=h(),void 0===n?e:u.f(e,n)}},6191:function(r,n,e){var t=e(1502),o=e(5780),u=e(6462),i=e(4905),c=e(678),a=e(9749);n.f=t&&!o?Object.defineProperties:function(r,n){i(r);for(var e,t=c(n),o=a(n),f=o.length,s=0;f>s;)u.f(r,e=o[s++],t[e]);return r}},6462:function(r,n,e){var t=e(1502),o=e(7788),u=e(5780),i=e(4905),c=e(1030),a=TypeError,f=Object.defineProperty,s=Object.getOwnPropertyDescriptor,l="enumerable",v="configurable",p="writable";n.f=t?u?function(r,n,e){if(i(r),n=c(n),i(e),"function"==typeof r&&"prototype"===n&&"value"in e&&p in e&&!e[p]){var t=s(r,n);t&&t[p]&&(r[n]=e.value,e={configurable:v in e?e[v]:t[v],enumerable:l in e?e[l]:t[l],writable:!1})}return f(r,n,e)}:f:function(r,n,e){if(i(r),n=c(n),i(e),o)try{return f(r,n,e)}catch(r){}if("get"in e||"set"in e)throw a("Accessors not supported");return"value"in e&&(r[n]=e.value),r}},8117:function(r,n,e){var t=e(1502),o=e(3927),u=e(9265),i=e(6034),c=e(678),a=e(1030),f=e(8382),s=e(7788),l=Object.getOwnPropertyDescriptor;n.f=t?l:function(r,n){if(r=c(r),n=a(n),s)try{return l(r,n)}catch(r){}if(f(r,n))return i(!o(u.f,r,n),r[n])}},9219:function(r,n,e){var t=e(3855),o=e(2089).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(r){return t(r,o)}},2822:function(r,n){n.f=Object.getOwnPropertySymbols},6282:function(r,n,e){var t=e(936);r.exports=t({}.isPrototypeOf)},3855:function(r,n,e){var t=e(936),o=e(8382),u=e(678),i=e(5029).indexOf,c=e(2499),a=t([].push);r.exports=function(r,n){var e,t=u(r),f=0,s=[];for(e in t)!o(c,e)&&o(t,e)&&a(s,e);for(;n.length>f;)o(t,e=n[f++])&&(~i(s,e)||a(s,e));return s}},9749:function(r,n,e){var t=e(3855),o=e(2089);r.exports=Object.keys||function(r){return t(r,o)}},9265:function(r,n){"use strict";var e={}.propertyIsEnumerable,t=Object.getOwnPropertyDescriptor,o=t&&!e.call({1:2},1);n.f=o?function(r){var n=t(this,r);return!!n&&n.enumerable}:e},379:function(r,n,e){var t=e(3927),o=e(6291),u=e(2366),i=TypeError;r.exports=function(r,n){var e,c;if("string"===n&&o(e=r.toString)&&!u(c=t(e,r)))return c;if(o(e=r.valueOf)&&!u(c=t(e,r)))return c;if("string"!==n&&o(e=r.toString)&&!u(c=t(e,r)))return c;throw i("Can't convert object to primitive value")}},2466:function(r,n,e){var t=e(3425),o=e(936),u=e(9219),i=e(2822),c=e(4905),a=o([].concat);r.exports=t("Reflect","ownKeys")||function(r){var n=u.f(c(r)),e=i.f;return e?a(n,e(r)):n}},4475:function(r,n,e){var t=e(860),o=TypeError;r.exports=function(r){if(t(r))throw o("Can't call method on "+r);return r}},1695:function(r,n,e){var t=e(6809),o=e(1050),u=t("keys");r.exports=function(r){return u[r]||(u[r]=o(r))}},9982:function(r,n,e){var t=e(5001),o=e(1756),u="__core-js_shared__",i=t[u]||o(u,{});r.exports=i},6809:function(r,n,e){var t=e(13),o=e(9982);(r.exports=function(r,n){return o[r]||(o[r]=void 0!==n?n:{})})("versions",[]).push({version:"3.26.1",mode:t?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5947:function(r,n,e){var t=e(2821),o=e(5061);r.exports=!!Object.getOwnPropertySymbols&&!o((function(){var r=Symbol();return!String(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&t&&t<41}))},6971:function(r,n,e){var t=e(9398),o=Math.max,u=Math.min;r.exports=function(r,n){var e=t(r);return e<0?o(e+n,0):u(e,n)}},678:function(r,n,e){var t=e(2901),o=e(4475);r.exports=function(r){return t(o(r))}},9398:function(r,n,e){var t=e(1367);r.exports=function(r){var n=+r;return n!=n||0===n?0:t(n)}},4479:function(r,n,e){var t=e(9398),o=Math.min;r.exports=function(r){return r>0?o(t(r),9007199254740991):0}},7615:function(r,n,e){var t=e(4475),o=Object;r.exports=function(r){return o(t(r))}},6973:function(r,n,e){var t=e(3927),o=e(2366),u=e(6448),i=e(3815),c=e(379),a=e(6802),f=TypeError,s=a("toPrimitive");r.exports=function(r,n){if(!o(r)||u(r))return r;var e,a=i(r,s);if(a){if(void 0===n&&(n="default"),e=t(a,r,n),!o(e)||u(e))return e;throw f("Can't convert object to primitive value")}return void 0===n&&(n="number"),c(r,n)}},1030:function(r,n,e){var t=e(6973),o=e(6448);r.exports=function(r){var n=t(r,"string");return o(n)?n:n+""}},7073:function(r){var n=String;r.exports=function(r){try{return n(r)}catch(r){return"Object"}}},1050:function(r,n,e){var t=e(936),o=0,u=Math.random(),i=t(1..toString);r.exports=function(r){return"Symbol("+(void 0===r?"":r)+")_"+i(++o+u,36)}},7558:function(r,n,e){var t=e(5947);r.exports=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5780:function(r,n,e){var t=e(1502),o=e(5061);r.exports=t&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},1899:function(r,n,e){var t=e(5001),o=e(6291),u=t.WeakMap;r.exports=o(u)&&/native code/.test(String(u))},6802:function(r,n,e){var t=e(5001),o=e(6809),u=e(8382),i=e(1050),c=e(5947),a=e(7558),f=o("wks"),s=t.Symbol,l=s&&s.for,v=a?s:s&&s.withoutSetter||i;r.exports=function(r){if(!u(f,r)||!c&&"string"!=typeof f[r]){var n="Symbol."+r;c&&u(s,r)?f[r]=s[r]:f[r]=a&&l?l(n):v(n)}return f[r]}},5093:function(r,n,e){"use strict";var t=e(9638),o=e(5029).includes,u=e(5061),i=e(5822);t({target:"Array",proto:!0,forced:u((function(){return!Array(1).includes()}))},{includes:function(r){return o(this,r,arguments.length>1?arguments[1]:void 0)}}),i("includes")},309:function(r){"use strict";r.exports=e},2719:function(r){"use strict";r.exports=n},8156:function(n){"use strict";n.exports=r}},o={};function u(r){var n=o[r];if(void 0!==n)return n.exports;var e=o[r]={exports:{}};return t[r](e,e.exports,u),e.exports}u.d=function(r,n){for(var e in n)u.o(n,e)&&!u.o(r,e)&&Object.defineProperty(r,e,{enumerable:!0,get:n[e]})},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),u.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},u.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})};var i={};return function(){"use strict";function r(r,n,e){return n in r?Object.defineProperty(r,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[n]=e,r}function n(r,n){(null==n||n>r.length)&&(n=r.length);for(var e=0,t=new Array(n);e<n;e++)t[e]=r[e];return t}function e(r,e){if(r){if("string"==typeof r)return n(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(r,e):void 0}}function t(r){return function(r){if(Array.isArray(r))return n(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(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.")}()}function o(r,n){return function(r){if(Array.isArray(r))return r}(r)||function(r,n){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=e){var t,o,u=[],i=!0,c=!1;try{for(e=e.call(r);!(i=(t=e.next()).done)&&(u.push(t.value),!n||u.length!==n);i=!0);}catch(r){c=!0,o=r}finally{try{i||null==e.return||e.return()}finally{if(c)throw o}}return u}}(r,n)||e(r,n)||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.")}()}u.r(i),u.d(i,{ConfigProvider:function(){return j},Provider:function(){return J},SessionProvider:function(){return H},Strategy:function(){return k},createSessionKey:function(){return g},provide:function(){return V},session:function(){return B},useIsFetching:function(){return N},useLazyComponent:function(){return z},useLoadedSession:function(){return Q},useMutation:function(){return G},useQuery:function(){return _},useResponse:function(){return W},useSession:function(){return U}});u(5093);var c=u(8156),a=u(2719),f=u(309);function s(r,n){if(null==r)return{};var e,t,o=function(r,n){if(null==r)return{};var e,t,o={},u=Object.keys(r);for(t=0;t<u.length;t++)e=u[t],n.indexOf(e)>=0||(o[e]=r[e]);return o}(r,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(r);for(t=0;t<u.length;t++)e=u[t],n.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(r,e)&&(o[e]=r[e])}return o}var l=["version"];function v(r,n){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable}))),e.push.apply(e,t)}return e}function p(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?v(Object(t),!0).forEach((function(e){r(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):v(Object(t)).forEach((function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))}))}return n}function d(r){var n=r.version,e=s(r,l),t=function(e){return p(p({},e),{},{version:n,uniqueKey:r.uniqueKey})},o=function(n){return n.isFetching?n:p(p({},n),{},{fetchVersion:(r.fetchVersion||0)+1,round:r.round+1})};return{state:e,version:n||0,setState:function(n){return o(t("function"!=typeof n?n:n(r)))},setFetchingKey:function(n){return t(p(p({},r),{},{fetchingKey:n,finalFetchingKey:null!=n?n:r.finalFetchingKey}))},removeFetchingKey:function(n){return r.fetchingKey!==n?r:t(p(p({},r),{},{fetchingKey:void 0}))},trigger:function(){return p(p({},r),{},{version:(n||0)+1})}}}var y=function(r){return p({data:void 0,variables:void 0,isError:!1,isFetching:!1,abandon:!1,triggerType:void 0,loaded:!1,sessionLoaded:!1,cache:[],maxCacheCapacity:1,round:0},r)};function b(r,n,e){if(!("function"==typeof r.pipe))return[d,r,e,!1];var t=o(r.effect,2),u=t[0],i=t[1].sessionType;if(null!=i&&i!==n)throw new Error("The sessionType is not matched, can not use '".concat(i," type' sessionKey with '").concat("query"===n?"useQuery":"useMutation","'"));return[r,u,e,!0]}function h(r,n){return o(b(r,"query",Array.isArray(n)?{variables:n}:n),3)[2]||{}}function g(r,n){var e=(0,a.createKey)(d,y());return e.effect=[function(){return r.apply(void 0,arguments)},n?{sessionType:n}:{}],e}var m=[],O=(0,a.createKey)((function(r){return{isFetching:r.length>0,setGlobalFetchingKey:function(n){return r.some((function(r){return r===n}))?r:r.concat(n)},removeGlobalFetchingKey:function(n){return r.some((function(r){return r===n}))?r.filter((function(r){return r!==n})):r}}}),m),w=(0,c.createContext)(null);function j(r){var n=r.value,e=r.children,t=(0,c.useMemo)((function(){return n.useGlobalFetching?O:void 0}),[]),o=(0,c.useMemo)((function(){return n.batchUpdate?{batchUpdate:n.batchUpdate}:{}}),[]),u=(0,c.createElement)(w.Provider,{value:n},t?(0,c.createElement)(a.Provider,{value:t},e):e);return(0,c.createElement)(a.ConfigProvider,{value:o},u)}function S(){return(0,c.useContext)(w)}function x(r,n){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable}))),e.push.apply(e,t)}return e}function P(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?x(Object(t),!0).forEach((function(e){r(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):x(Object(t)).forEach((function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))}))}return n}function E(r){return Array.isArray(r)?r:[r]}function T(r,n,e){var u=E(e.strategy),i=(0,c.useRef)(u.map((function(){return{current:void 0}})));return[function(c,a){var f,s,l=a||[],v={getSessionState:function(){return r.state},variables:l,runner:function(e){var t=r.state,o=r.setState,u=P(P({},t),{},{isFetching:!0}),i=e?e(u):u;return i.abandon||o(P(P({},i),{},{triggerType:c})),n(c,l)},triggerType:c,config:e,localCache:i,executeContext:(f=[],s=function(r){var n=f.find((function(n){return o(n,1)[0]===r}));if(Array.isArray(n))return n},{set:function(r,n){var e=s(r);e?e[1]=n:f.push([r,n])},get:function(r){var n=s(r);if(n)return n[1]}})};return function(r){return function(n){var e=[],o=n.localCache.current;return t(r).reverse().reduce((function(r,n,t){var u=o[t]||{current:void 0};return function(t){var o=P(P({},t),{},{localCache:u});return null==n?r(o):n(P(P({},o),{},{runner:function(n){return null!=n&&e.push(n),r(o)}}))}}),(function(r){return r.runner((function(r){return e.reduce((function(r,n){return r.abandon?r:n(r)}),r)}))}))(n).then((function(r){var e=n.getSessionState(),t=e.loaded,o=e.sessionLoaded,u=r.abandon,i=r.isError,c=r.isFetching,a=t||!u&&!i&&!c,f=o||!u&&!i&&!c;return P(P({},r),{},{loaded:a,sessionLoaded:f})}))}}(u)(v).then((function(n){return n.abandon||r.setState(n),n}))},u.map((function(r){if(r)return r.effect})).filter((function(r){return!!r})),u.map((function(r){if(r)return r.response})).filter((function(r){return!!r}))]}function F(r,n){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable}))),e.push.apply(e,t)}return e}function C(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?F(Object(t),!0).forEach((function(e){r(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):F(Object(t)).forEach((function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))}))}return n}var A=function(r,n){return!!Object.is(r,n)||null!=r&&null!=n&&JSON.stringify(r)===JSON.stringify(n)};function M(r,n){var e=(n||{}).withAbandoned;return function(n){var t=n.runner,o=n.executeContext,u=n.localCache,i=o.get(M);return o.set(M,!0),u.current=r,t().then((function(r){var n=u.current;return!r.isError||i||!n||r.abandon&&!e||n(r.error,r),r}))}}function D(r){var n=function(r){return(0,r.runner)()};return n.response=r,n}function I(){return(new Date).getTime()}function K(r,n){var e=null==n?1:n;function u(r,n){var e=r.find((function(r){return o(r,1)[0]===n}))||[void 0,void 0];return o(e,2)[1]}return{get:function(n){return u(r,n)},set:function(n,i){if(e<1)return[];var c={data:i,lastUpdateTime:I()};if(null!=u(r,n))return r.map((function(r){var e=o(r,2),t=e[0],u=e[1];return n!==t?[t,u]:[n,c]}));var a=[].concat(t(r),[[n,c]]);return a.length>e?a.slice(a.length-e):a}}}D.success=function(r){var n=function(r){return(0,r.runner)()};return n.response=function(n){n.isError||n.isFetching||!n.sessionLoaded||r(n.data,n)},n},D.error=function(r){var n=function(r){var n=r.runner;return r.executeContext.set(M,!0),n()};return n.response=function(n){n.isError&&!n.isFetching&&r(n.error,n)},n},D.failure=function(r){var n=function(r){var n=r.runner;return r.executeContext.set(M,!0),n()};return n.response=function(n){n.isError&&!n.isFetching&&r(n.error,n)},n};var k={cache:function(r){var n=r||{},e=n.key,t=void 0===e?function(r){return JSON.stringify(r)}:e,o=n.staleTime,u=n.capacity,i=void 0===u?1:u;return function(r){var n=r.getSessionState,e=r.runner,u=r.variables,c=n(),a=c.cache,f=t(u),s=K(a,i).get(f);if(s&&o&&I()<o+s.lastUpdateTime){var l=C(C({},c),{},{data:s.data,variables:u});return Promise.resolve(l)}return e((function(r){return s&&(!o||o<0)?C(C({},r),{},{data:s.data}):r})).then((function(r){if(r.isError)return r;var e=t(r.variables||[]),o=n().maxCacheCapacity,u=o<i?i:o,c=K(r.cache,u).set(e,r.data);return C(C({},r),{},{cache:c,maxCacheCapacity:u})}))}},debounce:function(r){var n="number"==typeof r?r:r.duration,e="number"!=typeof r&&!!r.lead;return function(r){return e?function(){var e=r.getSessionState,t=r.runner,o=r.localCache;o.current&&o.current.id&&(clearTimeout(o.current.id),o.current.id=void 0);var u=setTimeout((function(){o.current=void 0}),n);if(null!=o.current)return o.current.id=u,o.current.promise.then((function(r){return C(C({},r),{},{abandon:!0})}));var i={id:u,version:0,resolve:function(){},promise:new Promise((function(r){r(C(C({},e()),{},{abandon:!0}))}))},c=new Promise((function(r){r(t()),i.resolve=r}));return i.promise=c,o.current=i,c}():function(){var e=r.getSessionState,t=r.runner,o=r.localCache;if(o.current){var u=o.current,i=u.id,c=u.resolve;clearTimeout(i),o.current.id=setTimeout((function(){o.current=void 0,c(t())}),n),o.current.version+=1;var a=o.current.version;return o.current.promise.then((function(r){var n;return a===(null===(n=o.current)||void 0===n?void 0:n.version)?r:C(C({},r),{},{abandon:!0})}))}var f={id:null,version:0,resolve:function(){},promise:new Promise((function(r){r(C(C({},e()),{},{abandon:!0}))}))},s=new Promise((function(r){f.id=setTimeout((function(){o.current=void 0,r(t())}),n),f.resolve=r}));f.promise=s,o.current=f;var l=f.version;return s.then((function(r){var n;return null!==(n=o.current)&&void 0!==n&&n.version||0===l?r:C(C({},r),{},{abandon:!0})}))}()}},throttle:function(r){var n=function(){if(null!=r)return"number"==typeof r?r:r.duration}();return function(r){var e=r.getSessionState,t=r.runner,o=r.localCache,u=r.variables,i=void 0===u?[]:u;o.current=o.current||{timeoutId:null,variables:void 0};var c=o.current.variables,a=o.current.timeoutId;return function(r,n){return null==r||!A(r,n)}(c,i)||null==a&&null!=n?(o.current.variables=i,null==n||(null!=a&&clearTimeout(a),o.current.timeoutId=setTimeout((function(){o.current=o.current||{},o.current.timeoutId=null}),n)),t()):new Promise((function(r){r(e())}))}},once:function(){return function(r){var n=r.runner,e=r.localCache;return e.current?e.current.then((function(r){return C(C({},r),{},{abandon:!0})})):(e.current=n().then((function(r){return r.isError&&(e.current=void 0),r})),e.current)}},error:M,failure:function(r,n){var e=(n||{}).withAbandoned;return function(n){var t=n.runner,o=n.executeContext,u=n.localCache,i=o.get(M);return o.set(M,!0),u.current=r,t().then((function(r){var n=u.current;return!r.isError||i||!n||r.abandon&&!e||n(r.error,r),r}))}},success:function(r,n){var e=(n||{}).withAbandoned;return function(n){var t=n.runner,o=n.localCache;return o.current=r,t().then((function(r){var n=o.current;return r.isError||!n||r.abandon&&!e||n(r.data,r),r}))}},validate:function(r){return function(n){var e=n.runner,t=n.getSessionState;if(!r()){var o=t();return new Promise((function(r){r(C(C({},o),{},{abandon:!0}))}))}return e()}},memo:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A;return function(n){var e=n.runner,t=n.getSessionState;return e().then((function(n){var e=t();return("function"==typeof r?r(e.data,n.data):e.data===n.data)?C(C({},n),{},{data:e.data}):n}))}},reduce:function(r){return function(n){var e=n.runner,t=n.getSessionState;return e().then((function(n){if(n.isError||n.abandon)return n;var e=t(),o=r(e.data,n.data,[e,n]);return C(C({},n),{},{data:o})}))}},response:D};function L(r,n){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable}))),e.push.apply(e,t)}return e}function q(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?L(Object(t),!0).forEach((function(e){r(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):L(Object(t)).forEach((function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))}))}return n}function R(r,n){var e=(0,c.useRef)({}),u=function(r,n,e){var u=Array.isArray(e)?{variables:e}:e,i=o(b(r,"query",u),4),c=i[0],f=i[1],s=i[2],l=i[3],v=s||{},p=v.defaultData,d=v.loaded,h=Object.prototype.hasOwnProperty.call(v,"defaultData"),g=l?h?[c,y({data:p,uniqueKey:r,loaded:!0})]:[c]:[c,y(h?{data:p,uniqueKey:n,loaded:!0}:void 0)],m=a.useModel.apply(void 0,t(g));if(d&&!m.state.loaded)throw new Error('This session is not loaded, you should remove "config.loaded" option.');return[m,v,f]}(r,e.current,n),i=o(u,3),s=i[0],l=i[1],v=i[2],p=l.variables,d=l.deps,h=l.triggerOn,g=void 0===h?["mount","update","manual"]:h,w=(0,a.useRealtimeInstance)(s),j=(0,a.useModel)(O,m,{autoLink:!0}),S=j.setGlobalFetchingKey,x=j.removeGlobalFetchingKey,P=T(w,(function(r,n){var o=function(r){return function(n){var e=r(n);if(!e||"function"!=typeof e.then)throw new Error("The callback have to return a promise object.");return e.then((function(r){return{data:r,variables:n,error:void 0,isError:!1}}),(function(r){return{variables:n,error:r,isError:!0}}))}}((function(r){return v.apply(void 0,t(r))}));return o(n).then((function(n){var t=null!=w.state.finalFetchingKey&&e.current!==w.state.finalFetchingKey;return q(q(q({},w.state),n),{},{abandon:t,isFetching:!1,triggerType:r})}))}),l),E=o(P,3),F=E[0],C=E[1],A=E[2],M=function(r,n){var t=w.state.fetchingKey;if(g.indexOf(r)<0)return new Promise((function(r){r(q(q({},w.state),{},{abandon:!0}))}));if(t&&t!==e.current)return new Promise((function(r){r(q(q({},w.state),{},{abandon:!0}))}));if(["mount","update"].includes(r)&&null==p)throw new Error("Can not execute with `mount` or `update` dependency mode. There is no variables found in config.");if("manual"===r&&null==p&&null==n)throw new Error("Can not trigger session to execute. There is no variables found in config.");return w.setFetchingKey(e.current),Promise.resolve(void 0).then((function(){w.removeFetchingKey(e.current)})),F(r,n||p)},D=(0,f.usePersistFn)((function(){return M("manual")})),I=(0,f.usePersistFn)((function(){for(var r=arguments.length,n=new Array(r),e=0;e<r;e++)n[e]=arguments[e];return M("manual",n)})),K=d||p||[];(0,f.useMount)((function(){M("mount")})),(0,f.useUpdate)((function(){M("update")}),K);var k=(0,c.useRef)(s.version);return(0,c.useEffect)((function(){if(k.current!==s.version){k.current=s.version;var r=w.state.fetchingKey;r&&r!==e.current||D()}}),[s.version]),(0,c.useEffect)((function(){s.state.isFetching?S(e.current):x(e.current)}),[s.state.isFetching]),(0,f.useUnmount)((function(){x(e.current),w.removeFetchingKey(e.current)})),(0,c.useEffect)((function(){C.forEach((function(r){r(s.state)}))}),[s.state]),(0,c.useEffect)((function(){0!==s.state.round&&A.forEach((function(r){r(s.state)}))}),[s.state.round]),[s.state,D,I]}function _(r,n){var e=h(r,n),t=e.variables,o=e.deps,u=e.manual,i=e.triggerOn,c=void 0===i?["mount","update","manual"]:i,a=e.strategy,f=!o&&!t||u?["manual"]:c,s=(S()||{}).strategy,l=E(a),v=s?s(l,"query"):l;return R(r,q(q({},e),{},{triggerOn:f,strategy:v.concat((function(r){var n=r.runner,e=r.localCache;e.current=e.current||0;var t=e.current+1;return e.current=t,n().then((function(r){return e.current!==t?P(P({},r),{},{abandon:!0}):r}))}))}))}function G(r,n){var e=h(r,n),t=e.triggerOn,o=void 0===t?["manual"]:t,u=e.strategy,i=(S()||{}).strategy,c=E(u),a=i?i(c,"mutation"):c;return R(r,q(q({},e),{},{triggerOn:o,strategy:a.concat((function(r){var n=r.runner,e=r.localCache;if("manual"!==r.triggerType)return n();if(e.current)return e.current.then((function(r){return P(P({},r),{},{abandon:!0})}));var t=n();return e.current=t.then((function(r){return e.current=void 0,r})),t}))}))}function U(r,n){var e=o(r.effect,2)[1].sessionType,t=(0,a.useSelector)(r,(function(r){return[r.state,r.trigger]})),u="string"==typeof n?{sessionType:n,loaded:void 0}:n||{},i=u.loaded,c=u.sessionType,f=o(t,1)[0].loaded;if(c&&e&&c!==e)throw new Error("The sessionType is not matched, can not use '".concat(e," type' sessionKey with '").concat(c," type' useSession."));if(i&&!f)throw new Error("The session is not loaded yet, check config, and set {loaded: undefined}.");return t}function N(){for(var r=arguments.length,n=new Array(r),e=0;e<r;e++)n[e]=arguments[e];var t=(0,c.useMemo)((function(){return n.map((function(r){return Array.isArray(r)?o(r,1)[0]:r})).some((function(r){return r.isFetching}))}),n),u=(0,a.useIsModelMatchedInStore)(O),i=(0,a.useModel)(O,m,{autoLink:!0}).isFetching;if(!u&&!n.length)throw new Error("You should provide a `GlobalRefreshProvider` to support a global `isFetching` detect.");return u&&!n.length?i:t}function z(r){for(var n=arguments.length,e=new Array(n>1?n-1:0),u=1;u<n;u++)e[u-1]=arguments[u];var i=(0,c.useMemo)((function(){return e.map((function(r){var n={loaded:!1};return n.promise=new Promise((function(r,e){n.resolve=r,n.reject=e})),n}))}),[]),a=(0,c.useRef)(i);function f(r){return r.default?r:{default:r}}return(0,c.useEffect)((function(){var r=a.current;e.forEach((function(n,e){var t=Array.isArray(n)?n[0]:n,o=r[e];if(t.isError&&!o.loaded)return o.loaded=!0,void o.reject(t);t.loaded&&!o.loaded&&(o.loaded=!0,o.resolve(!0))}))}),[].concat(e)),(0,c.useMemo)((function(){var n=a.current.map((function(r){return r.promise}));return(0,c.lazy)((function(){var e=r();return Promise.all([e].concat(t(n))).then((function(r){return f(o(r,1)[0])}),(function(r){return e.then((function(n){var e=function(r){var n=r;return n.default&&"function"==typeof n.default?n.default:r}(n),t=function(r,n){return function(e){return(0,c.createElement)(r,q(q({},e),{},{error:n}))}}(e,r);return f(t)}))}))}))}),[])}function Q(r,n){return U(r,"string"==typeof n?{sessionType:n,loaded:!0}:q(q({},n),{},{loaded:!0}))}function W(r,n){(0,c.useEffect)((function(){if(0!==n.round){var e=!n.isFetching&&n.isError,t=!n.isFetching&&n.sessionLoaded&&!n.isError;(e||t)&&r(n)}}),[n.round])}W.useSuccess=function(r,n){(0,c.useEffect)((function(){0!==n.round&&(!n.isFetching&&n.sessionLoaded&&!n.isError&&r(n.data,n))}),[n.round])},W.useFailure=function(r,n){(0,c.useEffect)((function(){0!==n.round&&(!n.isFetching&&n.isError&&r(n.error,n))}),[n.round])},W.success=W.useSuccess,W.error=W.useFailure;var H=a.Provider,J=a.Provider,V=a.provide,B=function(r,n){var e=n,o=function(){return r.apply(void 0,arguments)},u=function r(n){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=null!=n?n:g(o,e),a={key:i,with:function(){for(var n=arguments.length,e=new Array(n),t=0;t<n;t++)e[t]=arguments[t];var o=u.concat(e.map((function(r){return"function"==typeof r?r:r.key})));return r(i,o)},asGlobal:function(){var r=i.global(),n={useSession:function(){return U(r,e)},useLoadedSession:function(){return Q(r,e)}};return q(q({},n),{},"query"===e?{useQuery:function(n){return _(r,n)}}:{useMutation:function(n){return G(r,n)}})},useSession:function(){return U(i,e)},useLoadedSession:function(){return Q(i,e)},provide:function(){return V([i].concat(t(u)))},provideTo:function(r){return V([i].concat(t(u)))(r)},Provider:function(r){var n=r.children;return(0,c.createElement)(J,{value:[i].concat(t(u))},n)}};return q(q({},a),{},"query"===e?{useQuery:function(r){return _(i,r)}}:{useMutation:function(r){return G(i,r)}})},i={store:u,createStore:u},a=q(q({},i),{},{useQuery:function(r){return _(o,r)}}),f=q(q({},i),{},{useMutation:function(r){return G(o,r)}}),s="query"===e?a:f;return Object.assign(o,s)}}(),i}()}));

@@ -29,2 +29,6 @@ import { ModelKeys, ModelKey, AirReducer } from '@airma/react-state';

uniqueKey: unknown;
round: number;
/**
* @deprecated
*/
fetchVersion?: number;

@@ -55,7 +59,10 @@ }

(runtime: {
current: () => SessionState<T, V>;
variables: any[];
runner: () => Promise<SessionState<T, V>>;
store: { current: any };
runtimeCache: {
getSessionState: () => SessionState<T, V>;
variables: V;
triggerType: TriggerType;
runner: (
setFetchingSessionState?: (s: SessionState<T, V>) => SessionState<T, V>
) => Promise<SessionState<T, V>>;
localCache: { current: any };
executeContext: {
set: (key: any, value: any) => void;

@@ -351,2 +358,3 @@ get: (key: any) => any;

export declare type GlobalConfig = {
batchUpdate?: (callback: () => void) => void;
useGlobalFetching?: boolean;

@@ -373,2 +381,6 @@ strategy?: (

) => StrategyType<T, V>;
/**
* @deprecated
* @param op
*/
throttle: <T = any, V extends any[] = any[]>(

@@ -375,0 +387,0 @@ op?: { duration: number } | number

{
"private": false,
"name": "@airma/react-effect",
"version": "18.3.0-alpha.12",
"version": "18.3.0",
"description": "This is a react async state management tool",

@@ -28,4 +28,4 @@ "license": "MIT",

"dependencies": {
"@airma/react-hooks-core": "^18.3.0-alpha.12",
"@airma/react-state": "^18.3.0-alpha.12",
"@airma/react-hooks-core": "^18.3.0",
"@airma/react-state": "^18.3.0",
"react": ">=16.8.0"

@@ -32,0 +32,0 @@ },

@@ -13,3 +13,3 @@ [![npm][npm-image]][npm-url]

`@airma/react-effect` is designed for managing the asynchronous effect state for react components.
`@airma/react-effect` is an asynchronous state-management tool for react.

@@ -21,19 +21,8 @@ ## Document

## Why effects
## Code first
Do asynchronous operations in `effects` is more effective.
### useQuery
1. You can pre-render a default result for asynchronous operation before it is really resolved.
2. It makes component render with less asynchronous effects spread in event handle callbacks.
API `useQuery` can query data, and set it as a state.
If you are ready to improve your react app codes with less asynchronous operation effects, please take minutes to read the [documents](https://filefoxper.github.io/airma/#/react-effect/index) ([中文文档](https://filefoxper.github.io/airma/#/zh/react-effect/index)) of this tool.
## Basic Usage
The basic hook API `useQuery` and `useMutation` maintains a promise result state. It contains promise information `data`, `error` and status `isFetching`, `isError` for a render help.
### UseQuery
This API is often used to query data with a promise returning callback and parameters for this callback. When `useQuery` is mounted, or the elements of parameters changed, it calls query callback.
```ts

@@ -48,4 +37,3 @@ import React from 'react';

}
// Prepare a callback which returns a promise.
// We call it a query callback.
// Prepare a query promise callback.
const fetchUsers = (query: UserQuery):Promise<User[]> =>

@@ -56,3 +44,3 @@ Promise.resolve([]);

const [query, setQuery] = useState({name:'', username:''});
const [state, trigger, execute] = useQuery(
const [state, trigger, executeWithParams] = useQuery(
// Use query callback

@@ -80,23 +68,31 @@ fetchUsers,

The hook API `useQuery` returns a tuple `[state, trigger, execute]`. Element `state` contains informations about this query action. Element `trigger` is a no parameter callback which returns a `state` promise, it should be used just like a query trigger. Element `execute` is a callback which accepts parameters, and returns a `state` promise.
When `useQuery` is mounted, or the dependency parameters change, it calls the promise callback.
If you don't want the auto query action happens, when the parameters are changed or setted first time, you should set optional config `manual` to stop it.
### UseMutation
API `useMutation` is similar with `useQuery`. The difference is that it should be triggered manually to work.
```ts
import React from 'react';
import {useQuery} from '@airma/react-effect';
import {useMutation} from '@airma/react-effect';
import {User} from './type';
const fetchUsers = (query: UserQuery):Promise<User[]> =>
Promise.resolve([]);
const saveUser = (user: User): Promise<User> =>
Promise.resolve(user);
const App = ()=>{
const [query, setQuery] = useState({name:'', username:''});
const [state, trigger] = useQuery(
fetchUsers,
// Set optional config manual
{manual: true}
const [user, setUser] = useState<User>({...});
const [
state,
trigger,
executeWithParams
] = useMutation(
// Set mutation callback,
// it is a promise callback.
saveUser,
// Set mutation parameters.
[ user ]
);
const {
// User[] | undefined
// User | undefined
data,

@@ -108,24 +104,7 @@ // boolean

// boolean
isError,
// boolean
loaded
} = state;
isError
} = result;
const handleClick = async ()=>{
const {
// User[] | undefined
data,
// boolean
isFetching,
// any
error,
// boolean
isError,
// boolean
// the result might be abandoned,
// if the execution is not the newest one.
abandon,
// boolean
loaded
} = await trigger();
const handleClick = ()=>{
trigger();
}

@@ -137,25 +116,40 @@

We do not recommend using the result promise returned by a `trigger` callback, and that's why we call it a `trigger`.
The state of useMutation has same fields with useQuery state.
### UseMutation
### Session
It is often used to mutate data with a promise returning callback and its parameters. It is always triggered or executed manually.
Both of useQuery and useMutation need a promise callback for working, the mission of promise callback is called [session](/react-effect/concepts?id=session).
Use a simplified API [session](/react-effect/api?id=session) to make coding fly.
```ts
import React from 'react';
import {useMutation} from '@airma/react-effect';
import {session} from '@airma/react-effect';
import {User} from './type';
const saveUser = (user: User): Promise<User> =>Promise.resolve(user);
type UserQuery = {
name: string;
username: string;
}
// use `session` API to declare a query session
const userQuerySession = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
);
const App = ()=>{
const [user, setUser] = useState({name:'', username:''});
const [state, trigger, execute] = useMutation(
// Provide mutation callback
saveUser,
// Set parameters
[user]
const [query, setQuery] = useState({name:'', username:''});
const [
state,
trigger,
executeWithParams
// call session.useQuery
] = userQuerySession.useQuery(
// Set parameters for query callback
[query]
);
const {
// User | undefined
// User[] | undefined
data,

@@ -167,3 +161,3 @@ // boolean

// boolean
isError
isError,
// boolean

@@ -173,7 +167,2 @@ loaded

const handleClick = ()=>{
// Trigger it manually
trigger();
}
......

@@ -183,34 +172,256 @@ }

It only works in `manual` mode, so you don't have to worry about the auto mutation happening.
The state of useQuery/useMutation is a local state. There are two different store state-managements: use dynamic React.Context store or use static global store.
### Use Strategy
### React.Context dynamic store state-management
Sometimes you want to control the running way about the promise callback.
```ts
import React from 'react';
import {session} from '@airma/react-effect';
import {User} from './type';
For example, we often save data oncely, and then unmount component immediately after saving success to prevent a repeat saving mistake.
type UserQuery = {
name: string;
username: string;
}
// declare a query session dynamic store
const userQueryStore = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
).createStore();
const SearchButton = ()=>{
// useSession subscribes state change from session store
const [
// state from session store
{isFetching},
// call trigger function can trigger useQuery work manually
triggerQuery
] = userQueryStore.useSession();
return (
<button
disabled={isFetching}
onClick={triggerQuery}
>
query
</button>
);
}
// provide dynamic store is very important
const App = userQueryStore.provideTo(()=>{
const [query, setQuery] = useState({name:'', username:''});
const [
state,
// Write every query state change to store
] = userQueryStore.useQuery(
[query]
);
......
return (
<>
<SearchButton />
......
</>
);
})
```
Why support React.Context store? Refer to [@airma/react-state explain](/react-state/index?id=why-support-context-store).
The dynamic store is a special session [key](/react-effect/concepts?id=key) collection not a real store. It persist an actual store in [Provider](/react-effect/api?id=provider) component.
When a Provider is mounting in, it creates store, and when the provider has been unmounted, it destroys this store.
### Global static store state-management
```ts
import React from 'react';
import {useMutation, Strategy} from '@airma/react-effect';
import {session} from '@airma/react-effect';
import {User} from './type';
const saveUser = (user:User):Promise<User> =>
Promise.resolve(user);
type UserQuery = {
name: string;
username: string;
}
// declare a query session global static store
const userQueryStore = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
).createStore().asGlobal();
const SearchButton = ()=>{
const [
{
isFetching,
// User[] | undefined
data
},
triggerQuery
] = userQueryStore.useSession();
return (
<button
disabled={isFetching}
onClick={triggerQuery}
>
query
</button>
);
}
// global static store needs no Provider.
const App = ()=>{
const [user, setUser] = useState({name:'', username:''});
const [state, trigger] = useMutation(
saveUser,
// Set variables and strategy
const [query, setQuery] = useState({name:'', username:''});
const [
state
] = userQueryStore.useQuery(
[query]
);
......
return (
<>
<SearchButton />
......
</>
);
}
```
The state `data` from useSession is always has a `undefined` union type. API [useLoadedSession](/react-effect/api?id=useloadedsession) can be helpful if the session `state.data` is not empty from initializing time.
```ts
import React from 'react';
import {session} from '@airma/react-effect';
import {User} from './type';
type UserQuery = {
name: string;
username: string;
}
const userQueryStore = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
).createStore().asGlobal();
const SearchButton = ()=>{
// store.useLoadedSession can give out the promise resolve type without `empty`.
const [
{
variables: [user],
// Set Strategy.once()
strategy: Strategy.once()
isFetching,
// User[]
data
},
triggerQuery
] = userQueryStore.useLoadedSession();
return (
<button
disabled={isFetching}
onClick={triggerQuery}
>
query
</button>
);
}
const App = ()=>{
const [query, setQuery] = useState({name:'', username:''});
const [
state
] = userQueryStore.useQuery(
// use object config to set default data
{
variables: [query],
// To make `state.data` not empty,
// a default data is needed.
defaultData: []
}
);
const handleClick = async ()=>{
trigger();
}
......
return (
<>
<SearchButton />
......
</>
);
}
```
Want to do something when query or mutation responses?
```ts
import React from 'react';
import {session, useResponse} from '@airma/react-effect';
import {User} from './type';
type UserQuery = {
name: string;
username: string;
}
const userQuerySession = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
);
const App = ()=>{
const [query, setQuery] = useState({name:'', username:''});
const [
state
] = userQuerySession.useQuery(
[query]
);
// When useQuery/useMutation responses,
// useResponse calls the response callback.
useResponse(
// response callback
(sessionState)=>{
// accept a newest session state.
const {
data,
isError,
error,
......
} = sessionState;
doSomething(sessionState);
},
// listen to the session state of useQuery
state
);
// When useQuery/useMutation responses successfully,
// useResponse.useSuccess calls the response callback.
useResponse.useSuccess(
(data, sessionState)=>{
// accept a newst session state data.
// accept a newest session state.
doSomething(data);
},
// listen to the session state of useQuery
state
);
// When useQuery/useMutation responses unsuccessfully,
// useResponse.useFailure calls the response callback.
useResponse.useFailure(
(error, sessionState)=>{
// accept a newst session state error.
// accept a newest session state.
doSomething(error);
},
// listen to the session state of useQuery
state
);
......

@@ -220,57 +431,155 @@ }

## Share promise state changes
Want to run useQuery or useMutation with some features like debounce?
There are steps you need to do for sharing promise state changes.
### Strategy
1. Create a `session key` for every promise callback.
2. Set `session keys` to `SessionProvider` for creating session store.
3. Use `session key` to link a `SessionProvider` store for promise state sharing.
```ts
import React from 'react';
import {session, Strategy} from '@airma/react-effect';
import {User} from './type';
type UserQuery = {
name: string;
username: string;
}
const userQuerySession = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
);
const App = ()=>{
const [query, setQuery] = useState({name:'', username:''});
const [
state,
trigger,
executeWithParams
] = userQuerySession.useQuery(
{
variables: [query],
// set a debouce strategy to take debounce query feature.
strategy: Strategy.debounce(300)
}
);
......
}
```
The [Strategy](/react-effect/api?id=strategy) API contains some useful strategies for useQuery and useMutation. Compose some strategies together can make the session of useQuery/useMutation performance wonderfully.
```ts
import React, {memo} from 'react';
import {
SessionProvider,
createSessionKey,
useSession,
useQuery
} from '@airma/react-effect';
import React from 'react';
import {session, Strategy} from '@airma/react-effect';
import {User} from './type';
const fetchLoginUser = (query:UserQuery):Promise<User>=>
Promise.resolve({...});
type UserQuery = {
name: string;
username: string;
}
// Create a `session key`
const loginUser = createSessionKey(fetchLoginUser);
const userQuerySession = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
);
const Child1 = memo(()=>{
// Query for current login user.
// Update promise state into store
// with session key `loginUser`
const [ state ] = useQuery(loginUser,[]);
const App = ()=>{
const [query, setQuery] = useState({name:'', username:''});
const [
state,
trigger,
executeWithParams
] = userQuerySession.useQuery(
{
variables: [query],
// compose different strategies.
strategy: [
// Validate query.name is not empty,
// if it is empty, then stop execute query
Strategy.validate(()=>!!query.name),
// Query with debounce feature
Strategy.debounce(300),
// If the response data equals current state.data,
// keeps current state.data.
Strategy.memo()
]
}
);
return ......;
});
......
}
```
const Child2 = memo(()=>{
// Take and subscribe promise state changes
// of session key `loginUser` in store.
const [ state ] = useSession(loginUser);
Want to use SWR(stale-while-revalidate)?
return ......;
});
```ts
import React from 'react';
import {session, Strategy} from '@airma/react-effect';
import {User} from './type';
const App = memo(()=>{
// Set session key `loginUser` into `SessionProvider`,
// and create a store inside.
return (
<SessionProvider keys={loginUser}>
<Child1/>
<Child2/>
</SessionProvider>
);
})
type UserQuery = {
name: string;
username: string;
}
const userQuerySession = session(
(query: UserQuery):Promise<User[]> =>
Promise.resolve([]),
'query'
);
const App = ()=>{
const [query, setQuery] = useState({name:'', username:''});
const [
state,
trigger,
executeWithParams
] = userQuerySession.useQuery(
{
variables: [query],
strategy: [
// use swr strategy
Strategy.cache({
capacity:10,
staleTime:5*60*1000
})
]
}
);
......
}
```
## Summary
## Introduce
The common usages about `@airma/react-effect` are listed above, if you want to know more about it, please take this [document](https://filefoxper.github.io/airma/#/react-effect/index).
`@airma/react-effect` is an asynchronous state-management tool for react. It dependents [@airma/react-state](/react-state/index), and there are some similar apis between both packages, so, use a common package [@airma/react-hooks](/react-hooks/index) is a better choice.
### Why not use setState in asynchronous callback?
Setting state in asynchronous callback is more easy to take a stale state usage bug in code. And it often makes [zombie-children](https://react-redux.js.org/api/hooks#stale-props-and-zombie-children) problem too.
### When useQuery works?
API useQuery works when it is mounted, or the dependency parameters change, just like React.useEffect performance. It also can be triggered manually.
## Install and Support
The package lives in [npm](https://www.npmjs.com/get-npm). To install the latest stable version, run the following command:
### Install command
```
npm i @airma/react-effect
```
### Browser support
```
chrome: '>=91',
edge: '>=91',
firefox: '=>90',
safari: '>=15'
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc