just-git 1.1.11 → 1.2.3

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.
@@ -1,28 +1,34 @@
1
- var G=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});function D(r){return r!=null&&typeof r=="object"&&"reject"in r&&r.reject===!0}var J="0000000000000000000000000000000000000000",je=(()=>{let r=new Array(256);for(let e=0;e<256;e++)r[e]=(e>>4).toString(16)+(e&15).toString(16);return r})();function F(r){let e="";for(let t=0;t<20;t++)e+=je[r[t]];return e}function ke(r,e){let t="";for(let n=0;n<20;n++)t+=je[r[e+n]];return t}function q(r){let e=new Uint8Array(20);for(let t=0;t<20;t++)e[t]=parseInt(r.slice(t*2,t*2+2),16);return e}var st=new TextEncoder;function Q(r){return typeof r=="string"?st.encode(r):r}function ot(){if(typeof globalThis.Bun<"u")return()=>{let r=new Bun.CryptoHasher("sha1"),e={update(t){return r.update(Q(t)),e},hex:()=>Promise.resolve(r.digest("hex"))};return e};try{let r=G(["node","crypto"].join(":"));if(typeof r.createHash=="function")return()=>{let e=r.createHash("sha1"),t={update(n){return e.update(Q(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let r=[],e={update(t){return r.push(Q(t)),e},async hex(){let t=0;for(let i of r)t+=i.byteLength;let n=new Uint8Array(t),s=0;for(let i of r)n.set(i,s),s+=i.byteLength;let a=await crypto.subtle.digest("SHA-1",n);return F(new Uint8Array(a))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var Ee=ot(),z=Ee;async function v(r){return Ee().update(r).hex()}var at=new Set(["tree","commit","tag"]),I=class{map=new Map;currentBytes=0;maxBytes;constructor(e=16*1024*1024){this.maxBytes=e}get(e){return this.map.get(e)}set(e,t){if(!at.has(t.type))return;let n=t.content.byteLength;if(!(n>this.maxBytes/2)&&!this.map.has(e)){for(;this.currentBytes+n>this.maxBytes&&this.map.size>0;){let s=this.map.keys().next().value;this.currentBytes-=this.map.get(s).content.byteLength,this.map.delete(s)}this.map.set(e,t),this.currentBytes+=n}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}};async function it(){let r;try{r=G(["node","zlib"].join(":"))}catch{try{r=await import(["node","zlib"].join(":"))}catch{}}if(r&&typeof r.deflateSync=="function"&&typeof r.inflateSync=="function"){let e;try{let t=r.inflateSync(r.deflateSync(Buffer.from("x")),{info:!0});t?.engine&&typeof t.engine.bytesWritten=="number"&&(e=n=>{let s=r.inflateSync(n,{info:!0});return{result:new Uint8Array(s.buffer),bytesConsumed:s.engine.bytesWritten}})}catch{}return{deflateSync:t=>new Uint8Array(r.deflateSync(t)),inflateSync:t=>new Uint8Array(r.inflateSync(t)),inflateWithConsumed:e}}if(typeof globalThis.CompressionStream=="function"&&typeof globalThis.DecompressionStream=="function")return{async deflateSync(e){let t=new CompressionStream("deflate"),n=t.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())},async inflateSync(e){let t=new DecompressionStream("deflate"),n=t.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())}};throw new Error("No zlib implementation available. Requires Bun, Node.js, Deno, or a browser with CompressionStream.")}var ct=null;function ve(){return ct??=it()}async function K(r){return await(await ve()).deflateSync(r)}async function Ie(r,e){let t=await ve();if(t.inflateWithConsumed){let{result:i,bytesConsumed:o}=t.inflateWithConsumed(r);if(i.byteLength!==e)throw new Error(`Inflate size mismatch: got ${i.byteLength}, expected ${e}`);return{result:i,bytesConsumed:o}}let n=await t.inflateSync(r);if(n.byteLength!==e)throw new Error(`Inflate size mismatch: got ${n.byteLength}, expected ${e}`);let s=2,a=r.byteLength;for(;s<a;){let i=s+a>>>1;try{(await t.inflateSync(r.subarray(0,i))).byteLength===e?a=i:s=i+1}catch{s=i+1}}return{result:n,bytesConsumed:s}}var X=1346454347,re=2,Te=1,Ue=2,Ce=3,Le=4,N=6,ne=7,ft={[Te]:"commit",[Ue]:"tree",[Ce]:"blob",[Le]:"tag"},He={commit:Te,tree:Ue,blob:Ce,tag:Le};async function A(r,e){let t=new DataView(r.buffer,r.byteOffset,r.byteLength),n=t.getUint32(0);if(n!==X)throw new Error(`Invalid pack signature: 0x${n.toString(16)} (expected 0x${X.toString(16)})`);let s=t.getUint32(4);if(s!==re)throw new Error(`Unsupported pack version: ${s}`);let a=t.getUint32(8),i=[],o=12;for(let c=0;c<a;c++){let d=await dt(r,o);i.push(d),o=d.nextOffset}return(await lt(i,e)).map((c,d)=>({...c,offset:i[d].headerOffset,nextOffset:i[d].nextOffset}))}async function dt(r,e){let t=e,n=r[e++],s=n>>4&7,a=n&15,i=4;for(;n&128;)n=r[e++],a|=(n&127)<<i,i+=7;let o,f;if(s===N){let y=r[e++];for(o=y&127;y&128;)o+=1,y=r[e++],o=(o<<7)+(y&127);o=t-o}else s===ne&&(f=ke(r,e),e+=20);let{result:c,bytesConsumed:d}=await Ie(r.subarray(e),a);return{headerOffset:t,typeNum:s,inflated:c,baseOffset:o,baseHash:f,nextOffset:e+d}}async function lt(r,e){let t=new Map;for(let a=0;a<r.length;a++)t.set(r[a].headerOffset,a);let n=new Array(r.length).fill(null);async function s(a){let i=n[a];if(i)return i;let o=r[a];if(o.typeNum!==N&&o.typeNum!==ne){let l=ft[o.typeNum];if(!l)throw new Error(`Unknown object type: ${o.typeNum}`);let p={type:l,content:o.inflated,hash:await ee(l,o.inflated)};return n[a]=p,p}if(o.typeNum===N){let l=t.get(o.baseOffset);if(l===void 0)throw new Error(`OFS_DELTA base not found at offset ${o.baseOffset}`);let p=await s(l),u=Ae(p.content,o.inflated),h={type:p.type,content:u,hash:await ee(p.type,u)};return n[a]=h,h}let f=await pt(r,n,o.baseHash,s),c;if(f!==void 0)c=await s(f);else if(e){let l=await e(o.baseHash);l&&(c=l)}if(!c)throw new Error(`REF_DELTA base not found for hash ${o.baseHash}`);let d=Ae(c.content,o.inflated),y={type:c.type,content:d,hash:await ee(c.type,d)};return n[a]=y,y}for(let a=0;a<r.length;a++)await s(a);return n}async function pt(r,e,t,n){for(let s=0;s<e.length;s++)if(e[s]?.hash===t)return s;for(let s=0;s<r.length;s++){let a=r[s];if(a.typeNum!==N&&a.typeNum!==ne&&(await n(s)).hash===t)return s}}function Ae(r,e){let t=0,{value:n,newPos:s}=Se(e,t);if(t=s,n!==r.byteLength)throw new Error(`Delta base size mismatch: expected ${n}, got ${r.byteLength}`);let{value:a,newPos:i}=Se(e,t);t=i;let o=new Uint8Array(a),f=0;for(;t<e.byteLength;){let c=e[t++];if(c&128){let d=0,y=0;c&1&&(d=e[t++]),c&2&&(d|=e[t++]<<8),c&4&&(d|=e[t++]<<16),c&8&&(d|=e[t++]<<24),c&16&&(y=e[t++]),c&32&&(y|=e[t++]<<8),c&64&&(y|=e[t++]<<16),y===0&&(y=65536),o.set(r.subarray(d,d+y),f),f+=y}else if(c>0)o.set(e.subarray(t,t+c),f),f+=c,t+=c;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(f!==a)throw new Error(`Delta produced ${f} bytes, expected ${a}`);return o}async function De(r){let e=[],t=new Map,n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,X),s.setUint32(4,re),s.setUint32(8,r.length),e.push(n);let a=12,i=[];for(let o of r){let f=a;t.set(o.hash,a);let c=o.delta&&o.deltaBaseHash?t.get(o.deltaBaseHash):void 0;if(o.delta&&c!==void 0){let d=te(N,o.delta.byteLength),y=ht(a-c),l=await K(o.delta);e.push(d,y,l),a+=d.byteLength+y.byteLength+l.byteLength}else{let d=He[o.type],y=te(d,o.content.byteLength),l=await K(o.content);e.push(y,l),a+=y.byteLength+l.byteLength}i.push({hash:o.hash,offset:f,nextOffset:a})}return{data:await ut(e),entries:i}}async function*Ne(r,e){let t=z(),n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,X),s.setUint32(4,re),s.setUint32(8,r),t.update(n),yield n;for await(let a of e){let i=He[a.type],o=te(i,a.content.byteLength),f=await K(a.content);t.update(o),t.update(f),yield yt(o,f)}yield q(await t.hex())}async function ut(r){let e=0;for(let i of r)e+=i.byteLength;e+=20;let t=new Uint8Array(e),n=0;for(let i of r)t.set(i,n),n+=i.byteLength;let s=z();s.update(t.subarray(0,n));let a=await s.hex();return t.set(q(a),n),t}function ht(r){let e=[];e.push(r&127);let t=r>>>7;for(;t>0;)e.unshift(128|--t&127),t>>>=7;return new Uint8Array(e)}function te(r,e){let t=[],n=r<<4|e&15;for(e>>=4;e>0;)t.push(n|128),n=e&127,e>>=7;return t.push(n),new Uint8Array(t)}function Se(r,e){let t=0,n=0,s;do s=r[e++],t|=(s&127)<<n,n+=7;while(s&128);return{value:t,newPos:e}}function yt(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(r,0),t.set(e,r.byteLength),t}var bt=new TextEncoder;async function ee(r,e){let t=bt.encode(`${r} ${e.byteLength}\0`),n=z();return n.update(t),n.update(e),n.hex()}var mt=new TextEncoder,sr=new TextDecoder;function S(r,e){let t=mt.encode(`${r} ${e.byteLength}\0`),n=new Uint8Array(t.byteLength+e.byteLength);return n.set(t),n.set(e,t.byteLength),n}function B(r){let e=r.indexOf("<"),t=r.indexOf(">");if(e===-1||t===-1)throw new Error(`Malformed identity line: "${r}"`);let n=r.slice(0,e).trimEnd(),s=r.slice(e+1,t),a=r.slice(t+2),[i="0",o="+0000"]=a.split(" "),f=parseInt(i,10);return{name:n,email:s,timestamp:f,timezone:o}}var cr=new TextEncoder,gt=new TextDecoder;function $(r){let e=gt.decode(r),t=e.indexOf(`
1
+ var ie=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});function Y(r){return r!=null&&typeof r=="object"&&"reject"in r&&r.reject===!0}var me="0000000000000000000000000000000000000000",Ze=(()=>{let r=new Array(256);for(let e=0;e<256;e++)r[e]=(e>>4).toString(16)+(e&15).toString(16);return r})();function ce(r){let e="";for(let t=0;t<20;t++)e+=Ze[r[t]];return e}function Je(r,e){let t="";for(let s=0;s<20;s++)t+=Ze[r[e+s]];return t}function fe(r){let e=new Uint8Array(20);for(let t=0;t<20;t++)e[t]=parseInt(r.slice(t*2,t*2+2),16);return e}var Gt=new TextEncoder;function xe(r){return typeof r=="string"?Gt.encode(r):r}function Ft(){if(typeof globalThis.Bun<"u")return()=>{let r=new Bun.CryptoHasher("sha1"),e={update(t){return r.update(xe(t)),e},hex:()=>Promise.resolve(r.digest("hex"))};return e};try{let r=ie(["node","crypto"].join(":"));if(typeof r.createHash=="function")return()=>{let e=r.createHash("sha1"),t={update(s){return e.update(xe(s)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let r=[],e={update(t){return r.push(xe(t)),e},async hex(){let t=0;for(let i of r)t+=i.byteLength;let s=new Uint8Array(t),n=0;for(let i of r)s.set(i,n),n+=i.byteLength;let o=await crypto.subtle.digest("SHA-1",s);return ce(new Uint8Array(o))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var Qe=Ft(),le=Qe;async function D(r){return Qe().update(r).hex()}var qt=new Set(["tree","commit","tag"]),N=class{map=new Map;currentBytes=0;maxBytes;constructor(e=16*1024*1024){this.maxBytes=e}get(e){return this.map.get(e)}set(e,t){if(!qt.has(t.type))return;let s=t.content.byteLength;if(!(s>this.maxBytes/2)&&!this.map.has(e)){for(;this.currentBytes+s>this.maxBytes&&this.map.size>0;){let n=this.map.keys().next().value;this.currentBytes-=this.map.get(n).content.byteLength,this.map.delete(n)}this.map.set(e,t),this.currentBytes+=s}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}};var A=Uint8Array,F=Uint16Array,zt=Int32Array,et=new A([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),tt=new A([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Xt=new A([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rt=(r,e)=>{let t=new F(31);for(let n=0;n<31;++n)t[n]=e+=1<<r[n-1];let s=new zt(t[30]);for(let n=1;n<30;++n)for(let o=t[n];o<t[n+1];++o)s[o]=o-t[n]<<5|n;return{b:t,r:s}},{b:nt}=rt(et,2);nt[28]=258;var{b:Kt}=rt(tt,0),Re=new F(32768);for(let r=0;r<32768;++r){let e=(r&43690)>>1|(r&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,Re[r]=((e&65280)>>8|(e&255)<<8)>>1}var V=(r,e,t)=>{let s=r.length,n=0,o=new F(e);for(;n<s;++n)r[n]&&++o[r[n]-1];let i=new F(e);for(n=1;n<e;++n)i[n]=i[n-1]+o[n-1]<<1;let a;if(t){a=new F(1<<e);let f=15-e;for(n=0;n<s;++n)if(r[n]){let c=n<<4|r[n],l=e-r[n],d=i[r[n]-1]++<<l;for(let p=d|(1<<l)-1;d<=p;++d)a[Re[d]>>f]=c}}else for(a=new F(s),n=0;n<s;++n)r[n]&&(a[n]=Re[i[r[n]-1]++]>>15-r[n]);return a},Z=new A(288);for(let r=0;r<144;++r)Z[r]=8;for(let r=144;r<256;++r)Z[r]=9;for(let r=256;r<280;++r)Z[r]=7;for(let r=280;r<288;++r)Z[r]=8;var st=new A(32);for(let r=0;r<32;++r)st[r]=5;var Yt=V(Z,9,1),Vt=V(st,5,1),ge=r=>{let e=r[0];for(let t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},v=(r,e,t)=>{let s=e/8|0;return(r[s]|r[s+1]<<8)>>(e&7)&t},we=(r,e)=>{let t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},ot=r=>(r+7)/8|0,Zt=(r,e,t)=>((e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new A(r.subarray(e,t))),T=(r,e)=>{let t=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||t[r]||"unknown inflate error")},at=(r,e,t,s)=>{let n=r.length,o=s?s.length:0;if(!n||e.f&&!e.l)return t||new A(0);let i=!t,a=i||e.i!=2,f=e.i;i&&(t=new A(n*3));let c=b=>{let w=t.length;if(b>w){let R=new A(Math.max(w*2,b));R.set(t),t=R}},l=e.f||0,d=e.p||0,p=e.b||0,u=e.l,h=e.d,y=e.m,m=e.n,O=n*8;do{if(!u){l=v(r,d,1);let x=v(r,d+1,3);if(d+=3,x)if(x==1)u=Yt,h=Vt,y=9,m=5;else if(x==2){let g=v(r,d,31)+257,P=v(r,d+10,15)+4,I=g+v(r,d+5,31)+1;d+=14;let C=new A(I),L=new A(19);for(let H=0;H<P;++H)L[Xt[H]]=v(r,d+H*3,7);d+=P*3;let X=ge(L),S=(1<<X)-1,G=V(L,X,1);for(let H=0;H<I;){let Ye=G[v(r,d,S)];d+=Ye&15;let K=Ye>>4;if(K<16)C[H++]=K;else{let Ve=0,ae=0;for(K==16?(ae=3+v(r,d,3),d+=2,Ve=C[H-1]):K==17?(ae=3+v(r,d,7),d+=3):K==18&&(ae=11+v(r,d,127),d+=7);ae--;)C[H++]=Ve}}let Xe=C.subarray(0,g),Ke=C.subarray(g);y=ge(Xe),m=ge(Ke),u=V(Xe,y,1),h=V(Ke,m,1)}else T(1);else{let g=ot(d)+4,P=r[g-4]|r[g-3]<<8,I=g+P;if(I>n){f&&T(0);break}a&&c(p+P),t.set(r.subarray(g,I),p),e.b=p+=P,e.p=d=I*8,e.f=l;continue}if(d>O){f&&T(0);break}}a&&c(p+131072);let b=(1<<y)-1,w=(1<<m)-1,R=d;for(;;R=d){let x=u[we(r,d)&b],g=x>>4;if(d+=x&15,d>O){f&&T(0);break}if(x||T(2),g<256)t[p++]=g;else if(g==256){R=d,u=null;break}else{let P=g-254;if(g>264){let S=g-257,G=et[S];P=v(r,d,(1<<G)-1)+nt[S],d+=G}let I=h[we(r,d)&w],C=I>>4;I||T(3),d+=I&15;let L=Kt[C];if(C>3){let S=tt[C];L+=we(r,d)&(1<<S)-1,d+=S}if(d>O){f&&T(0);break}a&&c(p+131072);let X=p+P;if(p<L){let S=o-L,G=Math.min(L,X);for(S+p<0&&T(3);p<G;++p)t[p]=s[S+p]}for(;p<X;++p)t[p]=t[p-L]}}e.l=u,e.p=R,e.b=p,e.f=l,u&&(l=1,e.m=y,e.d=h,e.n=m)}while(!l);return p!=t.length&&i?Zt(t,0,p):t.subarray(0,p)},it=r=>(((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&T(0,"invalid zlib data"),r[1]&32&&T(0,"zlib dictionaries are not supported"),2);function ct(r){let e=it(r);return at(r.subarray(e,-4),{i:2})}function Oe(r){let e=it(r),t={i:2},s=at(r.subarray(e),t),n=ot(t.p);return{result:s,bytesConsumed:e+n+4}}async function Jt(){let r;if(!(typeof document<"u"))try{r=ie(["node","zlib"].join(":"))}catch{try{r=await import(["node","zlib"].join(":"))}catch{}}if(r&&typeof r.deflateSync=="function"&&typeof r.inflateSync=="function"){let s=null;try{let n=r.inflateSync(r.deflateSync(Buffer.from("x")),{info:!0});n?.engine&&typeof n.engine.bytesWritten=="number"&&(s=o=>{let i=r.inflateSync(o,{info:!0});return{result:new Uint8Array(i.buffer),bytesConsumed:i.engine.bytesWritten}})}catch{}return{deflateSync:n=>new Uint8Array(r.deflateSync(n)),inflateSync:n=>new Uint8Array(r.inflateSync(n)),inflateWithConsumed:s??Oe}}let t;return typeof globalThis.CompressionStream=="function"?t=async s=>{let n=new CompressionStream("deflate"),o=n.writable.getWriter();return o.write(s),o.close(),new Uint8Array(await new Response(n.readable).arrayBuffer())}:t=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:t,inflateSync:ct,inflateWithConsumed:Oe}}var Qt=null;function ft(){return Qt??=Jt()}async function de(r){return await(await ft()).deflateSync(r)}async function lt(r,e){let t=await ft(),{result:s,bytesConsumed:n}=t.inflateWithConsumed(r);if(s.byteLength!==e)throw new Error(`Inflate size mismatch: got ${s.byteLength}, expected ${e}`);return{result:s,bytesConsumed:n}}var pe=1346454347,Ee=2,ut=1,ht=2,yt=3,bt=4,J=6,Ie=7,er={[ut]:"commit",[ht]:"tree",[yt]:"blob",[bt]:"tag"},mt={commit:ut,tree:ht,blob:yt,tag:bt};async function B(r,e){let t=new DataView(r.buffer,r.byteOffset,r.byteLength),s=t.getUint32(0);if(s!==pe)throw new Error(`Invalid pack signature: 0x${s.toString(16)} (expected 0x${pe.toString(16)})`);let n=t.getUint32(4);if(n!==Ee)throw new Error(`Unsupported pack version: ${n}`);let o=t.getUint32(8),i=[],a=12;for(let c=0;c<o;c++){let l=await tr(r,a);i.push(l),a=l.nextOffset}return(await rr(i,e)).map((c,l)=>({...c,offset:i[l].headerOffset,nextOffset:i[l].nextOffset}))}async function tr(r,e){let t=e,s=r[e++],n=s>>4&7,o=s&15,i=4;for(;s&128;)s=r[e++],o|=(s&127)<<i,i+=7;let a,f;if(n===J){let d=r[e++];for(a=d&127;d&128;)a+=1,d=r[e++],a=(a<<7)+(d&127);a=t-a}else n===Ie&&(f=Je(r,e),e+=20);let{result:c,bytesConsumed:l}=await lt(r.subarray(e),o);return{headerOffset:t,typeNum:n,inflated:c,baseOffset:a,baseHash:f,nextOffset:e+l}}async function rr(r,e){let t=new Map;for(let o=0;o<r.length;o++)t.set(r[o].headerOffset,o);let s=new Array(r.length).fill(null);async function n(o){let i=s[o];if(i)return i;let a=r[o];if(a.typeNum!==J&&a.typeNum!==Ie){let p=er[a.typeNum];if(!p)throw new Error(`Unknown object type: ${a.typeNum}`);let u={type:p,content:a.inflated,hash:await je(p,a.inflated)};return s[o]=u,u}if(a.typeNum===J){let p=t.get(a.baseOffset);if(p===void 0)throw new Error(`OFS_DELTA base not found at offset ${a.baseOffset}`);let u=await n(p),h=dt(u.content,a.inflated),y={type:u.type,content:h,hash:await je(u.type,h)};return s[o]=y,y}let f=await nr(r,s,a.baseHash,n),c;if(f!==void 0)c=await n(f);else if(e){let p=await e(a.baseHash);p&&(c=p)}if(!c)throw new Error(`REF_DELTA base not found for hash ${a.baseHash}`);let l=dt(c.content,a.inflated),d={type:c.type,content:l,hash:await je(c.type,l)};return s[o]=d,d}for(let o=0;o<r.length;o++)await n(o);return s}async function nr(r,e,t,s){for(let n=0;n<e.length;n++)if(e[n]?.hash===t)return n;for(let n=0;n<r.length;n++){let o=r[n];if(o.typeNum!==J&&o.typeNum!==Ie&&(await s(n)).hash===t)return n}}function dt(r,e){let t=0,{value:s,newPos:n}=pt(e,t);if(t=n,s!==r.byteLength)throw new Error(`Delta base size mismatch: expected ${s}, got ${r.byteLength}`);let{value:o,newPos:i}=pt(e,t);t=i;let a=new Uint8Array(o),f=0;for(;t<e.byteLength;){let c=e[t++];if(c&128){let l=0,d=0;c&1&&(l=e[t++]),c&2&&(l|=e[t++]<<8),c&4&&(l|=e[t++]<<16),c&8&&(l|=e[t++]<<24),c&16&&(d=e[t++]),c&32&&(d|=e[t++]<<8),c&64&&(d|=e[t++]<<16),d===0&&(d=65536),a.set(r.subarray(l,l+d),f),f+=d}else if(c>0)a.set(e.subarray(t,t+c),f),f+=c,t+=c;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(f!==o)throw new Error(`Delta produced ${f} bytes, expected ${o}`);return a}async function ue(r){let e=[],t=new Map,s=new Uint8Array(12),n=new DataView(s.buffer);n.setUint32(0,pe),n.setUint32(4,Ee),n.setUint32(8,r.length),e.push(s);let o=12,i=[];for(let a of r){let f=o;t.set(a.hash,o);let c=a.delta&&a.deltaBaseHash?t.get(a.deltaBaseHash):void 0;if(a.delta&&c!==void 0){let l=Pe(J,a.delta.byteLength),d=or(o-c),p=await de(a.delta);e.push(l,d,p),o+=l.byteLength+d.byteLength+p.byteLength}else{let l=mt[a.type],d=Pe(l,a.content.byteLength),p=await de(a.content);e.push(d,p),o+=d.byteLength+p.byteLength}i.push({hash:a.hash,offset:f,nextOffset:o})}return{data:await sr(e),entries:i}}async function*xt(r,e){let t=le(),s=new Uint8Array(12),n=new DataView(s.buffer);n.setUint32(0,pe),n.setUint32(4,Ee),n.setUint32(8,r),t.update(s),yield s;for await(let o of e){let i=mt[o.type],a=Pe(i,o.content.byteLength),f=await de(o.content);t.update(a),t.update(f),yield ar(a,f)}yield fe(await t.hex())}async function sr(r){let e=0;for(let i of r)e+=i.byteLength;e+=20;let t=new Uint8Array(e),s=0;for(let i of r)t.set(i,s),s+=i.byteLength;let n=le();n.update(t.subarray(0,s));let o=await n.hex();return t.set(fe(o),s),t}function or(r){let e=[];e.push(r&127);let t=r>>>7;for(;t>0;)e.unshift(128|--t&127),t>>>=7;return new Uint8Array(e)}function Pe(r,e){let t=[],s=r<<4|e&15;for(e>>=4;e>0;)t.push(s|128),s=e&127,e>>=7;return t.push(s),new Uint8Array(t)}function pt(r,e){let t=0,s=0,n;do n=r[e++],t|=(n&127)<<s,s+=7;while(n&128);return{value:t,newPos:e}}function ar(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(r,0),t.set(e,r.byteLength),t}var ir=new TextEncoder;async function je(r,e){let t=ir.encode(`${r} ${e.byteLength}\0`),s=le();return s.update(t),s.update(e),s.hex()}var cr=new TextEncoder,rn=new TextDecoder;function _(r,e){let t=cr.encode(`${r} ${e.byteLength}\0`),s=new Uint8Array(t.byteLength+e.byteLength);return s.set(t),s.set(e,t.byteLength),s}function Q(r){let e=r.indexOf("<"),t=r.indexOf(">");if(e===-1||t===-1)throw new Error(`Malformed identity line: "${r}"`);let s=r.slice(0,e).trimEnd(),n=r.slice(e+1,t),o=r.slice(t+2),[i="0",a="+0000"]=o.split(" "),f=parseInt(i,10);return{name:s,email:n,timestamp:f,timezone:a}}var an=new TextEncoder,lr=new TextDecoder;function ee(r){let e=lr.decode(r),t=e.indexOf(`
2
2
 
3
- `),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",i=[],o,f;for(let c of n.split(`
4
- `)){let d=c.indexOf(" ");if(d===-1)continue;let y=c.slice(0,d),l=c.slice(d+1);switch(y){case"tree":a=l;break;case"parent":i.push(l);break;case"author":o=B(l);break;case"committer":f=B(l);break}}if(!a)throw new Error("Commit missing tree field");if(!o)throw new Error("Commit missing author field");if(!f)throw new Error("Commit missing committer field");return{type:"commit",tree:a,parents:i,author:o,committer:f,message:s}}var lr=new TextEncoder,wt=new TextDecoder;function j(r){let e=wt.decode(r),t=e.indexOf(`
3
+ `),s=t===-1?e:e.slice(0,t),n=t===-1?"":e.slice(t+2),o="",i=[],a,f;for(let c of s.split(`
4
+ `)){let l=c.indexOf(" ");if(l===-1)continue;let d=c.slice(0,l),p=c.slice(l+1);switch(d){case"tree":o=p;break;case"parent":i.push(p);break;case"author":a=Q(p);break;case"committer":f=Q(p);break}}if(!o)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!f)throw new Error("Commit missing committer field");return{type:"commit",tree:o,parents:i,author:a,committer:f,message:n}}var ln=new TextEncoder,dr=new TextDecoder;function M(r){let e=dr.decode(r),t=e.indexOf(`
5
5
 
6
- `),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",i="commit",o="",f;for(let c of n.split(`
7
- `)){let d=c.indexOf(" ");if(d===-1)continue;let y=c.slice(0,d),l=c.slice(d+1);switch(y){case"object":a=l;break;case"type":i=l;break;case"tag":o=l;break;case"tagger":f=B(l);break}}if(!a)throw new Error("Tag missing object field");if(!o)throw new Error("Tag missing tag name field");if(!f)throw new Error("Tag missing tagger field");return{type:"tag",object:a,objectType:i,name:o,tagger:f,message:s}}async function _(r,e){return r.objectStore.read(e)}async function Be(r,e){return r.objectStore.exists(e)}var hr=new TextDecoder;async function $e(r,e){let t=await _(r,e);if(t.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${t.type}`);return $(t.content)}function T(r){return typeof r=="string"?{type:"direct",hash:r}:r}var xr=new TextEncoder,_e=new TextDecoder;function se(r){let e=[],t=0;for(;t<r.byteLength;){let n=r.indexOf(32,t);if(n===-1)break;let s=_e.decode(r.subarray(t,n)),a=r.indexOf(0,n+1);if(a===-1)break;let i=_e.decode(r.subarray(n+1,a)),o=r.subarray(a+1,a+21),f=F(o),c=s.padStart(6,"0");e.push({mode:c,name:i,hash:f}),t=a+21}return{type:"tree",entries:e}}async function Me(r,e,t){if(e===t)return!0;let n=new Set,s=[t],a=0;for(;a<s.length;){let i=s[a++];if(i===e)return!0;if(n.has(i))continue;n.add(i);let o=await $e(r,i);for(let f of o.parents)n.has(f)||s.push(f)}return!1}var V=new Uint32Array([0,2874782929,1454598562,4260027763,104818581,2909197124,1351355959,4225088230,209637162,2804382715,1523426952,4053013081,172075199,2702711918,1559413021,4155209164,419274324,3013880453,1313798134,3843506983,516094401,3046853904,1215402083,3811058866,344150398,3218793903,1110456540,3916008461,314324715,3118826042,1141858121,4015451032,838548648,2594343033,1732793610,3423723995,935615293,2627596268,1635201695,3392046670,1032188802,2531018579,1798740512,3228511985,1002083351,2430804166,1829371317,3327150436,688300796,2187269677,2142620510,3572268943,792315241,2220913080,2039131339,3537049626,628649430,2384582919,1942684788,3633492133,591858243,2283716242,1978950625,3735934768,1677097296,3366964609,893718770,2652677155,1707679429,3465587220,863663975,2552480694,1871230586,3302032043,960225240,2455923465,1773654511,3270403390,1057273933,2489126044,2064377604,3495056341,767069862,2262907511,2100592785,3597481024,730327347,2162056674,2004166702,3693911295,566641036,2325738845,1900695483,3658742634,670639641,2359333576,1376601592,4183093545,79572058,2951190667,1412571757,4285241020,42027983,2849570590,1584630482,4113186307,146858864,2744735649,1481436487,4078262678,251626725,2779131956,1257298860,3785977725,474198542,3071936223,1288682553,3885369576,444388763,2972016970,1183716486,3990331479,272465188,3143944693,1085371155,3957901250,369236657,3176902240,1823819377,3354194592,973483987,2438961922,1787437540,3251868981,1010387014,2539715735,1623951707,3415358858,913891577,2636207144,1727327950,3450690079,809994092,2602447805,1950930981,3742461172,586920327,2309096790,1920450480,3643673441,616879634,2409456323,2016810767,3547309022,780500653,2245839484,2114547866,3578840139,683284792,2212736489,1565424345,4128755208,201134971,2695145386,1534139724,4029196701,230847726,2795225151,1362146803,4201185570,126082129,2899994752,1460654694,4233520823,29146052,2867138325,1169417357,4008333404,318803247,3092855294,1133282072,3906287561,356510394,3194379883,1238182823,3801390966,528368133,3022517972,1341279282,3836475619,423699856,2987954497,256065313,2753203184,1508923011,4071219794,159144116,2720394341,1607414038,4103505351,54390795,2825143514,1435408809,4275514744,84055966,2925208399,1404173884,4175973101,398369141,3169260964,1091422423,3931405318,293717728,3134747185,1194504002,3966442387,465595999,2962872974,1299384317,3861558060,503253450,3064380699,1263296616,3759527097,1052246921,2514597720,1745578539,3276988154,948397084,2480853197,1848905150,3312302447,851889315,2577365106,1685431553,3475771856,888777526,2678071271,1649066644,3373495877,642096605,2367432972,1895232639,3685695662,544930376,2334346905,1992922090,3717211963,708530935,2170742310,2089302869,3620835204,738473314,2271052211,2058837184,3522095121]),Rt=new Uint32Array([0,2125799437,1446245579,679924934,121527623,2039184714,1359849868,800622977,243055246,1892260483,1481592389,653946440,155379657,2012727236,1601245954,566506255,486110492,1649169681,1254785495,880779738,466036827,1701972054,1307892880,859962525,310759314,1815146399,1152793433,973282132,364614357,1796125400,1133012510,1027425811,972220984,1195887157,1874927347,292830974,1053603711,1081710450,1761559476,373973945,932073654,1228632251,1639818365,520651888,816844273,1308962300,1719925050,406247735,621518628,1539227433,1933077487,227363810,573948515,1551950446,1946564264,179508901,729228714,1438778791,2101662049,66187628,743012589,1392269536,2054851622,80718891,1944441968,223409277,634790075,1533214902,1960544567,175024442,585661948,1549622769,2107207422,53235443,732600885,1428142648,2057778105,68293556,747947890,1377953663,1864147308,296321377,959403431,1201305002,1747123243,379051046,1041303776,1084500205,1633688546,534068207,928247593,1239863076,1717454501,418080424,812495470,1322816099,1243037256,883039813,472173187,1653729934,1294557967,865878786,454727620,1706014665,1147897030,987669707,307785741,1827491840,1129699713,1038154124,359017802,1808993607,1458457428,677079897,14532511,2120785810,1372591635,795162142,132375256,2035729109,1486025178,640143831,245433617,1880368412,1605151901,555322512,161437782,1999272027,1284643889,841432124,446818554,1679083767,1269580150,890855803,497006013,1663735216,1122936511,1012631218,350048884,1785229945,1171323896,996531189,333647667,1834364734,1349216557,786319648,106470886,2028846571,1465201770,702551143,23511201,2144592044,1578619811,547550126,136587112,1989216101,1495895780,664579817,253393455,1907317282,1969288713,198563332,592642754,1575363279,1918806862,216763203,611147653,1524137864,2065452167,94989450,758102092,1402640449,2082607552,43463117,705815819,1420084486,1771668245,388801304,1068136414,1092573139,1856495186,269680223,949234329,1176570516,1743075739,424679830,836160848,1331948893,1624990940,510543057,921210903,1214099482,1064814657,1103292492,1766079626,401677447,944346374,1190966539,1853514189,282018240,822833871,1337873090,1731757572,428713481,909455240,1216352133,1611062083,515111758,596557149,1564187984,1975339414,185100699,615571482,1510326295,1921193169,204879068,770836435,1397172190,2076308248,91542293,718035604,1417247385,2097131103,38440530,109388409,2016412276,1354159794,772011711,29065022,2131648307,1468566517,691907576,150575351,1984739578,1590324284,545213489,264750512,1903355325,1509175675,658575734,444356453,1690924904,1280287662,855278499,490867234,1677142575,1265762025,902094564,335605227,1790299622,1110645024,1015429421,322875564,1837863073,1158497383,1001940074]),Y=64,Pt=4,oe=4096,We=65536,Ot=127;function jt(r){let e=r.byteLength;if(e===0)return null;let t=(e-1)/16|0;if(t===0)return null;let n=t>>>2;n<16&&(n=16),n=Et(n);let s=n-1,a=new Uint32Array(n),i=[],o=-1>>>0;for(let l=t*16-16;l>=0;l-=16){let p=0;for(let u=1;u<=16;u++)p=(p<<8|r[l+u])^V[p>>>23];if(p=p>>>0,p===o)i[i.length-1].ptr=l+16;else{o=p;let u=p&s;i.push({ptr:l+16,val:p}),a[u]++}}let f=new Map;for(let l of i){let p=l.val&s,u=f.get(p);u||(u=[],f.set(p,u)),u.push(l)}for(let[l,p]of f){if(p.length<=Y)continue;let u=[],h=p.length/Y;for(let b=0;b<Y;b++)u.push(p[Math.floor(b*h)]);f.set(l,u),a[l]=Y}let c=new Uint32Array(n+1),d=[],y=0;for(let l=0;l<n;l++){c[l]=y;let p=f.get(l);if(p){for(let u of p)d.push(u);y+=p.length}}return c[n]=y,{src:r,hashMask:s,buckets:c,entries:d}}function kt(r,e,t){if(!r||e.byteLength===0)return null;let n=r.src.byteLength,s=e.byteLength,a=r.src,i=new Uint8Array(Math.max(s,1024)),o=0;function f(h){for(;o+h>i.length;){let b=new Uint8Array(i.length*2);b.set(i),i=b}}o=Fe(i,o,n),o=Fe(i,o,s),f(18),o++;let c=0,d=0,y=Math.min(16,s);for(let h=0;h<y;h++)i[o++]=e[h],c=(c<<8|e[h])^V[c>>>23],d++;c=c>>>0;let l=y,p=0,u=0;for(;l<s;){if(u<oe){c^=Rt[e[l-16]],c=((c<<8|e[l])^V[c>>>23])>>>0;let h=c&r.hashMask,b=r.buckets[h],m=r.buckets[h+1];for(let P=b;P<m;P++){let x=r.entries[P];if(x.val!==c)continue;let g=x.ptr,O=a.byteLength-g,H=s-l;if(O>H&&(O=H),O<=u)break;let E=0;for(;E<O&&a[g+E]===e[l+E];)E++;if(E>u&&(u=E,p=g,u>=oe))break}}if(u<Pt)f(2),d===0&&o++,i[o++]=e[l++],d++,d===Ot&&(i[o-d-1]=d,d=0),u=0;else{if(d>0){for(;p>0&&a[p-1]===e[l-1];)if(u++,p--,l--,o--,!(--d>0)){o--,d=-1;break}d>0&&(i[o-d-1]=d),d=0}let h=u>We?u-We:0;u-=h,f(8);let b=o++,m=128;if(p&255&&(i[o++]=p&255,m|=1),p&65280&&(i[o++]=p>>>8&255,m|=2),p&16711680&&(i[o++]=p>>>16&255,m|=4),p&4278190080&&(i[o++]=p>>>24&255,m|=8),u&255&&(i[o++]=u&255,m|=16),u&65280&&(i[o++]=u>>>8&255,m|=32),i[b]=m,l+=u,p+=u,u=h,p>4294967295&&(u=0),u<oe){c=0;for(let P=-16;P<0;P++)c=(c<<8|e[l+P])^V[c>>>23];c=c>>>0}}if(t&&o>t)return null}return d>0&&(i[o-d-1]=d),t&&o>t?null:i.subarray(0,o)}var Ge={blob:0,tree:1,commit:2,tag:3};function qe(r,e){let t=e?.window??10,n=e?.depth??50,s=r.slice().sort((c,d)=>{let y=Ge[c.type]??99,l=Ge[d.type]??99;return y!==l?y-l:d.content.byteLength-c.content.byteLength}),a=new Map,i=[],o=[],f=[];for(let c=0;c<s.length;c++){let d=s[c],y={hash:d.hash,type:d.type,content:d.content,depth:0},l=null,p=null,u=Math.max(0,c-t);for(let h=c-1;h>=u;h--){let b=s[h];if(b.type!==d.type||(a.get(b.hash)?.depth??0)>=n||d.content.byteLength<b.content.byteLength>>>5)continue;let x=o[h-u]??null;if(!x)continue;let g=l?l.byteLength:d.content.byteLength/2|0;if(g<16)continue;let O=kt(x,d.content,g);O&&(!l||O.byteLength<l.byteLength)&&(l=O,p=b.hash)}if(l&&p){y.delta=l,y.deltaBase=p;let h=a.get(p);y.depth=(h?.depth??0)+1}a.set(d.hash,y),i.push(y),o.length>=t&&(o.shift(),f.shift()),o.push(jt(d.content)),f.push(d.hash)}return i}function Et(r){let e=r;return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e<16?16:e}function Fe(r,e,t){let n=t;do{let s=n&127;n>>>=7,n>0&&(s|=128),r[e++]=s}while(n>0);return e}async function ae(r,e,t){let n=new Set;for(let i of t)await M(r,i,n);let s=[],a=new Set;for(let i of e)await W(r,i,n,a,s);return{count:s.length,objects:vt(s)}}async function ze(r,e,t){let{count:n,objects:s}=await ae(r,e,t);return{count:n,objects:It(r,s)}}async function*vt(r){for(let e of r)yield e}async function*It(r,e){for await(let t of e){let n=await _(r,t.hash);yield{hash:t.hash,type:t.type,content:n.content}}}async function Ke(r){let e=[];for await(let t of r.objects)e.push(t);return e}async function M(r,e,t){if(t.has(e)||(t.add(e),!await Be(r,e)))return;let n=await _(r,e);switch(n.type){case"commit":{let s=$(n.content);await M(r,s.tree,t);for(let a of s.parents)await M(r,a,t);break}case"tree":{let s=se(n.content);for(let a of s.entries)await M(r,a.hash,t);break}case"tag":{let s=j(n.content);await M(r,s.object,t);break}case"blob":break}}async function W(r,e,t,n,s){if(n.has(e)||t.has(e))return;n.add(e);let a=await _(r,e);switch(s.push({hash:e,type:a.type}),a.type){case"commit":{let i=$(a.content);await W(r,i.tree,t,n,s);for(let o of i.parents)await W(r,o,t,n,s);break}case"tree":{let i=se(a.content);for(let o of i.entries)await W(r,o.hash,t,n,s);break}case"tag":{let i=j(a.content);await W(r,i.object,t,n,s);break}case"blob":break}}var At=new TextEncoder,Ye=new TextDecoder,Xe=65520,St=new Uint8Array([48,48,48,48]);function R(r){let e=typeof r=="string"?At.encode(r):r,t=4+e.byteLength;if(t>Xe)throw new Error(`pkt-line too long: ${t} bytes (max ${Xe})`);let n=t.toString(16).padStart(4,"0"),s=new Uint8Array(t);return s[0]=n.charCodeAt(0),s[1]=n.charCodeAt(1),s[2]=n.charCodeAt(2),s[3]=n.charCodeAt(3),s.set(e,4),s}function k(){return St.slice()}function U(...r){let e=0;for(let s of r)e+=s.byteLength;let t=new Uint8Array(e),n=0;for(let s of r)t.set(s,n),n+=s.byteLength;return t}function Ve(r){let e=[],t=0;for(;t<r.byteLength;){if(t+4>r.byteLength)throw new Error("Truncated pkt-line header");let n=Ye.decode(r.subarray(t,t+4)),s=parseInt(n,16);if(Number.isNaN(s))throw new Error(`Invalid pkt-line length: ${n}`);if(s===0){e.push({type:"flush"}),t+=4;continue}if(s<4)throw new Error(`Invalid pkt-line length: ${s}`);if(t+s>r.byteLength)throw new Error(`Truncated pkt-line: need ${s} bytes at offset ${t}, have ${r.byteLength-t}`);e.push({type:"data",data:r.subarray(t+4,t+s)}),t+=s}return e}function Ze(r){if(r.type==="flush")return"";let e=Ye.decode(r.data);return e.endsWith(`
8
- `)?e.slice(0,-1):e}var Je=65515;function Qe(r,e,t,n){let s=[];s.push(R(`# service=${e}
9
- `)),s.push(k());let a=[...t];n&&a.push(`symref=HEAD:${n}`),a.push("agent=just-git/1.0");let i=a.join(" ");if(r.length===0)s.push(R(`0000000000000000000000000000000000000000 capabilities^{}\0${i}
10
- `));else for(let o=0;o<r.length;o++){let f=r[o];o===0?s.push(R(`${f.hash} ${f.name}\0${i}
11
- `)):s.push(R(`${f.hash} ${f.name}
12
- `))}return s.push(k()),U(...s)}function et(r){let e=Ve(r),t=[],n=[],s=[];for(let a of e){if(a.type==="flush")continue;let i=Ze(a);if(i.startsWith("want ")){let o=i.slice(5);if(t.length===0){let f=o.indexOf(" ");f!==-1?(t.push(o.slice(0,f)),s=o.slice(f+1).split(" ").filter(Boolean)):t.push(o)}else t.push(o)}else i.startsWith("have ")&&n.push(i.slice(5))}return{wants:t,haves:n,capabilities:s}}function C(r,e,t){let n=[];if(t&&t.length>0){for(let a of t)n.push(R(`ACK ${a} common
13
- `));let s=t[t.length-1];n.push(R(`ACK ${s} ready
14
- `)),n.push(R(`ACK ${s}
15
- `))}else n.push(R(`NAK
16
- `));if(e){let s=0;for(;s<r.byteLength;){let a=Math.min(Je,r.byteLength-s);n.push(ie(1,r.subarray(s,s+a))),s+=a}n.push(k())}else{let s=new Uint8Array(r.byteLength);s.set(r),n.push(s)}return U(...n)}async function*tt(r,e,t){let n=[];if(t&&t.length>0){for(let a of t)n.push(R(`ACK ${a} common
17
- `));let s=t[t.length-1];n.push(R(`ACK ${s} ready
18
- `)),n.push(R(`ACK ${s}
19
- `))}else n.push(R(`NAK
20
- `));if(yield U(...n),e){for await(let s of r){let a=0;for(;a<s.byteLength;){let i=Math.min(Je,s.byteLength-a);yield ie(1,s.subarray(a,a+i)),a+=i}}yield k()}else for await(let s of r)yield s}function rt(r){let e=new TextDecoder,t=[],n=[],s=0;for(;s<r.byteLength&&!(s+4>r.byteLength);){let i=e.decode(r.subarray(s,s+4)),o=parseInt(i,16);if(Number.isNaN(o))break;if(o===0){s+=4;break}if(o<4||s+o>r.byteLength)break;let f=r.subarray(s+4,s+o);s+=o;let c=f.indexOf(0),d;if(c!==-1)d=e.decode(f.subarray(0,c)),n=e.decode(f.subarray(c+1)).replace(/\n$/,"").split(" ").filter(Boolean);else{let l=e.decode(f);d=l.endsWith(`
21
- `)?l.slice(0,-1):l}let y=d.split(" ");y.length>=3&&t.push({oldHash:y[0],newHash:y[1],refName:y[2]})}let a=s<r.byteLength?r.subarray(s):new Uint8Array(0);return{commands:t,packData:a,capabilities:n}}function Z(r,e,t){let n=[];n.push(R(r?`unpack ok
6
+ `),s=t===-1?e:e.slice(0,t),n=t===-1?"":e.slice(t+2),o="",i="commit",a="",f;for(let c of s.split(`
7
+ `)){let l=c.indexOf(" ");if(l===-1)continue;let d=c.slice(0,l),p=c.slice(l+1);switch(d){case"object":o=p;break;case"type":i=p;break;case"tag":a=p;break;case"tagger":f=Q(p);break}}if(!o)throw new Error("Tag missing object field");if(!a)throw new Error("Tag missing tag name field");if(!f)throw new Error("Tag missing tagger field");return{type:"tag",object:o,objectType:i,name:a,tagger:f,message:n}}async function te(r,e){return r.objectStore.read(e)}async function re(r,e){return r.objectStore.exists(e)}var un=new TextDecoder;async function q(r,e){let t=await te(r,e);if(t.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${t.type}`);return ee(t.content)}function W(r){return typeof r=="string"?{type:"direct",hash:r}:r}var mn=new TextEncoder,gt=new TextDecoder;function ve(r){let e=[],t=0;for(;t<r.byteLength;){let s=r.indexOf(32,t);if(s===-1)break;let n=gt.decode(r.subarray(t,s)),o=r.indexOf(0,s+1);if(o===-1)break;let i=gt.decode(r.subarray(s+1,o)),a=r.subarray(o+1,o+21),f=ce(a),c=n.padStart(6,"0");e.push({mode:c,name:i,hash:f}),t=o+21}return{type:"tree",entries:e}}async function wt(r,e,t){if(e===t)return!0;let s=new Set,n=[t],o=0;for(;o<n.length;){let i=n[o++];if(i===e)return!0;if(s.has(i))continue;s.add(i);let a;try{a=await q(r,i)}catch{continue}for(let f of a.parents)s.has(f)||n.push(f)}return!1}var ye=new Uint32Array([0,2874782929,1454598562,4260027763,104818581,2909197124,1351355959,4225088230,209637162,2804382715,1523426952,4053013081,172075199,2702711918,1559413021,4155209164,419274324,3013880453,1313798134,3843506983,516094401,3046853904,1215402083,3811058866,344150398,3218793903,1110456540,3916008461,314324715,3118826042,1141858121,4015451032,838548648,2594343033,1732793610,3423723995,935615293,2627596268,1635201695,3392046670,1032188802,2531018579,1798740512,3228511985,1002083351,2430804166,1829371317,3327150436,688300796,2187269677,2142620510,3572268943,792315241,2220913080,2039131339,3537049626,628649430,2384582919,1942684788,3633492133,591858243,2283716242,1978950625,3735934768,1677097296,3366964609,893718770,2652677155,1707679429,3465587220,863663975,2552480694,1871230586,3302032043,960225240,2455923465,1773654511,3270403390,1057273933,2489126044,2064377604,3495056341,767069862,2262907511,2100592785,3597481024,730327347,2162056674,2004166702,3693911295,566641036,2325738845,1900695483,3658742634,670639641,2359333576,1376601592,4183093545,79572058,2951190667,1412571757,4285241020,42027983,2849570590,1584630482,4113186307,146858864,2744735649,1481436487,4078262678,251626725,2779131956,1257298860,3785977725,474198542,3071936223,1288682553,3885369576,444388763,2972016970,1183716486,3990331479,272465188,3143944693,1085371155,3957901250,369236657,3176902240,1823819377,3354194592,973483987,2438961922,1787437540,3251868981,1010387014,2539715735,1623951707,3415358858,913891577,2636207144,1727327950,3450690079,809994092,2602447805,1950930981,3742461172,586920327,2309096790,1920450480,3643673441,616879634,2409456323,2016810767,3547309022,780500653,2245839484,2114547866,3578840139,683284792,2212736489,1565424345,4128755208,201134971,2695145386,1534139724,4029196701,230847726,2795225151,1362146803,4201185570,126082129,2899994752,1460654694,4233520823,29146052,2867138325,1169417357,4008333404,318803247,3092855294,1133282072,3906287561,356510394,3194379883,1238182823,3801390966,528368133,3022517972,1341279282,3836475619,423699856,2987954497,256065313,2753203184,1508923011,4071219794,159144116,2720394341,1607414038,4103505351,54390795,2825143514,1435408809,4275514744,84055966,2925208399,1404173884,4175973101,398369141,3169260964,1091422423,3931405318,293717728,3134747185,1194504002,3966442387,465595999,2962872974,1299384317,3861558060,503253450,3064380699,1263296616,3759527097,1052246921,2514597720,1745578539,3276988154,948397084,2480853197,1848905150,3312302447,851889315,2577365106,1685431553,3475771856,888777526,2678071271,1649066644,3373495877,642096605,2367432972,1895232639,3685695662,544930376,2334346905,1992922090,3717211963,708530935,2170742310,2089302869,3620835204,738473314,2271052211,2058837184,3522095121]),pr=new Uint32Array([0,2125799437,1446245579,679924934,121527623,2039184714,1359849868,800622977,243055246,1892260483,1481592389,653946440,155379657,2012727236,1601245954,566506255,486110492,1649169681,1254785495,880779738,466036827,1701972054,1307892880,859962525,310759314,1815146399,1152793433,973282132,364614357,1796125400,1133012510,1027425811,972220984,1195887157,1874927347,292830974,1053603711,1081710450,1761559476,373973945,932073654,1228632251,1639818365,520651888,816844273,1308962300,1719925050,406247735,621518628,1539227433,1933077487,227363810,573948515,1551950446,1946564264,179508901,729228714,1438778791,2101662049,66187628,743012589,1392269536,2054851622,80718891,1944441968,223409277,634790075,1533214902,1960544567,175024442,585661948,1549622769,2107207422,53235443,732600885,1428142648,2057778105,68293556,747947890,1377953663,1864147308,296321377,959403431,1201305002,1747123243,379051046,1041303776,1084500205,1633688546,534068207,928247593,1239863076,1717454501,418080424,812495470,1322816099,1243037256,883039813,472173187,1653729934,1294557967,865878786,454727620,1706014665,1147897030,987669707,307785741,1827491840,1129699713,1038154124,359017802,1808993607,1458457428,677079897,14532511,2120785810,1372591635,795162142,132375256,2035729109,1486025178,640143831,245433617,1880368412,1605151901,555322512,161437782,1999272027,1284643889,841432124,446818554,1679083767,1269580150,890855803,497006013,1663735216,1122936511,1012631218,350048884,1785229945,1171323896,996531189,333647667,1834364734,1349216557,786319648,106470886,2028846571,1465201770,702551143,23511201,2144592044,1578619811,547550126,136587112,1989216101,1495895780,664579817,253393455,1907317282,1969288713,198563332,592642754,1575363279,1918806862,216763203,611147653,1524137864,2065452167,94989450,758102092,1402640449,2082607552,43463117,705815819,1420084486,1771668245,388801304,1068136414,1092573139,1856495186,269680223,949234329,1176570516,1743075739,424679830,836160848,1331948893,1624990940,510543057,921210903,1214099482,1064814657,1103292492,1766079626,401677447,944346374,1190966539,1853514189,282018240,822833871,1337873090,1731757572,428713481,909455240,1216352133,1611062083,515111758,596557149,1564187984,1975339414,185100699,615571482,1510326295,1921193169,204879068,770836435,1397172190,2076308248,91542293,718035604,1417247385,2097131103,38440530,109388409,2016412276,1354159794,772011711,29065022,2131648307,1468566517,691907576,150575351,1984739578,1590324284,545213489,264750512,1903355325,1509175675,658575734,444356453,1690924904,1280287662,855278499,490867234,1677142575,1265762025,902094564,335605227,1790299622,1110645024,1015429421,322875564,1837863073,1158497383,1001940074]),he=64,ur=4,Ae=4096,Rt=65536,hr=127;function yr(r){let e=r.byteLength;if(e===0)return null;let t=(e-1)/16|0;if(t===0)return null;let s=t>>>2;s<16&&(s=16),s=mr(s);let n=s-1,o=new Uint32Array(s),i=[],a=-1>>>0;for(let p=t*16-16;p>=0;p-=16){let u=0;for(let h=1;h<=16;h++)u=(u<<8|r[p+h])^ye[u>>>23];if(u=u>>>0,u===a)i[i.length-1].ptr=p+16;else{a=u;let h=u&n;i.push({ptr:p+16,val:u}),o[h]++}}let f=new Map;for(let p of i){let u=p.val&n,h=f.get(u);h||(h=[],f.set(u,h)),h.push(p)}for(let[p,u]of f){if(u.length<=he)continue;let h=[],y=u.length/he;for(let m=0;m<he;m++)h.push(u[Math.floor(m*y)]);f.set(p,h),o[p]=he}let c=new Uint32Array(s+1),l=[],d=0;for(let p=0;p<s;p++){c[p]=d;let u=f.get(p);if(u){for(let h of u)l.push(h);d+=u.length}}return c[s]=d,{src:r,hashMask:n,buckets:c,entries:l}}function br(r,e,t){if(!r||e.byteLength===0)return null;let s=r.src.byteLength,n=e.byteLength,o=r.src,i=new Uint8Array(Math.max(n,1024)),a=0;function f(y){for(;a+y>i.length;){let m=new Uint8Array(i.length*2);m.set(i),i=m}}a=jt(i,a,s),a=jt(i,a,n),f(18),a++;let c=0,l=0,d=Math.min(16,n);for(let y=0;y<d;y++)i[a++]=e[y],c=(c<<8|e[y])^ye[c>>>23],l++;c=c>>>0;let p=d,u=0,h=0;for(;p<n;){if(h<Ae){c^=pr[e[p-16]],c=((c<<8|e[p])^ye[c>>>23])>>>0;let y=c&r.hashMask,m=r.buckets[y],O=r.buckets[y+1];for(let b=m;b<O;b++){let w=r.entries[b];if(w.val!==c)continue;let R=w.ptr,x=o.byteLength-R,g=n-p;if(x>g&&(x=g),x<=h)break;let P=0;for(;P<x&&o[R+P]===e[p+P];)P++;if(P>h&&(h=P,u=R,h>=Ae))break}}if(h<ur)f(2),l===0&&a++,i[a++]=e[p++],l++,l===hr&&(i[a-l-1]=l,l=0),h=0;else{if(l>0){for(;u>0&&o[u-1]===e[p-1];)if(h++,u--,p--,a--,!(--l>0)){a--,l=-1;break}l>0&&(i[a-l-1]=l),l=0}let y=h>Rt?h-Rt:0;h-=y,f(8);let m=a++,O=128;if(u&255&&(i[a++]=u&255,O|=1),u&65280&&(i[a++]=u>>>8&255,O|=2),u&16711680&&(i[a++]=u>>>16&255,O|=4),u&4278190080&&(i[a++]=u>>>24&255,O|=8),h&255&&(i[a++]=h&255,O|=16),h&65280&&(i[a++]=h>>>8&255,O|=32),i[m]=O,p+=h,u+=h,h=y,u>4294967295&&(h=0),h<Ae){c=0;for(let b=-16;b<0;b++)c=(c<<8|e[p+b])^ye[c>>>23];c=c>>>0}}if(t&&a>t)return null}return l>0&&(i[a-l-1]=l),t&&a>t?null:i.subarray(0,a)}var Ot={blob:0,tree:1,commit:2,tag:3};function Pt(r,e){let t=e?.window??10,s=e?.depth??50,n=r.slice().sort((c,l)=>{let d=Ot[c.type]??99,p=Ot[l.type]??99;return d!==p?d-p:l.content.byteLength-c.content.byteLength}),o=new Map,i=[],a=[],f=[];for(let c=0;c<n.length;c++){let l=n[c],d={hash:l.hash,type:l.type,content:l.content,depth:0},p=null,u=null,h=Math.max(0,c-t);for(let y=c-1;y>=h;y--){let m=n[y];if(m.type!==l.type||(o.get(m.hash)?.depth??0)>=s||l.content.byteLength<m.content.byteLength>>>5)continue;let w=a[y-h]??null;if(!w)continue;let R=p?p.byteLength:l.content.byteLength/2|0;if(R<16)continue;let x=br(w,l.content,R);x&&(!p||x.byteLength<p.byteLength)&&(p=x,u=m.hash)}if(p&&u){d.delta=p,d.deltaBase=u;let y=o.get(u);d.depth=(y?.depth??0)+1}o.set(l.hash,d),i.push(d),a.length>=t&&(a.shift(),f.shift()),a.push(yr(l.content)),f.push(l.hash)}return i}function mr(r){let e=r;return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e<16?16:e}function jt(r,e,t){let s=t;do{let n=s&127;s>>>=7,s>0&&(n|=128),r[e++]=n}while(s>0);return e}var xr=2147483647;async function Et(r,e,t,s){if(t>=xr)return{shallow:[],unshallow:[...s]};let n=new Map,o=[];for(let c of e)!n.has(c)&&await re(r,c)&&(n.set(c,1),o.push({hash:c,level:1}));let i=new Set,a=0;for(;a<o.length;){let{hash:c,level:l}=o[a++];if(l>=t){i.add(c);continue}let d;try{d=await q(r,c)}catch{continue}for(let p of d.parents)!n.has(p)&&await re(r,p)&&(n.set(p,l+1),o.push({hash:p,level:l+1}))}let f=[];for(let c of s){let l=n.get(c);l!==void 0&&l<t&&f.push(c)}return{shallow:[...i],unshallow:f}}async function ke(r,e,t,s,n){let o=n??s,i=new Set;for(let l of t)await ne(r,l,i,o);let a=[...e];if(n&&s)for(let l of n)try{let d=await q(r,l);for(let p of d.parents)i.has(p)||a.push(p)}catch{}let f=[],c=new Set;for(let l of a)await se(r,l,i,c,f,s);return{count:f.length,objects:gr(f)}}async function It(r,e,t,s,n){let{count:o,objects:i}=await ke(r,e,t,s,n);return{count:o,objects:wr(r,i)}}async function*gr(r){for(let e of r)yield e}async function*wr(r,e){for await(let t of e){let s=await te(r,t.hash);yield{hash:t.hash,type:t.type,content:s.content}}}async function vt(r){let e=[];for await(let t of r.objects)e.push(t);return e}async function ne(r,e,t,s){if(t.has(e)||(t.add(e),!await re(r,e)))return;let n=await te(r,e);switch(n.type){case"commit":{let o=ee(n.content);if(await ne(r,o.tree,t,s),!s?.has(e))for(let i of o.parents)await ne(r,i,t,s);break}case"tree":{let o=ve(n.content);for(let i of o.entries)await ne(r,i.hash,t,s);break}case"tag":{let o=M(n.content);await ne(r,o.object,t,s);break}case"blob":break}}async function se(r,e,t,s,n,o){if(s.has(e)||t.has(e))return;s.add(e);let i=await te(r,e);switch(n.push({hash:e,type:i.type}),i.type){case"commit":{let a=ee(i.content);if(await se(r,a.tree,t,s,n,o),!o?.has(e))for(let f of a.parents)await se(r,f,t,s,n,o);break}case"tree":{let a=ve(i.content);for(let f of a.entries)await se(r,f.hash,t,s,n,o);break}case"tag":{let a=M(i.content);await se(r,a.object,t,s,n,o);break}case"blob":break}}var Rr=new TextEncoder,kt=new TextDecoder,At=65520,Or=new Uint8Array([48,48,48,48]);function j(r){let e=typeof r=="string"?Rr.encode(r):r,t=4+e.byteLength;if(t>At)throw new Error(`pkt-line too long: ${t} bytes (max ${At})`);let s=t.toString(16).padStart(4,"0"),n=new Uint8Array(t);return n[0]=s.charCodeAt(0),n[1]=s.charCodeAt(1),n[2]=s.charCodeAt(2),n[3]=s.charCodeAt(3),n.set(e,4),n}function U(){return Or.slice()}function $(...r){let e=0;for(let n of r)e+=n.byteLength;let t=new Uint8Array(e),s=0;for(let n of r)t.set(n,s),s+=n.byteLength;return t}function St(r){let e=[],t=0;for(;t<r.byteLength;){if(t+4>r.byteLength)throw new Error("Truncated pkt-line header");let s=kt.decode(r.subarray(t,t+4)),n=parseInt(s,16);if(Number.isNaN(n))throw new Error(`Invalid pkt-line length: ${s}`);if(n===0){e.push({type:"flush"}),t+=4;continue}if(n<4)throw new Error(`Invalid pkt-line length: ${n}`);if(t+n>r.byteLength)throw new Error(`Truncated pkt-line: need ${n} bytes at offset ${t}, have ${r.byteLength-t}`);e.push({type:"data",data:r.subarray(t+4,t+n)}),t+=n}return e}function Tt(r){if(r.type==="flush")return"";let e=kt.decode(r.data);return e.endsWith(`
8
+ `)?e.slice(0,-1):e}var Ut=65515;function Ct(r,e,t,s){let n=[];n.push(j(`# service=${e}
9
+ `)),n.push(U());let o=[...t];s&&o.push(`symref=HEAD:${s}`),o.push("agent=just-git/1.0");let i=o.join(" ");if(r.length===0)n.push(j(`0000000000000000000000000000000000000000 capabilities^{}\0${i}
10
+ `));else for(let a=0;a<r.length;a++){let f=r[a];a===0?n.push(j(`${f.hash} ${f.name}\0${i}
11
+ `)):n.push(j(`${f.hash} ${f.name}
12
+ `))}return n.push(U()),$(...n)}function Lt(r){let e=St(r),t=[],s=[],n=[],o=[],i,a=!1;for(let f of e){if(f.type==="flush")continue;let c=Tt(f);if(c.startsWith("want ")){let l=c.slice(5);if(t.length===0){let d=l.indexOf(" ");d!==-1?(t.push(l.slice(0,d)),o=l.slice(d+1).split(" ").filter(Boolean)):t.push(l)}else t.push(l)}else c.startsWith("have ")?s.push(c.slice(5)):c.startsWith("shallow ")?n.push(c.slice(8)):c.startsWith("deepen ")?(i=parseInt(c.slice(7),10),Number.isNaN(i)&&(i=void 0)):c==="done"&&(a=!0)}return{wants:t,haves:s,capabilities:o,clientShallows:n,depth:i,done:a}}function z(r,e,t,s){let n=[];if(s){for(let o of s.shallow)n.push(j(`shallow ${o}
13
+ `));for(let o of s.unshallow)n.push(j(`unshallow ${o}
14
+ `));n.push(U())}if(t&&t.length>0){for(let i of t)n.push(j(`ACK ${i} common
15
+ `));let o=t[t.length-1];n.push(j(`ACK ${o} ready
16
+ `)),n.push(j(`ACK ${o}
17
+ `))}else n.push(j(`NAK
18
+ `));if(e){let o=0;for(;o<r.byteLength;){let i=Math.min(Ut,r.byteLength-o);n.push(Se(1,r.subarray(o,o+i))),o+=i}n.push(U())}else{let o=new Uint8Array(r.byteLength);o.set(r),n.push(o)}return $(...n)}function Ht(r){let e=[];for(let t of r.shallow)e.push(j(`shallow ${t}
19
+ `));for(let t of r.unshallow)e.push(j(`unshallow ${t}
20
+ `));return e.push(U()),$(...e)}async function*Dt(r,e,t,s){if(s){let o=[];for(let i of s.shallow)o.push(j(`shallow ${i}
21
+ `));for(let i of s.unshallow)o.push(j(`unshallow ${i}
22
+ `));o.push(U()),yield $(...o)}let n=[];if(t&&t.length>0){for(let i of t)n.push(j(`ACK ${i} common
23
+ `));let o=t[t.length-1];n.push(j(`ACK ${o} ready
24
+ `)),n.push(j(`ACK ${o}
25
+ `))}else n.push(j(`NAK
26
+ `));if(yield $(...n),e){for await(let o of r){let i=0;for(;i<o.byteLength;){let a=Math.min(Ut,o.byteLength-i);yield Se(1,o.subarray(i,i+a)),i+=a}}yield U()}else for await(let o of r)yield o}function Nt(r){let e=new TextDecoder,t=[],s=[],n=0,o=!1;for(;n<r.byteLength&&!(n+4>r.byteLength);){let a=e.decode(r.subarray(n,n+4)),f=parseInt(a,16);if(Number.isNaN(f))break;if(f===0){o=!0,n+=4;break}if(f<4||n+f>r.byteLength)break;let c=r.subarray(n+4,n+f);n+=f;let l=c.indexOf(0),d;if(l!==-1)d=e.decode(c.subarray(0,l)),s=e.decode(c.subarray(l+1)).replace(/\n$/,"").split(" ").filter(Boolean);else{let u=e.decode(c);d=u.endsWith(`
27
+ `)?u.slice(0,-1):u}let p=d.split(" ");p.length>=3&&t.push({oldHash:p[0],newHash:p[1],refName:p[2]})}let i=n<r.byteLength?r.subarray(n):new Uint8Array(0);return{commands:t,packData:i,capabilities:s,sawFlush:o}}function be(r,e,t){let s=[];s.push(j(r?`unpack ok
22
28
  `:`unpack error
23
- `));for(let a of e)a.ok?n.push(R(`ok ${a.name}
24
- `)):n.push(R(`ng ${a.name} ${a.error??"failed"}
25
- `));n.push(k());let s=U(...n);if(t){let a=[];return a.push(ie(1,s)),a.push(k()),U(...a)}return s}function ie(r,e){let t=new Uint8Array(1+e.byteLength);return t[0]=r,t.set(e,1),R(t)}var L=class{entries=new Map;currentBytes=0;maxBytes;hits=0;misses=0;constructor(e=256*1024*1024){this.maxBytes=e}static key(e,t,n){if(n.length>0)return null;let s=t.slice().sort();return`${e}\0${s.join(",")}`}get(e){let t=this.entries.get(e);return t?this.hits++:this.misses++,t}set(e,t){if(this.entries.has(e))return;let n=t.packData.byteLength;if(!(n>this.maxBytes)){for(;this.currentBytes+n>this.maxBytes&&this.entries.size>0;){let s=this.entries.keys().next().value;this.currentBytes-=this.entries.get(s).packData.byteLength,this.entries.delete(s)}this.entries.set(e,t),this.currentBytes+=n}}get stats(){return{entries:this.entries.size,bytes:this.currentBytes,hits:this.hits,misses:this.misses}}},Tt=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag","allow-reachable-sha1-in-want"],Ut=["report-status","side-band-64k","ofs-delta","delete-refs"];async function ce(r){let e=await r.refStore.listRefs("refs"),t=await r.refStore.readRef("HEAD"),n=[],s=null,a;if(t)if(t.type==="symbolic"){a=t.target;let o=await r.refStore.readRef(t.target);o?.type==="direct"&&(s=o.hash)}else s=t.hash;let i=e.slice().sort((o,f)=>o.name<f.name?-1:o.name>f.name?1:0);s&&n.push({name:"HEAD",hash:s});for(let o of i)if(n.push({name:o.name,hash:o.hash}),o.name.startsWith("refs/tags/"))try{let f=await r.objectStore.read(o.hash);if(f.type==="tag"){let c=j(f.content);n.push({name:`${o.name}^{}`,hash:c.object})}}catch{}return{refs:n,headTarget:a}}function fe(r,e,t){return Qe(r,e,e==="git-upload-pack"?Tt:Ut,t)}async function de(r,e,t){let{wants:n,haves:s,capabilities:a}=et(e);if(n.length===0)return C(new Uint8Array(0),!1);let i=a.includes("multi_ack_detailed"),o=a.includes("side-band-64k"),f;if(i&&s.length>0){f=[];for(let d of s)await r.objectStore.exists(d)&&f.push(d);f.length===0&&(f=void 0)}let c=t?.cache&&t.cacheKey?L.key(t.cacheKey,n,s):null;if(c&&t?.cache){let d=t.cache.get(c);if(d)return C(d.packData,o,f)}return t?.noDelta?Ct(r,n,s,a,o,f):Lt(r,n,s,a,o,f,t,c)}async function Ct(r,e,t,n,s,a){let{count:i,objects:o}=await ae(r,e,t);if(i===0){let h=C(new Uint8Array(0),s,a);return new ReadableStream({start(b){b.enqueue(h),b.close()}})}let f=[];for await(let h of o)f.push(h);let c=new Set(f.map(h=>h.hash)),d=[];if(n.includes("include-tag")){let h=await r.refStore.listRefs("refs/tags");for(let b of h)if(!c.has(b.hash))try{let m=await r.objectStore.read(b.hash);if(m.type==="tag"){let P=j(m.content);c.has(P.object)&&d.push({hash:b.hash,type:"tag",content:m.content})}}catch{}}let y=f.length+d.length;async function*l(){for(let h of f){let b=await r.objectStore.read(h.hash);yield{type:b.type,content:b.content}}for(let h of d)yield{type:h.type,content:h.content}}let p=Ne(y,l()),u=tt(p,s,a);return new ReadableStream({async pull(h){let{value:b,done:m}=await u.next();m?h.close():h.enqueue(b)}})}async function Lt(r,e,t,n,s,a,i,o){let f=await ze(r,e,t);if(f.count===0)return C(new Uint8Array(0),s,a);let c=await Ke(f),d=new Set(c.map(h=>h.hash));if(n.includes("include-tag")){let h=await r.refStore.listRefs("refs/tags");for(let b of h)if(!d.has(b.hash))try{let m=await r.objectStore.read(b.hash);if(m.type==="tag"){let P=j(m.content);d.has(P.object)&&(c.push({hash:b.hash,type:"tag",content:m.content}),d.add(b.hash))}}catch{}}let y=i?.deltaWindow?{window:i.deltaWindow}:void 0,l=qe(c,y),p=l.map(h=>({hash:h.hash,type:h.type,content:h.content,delta:h.delta,deltaBaseHash:h.deltaBase})),{data:u}=await De(p);if(o&&i?.cache){let h=l.filter(b=>b.delta).length;i.cache.set(o,{packData:u,objectCount:c.length,deltaCount:h})}return C(u,s,a)}async function le(r,e){let{commands:t,packData:n,capabilities:s}=rt(e),a=!0;if(n.byteLength>0)try{await r.objectStore.ingestPack(n)}catch{a=!1}let i=[];for(let o of t){let f=o.oldHash===J,c=o.newHash===J,d=!1;if(!f&&!c&&a)try{d=await Me(r,o.oldHash,o.newHash)}catch{}i.push({ref:o.refName,oldHash:f?null:o.oldHash,newHash:o.newHash,isFF:d,isCreate:f,isDelete:c})}return{updates:i,unpackOk:a,capabilities:s}}function Ht(r){let{resolveRepo:e,hooks:t,basePath:n}=r,s=r.packCache===!1?void 0:new L(r.packCache?.maxBytes);return{async fetch(a){try{let i=new URL(a.url),o=decodeURIComponent(i.pathname);if(n){let f=n.replace(/\/+$/,"");if(!o.startsWith(f))return new Response("Not Found",{status:404});o=o.slice(f.length)}if(o.startsWith("/")||(o=`/${o}`),o.endsWith("/info/refs")&&a.method==="GET"){let f=i.searchParams.get("service");if(f!=="git-upload-pack"&&f!=="git-receive-pack")return new Response("Unsupported service",{status:403});let c=pe(o,"/info/refs"),d=await e(c,a);if(d instanceof Response)return d;if(!d)return new Response("Not Found",{status:404});let y=d,{refs:l,headTarget:p}=await ce(y),u=l;if(t?.advertiseRefs){let b=await t.advertiseRefs({repo:y,repoPath:c,refs:l,service:f,request:a});b&&(u=b)}let h=fe(u,f,p);return new Response(h,{headers:{"Content-Type":`application/x-${f}-advertisement`,"Cache-Control":"no-cache"}})}if(o.endsWith("/git-upload-pack")&&a.method==="POST"){let f=pe(o,"/git-upload-pack"),c=await e(f,a);if(c instanceof Response)return c;if(!c)return new Response("Not Found",{status:404});let d=c,y=await nt(a),l=await de(d,y,{cache:s,cacheKey:f,noDelta:r.packOptions?.noDelta,deltaWindow:r.packOptions?.deltaWindow});return new Response(l,{headers:{"Content-Type":"application/x-git-upload-pack-result"}})}if(o.endsWith("/git-receive-pack")&&a.method==="POST"){let f=pe(o,"/git-receive-pack"),c=await e(f,a);if(c instanceof Response)return c;if(!c)return new Response("Not Found",{status:404});let d=c,y=await nt(a),{updates:l,unpackOk:p,capabilities:u}=await le(d,y),h=u.includes("side-band-64k"),b=u.includes("report-status");if(!p){if(b){let x=l.map(g=>({name:g.ref,ok:!1,error:"unpack failed"}));return new Response(Z(!1,x,h),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response(new Uint8Array(0),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}if(t?.preReceive){let x=await t.preReceive({repo:d,repoPath:f,updates:l,request:a});if(D(x)){if(b){let g=x.message??"pre-receive hook declined",O=l.map(H=>({name:H.ref,ok:!1,error:g}));return new Response(Z(!0,O,h),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response(new Uint8Array(0),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}}let m=[],P=[];for(let x of l){if(t?.update){let g=await t.update({repo:d,repoPath:f,update:x,request:a});if(D(g)){m.push({ref:x.ref,ok:!1,error:g.message??"update hook declined"});continue}}try{let g=x.isCreate?null:x.oldHash,O=x.isDelete?null:{type:"direct",hash:x.newHash};if(!await d.refStore.compareAndSwapRef(x.ref,g,O)){m.push({ref:x.ref,ok:!1,error:"failed to lock"});continue}m.push({ref:x.ref,ok:!0}),P.push(x)}catch(g){m.push({ref:x.ref,ok:!1,error:g instanceof Error?g.message:String(g)})}}if(t?.postReceive&&P.length>0)try{await t.postReceive({repo:d,repoPath:f,updates:P,request:a})}catch{}if(b){let x=m.map(g=>({name:g.ref,ok:g.ok,error:g.error}));return new Response(Z(!0,x,h),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response(new Uint8Array(0),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response("Not Found",{status:404})}catch(i){return console.error(" [server] Internal error:",i),new Response("Internal Server Error",{status:500})}}}}function pe(r,e){let t=r.slice(0,-e.length);return t.startsWith("/")&&(t=t.slice(1)),t}async function nt(r){let e=new Uint8Array(await r.arrayBuffer()),t=r.headers.get("content-encoding");if(t==="gzip"||t==="x-gzip"){let n=new DecompressionStream("gzip"),s=n.writable.getWriter();return s.write(e),s.close(),new Uint8Array(await new Response(n.readable).arrayBuffer())}return e}function Dt(r){return(e,t)=>{let n=[];e.on("data",s=>n.push(new Uint8Array(s))),e.on("error",()=>{t.writeHead(500),t.end("Internal Server Error")}),e.on("end",()=>{Nt(r,e,n,t).catch(()=>{try{t.writeHead(500),t.end("Internal Server Error")}catch{}})})}}async function Nt(r,e,t,n){let s=typeof e.headers.host=="string"?e.headers.host:"localhost",a=new URL(e.url??"/",`http://${s}`),i=new Headers;for(let[p,u]of Object.entries(e.headers))if(u!==void 0)if(Array.isArray(u))for(let h of u)i.append(p,h);else i.set(p,u);let o=e.method??"GET",f;if(o!=="GET"&&o!=="HEAD"){let p=0;for(let b of t)p+=b.byteLength;let u=new Uint8Array(p),h=0;for(let b of t)u.set(b,h),h+=b.byteLength;f=u}let c=new Request(a.href,{method:o,headers:i,body:f}),d=await r.fetch(c),y={};d.headers.forEach((p,u)=>{y[u]=p}),n.writeHead(d.status,y);let l=new Uint8Array(await d.arrayBuffer());l.byteLength>0&&n.write(l),n.end()}function Bt(...r){let e=r.filter(o=>o!=null);if(e.length===0)return{};if(e.length===1)return e[0];let t={},n=e.filter(o=>o.preReceive).map(o=>o.preReceive);n.length>0&&(t.preReceive=async o=>{for(let f of n){let c=await f(o);if(D(c))return c}});let s=e.filter(o=>o.update).map(o=>o.update);s.length>0&&(t.update=async o=>{for(let f of s){let c=await f(o);if(D(c))return c}});let a=e.filter(o=>o.postReceive).map(o=>o.postReceive);a.length>0&&(t.postReceive=async o=>{for(let f of a)try{await f(o)}catch{}});let i=e.filter(o=>o.advertiseRefs).map(o=>o.advertiseRefs);return i.length>0&&(t.advertiseRefs=async o=>{let f=o.refs;for(let c of i){let d=await c({...o,refs:f});d&&(f=d)}return f}),t}function $t(r){let{protectedBranches:e=[],denyNonFastForward:t=!1,denyDeletes:n=!1,denyDeleteTags:s=!1,authorizePush:a,onPush:i}=r,o=new Set(e.map(c=>c.startsWith("refs/")?c:`refs/heads/${c}`)),f={};return(a||o.size>0)&&(f.preReceive=async c=>{if(a&&!await a(c.request))return{reject:!0,message:"unauthorized"};for(let d of c.updates)if(o.has(d.ref)){if(d.isDelete)return{reject:!0,message:`cannot delete protected branch ${d.ref}`};if(!d.isCreate&&!d.isFF)return{reject:!0,message:`non-fast-forward push to protected branch ${d.ref}`}}}),(t||n||s)&&(f.update=async c=>{if(n&&c.update.isDelete)return{reject:!0,message:"ref deletion denied"};if(s&&c.update.ref.startsWith("refs/tags/")){if(c.update.isDelete)return{reject:!0,message:"tag deletion denied"};if(!c.update.isCreate)return{reject:!0,message:"tag overwrite denied"}}if(t&&!c.update.isCreate&&!c.update.isDelete&&!c.update.isFF)return{reject:!0,message:"non-fast-forward"}}),i&&(f.postReceive=i),f}var ue=class{objects=new Map;refs=new Map;repo(e){return{objectStore:new he(this.getObjects(e)),refStore:new ye(this.getRefs(e))}}async deleteRepo(e){this.objects.get(e)?.clear(),this.objects.delete(e),this.refs.get(e)?.clear(),this.refs.delete(e)}getObjects(e){let t=this.objects.get(e);return t||(t=new Map,this.objects.set(e,t)),t}getRefs(e){let t=this.refs.get(e);return t||(t=new Map,this.refs.set(e,t)),t}},he=class{constructor(e){this.store=e}async write(e,t){let n=await v(S(e,t));return this.store.has(n)||this.store.set(n,{type:e,content:new Uint8Array(t)}),n}async read(e){let t=this.store.get(e);if(!t)throw new Error(`object ${e} not found`);return{type:t.type,content:new Uint8Array(t.content)}}async exists(e){return this.store.has(e)}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let s=this.store,a=await A(e,async i=>{let o=s.get(i);return o?{type:o.type,content:new Uint8Array(o.content)}:null});for(let i of a)s.has(i.hash)||s.set(i.hash,{type:i.type,content:i.content});return a.length}async findByPrefix(e){if(e.length<4)return[];let t=[];for(let n of this.store.keys())n.startsWith(e)&&t.push(n);return t}},ye=class{constructor(e){this.store=e}async readRef(e){return this.store.get(e)??null}async writeRef(e,t){this.store.set(e,T(t))}async deleteRef(e){this.store.delete(e)}async compareAndSwapRef(e,t,n){let s=this.store.get(e)??null,a=null;if(s&&(s.type==="direct"?a=s.hash:s.type==="symbolic"&&(a=this.resolveChain(s.target))),t===null){if(s!==null)return!1}else if(a!==t)return!1;return n===null?this.store.delete(e):this.store.set(e,n),!0}async listRefs(e){let t=[];for(let[n,s]of this.store)if(!(e&&!n.startsWith(e))){if(s.type==="direct")t.push({name:n,hash:s.hash});else if(s.type==="symbolic"){let a=this.resolveChain(s.target);a&&t.push({name:n,hash:a})}}return t}resolveChain(e,t=0){if(t>10)return null;let n=this.store.get(e);return n?n.type==="direct"?n.hash:n.type==="symbolic"?this.resolveChain(n.target,t+1):null:null}};function _t(r){return{run:e=>r.exec(e),prepare:e=>{let t=r.prepare(e);return{run:(...n)=>t.run(...n),get:(...n)=>t.get(...n)??null,all:(...n)=>t.all(...n)}},transaction:e=>r.transaction(e)}}var Mt=`
29
+ `));for(let o of e)o.ok?s.push(j(`ok ${o.name}
30
+ `)):s.push(j(`ng ${o.name} ${o.error??"failed"}
31
+ `));s.push(U());let n=$(...s);if(t){let o=[];return o.push(Se(1,n)),o.push(U()),$(...o)}return n}function Se(r,e){let t=new Uint8Array(1+e.byteLength);return t[0]=r,t.set(e,1),j(t)}var oe=class{entries=new Map;currentBytes=0;maxBytes;hits=0;misses=0;constructor(e=256*1024*1024){this.maxBytes=e}static key(e,t,s){if(s.length>0)return null;let n=t.slice().sort();return`${e}\0${n.join(",")}`}get(e){let t=this.entries.get(e);return t?this.hits++:this.misses++,t}set(e,t){if(this.entries.has(e))return;let s=t.packData.byteLength;if(!(s>this.maxBytes)){for(;this.currentBytes+s>this.maxBytes&&this.entries.size>0;){let n=this.entries.keys().next().value;this.currentBytes-=this.entries.get(n).packData.byteLength,this.entries.delete(n)}this.entries.set(e,t),this.currentBytes+=s}}get stats(){return{entries:this.entries.size,bytes:this.currentBytes,hits:this.hits,misses:this.misses}}},jr=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag","allow-reachable-sha1-in-want","shallow"],Pr=["report-status","side-band-64k","ofs-delta","delete-refs"];async function Bt(r){let e=await r.refStore.listRefs("refs"),t=await r.refStore.readRef("HEAD"),s=[],n=null,o;if(t)if(t.type==="symbolic"){o=t.target;let a=await r.refStore.readRef(t.target);a?.type==="direct"&&(n=a.hash)}else n=t.hash;let i=e.slice().sort((a,f)=>a.name<f.name?-1:a.name>f.name?1:0);if(!n&&i.length>0){let a=Ir(i);a&&(n=a.hash,o=a.name)}n&&s.push({name:"HEAD",hash:n});for(let a of i)if(s.push({name:a.name,hash:a.hash}),a.name.startsWith("refs/tags/"))try{let f=await r.objectStore.read(a.hash);if(f.type==="tag"){let c=M(f.content);s.push({name:`${a.name}^{}`,hash:c.object})}}catch{}return{refs:s,headTarget:o}}var Er=["refs/heads/main","refs/heads/master"];function Ir(r){for(let t of Er){let s=r.find(n=>n.name===t);if(s)return s}return r.find(t=>t.name.startsWith("refs/heads/"))??null}function _t(r,e,t){return Ct(r,e,e==="git-upload-pack"?jr:Pr,t)}async function Wt(r,e,t){let{wants:s,haves:n,capabilities:o,clientShallows:i,depth:a,done:f}=Lt(e);if(s.length===0)return z(new Uint8Array(0),!1);let c=o.includes("multi_ack_detailed"),l=o.includes("side-band-64k"),d,p,u;if(i.length>0&&(u=new Set(i)),a!==void 0){let m=await Et(r,s,a,u??new Set);d=m,p=new Set(m.shallow)}if(d&&!f)return Ht(d);let h;if(c&&n.length>0){h=[];for(let m of n)await r.objectStore.exists(m)&&h.push(m);h.length===0&&(h=void 0)}let y=!p&&t?.cache&&t.cacheKey?oe.key(t.cacheKey,s,n):null;if(y&&t?.cache){let m=t.cache.get(y);if(m)return z(m.packData,l,h)}return t?.noDelta?vr(r,s,n,o,l,h,d,p,u):Ar(r,s,n,o,l,h,t,y,d,p,u)}async function vr(r,e,t,s,n,o,i,a,f){let{count:c,objects:l}=await ke(r,e,t,a,f);if(c===0){let{data:b}=await ue([]),w=z(b,n,o,i);return new ReadableStream({start(R){R.enqueue(w),R.close()}})}let d=[];for await(let b of l)d.push(b);let p=new Set(d.map(b=>b.hash)),u=[];if(s.includes("include-tag")){let b=await r.refStore.listRefs("refs/tags");for(let w of b)if(!p.has(w.hash))try{let R=await r.objectStore.read(w.hash);if(R.type==="tag"){let x=M(R.content);p.has(x.object)&&u.push({hash:w.hash,type:"tag",content:R.content})}}catch{}}let h=d.length+u.length;async function*y(){for(let b of d){let w=await r.objectStore.read(b.hash);yield{type:w.type,content:w.content}}for(let b of u)yield{type:b.type,content:b.content}}let m=xt(h,y()),O=Dt(m,n,o,i);return new ReadableStream({async pull(b){let{value:w,done:R}=await O.next();R?b.close():b.enqueue(w)}})}async function Ar(r,e,t,s,n,o,i,a,f,c,l){let d=await It(r,e,t,c,l);if(d.count===0){let{data:b}=await ue([]);return z(b,n,o,f)}let p=await vt(d),u=new Set(p.map(b=>b.hash));if(s.includes("include-tag")){let b=await r.refStore.listRefs("refs/tags");for(let w of b)if(!u.has(w.hash))try{let R=await r.objectStore.read(w.hash);if(R.type==="tag"){let x=M(R.content);u.has(x.object)&&(p.push({hash:w.hash,type:"tag",content:R.content}),u.add(w.hash))}}catch{}}let h=i?.deltaWindow?{window:i.deltaWindow}:void 0,y=Pt(p,h),m=y.map(b=>({hash:b.hash,type:b.type,content:b.content,delta:b.delta,deltaBaseHash:b.deltaBase})),{data:O}=await ue(m);if(a&&i?.cache){let b=y.filter(w=>w.delta).length;i.cache.set(a,{packData:O,objectCount:p.length,deltaCount:b})}return z(O,n,o,f)}async function $t(r,e){let{commands:t,packData:s,capabilities:n,sawFlush:o}=Nt(e),i=!0;if(s.byteLength>0)try{await r.objectStore.ingestPack(s)}catch{i=!1}let a=[];for(let f of t){let c=f.oldHash===me,l=f.newHash===me,d=!1;if(!c&&!l&&i)try{d=await wt(r,f.oldHash,f.newHash)}catch{}a.push({ref:f.refName,oldHash:c?null:f.oldHash,newHash:f.newHash,isFF:d,isCreate:c,isDelete:l})}return{updates:a,unpackOk:i,capabilities:n,sawFlush:o}}function kr(r){let{resolveRepo:e,hooks:t,basePath:s}=r,n=r.packCache===!1?void 0:new oe(r.packCache?.maxBytes),o=r.onError===!1?void 0:r.onError??(i=>{let a=i instanceof Error?i.message:String(i);console.error(`[server] Internal error: ${a}`)});return{async fetch(i){try{let a=new URL(i.url),f=decodeURIComponent(a.pathname);if(s){let c=s.replace(/\/+$/,"");if(!f.startsWith(c))return new Response("Not Found",{status:404});f=f.slice(c.length)}if(f.startsWith("/")||(f=`/${f}`),f.endsWith("/info/refs")&&i.method==="GET"){let c=a.searchParams.get("service");if(c!=="git-upload-pack"&&c!=="git-receive-pack")return new Response("Unsupported service",{status:403});let l=Te(f,"/info/refs"),d=await e(l,i);if(d instanceof Response)return d;if(!d)return new Response("Not Found",{status:404});let p=d,{refs:u,headTarget:h}=await Bt(p),y=u;if(t?.advertiseRefs){let O=await t.advertiseRefs({repo:p,repoPath:l,refs:u,service:c,request:i});O&&(y=O)}let m=_t(y,c,h);return new Response(m,{headers:{"Content-Type":`application/x-${c}-advertisement`,"Cache-Control":"no-cache"}})}if(f.endsWith("/git-upload-pack")&&i.method==="POST"){let c=Te(f,"/git-upload-pack"),l=await e(c,i);if(l instanceof Response)return l;if(!l)return new Response("Not Found",{status:404});let d=l,p=await Mt(i),u=await Wt(d,p,{cache:n,cacheKey:c,noDelta:r.packOptions?.noDelta,deltaWindow:r.packOptions?.deltaWindow});return new Response(u,{headers:{"Content-Type":"application/x-git-upload-pack-result"}})}if(f.endsWith("/git-receive-pack")&&i.method==="POST"){let c=Te(f,"/git-receive-pack"),l=await e(c,i);if(l instanceof Response)return l;if(!l)return new Response("Not Found",{status:404});let d=l,p=await Mt(i),{updates:u,unpackOk:h,capabilities:y,sawFlush:m}=await $t(d,p);if(!m&&u.length===0)return new Response("Bad Request",{status:400});let O=y.includes("side-band-64k"),b=y.includes("report-status");if(!h){if(b){let x=u.map(g=>({name:g.ref,ok:!1,error:"unpack failed"}));return new Response(be(!1,x,O),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response(new Uint8Array(0),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}if(t?.preReceive){let x=await t.preReceive({repo:d,repoPath:c,updates:u,request:i});if(Y(x)){if(b){let g=x.message??"pre-receive hook declined",P=u.map(I=>({name:I.ref,ok:!1,error:g}));return new Response(be(!0,P,O),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response(new Uint8Array(0),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}}let w=[],R=[];for(let x of u){if(t?.update){let g=await t.update({repo:d,repoPath:c,update:x,request:i});if(Y(g)){w.push({ref:x.ref,ok:!1,error:g.message??"update hook declined"});continue}}try{let g=x.isCreate?null:x.oldHash,P=x.isDelete?null:{type:"direct",hash:x.newHash};if(!await d.refStore.compareAndSwapRef(x.ref,g,P)){w.push({ref:x.ref,ok:!1,error:"failed to lock"});continue}w.push({ref:x.ref,ok:!0}),R.push(x)}catch(g){w.push({ref:x.ref,ok:!1,error:g instanceof Error?g.message:String(g)})}}if(t?.postReceive&&R.length>0)try{await t.postReceive({repo:d,repoPath:c,updates:R,request:i})}catch{}if(b){let x=w.map(g=>({name:g.ref,ok:g.ok,error:g.error}));return new Response(be(!0,x,O),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response(new Uint8Array(0),{headers:{"Content-Type":"application/x-git-receive-pack-result"}})}return new Response("Not Found",{status:404})}catch(a){return o?.(a,i),new Response("Internal Server Error",{status:500})}}}}function Te(r,e){let t=r.slice(0,-e.length);return t.startsWith("/")&&(t=t.slice(1)),t}async function Mt(r){let e=new Uint8Array(await r.arrayBuffer()),t=r.headers.get("content-encoding");if(t==="gzip"||t==="x-gzip"){let s=new DecompressionStream("gzip"),n=s.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}return e}function Sr(r){return(e,t)=>{let s=[];e.on("data",n=>s.push(new Uint8Array(n))),e.on("error",()=>{t.writeHead(500),t.end("Internal Server Error")}),e.on("end",()=>{Tr(r,e,s,t).catch(()=>{try{t.writeHead(500),t.end("Internal Server Error")}catch{}})})}}async function Tr(r,e,t,s){let n=typeof e.headers.host=="string"?e.headers.host:"localhost",o=new URL(e.url??"/",`http://${n}`),i=new Headers;for(let[u,h]of Object.entries(e.headers))if(h!==void 0)if(Array.isArray(h))for(let y of h)i.append(u,y);else i.set(u,h);let a=e.method??"GET",f;if(a!=="GET"&&a!=="HEAD"){let u=0;for(let m of t)u+=m.byteLength;let h=new Uint8Array(u),y=0;for(let m of t)h.set(m,y),y+=m.byteLength;f=h}let c=new Request(o.href,{method:a,headers:i,body:f}),l=await r.fetch(c),d={};l.headers.forEach((u,h)=>{d[h]=u}),s.writeHead(l.status,d);let p=new Uint8Array(await l.arrayBuffer());p.byteLength>0&&s.write(p),s.end()}function Ur(...r){let e=r.filter(a=>a!=null);if(e.length===0)return{};if(e.length===1)return e[0];let t={},s=e.filter(a=>a.preReceive).map(a=>a.preReceive);s.length>0&&(t.preReceive=async a=>{for(let f of s){let c=await f(a);if(Y(c))return c}});let n=e.filter(a=>a.update).map(a=>a.update);n.length>0&&(t.update=async a=>{for(let f of n){let c=await f(a);if(Y(c))return c}});let o=e.filter(a=>a.postReceive).map(a=>a.postReceive);o.length>0&&(t.postReceive=async a=>{for(let f of o)try{await f(a)}catch{}});let i=e.filter(a=>a.advertiseRefs).map(a=>a.advertiseRefs);return i.length>0&&(t.advertiseRefs=async a=>{let f=a.refs;for(let c of i){let l=await c({...a,refs:f});l&&(f=l)}return f}),t}function Cr(r,e){return async(t,s)=>{let n=await r(s);return n instanceof Response?n:n?e(t,s):new Response("Forbidden",{status:403})}}function Lr(r){let{protectedBranches:e=[],denyNonFastForward:t=!1,denyDeletes:s=!1,denyDeleteTags:n=!1,authorizePush:o,onPush:i}=r,a=new Set(e.map(c=>c.startsWith("refs/")?c:`refs/heads/${c}`)),f={};return(o||a.size>0)&&(f.preReceive=async c=>{if(o&&!await o(c.request))return{reject:!0,message:"unauthorized"};for(let l of c.updates)if(a.has(l.ref)){if(l.isDelete)return{reject:!0,message:`cannot delete protected branch ${l.ref}`};if(!l.isCreate&&!l.isFF)return{reject:!0,message:`non-fast-forward push to protected branch ${l.ref}`}}}),(t||s||n)&&(f.update=async c=>{if(s&&c.update.isDelete)return{reject:!0,message:"ref deletion denied"};if(n&&c.update.ref.startsWith("refs/tags/")){if(c.update.isDelete)return{reject:!0,message:"tag deletion denied"};if(!c.update.isCreate)return{reject:!0,message:"tag overwrite denied"}}if(t&&!c.update.isCreate&&!c.update.isDelete&&!c.update.isFF)return{reject:!0,message:"non-fast-forward"}}),i&&(f.postReceive=i),f}var Ue=class{objects=new Map;refs=new Map;repo(e){return{objectStore:new Ce(this.getObjects(e)),refStore:new Le(this.getRefs(e))}}async deleteRepo(e){this.objects.get(e)?.clear(),this.objects.delete(e),this.refs.get(e)?.clear(),this.refs.delete(e)}getObjects(e){let t=this.objects.get(e);return t||(t=new Map,this.objects.set(e,t)),t}getRefs(e){let t=this.refs.get(e);return t||(t=new Map,this.refs.set(e,t)),t}},Ce=class{constructor(e){this.store=e}async write(e,t){let s=await D(_(e,t));return this.store.has(s)||this.store.set(s,{type:e,content:new Uint8Array(t)}),s}async read(e){let t=this.store.get(e);if(!t)throw new Error(`object ${e} not found`);return{type:t.type,content:new Uint8Array(t.content)}}async exists(e){return this.store.has(e)}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let n=this.store,o=await B(e,async i=>{let a=n.get(i);return a?{type:a.type,content:new Uint8Array(a.content)}:null});for(let i of o)n.has(i.hash)||n.set(i.hash,{type:i.type,content:i.content});return o.length}async findByPrefix(e){if(e.length<4)return[];let t=[];for(let s of this.store.keys())s.startsWith(e)&&t.push(s);return t}},Le=class{constructor(e){this.store=e}async readRef(e){return this.store.get(e)??null}async writeRef(e,t){this.store.set(e,W(t))}async deleteRef(e){this.store.delete(e)}async compareAndSwapRef(e,t,s){let n=this.store.get(e)??null,o=null;if(n&&(n.type==="direct"?o=n.hash:n.type==="symbolic"&&(o=this.resolveChain(n.target))),t===null){if(n!==null)return!1}else if(o!==t)return!1;return s===null?this.store.delete(e):this.store.set(e,s),!0}async listRefs(e){let t=[];for(let[s,n]of this.store)if(!(e&&!s.startsWith(e))){if(n.type==="direct")t.push({name:s,hash:n.hash});else if(n.type==="symbolic"){let o=this.resolveChain(n.target);o&&t.push({name:s,hash:o})}}return t}resolveChain(e,t=0){if(t>10)return null;let s=this.store.get(e);return s?s.type==="direct"?s.hash:s.type==="symbolic"?this.resolveChain(s.target,t+1):null:null}};var Hr=`
26
32
  CREATE TABLE IF NOT EXISTS git_objects (
27
33
  repo_id TEXT NOT NULL,
28
34
  hash TEXT NOT NULL,
@@ -39,7 +45,24 @@ CREATE TABLE IF NOT EXISTS git_refs (
39
45
  target TEXT,
40
46
  PRIMARY KEY (repo_id, name)
41
47
  ) WITHOUT ROWID;
42
- `;function Wt(r){return{objInsert:r.prepare("INSERT OR IGNORE INTO git_objects (repo_id, hash, type, content) VALUES (?, ?, ?, ?)"),objRead:r.prepare("SELECT type, content FROM git_objects WHERE repo_id = ? AND hash = ?"),objExists:r.prepare("SELECT 1 FROM git_objects WHERE repo_id = ? AND hash = ? LIMIT 1"),objPrefix:r.prepare("SELECT hash FROM git_objects WHERE repo_id = ? AND hash GLOB ?"),objDeleteAll:r.prepare("DELETE FROM git_objects WHERE repo_id = ?"),refRead:r.prepare("SELECT type, hash, target FROM git_refs WHERE repo_id = ? AND name = ?"),refWrite:r.prepare("INSERT OR REPLACE INTO git_refs (repo_id, name, type, hash, target) VALUES (?, ?, ?, ?, ?)"),refDelete:r.prepare("DELETE FROM git_refs WHERE repo_id = ? AND name = ?"),refList:r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ? AND name GLOB ?"),refListAll:r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ?"),refDeleteAll:r.prepare("DELETE FROM git_refs WHERE repo_id = ?")}}var be=class{db;stmts;ingestTx;constructor(e){this.db=e,e.run(Mt),this.stmts=Wt(e),this.ingestTx=e.transaction(t=>{for(let n of t)this.stmts.objInsert.run(n.repoId,n.hash,n.type,n.content)})}repo(e){return{objectStore:new me(this.stmts,this.ingestTx,e),refStore:new xe(this.stmts,this.db,e)}}async deleteRepo(e){this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}},me=class{constructor(e,t,n){this.stmts=e;this.ingestTx=t;this.repoId=n;this.cache=new I}cache;async write(e,t){let n=S(e,t),s=await v(n);return this.stmts.objInsert.run(this.repoId,s,e,t),s}async read(e){let t=this.cache.get(e);if(t)return t;let n=this.stmts.objRead.get(this.repoId,e);if(!n)throw new Error(`object ${e} not found`);let s={type:n.type,content:new Uint8Array(n.content)};return this.cache.set(e,s),s}async exists(e){return this.stmts.objExists.get(this.repoId,e)!==null}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let s=await A(e,async i=>{let o=this.stmts.objRead.get(this.repoId,i);return o?{type:o.type,content:new Uint8Array(o.content)}:null}),a=s.map(i=>({repoId:this.repoId,hash:i.hash,type:i.type,content:i.content}));return this.ingestTx(a),s.length}async findByPrefix(e){return e.length<4?[]:this.stmts.objPrefix.all(this.repoId,`${e}*`).map(n=>n.hash)}},xe=class{constructor(e,t,n){this.stmts=e;this.repoId=n;let s=e,a=n;this.casTx=t.transaction((i,o,f)=>{let c=s.refRead.get(a,i),d=null;if(c&&(c.type==="direct"?d=c.hash:c.type==="symbolic"&&c.target&&(d=ge(s,a,c.target))),o===null){if(c!==null)return!1}else if(d!==o)return!1;return f===null?s.refDelete.run(a,i):f.type==="symbolic"?s.refWrite.run(a,i,"symbolic",null,f.target):s.refWrite.run(a,i,"direct",f.hash,null),!0})}casTx;async readRef(e){let t=this.stmts.refRead.get(this.repoId,e);return t?t.type==="symbolic"?{type:"symbolic",target:t.target}:{type:"direct",hash:t.hash}:null}async writeRef(e,t){let n=T(t);n.type==="symbolic"?this.stmts.refWrite.run(this.repoId,e,"symbolic",null,n.target):this.stmts.refWrite.run(this.repoId,e,"direct",n.hash,null)}async deleteRef(e){this.stmts.refDelete.run(this.repoId,e)}async compareAndSwapRef(e,t,n){return this.casTx(e,t,n)}async listRefs(e){let t;e?t=this.stmts.refList.all(this.repoId,`${e}*`):t=this.stmts.refListAll.all(this.repoId);let n=[];for(let s of t)if(s.type==="direct"&&s.hash)n.push({name:s.name,hash:s.hash});else if(s.type==="symbolic"&&s.target){let a=ge(this.stmts,this.repoId,s.target);a&&n.push({name:s.name,hash:a})}return n}};function ge(r,e,t,n=0){if(n>10)return null;let s=r.refRead.get(e,t);return s?s.type==="direct"?s.hash:s.type==="symbolic"&&s.target?ge(r,e,s.target,n+1):null:null}function Gt(r){return{query:(e,t)=>r.query(e,t),async transaction(e){let t=await r.connect();try{await t.query("BEGIN");let s=await e({query:(a,i)=>t.query(a,i),transaction:()=>{throw new Error("nested transactions not supported")}});return await t.query("COMMIT"),s}catch(n){throw await t.query("ROLLBACK"),n}finally{t.release()}}}}var Ft=`
48
+ `;function Dr(r){return{objInsert:r.prepare("INSERT OR IGNORE INTO git_objects (repo_id, hash, type, content) VALUES (?, ?, ?, ?)"),objRead:r.prepare("SELECT type, content FROM git_objects WHERE repo_id = ? AND hash = ?"),objExists:r.prepare("SELECT 1 FROM git_objects WHERE repo_id = ? AND hash = ? LIMIT 1"),objPrefix:r.prepare("SELECT hash FROM git_objects WHERE repo_id = ? AND hash GLOB ?"),objDeleteAll:r.prepare("DELETE FROM git_objects WHERE repo_id = ?"),refRead:r.prepare("SELECT type, hash, target FROM git_refs WHERE repo_id = ? AND name = ?"),refWrite:r.prepare("INSERT OR REPLACE INTO git_refs (repo_id, name, type, hash, target) VALUES (?, ?, ?, ?, ?)"),refDelete:r.prepare("DELETE FROM git_refs WHERE repo_id = ? AND name = ?"),refList:r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ? AND name GLOB ?"),refListAll:r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ?"),refDeleteAll:r.prepare("DELETE FROM git_refs WHERE repo_id = ?")}}var He=class{db;stmts;ingestTx;constructor(e){this.db=e,e.run(Hr),this.stmts=Dr(e),this.ingestTx=e.transaction(t=>{for(let s of t)this.stmts.objInsert.run(s.repoId,s.hash,s.type,s.content)})}repo(e){return{objectStore:new De(this.stmts,this.ingestTx,e),refStore:new Ne(this.stmts,this.db,e)}}async deleteRepo(e){this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}},De=class{constructor(e,t,s){this.stmts=e;this.ingestTx=t;this.repoId=s;this.cache=new N}cache;async write(e,t){let s=_(e,t),n=await D(s);return this.stmts.objInsert.run(this.repoId,n,e,t),n}async read(e){let t=this.cache.get(e);if(t)return t;let s=this.stmts.objRead.get(this.repoId,e);if(!s)throw new Error(`object ${e} not found`);let n={type:s.type,content:new Uint8Array(s.content)};return this.cache.set(e,n),n}async exists(e){return this.stmts.objExists.get(this.repoId,e)!==null}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let n=await B(e,async i=>{let a=this.stmts.objRead.get(this.repoId,i);return a?{type:a.type,content:new Uint8Array(a.content)}:null}),o=n.map(i=>({repoId:this.repoId,hash:i.hash,type:i.type,content:i.content}));return this.ingestTx(o),n.length}async findByPrefix(e){return e.length<4?[]:this.stmts.objPrefix.all(this.repoId,`${e}*`).map(s=>s.hash)}},Ne=class{constructor(e,t,s){this.stmts=e;this.repoId=s;let n=e,o=s;this.casTx=t.transaction((i,a,f)=>{let c=n.refRead.get(o,i),l=null;if(c&&(c.type==="direct"?l=c.hash:c.type==="symbolic"&&c.target&&(l=Be(n,o,c.target))),a===null){if(c!==null)return!1}else if(l!==a)return!1;return f===null?n.refDelete.run(o,i):f.type==="symbolic"?n.refWrite.run(o,i,"symbolic",null,f.target):n.refWrite.run(o,i,"direct",f.hash,null),!0})}casTx;async readRef(e){let t=this.stmts.refRead.get(this.repoId,e);return t?t.type==="symbolic"?{type:"symbolic",target:t.target}:{type:"direct",hash:t.hash}:null}async writeRef(e,t){let s=W(t);s.type==="symbolic"?this.stmts.refWrite.run(this.repoId,e,"symbolic",null,s.target):this.stmts.refWrite.run(this.repoId,e,"direct",s.hash,null)}async deleteRef(e){this.stmts.refDelete.run(this.repoId,e)}async compareAndSwapRef(e,t,s){return this.casTx(e,t,s)}async listRefs(e){let t;e?t=this.stmts.refList.all(this.repoId,`${e}*`):t=this.stmts.refListAll.all(this.repoId);let s=[];for(let n of t)if(n.type==="direct"&&n.hash)s.push({name:n.name,hash:n.hash});else if(n.type==="symbolic"&&n.target){let o=Be(this.stmts,this.repoId,n.target);o&&s.push({name:n.name,hash:o})}return s}};function Be(r,e,t,s=0){if(s>10)return null;let n=r.refRead.get(e,t);return n?n.type==="direct"?n.hash:n.type==="symbolic"&&n.target?Be(r,e,n.target,s+1):null:null}var Nr=`
49
+ CREATE TABLE IF NOT EXISTS git_objects (
50
+ repo_id TEXT NOT NULL,
51
+ hash TEXT NOT NULL,
52
+ type TEXT NOT NULL,
53
+ content BLOB NOT NULL,
54
+ PRIMARY KEY (repo_id, hash)
55
+ ) WITHOUT ROWID;
56
+
57
+ CREATE TABLE IF NOT EXISTS git_refs (
58
+ repo_id TEXT NOT NULL,
59
+ name TEXT NOT NULL,
60
+ type TEXT NOT NULL CHECK(type IN ('direct', 'symbolic')),
61
+ hash TEXT,
62
+ target TEXT,
63
+ PRIMARY KEY (repo_id, name)
64
+ ) WITHOUT ROWID;
65
+ `;function k(r){return{run:(...e)=>{r.run(...e)},get:(...e)=>r.get(...e)??null,all:(...e)=>r.all(...e)}}function Br(r){return{objInsert:k(r.prepare("INSERT OR IGNORE INTO git_objects (repo_id, hash, type, content) VALUES (?, ?, ?, ?)")),objRead:k(r.prepare("SELECT type, content FROM git_objects WHERE repo_id = ? AND hash = ?")),objExists:k(r.prepare("SELECT 1 FROM git_objects WHERE repo_id = ? AND hash = ? LIMIT 1")),objPrefix:k(r.prepare("SELECT hash FROM git_objects WHERE repo_id = ? AND hash GLOB ?")),objDeleteAll:k(r.prepare("DELETE FROM git_objects WHERE repo_id = ?")),refRead:k(r.prepare("SELECT type, hash, target FROM git_refs WHERE repo_id = ? AND name = ?")),refWrite:k(r.prepare("INSERT OR REPLACE INTO git_refs (repo_id, name, type, hash, target) VALUES (?, ?, ?, ?, ?)")),refDelete:k(r.prepare("DELETE FROM git_refs WHERE repo_id = ? AND name = ?")),refList:k(r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ? AND name GLOB ?")),refListAll:k(r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ?")),refDeleteAll:k(r.prepare("DELETE FROM git_refs WHERE repo_id = ?"))}}var _e=class{db;stmts;ingestTx;constructor(e){this.db=e,e.exec(Nr),this.stmts=Br(e),this.ingestTx=e.transaction(t=>{for(let s of t)this.stmts.objInsert.run(s.repoId,s.hash,s.type,s.content)})}repo(e){return{objectStore:new We(this.stmts,this.ingestTx,e),refStore:new $e(this.stmts,this.db,e)}}async deleteRepo(e){this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}},We=class{constructor(e,t,s){this.stmts=e;this.ingestTx=t;this.repoId=s;this.cache=new N}cache;async write(e,t){let s=_(e,t),n=await D(s);return this.stmts.objInsert.run(this.repoId,n,e,t),n}async read(e){let t=this.cache.get(e);if(t)return t;let s=this.stmts.objRead.get(this.repoId,e);if(!s)throw new Error(`object ${e} not found`);let n={type:s.type,content:new Uint8Array(s.content)};return this.cache.set(e,n),n}async exists(e){return this.stmts.objExists.get(this.repoId,e)!==null}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let n=await B(e,async i=>{let a=this.stmts.objRead.get(this.repoId,i);return a?{type:a.type,content:new Uint8Array(a.content)}:null}),o=n.map(i=>({repoId:this.repoId,hash:i.hash,type:i.type,content:i.content}));return this.ingestTx(o),n.length}async findByPrefix(e){return e.length<4?[]:this.stmts.objPrefix.all(this.repoId,`${e}*`).map(s=>s.hash)}},$e=class{constructor(e,t,s){this.stmts=e;this.repoId=s;let n=e,o=s;this.casTx=t.transaction((i,a,f)=>{let c=n.refRead.get(o,i),l=null;if(c&&(c.type==="direct"?l=c.hash:c.type==="symbolic"&&c.target&&(l=Me(n,o,c.target))),a===null){if(c!==null)return!1}else if(l!==a)return!1;return f===null?n.refDelete.run(o,i):f.type==="symbolic"?n.refWrite.run(o,i,"symbolic",null,f.target):n.refWrite.run(o,i,"direct",f.hash,null),!0})}casTx;async readRef(e){let t=this.stmts.refRead.get(this.repoId,e);return t?t.type==="symbolic"?{type:"symbolic",target:t.target}:{type:"direct",hash:t.hash}:null}async writeRef(e,t){let s=W(t);s.type==="symbolic"?this.stmts.refWrite.run(this.repoId,e,"symbolic",null,s.target):this.stmts.refWrite.run(this.repoId,e,"direct",s.hash,null)}async deleteRef(e){this.stmts.refDelete.run(this.repoId,e)}async compareAndSwapRef(e,t,s){return this.casTx(e,t,s)}async listRefs(e){let t;e?t=this.stmts.refList.all(this.repoId,`${e}*`):t=this.stmts.refListAll.all(this.repoId);let s=[];for(let n of t)if(n.type==="direct"&&n.hash)s.push({name:n.name,hash:n.hash});else if(n.type==="symbolic"&&n.target){let o=Me(this.stmts,this.repoId,n.target);o&&s.push({name:n.name,hash:o})}return s}};function Me(r,e,t,s=0){if(s>10)return null;let n=r.refRead.get(e,t);return n?n.type==="direct"?n.hash:n.type==="symbolic"&&n.target?Me(r,e,n.target,s+1):null:null}function _r(r){return{query:(e,t)=>r.query(e,t),async transaction(e){let t=await r.connect();try{await t.query("BEGIN");let n=await e({query:(o,i)=>t.query(o,i),transaction:()=>{throw new Error("nested transactions not supported")}});return await t.query("COMMIT"),n}catch(s){throw await t.query("ROLLBACK"),s}finally{t.release()}}}}var Wr=`
43
66
  CREATE TABLE IF NOT EXISTS git_objects (
44
67
  repo_id TEXT NOT NULL,
45
68
  hash TEXT NOT NULL,
@@ -56,5 +79,5 @@ CREATE TABLE IF NOT EXISTS git_refs (
56
79
  target TEXT,
57
80
  PRIMARY KEY (repo_id, name)
58
81
  );
59
- `,w={objInsert:"INSERT INTO git_objects (repo_id, hash, type, content) VALUES ($1, $2, $3, $4) ON CONFLICT DO NOTHING",objRead:"SELECT type, content FROM git_objects WHERE repo_id = $1 AND hash = $2",objExists:"SELECT 1 FROM git_objects WHERE repo_id = $1 AND hash = $2 LIMIT 1",objPrefix:"SELECT hash FROM git_objects WHERE repo_id = $1 AND hash LIKE $2",objDeleteAll:"DELETE FROM git_objects WHERE repo_id = $1",refRead:"SELECT type, hash, target FROM git_refs WHERE repo_id = $1 AND name = $2",refReadForUpdate:"SELECT type, hash, target FROM git_refs WHERE repo_id = $1 AND name = $2 FOR UPDATE",refWrite:`INSERT INTO git_refs (repo_id, name, type, hash, target) VALUES ($1, $2, $3, $4, $5)
60
- ON CONFLICT (repo_id, name) DO UPDATE SET type = EXCLUDED.type, hash = EXCLUDED.hash, target = EXCLUDED.target`,refDelete:"DELETE FROM git_refs WHERE repo_id = $1 AND name = $2",refList:"SELECT name, type, hash, target FROM git_refs WHERE repo_id = $1 AND name LIKE $2",refListAll:"SELECT name, type, hash, target FROM git_refs WHERE repo_id = $1",refDeleteAll:"DELETE FROM git_refs WHERE repo_id = $1"},we=class r{constructor(e){this.db=e}static async create(e){return await e.query(Ft),new r(e)}repo(e){return{objectStore:new Re(this.db,e),refStore:new Pe(this.db,e)}}async deleteRepo(e){await this.db.query(w.objDeleteAll,[e]),await this.db.query(w.refDeleteAll,[e])}},Re=class{constructor(e,t){this.db=e;this.repoId=t;this.cache=new I}cache;async write(e,t){let n=S(e,t),s=await v(n);return await this.db.query(w.objInsert,[this.repoId,s,e,t]),s}async read(e){let t=this.cache.get(e);if(t)return t;let{rows:n}=await this.db.query(w.objRead,[this.repoId,e]),s=n[0];if(!s)throw new Error(`object ${e} not found`);let a={type:s.type,content:new Uint8Array(s.content)};return this.cache.set(e,a),a}async exists(e){let{rows:t}=await this.db.query(w.objExists,[this.repoId,e]);return t.length>0}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let s=this.db,a=this.repoId,i=await A(e,async o=>{let{rows:f}=await s.query(w.objRead,[a,o]),c=f[0];return c?{type:c.type,content:new Uint8Array(c.content)}:null});return await s.transaction(async o=>{for(let f of i)await o.query(w.objInsert,[a,f.hash,f.type,f.content])}),i.length}async findByPrefix(e){if(e.length<4)return[];let{rows:t}=await this.db.query(w.objPrefix,[this.repoId,`${e}%`]);return t.map(n=>n.hash)}},Pe=class{constructor(e,t){this.db=e;this.repoId=t}async readRef(e){let{rows:t}=await this.db.query(w.refRead,[this.repoId,e]),n=t[0];return n?n.type==="symbolic"?{type:"symbolic",target:n.target}:{type:"direct",hash:n.hash}:null}async writeRef(e,t){let n=T(t);n.type==="symbolic"?await this.db.query(w.refWrite,[this.repoId,e,"symbolic",null,n.target]):await this.db.query(w.refWrite,[this.repoId,e,"direct",n.hash,null])}async deleteRef(e){await this.db.query(w.refDelete,[this.repoId,e])}async compareAndSwapRef(e,t,n){return this.db.transaction(async s=>{let{rows:a}=await s.query(w.refReadForUpdate,[this.repoId,e]),i=a[0]??null,o=null;if(i&&(i.type==="direct"?o=i.hash:i.type==="symbolic"&&i.target&&(o=await Oe(s,this.repoId,i.target))),t===null){if(i!==null)return!1}else if(o!==t)return!1;return n===null?await s.query(w.refDelete,[this.repoId,e]):n.type==="symbolic"?await s.query(w.refWrite,[this.repoId,e,"symbolic",null,n.target]):await s.query(w.refWrite,[this.repoId,e,"direct",n.hash,null]),!0})}async listRefs(e){let t;e?{rows:t}=await this.db.query(w.refList,[this.repoId,`${e}%`]):{rows:t}=await this.db.query(w.refListAll,[this.repoId]);let n=[];for(let s of t)if(s.type==="direct"&&s.hash)n.push({name:s.name,hash:s.hash});else if(s.type==="symbolic"&&s.target){let a=await Oe(this.db,this.repoId,s.target);a&&n.push({name:s.name,hash:a})}return n}};async function Oe(r,e,t,n=0){if(n>10)return null;let{rows:s}=await r.query(w.refRead,[e,t]),a=s[0];return a?a.type==="direct"?a.hash:a.type==="symbolic"&&a.target?Oe(r,e,a.target,n+1):null:null}export{ue as MemoryStorage,L as PackCache,we as PgStorage,be as SqliteStorage,fe as buildRefAdvertisementBytes,ce as collectRefs,Bt as composeHooks,Ht as createGitServer,$t as createStandardHooks,de as handleUploadPack,le as ingestReceivePack,Dt as toNodeHandler,_t as wrapBetterSqlite3,Gt as wrapPgPool};
82
+ `,E={objInsert:"INSERT INTO git_objects (repo_id, hash, type, content) VALUES ($1, $2, $3, $4) ON CONFLICT DO NOTHING",objRead:"SELECT type, content FROM git_objects WHERE repo_id = $1 AND hash = $2",objExists:"SELECT 1 FROM git_objects WHERE repo_id = $1 AND hash = $2 LIMIT 1",objPrefix:"SELECT hash FROM git_objects WHERE repo_id = $1 AND hash LIKE $2",objDeleteAll:"DELETE FROM git_objects WHERE repo_id = $1",refRead:"SELECT type, hash, target FROM git_refs WHERE repo_id = $1 AND name = $2",refReadForUpdate:"SELECT type, hash, target FROM git_refs WHERE repo_id = $1 AND name = $2 FOR UPDATE",refWrite:`INSERT INTO git_refs (repo_id, name, type, hash, target) VALUES ($1, $2, $3, $4, $5)
83
+ ON CONFLICT (repo_id, name) DO UPDATE SET type = EXCLUDED.type, hash = EXCLUDED.hash, target = EXCLUDED.target`,refDelete:"DELETE FROM git_refs WHERE repo_id = $1 AND name = $2",refList:"SELECT name, type, hash, target FROM git_refs WHERE repo_id = $1 AND name LIKE $2",refListAll:"SELECT name, type, hash, target FROM git_refs WHERE repo_id = $1",refDeleteAll:"DELETE FROM git_refs WHERE repo_id = $1"},Ge=class r{constructor(e){this.db=e}static async create(e){return await e.query(Wr),new r(e)}repo(e){return{objectStore:new Fe(this.db,e),refStore:new qe(this.db,e)}}async deleteRepo(e){await this.db.query(E.objDeleteAll,[e]),await this.db.query(E.refDeleteAll,[e])}},Fe=class{constructor(e,t){this.db=e;this.repoId=t;this.cache=new N}cache;async write(e,t){let s=_(e,t),n=await D(s);return await this.db.query(E.objInsert,[this.repoId,n,e,t]),n}async read(e){let t=this.cache.get(e);if(t)return t;let{rows:s}=await this.db.query(E.objRead,[this.repoId,e]),n=s[0];if(!n)throw new Error(`object ${e} not found`);let o={type:n.type,content:new Uint8Array(n.content)};return this.cache.set(e,o),o}async exists(e){let{rows:t}=await this.db.query(E.objExists,[this.repoId,e]);return t.length>0}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let n=this.db,o=this.repoId,i=await B(e,async a=>{let{rows:f}=await n.query(E.objRead,[o,a]),c=f[0];return c?{type:c.type,content:new Uint8Array(c.content)}:null});return await n.transaction(async a=>{for(let f of i)await a.query(E.objInsert,[o,f.hash,f.type,f.content])}),i.length}async findByPrefix(e){if(e.length<4)return[];let{rows:t}=await this.db.query(E.objPrefix,[this.repoId,`${e}%`]);return t.map(s=>s.hash)}},qe=class{constructor(e,t){this.db=e;this.repoId=t}async readRef(e){let{rows:t}=await this.db.query(E.refRead,[this.repoId,e]),s=t[0];return s?s.type==="symbolic"?{type:"symbolic",target:s.target}:{type:"direct",hash:s.hash}:null}async writeRef(e,t){let s=W(t);s.type==="symbolic"?await this.db.query(E.refWrite,[this.repoId,e,"symbolic",null,s.target]):await this.db.query(E.refWrite,[this.repoId,e,"direct",s.hash,null])}async deleteRef(e){await this.db.query(E.refDelete,[this.repoId,e])}async compareAndSwapRef(e,t,s){return this.db.transaction(async n=>{let{rows:o}=await n.query(E.refReadForUpdate,[this.repoId,e]),i=o[0]??null,a=null;if(i&&(i.type==="direct"?a=i.hash:i.type==="symbolic"&&i.target&&(a=await ze(n,this.repoId,i.target))),t===null){if(i!==null)return!1}else if(a!==t)return!1;return s===null?await n.query(E.refDelete,[this.repoId,e]):s.type==="symbolic"?await n.query(E.refWrite,[this.repoId,e,"symbolic",null,s.target]):await n.query(E.refWrite,[this.repoId,e,"direct",s.hash,null]),!0})}async listRefs(e){let t;e?{rows:t}=await this.db.query(E.refList,[this.repoId,`${e}%`]):{rows:t}=await this.db.query(E.refListAll,[this.repoId]);let s=[];for(let n of t)if(n.type==="direct"&&n.hash)s.push({name:n.name,hash:n.hash});else if(n.type==="symbolic"&&n.target){let o=await ze(this.db,this.repoId,n.target);o&&s.push({name:n.name,hash:o})}return s}};async function ze(r,e,t,s=0){if(s>10)return null;let{rows:n}=await r.query(E.refRead,[e,t]),o=n[0];return o?o.type==="direct"?o.hash:o.type==="symbolic"&&o.target?ze(r,e,o.target,s+1):null:null}export{_e as BetterSqlite3Storage,He as BunSqliteStorage,Ue as MemoryStorage,Ge as PgStorage,Ur as composeHooks,kr as createGitServer,Lr as createStandardHooks,Sr as toNodeHandler,Cr as withAuth,_r as wrapPgPool};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "just-git",
3
- "version": "1.1.11",
3
+ "version": "1.2.3",
4
4
  "description": "Pure TypeScript git implementation: virtual filesystem client and embeddable server.",
5
5
  "keywords": [
6
6
  "agent",
@@ -61,9 +61,11 @@
61
61
  "devDependencies": {
62
62
  "@changesets/changelog-github": "^0.6.0",
63
63
  "@changesets/cli": "^2.30.0",
64
+ "@types/better-sqlite3": "^7.6.13",
64
65
  "@types/bun": "latest",
65
66
  "@types/node": "^25.4.0",
66
67
  "@types/pg": "^8.18.0",
68
+ "better-sqlite3": "^12.8.0",
67
69
  "just-bash": "^2.9.7",
68
70
  "knip": "^5.86.0",
69
71
  "oxfmt": "^0.38.0",