@electric-sql/client 1.2.1 → 1.2.2
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.
- package/dist/cjs/index.cjs +22 -5
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.browser.mjs +2 -2
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.legacy-esm.js +22 -5
- package/dist/index.legacy-esm.js.map +1 -1
- package/dist/index.mjs +22 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +26 -3
- package/src/column-mapper.ts +25 -0
package/dist/index.browser.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
1
|
+
var Es=Object.defineProperty,Ss=Object.defineProperties;var ys=Object.getOwnPropertyDescriptors;var He=Object.getOwnPropertySymbols;var Ht=Object.prototype.hasOwnProperty,It=Object.prototype.propertyIsEnumerable;var Nt=r=>{throw TypeError(r)};var Dt=(r,e,t)=>e in r?Es(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,y=(r,e)=>{for(var t in e||(e={}))Ht.call(e,t)&&Dt(r,t,e[t]);if(He)for(var t of He(e))It.call(e,t)&&Dt(r,t,e[t]);return r},re=(r,e)=>Ss(r,ys(e));var Bt=(r,e)=>{var t={};for(var s in r)Ht.call(r,s)&&e.indexOf(s)<0&&(t[s]=r[s]);if(r!=null&&He)for(var s of He(r))e.indexOf(s)<0&&It.call(r,s)&&(t[s]=r[s]);return t};var at=(r,e,t)=>e.has(r)||Nt("Cannot "+t);var n=(r,e,t)=>(at(r,e,"read from private field"),t?t.call(r):e.get(r)),d=(r,e,t)=>e.has(r)?Nt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),c=(r,e,t,s)=>(at(r,e,"write to private field"),s?s.call(r,t):e.set(r,t),t),p=(r,e,t)=>(at(r,e,"access private method"),t);var Ie=(r,e,t,s)=>({set _(a){c(r,e,a,t)},get _(){return n(r,e,s)}});var E=(r,e,t)=>new Promise((s,a)=>{var o=l=>{try{h(t.next(l))}catch(m){a(m)}},i=l=>{try{h(t.throw(l))}catch(m){a(m)}},h=l=>l.done?s(l.value):Promise.resolve(l.value).then(o,i);h((t=t.apply(r,e)).next())});var x=class r extends Error{constructor(t,s,a,o,i,h){super(h||`HTTP Error ${t} at ${i}: ${s!=null?s:JSON.stringify(a)}`);this.url=i;this.name="FetchError",this.status=t,this.text=s,this.json=a,this.headers=o}static fromResponse(t,s){return E(this,null,function*(){let a=t.status,o=Object.fromEntries([...t.headers.entries()]),i,h,l=t.headers.get("content-type");return t.bodyUsed||(l&&l.includes("application/json")?h=yield t.json():i=yield t.text()),new r(a,i,h,o,s)})}},O=class extends Error{constructor(){super("Fetch with backoff aborted"),this.name="FetchBackoffAbortError"}};var Ne=class extends Error{constructor(){super("Invalid shape options: missing required url parameter"),this.name="MissingShapeUrlError"}},Be=class extends Error{constructor(){super("Invalid signal option. It must be an instance of AbortSignal."),this.name="InvalidSignalError"}},Fe=class extends Error{constructor(){super("shapeHandle is required if this isn't an initial fetch (i.e. offset > -1)"),this.name="MissingShapeHandleError"}},qe=class extends Error{constructor(e){super(`Cannot use reserved Electric parameter names in custom params: ${e.join(", ")}`),this.name="ReservedParamError"}},je=class extends Error{constructor(e){super(`Column "${e!=null?e:"unknown"}" does not allow NULL values`),this.name="ParserNullValueError"}};var ne=class extends Error{constructor(e,t){let s=`The response for the shape request to ${e} didn't include the following required headers:
|
|
2
2
|
`;t.forEach(a=>{s+=`- ${a}
|
|
3
3
|
`}),s+=`
|
|
4
4
|
This is often due to a proxy not setting CORS correctly so that all Electric headers can be read by the client.`,s+=`
|
|
5
|
-
For more information visit the troubleshooting guide: /docs/guides/troubleshooting/missing-headers`,super(s)}};var qe=r=>Number(r),ys=r=>r==="true"||r==="t",Rs=r=>BigInt(r),It=r=>JSON.parse(r),bs=r=>r,As={int2:qe,int4:qe,int8:Rs,bool:ys,float4:qe,float8:qe,json:It,jsonb:It};function _s(r,e){let t=0,s=null,a="",o=!1,i=0,h;function l(u,g,A){let S=u.slice(g,A);return S=S==="NULL"?null:S,e?e(S):S}function m(u){let g=[];for(;t<u.length;t++){if(s=u[t],o)s==="\\"?a+=u[++t]:s==='"'?(g.push(e?e(a):a),a="",o=u[t+1]==='"',i=t+2):a+=s;else if(s==='"')o=!0;else if(s==="{")i=++t,g.push(m(u));else if(s==="}"){o=!1,i<t&&g.push(l(u,i,t)),i=t+1;break}else s===","&&h!=="}"&&h!=='"'&&(g.push(l(u,i,t)),i=t+1);h=s}return i<t&&g.push(g.push(l(u,i,t+1))),g}return m(r)[0]}var je=class{constructor(e,t){this.parser=y(y({},As),e),this.transformer=t}parse(e,t){return JSON.parse(e,(s,a)=>(s==="value"||s==="old_value")&&typeof a=="object"&&a!==null?this.transformMessageValue(a,t):a)}parseSnapshotData(e,t){return e.map(s=>{let a=s;return a.value&&typeof a.value=="object"&&a.value!==null&&(a.value=this.transformMessageValue(a.value,t)),a.old_value&&typeof a.old_value=="object"&&a.old_value!==null&&(a.old_value=this.transformMessageValue(a.old_value,t)),a})}transformMessageValue(e,t){let s=e;return Object.keys(s).forEach(a=>{s[a]=this.parseRow(a,s[a],t)}),this.transformer?this.transformer(s):s}parseRow(e,t,s){var g;let a=s[e];if(!a)return t;let u=a,{type:o,dims:i}=u,h=Ht(u,["type","dims"]),l=(g=this.parser[o])!=null?g:bs,m=Nt(l,a,e);return i&&i>0?Nt((S,R)=>_s(S,m),a,e)(t):m(t,h)}};function Nt(r,e,t){var a;let s=!((a=e.not_null)!=null&&a);return o=>{if(o===null){if(!s)throw new Fe(t!=null?t:"unknown");return null}return r(o,e)}}function nt(r){var h,l,m,u;let e=(l=(h=r.match(/^_+/))==null?void 0:h[0])!=null?l:"",t=r.slice(e.length),s=(u=(m=t.match(/_+$/))==null?void 0:m[0])!=null?u:"",i=(s?t.slice(0,t.length-s.length):t).toLowerCase().replace(/_+([a-z])/g,(g,A)=>A.toUpperCase());return e+i+s}function Bt(r){return r.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Ft(r){let e={};for(let[t,s]of Object.entries(r))e[s]=t;return{decode:t=>{var s;return(s=r[t])!=null?s:t},encode:t=>{var s;return(s=e[t])!=null?s:t}}}function Ve(r,e){if(!r||!e)return r!=null?r:"";let t=new Set(["SELECT","FROM","WHERE","AND","OR","NOT","IN","IS","NULL","NULLS","FIRST","LAST","TRUE","FALSE","LIKE","ILIKE","BETWEEN","ASC","DESC","LIMIT","OFFSET","ORDER","BY","GROUP","HAVING","DISTINCT","AS","ON","JOIN","LEFT","RIGHT","INNER","OUTER","CROSS","CASE","WHEN","THEN","ELSE","END","CAST","LOWER","UPPER","COALESCE","NULLIF"]),s=[],a=0;for(;a<r.length;){let h=r[a];if(h==="'"||h==='"'){let l=a,m=h;for(a++;a<r.length;)if(r[a]===m)if(r[a+1]===m)a+=2;else{a++;break}else a++;s.push({start:l,end:a})}else a++}let o=h=>s.some(l=>h>=l.start&&h<l.end),i=new RegExp("(?<![a-zA-Z0-9_])([a-zA-Z_][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])","g");return r.replace(i,(h,l,m)=>o(m)||t.has(h.toUpperCase())||h.startsWith("$")?h:e(h))}function xs(r){if(r){let e={};for(let t of Object.keys(r))e[t]=nt(t);return Ft(e)}return{decode:e=>nt(e),encode:e=>Bt(e)}}function ne(r){return"key"in r}function Ye(r){return!ne(r)}function at(r){return Ye(r)&&r.headers.control==="up-to-date"}function qt(r){let e=r.headers.global_last_seen_lsn;if(e)return`${e}_0`}function it(r,e){let t=BigInt(r),s=BigInt(e.xmin),a=BigInt(e.xmax),o=e.xip_list.map(BigInt);return t<s||t<a&&!o.includes(t)}var jt="electric-cursor",ye="electric-handle",We="electric-offset",ot="electric-schema",Vt="electric-up-to-date",Yt="columns",Ke="cursor",ct="expired_handle",ae="handle",O="live",ie="offset",Wt="table",Kt="where",Qt="replica",$t="params",Gt="experimental_live_sse",ht="live_sse",lt="force-disconnect-and-refresh",ut="pause-stream",dt="log",Re="subset__where",be="subset__limit",Ae="subset__offset",_e="subset__order_by",xe="subset__params",ft=[O,ht,ae,ie,Ke,ct,dt,Re,be,Ae,_e,xe];var Ps=[429],$e={initialDelay:100,maxDelay:6e4,multiplier:1.3,maxRetries:1/0};function Ts(r){if(!r)return 0;let e=Number(r);if(Number.isFinite(e)&&e>0)return e*1e3;let t=Date.parse(r);if(!isNaN(t)){let s=t-Date.now();return Math.max(0,Math.min(s,36e5))}return 0}function zt(r,e=$e){let{initialDelay:t,maxDelay:s,multiplier:a,debug:o=!1,onFailedAttempt:i,maxRetries:h=1/0}=e;return(...l)=>E(this,null,function*(){var S;let m=l[0],u=l[1],g=t,A=0;for(;;)try{let R=yield r(...l);if(R.ok)return R;throw yield x.fromResponse(R,m.toString())}catch(R){if(i==null||i(),(S=u==null?void 0:u.signal)!=null&&S.aborted)throw new U;if(R instanceof x&&!Ps.includes(R.status)&&R.status>=400&&R.status<500)throw R;{if(A++,A>h)throw o&&console.log(`Max retries reached (${A}/${h}), giving up`),R;let q=R instanceof x&&R.headers?Ts(R.headers["retry-after"]):0,ms=Math.random()*g,Ct=Math.min(ms,s),kt=Math.max(q,Ct);if(o){let st=q>0?"server+client":"client";console.log(`Retry attempt #${A} after ${kt}ms (${st}, serverMin=${q}ms, clientBackoff=${Ct}ms)`)}yield new Promise(st=>setTimeout(st,kt)),g=Math.min(g*a,s)}}})}var ws=[201,204,205];function Jt(r){return(...e)=>E(this,null,function*(){var a,o;let t=e[0],s=yield r(...e);try{if(s.status<200||ws.includes(s.status))return s;let i=yield s.text();return new Response(i,s)}catch(i){throw(o=(a=e[1])==null?void 0:a.signal)!=null&&o.aborted?new U:new x(s.status,void 0,void 0,Object.fromEntries([...s.headers.entries()]),t.toString(),i instanceof Error?i.message:typeof i=="string"?i:"failed to read body")}})}var Ms={maxChunksToPrefetch:2};function Zt(r,e=Ms){let{maxChunksToPrefetch:t}=e,s;return(...o)=>E(this,null,function*(){let i=o[0].toString(),h=s==null?void 0:s.consume(...o);if(h)return h;s==null||s.abort();let l=yield r(...o),m=mt(i,l);return m&&(s=new pt({fetchClient:r,maxPrefetchedRequests:t,url:m,requestInit:o[1]})),l})}var vs=["electric-offset","electric-handle"],Cs=["electric-cursor"],ks=["electric-schema"];function Xt(r){return(...e)=>E(this,null,function*(){let t=yield r(...e);if(t.ok){let s=t.headers,a=[],o=u=>a.push(...u.filter(g=>!s.has(g))),h=e[0].toString(),l=new URL(h);if([Re,xe,be,Ae,_e].some(u=>l.searchParams.has(u)))return t;if(o(vs),l.searchParams.get(O)==="true"&&o(Cs),(!l.searchParams.has(O)||l.searchParams.get(O)==="false")&&o(ks),a.length>0)throw new re(h,a)}return t})}var Pe,Te,L,J,D,oe,Qe,pt=class{constructor(e){d(this,oe);d(this,Pe);d(this,Te);d(this,L,new Map);d(this,J);d(this,D);var t;c(this,Pe,(t=e.fetchClient)!=null?t:(...s)=>fetch(...s)),c(this,Te,e.maxPrefetchedRequests),c(this,J,e.url.toString()),c(this,D,n(this,J)),p(this,oe,Qe).call(this,e.url,e.requestInit)}abort(){n(this,L).forEach(([e,t])=>t.abort())}consume(...e){var a;let t=e[0].toString(),s=(a=n(this,L).get(t))==null?void 0:a[0];if(!(!s||t!==n(this,J)))return n(this,L).delete(t),s.then(o=>{let i=mt(t,o);c(this,J,i),n(this,D)&&!n(this,L).has(n(this,D))&&p(this,oe,Qe).call(this,n(this,D),e[1])}).catch(()=>{}),s}};Pe=new WeakMap,Te=new WeakMap,L=new WeakMap,J=new WeakMap,D=new WeakMap,oe=new WeakSet,Qe=function(...e){var a,o;let t=e[0].toString();if(n(this,L).size>=n(this,Te))return;let s=new AbortController;try{let{signal:i,cleanup:h}=Us(s,(a=e[1])==null?void 0:a.signal),l=n(this,Pe).call(this,t,se(y({},(o=e[1])!=null?o:{}),{signal:i}));n(this,L).set(t,[l,s]),l.then(m=>{if(!m.ok||s.signal.aborted)return;let u=mt(t,m);if(!u||u===t){c(this,D,void 0);return}return c(this,D,u),p(this,oe,Qe).call(this,u,e[1])}).catch(()=>{}).finally(h)}catch(i){}};function mt(r,e){let t=e.headers.get(ye),s=e.headers.get(We),a=e.headers.has(Vt);if(!t||!s||a)return;let o=new URL(r);if(!o.searchParams.has(O))return o.searchParams.set(ae,t),o.searchParams.set(ie,s),o.searchParams.sort(),o.toString()}function Us(r,e){let t=Os;if(e)if(e.aborted)r.abort();else{let s=()=>r.abort();e.addEventListener("abort",s,{once:!0,signal:r.signal}),t=()=>e.removeEventListener("abort",s)}return{signal:r.signal,cleanup:t}}function Os(){}import{fetchEventSource as Ls}from"@microsoft/fetch-event-source";var gt=class{constructor(){this.data={};this.max=250;this.storageKey="electric_expired_shapes";this.load()}getExpiredHandle(e){let t=this.data[e];return t?(t.lastUsed=Date.now(),this.save(),t.expiredHandle):null}markExpired(e,t){this.data[e]={expiredHandle:t,lastUsed:Date.now()};let s=Object.keys(this.data);if(s.length>this.max){let a=s.reduce((o,i)=>this.data[i].lastUsed<this.data[o].lastUsed?i:o);delete this.data[a]}this.save()}save(){if(typeof localStorage!="undefined")try{localStorage.setItem(this.storageKey,JSON.stringify(this.data))}catch(e){}}load(){if(typeof localStorage!="undefined")try{let e=localStorage.getItem(this.storageKey);e&&(this.data=JSON.parse(e))}catch(e){this.data={}}}clear(){this.data={},this.save()}},Et=new gt;var St=class{constructor(){this.data={};this.storageKey="electric_up_to_date_tracker";this.cacheTTL=6e4;this.maxEntries=250;this.writeThrottleMs=6e4;this.lastWriteTime=0;this.load(),this.cleanup()}recordUpToDate(e,t){this.data[e]={timestamp:Date.now(),cursor:t};let s=Object.keys(this.data);if(s.length>this.maxEntries){let a=s.reduce((o,i)=>this.data[i].timestamp<this.data[o].timestamp?i:o);delete this.data[a]}this.scheduleSave()}scheduleSave(){let e=Date.now(),t=e-this.lastWriteTime;if(t>=this.writeThrottleMs)this.lastWriteTime=e,this.save();else if(!this.pendingSaveTimer){let s=this.writeThrottleMs-t;this.pendingSaveTimer=setTimeout(()=>{this.lastWriteTime=Date.now(),this.pendingSaveTimer=void 0,this.save()},s)}}shouldEnterReplayMode(e){let t=this.data[e];return!t||Date.now()-t.timestamp>=this.cacheTTL?null:t.cursor}cleanup(){let e=Date.now(),t=Object.keys(this.data),s=!1;for(let a of t)e-this.data[a].timestamp>this.cacheTTL&&(delete this.data[a],s=!0);s&&this.save()}save(){if(typeof localStorage!="undefined")try{localStorage.setItem(this.storageKey,JSON.stringify(this.data))}catch(e){}}load(){if(typeof localStorage!="undefined")try{let e=localStorage.getItem(this.storageKey);e&&(this.data=JSON.parse(e))}catch(e){this.data={}}}clear(){this.data={},this.pendingSaveTimer&&(clearTimeout(this.pendingSaveTimer),this.pendingSaveTimer=void 0),this.save()}},yt=new St;var Ge=class{constructor(){this.activeSnapshots=new Map;this.xmaxSnapshots=new Map;this.snapshotsByDatabaseLsn=new Map}addSnapshot(e,t){var o,i,h,l;this.activeSnapshots.set(e.snapshot_mark,{xmin:BigInt(e.xmin),xmax:BigInt(e.xmax),xip_list:e.xip_list.map(BigInt),keys:t});let s=(i=(o=this.xmaxSnapshots.get(BigInt(e.xmax)))==null?void 0:o.add(e.snapshot_mark))!=null?i:new Set([e.snapshot_mark]);this.xmaxSnapshots.set(BigInt(e.xmax),s);let a=(l=(h=this.snapshotsByDatabaseLsn.get(BigInt(e.database_lsn)))==null?void 0:h.add(e.snapshot_mark))!=null?l:new Set([e.snapshot_mark]);this.snapshotsByDatabaseLsn.set(BigInt(e.database_lsn),a)}removeSnapshot(e){this.activeSnapshots.delete(e)}shouldRejectMessage(e){let t=e.headers.txids||[];if(t.length===0)return!1;let s=Math.max(...t);for(let[a,o]of this.xmaxSnapshots.entries())if(s>=a)for(let i of o)this.removeSnapshot(i);return[...this.activeSnapshots.values()].some(a=>a.keys.has(e.key)&&it(s,a))}lastSeenUpdate(e){for(let[t,s]of this.snapshotsByDatabaseLsn.entries())if(t<=e)for(let a of s)this.removeSnapshot(a)}};var Ds=new Set([Ke,ae,O,ie]);function ts(r){return E(this,null,function*(){return typeof r=="function"?r():r})}function Hs(r){return E(this,null,function*(){let e=Object.entries(r),t=yield Promise.all(e.map(o=>E(this,[o],function*([s,a]){if(a===void 0)return[s,void 0];let i=yield ts(a);return[s,Array.isArray(i)?i.join(","):i]})));return Object.fromEntries(t.filter(([s,a])=>a!==void 0))})}function Is(r){return E(this,null,function*(){if(!r)return{};let e=Object.entries(r),t=yield Promise.all(e.map(o=>E(this,[o],function*([s,a]){return[s,yield ts(a)]})));return Object.fromEntries(t)})}function ze(r){let e=new URL(r.origin+r.pathname);for(let[t,s]of r.searchParams)ft.includes(t)||e.searchParams.set(t,s);return e.searchParams.sort(),e.toString()}var ce,he,le,Z,j,k,_,H,I,V,T,X,M,w,Y,N,ue,v,ee,B,de,W,fe,ve,K,F,pe,te,me,Ce,ke,Q,Ze,ge,Xe,et,Ue,f,bt,we,Me,At,ss,_t,Je,rs,ns,as,xt,Pt,is,os,Tt,wt,cs,hs,Rt=class{constructor(e){d(this,f);d(this,ce,null);d(this,he);d(this,le);d(this,Z);d(this,j,new Map);d(this,k,!1);d(this,_,"active");d(this,H);d(this,I);d(this,V);d(this,T,!1);d(this,X,!0);d(this,M,!1);d(this,w);d(this,Y);d(this,N);d(this,ue);d(this,v);d(this,ee,!1);d(this,B);d(this,de);d(this,W);d(this,fe,Promise.resolve([]));d(this,ve,new Ge);d(this,K,0);d(this,F);d(this,pe);d(this,te);d(this,me);d(this,Ce);d(this,ke,1e3);d(this,Q,0);d(this,Ze,3);d(this,ge,!1);d(this,Xe,100);d(this,et,5e3);d(this,Ue);var i,h,l,m;this.options=y({subscribe:!0},e),Ns(this.options),c(this,H,(i=this.options.offset)!=null?i:"-1"),c(this,I,""),c(this,w,this.options.handle);let t;if(e.columnMapper){let u=g=>{let A={};for(let[S,R]of Object.entries(g)){let q=e.columnMapper.decode(S);A[q]=R}return A};t=e.transformer?g=>e.transformer(u(g)):u}else t=e.transformer;c(this,Z,new je(e.parser,t)),c(this,ue,this.options.onError),c(this,Y,(h=this.options.log)!=null?h:"full");let s=(l=e.fetchClient)!=null?l:(...u)=>fetch(...u),a=se(y({},(m=e.backoffOptions)!=null?m:$e),{onFailedAttempt:()=>{var u,g;c(this,M,!1),(g=(u=e.backoffOptions)==null?void 0:u.onFailedAttempt)==null||g.call(u)}}),o=zt(s,a);c(this,le,Xt(Zt(o))),c(this,he,Jt(n(this,le))),p(this,f,cs).call(this)}get shapeHandle(){return n(this,w)}get error(){return n(this,ce)}get isUpToDate(){return n(this,T)}get lastOffset(){return n(this,H)}get mode(){return n(this,Y)}subscribe(e,t=()=>{}){let s=Math.random();return n(this,j).set(s,[e,t]),n(this,k)||p(this,f,we).call(this),()=>{n(this,j).delete(s)}}unsubscribeAll(){var e;n(this,j).clear(),(e=n(this,Ue))==null||e.call(this)}lastSyncedAt(){return n(this,V)}lastSynced(){return n(this,V)===void 0?1/0:Date.now()-n(this,V)}isConnected(){return n(this,M)}isLoading(){return!n(this,T)}hasStarted(){return n(this,k)}isPaused(){return n(this,_)==="paused"}forceDisconnectAndRefresh(){return E(this,null,function*(){var e,t;c(this,ee,!0),n(this,T)&&!((e=n(this,v))!=null&&e.signal.aborted)&&((t=n(this,v))==null||t.abort(lt)),yield p(this,f,is).call(this),c(this,ee,!1)})}requestSnapshot(e){return E(this,null,function*(){if(n(this,Y)==="full")throw new Error(`Snapshot requests are not supported in ${n(this,Y)} mode, as the consumer is guaranteed to observe all data`);n(this,k)||(yield p(this,f,we).call(this)),yield p(this,f,os).call(this),De(this,K)._++;try{n(this,K)===1&&p(this,f,xt).call(this);let{metadata:t,data:s}=yield this.fetchSnapshot(e),a=s.concat([{headers:y({control:"snapshot-end"},t)}]);return n(this,ve).addSnapshot(t,new Set(s.map(o=>o.key))),p(this,f,Je).call(this,a,!1),{metadata:t,data:s}}finally{De(this,K)._--,n(this,K)===0&&p(this,f,Pt).call(this)}})}fetchSnapshot(e){return E(this,null,function*(){var m;let{fetchUrl:t,requestHeaders:s}=yield p(this,f,At).call(this,this.options.url,!0,e),a=yield n(this,he).call(this,t.toString(),{headers:s});if(!a.ok)throw new x(a.status,void 0,void 0,Object.fromEntries([...a.headers.entries()]),t.toString());let o=(m=n(this,N))!=null?m:es(a.headers,{required:!0,url:t.toString()}),{metadata:i,data:h}=yield a.json(),l=n(this,Z).parseSnapshotData(h,o);return{metadata:i,data:l}})}};ce=new WeakMap,he=new WeakMap,le=new WeakMap,Z=new WeakMap,j=new WeakMap,k=new WeakMap,_=new WeakMap,H=new WeakMap,I=new WeakMap,V=new WeakMap,T=new WeakMap,X=new WeakMap,M=new WeakMap,w=new WeakMap,Y=new WeakMap,N=new WeakMap,ue=new WeakMap,v=new WeakMap,ee=new WeakMap,B=new WeakMap,de=new WeakMap,W=new WeakMap,fe=new WeakMap,ve=new WeakMap,K=new WeakMap,F=new WeakMap,pe=new WeakMap,te=new WeakMap,me=new WeakMap,Ce=new WeakMap,ke=new WeakMap,Q=new WeakMap,Ze=new WeakMap,ge=new WeakMap,Xe=new WeakMap,et=new WeakMap,Ue=new WeakMap,f=new WeakSet,bt=function(){return n(this,te)!==void 0},we=function(){return E(this,null,function*(){var e,t,s,a,o;c(this,k,!0);try{yield p(this,f,Me).call(this)}catch(i){if(c(this,ce,i),n(this,ue)){let h=yield n(this,ue).call(this,i);if(h&&typeof h=="object"){h.params&&(this.options.params=y(y({},(e=this.options.params)!=null?e:{}),h.params)),h.headers&&(this.options.headers=y(y({},(t=this.options.headers)!=null?t:{}),h.headers)),c(this,ce,null),c(this,k,!1),yield p(this,f,we).call(this);return}i instanceof Error&&p(this,f,wt).call(this,i),c(this,M,!1),(s=n(this,W))==null||s.call(this);return}throw i instanceof Error&&p(this,f,wt).call(this,i),c(this,M,!1),(a=n(this,W))==null||a.call(this),i}c(this,M,!1),(o=n(this,W))==null||o.call(this)})},Me=function(){return E(this,null,function*(){var l,m;if(n(this,_)==="pause-requested"){c(this,_,"paused");return}if(!this.options.subscribe&&((l=this.options.signal)!=null&&l.aborted||n(this,T)))return;let e=n(this,_)==="paused";c(this,_,"active");let{url:t,signal:s}=this.options,{fetchUrl:a,requestHeaders:o}=yield p(this,f,At).call(this,t,e),i=yield p(this,f,ss).call(this,s),h=n(this,v);try{yield p(this,f,rs).call(this,{fetchUrl:a,requestAbortController:h,headers:o,resumingFromPause:e})}catch(u){if((u instanceof x||u instanceof U)&&h.signal.aborted&&h.signal.reason===lt)return p(this,f,Me).call(this);if(u instanceof U){let g=n(this,_);h.signal.aborted&&h.signal.reason===ut&&g==="pause-requested"&&c(this,_,"paused");return}if(!(u instanceof x))throw u;if(u.status==409){if(n(this,w)){let A=ze(a);Et.markExpired(A,n(this,w))}let g=u.headers[ye]||`${n(this,w)}-next`;return p(this,f,hs).call(this,g),yield p(this,f,Tt).call(this,Array.isArray(u.json)?u.json:[u.json]),p(this,f,Me).call(this)}else throw u}finally{i&&s&&s.removeEventListener("abort",i),c(this,v,void 0)}return(m=n(this,de))==null||m.call(this),p(this,f,Me).call(this)})},At=function(e,t,s){return E(this,null,function*(){var u,g,A;let[a,o]=yield Promise.all([Is(this.options.headers),this.options.params?Hs(Bs(this.options.params)):void 0]);o&&ls(o);let i=new URL(e);if(o){if(o.table&&C(i,Wt,o.table),o.where&&typeof o.where=="string"){let R=Ve(o.where,(u=this.options.columnMapper)==null?void 0:u.encode);C(i,Kt,R)}o.columns&&C(i,Yt,o.columns),o.replica&&C(i,Qt,o.replica),o.params&&C(i,$t,o.params);let S=y({},o);delete S.table,delete S.where,delete S.columns,delete S.replica,delete S.params;for(let[R,q]of Object.entries(S))C(i,R,q)}if(s){if(s.where&&typeof s.where=="string"){let S=Ve(s.where,(g=this.options.columnMapper)==null?void 0:g.encode);C(i,Re,S)}if(s.params&&i.searchParams.set(xe,JSON.stringify(s.params)),s.limit&&C(i,be,s.limit),s.offset&&C(i,Ae,s.offset),s.orderBy&&typeof s.orderBy=="string"){let S=Ve(s.orderBy,(A=this.options.columnMapper)==null?void 0:A.encode);C(i,_e,S)}}i.searchParams.set(ie,n(this,H)),i.searchParams.set(dt,n(this,Y));let h=s!==void 0;n(this,T)&&!h&&(!n(this,ee)&&!t&&i.searchParams.set(O,"true"),i.searchParams.set(Ke,n(this,I))),n(this,w)&&i.searchParams.set(ae,n(this,w));let l=ze(i),m=Et.getExpiredHandle(l);return m&&i.searchParams.set(ct,m),i.searchParams.sort(),{fetchUrl:i,requestHeaders:a}})},ss=function(e){return E(this,null,function*(){var t;if(c(this,v,new AbortController),e){let s=()=>{var a;(a=n(this,v))==null||a.abort(e.reason)};return e.addEventListener("abort",s,{once:!0}),e.aborted&&((t=n(this,v))==null||t.abort(e.reason)),s}})},_t=function(e){return E(this,null,function*(){var h;let{headers:t,status:s}=e,a=t.get(ye);a&&c(this,w,a);let o=t.get(We);o&&c(this,H,o);let i=t.get(jt);i&&c(this,I,i),c(this,N,(h=n(this,N))!=null?h:es(t)),s===204&&c(this,V,Date.now())})},Je=function(e,t=!1){return E(this,null,function*(){var s;if(e.length>0){c(this,X,!0);let a=e[e.length-1];if(at(a)){if(t){let i=qt(a);i&&c(this,H,i)}if(c(this,V,Date.now()),c(this,T,!0),c(this,X,!1),(s=n(this,pe))==null||s.call(this),n(this,f,bt)&&!t&&n(this,I)===n(this,te))return;if(c(this,te,void 0),n(this,me)){let i=ze(n(this,me));yt.recordUpToDate(i,n(this,I))}}let o=e.filter(i=>ne(i)?!n(this,ve).shouldRejectMessage(i):!0);yield p(this,f,Tt).call(this,o)}})},rs=function(e){return E(this,null,function*(){var s;if(c(this,me,e.fetchUrl),!n(this,T)&&!n(this,f,bt)){let a=ze(e.fetchUrl),o=yt.shouldEnterReplayMode(a);o&&c(this,te,o)}let t=(s=this.options.liveSse)!=null?s:this.options.experimentalLiveSse;return n(this,T)&&t&&!n(this,ee)&&!e.resumingFromPause&&!n(this,ge)?(e.fetchUrl.searchParams.set(Gt,"true"),e.fetchUrl.searchParams.set(ht,"true"),p(this,f,as).call(this,e)):p(this,f,ns).call(this,e)})},ns=function(e){return E(this,null,function*(){let{fetchUrl:t,requestAbortController:s,headers:a}=e,o=yield n(this,he).call(this,t.toString(),{signal:s.signal,headers:a});c(this,M,!0),yield p(this,f,_t).call(this,o);let i=n(this,N),l=(yield o.text())||"[]",m=n(this,Z).parse(l,i);yield p(this,f,Je).call(this,m)})},as=function(e){return E(this,null,function*(){let{fetchUrl:t,requestAbortController:s,headers:a}=e,o=n(this,le);c(this,Ce,Date.now());let i=se(y({},a),{Accept:"text/event-stream"});try{let h=[];yield Ls(t.toString(),{headers:i,fetch:o,onopen:l=>E(this,null,function*(){c(this,M,!0),yield p(this,f,_t).call(this,l)}),onmessage:l=>{if(l.data){let m=n(this,N),u=n(this,Z).parse(l.data,m);h.push(u),at(u)&&(p(this,f,Je).call(this,h,!0),h=[])}},onerror:l=>{throw l},signal:s.signal})}catch(h){throw s.signal.aborted?new U:h}finally{let h=Date.now()-n(this,Ce),l=s.signal.aborted;if(h<n(this,ke)&&!l)if(De(this,Q)._++,n(this,Q)>=n(this,Ze))c(this,ge,!0),console.warn("[Electric] SSE connections are closing immediately (possibly due to proxy buffering or misconfiguration). Falling back to long polling. Your proxy must support streaming SSE responses (not buffer the complete response). Configuration: Nginx add 'X-Accel-Buffering: no', Caddy add 'flush_interval -1' to reverse_proxy. Note: Do NOT disable caching entirely - Electric uses cache headers to enable request collapsing for efficiency.");else{let m=Math.min(n(this,et),n(this,Xe)*Math.pow(2,n(this,Q))),u=Math.floor(Math.random()*m);yield new Promise(g=>setTimeout(g,u))}else h>=n(this,ke)&&c(this,Q,0)}})},xt=function(){var e;n(this,k)&&n(this,_)==="active"&&(c(this,_,"pause-requested"),(e=n(this,v))==null||e.abort(ut))},Pt=function(){n(this,k)&&(n(this,_)==="paused"||n(this,_)==="pause-requested")&&(n(this,_)==="pause-requested"&&c(this,_,"active"),p(this,f,we).call(this))},is=function(){return E(this,null,function*(){return n(this,B)?n(this,B):(c(this,B,new Promise((e,t)=>{c(this,de,e),c(this,W,t)})),n(this,B).finally(()=>{c(this,B,void 0),c(this,de,void 0),c(this,W,void 0)}),n(this,B))})},os=function(){return E(this,null,function*(){if(n(this,X))return n(this,F)?n(this,F):(c(this,F,new Promise(e=>{c(this,pe,e)})),n(this,F).finally(()=>{c(this,F,void 0),c(this,pe,void 0)}),n(this,F))})},Tt=function(e){return E(this,null,function*(){return c(this,fe,n(this,fe).then(()=>Promise.all(Array.from(n(this,j).values()).map(a=>E(this,[a],function*([t,s]){try{yield t(e)}catch(o){queueMicrotask(()=>{throw o})}}))))),n(this,fe)})},wt=function(e){n(this,j).forEach(([t,s])=>{s==null||s(e)})},cs=function(){if(typeof document=="object"&&typeof document.hidden=="boolean"&&typeof document.addEventListener=="function"){let e=()=>{document.hidden?p(this,f,xt).call(this):p(this,f,Pt).call(this)};document.addEventListener("visibilitychange",e),c(this,Ue,()=>{document.removeEventListener("visibilitychange",e)})}},hs=function(e){c(this,H,"-1"),c(this,I,""),c(this,w,e),c(this,T,!1),c(this,X,!0),c(this,M,!1),c(this,N,void 0),c(this,K,0),c(this,Q,0),c(this,ge,!1)},Rt.Replica={FULL:"full",DEFAULT:"default"};function es(r,e){let t=r.get(ot);if(!t){if(e!=null&&e.required&&(e!=null&&e.url))throw new re(e.url,[ot]);return{}}return JSON.parse(t)}function ls(r){if(!r)return;let e=Object.keys(r).filter(t=>Ds.has(t));if(e.length>0)throw new Be(e)}function Ns(r){if(!r.url)throw new He;if(r.signal&&!(r.signal instanceof AbortSignal))throw new Ie;if(r.offset!==void 0&&r.offset!=="-1"&&r.offset!=="now"&&!r.handle)throw new Ne;ls(r.params)}function C(r,e,t){if(!(t===void 0||t==null))if(typeof t=="string")r.searchParams.set(e,t);else if(typeof t=="object")for(let[s,a]of Object.entries(t))r.searchParams.set(`${e}[${s}]`,a);else r.searchParams.set(e,t.toString())}function Bs(r){return Array.isArray(r.params)?se(y({},r),{params:Object.fromEntries(r.params.map((e,t)=>[t+1,e]))}):r}var P,$,G,Oe,Ee,Se,z,b,ds,fs,Mt,tt,ps,vt,us=class{constructor(e){d(this,b);d(this,P,new Map);d(this,$,new Map);d(this,G,new Set);d(this,Oe,new Set);d(this,Ee,!1);d(this,Se,"syncing");d(this,z,!1);this.stream=e,this.stream.subscribe(p(this,b,ds).bind(this),p(this,b,ps).bind(this))}get isUpToDate(){return n(this,Se)==="up-to-date"}get lastOffset(){return this.stream.lastOffset}get handle(){return this.stream.shapeHandle}get rows(){return this.value.then(e=>Array.from(e.values()))}get currentRows(){return Array.from(this.currentValue.values())}get value(){return new Promise((e,t)=>{if(this.stream.isUpToDate)e(this.currentValue);else{let s=this.subscribe(({value:a})=>{s(),n(this,z)&&t(n(this,z)),e(a)})}})}get currentValue(){return n(this,P)}get error(){return n(this,z)}lastSyncedAt(){return this.stream.lastSyncedAt()}lastSynced(){return this.stream.lastSynced()}isLoading(){return this.stream.isLoading()}isConnected(){return this.stream.isConnected()}get mode(){return this.stream.mode}requestSnapshot(e){return E(this,null,function*(){let t=JSON.stringify(e);n(this,Oe).add(t),yield p(this,b,Mt).call(this),yield this.stream.requestSnapshot(e)})}subscribe(e){let t=Math.random();return n(this,$).set(t,e),()=>{n(this,$).delete(t)}}unsubscribeAll(){n(this,$).clear()}get numSubscribers(){return n(this,$).size}};P=new WeakMap,$=new WeakMap,G=new WeakMap,Oe=new WeakMap,Ee=new WeakMap,Se=new WeakMap,z=new WeakMap,b=new WeakSet,ds=function(e){let t=!1;e.forEach(s=>{if(ne(s))if(t=p(this,b,tt).call(this,"syncing"),this.mode==="full")switch(s.headers.operation){case"insert":n(this,P).set(s.key,s.value);break;case"update":n(this,P).set(s.key,y(y({},n(this,P).get(s.key)),s.value));break;case"delete":n(this,P).delete(s.key);break}else switch(s.headers.operation){case"insert":n(this,G).add(s.key),n(this,P).set(s.key,s.value);break;case"update":n(this,G).has(s.key)&&n(this,P).set(s.key,y(y({},n(this,P).get(s.key)),s.value));break;case"delete":n(this,G).has(s.key)&&(n(this,P).delete(s.key),n(this,G).delete(s.key));break}if(Ye(s))switch(s.headers.control){case"up-to-date":t=p(this,b,tt).call(this,"up-to-date"),n(this,Ee)&&(c(this,Ee,!1),p(this,b,fs).call(this));break;case"must-refetch":n(this,P).clear(),n(this,G).clear(),c(this,z,!1),t=p(this,b,tt).call(this,"syncing"),c(this,Ee,!0);break}}),t&&p(this,b,vt).call(this)},fs=function(){return E(this,null,function*(){yield p(this,b,Mt).call(this),yield Promise.all(Array.from(n(this,Oe)).map(e=>E(this,null,function*(){try{let t=JSON.parse(e);yield this.stream.requestSnapshot(t)}catch(t){}})))})},Mt=function(){return E(this,null,function*(){this.stream.isUpToDate||(yield new Promise(e=>{let t=()=>{this.stream.isUpToDate&&(clearInterval(s),a(),e())},s=setInterval(t,10),a=this.stream.subscribe(()=>t(),()=>t());t()}))})},tt=function(e){let t=n(this,Se)!==e;return c(this,Se,e),t&&e==="up-to-date"},ps=function(e){e instanceof x&&(c(this,z,e),p(this,b,vt).call(this))},vt=function(){n(this,$).forEach(e=>{e({value:this.currentValue,rows:this.currentRows})})};export{$e as BackoffDefaults,ft as ELECTRIC_PROTOCOL_QUERY_PARAMS,x as FetchError,us as Shape,Rt as ShapeStream,Bt as camelToSnake,Ft as createColumnMapper,ne as isChangeMessage,Ye as isControlMessage,it as isVisibleInSnapshot,ts as resolveValue,xs as snakeCamelMapper,nt as snakeToCamel};
|
|
5
|
+
For more information visit the troubleshooting guide: /docs/guides/troubleshooting/missing-headers`,super(s)}};var Ve=r=>Number(r),Rs=r=>r==="true"||r==="t",bs=r=>BigInt(r),Ft=r=>JSON.parse(r),As=r=>r,_s={int2:Ve,int4:Ve,int8:bs,bool:Rs,float4:Ve,float8:Ve,json:Ft,jsonb:Ft};function xs(r,e){let t=0,s=null,a="",o=!1,i=0,h;function l(u,g,b){let _=u.slice(g,b);return _=_==="NULL"?null:_,e?e(_):_}function m(u){let g=[];for(;t<u.length;t++){if(s=u[t],o)s==="\\"?a+=u[++t]:s==='"'?(g.push(e?e(a):a),a="",o=u[t+1]==='"',i=t+2):a+=s;else if(s==='"')o=!0;else if(s==="{")i=++t,g.push(m(u));else if(s==="}"){o=!1,i<t&&g.push(l(u,i,t)),i=t+1;break}else s===","&&h!=="}"&&h!=='"'&&(g.push(l(u,i,t)),i=t+1);h=s}return i<t&&g.push(g.push(l(u,i,t+1))),g}return m(r)[0]}var Ye=class{constructor(e,t){this.parser=y(y({},_s),e),this.transformer=t}parse(e,t){return JSON.parse(e,(s,a)=>(s==="value"||s==="old_value")&&typeof a=="object"&&a!==null?this.transformMessageValue(a,t):a)}parseSnapshotData(e,t){return e.map(s=>{let a=s;return a.value&&typeof a.value=="object"&&a.value!==null&&(a.value=this.transformMessageValue(a.value,t)),a.old_value&&typeof a.old_value=="object"&&a.old_value!==null&&(a.old_value=this.transformMessageValue(a.old_value,t)),a})}transformMessageValue(e,t){let s=e;return Object.keys(s).forEach(a=>{s[a]=this.parseRow(a,s[a],t)}),this.transformer?this.transformer(s):s}parseRow(e,t,s){var g;let a=s[e];if(!a)return t;let u=a,{type:o,dims:i}=u,h=Bt(u,["type","dims"]),l=(g=this.parser[o])!=null?g:As,m=qt(l,a,e);return i&&i>0?qt((_,S)=>xs(_,m),a,e)(t):m(t,h)}};function qt(r,e,t){var a;let s=!((a=e.not_null)!=null&&a);return o=>{if(o===null){if(!s)throw new je(t!=null?t:"unknown");return null}return r(o,e)}}function jt(r){return`"${r.replace(/"/g,'""')}"`}function it(r){var h,l,m,u;let e=(l=(h=r.match(/^_+/))==null?void 0:h[0])!=null?l:"",t=r.slice(e.length),s=(u=(m=t.match(/_+$/))==null?void 0:m[0])!=null?u:"",i=(s?t.slice(0,t.length-s.length):t).toLowerCase().replace(/_+([a-z])/g,(g,b)=>b.toUpperCase());return e+i+s}function Vt(r){return r.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Yt(r){let e={};for(let[t,s]of Object.entries(r))e[s]=t;return{decode:t=>{var s;return(s=r[t])!=null?s:t},encode:t=>{var s;return(s=e[t])!=null?s:t}}}function We(r,e){if(!r||!e)return r!=null?r:"";let t=new Set(["SELECT","FROM","WHERE","AND","OR","NOT","IN","IS","NULL","NULLS","FIRST","LAST","TRUE","FALSE","LIKE","ILIKE","BETWEEN","ASC","DESC","LIMIT","OFFSET","ORDER","BY","GROUP","HAVING","DISTINCT","AS","ON","JOIN","LEFT","RIGHT","INNER","OUTER","CROSS","CASE","WHEN","THEN","ELSE","END","CAST","LOWER","UPPER","COALESCE","NULLIF"]),s=[],a=0;for(;a<r.length;){let h=r[a];if(h==="'"||h==='"'){let l=a,m=h;for(a++;a<r.length;)if(r[a]===m)if(r[a+1]===m)a+=2;else{a++;break}else a++;s.push({start:l,end:a})}else a++}let o=h=>s.some(l=>h>=l.start&&h<l.end),i=new RegExp("(?<![a-zA-Z0-9_])([a-zA-Z_][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])","g");return r.replace(i,(h,l,m)=>o(m)||t.has(h.toUpperCase())||h.startsWith("$")?h:e(h))}function Ps(r){if(r){let e={};for(let t of Object.keys(r))e[t]=it(t);return Yt(e)}return{decode:e=>it(e),encode:e=>Vt(e)}}function ae(r){return"key"in r}function Ke(r){return!ae(r)}function ot(r){return Ke(r)&&r.headers.control==="up-to-date"}function Wt(r){let e=r.headers.global_last_seen_lsn;if(e)return`${e}_0`}function ct(r,e){let t=BigInt(r),s=BigInt(e.xmin),a=BigInt(e.xmax),o=e.xip_list.map(BigInt);return t<s||t<a&&!o.includes(t)}var Kt="electric-cursor",Re="electric-handle",Qe="electric-offset",ht="electric-schema",Qt="electric-up-to-date",lt="columns",$e="cursor",ut="expired_handle",ie="handle",L="live",oe="offset",$t="table",Gt="where",zt="replica",Jt="params",Zt="experimental_live_sse",dt="live_sse",ft="force-disconnect-and-refresh",pt="pause-stream",mt="log",be="subset__where",Ae="subset__limit",_e="subset__offset",xe="subset__order_by",Pe="subset__params",gt=[L,dt,ie,oe,$e,ut,mt,be,Ae,_e,xe,Pe];var Ts=[429],ze={initialDelay:100,maxDelay:6e4,multiplier:1.3,maxRetries:1/0};function ws(r){if(!r)return 0;let e=Number(r);if(Number.isFinite(e)&&e>0)return e*1e3;let t=Date.parse(r);if(!isNaN(t)){let s=t-Date.now();return Math.max(0,Math.min(s,36e5))}return 0}function Xt(r,e=ze){let{initialDelay:t,maxDelay:s,multiplier:a,debug:o=!1,onFailedAttempt:i,maxRetries:h=1/0}=e;return(...l)=>E(this,null,function*(){var _;let m=l[0],u=l[1],g=t,b=0;for(;;)try{let S=yield r(...l);if(S.ok)return S;throw yield x.fromResponse(S,m.toString())}catch(S){if(i==null||i(),(_=u==null?void 0:u.signal)!=null&&_.aborted)throw new O;if(S instanceof x&&!Ts.includes(S.status)&&S.status>=400&&S.status<500)throw S;{if(b++,b>h)throw o&&console.log(`Max retries reached (${b}/${h}), giving up`),S;let P=S instanceof x&&S.headers?ws(S.headers["retry-after"]):0,J=Math.random()*g,De=Math.min(J,s),Lt=Math.max(P,De);if(o){let nt=P>0?"server+client":"client";console.log(`Retry attempt #${b} after ${Lt}ms (${nt}, serverMin=${P}ms, clientBackoff=${De}ms)`)}yield new Promise(nt=>setTimeout(nt,Lt)),g=Math.min(g*a,s)}}})}var Ms=[201,204,205];function es(r){return(...e)=>E(this,null,function*(){var a,o;let t=e[0],s=yield r(...e);try{if(s.status<200||Ms.includes(s.status))return s;let i=yield s.text();return new Response(i,s)}catch(i){throw(o=(a=e[1])==null?void 0:a.signal)!=null&&o.aborted?new O:new x(s.status,void 0,void 0,Object.fromEntries([...s.headers.entries()]),t.toString(),i instanceof Error?i.message:typeof i=="string"?i:"failed to read body")}})}var vs={maxChunksToPrefetch:2};function ts(r,e=vs){let{maxChunksToPrefetch:t}=e,s;return(...o)=>E(this,null,function*(){let i=o[0].toString(),h=s==null?void 0:s.consume(...o);if(h)return h;s==null||s.abort();let l=yield r(...o),m=St(i,l);return m&&(s=new Et({fetchClient:r,maxPrefetchedRequests:t,url:m,requestInit:o[1]})),l})}var Cs=["electric-offset","electric-handle"],ks=["electric-cursor"],Us=["electric-schema"];function ss(r){return(...e)=>E(this,null,function*(){let t=yield r(...e);if(t.ok){let s=t.headers,a=[],o=u=>a.push(...u.filter(g=>!s.has(g))),h=e[0].toString(),l=new URL(h);if([be,Pe,Ae,_e,xe].some(u=>l.searchParams.has(u)))return t;if(o(Cs),l.searchParams.get(L)==="true"&&o(ks),(!l.searchParams.has(L)||l.searchParams.get(L)==="false")&&o(Us),a.length>0)throw new ne(h,a)}return t})}var Te,we,D,Z,H,ce,Ge,Et=class{constructor(e){d(this,ce);d(this,Te);d(this,we);d(this,D,new Map);d(this,Z);d(this,H);var t;c(this,Te,(t=e.fetchClient)!=null?t:(...s)=>fetch(...s)),c(this,we,e.maxPrefetchedRequests),c(this,Z,e.url.toString()),c(this,H,n(this,Z)),p(this,ce,Ge).call(this,e.url,e.requestInit)}abort(){n(this,D).forEach(([e,t])=>t.abort())}consume(...e){var a;let t=e[0].toString(),s=(a=n(this,D).get(t))==null?void 0:a[0];if(!(!s||t!==n(this,Z)))return n(this,D).delete(t),s.then(o=>{let i=St(t,o);c(this,Z,i),n(this,H)&&!n(this,D).has(n(this,H))&&p(this,ce,Ge).call(this,n(this,H),e[1])}).catch(()=>{}),s}};Te=new WeakMap,we=new WeakMap,D=new WeakMap,Z=new WeakMap,H=new WeakMap,ce=new WeakSet,Ge=function(...e){var a,o;let t=e[0].toString();if(n(this,D).size>=n(this,we))return;let s=new AbortController;try{let{signal:i,cleanup:h}=Os(s,(a=e[1])==null?void 0:a.signal),l=n(this,Te).call(this,t,re(y({},(o=e[1])!=null?o:{}),{signal:i}));n(this,D).set(t,[l,s]),l.then(m=>{if(!m.ok||s.signal.aborted)return;let u=St(t,m);if(!u||u===t){c(this,H,void 0);return}return c(this,H,u),p(this,ce,Ge).call(this,u,e[1])}).catch(()=>{}).finally(h)}catch(i){}};function St(r,e){let t=e.headers.get(Re),s=e.headers.get(Qe),a=e.headers.has(Qt);if(!t||!s||a)return;let o=new URL(r);if(!o.searchParams.has(L))return o.searchParams.set(ie,t),o.searchParams.set(oe,s),o.searchParams.sort(),o.toString()}function Os(r,e){let t=Ls;if(e)if(e.aborted)r.abort();else{let s=()=>r.abort();e.addEventListener("abort",s,{once:!0,signal:r.signal}),t=()=>e.removeEventListener("abort",s)}return{signal:r.signal,cleanup:t}}function Ls(){}import{fetchEventSource as Ds}from"@microsoft/fetch-event-source";var yt=class{constructor(){this.data={};this.max=250;this.storageKey="electric_expired_shapes";this.load()}getExpiredHandle(e){let t=this.data[e];return t?(t.lastUsed=Date.now(),this.save(),t.expiredHandle):null}markExpired(e,t){this.data[e]={expiredHandle:t,lastUsed:Date.now()};let s=Object.keys(this.data);if(s.length>this.max){let a=s.reduce((o,i)=>this.data[i].lastUsed<this.data[o].lastUsed?i:o);delete this.data[a]}this.save()}save(){if(typeof localStorage!="undefined")try{localStorage.setItem(this.storageKey,JSON.stringify(this.data))}catch(e){}}load(){if(typeof localStorage!="undefined")try{let e=localStorage.getItem(this.storageKey);e&&(this.data=JSON.parse(e))}catch(e){this.data={}}}clear(){this.data={},this.save()}},Rt=new yt;var bt=class{constructor(){this.data={};this.storageKey="electric_up_to_date_tracker";this.cacheTTL=6e4;this.maxEntries=250;this.writeThrottleMs=6e4;this.lastWriteTime=0;this.load(),this.cleanup()}recordUpToDate(e,t){this.data[e]={timestamp:Date.now(),cursor:t};let s=Object.keys(this.data);if(s.length>this.maxEntries){let a=s.reduce((o,i)=>this.data[i].timestamp<this.data[o].timestamp?i:o);delete this.data[a]}this.scheduleSave()}scheduleSave(){let e=Date.now(),t=e-this.lastWriteTime;if(t>=this.writeThrottleMs)this.lastWriteTime=e,this.save();else if(!this.pendingSaveTimer){let s=this.writeThrottleMs-t;this.pendingSaveTimer=setTimeout(()=>{this.lastWriteTime=Date.now(),this.pendingSaveTimer=void 0,this.save()},s)}}shouldEnterReplayMode(e){let t=this.data[e];return!t||Date.now()-t.timestamp>=this.cacheTTL?null:t.cursor}cleanup(){let e=Date.now(),t=Object.keys(this.data),s=!1;for(let a of t)e-this.data[a].timestamp>this.cacheTTL&&(delete this.data[a],s=!0);s&&this.save()}save(){if(typeof localStorage!="undefined")try{localStorage.setItem(this.storageKey,JSON.stringify(this.data))}catch(e){}}load(){if(typeof localStorage!="undefined")try{let e=localStorage.getItem(this.storageKey);e&&(this.data=JSON.parse(e))}catch(e){this.data={}}}clear(){this.data={},this.pendingSaveTimer&&(clearTimeout(this.pendingSaveTimer),this.pendingSaveTimer=void 0),this.save()}},At=new bt;var Je=class{constructor(){this.activeSnapshots=new Map;this.xmaxSnapshots=new Map;this.snapshotsByDatabaseLsn=new Map}addSnapshot(e,t){var o,i,h,l;this.activeSnapshots.set(e.snapshot_mark,{xmin:BigInt(e.xmin),xmax:BigInt(e.xmax),xip_list:e.xip_list.map(BigInt),keys:t});let s=(i=(o=this.xmaxSnapshots.get(BigInt(e.xmax)))==null?void 0:o.add(e.snapshot_mark))!=null?i:new Set([e.snapshot_mark]);this.xmaxSnapshots.set(BigInt(e.xmax),s);let a=(l=(h=this.snapshotsByDatabaseLsn.get(BigInt(e.database_lsn)))==null?void 0:h.add(e.snapshot_mark))!=null?l:new Set([e.snapshot_mark]);this.snapshotsByDatabaseLsn.set(BigInt(e.database_lsn),a)}removeSnapshot(e){this.activeSnapshots.delete(e)}shouldRejectMessage(e){let t=e.headers.txids||[];if(t.length===0)return!1;let s=Math.max(...t);for(let[a,o]of this.xmaxSnapshots.entries())if(s>=a)for(let i of o)this.removeSnapshot(i);return[...this.activeSnapshots.values()].some(a=>a.keys.has(e.key)&&ct(s,a))}lastSeenUpdate(e){for(let[t,s]of this.snapshotsByDatabaseLsn.entries())if(t<=e)for(let a of s)this.removeSnapshot(a)}};var Hs=new Set([$e,ie,L,oe]);function kt(r){return E(this,null,function*(){return typeof r=="function"?r():r})}function Is(r){return E(this,null,function*(){let e=Object.entries(r),t=yield Promise.all(e.map(o=>E(this,[o],function*([s,a]){if(a===void 0)return[s,void 0];let i=yield kt(a);return[s,Array.isArray(i)?i.join(","):i]})));return Object.fromEntries(t.filter(([s,a])=>a!==void 0))})}function Ns(r){return E(this,null,function*(){if(!r)return{};let e=Object.entries(r),t=yield Promise.all(e.map(o=>E(this,[o],function*([s,a]){return[s,yield kt(a)]})));return Object.fromEntries(t)})}function Ze(r){let e=new URL(r.origin+r.pathname);for(let[t,s]of r.searchParams)gt.includes(t)||e.searchParams.set(t,s);return e.searchParams.sort(),e.toString()}var he,le,ue,X,j,U,A,I,N,V,w,ee,C,M,Y,B,de,k,te,F,fe,W,pe,Ce,K,q,me,se,ge,ke,Ue,Q,et,Ee,tt,st,Oe,f,xt,Me,ve,Pt,ns,Tt,Xe,as,is,os,wt,Mt,cs,hs,vt,Ct,ls,us,_t=class{constructor(e){d(this,f);d(this,he,null);d(this,le);d(this,ue);d(this,X);d(this,j,new Map);d(this,U,!1);d(this,A,"active");d(this,I);d(this,N);d(this,V);d(this,w,!1);d(this,ee,!0);d(this,C,!1);d(this,M);d(this,Y);d(this,B);d(this,de);d(this,k);d(this,te,!1);d(this,F);d(this,fe);d(this,W);d(this,pe,Promise.resolve([]));d(this,Ce,new Je);d(this,K,0);d(this,q);d(this,me);d(this,se);d(this,ge);d(this,ke);d(this,Ue,1e3);d(this,Q,0);d(this,et,3);d(this,Ee,!1);d(this,tt,100);d(this,st,5e3);d(this,Oe);var i,h,l,m;this.options=y({subscribe:!0},e),Bs(this.options),c(this,I,(i=this.options.offset)!=null?i:"-1"),c(this,N,""),c(this,M,this.options.handle);let t;if(e.columnMapper){let u=g=>{let b={};for(let[_,S]of Object.entries(g)){let P=e.columnMapper.decode(_);b[P]=S}return b};t=e.transformer?g=>e.transformer(u(g)):u}else t=e.transformer;c(this,X,new Ye(e.parser,t)),c(this,de,this.options.onError),c(this,Y,(h=this.options.log)!=null?h:"full");let s=(l=e.fetchClient)!=null?l:(...u)=>fetch(...u),a=re(y({},(m=e.backoffOptions)!=null?m:ze),{onFailedAttempt:()=>{var u,g;c(this,C,!1),(g=(u=e.backoffOptions)==null?void 0:u.onFailedAttempt)==null||g.call(u)}}),o=Xt(s,a);c(this,ue,ss(ts(o))),c(this,le,es(n(this,ue))),p(this,f,ls).call(this)}get shapeHandle(){return n(this,M)}get error(){return n(this,he)}get isUpToDate(){return n(this,w)}get lastOffset(){return n(this,I)}get mode(){return n(this,Y)}subscribe(e,t=()=>{}){let s=Math.random();return n(this,j).set(s,[e,t]),n(this,U)||p(this,f,Me).call(this),()=>{n(this,j).delete(s)}}unsubscribeAll(){var e;n(this,j).clear(),(e=n(this,Oe))==null||e.call(this)}lastSyncedAt(){return n(this,V)}lastSynced(){return n(this,V)===void 0?1/0:Date.now()-n(this,V)}isConnected(){return n(this,C)}isLoading(){return!n(this,w)}hasStarted(){return n(this,U)}isPaused(){return n(this,A)==="paused"}forceDisconnectAndRefresh(){return E(this,null,function*(){var e,t;c(this,te,!0),n(this,w)&&!((e=n(this,k))!=null&&e.signal.aborted)&&((t=n(this,k))==null||t.abort(ft)),yield p(this,f,cs).call(this),c(this,te,!1)})}requestSnapshot(e){return E(this,null,function*(){if(n(this,Y)==="full")throw new Error(`Snapshot requests are not supported in ${n(this,Y)} mode, as the consumer is guaranteed to observe all data`);n(this,U)||(yield p(this,f,Me).call(this)),yield p(this,f,hs).call(this),Ie(this,K)._++;try{n(this,K)===1&&p(this,f,wt).call(this);let{metadata:t,data:s}=yield this.fetchSnapshot(e),a=s.concat([{headers:y({control:"snapshot-end"},t)}]);return n(this,Ce).addSnapshot(t,new Set(s.map(o=>o.key))),p(this,f,Xe).call(this,a,!1),{metadata:t,data:s}}finally{Ie(this,K)._--,n(this,K)===0&&p(this,f,Mt).call(this)}})}fetchSnapshot(e){return E(this,null,function*(){var m;let{fetchUrl:t,requestHeaders:s}=yield p(this,f,Pt).call(this,this.options.url,!0,e),a=yield n(this,le).call(this,t.toString(),{headers:s});if(!a.ok)throw new x(a.status,void 0,void 0,Object.fromEntries([...a.headers.entries()]),t.toString());let o=(m=n(this,B))!=null?m:rs(a.headers,{required:!0,url:t.toString()}),{metadata:i,data:h}=yield a.json(),l=n(this,X).parseSnapshotData(h,o);return{metadata:i,data:l}})}};he=new WeakMap,le=new WeakMap,ue=new WeakMap,X=new WeakMap,j=new WeakMap,U=new WeakMap,A=new WeakMap,I=new WeakMap,N=new WeakMap,V=new WeakMap,w=new WeakMap,ee=new WeakMap,C=new WeakMap,M=new WeakMap,Y=new WeakMap,B=new WeakMap,de=new WeakMap,k=new WeakMap,te=new WeakMap,F=new WeakMap,fe=new WeakMap,W=new WeakMap,pe=new WeakMap,Ce=new WeakMap,K=new WeakMap,q=new WeakMap,me=new WeakMap,se=new WeakMap,ge=new WeakMap,ke=new WeakMap,Ue=new WeakMap,Q=new WeakMap,et=new WeakMap,Ee=new WeakMap,tt=new WeakMap,st=new WeakMap,Oe=new WeakMap,f=new WeakSet,xt=function(){return n(this,se)!==void 0},Me=function(){return E(this,null,function*(){var e,t,s,a,o;c(this,U,!0);try{yield p(this,f,ve).call(this)}catch(i){if(c(this,he,i),n(this,de)){let h=yield n(this,de).call(this,i);if(h&&typeof h=="object"){h.params&&(this.options.params=y(y({},(e=this.options.params)!=null?e:{}),h.params)),h.headers&&(this.options.headers=y(y({},(t=this.options.headers)!=null?t:{}),h.headers)),c(this,he,null),c(this,U,!1),yield p(this,f,Me).call(this);return}i instanceof Error&&p(this,f,Ct).call(this,i),c(this,C,!1),(s=n(this,W))==null||s.call(this);return}throw i instanceof Error&&p(this,f,Ct).call(this,i),c(this,C,!1),(a=n(this,W))==null||a.call(this),i}c(this,C,!1),(o=n(this,W))==null||o.call(this)})},ve=function(){return E(this,null,function*(){var l,m;if(n(this,A)==="pause-requested"){c(this,A,"paused");return}if(!this.options.subscribe&&((l=this.options.signal)!=null&&l.aborted||n(this,w)))return;let e=n(this,A)==="paused";c(this,A,"active");let{url:t,signal:s}=this.options,{fetchUrl:a,requestHeaders:o}=yield p(this,f,Pt).call(this,t,e),i=yield p(this,f,ns).call(this,s),h=n(this,k);try{yield p(this,f,as).call(this,{fetchUrl:a,requestAbortController:h,headers:o,resumingFromPause:e})}catch(u){if((u instanceof x||u instanceof O)&&h.signal.aborted&&h.signal.reason===ft)return p(this,f,ve).call(this);if(u instanceof O){let g=n(this,A);h.signal.aborted&&h.signal.reason===pt&&g==="pause-requested"&&c(this,A,"paused");return}if(!(u instanceof x))throw u;if(u.status==409){if(n(this,M)){let b=Ze(a);Rt.markExpired(b,n(this,M))}let g=u.headers[Re]||`${n(this,M)}-next`;return p(this,f,us).call(this,g),yield p(this,f,vt).call(this,Array.isArray(u.json)?u.json:[u.json]),p(this,f,ve).call(this)}else throw u}finally{i&&s&&s.removeEventListener("abort",i),c(this,k,void 0)}return(m=n(this,fe))==null||m.call(this),p(this,f,ve).call(this)})},Pt=function(e,t,s){return E(this,null,function*(){var u,g,b,_;let[a,o]=yield Promise.all([Ns(this.options.headers),this.options.params?Is(Fs(this.options.params)):void 0]);o&&ds(o);let i=new URL(e);if(o){if(o.table&&v(i,$t,o.table),o.where&&typeof o.where=="string"){let P=We(o.where,(u=this.options.columnMapper)==null?void 0:u.encode);v(i,Gt,P)}if(o.columns){let P=yield kt((g=this.options.params)==null?void 0:g.columns);if(Array.isArray(P)){let J=P.map(String);this.options.columnMapper&&(J=J.map(this.options.columnMapper.encode));let De=J.map(jt).join(",");v(i,lt,De)}else v(i,lt,o.columns)}o.replica&&v(i,zt,o.replica),o.params&&v(i,Jt,o.params);let S=y({},o);delete S.table,delete S.where,delete S.columns,delete S.replica,delete S.params;for(let[P,J]of Object.entries(S))v(i,P,J)}if(s){if(s.where&&typeof s.where=="string"){let S=We(s.where,(b=this.options.columnMapper)==null?void 0:b.encode);v(i,be,S)}if(s.params&&i.searchParams.set(Pe,JSON.stringify(s.params)),s.limit&&v(i,Ae,s.limit),s.offset&&v(i,_e,s.offset),s.orderBy&&typeof s.orderBy=="string"){let S=We(s.orderBy,(_=this.options.columnMapper)==null?void 0:_.encode);v(i,xe,S)}}i.searchParams.set(oe,n(this,I)),i.searchParams.set(mt,n(this,Y));let h=s!==void 0;n(this,w)&&!h&&(!n(this,te)&&!t&&i.searchParams.set(L,"true"),i.searchParams.set($e,n(this,N))),n(this,M)&&i.searchParams.set(ie,n(this,M));let l=Ze(i),m=Rt.getExpiredHandle(l);return m&&i.searchParams.set(ut,m),i.searchParams.sort(),{fetchUrl:i,requestHeaders:a}})},ns=function(e){return E(this,null,function*(){var t;if(c(this,k,new AbortController),e){let s=()=>{var a;(a=n(this,k))==null||a.abort(e.reason)};return e.addEventListener("abort",s,{once:!0}),e.aborted&&((t=n(this,k))==null||t.abort(e.reason)),s}})},Tt=function(e){return E(this,null,function*(){var h;let{headers:t,status:s}=e,a=t.get(Re);a&&c(this,M,a);let o=t.get(Qe);o&&c(this,I,o);let i=t.get(Kt);i&&c(this,N,i),c(this,B,(h=n(this,B))!=null?h:rs(t)),s===204&&c(this,V,Date.now())})},Xe=function(e,t=!1){return E(this,null,function*(){var s;if(e.length>0){c(this,ee,!0);let a=e[e.length-1];if(ot(a)){if(t){let i=Wt(a);i&&c(this,I,i)}if(c(this,V,Date.now()),c(this,w,!0),c(this,ee,!1),(s=n(this,me))==null||s.call(this),n(this,f,xt)&&!t&&n(this,N)===n(this,se))return;if(c(this,se,void 0),n(this,ge)){let i=Ze(n(this,ge));At.recordUpToDate(i,n(this,N))}}let o=e.filter(i=>ae(i)?!n(this,Ce).shouldRejectMessage(i):!0);yield p(this,f,vt).call(this,o)}})},as=function(e){return E(this,null,function*(){var s;if(c(this,ge,e.fetchUrl),!n(this,w)&&!n(this,f,xt)){let a=Ze(e.fetchUrl),o=At.shouldEnterReplayMode(a);o&&c(this,se,o)}let t=(s=this.options.liveSse)!=null?s:this.options.experimentalLiveSse;return n(this,w)&&t&&!n(this,te)&&!e.resumingFromPause&&!n(this,Ee)?(e.fetchUrl.searchParams.set(Zt,"true"),e.fetchUrl.searchParams.set(dt,"true"),p(this,f,os).call(this,e)):p(this,f,is).call(this,e)})},is=function(e){return E(this,null,function*(){let{fetchUrl:t,requestAbortController:s,headers:a}=e,o=yield n(this,le).call(this,t.toString(),{signal:s.signal,headers:a});c(this,C,!0),yield p(this,f,Tt).call(this,o);let i=n(this,B),l=(yield o.text())||"[]",m=n(this,X).parse(l,i);yield p(this,f,Xe).call(this,m)})},os=function(e){return E(this,null,function*(){let{fetchUrl:t,requestAbortController:s,headers:a}=e,o=n(this,ue);c(this,ke,Date.now());let i=re(y({},a),{Accept:"text/event-stream"});try{let h=[];yield Ds(t.toString(),{headers:i,fetch:o,onopen:l=>E(this,null,function*(){c(this,C,!0),yield p(this,f,Tt).call(this,l)}),onmessage:l=>{if(l.data){let m=n(this,B),u=n(this,X).parse(l.data,m);h.push(u),ot(u)&&(p(this,f,Xe).call(this,h,!0),h=[])}},onerror:l=>{throw l},signal:s.signal})}catch(h){throw s.signal.aborted?new O:h}finally{let h=Date.now()-n(this,ke),l=s.signal.aborted;if(h<n(this,Ue)&&!l)if(Ie(this,Q)._++,n(this,Q)>=n(this,et))c(this,Ee,!0),console.warn("[Electric] SSE connections are closing immediately (possibly due to proxy buffering or misconfiguration). Falling back to long polling. Your proxy must support streaming SSE responses (not buffer the complete response). Configuration: Nginx add 'X-Accel-Buffering: no', Caddy add 'flush_interval -1' to reverse_proxy. Note: Do NOT disable caching entirely - Electric uses cache headers to enable request collapsing for efficiency.");else{let m=Math.min(n(this,st),n(this,tt)*Math.pow(2,n(this,Q))),u=Math.floor(Math.random()*m);yield new Promise(g=>setTimeout(g,u))}else h>=n(this,Ue)&&c(this,Q,0)}})},wt=function(){var e;n(this,U)&&n(this,A)==="active"&&(c(this,A,"pause-requested"),(e=n(this,k))==null||e.abort(pt))},Mt=function(){n(this,U)&&(n(this,A)==="paused"||n(this,A)==="pause-requested")&&(n(this,A)==="pause-requested"&&c(this,A,"active"),p(this,f,Me).call(this))},cs=function(){return E(this,null,function*(){return n(this,F)?n(this,F):(c(this,F,new Promise((e,t)=>{c(this,fe,e),c(this,W,t)})),n(this,F).finally(()=>{c(this,F,void 0),c(this,fe,void 0),c(this,W,void 0)}),n(this,F))})},hs=function(){return E(this,null,function*(){if(n(this,ee))return n(this,q)?n(this,q):(c(this,q,new Promise(e=>{c(this,me,e)})),n(this,q).finally(()=>{c(this,q,void 0),c(this,me,void 0)}),n(this,q))})},vt=function(e){return E(this,null,function*(){return c(this,pe,n(this,pe).then(()=>Promise.all(Array.from(n(this,j).values()).map(a=>E(this,[a],function*([t,s]){try{yield t(e)}catch(o){queueMicrotask(()=>{throw o})}}))))),n(this,pe)})},Ct=function(e){n(this,j).forEach(([t,s])=>{s==null||s(e)})},ls=function(){if(typeof document=="object"&&typeof document.hidden=="boolean"&&typeof document.addEventListener=="function"){let e=()=>{document.hidden?p(this,f,wt).call(this):p(this,f,Mt).call(this)};document.addEventListener("visibilitychange",e),c(this,Oe,()=>{document.removeEventListener("visibilitychange",e)})}},us=function(e){c(this,I,"-1"),c(this,N,""),c(this,M,e),c(this,w,!1),c(this,ee,!0),c(this,C,!1),c(this,B,void 0),c(this,K,0),c(this,Q,0),c(this,Ee,!1)},_t.Replica={FULL:"full",DEFAULT:"default"};function rs(r,e){let t=r.get(ht);if(!t){if(e!=null&&e.required&&(e!=null&&e.url))throw new ne(e.url,[ht]);return{}}return JSON.parse(t)}function ds(r){if(!r)return;let e=Object.keys(r).filter(t=>Hs.has(t));if(e.length>0)throw new qe(e)}function Bs(r){if(!r.url)throw new Ne;if(r.signal&&!(r.signal instanceof AbortSignal))throw new Be;if(r.offset!==void 0&&r.offset!=="-1"&&r.offset!=="now"&&!r.handle)throw new Fe;ds(r.params)}function v(r,e,t){if(!(t===void 0||t==null))if(typeof t=="string")r.searchParams.set(e,t);else if(typeof t=="object")for(let[s,a]of Object.entries(t))r.searchParams.set(`${e}[${s}]`,a);else r.searchParams.set(e,t.toString())}function Fs(r){return Array.isArray(r.params)?re(y({},r),{params:Object.fromEntries(r.params.map((e,t)=>[t+1,e]))}):r}var T,$,G,Le,Se,ye,z,R,ps,ms,Ut,rt,gs,Ot,fs=class{constructor(e){d(this,R);d(this,T,new Map);d(this,$,new Map);d(this,G,new Set);d(this,Le,new Set);d(this,Se,!1);d(this,ye,"syncing");d(this,z,!1);this.stream=e,this.stream.subscribe(p(this,R,ps).bind(this),p(this,R,gs).bind(this))}get isUpToDate(){return n(this,ye)==="up-to-date"}get lastOffset(){return this.stream.lastOffset}get handle(){return this.stream.shapeHandle}get rows(){return this.value.then(e=>Array.from(e.values()))}get currentRows(){return Array.from(this.currentValue.values())}get value(){return new Promise((e,t)=>{if(this.stream.isUpToDate)e(this.currentValue);else{let s=this.subscribe(({value:a})=>{s(),n(this,z)&&t(n(this,z)),e(a)})}})}get currentValue(){return n(this,T)}get error(){return n(this,z)}lastSyncedAt(){return this.stream.lastSyncedAt()}lastSynced(){return this.stream.lastSynced()}isLoading(){return this.stream.isLoading()}isConnected(){return this.stream.isConnected()}get mode(){return this.stream.mode}requestSnapshot(e){return E(this,null,function*(){let t=JSON.stringify(e);n(this,Le).add(t),yield p(this,R,Ut).call(this),yield this.stream.requestSnapshot(e)})}subscribe(e){let t=Math.random();return n(this,$).set(t,e),()=>{n(this,$).delete(t)}}unsubscribeAll(){n(this,$).clear()}get numSubscribers(){return n(this,$).size}};T=new WeakMap,$=new WeakMap,G=new WeakMap,Le=new WeakMap,Se=new WeakMap,ye=new WeakMap,z=new WeakMap,R=new WeakSet,ps=function(e){let t=!1;e.forEach(s=>{if(ae(s))if(t=p(this,R,rt).call(this,"syncing"),this.mode==="full")switch(s.headers.operation){case"insert":n(this,T).set(s.key,s.value);break;case"update":n(this,T).set(s.key,y(y({},n(this,T).get(s.key)),s.value));break;case"delete":n(this,T).delete(s.key);break}else switch(s.headers.operation){case"insert":n(this,G).add(s.key),n(this,T).set(s.key,s.value);break;case"update":n(this,G).has(s.key)&&n(this,T).set(s.key,y(y({},n(this,T).get(s.key)),s.value));break;case"delete":n(this,G).has(s.key)&&(n(this,T).delete(s.key),n(this,G).delete(s.key));break}if(Ke(s))switch(s.headers.control){case"up-to-date":t=p(this,R,rt).call(this,"up-to-date"),n(this,Se)&&(c(this,Se,!1),p(this,R,ms).call(this));break;case"must-refetch":n(this,T).clear(),n(this,G).clear(),c(this,z,!1),t=p(this,R,rt).call(this,"syncing"),c(this,Se,!0);break}}),t&&p(this,R,Ot).call(this)},ms=function(){return E(this,null,function*(){yield p(this,R,Ut).call(this),yield Promise.all(Array.from(n(this,Le)).map(e=>E(this,null,function*(){try{let t=JSON.parse(e);yield this.stream.requestSnapshot(t)}catch(t){}})))})},Ut=function(){return E(this,null,function*(){this.stream.isUpToDate||(yield new Promise(e=>{let t=()=>{this.stream.isUpToDate&&(clearInterval(s),a(),e())},s=setInterval(t,10),a=this.stream.subscribe(()=>t(),()=>t());t()}))})},rt=function(e){let t=n(this,ye)!==e;return c(this,ye,e),t&&e==="up-to-date"},gs=function(e){e instanceof x&&(c(this,z,e),p(this,R,Ot).call(this))},Ot=function(){n(this,$).forEach(e=>{e({value:this.currentValue,rows:this.currentRows})})};export{ze as BackoffDefaults,gt as ELECTRIC_PROTOCOL_QUERY_PARAMS,x as FetchError,fs as Shape,_t as ShapeStream,Vt as camelToSnake,Yt as createColumnMapper,ae as isChangeMessage,Ke as isControlMessage,ct as isVisibleInSnapshot,kt as resolveValue,Ps as snakeCamelMapper,it as snakeToCamel};
|
|
6
6
|
//# sourceMappingURL=index.browser.mjs.map
|