just-git 1.3.7 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -6
- package/dist/{hooks-DNBNCTgb.d.ts → hooks-C7c_BLqp.d.ts} +18 -62
- package/dist/index.d.ts +2 -2
- package/dist/index.js +322 -322
- package/dist/repo/index.d.ts +3 -148
- package/dist/repo/index.js +11 -11
- package/dist/server/index.d.ts +74 -37
- package/dist/server/index.js +70 -69
- package/dist/writing-CnM1ufDP.d.ts +204 -0
- package/package.json +1 -1
package/dist/server/index.js
CHANGED
|
@@ -1,69 +1,70 @@
|
|
|
1
|
-
var Ee=(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 I(r){return r!=null&&typeof r=="object"&&"reject"in r&&r.reject===!0}var re="0000000000000000000000000000000000000000",Rt=(()=>{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 ke(r){let e="";for(let t=0;t<20;t++)e+=Rt[r[t]];return e}function ne(r,e){let t="";for(let n=0;n<20;n++)t+=Rt[r[e+n]];return t}function Pe(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 Sr=new TextEncoder;function He(r){return typeof r=="string"?Sr.encode(r):r}function Ar(){if(typeof globalThis.Bun<"u")return()=>{let r=new Bun.CryptoHasher("sha1"),e={update(t){return r.update(He(t)),e},hex:()=>Promise.resolve(r.digest("hex"))};return e};try{let r=Ee(["node","crypto"].join(":"));if(typeof r.createHash=="function")return()=>{let e=r.createHash("sha1"),t={update(n){return e.update(He(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(He(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 ke(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 xt=Ar(),G=xt;async function Ot(r){return xt().update(r).hex()}var jr=new Set(["tree","commit","tag"]),ve=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(!jr.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}};var N=Uint8Array,q=Uint16Array,Ir=Int32Array,Et=new N([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]),kt=new N([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]),Tr=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pt=(r,e)=>{let t=new q(31);for(let s=0;s<31;++s)t[s]=e+=1<<r[s-1];let n=new Ir(t[30]);for(let s=1;s<30;++s)for(let a=t[s];a<t[s+1];++a)n[a]=a-t[s]<<5|s;return{b:t,r:n}},{b:vt}=Pt(Et,2);vt[28]=258;var{b:Ur}=Pt(kt,0),Be=new q(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,Be[r]=((e&65280)>>8|(e&255)<<8)>>1}var se=(r,e,t)=>{let n=r.length,s=0,a=new q(e);for(;s<n;++s)r[s]&&++a[r[s]-1];let i=new q(e);for(s=1;s<e;++s)i[s]=i[s-1]+a[s-1]<<1;let o;if(t){o=new q(1<<e);let f=15-e;for(s=0;s<n;++s)if(r[s]){let c=s<<4|r[s],l=e-r[s],d=i[r[s]-1]++<<l;for(let p=d|(1<<l)-1;d<=p;++d)o[Be[d]>>f]=c}}else for(o=new q(n),s=0;s<n;++s)r[s]&&(o[s]=Be[i[r[s]-1]++]>>15-r[s]);return o},ae=new N(288);for(let r=0;r<144;++r)ae[r]=8;for(let r=144;r<256;++r)ae[r]=9;for(let r=256;r<280;++r)ae[r]=7;for(let r=280;r<288;++r)ae[r]=8;var St=new N(32);for(let r=0;r<32;++r)St[r]=5;var Lr=se(ae,9,1),Cr=se(St,5,1),De=r=>{let e=r[0];for(let t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},D=(r,e,t)=>{let n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},Ne=(r,e)=>{let t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},At=r=>(r+7)/8|0,Hr=(r,e,t)=>((e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new N(r.subarray(e,t))),B=(r,e)=>{let t=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||t[r]||"unknown inflate error")},jt=(r,e,t,n)=>{let s=r.length,a=n?n.length:0;if(!s||e.f&&!e.l)return t||new N(0);let i=!t,o=i||e.i!=2,f=e.i;i&&(t=new N(s*3));let c=b=>{let R=t.length;if(b>R){let E=new N(Math.max(R*2,b));E.set(t),t=E}},l=e.f||0,d=e.p||0,p=e.b||0,h=e.l,u=e.d,m=e.m,x=e.n,y=s*8;do{if(!h){l=D(r,d,1);let w=D(r,d+1,3);if(d+=3,w)if(w==1)h=Lr,u=Cr,m=9,x=5;else if(w==2){let g=D(r,d,31)+257,k=D(r,d+10,15)+4,v=g+D(r,d+5,31)+1;d+=14;let j=new N(v),P=new N(19);for(let M=0;M<k;++M)P[Tr[M]]=D(r,d+M*3,7);d+=k*3;let C=De(P),S=(1<<C)-1,H=se(P,C,1);for(let M=0;M<v;){let gt=H[D(r,d,S)];d+=gt&15;let te=gt>>4;if(te<16)j[M++]=te;else{let wt=0,Oe=0;for(te==16?(Oe=3+D(r,d,3),d+=2,wt=j[M-1]):te==17?(Oe=3+D(r,d,7),d+=3):te==18&&(Oe=11+D(r,d,127),d+=7);Oe--;)j[M++]=wt}}let $=j.subarray(0,g),mt=j.subarray(g);m=De($),x=De(mt),h=se($,m,1),u=se(mt,x,1)}else B(1);else{let g=At(d)+4,k=r[g-4]|r[g-3]<<8,v=g+k;if(v>s){f&&B(0);break}o&&c(p+k),t.set(r.subarray(g,v),p),e.b=p+=k,e.p=d=v*8,e.f=l;continue}if(d>y){f&&B(0);break}}o&&c(p+131072);let b=(1<<m)-1,R=(1<<x)-1,E=d;for(;;E=d){let w=h[Ne(r,d)&b],g=w>>4;if(d+=w&15,d>y){f&&B(0);break}if(w||B(2),g<256)t[p++]=g;else if(g==256){E=d,h=null;break}else{let k=g-254;if(g>264){let S=g-257,H=Et[S];k=D(r,d,(1<<H)-1)+vt[S],d+=H}let v=u[Ne(r,d)&R],j=v>>4;v||B(3),d+=v&15;let P=Ur[j];if(j>3){let S=kt[j];P+=Ne(r,d)&(1<<S)-1,d+=S}if(d>y){f&&B(0);break}o&&c(p+131072);let C=p+k;if(p<P){let S=a-P,H=Math.min(P,C);for(S+p<0&&B(3);p<H;++p)t[p]=n[S+p]}for(;p<C;++p)t[p]=t[p-P]}}e.l=h,e.p=E,e.b=p,e.f=l,h&&(l=1,e.m=m,e.d=u,e.n=x)}while(!l);return p!=t.length&&i?Hr(t,0,p):t.subarray(0,p)},It=r=>(((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&B(0,"invalid zlib data"),r[1]&32&&B(0,"zlib dictionaries are not supported"),2);function Tt(r){let e=It(r);return jt(r.subarray(e,-4),{i:2})}function Me(r){let e=It(r),t={i:2},n=jt(r.subarray(e),t),s=At(t.p);return{result:n,bytesConsumed:e+s+4}}async function Dr(){let r;if(!(typeof document<"u"))try{r=Ee(["node","zlib"].join(":"))}catch{try{r=await import(["node","zlib"].join(":"))}catch{}}if(r&&typeof r.deflateSync=="function"&&typeof r.inflateSync=="function"){let n=null;try{let s=r.inflateSync(r.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(n=a=>{let i=r.inflateSync(a,{info:!0});return{result:new Uint8Array(i.buffer),bytesConsumed:i.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(r.deflateSync(s)),inflateSync:s=>new Uint8Array(r.inflateSync(s)),inflateWithConsumed:n??Me}}let t;return typeof globalThis.CompressionStream=="function"?t=async n=>{let s=new CompressionStream("deflate"),a=s.writable.getWriter();return a.write(n),a.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:t=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:t,inflateSync:Tt,inflateWithConsumed:Me}}var Nr=null;function Ut(){return Nr??=Dr()}async function Se(r){return await(await Ut()).deflateSync(r)}async function $e(r,e){let t=await Ut(),{result:n,bytesConsumed:s}=t.inflateWithConsumed(r);if(n.byteLength!==e)throw new Error(`Inflate size mismatch: got ${n.byteLength}, expected ${e}`);return{result:n,bytesConsumed:s}}var z=1346454347,je=2,Ht=1,Dt=2,Nt=3,Bt=4,W=6,oe=7,Mt={[Ht]:"commit",[Dt]:"tree",[Nt]:"blob",[Bt]:"tag"},$t={commit:Ht,tree:Dt,blob:Nt,tag:Bt};async function Wt(r,e){let t=new DataView(r.buffer,r.byteOffset,r.byteLength),n=t.getUint32(0);if(n!==z)throw new Error(`Invalid pack signature: 0x${n.toString(16)} (expected 0x${z.toString(16)})`);let s=t.getUint32(4);if(s!==je)throw new Error(`Unsupported pack version: ${s}`);if(r.byteLength>=32){let c=ne(r,r.byteLength-20),l=G();l.update(r.subarray(0,r.byteLength-20));let d=await l.hex();if(d!==c)throw new Error(`pack checksum mismatch: expected ${c}, computed ${d}`)}let a=t.getUint32(8),i=[],o=12;for(let c=0;c<a;c++){let l=await Br(r,o);i.push(l),o=l.nextOffset}return(await Mr(i,e)).map((c,l)=>({...c,offset:i[l].headerOffset,nextOffset:i[l].nextOffset}))}async function Br(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===W){let d=r[e++];for(o=d&127;d&128;)o+=1,d=r[e++],o=(o<<7)+(d&127);o=t-o}else s===oe&&(f=ne(r,e),e+=20);let{result:c,bytesConsumed:l}=await $e(r.subarray(e),a);return{headerOffset:t,typeNum:s,inflated:c,baseOffset:o,baseHash:f,nextOffset:e+l}}var Lt=50;async function Mr(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,i=0){if(i>Lt)throw new Error(`delta chain depth ${i} exceeds limit of ${Lt}`);let o=n[a];if(o)return o;let f=r[a];if(f.typeNum!==W&&f.typeNum!==oe){let h=Mt[f.typeNum];if(!h)throw new Error(`Unknown object type: ${f.typeNum}`);let u={type:h,content:f.inflated,hash:await V(h,f.inflated)};return n[a]=u,u}if(f.typeNum===W){let h=t.get(f.baseOffset);if(h===void 0)throw new Error(`OFS_DELTA base not found at offset ${f.baseOffset}`);let u=await s(h,i+1),m=Ae(u.content,f.inflated),x={type:u.type,content:m,hash:await V(u.type,m)};return n[a]=x,x}let c=await $r(r,n,f.baseHash,s),l;if(c!==void 0)l=await s(c,i+1);else if(e){let h=await e(f.baseHash);h&&(l=h)}if(!l)throw new Error(`REF_DELTA base not found for hash ${f.baseHash}`);let d=Ae(l.content,f.inflated),p={type:l.type,content:d,hash:await V(l.type,d)};return n[a]=p,p}for(let a=0;a<r.length;a++)await s(a);return n}async function $r(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!==W&&a.typeNum!==oe&&(await n(s)).hash===t)return s}}var We=class{buf=new Uint8Array(0);iter;eof=!1;_bytesRead=0;hasher;constructor(e,t=!1){this.iter=e[Symbol.asyncIterator](),this.hasher=t?G():null}get bytesRead(){return this._bytesRead}async pullMore(){if(this.eof)return!1;let{value:e,done:t}=await this.iter.next();if(t||!e)return this.eof=!0,!1;if(this.buf.byteLength===0)this.buf=new Uint8Array(e);else{let n=new Uint8Array(this.buf.byteLength+e.byteLength);n.set(this.buf),n.set(e,this.buf.byteLength),this.buf=n}return!0}async ensure(e){for(;this.buf.byteLength<e;)if(!await this.pullMore())throw new Error(`Unexpected end of pack data: needed ${e} bytes, have ${this.buf.byteLength}`)}consume(e){let t=new Uint8Array(this.buf.subarray(0,e));return this.hasher?.update(t),this.buf=this.buf.subarray(e),this._bytesRead+=e,t}async readByte(){return await this.ensure(1),this.consume(1)[0]}async readExact(e){return await this.ensure(e),this.consume(e)}async readRaw(e){await this.ensure(e);let t=new Uint8Array(this.buf.subarray(0,e));return this.buf=this.buf.subarray(e),this._bytesRead+=e,t}async inflateNext(e){for(this.buf.byteLength===0&&!this.eof&&await this.pullMore();;)try{let{result:t,bytesConsumed:n}=await $e(this.buf,e);return this.consume(n),t}catch{if(!this.eof&&await this.pullMore())continue;throw new Error(`Failed to inflate pack entry at byte ${this._bytesRead} (expected ${e} bytes)`)}}async hashHex(){if(!this.hasher)throw new Error("Hashing not enabled");return this.hasher.hex()}};async function*_t(r,e){let t=new We(r,!0),n=await t.readExact(12),s=new DataView(n.buffer,n.byteOffset,n.byteLength),a=s.getUint32(0);if(a!==z)throw new Error(`Invalid pack signature: 0x${a.toString(16)} (expected 0x${z.toString(16)})`);let i=s.getUint32(4);if(i!==je)throw new Error(`Unsupported pack version: ${i}`);let o=s.getUint32(8),f=new Map,c=new Map;for(let p=0;p<o;p++){let h=t.bytesRead,u=await t.readByte(),m=u>>4&7,x=u&15,y=4;for(;u&128;)u=await t.readByte(),x|=(u&127)<<y,y+=7;let b,R;if(m===W){let g=await t.readByte();for(b=g&127;g&128;)b+=1,g=await t.readByte(),b=(b<<7)+(g&127);b=h-b}else if(m===oe){let g=await t.readExact(20);R=ne(g,0)}let E=await t.inflateNext(x),w;if(m!==W&&m!==oe){let g=Mt[m];if(!g)throw new Error(`Unknown object type: ${m}`);w={type:g,content:E,hash:await V(g,E)}}else if(m===W){let g=f.get(b);if(!g)throw new Error(`OFS_DELTA base not found at offset ${b}`);let k=Ae(g.content,E);w={type:g.type,content:k,hash:await V(g.type,k)}}else{let g=c.get(R);if(!g&&e&&(g=await e(R)??void 0),!g)throw new Error(`REF_DELTA base not found for hash ${R}`);let k=Ae(g.content,E);w={type:g.type,content:k,hash:await V(g.type,k)}}f.set(h,w),c.set(w.hash,w),yield w}let l=ne(await t.readRaw(20),0),d=await t.hashHex();if(d!==l)throw new Error(`pack checksum mismatch: expected ${l}, computed ${d}`)}function Ae(r,e){let t=0,{value:n,newPos:s}=Ct(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}=Ct(e,t);t=i;let o=new Uint8Array(a),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),o.set(r.subarray(l,l+d),f),f+=d}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 K(r){let e=[],t=new Map,n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,z),s.setUint32(4,je),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 l=_e(W,o.delta.byteLength),d=_r(a-c),p=await Se(o.delta);e.push(l,d,p),a+=l.byteLength+d.byteLength+p.byteLength}else{let l=$t[o.type],d=_e(l,o.content.byteLength),p=await Se(o.content);e.push(d,p),a+=d.byteLength+p.byteLength}i.push({hash:o.hash,offset:f,nextOffset:a})}return{data:await Wr(e),entries:i}}async function*Ft(r,e){let t=G(),n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,z),s.setUint32(4,je),s.setUint32(8,r),t.update(n),yield n;for await(let a of e){let i=$t[a.type],o=_e(i,a.content.byteLength),f=await Se(a.content);t.update(o),t.update(f),yield Fr(o,f)}yield Pe(await t.hex())}async function Wr(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=G();s.update(t.subarray(0,n));let a=await s.hex();return t.set(Pe(a),n),t}function _r(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 _e(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 Ct(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 Fr(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(r,0),t.set(e,r.byteLength),t}var Gr=new TextEncoder;async function V(r,e){let t=Gr.encode(`${r} ${e.byteLength}\0`),n=G();return n.update(t),n.update(e),n.hex()}var qr=new TextEncoder,Qn=new TextDecoder;function Gt(r,e){let t=qr.encode(`${r} ${e.byteLength}\0`),n=new Uint8Array(t.byteLength+e.byteLength);return n.set(t),n.set(e,t.byteLength),n}function ie(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 ns=new TextEncoder,zr=new TextDecoder;function ce(r){let e=zr.decode(r),t=e.indexOf(`
|
|
1
|
+
var ve=(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 U(r){return r!=null&&typeof r=="object"&&"reject"in r&&r.reject===!0}var ne="0000000000000000000000000000000000000000",At=(()=>{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 je(r){let e="";for(let t=0;t<20;t++)e+=At[r[t]];return e}function se(r,e){let t="";for(let n=0;n<20;n++)t+=At[r[e+n]];return t}function ae(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 Br=new Set(["tree","commit","tag"]),Ie=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(!Br.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}};var Nr=new TextEncoder;function Fe(r){return typeof r=="string"?Nr.encode(r):r}function Mr(){if(typeof globalThis.Bun<"u")return()=>{let r=new Bun.CryptoHasher("sha1"),e={update(t){return r.update(Fe(t)),e},hex:()=>Promise.resolve(r.digest("hex"))};return e};try{let r=ve(["node","crypto"].join(":"));if(typeof r.createHash=="function")return()=>{let e=r.createHash("sha1"),t={update(n){return e.update(Fe(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(Fe(t)),e},async hex(){let t=0;for(let o of r)t+=o.byteLength;let n=new Uint8Array(t),s=0;for(let o of r)n.set(o,s),s+=o.byteLength;let a=await crypto.subtle.digest("SHA-1",n);return je(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 St=Mr(),z=St;async function vt(r){return St().update(r).hex()}var B=Uint8Array,K=Uint16Array,$r=Int32Array,jt=new B([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]),It=new B([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]),Wr=new B([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Tt=(r,e)=>{let t=new K(31);for(let s=0;s<31;++s)t[s]=e+=1<<r[s-1];let n=new $r(t[30]);for(let s=1;s<30;++s)for(let a=t[s];a<t[s+1];++a)n[a]=a-t[s]<<5|s;return{b:t,r:n}},{b:Ut}=Tt(jt,2);Ut[28]=258;var{b:_r}=Tt(It,0),Ve=new K(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,Ve[r]=((e&65280)>>8|(e&255)<<8)>>1}var ie=(r,e,t)=>{let n=r.length,s=0,a=new K(e);for(;s<n;++s)r[s]&&++a[r[s]-1];let o=new K(e);for(s=1;s<e;++s)o[s]=o[s-1]+a[s-1]<<1;let i;if(t){i=new K(1<<e);let f=15-e;for(s=0;s<n;++s)if(r[s]){let c=s<<4|r[s],l=e-r[s],d=o[r[s]-1]++<<l;for(let p=d|(1<<l)-1;d<=p;++d)i[Ve[d]>>f]=c}}else for(i=new K(n),s=0;s<n;++s)r[s]&&(i[s]=Ve[o[r[s]-1]++]>>15-r[s]);return i},oe=new B(288);for(let r=0;r<144;++r)oe[r]=8;for(let r=144;r<256;++r)oe[r]=9;for(let r=256;r<280;++r)oe[r]=7;for(let r=280;r<288;++r)oe[r]=8;var Lt=new B(32);for(let r=0;r<32;++r)Lt[r]=5;var Fr=ie(oe,9,1),Gr=ie(Lt,5,1),Ge=r=>{let e=r[0];for(let t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},D=(r,e,t)=>{let n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},qe=(r,e)=>{let t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},Ct=r=>(r+7)/8|0,qr=(r,e,t)=>((e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new B(r.subarray(e,t))),N=(r,e)=>{let t=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||t[r]||"unknown inflate error")},Ht=(r,e,t,n)=>{let s=r.length,a=n?n.length:0;if(!s||e.f&&!e.l)return t||new B(0);let o=!t,i=o||e.i!=2,f=e.i;o&&(t=new B(s*3));let c=y=>{let b=t.length;if(y>b){let O=new B(Math.max(b*2,y));O.set(t),t=O}},l=e.f||0,d=e.p||0,p=e.b||0,h=e.l,u=e.d,m=e.m,R=e.n,k=s*8;do{if(!h){l=D(r,d,1);let w=D(r,d+1,3);if(d+=3,w)if(w==1)h=Fr,u=Gr,m=9,R=5;else if(w==2){let g=D(r,d,31)+257,E=D(r,d+10,15)+4,P=g+D(r,d+5,31)+1;d+=14;let S=new B(P),A=new B(19);for(let M=0;M<E;++M)A[Wr[M]]=D(r,d+M*3,7);d+=E*3;let j=Ge(A),I=(1<<j)-1,T=ie(A,j,1);for(let M=0;M<P;){let kt=T[D(r,d,I)];d+=kt&15;let re=kt>>4;if(re<16)S[M++]=re;else{let Pt=0,Se=0;for(re==16?(Se=3+D(r,d,3),d+=2,Pt=S[M-1]):re==17?(Se=3+D(r,d,7),d+=3):re==18&&(Se=11+D(r,d,127),d+=7);Se--;)S[M++]=Pt}}let $=S.subarray(0,g),W=S.subarray(g);m=Ge($),R=Ge(W),h=ie($,m,1),u=ie(W,R,1)}else N(1);else{let g=Ct(d)+4,E=r[g-4]|r[g-3]<<8,P=g+E;if(P>s){f&&N(0);break}i&&c(p+E),t.set(r.subarray(g,P),p),e.b=p+=E,e.p=d=P*8,e.f=l;continue}if(d>k){f&&N(0);break}}i&&c(p+131072);let y=(1<<m)-1,b=(1<<R)-1,O=d;for(;;O=d){let w=h[qe(r,d)&y],g=w>>4;if(d+=w&15,d>k){f&&N(0);break}if(w||N(2),g<256)t[p++]=g;else if(g==256){O=d,h=null;break}else{let E=g-254;if(g>264){let I=g-257,T=jt[I];E=D(r,d,(1<<T)-1)+Ut[I],d+=T}let P=u[qe(r,d)&b],S=P>>4;P||N(3),d+=P&15;let A=_r[S];if(S>3){let I=It[S];A+=qe(r,d)&(1<<I)-1,d+=I}if(d>k){f&&N(0);break}i&&c(p+131072);let j=p+E;if(p<A){let I=a-A,T=Math.min(A,j);for(I+p<0&&N(3);p<T;++p)t[p]=n[I+p]}for(;p<j;++p)t[p]=t[p-A]}}e.l=h,e.p=O,e.b=p,e.f=l,h&&(l=1,e.m=m,e.d=u,e.n=R)}while(!l);return p!=t.length&&o?qr(t,0,p):t.subarray(0,p)},Dt=r=>(((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&N(0,"invalid zlib data"),r[1]&32&&N(0,"zlib dictionaries are not supported"),2);function Bt(r){let e=Dt(r);return Ht(r.subarray(e,-4),{i:2})}function ze(r){let e=Dt(r),t={i:2},n=Ht(r.subarray(e),t),s=Ct(t.p);return{result:n,bytesConsumed:e+s+4}}async function Vr(){let r;if(!(typeof document<"u"))try{r=ve(["node","zlib"].join(":"))}catch{try{r=await import(["node","zlib"].join(":"))}catch{}}if(r&&typeof r.deflateSync=="function"&&typeof r.inflateSync=="function"){let n=null;try{let s=r.inflateSync(r.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(n=a=>{let o=r.inflateSync(a,{info:!0});return{result:new Uint8Array(o.buffer),bytesConsumed:o.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(r.deflateSync(s)),inflateSync:s=>new Uint8Array(r.inflateSync(s)),inflateWithConsumed:n??ze}}let t;return typeof globalThis.CompressionStream=="function"?t=async n=>{let s=new CompressionStream("deflate"),a=s.writable.getWriter();return a.write(n),a.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:t=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:t,inflateSync:Bt,inflateWithConsumed:ze}}var zr=null;function Nt(){return zr??=Vr()}async function Te(r){return await(await Nt()).deflateSync(r)}async function Ke(r,e){let t=await Nt(),{result:n,bytesConsumed:s}=t.inflateWithConsumed(r);if(n.byteLength!==e)throw new Error(`Inflate size mismatch: got ${n.byteLength}, expected ${e}`);return{result:n,bytesConsumed:s}}var Y=1346454347,Le=2,Wt=1,_t=2,Ft=3,Gt=4,_=6,ce=7,qt={[Wt]:"commit",[_t]:"tree",[Ft]:"blob",[Gt]:"tag"},Vt={commit:Wt,tree:_t,blob:Ft,tag:Gt};async function zt(r,e){let t=new DataView(r.buffer,r.byteOffset,r.byteLength),n=t.getUint32(0);if(n!==Y)throw new Error(`Invalid pack signature: 0x${n.toString(16)} (expected 0x${Y.toString(16)})`);let s=t.getUint32(4);if(s!==Le)throw new Error(`Unsupported pack version: ${s}`);if(r.byteLength>=32){let c=se(r,r.byteLength-20),l=z();l.update(r.subarray(0,r.byteLength-20));let d=await l.hex();if(d!==c)throw new Error(`pack checksum mismatch: expected ${c}, computed ${d}`)}let a=t.getUint32(8),o=[],i=12;for(let c=0;c<a;c++){let l=await Kr(r,i);o.push(l),i=l.nextOffset}return(await Xr(o,e)).map((c,l)=>({...c,offset:o[l].headerOffset,nextOffset:o[l].nextOffset}))}async function Kr(r,e){let t=e,n=r[e++],s=n>>4&7,a=n&15,o=4;for(;n&128;)n=r[e++],a|=(n&127)<<o,o+=7;let i,f;if(s===_){let d=r[e++];for(i=d&127;d&128;)i+=1,d=r[e++],i=(i<<7)+(d&127);i=t-i}else s===ce&&(f=se(r,e),e+=20);let{result:c,bytesConsumed:l}=await Ke(r.subarray(e),a);return{headerOffset:t,typeNum:s,inflated:c,baseOffset:i,baseHash:f,nextOffset:e+l}}var Mt=50;async function Xr(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,o=0){if(o>Mt)throw new Error(`delta chain depth ${o} exceeds limit of ${Mt}`);let i=n[a];if(i)return i;let f=r[a];if(f.typeNum!==_&&f.typeNum!==ce){let h=qt[f.typeNum];if(!h)throw new Error(`Unknown object type: ${f.typeNum}`);let u={type:h,content:f.inflated,hash:await X(h,f.inflated)};return n[a]=u,u}if(f.typeNum===_){let h=t.get(f.baseOffset);if(h===void 0)throw new Error(`OFS_DELTA base not found at offset ${f.baseOffset}`);let u=await s(h,o+1),m=Ue(u.content,f.inflated),R={type:u.type,content:m,hash:await X(u.type,m)};return n[a]=R,R}let c=await Yr(r,n,f.baseHash,s),l;if(c!==void 0)l=await s(c,o+1);else if(e){let h=await e(f.baseHash);h&&(l=h)}if(!l)throw new Error(`REF_DELTA base not found for hash ${f.baseHash}`);let d=Ue(l.content,f.inflated),p={type:l.type,content:d,hash:await X(l.type,d)};return n[a]=p,p}for(let a=0;a<r.length;a++)await s(a);return n}async function Yr(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!==_&&a.typeNum!==ce&&(await n(s)).hash===t)return s}}var Xe=class{buf=new Uint8Array(0);iter;eof=!1;_bytesRead=0;hasher;constructor(e,t=!1){this.iter=e[Symbol.asyncIterator](),this.hasher=t?z():null}get bytesRead(){return this._bytesRead}async pullMore(){if(this.eof)return!1;let{value:e,done:t}=await this.iter.next();if(t||!e)return this.eof=!0,!1;if(this.buf.byteLength===0)this.buf=new Uint8Array(e);else{let n=new Uint8Array(this.buf.byteLength+e.byteLength);n.set(this.buf),n.set(e,this.buf.byteLength),this.buf=n}return!0}async ensure(e){for(;this.buf.byteLength<e;)if(!await this.pullMore())throw new Error(`Unexpected end of pack data: needed ${e} bytes, have ${this.buf.byteLength}`)}consume(e){let t=new Uint8Array(this.buf.subarray(0,e));return this.hasher?.update(t),this.buf=this.buf.subarray(e),this._bytesRead+=e,t}async readByte(){return await this.ensure(1),this.consume(1)[0]}async readExact(e){return await this.ensure(e),this.consume(e)}async readRaw(e){await this.ensure(e);let t=new Uint8Array(this.buf.subarray(0,e));return this.buf=this.buf.subarray(e),this._bytesRead+=e,t}async inflateNext(e){for(this.buf.byteLength===0&&!this.eof&&await this.pullMore();;)try{let{result:t,bytesConsumed:n}=await Ke(this.buf,e);return this.consume(n),t}catch{if(!this.eof&&await this.pullMore())continue;throw new Error(`Failed to inflate pack entry at byte ${this._bytesRead} (expected ${e} bytes)`)}}async hashHex(){if(!this.hasher)throw new Error("Hashing not enabled");return this.hasher.hex()}};async function*Kt(r,e){let t=new Xe(r,!0),n=await t.readExact(12),s=new DataView(n.buffer,n.byteOffset,n.byteLength),a=s.getUint32(0);if(a!==Y)throw new Error(`Invalid pack signature: 0x${a.toString(16)} (expected 0x${Y.toString(16)})`);let o=s.getUint32(4);if(o!==Le)throw new Error(`Unsupported pack version: ${o}`);let i=s.getUint32(8),f=new Map,c=new Map;for(let p=0;p<i;p++){let h=t.bytesRead,u=await t.readByte(),m=u>>4&7,R=u&15,k=4;for(;u&128;)u=await t.readByte(),R|=(u&127)<<k,k+=7;let y,b;if(m===_){let g=await t.readByte();for(y=g&127;g&128;)y+=1,g=await t.readByte(),y=(y<<7)+(g&127);y=h-y}else if(m===ce){let g=await t.readExact(20);b=se(g,0)}let O=await t.inflateNext(R),w;if(m!==_&&m!==ce){let g=qt[m];if(!g)throw new Error(`Unknown object type: ${m}`);w={type:g,content:O,hash:await X(g,O)}}else if(m===_){let g=f.get(y);if(!g)throw new Error(`OFS_DELTA base not found at offset ${y}`);let E=Ue(g.content,O);w={type:g.type,content:E,hash:await X(g.type,E)}}else{let g=c.get(b);if(!g&&e&&(g=await e(b)??void 0),!g)throw new Error(`REF_DELTA base not found for hash ${b}`);let E=Ue(g.content,O);w={type:g.type,content:E,hash:await X(g.type,E)}}f.set(h,w),c.set(w.hash,w),yield w}let l=se(await t.readRaw(20),0),d=await t.hashHex();if(d!==l)throw new Error(`pack checksum mismatch: expected ${l}, computed ${d}`)}function Ue(r,e){let t=0,{value:n,newPos:s}=$t(e,t);if(t=s,n!==r.byteLength)throw new Error(`Delta base size mismatch: expected ${n}, got ${r.byteLength}`);let{value:a,newPos:o}=$t(e,t);t=o;let i=new Uint8Array(a),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),i.set(r.subarray(l,l+d),f),f+=d}else if(c>0)i.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 i}async function Z(r){let e=[],t=new Map,n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,Y),s.setUint32(4,Le),s.setUint32(8,r.length),e.push(n);let a=12,o=[];for(let i of r){let f=a;t.set(i.hash,a);let c=i.delta&&i.deltaBaseHash?t.get(i.deltaBaseHash):void 0;if(i.delta&&c!==void 0){let l=Ye(_,i.delta.byteLength),d=Jr(a-c),p=await Te(i.delta);e.push(l,d,p),a+=l.byteLength+d.byteLength+p.byteLength}else{let l=Vt[i.type],d=Ye(l,i.content.byteLength),p=await Te(i.content);e.push(d,p),a+=d.byteLength+p.byteLength}o.push({hash:i.hash,offset:f,nextOffset:a})}return{data:await Zr(e),entries:o}}async function*Xt(r,e){let t=z(),n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,Y),s.setUint32(4,Le),s.setUint32(8,r),t.update(n),yield n;for await(let a of e){let o=Vt[a.type],i=Ye(o,a.content.byteLength),f=await Te(a.content);t.update(i),t.update(f),yield Qr(i,f)}yield ae(await t.hex())}async function Zr(r){let e=0;for(let o of r)e+=o.byteLength;e+=20;let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.byteLength;let s=z();s.update(t.subarray(0,n));let a=await s.hex();return t.set(ae(a),n),t}function Jr(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 Ye(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 $t(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 Qr(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(r,0),t.set(e,r.byteLength),t}var en=new TextEncoder;async function X(r,e){let t=en.encode(`${r} ${e.byteLength}\0`),n=z();return n.update(t),n.update(e),n.hex()}var tn=new TextEncoder,ps=new TextDecoder;function Yt(r,e){let t=tn.encode(`${r} ${e.byteLength}\0`),n=new Uint8Array(t.byteLength+e.byteLength);return n.set(t),n.set(e,t.byteLength),n}function fe(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),[o="0",i="+0000"]=a.split(" "),f=parseInt(o,10);return{name:n,email:s,timestamp:f,timezone:i}}function Ce(r){return`${r.name} <${r.email}> ${r.timestamp} ${r.timezone}`}var rn=new TextEncoder,nn=new TextDecoder;function le(r){let e=nn.decode(r),t=e.indexOf(`
|
|
2
2
|
|
|
3
|
-
`),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",
|
|
4
|
-
`)){let l=c.indexOf(" ");if(l===-1)continue;let d=c.slice(0,l),p=c.slice(l+1);switch(d){case"tree":a=p;break;case"parent":
|
|
3
|
+
`),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",o=[],i,f;for(let c of n.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":a=p;break;case"parent":o.push(p);break;case"author":i=fe(p);break;case"committer":f=fe(p);break}}if(!a)throw new Error("Commit missing tree field");if(!i)throw new Error("Commit missing author field");if(!f)throw new Error("Commit missing committer field");return{type:"commit",tree:a,parents:o,author:i,committer:f,message:s}}function Zt(r){let e=[];e.push(`tree ${r.tree}`);for(let t of r.parents)e.push(`parent ${t}`);return e.push(`author ${Ce(r.author)}`),e.push(`committer ${Ce(r.committer)}`),e.push(""),e.push(r.message),rn.encode(e.join(`
|
|
5
|
+
`))}var gs=new TextEncoder,sn=new TextDecoder;function J(r){let e=sn.decode(r),t=e.indexOf(`
|
|
5
6
|
|
|
6
|
-
`),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",
|
|
7
|
-
`)){let l=c.indexOf(" ");if(l===-1)continue;let d=c.slice(0,l),p=c.slice(l+1);switch(d){case"object":a=p;break;case"type":i=p;break;case"tag":o=p;break;case"tagger":f=ie(p);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 fe(r,e){return r.objectStore.read(e)}async function le(r,e){return r.objectStore.exists(e)}var fs=new TextDecoder;async function Y(r,e){let t=await fe(r,e);if(t.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${t.type}`);return ce(t.content)}function qt(r){return typeof r=="string"?{type:"direct",hash:r}:r}var Fe=".lock";var Xr=[1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,5,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,4,4];function Yr(r,e,t){let n=0,s=!1,a=e;for(;a<r.length;a++){let o=r.charCodeAt(a);switch(o<128?Xr[o]:0){case 1:break;case 2:if(n===46)return{len:-1,starConsumed:s};n=o;continue;case 3:if(n===64)return{len:-1,starConsumed:s};n=o;continue;case 4:return{len:-1,starConsumed:s};case 5:if(!t)return{len:-1,starConsumed:s};s=!0,n=o;continue;default:n=o;continue}break}let i=a-e;return i===0?{len:0,starConsumed:s}:r.charCodeAt(e)===46?{len:-1,starConsumed:s}:i>=Fe.length&&r.slice(a-Fe.length,a)===Fe?{len:-1,starConsumed:s}:{len:i,starConsumed:s}}function Vt(r,e=0){if(r==="@"||r.length===0)return!1;let t=0,n=0,s=!!(e&2);for(;t<=r.length;){let{len:a,starConsumed:i}=Yr(r,t,s);if(a<0||a===0)return!1;i&&(s=!1),n++,t+=a+1}return!(r.charCodeAt(r.length-1)===46||!(e&1)&&n<2)}var Zr=10;async function Jr(r,e){return r.refStore.readRef(e)}async function Ge(r,e){let t=e;for(let n=0;n<Zr;n++){let s=await Jr(r,t);if(!s)return null;if(s.type==="direct")return s.hash;t=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}var hs=new TextEncoder,zt=new TextDecoder,Qr=new Set(["100644","100755","040000","120000","160000"]);function en(r){return r.length===4&&r.toLowerCase()===".git"}function tn(r,e){if(r.length===0)throw new Error("invalid tree entry: empty name");if(r.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${r}'`);if(r.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(r==="."||r==="..")throw new Error(`invalid tree entry: '${r}'`);if(en(r))throw new Error(`invalid tree entry: '${r}'`);if(!Qr.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${r}'`)}function qe(r){let e=[],t=0;for(;t<r.byteLength;){let n=r.indexOf(32,t);if(n===-1)break;let s=zt.decode(r.subarray(t,n)),a=r.indexOf(0,n+1);if(a===-1)break;let i=zt.decode(r.subarray(n+1,a)),o=r.subarray(a+1,a+21),f=ke(o),c=s.padStart(6,"0");tn(i,c),e.push({mode:c,name:i,hash:f}),t=a+21}return{type:"tree",entries:e}}async function Ve(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;try{o=await Y(r,i)}catch{continue}for(let f of o.parents)n.has(f)||s.push(f)}return!1}var Te=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]),rn=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]),Ie=64,nn=4,ze=4096,Kt=65536,sn=127;function an(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=cn(n);let s=n-1,a=new Uint32Array(n),i=[],o=-1>>>0;for(let p=t*16-16;p>=0;p-=16){let h=0;for(let u=1;u<=16;u++)h=(h<<8|r[p+u])^Te[h>>>23];if(h=h>>>0,h===o)i[i.length-1].ptr=p+16;else{o=h;let u=h&s;i.push({ptr:p+16,val:h}),a[u]++}}let f=new Map;for(let p of i){let h=p.val&s,u=f.get(h);u||(u=[],f.set(h,u)),u.push(p)}for(let[p,h]of f){if(h.length<=Ie)continue;let u=[],m=h.length/Ie;for(let x=0;x<Ie;x++)u.push(h[Math.floor(x*m)]);f.set(p,u),a[p]=Ie}let c=new Uint32Array(n+1),l=[],d=0;for(let p=0;p<n;p++){c[p]=d;let h=f.get(p);if(h){for(let u of h)l.push(u);d+=h.length}}return c[n]=d,{src:r,hashMask:s,buckets:c,entries:l}}function on(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(m){for(;o+m>i.length;){let x=new Uint8Array(i.length*2);x.set(i),i=x}}o=Yt(i,o,n),o=Yt(i,o,s),f(18),o++;let c=0,l=0,d=Math.min(16,s);for(let m=0;m<d;m++)i[o++]=e[m],c=(c<<8|e[m])^Te[c>>>23],l++;c=c>>>0;let p=d,h=0,u=0;for(;p<s;){if(u<ze){c^=rn[e[p-16]],c=((c<<8|e[p])^Te[c>>>23])>>>0;let m=c&r.hashMask,x=r.buckets[m],y=r.buckets[m+1];for(let b=x;b<y;b++){let R=r.entries[b];if(R.val!==c)continue;let E=R.ptr,w=a.byteLength-E,g=s-p;if(w>g&&(w=g),w<=u)break;let k=0;for(;k<w&&a[E+k]===e[p+k];)k++;if(k>u&&(u=k,h=E,u>=ze))break}}if(u<nn)f(2),l===0&&o++,i[o++]=e[p++],l++,l===sn&&(i[o-l-1]=l,l=0),u=0;else{if(l>0){for(;h>0&&a[h-1]===e[p-1];)if(u++,h--,p--,o--,!(--l>0)){o--,l=-1;break}l>0&&(i[o-l-1]=l),l=0}let m=u>Kt?u-Kt:0;u-=m,f(8);let x=o++,y=128;if(h&255&&(i[o++]=h&255,y|=1),h&65280&&(i[o++]=h>>>8&255,y|=2),h&16711680&&(i[o++]=h>>>16&255,y|=4),h&4278190080&&(i[o++]=h>>>24&255,y|=8),u&255&&(i[o++]=u&255,y|=16),u&65280&&(i[o++]=u>>>8&255,y|=32),i[x]=y,p+=u,h+=u,u=m,h>4294967295&&(u=0),u<ze){c=0;for(let b=-16;b<0;b++)c=(c<<8|e[p+b])^Te[c>>>23];c=c>>>0}}if(t&&o>t)return null}return l>0&&(i[o-l-1]=l),t&&o>t?null:i.subarray(0,o)}var Xt={blob:0,tree:1,commit:2,tag:3};function Zt(r,e){let t=e?.window??10,n=e?.depth??50,s=r.slice().sort((c,l)=>{let d=Xt[c.type]??99,p=Xt[l.type]??99;return d!==p?d-p:l.content.byteLength-c.content.byteLength}),a=new Map,i=[],o=[],f=[];for(let c=0;c<s.length;c++){let l=s[c],d={hash:l.hash,type:l.type,content:l.content,depth:0},p=null,h=null,u=Math.max(0,c-t);for(let m=c-1;m>=u;m--){let x=s[m];if(x.type!==l.type||(a.get(x.hash)?.depth??0)>=n||l.content.byteLength<x.content.byteLength>>>5)continue;let R=o[m-u]??null;if(!R)continue;let E=p?p.byteLength:l.content.byteLength/2|0;if(E<16)continue;let w=on(R,l.content,E);w&&(!p||w.byteLength<p.byteLength)&&(p=w,h=x.hash)}if(p&&h){d.delta=p,d.deltaBase=h;let m=a.get(h);d.depth=(m?.depth??0)+1}a.set(l.hash,d),i.push(d),o.length>=t&&(o.shift(),f.shift()),o.push(an(l.content)),f.push(l.hash)}return i}function cn(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 Yt(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}var fn=2147483647;async function Ke(r,e,t,n){if(t>=fn)return{shallow:[],unshallow:[...n]};let s=new Map,a=[];for(let c of e)!s.has(c)&&await le(r,c)&&(s.set(c,1),a.push({hash:c,level:1}));let i=new Set,o=0;for(;o<a.length;){let{hash:c,level:l}=a[o++];if(l>=t){i.add(c);continue}let d;try{d=await Y(r,c)}catch{continue}for(let p of d.parents)!s.has(p)&&await le(r,p)&&(s.set(p,l+1),a.push({hash:p,level:l+1}))}let f=[];for(let c of n){let l=s.get(c);l!==void 0&&l<t&&f.push(c)}return{shallow:[...i],unshallow:f}}async function ue(r,e,t,n,s){let a=s??n,i=new Set;for(let l of t)await de(r,l,i,a);let o=[...e];if(s&&n)for(let l of s)try{let d=await Y(r,l);for(let p of d.parents)i.has(p)||o.push(p)}catch{}let f=[],c=new Set;for(let l of o)await pe(r,l,i,c,f,n);return{count:f.length,objects:ln(f)}}async function Jt(r,e,t,n,s){let{count:a,objects:i}=await ue(r,e,t,n,s);return{count:a,objects:dn(r,i)}}async function*ln(r){for(let e of r)yield e}async function*dn(r,e){for await(let t of e){let n=await fe(r,t.hash);yield{hash:t.hash,type:t.type,content:n.content}}}async function Qt(r){let e=[];for await(let t of r.objects)e.push(t);return e}async function de(r,e,t,n){if(t.has(e)||(t.add(e),!await le(r,e)))return;let s=await fe(r,e);switch(s.type){case"commit":{let a=ce(s.content);if(await de(r,a.tree,t,n),!n?.has(e))for(let i of a.parents)await de(r,i,t,n);break}case"tree":{let a=qe(s.content);for(let i of a.entries)await de(r,i.hash,t,n);break}case"tag":{let a=X(s.content);await de(r,a.object,t,n);break}case"blob":break}}async function pe(r,e,t,n,s,a){if(n.has(e)||t.has(e))return;n.add(e);let i=await fe(r,e);switch(s.push({hash:e,type:i.type}),i.type){case"commit":{let o=ce(i.content);if(await pe(r,o.tree,t,n,s,a),!a?.has(e))for(let f of o.parents)await pe(r,f,t,n,s,a);break}case"tree":{let o=qe(i.content);for(let f of o.entries)await pe(r,f.hash,t,n,s,a);break}case"tag":{let o=X(i.content);await pe(r,o.object,t,n,s,a);break}case"blob":break}}var pn=new TextEncoder,tr=new TextDecoder,er=65520,un=new Uint8Array([48,48,48,48]),hn=new Uint8Array([48,48,48,49]),vs=new Uint8Array([48,48,48,50]);function O(r){let e=typeof r=="string"?pn.encode(r):r,t=4+e.byteLength;if(t>er)throw new Error(`pkt-line too long: ${t} bytes (max ${er})`);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 L(){return un.slice()}function F(){return hn.slice()}function T(...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 Xe(r){let e=[],t=0;for(;t<r.byteLength;){if(t+4>r.byteLength)throw new Error("Truncated pkt-line header");let n=tr.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===1){e.push({type:"delim"}),t+=4;continue}if(s===2){e.push({type:"response-end"}),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 Ye(r){if(r.type!=="data")return"";let e=tr.decode(r.data);return e.endsWith(`
|
|
8
|
-
`)?e.slice(0,-1):e}var
|
|
9
|
-
`));else for(let
|
|
10
|
-
`)):n.push(
|
|
11
|
-
`))}return n.push(
|
|
12
|
-
`),
|
|
13
|
-
`));for(let a of n.unshallow)s.push(
|
|
14
|
-
`));s.push(
|
|
15
|
-
`));let a=t[t.length-1];s.push(
|
|
16
|
-
`)),s.push(
|
|
17
|
-
`))}else s.push(
|
|
18
|
-
`));if(e){let a=0;for(;a<r.byteLength;){let
|
|
19
|
-
`));for(let t of r.unshallow)e.push(
|
|
20
|
-
`));return e.push(
|
|
21
|
-
`));for(let
|
|
22
|
-
`));a.push(
|
|
23
|
-
`));let a=t[t.length-1];s.push(
|
|
24
|
-
`)),s.push(
|
|
25
|
-
`))}else s.push(
|
|
26
|
-
`));if(yield
|
|
27
|
-
`)?h.slice(0,-1):h}let p=d.split(" ");p.length>=3&&t.push({oldHash:p[0],newHash:p[1],refName:p[2]})}let
|
|
7
|
+
`),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",o="commit",i="",f;for(let c of n.split(`
|
|
8
|
+
`)){let l=c.indexOf(" ");if(l===-1)continue;let d=c.slice(0,l),p=c.slice(l+1);switch(d){case"object":a=p;break;case"type":o=p;break;case"tag":i=p;break;case"tagger":f=fe(p);break}}if(!a)throw new Error("Tag missing object field");if(!i)throw new Error("Tag missing tag name field");if(!f)throw new Error("Tag missing tagger field");return{type:"tag",object:a,objectType:o,name:i,tagger:f,message:s}}async function He(r,e,t){let n=await r.objectStore.write(e,t);return r.hooks?.onObjectWrite?.({repo:r,type:e,hash:n}),n}async function q(r,e){return r.objectStore.read(e)}async function de(r,e){return r.objectStore.exists(e)}var xs=new TextDecoder;async function F(r,e){let t=await q(r,e);if(t.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${t.type}`);return le(t.content)}var an=new TextEncoder,Jt=new TextDecoder,on=new Set(["100644","100755","040000","120000","160000"]);function cn(r){return r.length===4&&r.toLowerCase()===".git"}function fn(r,e){if(r.length===0)throw new Error("invalid tree entry: empty name");if(r.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${r}'`);if(r.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(r==="."||r==="..")throw new Error(`invalid tree entry: '${r}'`);if(cn(r))throw new Error(`invalid tree entry: '${r}'`);if(!on.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${r}'`)}function pe(r){let e=[],t=0;for(;t<r.byteLength;){let n=r.indexOf(32,t);if(n===-1)break;let s=Jt.decode(r.subarray(t,n)),a=r.indexOf(0,n+1);if(a===-1)break;let o=Jt.decode(r.subarray(n+1,a)),i=r.subarray(a+1,a+21),f=je(i),c=s.padStart(6,"0");fn(o,c),e.push({mode:c,name:o,hash:f}),t=a+21}return{type:"tree",entries:e}}function Qt(r){let e=[];for(let a of r.entries){let o=a.mode.replace(/^0+/,""),i=an.encode(`${o} ${a.name}\0`),f=ae(a.hash);e.push(i),e.push(f)}let t=e.reduce((a,o)=>a+o.byteLength,0),n=new Uint8Array(t),s=0;for(let a of e)n.set(a,s),s+=a.byteLength;return n}function er(r){return typeof r=="string"?{type:"direct",hash:r}:r}var Ze=".lock";var ln=[1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,5,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,4,4];function dn(r,e,t){let n=0,s=!1,a=e;for(;a<r.length;a++){let i=r.charCodeAt(a);switch(i<128?ln[i]:0){case 1:break;case 2:if(n===46)return{len:-1,starConsumed:s};n=i;continue;case 3:if(n===64)return{len:-1,starConsumed:s};n=i;continue;case 4:return{len:-1,starConsumed:s};case 5:if(!t)return{len:-1,starConsumed:s};s=!0,n=i;continue;default:n=i;continue}break}let o=a-e;return o===0?{len:0,starConsumed:s}:r.charCodeAt(e)===46?{len:-1,starConsumed:s}:o>=Ze.length&&r.slice(a-Ze.length,a)===Ze?{len:-1,starConsumed:s}:{len:o,starConsumed:s}}function Je(r,e=0){if(r==="@"||r.length===0)return!1;let t=0,n=0,s=!!(e&2);for(;t<=r.length;){let{len:a,starConsumed:o}=dn(r,t,s);if(a<0||a===0)return!1;o&&(s=!1),n++,t+=a+1}return!(r.charCodeAt(r.length-1)===46||!(e&1)&&n<2)}var pn=10;async function un(r,e){return r.refStore.readRef(e)}async function ue(r,e){let t=e;for(let n=0;n<pn;n++){let s=await un(r,t);if(!s)return null;if(s.type==="direct")return s.hash;t=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}function hn(r){let e=Math.abs(r),t=r<=0?"+":"-",n=String(Math.floor(e/60)).padStart(2,"0"),s=String(e%60).padStart(2,"0");return`${t}${n}${s}`}function tr(r){if("timestamp"in r)return r;let e=r.date??new Date;return{name:r.name,email:r.email,timestamp:Math.floor(e.getTime()/1e3),timezone:hn(e.getTimezoneOffset())}}async function nr(r,e){let t=e.branch?`refs/heads/${e.branch}`:null,n=t?await ue(r,t):null,s=null;n&&(s=(await F(r,n)).tree);let a=[];for(let[p,h]of Object.entries(e.files))if(h===null)a.push({path:p,hash:null});else{let u=typeof h=="string"?new TextEncoder().encode(h):h,m=await He(r,"blob",u);a.push({path:p,hash:m})}let o;s?o=await yn(r,s,a):o=await et(r,null,Qe(a));let i=tr(e.author),f=e.committer?tr(e.committer):i,l=Zt({type:"commit",tree:o,parents:n?[n]:[],author:i,committer:f,message:e.message});return{hash:await He(r,"commit",l),parentHash:n}}async function yn(r,e,t){return et(r,e,Qe(t))}function Qe(r){let e=new Map,t=new Map;for(let n of r){let s=n.path.indexOf("/");if(s===-1)e.set(n.path,{hash:n.hash,mode:n.mode??"100644"});else{let a=n.path.slice(0,s),o=n.path.slice(s+1),i=t.get(a);i||(i=[],t.set(a,i)),i.push({...n,path:o})}}return{files:e,dirs:t}}async function rr(r,e){let t=await q(r,e);if(t.type!=="tree")throw new Error(`Expected tree object, got ${t.type}`);return pe(t.content).entries}async function et(r,e,t){let n=new Map;if(e)for(let o of await rr(r,e))n.set(o.name,o);for(let[o,{hash:i,mode:f}]of t.files)i===null?n.delete(o):n.set(o,{name:o,hash:i,mode:f});for(let[o,i]of t.dirs){let f=n.get(o),c=f?.mode==="040000"?f.hash:null,l=Qe(i),d=await et(r,c,l);(await rr(r,d)).length===0?n.delete(o):n.set(o,{name:o,hash:d,mode:"040000"})}let s=[...n.values()].sort((o,i)=>{let f=o.mode==="040000"?`${o.name}/`:o.name,c=i.mode==="040000"?`${i.name}/`:i.name;return f<c?-1:f>c?1:0}),a=Qt({type:"tree",entries:s});return He(r,"tree",a)}async function tt(r,e,t){if(e===t)return!0;let n=new Set,s=[t],a=0;for(;a<s.length;){let o=s[a++];if(o===e)return!0;if(n.has(o))continue;n.add(o);let i;try{i=await F(r,o)}catch{continue}for(let f of i.parents)n.has(f)||s.push(f)}return!1}var Be=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]),mn=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]),De=64,bn=4,rt=4096,sr=65536,gn=127;function wn(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=xn(n);let s=n-1,a=new Uint32Array(n),o=[],i=-1>>>0;for(let p=t*16-16;p>=0;p-=16){let h=0;for(let u=1;u<=16;u++)h=(h<<8|r[p+u])^Be[h>>>23];if(h=h>>>0,h===i)o[o.length-1].ptr=p+16;else{i=h;let u=h&s;o.push({ptr:p+16,val:h}),a[u]++}}let f=new Map;for(let p of o){let h=p.val&s,u=f.get(h);u||(u=[],f.set(h,u)),u.push(p)}for(let[p,h]of f){if(h.length<=De)continue;let u=[],m=h.length/De;for(let R=0;R<De;R++)u.push(h[Math.floor(R*m)]);f.set(p,u),a[p]=De}let c=new Uint32Array(n+1),l=[],d=0;for(let p=0;p<n;p++){c[p]=d;let h=f.get(p);if(h){for(let u of h)l.push(u);d+=h.length}}return c[n]=d,{src:r,hashMask:s,buckets:c,entries:l}}function Rn(r,e,t){if(!r||e.byteLength===0)return null;let n=r.src.byteLength,s=e.byteLength,a=r.src,o=new Uint8Array(Math.max(s,1024)),i=0;function f(m){for(;i+m>o.length;){let R=new Uint8Array(o.length*2);R.set(o),o=R}}i=ir(o,i,n),i=ir(o,i,s),f(18),i++;let c=0,l=0,d=Math.min(16,s);for(let m=0;m<d;m++)o[i++]=e[m],c=(c<<8|e[m])^Be[c>>>23],l++;c=c>>>0;let p=d,h=0,u=0;for(;p<s;){if(u<rt){c^=mn[e[p-16]],c=((c<<8|e[p])^Be[c>>>23])>>>0;let m=c&r.hashMask,R=r.buckets[m],k=r.buckets[m+1];for(let y=R;y<k;y++){let b=r.entries[y];if(b.val!==c)continue;let O=b.ptr,w=a.byteLength-O,g=s-p;if(w>g&&(w=g),w<=u)break;let E=0;for(;E<w&&a[O+E]===e[p+E];)E++;if(E>u&&(u=E,h=O,u>=rt))break}}if(u<bn)f(2),l===0&&i++,o[i++]=e[p++],l++,l===gn&&(o[i-l-1]=l,l=0),u=0;else{if(l>0){for(;h>0&&a[h-1]===e[p-1];)if(u++,h--,p--,i--,!(--l>0)){i--,l=-1;break}l>0&&(o[i-l-1]=l),l=0}let m=u>sr?u-sr:0;u-=m,f(8);let R=i++,k=128;if(h&255&&(o[i++]=h&255,k|=1),h&65280&&(o[i++]=h>>>8&255,k|=2),h&16711680&&(o[i++]=h>>>16&255,k|=4),h&4278190080&&(o[i++]=h>>>24&255,k|=8),u&255&&(o[i++]=u&255,k|=16),u&65280&&(o[i++]=u>>>8&255,k|=32),o[R]=k,p+=u,h+=u,u=m,h>4294967295&&(u=0),u<rt){c=0;for(let y=-16;y<0;y++)c=(c<<8|e[p+y])^Be[c>>>23];c=c>>>0}}if(t&&i>t)return null}return l>0&&(o[i-l-1]=l),t&&i>t?null:o.subarray(0,i)}var ar={blob:0,tree:1,commit:2,tag:3};function or(r,e){let t=e?.window??10,n=e?.depth??50,s=r.slice().sort((c,l)=>{let d=ar[c.type]??99,p=ar[l.type]??99;return d!==p?d-p:l.content.byteLength-c.content.byteLength}),a=new Map,o=[],i=[],f=[];for(let c=0;c<s.length;c++){let l=s[c],d={hash:l.hash,type:l.type,content:l.content,depth:0},p=null,h=null,u=Math.max(0,c-t);for(let m=c-1;m>=u;m--){let R=s[m];if(R.type!==l.type||(a.get(R.hash)?.depth??0)>=n||l.content.byteLength<R.content.byteLength>>>5)continue;let b=i[m-u]??null;if(!b)continue;let O=p?p.byteLength:l.content.byteLength/2|0;if(O<16)continue;let w=Rn(b,l.content,O);w&&(!p||w.byteLength<p.byteLength)&&(p=w,h=R.hash)}if(p&&h){d.delta=p,d.deltaBase=h;let m=a.get(h);d.depth=(m?.depth??0)+1}a.set(l.hash,d),o.push(d),i.length>=t&&(i.shift(),f.shift()),i.push(wn(l.content)),f.push(l.hash)}return o}function xn(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 ir(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}var On=2147483647;async function nt(r,e,t,n){if(t>=On)return{shallow:[],unshallow:[...n]};let s=new Map,a=[];for(let c of e)!s.has(c)&&await de(r,c)&&(s.set(c,1),a.push({hash:c,level:1}));let o=new Set,i=0;for(;i<a.length;){let{hash:c,level:l}=a[i++];if(l>=t){o.add(c);continue}let d;try{d=await F(r,c)}catch{continue}for(let p of d.parents)!s.has(p)&&await de(r,p)&&(s.set(p,l+1),a.push({hash:p,level:l+1}))}let f=[];for(let c of n){let l=s.get(c);l!==void 0&&l<t&&f.push(c)}return{shallow:[...o],unshallow:f}}async function me(r,e,t,n,s){let a=s??n,o=new Set;for(let l of t)await he(r,l,o,a);let i=[...e];if(s&&n)for(let l of s)try{let d=await F(r,l);for(let p of d.parents)o.has(p)||i.push(p)}catch{}let f=[],c=new Set;for(let l of i)await ye(r,l,o,c,f,n);return{count:f.length,objects:En(f)}}async function cr(r,e,t,n,s){let{count:a,objects:o}=await me(r,e,t,n,s);return{count:a,objects:kn(r,o)}}async function*En(r){for(let e of r)yield e}async function*kn(r,e){for await(let t of e){let n=await q(r,t.hash);yield{hash:t.hash,type:t.type,content:n.content}}}async function fr(r){let e=[];for await(let t of r.objects)e.push(t);return e}async function he(r,e,t,n){if(t.has(e)||(t.add(e),!await de(r,e)))return;let s=await q(r,e);switch(s.type){case"commit":{let a=le(s.content);if(await he(r,a.tree,t,n),!n?.has(e))for(let o of a.parents)await he(r,o,t,n);break}case"tree":{let a=pe(s.content);for(let o of a.entries)await he(r,o.hash,t,n);break}case"tag":{let a=J(s.content);await he(r,a.object,t,n);break}case"blob":break}}async function ye(r,e,t,n,s,a){if(n.has(e)||t.has(e))return;n.add(e);let o=await q(r,e);switch(s.push({hash:e,type:o.type}),o.type){case"commit":{let i=le(o.content);if(await ye(r,i.tree,t,n,s,a),!a?.has(e))for(let f of i.parents)await ye(r,f,t,n,s,a);break}case"tree":{let i=pe(o.content);for(let f of i.entries)await ye(r,f.hash,t,n,s,a);break}case"tag":{let i=J(o.content);await ye(r,i.object,t,n,s,a);break}case"blob":break}}var Pn=new TextEncoder,dr=new TextDecoder,lr=65520,An=new Uint8Array([48,48,48,48]),Sn=new Uint8Array([48,48,48,49]),Fs=new Uint8Array([48,48,48,50]);function x(r){let e=typeof r=="string"?Pn.encode(r):r,t=4+e.byteLength;if(t>lr)throw new Error(`pkt-line too long: ${t} bytes (max ${lr})`);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 H(){return An.slice()}function V(){return Sn.slice()}function L(...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 st(r){let e=[],t=0;for(;t<r.byteLength;){if(t+4>r.byteLength)throw new Error("Truncated pkt-line header");let n=dr.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===1){e.push({type:"delim"}),t+=4;continue}if(s===2){e.push({type:"response-end"}),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 at(r){if(r.type!=="data")return"";let e=dr.decode(r.data);return e.endsWith(`
|
|
9
|
+
`)?e.slice(0,-1):e}var Ne=65515;function Me(r,e,t){let n=[],s=[...e];t&&s.push(`symref=HEAD:${t}`),s.push("agent=just-git/1.0");let a=s.join(" ");if(r.length===0)n.push(x(`0000000000000000000000000000000000000000 capabilities^{}\0${a}
|
|
10
|
+
`));else for(let o=0;o<r.length;o++){let i=r[o];o===0?n.push(x(`${i.hash} ${i.name}\0${a}
|
|
11
|
+
`)):n.push(x(`${i.hash} ${i.name}
|
|
12
|
+
`))}return n.push(H()),L(...n)}function pr(r,e,t,n){let s=L(x(`# service=${e}
|
|
13
|
+
`),H()),a=Me(r,t,n),o=new Uint8Array(s.byteLength+a.byteLength);return o.set(s,0),o.set(a,s.byteLength),o}function ur(r){let e=st(r),t=[],n=[],s=[],a=[],o,i=!1;for(let f of e){if(f.type==="flush")continue;let c=at(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)),a=l.slice(d+1).split(" ").filter(Boolean)):t.push(l)}else t.push(l)}else c.startsWith("have ")?n.push(c.slice(5)):c.startsWith("shallow ")?s.push(c.slice(8)):c.startsWith("deepen ")?(o=parseInt(c.slice(7),10),Number.isNaN(o)&&(o=void 0)):c==="done"&&(i=!0)}return{wants:t,haves:n,capabilities:a,clientShallows:s,depth:o,done:i}}function be(r,e,t,n){let s=[];if(n){for(let a of n.shallow)s.push(x(`shallow ${a}
|
|
14
|
+
`));for(let a of n.unshallow)s.push(x(`unshallow ${a}
|
|
15
|
+
`));s.push(H())}if(t&&t.length>0){for(let o of t)s.push(x(`ACK ${o} common
|
|
16
|
+
`));let a=t[t.length-1];s.push(x(`ACK ${a} ready
|
|
17
|
+
`)),s.push(x(`ACK ${a}
|
|
18
|
+
`))}else s.push(x(`NAK
|
|
19
|
+
`));if(e){let a=0;for(;a<r.byteLength;){let o=Math.min(Ne,r.byteLength-a);s.push(ge(1,r.subarray(a,a+o))),a+=o}s.push(H())}else{let a=new Uint8Array(r.byteLength);a.set(r),s.push(a)}return L(...s)}function hr(r){let e=[];for(let t of r.shallow)e.push(x(`shallow ${t}
|
|
20
|
+
`));for(let t of r.unshallow)e.push(x(`unshallow ${t}
|
|
21
|
+
`));return e.push(H()),L(...e)}async function*yr(r,e,t,n){if(n){let a=[];for(let o of n.shallow)a.push(x(`shallow ${o}
|
|
22
|
+
`));for(let o of n.unshallow)a.push(x(`unshallow ${o}
|
|
23
|
+
`));a.push(H()),yield L(...a)}let s=[];if(t&&t.length>0){for(let o of t)s.push(x(`ACK ${o} common
|
|
24
|
+
`));let a=t[t.length-1];s.push(x(`ACK ${a} ready
|
|
25
|
+
`)),s.push(x(`ACK ${a}
|
|
26
|
+
`))}else s.push(x(`NAK
|
|
27
|
+
`));if(yield L(...s),e){for await(let a of r){let o=0;for(;o<a.byteLength;){let i=Math.min(Ne,a.byteLength-o);yield ge(1,a.subarray(o,o+i)),o+=i}}yield H()}else for await(let a of r)yield a}function mr(r){let e=new TextDecoder,t=[],n=[],s=0,a=!1;for(;s<r.byteLength&&!(s+4>r.byteLength);){let i=e.decode(r.subarray(s,s+4)),f=parseInt(i,16);if(Number.isNaN(f))break;if(f===0){a=!0,s+=4;break}if(f<4||s+f>r.byteLength)break;let c=r.subarray(s+4,s+f);s+=f;let l=c.indexOf(0),d;if(l!==-1)d=e.decode(c.subarray(0,l)),n=e.decode(c.subarray(l+1)).replace(/\n$/,"").split(" ").filter(Boolean);else{let h=e.decode(c);d=h.endsWith(`
|
|
28
|
+
`)?h.slice(0,-1):h}let p=d.split(" ");p.length>=3&&t.push({oldHash:p[0],newHash:p[1],refName:p[2]})}let o=s<r.byteLength?r.subarray(s):new Uint8Array(0);return{commands:t,packData:o,capabilities:n,sawFlush:a}}function Q(r,e,t){let n=[];n.push(x(r?`unpack ok
|
|
28
29
|
`:`unpack error
|
|
29
|
-
`));for(let a of e)a.ok?n.push(
|
|
30
|
-
`)):n.push(
|
|
31
|
-
`));n.push(
|
|
32
|
-
`));for(let t of r)e.push(
|
|
33
|
-
`));return e.push(
|
|
34
|
-
`))}return e.push(
|
|
35
|
-
`));for(let
|
|
36
|
-
`));t.push(
|
|
37
|
-
`)),t.push(
|
|
38
|
-
`));for(let
|
|
39
|
-
`));for(let
|
|
40
|
-
`));t.push(
|
|
41
|
-
`));for(let
|
|
42
|
-
`));t.push(
|
|
43
|
-
`));let
|
|
44
|
-
`)),r.length>0)for(let n of r)t.push(
|
|
45
|
-
`));else t.push(
|
|
46
|
-
`));return e&&t.push(
|
|
47
|
-
`)),t.push(
|
|
48
|
-
`));for(let
|
|
49
|
-
`));a.push(
|
|
50
|
-
`)),a.push(
|
|
51
|
-
`));for(let
|
|
52
|
-
`));for(let
|
|
53
|
-
`));a.push(
|
|
54
|
-
`));for(let
|
|
55
|
-
`));a.push(
|
|
56
|
-
`);for await(let a of r){let
|
|
57
|
-
`),128;let{service:l,repoPath:d}=c,p=await n(d);if(!p)return
|
|
58
|
-
`),128;let{repo:h,repoId:u}=p;if(c.protocolV2&&l==="git-upload-pack"){let
|
|
59
|
-
`),128;await f.write(
|
|
60
|
-
`),128;await f.write(
|
|
61
|
-
`),128}finally{try{await f.close()}catch{}}}async function
|
|
62
|
-
`)&&(a=a.slice(0,-1)),n){let
|
|
63
|
-
`)&&(
|
|
64
|
-
`)),128;try{if(!
|
|
65
|
-
`)),128;let
|
|
66
|
-
CREATE TABLE IF NOT EXISTS
|
|
30
|
+
`));for(let a of e)a.ok?n.push(x(`ok ${a.name}
|
|
31
|
+
`)):n.push(x(`ng ${a.name} ${a.error??"failed"}
|
|
32
|
+
`));n.push(H());let s=L(...n);if(t){let a=[];return a.push(ge(1,s)),a.push(H()),L(...a)}return s}function ge(r,e){let t=new Uint8Array(1+e.byteLength);return t[0]=r,t.set(e,1),x(t)}function it(r){let e=[];e.push(x(`version 2
|
|
33
|
+
`));for(let t of r)e.push(x(`${t}
|
|
34
|
+
`));return e.push(H()),L(...e)}function ot(r){let e=st(r),t="",n=[],s=[],a=!1;for(let o of e){if(o.type==="flush"||o.type==="response-end")break;if(o.type==="delim"){a=!0;continue}let i=at(o);i&&(a?s.push(i):i.startsWith("command=")?t=i.slice(8):n.push(i))}return{command:t,capabilities:n,args:s}}function ct(r){let e=[];for(let t of r){let n=`${t.hash} ${t.name}`;t.symrefTarget&&(n+=` symref-target:${t.symrefTarget}`),t.peeledHash&&(n+=` peeled:${t.peeledHash}`),e.push(x(`${n}
|
|
35
|
+
`))}return e.push(H()),L(...e)}function ft(r){let e=[],t=[],n=[],s=[],a=!1,o,i=!1,f=!1;for(let c of r)c.startsWith("want ")?e.push(c.slice(5)):c.startsWith("have ")?t.push(c.slice(5)):c.startsWith("shallow ")?n.push(c.slice(8)):c.startsWith("deepen ")?(o=parseInt(c.slice(7),10),Number.isNaN(o)&&(o=void 0)):c.startsWith("want-ref ")?s.push(c.slice(9)):c==="done"?a=!0:c==="include-tag"?i=!0:c==="ofs-delta"&&(f=!0);return{wants:e,haves:t,done:a,clientShallows:n,depth:o,includeTag:i,ofsDeltas:f,wantRefs:s}}function ee(r,e){let t=[],{commonHashes:n,shallowInfo:s,wantedRefs:a}=e??{};if(n&&n.length>0){t.push(x(`acknowledgments
|
|
36
|
+
`));for(let i of n)t.push(x(`ACK ${i}
|
|
37
|
+
`));t.push(x(`ready
|
|
38
|
+
`)),t.push(V())}if(s&&(s.shallow.length>0||s.unshallow.length>0)){t.push(x(`shallow-info
|
|
39
|
+
`));for(let i of s.shallow)t.push(x(`shallow ${i}
|
|
40
|
+
`));for(let i of s.unshallow)t.push(x(`unshallow ${i}
|
|
41
|
+
`));t.push(V())}if(a&&a.length>0){t.push(x(`wanted-refs
|
|
42
|
+
`));for(let i of a)t.push(x(`${i.hash} ${i.name}
|
|
43
|
+
`));t.push(V())}t.push(x(`packfile
|
|
44
|
+
`));let o=0;for(;o<r.byteLength;){let i=Math.min(Ne,r.byteLength-o);t.push(ge(1,r.subarray(o,o+i))),o+=i}return t.push(H()),L(...t)}function br(r,e){let t=[];if(t.push(x(`acknowledgments
|
|
45
|
+
`)),r.length>0)for(let n of r)t.push(x(`ACK ${n}
|
|
46
|
+
`));else t.push(x(`NAK
|
|
47
|
+
`));return e&&t.push(x(`ready
|
|
48
|
+
`)),t.push(H()),L(...t)}async function*gr(r,e){let{commonHashes:t,shallowInfo:n,wantedRefs:s}=e??{};if(t&&t.length>0){let a=[];a.push(x(`acknowledgments
|
|
49
|
+
`));for(let o of t)a.push(x(`ACK ${o}
|
|
50
|
+
`));a.push(x(`ready
|
|
51
|
+
`)),a.push(V()),yield L(...a)}if(n&&(n.shallow.length>0||n.unshallow.length>0)){let a=[];a.push(x(`shallow-info
|
|
52
|
+
`));for(let o of n.shallow)a.push(x(`shallow ${o}
|
|
53
|
+
`));for(let o of n.unshallow)a.push(x(`unshallow ${o}
|
|
54
|
+
`));a.push(V()),yield L(...a)}if(s&&s.length>0){let a=[];a.push(x(`wanted-refs
|
|
55
|
+
`));for(let o of s)a.push(x(`${o.hash} ${o.name}
|
|
56
|
+
`));a.push(V()),yield L(...a)}yield x(`packfile
|
|
57
|
+
`);for await(let a of r){let o=0;for(;o<a.byteLength;){let i=Math.min(Ne,a.byteLength-o);yield ge(1,a.subarray(o,o+i)),o+=i}}yield H()}var te=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}}clear(){this.entries.clear(),this.currentBytes=0}get stats(){return{entries:this.entries.size,bytes:this.currentBytes,hits:this.hits,misses:this.misses}}},wr=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag","allow-reachable-sha1-in-want","shallow"],Rr=["report-status","side-band-64k","ofs-delta","delete-refs"];async function xr(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 i=await r.refStore.readRef(t.target);i?.type==="direct"&&(s=i.hash)}else s=t.hash;let o=e.slice().sort((i,f)=>i.name<f.name?-1:i.name>f.name?1:0);if(!s&&o.length>0){let i=jn(o);i&&(s=i.hash,a=i.name)}s&&n.push({name:"HEAD",hash:s});for(let i of o)if(n.push({name:i.name,hash:i.hash}),i.name.startsWith("refs/tags/"))try{let f=await r.objectStore.read(i.hash);if(f.type==="tag"){let c=J(f.content);n.push({name:`${i.name}^{}`,hash:c.object})}}catch{}return{refs:n,headTarget:a}}var vn=["refs/heads/main","refs/heads/master"];function jn(r){for(let t of vn){let n=r.find(s=>s.name===t);if(n)return n}return r.find(t=>t.name.startsWith("refs/heads/"))??null}function lt(r,e,t){return pr(r,e,e==="git-upload-pack"?wr:Rr,t)}function dt(r,e,t){return Me(r,e==="git-upload-pack"?wr:Rr,t)}async function G(r,e,t,n,s){let{refs:a,headTarget:o}=await xr(r),i=a;if(n?.advertiseRefs){let f=await n.advertiseRefs({repo:r,repoId:e,refs:a,service:t,session:s});if(U(f))return f;f&&(i=f)}return{refs:i,headTarget:o}}async function we(r,e,t){let{wants:n,haves:s,capabilities:a,clientShallows:o,depth:i,done:f}=ur(e);if(n.length===0)return be(new Uint8Array(0),!1);let c=a.includes("multi_ack_detailed"),l=a.includes("side-band-64k"),d,p,h;if(o.length>0&&(h=new Set(o)),i!==void 0){let b=await nt(r,n,i,h??new Set);d=b,p=new Set(b.shallow)}if(d&&!f)return hr(d);let u;if(c&&s.length>0){u=[];for(let b of s)await r.objectStore.exists(b)&&u.push(b);u.length===0&&(u=void 0)}let m=!p&&t?.cache&&t.cacheKey?te.key(t.cacheKey,n,s):null;if(m&&t?.cache){let b=t.cache.get(m);if(b)return be(b.packData,l,u)}let R=a.includes("include-tag"),k={repo:r,wants:n,haves:s,includeTag:R,shallowBoundary:p,clientShallowBoundary:h,cache:t?.cache,cacheKey:m,deltaWindow:t?.deltaWindow};if(t?.noDelta){let b=await kr(k);if(!b){let{data:O}=await Z([]);return be(O,l,u,d)}return Pr(yr(b,l,u,d))}let y=await Er(k);return be(y,l,u,d)}async function Or(r,e){let t=[],n=await r.refStore.listRefs("refs/tags");for(let s of n)if(!e.has(s.hash))try{let a=await r.objectStore.read(s.hash);if(a.type==="tag"){let o=J(a.content);e.has(o.object)&&(t.push({hash:s.hash,type:"tag",content:a.content}),e.add(s.hash))}}catch{}return t}async function Er(r){let{repo:e,wants:t,haves:n,includeTag:s,shallowBoundary:a,clientShallowBoundary:o}=r,i=await cr(e,t,n,a,o);if(i.count===0){let{data:u}=await Z([]);return u}let f=await fr(i),c=new Set(f.map(u=>u.hash));if(s){let u=await Or(e,c);f.push(...u)}let l=r.deltaWindow?{window:r.deltaWindow}:void 0,d=or(f,l),p=d.map(u=>({hash:u.hash,type:u.type,content:u.content,delta:u.delta,deltaBaseHash:u.deltaBase})),{data:h}=await Z(p);if(r.cacheKey&&r.cache){let u=d.filter(m=>m.delta).length;r.cache.set(r.cacheKey,{packData:h,objectCount:f.length,deltaCount:u})}return h}async function kr(r){let{repo:e,wants:t,haves:n,includeTag:s,shallowBoundary:a,clientShallowBoundary:o}=r,{count:i,objects:f}=await me(e,t,n,a,o);if(i===0)return null;let c=[];for await(let u of f)c.push(u);let l=new Set(c.map(u=>u.hash)),d=s?await Or(e,l):[],p=c.length+d.length;async function*h(){for(let u of c){let m=await e.objectStore.read(u.hash);yield{type:m.type,content:m.content}}for(let u of d)yield{type:u.type,content:u.content}}return Xt(p,h())}function Pr(r){let e=r[Symbol.asyncIterator]();return new ReadableStream({async pull(t){let{value:n,done:s}=await e.next();s?t.close():t.enqueue(n)}})}async function pt(r,e){let{commands:t,packData:n,capabilities:s,sawFlush:a}=mr(e),o=!0;if(n.byteLength>0)try{await r.objectStore.ingestPack(n)}catch{o=!1}return{updates:await Ar(r,t,o),unpackOk:o,capabilities:s,sawFlush:a}}async function ut(r,e,t,n,s=!0){let a=!0;if(e.some(f=>f.newHash!==ne))try{let c=Kt(n,async l=>{try{return await r.objectStore.read(l)}catch{return null}});await r.objectStore.ingestPackStream(c)}catch{a=!1}return{updates:await Ar(r,e,a),unpackOk:a,capabilities:t,sawFlush:s}}async function Ar(r,e,t){let n=[];for(let s of e){let a=s.oldHash===ne,o=s.newHash===ne,i=!1;if(!a&&!o&&t)try{i=await tt(r,s.oldHash,s.newHash)}catch{}n.push({ref:s.refName,oldHash:a?null:s.oldHash,newHash:s.newHash,isFF:i,isCreate:a,isDelete:o})}return n}async function $e(r,e){let t=[],n=[];for(let s of e){if(s.ref==="HEAD"){t.push({ref:s.ref,ok:!1,error:"HEAD cannot be updated via push"});continue}if(!s.isDelete&&!Je(s.ref)){t.push({ref:s.ref,ok:!1,error:"invalid refname"});continue}if(!s.isDelete&&!await r.objectStore.exists(s.newHash)){t.push({ref:s.ref,ok:!1,error:"missing objects"});continue}try{let a=s.isCreate?null:s.oldHash,o=s.isDelete?null:{type:"direct",hash:s.newHash};if(!await r.refStore.compareAndSwapRef(s.ref,a,o)){t.push({ref:s.ref,ok:!1,error:"failed to lock"});continue}t.push({ref:s.ref,ok:!0}),n.push(s)}catch(a){t.push({ref:s.ref,ok:!1,error:a instanceof Error?a.message:String(a)})}}return{refResults:t,applied:n}}async function Re(r){let{repo:e,repoId:t,ingestResult:n,hooks:s,session:a}=r,{updates:o}=n;if(s?.preReceive){let c=await s.preReceive({repo:e,repoId:t,updates:o,session:a});if(U(c)){let l=c.message??"pre-receive hook declined";return{refResults:o.map(d=>({ref:d.ref,ok:!1,error:l})),applied:[]}}}let i=[],f=[];for(let c of o){if(c.ref==="HEAD"){i.push({ref:c.ref,ok:!1,error:"HEAD cannot be updated via push"});continue}if(!c.isDelete&&!Je(c.ref)){i.push({ref:c.ref,ok:!1,error:"invalid refname"});continue}if(s?.update){let l=await s.update({repo:e,repoId:t,update:c,session:a});if(U(l)){i.push({ref:c.ref,ok:!1,error:l.message??"update hook declined"});continue}}if(!c.isDelete&&!await e.objectStore.exists(c.newHash)){i.push({ref:c.ref,ok:!1,error:"missing objects"});continue}try{let l=c.isCreate?null:c.oldHash,d=c.isDelete?null:{type:"direct",hash:c.newHash};if(!await e.refStore.compareAndSwapRef(c.ref,l,d)){i.push({ref:c.ref,ok:!1,error:"failed to lock"});continue}i.push({ref:c.ref,ok:!0}),f.push(c)}catch(l){i.push({ref:c.ref,ok:!1,error:l instanceof Error?l.message:String(l)})}}if(s?.postReceive&&f.length>0)try{await s.postReceive({repo:e,repoId:t,updates:f,session:a})}catch{}return{refResults:i,applied:f}}async function We(r,e){let t=[];for(let n of e){let s;n.oldHash!==void 0?s=n.oldHash:s=await ue(r,n.ref);let a=s===null,o=n.newHash===null,i=n.newHash??ne,f=!1;if(!a&&!o)try{f=await tt(r,s,i)}catch{}t.push({ref:n.ref,oldHash:s,newHash:i,isFF:f,isCreate:a,isDelete:o})}return t}var In=["agent=just-git/1.0","ls-refs=unborn","fetch=shallow","server-option","object-format=sha1"];function xe(){return it(In)}async function Oe(r,e,t,n,s){let a=t.includes("symrefs"),o=t.includes("peel"),i=t.includes("unborn"),f=t.filter(h=>h.startsWith("ref-prefix ")).map(h=>h.slice(11)),c=await G(r,e,"git-upload-pack",n,s);if(U(c))return c;let{refs:l,headTarget:d}=c,p=[];for(let h of l){if(h.name.endsWith("^{}")||f.length>0&&!f.some(m=>h.name.startsWith(m)))continue;let u={hash:h.hash,name:h.name};if(a&&h.name==="HEAD"&&d&&(u.symrefTarget=d),o&&h.name.startsWith("refs/tags/")){let m=l.find(R=>R.name===`${h.name}^{}`);m&&(u.peeledHash=m.hash)}p.push(u)}return i&&!p.some(h=>h.name==="HEAD")&&d&&(f.length===0||f.some(u=>"HEAD".startsWith(u)))&&p.unshift({hash:"unborn",name:"HEAD",symrefTarget:d}),ct(p)}async function Ee(r,e,t){let{wants:n,haves:s,done:a,clientShallows:o,depth:i,includeTag:f,wantRefs:c}=ft(e);if(n.length===0&&c.length===0){let{data:w}=await Z([]);return ee(w)}let l=[],d=[...n];for(let w of c){let g=await ue(r,w);g&&(l.push({hash:g,name:w}),d.includes(g)||d.push(g))}let p,h,u;if(o.length>0&&(u=new Set(o)),i!==void 0){let w=await nt(r,d,i,u??new Set);p=w,h=new Set(w.shallow)}let m;if(s.length>0){m=[];for(let w of s)await r.objectStore.exists(w)&&m.push(w);m.length===0&&(m=void 0)}let R=m&&m.length>0;if(!a&&!R)return br(m??[]);let k=!h&&t?.cache&&t.cacheKey?te.key(t.cacheKey,d,s):null,y={commonHashes:m,shallowInfo:p,wantedRefs:l.length>0?l:void 0};if(k&&t?.cache){let w=t.cache.get(k);if(w)return ee(w.packData,y)}let b={repo:r,wants:d,haves:s,includeTag:f,shallowBoundary:h,clientShallowBoundary:u,cache:t?.cache,cacheKey:k,deltaWindow:t?.deltaWindow};if(t?.noDelta){let w=await kr(b);if(!w){let{data:g}=await Z([]);return ee(g,y)}return Pr(gr(w,y))}let O=await Er(b);return ee(O,y)}function Tn(r){let e=/--protocol=version=2/.test(r),n=r.replace(/\s*--protocol=version=\d+/g,"").match(/^git[\s-](upload-pack|receive-pack)\s+'?([^']+?)'?\s*$/);if(!n)return null;let s=`git-${n[1]}`,a=n[2];return a.startsWith("/")&&(a=a.slice(1)),e?{service:s,repoPath:a,protocolV2:e}:{service:s,repoPath:a}}var Un=new TextEncoder;async function vr(r,e,t){let{resolveRepo:n,hooks:s,packCache:a,packOptions:o,session:i}=t,f=e.writable.getWriter();try{let c=Tn(r);if(!c)return ke(e,`fatal: unrecognized command '${r}'
|
|
58
|
+
`),128;let{service:l,repoPath:d}=c,p=await n(d);if(!p)return ke(e,`fatal: '${d}' does not appear to be a git repository
|
|
59
|
+
`),128;let{repo:h,repoId:u}=p;if(c.protocolV2&&l==="git-upload-pack"){let k=await G(h,u,l,s,i);if(U(k))return ke(e,`fatal: ${k.message??"access denied"}
|
|
60
|
+
`),128;await f.write(xe());let y=new _e(e.readable);try{await Dn(y,f,h,u,{hooks:s,packCache:a,packOptions:o,session:i})}finally{y.release()}return 0}let m=await G(h,u,l,s,i);if(U(m))return ke(e,`fatal: ${m.message??"access denied"}
|
|
61
|
+
`),128;await f.write(dt(m.refs,l,m.headTarget));let R=new _e(e.readable);try{if(l==="git-upload-pack"){let k=await Cn(R),y=await we(h,k,{cache:a,cacheKey:u,noDelta:o?.noDelta,deltaWindow:o?.deltaWindow});await jr(f,y)}else{let{commands:k,capabilities:y}=await Hn(R),b=R.streamRemaining();await Ln({writer:f,repo:h,repoId:u,commands:k,capabilities:y,packStream:b,hooks:s,session:i})}}finally{R.release()}return 0}catch(c){return t.onError?.(c),ke(e,`fatal: internal error
|
|
62
|
+
`),128}finally{try{await f.close()}catch{}}}async function Ln(r){let{writer:e,repo:t,repoId:n,commands:s,capabilities:a,packStream:o,hooks:i,session:f}=r,c=await ut(t,s,a,o);if(c.updates.length===0)return;let l=c.capabilities.includes("side-band-64k"),d=c.capabilities.includes("report-status");if(!c.unpackOk){if(d){let h=c.updates.map(u=>({name:u.ref,ok:!1,error:"unpack failed"}));await e.write(Q(!1,h,l))}return}let{refResults:p}=await Re({repo:t,repoId:n,ingestResult:c,hooks:i,session:f});if(d){let h=p.map(u=>({name:u.ref,ok:u.ok,error:u.error}));await e.write(Q(!0,h,l))}}function ke(r,e){r.writeStderr?.(Un.encode(e))}var Sr=new TextDecoder,_e=class{buf=new Uint8Array(0);byteReader;eof=!1;constructor(e){this.byteReader=e.getReader()}async fill(e){for(;this.buf.byteLength<e&&!this.eof;){let t=await this.byteReader.read();if(t.done||!t.value){this.eof=!0;break}let n=t.value,s=new Uint8Array(this.buf.byteLength+n.byteLength);s.set(this.buf),s.set(n,this.buf.byteLength),this.buf=s}return this.buf.byteLength>=e}consume(e){let t=this.buf.subarray(0,e);return this.buf=this.buf.subarray(e),t}async readPktLine(){if(!await this.fill(4))return null;let e=Sr.decode(this.buf.subarray(0,4)),t=parseInt(e,16);if(t===0)return{type:"flush",raw:this.consume(4)};if(t===1)return{type:"delim",raw:this.consume(4)};if(t===2)return{type:"response-end",raw:this.consume(4)};if(t<4||!await this.fill(t))return null;let n=new Uint8Array(this.consume(t));return{type:"data",raw:n,text:Sr.decode(n.subarray(4))}}async*streamRemaining(){for(this.buf.byteLength>0&&(yield this.consume(this.buf.byteLength));!this.eof;){let e=await this.byteReader.read();if(e.done||!e.value){this.eof=!0;break}yield e.value}}release(){this.byteReader.releaseLock()}};async function Cn(r){let e=[];for(;;){let t=await r.readPktLine();if(!t||(e.push(t.raw),t.type==="data"&&t.text.trimEnd()==="done"))break}return Nn(e)}async function Hn(r){let e=[],t=[],n=!0;for(;;){let s=await r.readPktLine();if(!s||s.type==="flush")break;if(s.type!=="data")continue;let a=s.text;if(a.endsWith(`
|
|
63
|
+
`)&&(a=a.slice(0,-1)),n){let i=a.indexOf("\0");i!==-1&&(t=a.slice(i+1).split(" ").filter(Boolean),a=a.slice(0,i)),n=!1}let o=a.split(" ");o.length>=3&&e.push({oldHash:o[0],newHash:o[1],refName:o[2]})}return{commands:e,capabilities:t}}async function Dn(r,e,t,n,s){let{hooks:a,packCache:o,packOptions:i,session:f}=s;for(;;){let c=await Bn(r);if(!c)break;if(c.command==="ls-refs"){let l=await Oe(t,n,c.args,a,f);if(U(l))break;await e.write(l)}else if(c.command==="fetch"){let l=await Ee(t,c.args,{cache:o,cacheKey:n,noDelta:i?.noDelta,deltaWindow:i?.deltaWindow});await jr(e,l)}else break}}async function Bn(r){let e="",t=[],n=[],s=!1,a=!1;for(;;){let o=await r.readPktLine();if(!o)return a?{command:e,capabilities:t,args:n}:null;if(o.type==="flush"){if(!a)return null;break}if(o.type==="response-end")break;if(o.type==="delim"){s=!0;continue}a=!0;let i=o.text;i.endsWith(`
|
|
64
|
+
`)&&(i=i.slice(0,-1)),s?n.push(i):i.startsWith("command=")?e=i.slice(8):t.push(i)}return e?{command:e,capabilities:t,args:n}:null}function Nn(r){if(r.length===0)return new Uint8Array(0);if(r.length===1)return r[0];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}async function jr(r,e){if(e instanceof ReadableStream){let t=e.getReader();try{for(;;){let{value:n,done:s}=await t.read();if(s)break;await r.write(n)}}finally{t.releaseLock()}}else await r.write(e)}async function Tr(r,e,t,n){let s=n?.dryRun??!1,a=await Ir(r),o=Mn(a);if(o.length===0)return{deleted:0,retained:0};let i=await me(r,o,[]),f=new Set;for await(let h of i.objects)f.add(h.hash);let c=await e.listObjectHashes(t),l=[];for(let h of c)f.has(h)||l.push(h);let d=await Ir(r);return $n(a,d)?s||l.length===0?{deleted:l.length,retained:f.size}:{deleted:await e.deleteObjects(t,l),retained:f.size}:{deleted:0,retained:f.size,aborted:!0}}async function Ir(r){return r.refStore.listRefs()}function Mn(r){let e=new Set;for(let t of r)e.add(t.hash);return Array.from(e)}function $n(r,e){if(r.length!==e.length)return!1;let t=new Map;for(let n of r)t.set(n.name,n.hash);for(let n of e)if(t.get(n.name)!==n.hash)return!1;return!0}function Ur(r){function e(t){return{objectStore:new ht(r,t),refStore:new yt(r,t)}}return{async createRepo(t,n){if(await r.hasRepo(t))throw new Error(`repo '${t}' already exists`);let a=n?.defaultBranch??"main";return await r.insertRepo(t),await r.putRef(t,"HEAD",{type:"symbolic",target:`refs/heads/${a}`}),e(t)},async repo(t){return await r.hasRepo(t)?e(t):null},async deleteRepo(t){await r.deleteRepo(t)}}}var ht=class{constructor(e,t){this.driver=e;this.repoId=t}cache=new Ie;async write(e,t){let n=Yt(e,t),s=await vt(n);return await this.driver.putObject(this.repoId,s,e,t),s}async read(e){let t=this.cache.get(e);if(t)return t;let n=await this.driver.getObject(this.repoId,e);if(!n)throw new Error(`object ${e} not found`);return this.cache.set(e,n),n}async exists(e){return!!await this.driver.hasObject(this.repoId,e)}async ingestPack(e){if(e.byteLength<32)return 0;let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0);if(n!==1346454347)throw new Error(`invalid pack signature: 0x${n.toString(16)} (expected 0x5041434b)`);let s=t.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);if(t.getUint32(8)===0)return 0;let o=this.driver,i=this.repoId,f=await zt(e,async c=>{let l=await o.getObject(i,c);return l?{type:l.type,content:new Uint8Array(l.content)}:null});return await o.putObjects(i,f.map(c=>({hash:c.hash,type:c.type,content:c.content}))),f.length}async ingestPackStream(e){let t=[];for await(let n of e)t.push({hash:n.hash,type:n.type,content:n.content});return t.length===0?0:(await this.driver.putObjects(this.repoId,t),t.length)}async findByPrefix(e){return e.length<4?[]:Array.from(await this.driver.findObjectsByPrefix(this.repoId,e))}},yt=class{constructor(e,t){this.driver=e;this.repoId=t}async readRef(e){return await this.driver.getRef(this.repoId,e)??null}async writeRef(e,t){await this.driver.putRef(this.repoId,e,er(t))}async deleteRef(e){await this.driver.removeRef(this.repoId,e)}async listRefs(e){let t=await this.driver.listRefs(this.repoId,e),n=[];for(let s of t)if(s.ref.type==="direct")n.push({name:s.name,hash:s.ref.hash});else if(s.ref.type==="symbolic"){let a=await mt(o=>this.driver.getRef(this.repoId,o),s.ref.target);a&&n.push({name:s.name,hash:a})}return n}async compareAndSwapRef(e,t,n){return!!await this.driver.atomicRefUpdate(this.repoId,s=>Pe(s.getRef(e),a=>{let o=a?a.type==="direct"?a.hash:mt(i=>s.getRef(i),a.target):null;return Pe(o,i=>{if(t===null){if(a!==null)return!1}else if(i!==t)return!1;return n===null?Pe(s.removeRef(e),()=>!0):Pe(s.putRef(e,n),()=>!0)})}))}};function Pe(r,e){return r instanceof Promise?r.then(e):e(r)}function mt(r,e,t=0){return t>10?null:Pe(r(e),n=>n?n.type==="direct"?n.hash:n.type==="symbolic"?mt(r,n.target,t+1):null:null)}var Ae=class{repos=new Set;objects=new Map;refs=new Map;hasRepo(e){return this.repos.has(e)}insertRepo(e){this.repos.add(e)}deleteRepo(e){this.repos.delete(e),this.objects.get(e)?.clear(),this.objects.delete(e),this.refs.get(e)?.clear(),this.refs.delete(e)}getObject(e,t){let n=this.getObjMap(e).get(t);return n?{type:n.type,content:new Uint8Array(n.content)}:null}putObject(e,t,n,s){let a=this.getObjMap(e);a.has(t)||a.set(t,{type:n,content:new Uint8Array(s)})}putObjects(e,t){let n=this.getObjMap(e);for(let s of t)n.has(s.hash)||n.set(s.hash,{type:s.type,content:new Uint8Array(s.content)})}hasObject(e,t){return this.getObjMap(e).has(t)}findObjectsByPrefix(e,t){let n=[];for(let s of this.getObjMap(e).keys())s.startsWith(t)&&n.push(s);return n}listObjectHashes(e){return Array.from(this.getObjMap(e).keys())}deleteObjects(e,t){let n=this.getObjMap(e),s=0;for(let a of t)n.delete(a)&&s++;return s}getRef(e,t){return this.getRefMap(e).get(t)??null}putRef(e,t,n){this.getRefMap(e).set(t,n)}removeRef(e,t){this.getRefMap(e).delete(t)}listRefs(e,t){let n=[];for(let[s,a]of this.getRefMap(e))t&&!s.startsWith(t)||n.push({name:s,ref:a});return n}atomicRefUpdate(e,t){let n=this.getRefMap(e);return t({getRef:s=>n.get(s)??null,putRef:(s,a)=>{n.set(s,a)},removeRef:s=>{n.delete(s)}})}repoIds(){return Array.from(this.repos)}getObjMap(e){let t=this.objects.get(e);return t||(t=new Map,this.objects.set(e,t)),t}getRefMap(e){let t=this.refs.get(e);return t||(t=new Map,this.refs.set(e,t)),t}};var Wn={http:r=>({transport:"http",request:r}),ssh:r=>({transport:"ssh",username:r.username})};function Lr(r){if(r.length===0)return!1;for(let t=0;t<r.length;t++){let n=r.charCodeAt(t);if(n===0||n<32||n===127||n===92)return!1}let e=r.split("/");for(let t of e)if(t.length===0||t.charCodeAt(0)===46)return!1;return!0}function _n(r={}){let e=r.storage??new Ae,t=Ur(e),n=r.resolve??(y=>y),s=r.autoCreate,{basePath:a}=r;async function o(y){if(!Lr(y))return null;let b=await n(y);if(b==null||b!==y&&!Lr(b))return null;let O=await t.repo(b);if(O)return{repo:O,repoId:b};if(!s)return null;let w=typeof s=="object"?{defaultBranch:s.defaultBranch}:void 0;return{repo:await t.createRepo(b,w),repoId:b}}let i=qn(r.policy,r.hooks),f=r.session??Wn,c=r.packCache===!1?void 0:new te(r.packCache?.maxBytes),l=r.onError===!1?void 0:r.onError??(y=>{let b=y instanceof Error?y.message:String(y);console.error(`[server] Internal error: ${b}`)}),d=!1,p=0,h=null,u=null;function m(){return d?!1:(p++,!0)}function R(){p--,d&&p===0&&h?.()}let k={async fetch(y){if(!m())return new Response("Service Unavailable",{status:503});let b;try{if(!f.http)return new Response("HTTP session builder not configured",{status:501});let O=await f.http(y);if(O instanceof Response)return O;b=O;let w=new URL(y.url),g=decodeURIComponent(w.pathname);if(a){let E=a.replace(/\/+$/,"");if(!g.startsWith(E))return new Response("Not Found",{status:404});g=g.slice(E.length)}if(g.startsWith("/")||(g=`/${g}`),g.endsWith("/info/refs")&&y.method==="GET"){let E=w.searchParams.get("service");if(E!=="git-upload-pack"&&E!=="git-receive-pack")return new Response("Unsupported service",{status:403});let P=bt(g,"/info/refs"),S=await o(P);if(!S)return new Response("Not Found",{status:404});if(Cr(y)&&E==="git-upload-pack"){let T=await G(S.repo,S.repoId,E,i,b);if(U(T))return new Response(T.message??"Forbidden",{status:403});let $=xe();return new Response($,{headers:{"Content-Type":`application/x-${E}-advertisement`,"Cache-Control":"no-cache"}})}let j=await G(S.repo,S.repoId,E,i,b);if(U(j))return new Response(j.message??"Forbidden",{status:403});let I=lt(j.refs,E,j.headTarget);return new Response(I,{headers:{"Content-Type":`application/x-${E}-advertisement`,"Cache-Control":"no-cache"}})}if(g.endsWith("/git-upload-pack")&&y.method==="POST"){let E=bt(g,"/git-upload-pack"),P=await o(E);if(!P)return new Response("Not Found",{status:404});let S=await Hr(y);if(Cr(y)){let j=ot(S),I="application/x-git-upload-pack-result";if(j.command==="ls-refs"){let T=await Oe(P.repo,P.repoId,j.args,i,b);return U(T)?new Response(T.message??"Forbidden",{status:403}):new Response(T,{headers:{"Content-Type":I}})}if(j.command==="fetch"){let T=await Ee(P.repo,j.args,{cache:c,cacheKey:P.repoId,noDelta:r.packOptions?.noDelta,deltaWindow:r.packOptions?.deltaWindow});return new Response(T,{headers:{"Content-Type":I}})}return new Response(`unknown command: ${j.command}`,{status:400})}let A=await we(P.repo,S,{cache:c,cacheKey:P.repoId,noDelta:r.packOptions?.noDelta,deltaWindow:r.packOptions?.deltaWindow});return new Response(A,{headers:{"Content-Type":"application/x-git-upload-pack-result"}})}if(g.endsWith("/git-receive-pack")&&y.method==="POST"){let E=bt(g,"/git-receive-pack"),P=await o(E);if(!P)return new Response("Not Found",{status:404});let S=await Hr(y),A=await pt(P.repo,S);if(!A.sawFlush&&A.updates.length===0)return new Response("Bad Request",{status:400});let j=A.capabilities.includes("side-band-64k"),I=A.capabilities.includes("report-status");if(!A.unpackOk){if(I){let $=A.updates.map(W=>({name:W.ref,ok:!1,error:"unpack failed"}));return new Response(Q(!1,$,j),{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{refResults:T}=await Re({repo:P.repo,repoId:P.repoId,ingestResult:A,hooks:i,session:b});if(I){let $=T.map(W=>({name:W.ref,ok:W.ok,error:W.error}));return new Response(Q(!0,$,j),{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(O){return l?.(O,b),new Response("Internal Server Error",{status:500})}finally{R()}},async handleSession(y,b,O){if(!m())return b.writeStderr?.(new TextEncoder().encode(`fatal: server shutting down
|
|
65
|
+
`)),128;try{if(!f.ssh)return b.writeStderr?.(new TextEncoder().encode(`fatal: SSH session builder not configured
|
|
66
|
+
`)),128;let w=await f.ssh(O??{});return await vr(y,b,{resolveRepo:o,hooks:i,packCache:c,packOptions:r.packOptions,session:w,onError:l?g=>l(g,w):void 0})}finally{R()}},async updateRefs(y,b){if(!m())throw new Error("Server is shutting down");try{let O=await k.requireRepo(y),w=await We(O,b);return $e(O,w)}finally{R()}},async commit(y,b){if(!m())throw new Error("Server is shutting down");try{let O=await k.requireRepo(y),{hash:w,parentHash:g}=await nr(O,b),E=`refs/heads/${b.branch}`,P=await We(O,[{ref:E,newHash:w,oldHash:g}]),A=(await $e(O,P)).refResults[0];if(!A?.ok)throw new Error(A?.error??"ref update failed");return w}finally{R()}},nodeHandler(y,b){let O=[];y.on("data",w=>O.push(new Uint8Array(w))),y.on("error",()=>{b.writeHead(500),b.end("Internal Server Error")}),y.on("end",()=>{Fn(k,y,O,b).catch(()=>{try{b.writeHead(500),b.end("Internal Server Error")}catch{}})})},createRepo:(y,b)=>t.createRepo(y,b),repo:y=>t.repo(y),async requireRepo(y){let b=await t.repo(y);if(!b)throw new Error(`Repository "${y}" not found`);return b},deleteRepo:y=>t.deleteRepo(y),async gc(y,b){if(!m())throw new Error("Server is shutting down");try{let O=await k.requireRepo(y);return Tr(O,e,y,b)}finally{R()}},get closed(){return d},asNetwork(y="http://git"){return{allowed:[y.endsWith("/")?y:`${y}/`],fetch:(O,w)=>k.fetch(new Request(O,w))}},async close(y){if(d)return u??Promise.resolve();if(d=!0,c?.clear(),p!==0){if(u=new Promise(b=>{h=b}),y?.signal){if(y.signal.aborted){h();return}let b=()=>h?.();y.signal.addEventListener("abort",b,{once:!0}),u.then(()=>y.signal.removeEventListener("abort",b))}return u}}};return k}function Cr(r){let e=r.headers.get("git-protocol");return e!==null&&e.includes("version=2")}function bt(r,e){let t=r.slice(0,-e.length);return t.startsWith("/")&&(t=t.slice(1)),t}async function Hr(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}async function Fn(r,e,t,n){let s=typeof e.headers.host=="string"?e.headers.host:"localhost",a=new URL(e.url??"/",`http://${s}`),o=new Headers;for(let[h,u]of Object.entries(e.headers))if(u!==void 0)if(Array.isArray(u))for(let m of u)o.append(h,m);else o.set(h,u);let i=e.method??"GET",f;if(i!=="GET"&&i!=="HEAD"){let h=0;for(let R of t)h+=R.byteLength;let u=new Uint8Array(h),m=0;for(let R of t)u.set(R,m),m+=R.byteLength;f=u}let c=new Request(a.href,{method:i,headers:o,body:f}),l=await r.fetch(c),d={};l.headers.forEach((h,u)=>{d[u]=h}),n.writeHead(l.status,d);let p=new Uint8Array(await l.arrayBuffer());p.byteLength>0&&n.write(p),n.end()}function Gn(r){let{protectedBranches:e=[],denyNonFastForward:t=!1,denyDeletes:n=!1,immutableTags:s=!1}=r,a=new Set(e.map(i=>i.startsWith("refs/")?i:`refs/heads/${i}`)),o={};return a.size>0&&(o.preReceive=async i=>{for(let f of i.updates)if(a.has(f.ref)){if(f.isDelete)return{reject:!0,message:`cannot delete protected branch ${f.ref}`};if(!f.isCreate&&!f.isFF)return{reject:!0,message:`non-fast-forward push to protected branch ${f.ref}`}}}),(t||n||s)&&(o.update=async i=>{if(n&&i.update.isDelete)return{reject:!0,message:"ref deletion denied"};if(s&&i.update.ref.startsWith("refs/tags/")){if(i.update.isDelete)return{reject:!0,message:"tag deletion denied"};if(!i.update.isCreate)return{reject:!0,message:"tag overwrite denied"}}if(t&&!i.update.isCreate&&!i.update.isDelete&&!i.update.isFF)return{reject:!0,message:"non-fast-forward"}}),o}function qn(r,e){let t=r?Gn(r):void 0;return t&&e?Dr(t,e):t??e}function Dr(...r){let e=r.filter(i=>i!=null);if(e.length===0)return{};if(e.length===1)return e[0];let t={},n=e.filter(i=>i.preReceive).map(i=>i.preReceive);n.length>0&&(t.preReceive=async i=>{for(let f of n){let c=await f(i);if(U(c))return c}});let s=e.filter(i=>i.update).map(i=>i.update);s.length>0&&(t.update=async i=>{for(let f of s){let c=await f(i);if(U(c))return c}});let a=e.filter(i=>i.postReceive).map(i=>i.postReceive);a.length>0&&(t.postReceive=async i=>{for(let f of a)try{await f(i)}catch{}});let o=e.filter(i=>i.advertiseRefs).map(i=>i.advertiseRefs);return o.length>0&&(t.advertiseRefs=async i=>{let f=i.refs;for(let c of o){let l=await c({...i,refs:f});if(U(l))return l;l&&(f=l)}return f}),t}var Vn=`
|
|
67
|
+
CREATE TABLE IF NOT EXISTS git_repos (
|
|
67
68
|
id TEXT PRIMARY KEY
|
|
68
69
|
);
|
|
69
70
|
|
|
@@ -83,8 +84,8 @@ CREATE TABLE IF NOT EXISTS git_refs (
|
|
|
83
84
|
target TEXT,
|
|
84
85
|
PRIMARY KEY (repo_id, name)
|
|
85
86
|
) WITHOUT ROWID;
|
|
86
|
-
`;function
|
|
87
|
-
CREATE TABLE IF NOT EXISTS
|
|
87
|
+
`;function zn(r){return{repoInsert:r.prepare("INSERT INTO git_repos (id) VALUES (?)"),repoExists:r.prepare("SELECT 1 FROM git_repos WHERE id = ? LIMIT 1"),repoDelete:r.prepare("DELETE FROM git_repos WHERE id = ?"),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 = ?"),objListHashes:r.prepare("SELECT hash FROM git_objects WHERE repo_id = ?"),objDelete:r.prepare("DELETE FROM git_objects WHERE repo_id = ? AND hash = ?"),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 wt=class{constructor(e){this.db=e;e.run(Vn),this.stmts=zn(e),this.batchInsertTx=e.transaction(t=>{for(let n of t)this.stmts.objInsert.run(n.repoId,n.hash,n.type,n.content)}),this.batchDeleteTx=e.transaction((t,n,s)=>{let a=0;for(let o of n)this.stmts.objDelete.run(t,o),a++;s(a)})}stmts;batchInsertTx;batchDeleteTx;hasRepo(e){return this.stmts.repoExists.get(e)!==null}insertRepo(e){this.stmts.repoInsert.run(e)}deleteRepo(e){this.stmts.repoDelete.run(e),this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}getObject(e,t){let n=this.stmts.objRead.get(e,t);return n?{type:n.type,content:new Uint8Array(n.content)}:null}putObject(e,t,n,s){this.stmts.objInsert.run(e,t,n,s)}putObjects(e,t){this.batchInsertTx(t.map(n=>({repoId:e,...n})))}hasObject(e,t){return this.stmts.objExists.get(e,t)!==null}findObjectsByPrefix(e,t){return this.stmts.objPrefix.all(e,`${t}*`).map(s=>s.hash)}listObjectHashes(e){return this.stmts.objListHashes.all(e).map(n=>n.hash)}deleteObjects(e,t){if(t.length===0)return 0;let n=0;return this.batchDeleteTx(e,t,s=>{n+=s}),n}getRef(e,t){let n=this.stmts.refRead.get(e,t);return gt(n)}putRef(e,t,n){n.type==="symbolic"?this.stmts.refWrite.run(e,t,"symbolic",null,n.target):this.stmts.refWrite.run(e,t,"direct",n.hash,null)}removeRef(e,t){this.stmts.refDelete.run(e,t)}listRefs(e,t){return(t?this.stmts.refList.all(e,`${t}*`):this.stmts.refListAll.all(e)).flatMap(s=>{let a=gt(s);return a?[{name:s.name,ref:a}]:[]})}atomicRefUpdate(e,t){let n=this.stmts;return this.db.transaction(()=>t({getRef:a=>gt(n.refRead.get(e,a)),putRef:(a,o)=>{o.type==="symbolic"?n.refWrite.run(e,a,"symbolic",null,o.target):n.refWrite.run(e,a,"direct",o.hash,null)},removeRef:a=>{n.refDelete.run(e,a)}}))()}};function gt(r){return r?r.type==="symbolic"&&r.target?{type:"symbolic",target:r.target}:r.type==="direct"&&r.hash?{type:"direct",hash:r.hash}:null:null}var Kn=`
|
|
88
|
+
CREATE TABLE IF NOT EXISTS git_repos (
|
|
88
89
|
id TEXT PRIMARY KEY
|
|
89
90
|
);
|
|
90
91
|
|
|
@@ -104,8 +105,8 @@ CREATE TABLE IF NOT EXISTS git_refs (
|
|
|
104
105
|
target TEXT,
|
|
105
106
|
PRIMARY KEY (repo_id, name)
|
|
106
107
|
) WITHOUT ROWID;
|
|
107
|
-
`;function
|
|
108
|
-
CREATE TABLE IF NOT EXISTS
|
|
108
|
+
`;function C(r){return{run:(...e)=>{r.run(...e)},get:(...e)=>r.get(...e)??null,all:(...e)=>r.all(...e)}}function Xn(r){return{repoInsert:C(r.prepare("INSERT INTO git_repos (id) VALUES (?)")),repoExists:C(r.prepare("SELECT 1 FROM git_repos WHERE id = ? LIMIT 1")),repoDelete:C(r.prepare("DELETE FROM git_repos WHERE id = ?")),objInsert:C(r.prepare("INSERT OR IGNORE INTO git_objects (repo_id, hash, type, content) VALUES (?, ?, ?, ?)")),objRead:C(r.prepare("SELECT type, content FROM git_objects WHERE repo_id = ? AND hash = ?")),objExists:C(r.prepare("SELECT 1 FROM git_objects WHERE repo_id = ? AND hash = ? LIMIT 1")),objPrefix:C(r.prepare("SELECT hash FROM git_objects WHERE repo_id = ? AND hash GLOB ?")),objDeleteAll:C(r.prepare("DELETE FROM git_objects WHERE repo_id = ?")),objListHashes:C(r.prepare("SELECT hash FROM git_objects WHERE repo_id = ?")),objDelete:C(r.prepare("DELETE FROM git_objects WHERE repo_id = ? AND hash = ?")),refRead:C(r.prepare("SELECT type, hash, target FROM git_refs WHERE repo_id = ? AND name = ?")),refWrite:C(r.prepare("INSERT OR REPLACE INTO git_refs (repo_id, name, type, hash, target) VALUES (?, ?, ?, ?, ?)")),refDelete:C(r.prepare("DELETE FROM git_refs WHERE repo_id = ? AND name = ?")),refList:C(r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ? AND name GLOB ?")),refListAll:C(r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ?")),refDeleteAll:C(r.prepare("DELETE FROM git_refs WHERE repo_id = ?"))}}var xt=class{constructor(e){this.db=e;e.exec(Kn),this.stmts=Xn(e),this.batchInsertTx=e.transaction(t=>{for(let n of t)this.stmts.objInsert.run(n.repoId,n.hash,n.type,n.content)}),this.batchDeleteTx=e.transaction((t,n,s)=>{let a=0;for(let o of n)this.stmts.objDelete.run(t,o),a++;s(a)})}stmts;batchInsertTx;batchDeleteTx;hasRepo(e){return this.stmts.repoExists.get(e)!==null}insertRepo(e){this.stmts.repoInsert.run(e)}deleteRepo(e){this.stmts.repoDelete.run(e),this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}getObject(e,t){let n=this.stmts.objRead.get(e,t);return n?{type:n.type,content:new Uint8Array(n.content)}:null}putObject(e,t,n,s){this.stmts.objInsert.run(e,t,n,s)}putObjects(e,t){this.batchInsertTx(t.map(n=>({repoId:e,...n})))}hasObject(e,t){return this.stmts.objExists.get(e,t)!==null}findObjectsByPrefix(e,t){return this.stmts.objPrefix.all(e,`${t}*`).map(s=>s.hash)}listObjectHashes(e){return this.stmts.objListHashes.all(e).map(n=>n.hash)}deleteObjects(e,t){if(t.length===0)return 0;let n=0;return this.batchDeleteTx(e,t,s=>{n+=s}),n}getRef(e,t){let n=this.stmts.refRead.get(e,t);return Rt(n)}putRef(e,t,n){n.type==="symbolic"?this.stmts.refWrite.run(e,t,"symbolic",null,n.target):this.stmts.refWrite.run(e,t,"direct",n.hash,null)}removeRef(e,t){this.stmts.refDelete.run(e,t)}listRefs(e,t){return(t?this.stmts.refList.all(e,`${t}*`):this.stmts.refListAll.all(e)).flatMap(s=>{let a=Rt(s);return a?[{name:s.name,ref:a}]:[]})}atomicRefUpdate(e,t){let n=this.stmts;return this.db.transaction(()=>t({getRef:a=>Rt(n.refRead.get(e,a)),putRef:(a,o)=>{o.type==="symbolic"?n.refWrite.run(e,a,"symbolic",null,o.target):n.refWrite.run(e,a,"direct",o.hash,null)},removeRef:a=>{n.refDelete.run(e,a)}}))()}};function Rt(r){return r?r.type==="symbolic"&&r.target?{type:"symbolic",target:r.target}:r.type==="direct"&&r.hash?{type:"direct",hash:r.hash}:null:null}var Yn=`
|
|
109
|
+
CREATE TABLE IF NOT EXISTS git_repos (
|
|
109
110
|
id TEXT PRIMARY KEY
|
|
110
111
|
);
|
|
111
112
|
|
|
@@ -125,5 +126,5 @@ CREATE TABLE IF NOT EXISTS git_refs (
|
|
|
125
126
|
target TEXT,
|
|
126
127
|
PRIMARY KEY (repo_id, name)
|
|
127
128
|
);
|
|
128
|
-
`,
|
|
129
|
-
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"},
|
|
129
|
+
`,v={repoInsert:"INSERT INTO git_repos (id) VALUES ($1)",repoExists:"SELECT 1 FROM git_repos WHERE id = $1 LIMIT 1",repoDelete:"DELETE FROM git_repos WHERE id = $1",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",objListHashes:"SELECT hash 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)
|
|
130
|
+
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"},Et=class r{constructor(e){this.pool=e}static async create(e){return await e.query(Yn),new r(e)}async transaction(e){let t=await this.pool.connect();try{await t.query("BEGIN");let n=await e((s,a)=>t.query(s,a));return await t.query("COMMIT"),n}catch(n){throw await t.query("ROLLBACK"),n}finally{t.release()}}async hasRepo(e){let{rows:t}=await this.pool.query(v.repoExists,[e]);return t.length>0}async insertRepo(e){await this.pool.query(v.repoInsert,[e])}async deleteRepo(e){await this.pool.query(v.repoDelete,[e]),await this.pool.query(v.objDeleteAll,[e]),await this.pool.query(v.refDeleteAll,[e])}async getObject(e,t){let{rows:n}=await this.pool.query(v.objRead,[e,t]),s=n[0];return s?{type:s.type,content:new Uint8Array(s.content)}:null}async putObject(e,t,n,s){await this.pool.query(v.objInsert,[e,t,n,s])}async putObjects(e,t){await this.transaction(async n=>{for(let s of t)await n(v.objInsert,[e,s.hash,s.type,s.content])})}async hasObject(e,t){let{rows:n}=await this.pool.query(v.objExists,[e,t]);return n.length>0}async findObjectsByPrefix(e,t){let{rows:n}=await this.pool.query(v.objPrefix,[e,`${t}%`]);return n.map(s=>s.hash)}async listObjectHashes(e){let{rows:t}=await this.pool.query(v.objListHashes,[e]);return t.map(n=>n.hash)}async deleteObjects(e,t){if(t.length===0)return 0;let{rows:n}=await this.pool.query("DELETE FROM git_objects WHERE repo_id = $1 AND hash = ANY($2::text[]) RETURNING hash",[e,Array.from(t)]);return n.length}async getRef(e,t){let{rows:n}=await this.pool.query(v.refRead,[e,t]);return Ot(n[0]??null)}async putRef(e,t,n){n.type==="symbolic"?await this.pool.query(v.refWrite,[e,t,"symbolic",null,n.target]):await this.pool.query(v.refWrite,[e,t,"direct",n.hash,null])}async removeRef(e,t){await this.pool.query(v.refDelete,[e,t])}async listRefs(e,t){let n;return t?{rows:n}=await this.pool.query(v.refList,[e,`${t}%`]):{rows:n}=await this.pool.query(v.refListAll,[e]),n.flatMap(s=>{let a=Ot(s);return a?[{name:s.name,ref:a}]:[]})}async atomicRefUpdate(e,t){return this.transaction(async n=>t({getRef:async s=>{let{rows:a}=await n(v.refReadForUpdate,[e,s]);return Ot(a[0]??null)},putRef:async(s,a)=>{a.type==="symbolic"?await n(v.refWrite,[e,s,"symbolic",null,a.target]):await n(v.refWrite,[e,s,"direct",a.hash,null])},removeRef:async s=>{await n(v.refDelete,[e,s])}}))}};function Ot(r){return r?r.type==="symbolic"&&r.target?{type:"symbolic",target:r.target}:r.type==="direct"&&r.hash?{type:"direct",hash:r.hash}:null:null}export{xt as BetterSqlite3Storage,wt as BunSqliteStorage,Ae as MemoryStorage,Et as PgStorage,G as advertiseRefsWithHooks,$e as applyCasRefUpdates,Re as applyReceivePack,lt as buildRefAdvertisementBytes,dt as buildRefListBytes,Me as buildRefListPktLines,it as buildV2CapabilityAdvertisement,xe as buildV2CapabilityAdvertisementBytes,ee as buildV2FetchResponse,ct as buildV2LsRefsResponse,xr as collectRefs,Dr as composeHooks,_n as createServer,Oe as handleLsRefs,we as handleUploadPack,Ee as handleV2Fetch,pt as ingestReceivePack,ut as ingestReceivePackFromStream,ot as parseV2CommandRequest,ft as parseV2FetchArgs,We as resolveRefUpdates};
|