UNPKG

jotai

Version:

👻 Next gen state management that will spook you

2 lines (1 loc) • 2.68 kB
System.register(["@urql/core","jotai","wonka"],function(P){"use strict";var _,c,q,d,h;return{setters:[function(p){_=p.createClient},function(p){c=p.atom},function(p){q=p.pipe,d=p.skip,h=p.subscribe}],execute:function(){P({atomWithMutation:U,atomWithQuery:T,atomWithSubscription:D});const p=typeof process=="object"&&process.env.JOTAI_URQL_DEFAULT_URL||"/graphql",R=P("clientAtom",c(_({url:p})));var W=Object.defineProperty,O=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable,E=(n,s,e)=>s in n?W(n,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[s]=e,w=(n,s)=>{for(var e in s||(s={}))x.call(s,e)&&E(n,e,s[e]);if(O)for(var e of O(s))L.call(s,e)&&E(n,e,s[e]);return n};const S=n=>"data"in n;function T(n,s=e=>e(R)){const e=c(()=>({})),v=(r,u,t,i)=>{let y=null;const m=c(new Promise(A=>{y=A}));r.resultAtom=m;let a=()=>{throw new Error("setting result without mount")};const b=A=>{if(m===r.resultAtom){if(!S(A))throw new Error("result does not have data");y?(y(A),y=null):a(A)}};return u.query(t.query,t.variables,w(w(w({},t.requestPolicy&&{requestPolicy:t.requestPolicy}),t.context),i)).toPromise().then(b).catch(()=>{}),m.onMount=A=>{a=A;const I=q(u.query(t.query,t.variables,w(w(w({},t.requestPolicy&&{requestPolicy:t.requestPolicy}),t.context),i)),d(1),h(b));return()=>I.unsubscribe()},m},l=c(r=>{const u=n(r);if(u.pause)return null;const t=s(r);return{resultAtom:v(r(e),t,u),client:t,args:u}}),o=c(null);return c(r=>{const u=r(l);if(!u)return null;let{resultAtom:t}=u;const i=r(o);return i&&i.oldResultAtom===t&&(t=i.newResultAtom),r(t)},(r,u,t)=>{switch(t.type){case"reexecute":{const i=r(l);if(!i)throw new Error("query is paused");const{resultAtom:y,client:m,args:a}=i;u(o,{oldResultAtom:y,newResultAtom:v(r(e),m,a,t.opts)})}}})}function U(n,s=e=>e(R)){const e=c(new Promise(()=>{}));return c(l=>l(e),(l,o,f)=>{o(e,new Promise(()=>{}));const r=s(l),u=n(l);r.mutation(u,f.variables,f.context).toPromise().then(t=>{var i;o(e,t),(i=f.callback)==null||i.call(f,t)}).catch(()=>{})})}const j=n=>"data"in n;function D(n,s=e=>e(R)){const e=c(l=>{const o=n(l);if(o.pause)return{args:o};const f=s(l);let r=null;const u=c(new Promise(a=>{r=a}));let t=()=>{throw new Error("setting result without mount")};const i=a=>{if(!j(a))throw new Error("result does not have data");r?(r(a),r=null):t(a)},y=q(f.subscription(o.query,o.variables,o.context),h(i));let m=setTimeout(()=>{m=null,y.unsubscribe()},1e3);return u.onMount=a=>{t=a;let b;return m?(clearTimeout(m),b=y):b=q(f.subscription(o.query,o.variables,o.context),h(i)),()=>b.unsubscribe()},{resultAtom:u,args:o}});return c(l=>{const{resultAtom:o}=l(e);return o?l(o):null})}}}});