UNPKG

triplit-tanstackdb

Version:

TanStack DB collection adapter for the Triplit real-time, offline-first sync engine. Enables powerful optimistic updates and reactive, cross-source queries.

2 lines (1 loc) 1.82 kB
"use strict";var p=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var j=(r,t)=>{for(var i in t)p(r,i,{get:t[i],enumerable:!0})},k=(r,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of F(t))!w.call(r,e)&&e!==i&&p(r,e,{get:()=>t[e],enumerable:!(s=v(t,e))||s.enumerable});return r};var K=r=>k(p({},"__esModule",{value:!0}),r);var D={};j(D,{createTriplitCollection:()=>A});module.exports=K(D);var x=require("@tanstack/db");function g(r){let{client:t,query:i,getKey:s,onError:e}=r,l=i.collectionName;return{getKey:s,sync:{sync:c=>{let{begin:n,write:d,commit:Q,markReady:f,collection:S}=c,m=!1,u,I=o=>{n();let M=Array.from(S.state.values()),h=new Set(M.map(s)),C=o?Array.from(o.values()):[],O=new Set(C.map(s));for(let a of h)if(!O.has(a)){let y=M.find(b=>s(b)===a);y&&d({type:"delete",value:y})}for(let a of C){let y=s(a);h.has(y)?d({type:"update",value:a}):d({type:"insert",value:a})}Q()};return t.fetch(i).then(o=>{m||(I(o),f(),m=!0)}).catch(o=>{console.error("[Triplit Adapter] Initial fetch failed, waiting for subscription.",o),e==null||e(o)}),u=t.subscribe(i,o=>{I(o),m||(f(),m=!0)},o=>{console.error("[Triplit Adapter] Subscription error:",o),e==null||e(o)}),()=>{u==null||u()}}},onInsert:async({transaction:c})=>{try{for(let n of c.mutations)await t.insert(l,n.modified)}catch(n){throw e==null||e(n),n}},onUpdate:async({transaction:c})=>{try{for(let n of c.mutations)await t.update(l,String(n.key),n.changes)}catch(n){throw e==null||e(n),n}},onDelete:async({transaction:c})=>{try{for(let n of c.mutations)await t.delete(l,String(n.key))}catch(n){throw e==null||e(n),n}}}}function A(r){let{client:t,query:i,getKey:s,onError:e,...l}=r,T=g({client:t,query:i,getKey:s,onError:e});return(0,x.createCollection)({...l,...T})}