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