UNPKG

svelte-asyncable

Version:

Super tiny, declarative, optimistic, async store for SvelteJS.

3 lines (2 loc) 1.14 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("svelte/store")):"function"==typeof define&&define.amd?define(["exports","svelte/store"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).asyncable={},e.store)}(this,(function(e,t){"use strict";e.asyncable=function(e,r=(()=>{}),i=[]){let s;const a=new Promise((e=>s=e)),o=t.derived(i,(e=>e)),n=t.writable(a,(t=>o.subscribe((async(r=[])=>{let i=e(...r);void 0!==i&&(i=Promise.resolve(i),t(i),s(i))}))));async function l(e,t){if(e!==t){n.set(Promise.resolve(e));try{await r(e,t)}catch(e){throw n.set(Promise.resolve(t)),e}}}return{subscribe:n.subscribe,async update(e){if(!r)return;let i,s;try{i=await t.get(n),s=await e((a=i,"object"!=typeof a||null===a?a:Array.isArray(a)?[...a]:{...a}))}finally{await l(s,i)}var a},async set(e){if(!r)return;let i;try{i=await t.get(n),e=await e}finally{await l(e,i)}},get:()=>t.get(n)}},e.syncable=function(e,r){return t.derived(e,((t,r)=>(Array.isArray(e)?Promise.allSettled:Promise.resolve).call(Promise,t).then(r)),r)},Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=index.min.js.map