just-git 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,28 +1,28 @@
1
- var M=(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 H(r){return r!=null&&typeof r=="object"&&"reject"in r&&r.reject===!0}var Z="0000000000000000000000000000000000000000",Oe=(()=>{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 G(r){let e="";for(let t=0;t<20;t++)e+=Oe[r[t]];return e}function je(r,e){let t="";for(let s=0;s<20;s++)t+=Oe[r[e+s]];return t}function F(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 nt=new TextEncoder;function J(r){return typeof r=="string"?nt.encode(r):r}function st(){if(typeof globalThis.Bun<"u")return()=>{let r=new Bun.CryptoHasher("sha1"),e={update(t){return r.update(J(t)),e},hex:()=>Promise.resolve(r.digest("hex"))};return e};try{let r=M(["node","crypto"].join(":"));if(typeof r.createHash=="function")return()=>{let e=r.createHash("sha1"),t={update(s){return e.update(J(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(J(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 a=await crypto.subtle.digest("SHA-1",s);return G(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 ke=st(),q=ke;async function v(r){return ke().update(r).hex()}var ot=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(!ot.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}};async function at(){let r;try{r=M(["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=s=>{let n=r.inflateSync(s,{info:!0});return{result:new Uint8Array(n.buffer),bytesConsumed:n.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"),s=t.writable.getWriter();return s.write(e),s.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())},async inflateSync(e){let t=new DecompressionStream("deflate"),s=t.writable.getWriter();return s.write(e),s.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 it=null;function Ee(){return it??=at()}async function z(r){return await(await Ee()).deflateSync(r)}async function ve(r,e){let t=await Ee();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 s=await t.inflateSync(r);if(s.byteLength!==e)throw new Error(`Inflate size mismatch: got ${s.byteLength}, expected ${e}`);let n=2,a=r.byteLength;for(;n<a;){let i=n+a>>>1;try{(await t.inflateSync(r.subarray(0,i))).byteLength===e?a=i:n=i+1}catch{n=i+1}}return{result:s,bytesConsumed:n}}var K=1346454347,te=2,Se=1,Te=2,Ue=3,Ce=4,D=6,re=7,ct={[Se]:"commit",[Te]:"tree",[Ue]:"blob",[Ce]:"tag"},Le={commit:Se,tree:Te,blob:Ue,tag:Ce};async function A(r,e){let t=new DataView(r.buffer,r.byteOffset,r.byteLength),s=t.getUint32(0);if(s!==K)throw new Error(`Invalid pack signature: 0x${s.toString(16)} (expected 0x${K.toString(16)})`);let n=t.getUint32(4);if(n!==te)throw new Error(`Unsupported pack version: ${n}`);let a=t.getUint32(8),i=[],o=12;for(let c=0;c<a;c++){let d=await ft(r,o);i.push(d),o=d.nextOffset}return(await dt(i,e)).map((c,d)=>({...c,offset:i[d].headerOffset,nextOffset:i[d].nextOffset}))}async function ft(r,e){let t=e,s=r[e++],n=s>>4&7,a=s&15,i=4;for(;s&128;)s=r[e++],a|=(s&127)<<i,i+=7;let o,f;if(n===D){let u=r[e++];for(o=u&127;u&128;)o+=1,u=r[e++],o=(o<<7)+(u&127);o=t-o}else n===re&&(f=je(r,e),e+=20);let{result:c,bytesConsumed:d}=await ve(r.subarray(e),a);return{headerOffset:t,typeNum:n,inflated:c,baseOffset:o,baseHash:f,nextOffset:e+d}}async function dt(r,e){let t=new Map;for(let a=0;a<r.length;a++)t.set(r[a].headerOffset,a);let s=new Array(r.length).fill(null);async function n(a){let i=s[a];if(i)return i;let o=r[a];if(o.typeNum!==D&&o.typeNum!==re){let l=ct[o.typeNum];if(!l)throw new Error(`Unknown object type: ${o.typeNum}`);let h={type:l,content:o.inflated,hash:await Q(l,o.inflated)};return s[a]=h,h}if(o.typeNum===D){let l=t.get(o.baseOffset);if(l===void 0)throw new Error(`OFS_DELTA base not found at offset ${o.baseOffset}`);let h=await n(l),y=Ie(h.content,o.inflated),p={type:h.type,content:y,hash:await Q(h.type,y)};return s[a]=p,p}let f=await lt(r,s,o.baseHash,n),c;if(f!==void 0)c=await n(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=Ie(c.content,o.inflated),u={type:c.type,content:d,hash:await Q(c.type,d)};return s[a]=u,u}for(let a=0;a<r.length;a++)await n(a);return s}async function lt(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 a=r[n];if(a.typeNum!==D&&a.typeNum!==re&&(await s(n)).hash===t)return n}}function Ie(r,e){let t=0,{value:s,newPos:n}=Ae(e,t);if(t=n,s!==r.byteLength)throw new Error(`Delta base size mismatch: expected ${s}, got ${r.byteLength}`);let{value:a,newPos:i}=Ae(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,u=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&&(u=e[t++]),c&32&&(u|=e[t++]<<8),c&64&&(u|=e[t++]<<16),u===0&&(u=65536),o.set(r.subarray(d,d+u),f),f+=u}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 He(r){let e=[],t=new Map,s=new Uint8Array(12),n=new DataView(s.buffer);n.setUint32(0,K),n.setUint32(4,te),n.setUint32(8,r.length),e.push(s);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=ee(D,o.delta.byteLength),u=ut(a-c),l=await z(o.delta);e.push(d,u,l),a+=d.byteLength+u.byteLength+l.byteLength}else{let d=Le[o.type],u=ee(d,o.content.byteLength),l=await z(o.content);e.push(u,l),a+=u.byteLength+l.byteLength}i.push({hash:o.hash,offset:f,nextOffset:a})}return{data:await pt(e),entries:i}}async function*De(r,e){let t=q(),s=new Uint8Array(12),n=new DataView(s.buffer);n.setUint32(0,K),n.setUint32(4,te),n.setUint32(8,r),t.update(s),yield s;for await(let a of e){let i=Le[a.type],o=ee(i,a.content.byteLength),f=await z(a.content);t.update(o),t.update(f),yield ht(o,f)}yield F(await t.hex())}async function pt(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=q();n.update(t.subarray(0,s));let a=await n.hex();return t.set(F(a),s),t}function ut(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 ee(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 Ae(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 ht(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(r,0),t.set(e,r.byteLength),t}var yt=new TextEncoder;async function Q(r,e){let t=yt.encode(`${r} ${e.byteLength}\0`),s=q();return s.update(t),s.update(e),s.hex()}var bt=new TextEncoder,er=new TextDecoder;function S(r,e){let t=bt.encode(`${r} ${e.byteLength}\0`),s=new Uint8Array(t.byteLength+e.byteLength);return s.set(t),s.set(e,t.byteLength),s}function N(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),a=r.slice(t+2),[i="0",o="+0000"]=a.split(" "),f=parseInt(i,10);return{name:s,email:n,timestamp:f,timezone:o}}var sr=new TextEncoder,xt=new TextDecoder;function B(r){let e=xt.decode(r),t=e.indexOf(`
1
+ var M=(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 H(r){return r!=null&&typeof r=="object"&&"reject"in r&&r.reject===!0}var Z="0000000000000000000000000000000000000000",Oe=(()=>{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 G(r){let e="";for(let t=0;t<20;t++)e+=Oe[r[t]];return e}function je(r,e){let t="";for(let n=0;n<20;n++)t+=Oe[r[e+n]];return t}function F(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 nt=new TextEncoder;function J(r){return typeof r=="string"?nt.encode(r):r}function st(){if(typeof globalThis.Bun<"u")return()=>{let r=new Bun.CryptoHasher("sha1"),e={update(t){return r.update(J(t)),e},hex:()=>Promise.resolve(r.digest("hex"))};return e};try{let r=M(["node","crypto"].join(":"));if(typeof r.createHash=="function")return()=>{let e=r.createHash("sha1"),t={update(n){return e.update(J(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(J(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 G(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 ke=st(),q=ke;async function v(r){return ke().update(r).hex()}var ot=new Set(["tree","commit","tag"]),A=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(!ot.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 at(){let r;try{r=M(["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 it=null;function Ee(){return it??=at()}async function z(r){return await(await Ee()).deflateSync(r)}async function ve(r,e){let t=await Ee();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 K=1346454347,te=2,Se=1,Te=2,Ue=3,Ce=4,D=6,re=7,ct={[Se]:"commit",[Te]:"tree",[Ue]:"blob",[Ce]:"tag"},Le={commit:Se,tree:Te,blob:Ue,tag:Ce};async function I(r,e){let t=new DataView(r.buffer,r.byteOffset,r.byteLength),n=t.getUint32(0);if(n!==K)throw new Error(`Invalid pack signature: 0x${n.toString(16)} (expected 0x${K.toString(16)})`);let s=t.getUint32(4);if(s!==te)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 ft(r,o);i.push(d),o=d.nextOffset}return(await dt(i,e)).map((c,d)=>({...c,offset:i[d].headerOffset,nextOffset:i[d].nextOffset}))}async function ft(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===D){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===re&&(f=je(r,e),e+=20);let{result:c,bytesConsumed:d}=await ve(r.subarray(e),a);return{headerOffset:t,typeNum:s,inflated:c,baseOffset:o,baseHash:f,nextOffset:e+d}}async function dt(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!==D&&o.typeNum!==re){let l=ct[o.typeNum];if(!l)throw new Error(`Unknown object type: ${o.typeNum}`);let p={type:l,content:o.inflated,hash:await Q(l,o.inflated)};return n[a]=p,p}if(o.typeNum===D){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 Q(p.type,u)};return n[a]=h,h}let f=await lt(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 Q(c.type,d)};return n[a]=y,y}for(let a=0;a<r.length;a++)await s(a);return n}async function lt(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!==D&&a.typeNum!==re&&(await n(s)).hash===t)return s}}function Ae(r,e){let t=0,{value:n,newPos:s}=Ie(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}=Ie(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 He(r){let e=[],t=new Map,n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,K),s.setUint32(4,te),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=ee(D,o.delta.byteLength),y=ut(a-c),l=await z(o.delta);e.push(d,y,l),a+=d.byteLength+y.byteLength+l.byteLength}else{let d=Le[o.type],y=ee(d,o.content.byteLength),l=await z(o.content);e.push(y,l),a+=y.byteLength+l.byteLength}i.push({hash:o.hash,offset:f,nextOffset:a})}return{data:await pt(e),entries:i}}async function*De(r,e){let t=q(),n=new Uint8Array(12),s=new DataView(n.buffer);s.setUint32(0,K),s.setUint32(4,te),s.setUint32(8,r),t.update(n),yield n;for await(let a of e){let i=Le[a.type],o=ee(i,a.content.byteLength),f=await z(a.content);t.update(o),t.update(f),yield ht(o,f)}yield F(await t.hex())}async function pt(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=q();s.update(t.subarray(0,n));let a=await s.hex();return t.set(F(a),n),t}function ut(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 ee(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 Ie(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 ht(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(r,0),t.set(e,r.byteLength),t}var yt=new TextEncoder;async function Q(r,e){let t=yt.encode(`${r} ${e.byteLength}\0`),n=q();return n.update(t),n.update(e),n.hex()}var bt=new TextEncoder,nr=new TextDecoder;function S(r,e){let t=bt.encode(`${r} ${e.byteLength}\0`),n=new Uint8Array(t.byteLength+e.byteLength);return n.set(t),n.set(e,t.byteLength),n}function N(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 ir=new TextEncoder,xt=new TextDecoder;function B(r){let e=xt.decode(r),t=e.indexOf(`
2
2
 
3
- `),s=t===-1?e:e.slice(0,t),n=t===-1?"":e.slice(t+2),a="",i=[],o,f;for(let c of s.split(`
4
- `)){let d=c.indexOf(" ");if(d===-1)continue;let u=c.slice(0,d),l=c.slice(d+1);switch(u){case"tree":a=l;break;case"parent":i.push(l);break;case"author":o=N(l);break;case"committer":f=N(l);break}}if(!a)throw new Error("Commit missing tree field");if(!o)throw new Error("Commit missing author field");if(!f)throw new Error("Commit missing committer field");return{type:"commit",tree:a,parents:i,author:o,committer:f,message:n}}var ir=new TextEncoder,gt=new TextDecoder;function j(r){let e=gt.decode(r),t=e.indexOf(`
3
+ `),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",i=[],o,f;for(let c of n.split(`
4
+ `)){let d=c.indexOf(" ");if(d===-1)continue;let y=c.slice(0,d),l=c.slice(d+1);switch(y){case"tree":a=l;break;case"parent":i.push(l);break;case"author":o=N(l);break;case"committer":f=N(l);break}}if(!a)throw new Error("Commit missing tree field");if(!o)throw new Error("Commit missing author field");if(!f)throw new Error("Commit missing committer field");return{type:"commit",tree:a,parents:i,author:o,committer:f,message:s}}var dr=new TextEncoder,gt=new TextDecoder;function j(r){let e=gt.decode(r),t=e.indexOf(`
5
5
 
6
- `),s=t===-1?e:e.slice(0,t),n=t===-1?"":e.slice(t+2),a="",i="commit",o="",f;for(let c of s.split(`
7
- `)){let d=c.indexOf(" ");if(d===-1)continue;let u=c.slice(0,d),l=c.slice(d+1);switch(u){case"object":a=l;break;case"type":i=l;break;case"tag":o=l;break;case"tagger":f=N(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:n}}async function $(r,e){return r.objectStore.read(e)}async function Ne(r,e){return r.objectStore.exists(e)}var dr=new TextDecoder;async function Be(r,e){let t=await $(r,e);if(t.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${t.type}`);return B(t.content)}var ur=new TextEncoder,$e=new TextDecoder;function ne(r){let e=[],t=0;for(;t<r.byteLength;){let s=r.indexOf(32,t);if(s===-1)break;let n=$e.decode(r.subarray(t,s)),a=r.indexOf(0,s+1);if(a===-1)break;let i=$e.decode(r.subarray(s+1,a)),o=r.subarray(a+1,a+21),f=G(o),c=n.padStart(6,"0");e.push({mode:c,name:i,hash:f}),t=a+21}return{type:"tree",entries:e}}async function _e(r,e,t){if(e===t)return!0;let s=new Set,n=[t],a=0;for(;a<n.length;){let i=n[a++];if(i===e)return!0;if(s.has(i))continue;s.add(i);let o=await Be(r,i);for(let f of o.parents)s.has(f)||n.push(f)}return!1}var Y=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]),wt=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]),X=64,Rt=4,se=4096,We=65536,Pt=127;function Ot(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=kt(s);let n=s-1,a=new Uint32Array(s),i=[],o=-1>>>0;for(let l=t*16-16;l>=0;l-=16){let h=0;for(let y=1;y<=16;y++)h=(h<<8|r[l+y])^Y[h>>>23];if(h=h>>>0,h===o)i[i.length-1].ptr=l+16;else{o=h;let y=h&n;i.push({ptr:l+16,val:h}),a[y]++}}let f=new Map;for(let l of i){let h=l.val&n,y=f.get(h);y||(y=[],f.set(h,y)),y.push(l)}for(let[l,h]of f){if(h.length<=X)continue;let y=[],p=h.length/X;for(let b=0;b<X;b++)y.push(h[Math.floor(b*p)]);f.set(l,y),a[l]=X}let c=new Uint32Array(s+1),d=[],u=0;for(let l=0;l<s;l++){c[l]=u;let h=f.get(l);if(h){for(let y of h)d.push(y);u+=h.length}}return c[s]=u,{src:r,hashMask:n,buckets:c,entries:d}}function jt(r,e,t){if(!r||e.byteLength===0)return null;let s=r.src.byteLength,n=e.byteLength,a=r.src,i=new Uint8Array(Math.max(n,1024)),o=0;function f(p){for(;o+p>i.length;){let b=new Uint8Array(i.length*2);b.set(i),i=b}}o=Ge(i,o,s),o=Ge(i,o,n),f(18),o++;let c=0,d=0,u=Math.min(16,n);for(let p=0;p<u;p++)i[o++]=e[p],c=(c<<8|e[p])^Y[c>>>23],d++;c=c>>>0;let l=u,h=0,y=0;for(;l<n;){if(y<se){c^=wt[e[l-16]],c=((c<<8|e[l])^Y[c>>>23])>>>0;let p=c&r.hashMask,b=r.buckets[p],m=r.buckets[p+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,L=n-l;if(O>L&&(O=L),O<=y)break;let E=0;for(;E<O&&a[g+E]===e[l+E];)E++;if(E>y&&(y=E,h=g,y>=se))break}}if(y<Rt)f(2),d===0&&o++,i[o++]=e[l++],d++,d===Pt&&(i[o-d-1]=d,d=0),y=0;else{if(d>0){for(;h>0&&a[h-1]===e[l-1];)if(y++,h--,l--,o--,!(--d>0)){o--,d=-1;break}d>0&&(i[o-d-1]=d),d=0}let p=y>We?y-We:0;y-=p,f(8);let b=o++,m=128;if(h&255&&(i[o++]=h&255,m|=1),h&65280&&(i[o++]=h>>>8&255,m|=2),h&16711680&&(i[o++]=h>>>16&255,m|=4),h&4278190080&&(i[o++]=h>>>24&255,m|=8),y&255&&(i[o++]=y&255,m|=16),y&65280&&(i[o++]=y>>>8&255,m|=32),i[b]=m,l+=y,h+=y,y=p,h>4294967295&&(y=0),y<se){c=0;for(let P=-16;P<0;P++)c=(c<<8|e[l+P])^Y[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 Me={blob:0,tree:1,commit:2,tag:3};function Fe(r,e){let t=e?.window??10,s=e?.depth??50,n=r.slice().sort((c,d)=>{let u=Me[c.type]??99,l=Me[d.type]??99;return u!==l?u-l:d.content.byteLength-c.content.byteLength}),a=new Map,i=[],o=[],f=[];for(let c=0;c<n.length;c++){let d=n[c],u={hash:d.hash,type:d.type,content:d.content,depth:0},l=null,h=null,y=Math.max(0,c-t);for(let p=c-1;p>=y;p--){let b=n[p];if(b.type!==d.type||(a.get(b.hash)?.depth??0)>=s||d.content.byteLength<b.content.byteLength>>>5)continue;let x=o[p-y]??null;if(!x)continue;let g=l?l.byteLength:d.content.byteLength/2|0;if(g<16)continue;let O=jt(x,d.content,g);O&&(!l||O.byteLength<l.byteLength)&&(l=O,h=b.hash)}if(l&&h){u.delta=l,u.deltaBase=h;let p=a.get(h);u.depth=(p?.depth??0)+1}a.set(d.hash,u),i.push(u),o.length>=t&&(o.shift(),f.shift()),o.push(Ot(d.content)),f.push(d.hash)}return i}function kt(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 Ge(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}async function oe(r,e,t){let s=new Set;for(let i of t)await _(r,i,s);let n=[],a=new Set;for(let i of e)await W(r,i,s,a,n);return{count:n.length,objects:Et(n)}}async function qe(r,e,t){let{count:s,objects:n}=await oe(r,e,t);return{count:s,objects:vt(r,n)}}async function*Et(r){for(let e of r)yield e}async function*vt(r,e){for await(let t of e){let s=await $(r,t.hash);yield{hash:t.hash,type:t.type,content:s.content}}}async function ze(r){let e=[];for await(let t of r.objects)e.push(t);return e}async function _(r,e,t){if(t.has(e)||(t.add(e),!await Ne(r,e)))return;let s=await $(r,e);switch(s.type){case"commit":{let n=B(s.content);await _(r,n.tree,t);for(let a of n.parents)await _(r,a,t);break}case"tree":{let n=ne(s.content);for(let a of n.entries)await _(r,a.hash,t);break}case"tag":{let n=j(s.content);await _(r,n.object,t);break}case"blob":break}}async function W(r,e,t,s,n){if(s.has(e)||t.has(e))return;s.add(e);let a=await $(r,e);switch(n.push({hash:e,type:a.type}),a.type){case"commit":{let i=B(a.content);await W(r,i.tree,t,s,n);for(let o of i.parents)await W(r,o,t,s,n);break}case"tree":{let i=ne(a.content);for(let o of i.entries)await W(r,o.hash,t,s,n);break}case"tag":{let i=j(a.content);await W(r,i.object,t,s,n);break}case"blob":break}}var It=new TextEncoder,Xe=new TextDecoder,Ke=65520,At=new Uint8Array([48,48,48,48]);function R(r){let e=typeof r=="string"?It.encode(r):r,t=4+e.byteLength;if(t>Ke)throw new Error(`pkt-line too long: ${t} bytes (max ${Ke})`);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 k(){return At.slice()}function T(...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 Ye(r){let e=[],t=0;for(;t<r.byteLength;){if(t+4>r.byteLength)throw new Error("Truncated pkt-line header");let s=Xe.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 Ve(r){if(r.type==="flush")return"";let e=Xe.decode(r.data);return e.endsWith(`
8
- `)?e.slice(0,-1):e}var Ze=65514;function Je(r,e,t,s){let n=[];n.push(R(`# service=${e}
9
- `)),n.push(k());let a=[...t];s&&a.push(`symref=HEAD:${s}`),a.push("agent=just-git/1.0");let i=a.join(" ");if(r.length===0)n.push(R(`0000000000000000000000000000000000000000 capabilities^{}\0${i}
10
- `));else for(let o=0;o<r.length;o++){let f=r[o];o===0?n.push(R(`${f.hash} ${f.name}\0${i}
11
- `)):n.push(R(`${f.hash} ${f.name}
12
- `))}return n.push(k()),T(...n)}function Qe(r){let e=Ye(r),t=[],s=[],n=[];for(let a of e){if(a.type==="flush")continue;let i=Ve(a);if(i.startsWith("want ")){let o=i.slice(5);if(t.length===0){let f=o.indexOf(" ");f!==-1?(t.push(o.slice(0,f)),n=o.slice(f+1).split(" ").filter(Boolean)):t.push(o)}else t.push(o)}else i.startsWith("have ")&&s.push(i.slice(5))}return{wants:t,haves:s,capabilities:n}}function U(r,e,t){let s=[];if(t&&t.length>0){for(let a of t)s.push(R(`ACK ${a} common
13
- `));let n=t[t.length-1];s.push(R(`ACK ${n} ready
14
- `)),s.push(R(`ACK ${n}
15
- `))}else s.push(R(`NAK
16
- `));if(e){let n=0;for(;n<r.byteLength;){let a=Math.min(Ze,r.byteLength-n);s.push(ae(1,r.subarray(n,n+a))),n+=a}s.push(k())}else{let n=new Uint8Array(r.byteLength);n.set(r),s.push(n)}return T(...s)}async function*et(r,e,t){let s=[];if(t&&t.length>0){for(let a of t)s.push(R(`ACK ${a} common
17
- `));let n=t[t.length-1];s.push(R(`ACK ${n} ready
18
- `)),s.push(R(`ACK ${n}
19
- `))}else s.push(R(`NAK
20
- `));if(yield T(...s),e){for await(let n of r){let a=0;for(;a<n.byteLength;){let i=Math.min(Ze,n.byteLength-a);yield ae(1,n.subarray(a,a+i)),a+=i}}yield k()}else for await(let n of r)yield n}function tt(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)),o=parseInt(i,16);if(Number.isNaN(o))break;if(o===0){n+=4;break}if(o<4||n+o>r.byteLength)break;let f=r.subarray(n+4,n+o);n+=o;let c=f.indexOf(0),d;if(c!==-1)d=e.decode(f.subarray(0,c)),s=e.decode(f.subarray(c+1)).replace(/\n$/,"").split(" ").filter(Boolean);else{let l=e.decode(f);d=l.endsWith(`
21
- `)?l.slice(0,-1):l}let u=d.split(" ");u.length>=3&&t.push({oldHash:u[0],newHash:u[1],refName:u[2]})}let a=n<r.byteLength?r.subarray(n):new Uint8Array(0);return{commands:t,packData:a,capabilities:s}}function V(r,e,t){let s=[];s.push(R(r?`unpack ok
6
+ `),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t+2),a="",i="commit",o="",f;for(let c of n.split(`
7
+ `)){let d=c.indexOf(" ");if(d===-1)continue;let y=c.slice(0,d),l=c.slice(d+1);switch(y){case"object":a=l;break;case"type":i=l;break;case"tag":o=l;break;case"tagger":f=N(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 Ne(r,e){return r.objectStore.exists(e)}var ur=new TextDecoder;async function Be(r,e){let t=await $(r,e);if(t.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${t.type}`);return B(t.content)}var br=new TextEncoder,$e=new TextDecoder;function ne(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=G(o),c=s.padStart(6,"0");e.push({mode:c,name:i,hash:f}),t=a+21}return{type:"tree",entries:e}}async function _e(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 Be(r,i);for(let f of o.parents)n.has(f)||s.push(f)}return!1}var Y=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]),wt=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]),X=64,Rt=4,se=4096,We=65536,Pt=127;function Ot(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=kt(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])^Y[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<=X)continue;let u=[],h=p.length/X;for(let b=0;b<X;b++)u.push(p[Math.floor(b*h)]);f.set(l,u),a[l]=X}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 jt(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=Ge(i,o,n),o=Ge(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])^Y[c>>>23],d++;c=c>>>0;let l=y,p=0,u=0;for(;l<s;){if(u<se){c^=wt[e[l-16]],c=((c<<8|e[l])^Y[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,L=s-l;if(O>L&&(O=L),O<=u)break;let E=0;for(;E<O&&a[g+E]===e[l+E];)E++;if(E>u&&(u=E,p=g,u>=se))break}}if(u<Rt)f(2),d===0&&o++,i[o++]=e[l++],d++,d===Pt&&(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<se){c=0;for(let P=-16;P<0;P++)c=(c<<8|e[l+P])^Y[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 Me={blob:0,tree:1,commit:2,tag:3};function Fe(r,e){let t=e?.window??10,n=e?.depth??50,s=r.slice().sort((c,d)=>{let y=Me[c.type]??99,l=Me[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=jt(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(Ot(d.content)),f.push(d.hash)}return i}function kt(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 Ge(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 oe(r,e,t){let n=new Set;for(let i of t)await _(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:Et(s)}}async function qe(r,e,t){let{count:n,objects:s}=await oe(r,e,t);return{count:n,objects:vt(r,s)}}async function*Et(r){for(let e of r)yield e}async function*vt(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 ze(r){let e=[];for await(let t of r.objects)e.push(t);return e}async function _(r,e,t){if(t.has(e)||(t.add(e),!await Ne(r,e)))return;let n=await $(r,e);switch(n.type){case"commit":{let s=B(n.content);await _(r,s.tree,t);for(let a of s.parents)await _(r,a,t);break}case"tree":{let s=ne(n.content);for(let a of s.entries)await _(r,a.hash,t);break}case"tag":{let s=j(n.content);await _(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=B(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=ne(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,Xe=new TextDecoder,Ke=65520,It=new Uint8Array([48,48,48,48]);function R(r){let e=typeof r=="string"?At.encode(r):r,t=4+e.byteLength;if(t>Ke)throw new Error(`pkt-line too long: ${t} bytes (max ${Ke})`);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 It.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 Ye(r){let e=[],t=0;for(;t<r.byteLength;){if(t+4>r.byteLength)throw new Error("Truncated pkt-line header");let n=Xe.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 Ve(r){if(r.type==="flush")return"";let e=Xe.decode(r.data);return e.endsWith(`
8
+ `)?e.slice(0,-1):e}var Ze=65514;function Je(r,e,t,n){let s=[];s.push(R(`# service=${e}
9
+ `)),s.push(k());let a=[...t];n&&a.push(`symref=HEAD:${n}`),a.push("agent=just-git/1.0");let i=a.join(" ");if(r.length===0)s.push(R(`0000000000000000000000000000000000000000 capabilities^{}\0${i}
10
+ `));else for(let o=0;o<r.length;o++){let f=r[o];o===0?s.push(R(`${f.hash} ${f.name}\0${i}
11
+ `)):s.push(R(`${f.hash} ${f.name}
12
+ `))}return s.push(k()),T(...s)}function Qe(r){let e=Ye(r),t=[],n=[],s=[];for(let a of e){if(a.type==="flush")continue;let i=Ve(a);if(i.startsWith("want ")){let o=i.slice(5);if(t.length===0){let f=o.indexOf(" ");f!==-1?(t.push(o.slice(0,f)),s=o.slice(f+1).split(" ").filter(Boolean)):t.push(o)}else t.push(o)}else i.startsWith("have ")&&n.push(i.slice(5))}return{wants:t,haves:n,capabilities:s}}function U(r,e,t){let n=[];if(t&&t.length>0){for(let a of t)n.push(R(`ACK ${a} common
13
+ `));let s=t[t.length-1];n.push(R(`ACK ${s} ready
14
+ `)),n.push(R(`ACK ${s}
15
+ `))}else n.push(R(`NAK
16
+ `));if(e){let s=0;for(;s<r.byteLength;){let a=Math.min(Ze,r.byteLength-s);n.push(ae(1,r.subarray(s,s+a))),s+=a}n.push(k())}else{let s=new Uint8Array(r.byteLength);s.set(r),n.push(s)}return T(...n)}async function*et(r,e,t){let n=[];if(t&&t.length>0){for(let a of t)n.push(R(`ACK ${a} common
17
+ `));let s=t[t.length-1];n.push(R(`ACK ${s} ready
18
+ `)),n.push(R(`ACK ${s}
19
+ `))}else n.push(R(`NAK
20
+ `));if(yield T(...n),e){for await(let s of r){let a=0;for(;a<s.byteLength;){let i=Math.min(Ze,s.byteLength-a);yield ae(1,s.subarray(a,a+i)),a+=i}}yield k()}else for await(let s of r)yield s}function tt(r){let e=new TextDecoder,t=[],n=[],s=0;for(;s<r.byteLength&&!(s+4>r.byteLength);){let i=e.decode(r.subarray(s,s+4)),o=parseInt(i,16);if(Number.isNaN(o))break;if(o===0){s+=4;break}if(o<4||s+o>r.byteLength)break;let f=r.subarray(s+4,s+o);s+=o;let c=f.indexOf(0),d;if(c!==-1)d=e.decode(f.subarray(0,c)),n=e.decode(f.subarray(c+1)).replace(/\n$/,"").split(" ").filter(Boolean);else{let l=e.decode(f);d=l.endsWith(`
21
+ `)?l.slice(0,-1):l}let y=d.split(" ");y.length>=3&&t.push({oldHash:y[0],newHash:y[1],refName:y[2]})}let a=s<r.byteLength?r.subarray(s):new Uint8Array(0);return{commands:t,packData:a,capabilities:n}}function V(r,e,t){let n=[];n.push(R(r?`unpack ok
22
22
  `:`unpack error
23
- `));for(let a of e)a.ok?s.push(R(`ok ${a.name}
24
- `)):s.push(R(`ng ${a.name} ${a.error??"failed"}
25
- `));s.push(k());let n=T(...s);if(t){let a=[];return a.push(ae(1,n)),a.push(k()),T(...a)}return n}function ae(r,e){let t=new Uint8Array(1+e.byteLength);return t[0]=r,t.set(e,1),R(t)}var C=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}}},St=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag"],Tt=["report-status","side-band-64k","ofs-delta","delete-refs"];async function ie(r){let e=await r.refStore.listRefs("refs"),t=await r.refStore.readRef("HEAD"),s=[],n=null,a;if(t)if(t.type==="symbolic"){a=t.target;let i=await r.refStore.readRef(t.target);i?.type==="direct"&&(n=i.hash)}else n=t.hash;n&&s.push({name:"HEAD",hash:n});for(let i of e)if(s.push({name:i.name,hash:i.hash}),i.name.startsWith("refs/tags/"))try{let o=await r.objectStore.read(i.hash);if(o.type==="tag"){let f=j(o.content);s.push({name:`${i.name}^{}`,hash:f.object})}}catch{}return{refs:s,headTarget:a}}function ce(r,e,t){return Je(r,e,e==="git-upload-pack"?St:Tt,t)}async function fe(r,e,t){let{wants:s,haves:n,capabilities:a}=Qe(e);if(s.length===0)return U(new Uint8Array(0),!1);let i=a.includes("multi_ack_detailed"),o=a.includes("side-band-64k"),f;if(i&&n.length>0){f=[];for(let d of n)await r.objectStore.exists(d)&&f.push(d);f.length===0&&(f=void 0)}let c=t?.cache&&t.cacheKey?C.key(t.cacheKey,s,n):null;if(c&&t?.cache){let d=t.cache.get(c);if(d)return U(d.packData,o,f)}return t?.noDelta?Ut(r,s,n,a,o,f):Ct(r,s,n,a,o,f,t,c)}async function Ut(r,e,t,s,n,a){let{count:i,objects:o}=await oe(r,e,t);if(i===0){let p=U(new Uint8Array(0),n,a);return new ReadableStream({start(b){b.enqueue(p),b.close()}})}let f=[];for await(let p of o)f.push(p);let c=new Set(f.map(p=>p.hash)),d=[];if(s.includes("include-tag")){let p=await r.refStore.listRefs("refs/tags");for(let b of p)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 u=f.length+d.length;async function*l(){for(let p of f){let b=await r.objectStore.read(p.hash);yield{type:b.type,content:b.content}}for(let p of d)yield{type:p.type,content:p.content}}let h=De(u,l()),y=et(h,n,a);return new ReadableStream({async pull(p){let{value:b,done:m}=await y.next();m?p.close():p.enqueue(b)}})}async function Ct(r,e,t,s,n,a,i,o){let f=await qe(r,e,t);if(f.count===0)return U(new Uint8Array(0),n,a);let c=await ze(f),d=new Set(c.map(p=>p.hash));if(s.includes("include-tag")){let p=await r.refStore.listRefs("refs/tags");for(let b of p)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 u=i?.deltaWindow?{window:i.deltaWindow}:void 0,l=Fe(c,u),h=l.map(p=>({hash:p.hash,type:p.type,content:p.content,delta:p.delta,deltaBaseHash:p.deltaBase})),{data:y}=await He(h);if(o&&i?.cache){let p=l.filter(b=>b.delta).length;i.cache.set(o,{packData:y,objectCount:c.length,deltaCount:p})}return U(y,n,a)}async function de(r,e){let{commands:t,packData:s,capabilities:n}=tt(e),a=!0;if(s.byteLength>0)try{await r.objectStore.ingestPack(s)}catch{a=!1}let i=[];for(let o of t){let f=o.oldHash===Z,c=o.newHash===Z,d=!1;if(!f&&!c&&a)try{d=await _e(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:n}}function Lt(r){let{resolveRepo:e,hooks:t,basePath:s}=r,n=r.packCache===!1?void 0:new C(r.packCache?.maxBytes);return{async fetch(a){try{let i=new URL(a.url),o=decodeURIComponent(i.pathname);if(s){let f=s.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=le(o,"/info/refs"),d=await e(c,a);if(d instanceof Response)return d;if(!d)return new Response("Not Found",{status:404});let u=d,{refs:l,headTarget:h}=await ie(u),y=l;if(t?.advertiseRefs){let b=await t.advertiseRefs({repo:u,repoPath:c,refs:l,service:f,request:a});b&&(y=b)}let p=ce(y,f,h);return new Response(p,{headers:{"Content-Type":`application/x-${f}-advertisement`,"Cache-Control":"no-cache"}})}if(o.endsWith("/git-upload-pack")&&a.method==="POST"){let f=le(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,u=await rt(a),l=await fe(d,u,{cache:n,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=le(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,u=await rt(a),{updates:l,unpackOk:h,capabilities:y}=await de(d,u),p=y.includes("side-band-64k"),b=y.includes("report-status");if(!h){if(b){let x=l.map(g=>({name:g.ref,ok:!1,error:"unpack failed"}));return new Response(V(!1,x,p),{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(H(x)){if(b){let g=x.message??"pre-receive hook declined",O=l.map(L=>({name:L.ref,ok:!1,error:g}));return new Response(V(!0,O,p),{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(H(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(V(!0,x,p),{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 rt(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 Ht(...r){let e=r.filter(o=>o!=null);if(e.length===0)return{};if(e.length===1)return e[0];let t={},s=e.filter(o=>o.preReceive).map(o=>o.preReceive);s.length>0&&(t.preReceive=async o=>{for(let f of s){let c=await f(o);if(H(c))return c}});let n=e.filter(o=>o.update).map(o=>o.update);n.length>0&&(t.update=async o=>{for(let f of n){let c=await f(o);if(H(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 Dt(r){let{protectedBranches:e=[],denyNonFastForward:t=!1,denyDeletes:s=!1,denyDeleteTags:n=!1,authorize: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||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 pe=class{objects=new Map;refs=new Map;repo(e){return{objectStore:new ue(this.getObjects(e)),refStore:new he(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}},ue=class{constructor(e){this.store=e}async write(e,t){let s=await v(S(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,a=await A(e,async i=>{let o=n.get(i);return o?{type:o.type,content:new Uint8Array(o.content)}:null});for(let i of a)n.has(i.hash)||n.set(i.hash,{type:i.type,content:i.content});return a.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}},he=class{constructor(e){this.store=e}async readRef(e){return this.store.get(e)??null}async writeRef(e,t){this.store.set(e,t)}async deleteRef(e){this.store.delete(e)}async compareAndSwapRef(e,t,s){let n=this.store.get(e)??null,a=null;if(n&&(n.type==="direct"?a=n.hash:n.type==="symbolic"&&(a=this.resolveChain(n.target))),t===null){if(n!==null)return!1}else if(a!==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 a=this.resolveChain(n.target);a&&t.push({name:s,hash:a})}}return t}resolveChain(e,t=0){if(t>10)return null;let s=this.store.get(e);return s?s.type==="direct"?s.hash:s.type==="symbolic"?this.resolveChain(s.target,t+1):null:null}};var Nt=`
23
+ `));for(let a of e)a.ok?n.push(R(`ok ${a.name}
24
+ `)):n.push(R(`ng ${a.name} ${a.error??"failed"}
25
+ `));n.push(k());let s=T(...n);if(t){let a=[];return a.push(ae(1,s)),a.push(k()),T(...a)}return s}function ae(r,e){let t=new Uint8Array(1+e.byteLength);return t[0]=r,t.set(e,1),R(t)}var C=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}}},St=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag"],Tt=["report-status","side-band-64k","ofs-delta","delete-refs"];async function ie(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;s&&n.push({name:"HEAD",hash:s});for(let i of e)if(n.push({name:i.name,hash:i.hash}),i.name.startsWith("refs/tags/"))try{let o=await r.objectStore.read(i.hash);if(o.type==="tag"){let f=j(o.content);n.push({name:`${i.name}^{}`,hash:f.object})}}catch{}return{refs:n,headTarget:a}}function ce(r,e,t){return Je(r,e,e==="git-upload-pack"?St:Tt,t)}async function fe(r,e,t){let{wants:n,haves:s,capabilities:a}=Qe(e);if(n.length===0)return U(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?C.key(t.cacheKey,n,s):null;if(c&&t?.cache){let d=t.cache.get(c);if(d)return U(d.packData,o,f)}return t?.noDelta?Ut(r,n,s,a,o,f):Ct(r,n,s,a,o,f,t,c)}async function Ut(r,e,t,n,s,a){let{count:i,objects:o}=await oe(r,e,t);if(i===0){let h=U(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=De(y,l()),u=et(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 Ct(r,e,t,n,s,a,i,o){let f=await qe(r,e,t);if(f.count===0)return U(new Uint8Array(0),s,a);let c=await ze(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=Fe(c,y),p=l.map(h=>({hash:h.hash,type:h.type,content:h.content,delta:h.delta,deltaBaseHash:h.deltaBase})),{data:u}=await He(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 U(u,s,a)}async function de(r,e){let{commands:t,packData:n,capabilities:s}=tt(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===Z,c=o.newHash===Z,d=!1;if(!f&&!c&&a)try{d=await _e(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 Lt(r){let{resolveRepo:e,hooks:t,basePath:n}=r,s=r.packCache===!1?void 0:new C(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=le(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 ie(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=ce(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=le(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 rt(a),l=await fe(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=le(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 rt(a),{updates:l,unpackOk:p,capabilities:u}=await de(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(V(!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(H(x)){if(b){let g=x.message??"pre-receive hook declined",O=l.map(L=>({name:L.ref,ok:!1,error:g}));return new Response(V(!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(H(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(V(!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 le(r,e){let t=r.slice(0,-e.length);return t.startsWith("/")&&(t=t.slice(1)),t}async function rt(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 Ht(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",()=>{Dt(r,e,n,t).catch(()=>{try{t.writeHead(500),t.end("Internal Server Error")}catch{}})})}}async function Dt(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 Nt(...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(H(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(H(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 Bt(r){let{protectedBranches:e=[],denyNonFastForward:t=!1,denyDeletes:n=!1,denyDeleteTags:s=!1,authorize: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 pe=class{objects=new Map;refs=new Map;repo(e){return{objectStore:new ue(this.getObjects(e)),refStore:new he(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}},ue=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 I(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}},he=class{constructor(e){this.store=e}async readRef(e){return this.store.get(e)??null}async writeRef(e,t){this.store.set(e,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 _t=`
26
26
  CREATE TABLE IF NOT EXISTS git_objects (
27
27
  repo_id TEXT NOT NULL,
28
28
  hash TEXT NOT NULL,
@@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS git_refs (
39
39
  target TEXT,
40
40
  PRIMARY KEY (repo_id, name)
41
41
  ) WITHOUT ROWID;
42
- `;function Bt(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 ye=class{db;stmts;ingestTx;constructor(e){this.db=e,e.run(Nt),this.stmts=Bt(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 be(this.stmts,this.ingestTx,e),refStore:new me(this.stmts,this.db,e)}}async deleteRepo(e){this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}},be=class{constructor(e,t,s){this.stmts=e;this.ingestTx=t;this.repoId=s;this.cache=new I}cache;async write(e,t){let s=S(e,t),n=await v(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 A(e,async i=>{let o=this.stmts.objRead.get(this.repoId,i);return o?{type:o.type,content:new Uint8Array(o.content)}:null}),a=n.map(i=>({repoId:this.repoId,hash:i.hash,type:i.type,content:i.content}));return this.ingestTx(a),n.length}async findByPrefix(e){return e.length<4?[]:this.stmts.objPrefix.all(this.repoId,`${e}*`).map(s=>s.hash)}},me=class{constructor(e,t,s){this.stmts=e;this.repoId=s;let n=e,a=s;this.casTx=t.transaction((i,o,f)=>{let c=n.refRead.get(a,i),d=null;if(c&&(c.type==="direct"?d=c.hash:c.type==="symbolic"&&c.target&&(d=xe(n,a,c.target))),o===null){if(c!==null)return!1}else if(d!==o)return!1;return f===null?n.refDelete.run(a,i):f.type==="symbolic"?n.refWrite.run(a,i,"symbolic",null,f.target):n.refWrite.run(a,i,"direct",f.hash,null),!0})}casTx;async readRef(e){let t=this.stmts.refRead.get(this.repoId,e);return t?t.type==="symbolic"?{type:"symbolic",target:t.target}:{type:"direct",hash:t.hash}:null}async writeRef(e,t){t.type==="symbolic"?this.stmts.refWrite.run(this.repoId,e,"symbolic",null,t.target):this.stmts.refWrite.run(this.repoId,e,"direct",t.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 a=xe(this.stmts,this.repoId,n.target);a&&s.push({name:n.name,hash:a})}return s}};function xe(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?xe(r,e,n.target,s+1):null:null}function $t(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:(a,i)=>t.query(a,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 _t=`
42
+ `;function Wt(r){return{objInsert:r.prepare("INSERT OR IGNORE INTO git_objects (repo_id, hash, type, content) VALUES (?, ?, ?, ?)"),objRead:r.prepare("SELECT type, content FROM git_objects WHERE repo_id = ? AND hash = ?"),objExists:r.prepare("SELECT 1 FROM git_objects WHERE repo_id = ? AND hash = ? LIMIT 1"),objPrefix:r.prepare("SELECT hash FROM git_objects WHERE repo_id = ? AND hash GLOB ?"),objDeleteAll:r.prepare("DELETE FROM git_objects WHERE repo_id = ?"),refRead:r.prepare("SELECT type, hash, target FROM git_refs WHERE repo_id = ? AND name = ?"),refWrite:r.prepare("INSERT OR REPLACE INTO git_refs (repo_id, name, type, hash, target) VALUES (?, ?, ?, ?, ?)"),refDelete:r.prepare("DELETE FROM git_refs WHERE repo_id = ? AND name = ?"),refList:r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ? AND name GLOB ?"),refListAll:r.prepare("SELECT name, type, hash, target FROM git_refs WHERE repo_id = ?"),refDeleteAll:r.prepare("DELETE FROM git_refs WHERE repo_id = ?")}}var ye=class{db;stmts;ingestTx;constructor(e){this.db=e,e.run(_t),this.stmts=Wt(e),this.ingestTx=e.transaction(t=>{for(let n of t)this.stmts.objInsert.run(n.repoId,n.hash,n.type,n.content)})}repo(e){return{objectStore:new be(this.stmts,this.ingestTx,e),refStore:new me(this.stmts,this.db,e)}}async deleteRepo(e){this.stmts.objDeleteAll.run(e),this.stmts.refDeleteAll.run(e)}},be=class{constructor(e,t,n){this.stmts=e;this.ingestTx=t;this.repoId=n;this.cache=new A}cache;async write(e,t){let n=S(e,t),s=await v(n);return this.stmts.objInsert.run(this.repoId,s,e,t),s}async read(e){let t=this.cache.get(e);if(t)return t;let n=this.stmts.objRead.get(this.repoId,e);if(!n)throw new Error(`object ${e} not found`);let s={type:n.type,content:new Uint8Array(n.content)};return this.cache.set(e,s),s}async exists(e){return this.stmts.objExists.get(this.repoId,e)!==null}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let s=await I(e,async i=>{let o=this.stmts.objRead.get(this.repoId,i);return o?{type:o.type,content:new Uint8Array(o.content)}:null}),a=s.map(i=>({repoId:this.repoId,hash:i.hash,type:i.type,content:i.content}));return this.ingestTx(a),s.length}async findByPrefix(e){return e.length<4?[]:this.stmts.objPrefix.all(this.repoId,`${e}*`).map(n=>n.hash)}},me=class{constructor(e,t,n){this.stmts=e;this.repoId=n;let s=e,a=n;this.casTx=t.transaction((i,o,f)=>{let c=s.refRead.get(a,i),d=null;if(c&&(c.type==="direct"?d=c.hash:c.type==="symbolic"&&c.target&&(d=xe(s,a,c.target))),o===null){if(c!==null)return!1}else if(d!==o)return!1;return f===null?s.refDelete.run(a,i):f.type==="symbolic"?s.refWrite.run(a,i,"symbolic",null,f.target):s.refWrite.run(a,i,"direct",f.hash,null),!0})}casTx;async readRef(e){let t=this.stmts.refRead.get(this.repoId,e);return t?t.type==="symbolic"?{type:"symbolic",target:t.target}:{type:"direct",hash:t.hash}:null}async writeRef(e,t){t.type==="symbolic"?this.stmts.refWrite.run(this.repoId,e,"symbolic",null,t.target):this.stmts.refWrite.run(this.repoId,e,"direct",t.hash,null)}async deleteRef(e){this.stmts.refDelete.run(this.repoId,e)}async compareAndSwapRef(e,t,n){return this.casTx(e,t,n)}async listRefs(e){let t;e?t=this.stmts.refList.all(this.repoId,`${e}*`):t=this.stmts.refListAll.all(this.repoId);let n=[];for(let s of t)if(s.type==="direct"&&s.hash)n.push({name:s.name,hash:s.hash});else if(s.type==="symbolic"&&s.target){let a=xe(this.stmts,this.repoId,s.target);a&&n.push({name:s.name,hash:a})}return n}};function xe(r,e,t,n=0){if(n>10)return null;let s=r.refRead.get(e,t);return s?s.type==="direct"?s.hash:s.type==="symbolic"&&s.target?xe(r,e,s.target,n+1):null:null}function Mt(r){return{query:(e,t)=>r.query(e,t),async transaction(e){let t=await r.connect();try{await t.query("BEGIN");let s=await e({query:(a,i)=>t.query(a,i),transaction:()=>{throw new Error("nested transactions not supported")}});return await t.query("COMMIT"),s}catch(n){throw await t.query("ROLLBACK"),n}finally{t.release()}}}}var Gt=`
43
43
  CREATE TABLE IF NOT EXISTS git_objects (
44
44
  repo_id TEXT NOT NULL,
45
45
  hash TEXT NOT NULL,
@@ -57,4 +57,4 @@ CREATE TABLE IF NOT EXISTS git_refs (
57
57
  PRIMARY KEY (repo_id, name)
58
58
  );
59
59
  `,w={objInsert:"INSERT INTO git_objects (repo_id, hash, type, content) VALUES ($1, $2, $3, $4) ON CONFLICT DO NOTHING",objRead:"SELECT type, content FROM git_objects WHERE repo_id = $1 AND hash = $2",objExists:"SELECT 1 FROM git_objects WHERE repo_id = $1 AND hash = $2 LIMIT 1",objPrefix:"SELECT hash FROM git_objects WHERE repo_id = $1 AND hash LIKE $2",objDeleteAll:"DELETE FROM git_objects WHERE repo_id = $1",refRead:"SELECT type, hash, target FROM git_refs WHERE repo_id = $1 AND name = $2",refReadForUpdate:"SELECT type, hash, target FROM git_refs WHERE repo_id = $1 AND name = $2 FOR UPDATE",refWrite:`INSERT INTO git_refs (repo_id, name, type, hash, target) VALUES ($1, $2, $3, $4, $5)
60
- ON CONFLICT (repo_id, name) DO UPDATE SET type = EXCLUDED.type, hash = EXCLUDED.hash, target = EXCLUDED.target`,refDelete:"DELETE FROM git_refs WHERE repo_id = $1 AND name = $2",refList:"SELECT name, type, hash, target FROM git_refs WHERE repo_id = $1 AND name LIKE $2",refListAll:"SELECT name, type, hash, target FROM git_refs WHERE repo_id = $1",refDeleteAll:"DELETE FROM git_refs WHERE repo_id = $1"},ge=class r{constructor(e){this.db=e}static async create(e){return await e.query(_t),new r(e)}repo(e){return{objectStore:new we(this.db,e),refStore:new Re(this.db,e)}}async deleteRepo(e){await this.db.query(w.objDeleteAll,[e]),await this.db.query(w.refDeleteAll,[e])}},we=class{constructor(e,t){this.db=e;this.repoId=t;this.cache=new I}cache;async write(e,t){let s=S(e,t),n=await v(s);return await this.db.query(w.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(w.objRead,[this.repoId,e]),n=s[0];if(!n)throw new Error(`object ${e} not found`);let a={type:n.type,content:new Uint8Array(n.content)};return this.cache.set(e,a),a}async exists(e){let{rows:t}=await this.db.query(w.objExists,[this.repoId,e]);return t.length>0}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let n=this.db,a=this.repoId,i=await A(e,async o=>{let{rows:f}=await n.query(w.objRead,[a,o]),c=f[0];return c?{type:c.type,content:new Uint8Array(c.content)}:null});return await n.transaction(async o=>{for(let f of i)await o.query(w.objInsert,[a,f.hash,f.type,f.content])}),i.length}async findByPrefix(e){if(e.length<4)return[];let{rows:t}=await this.db.query(w.objPrefix,[this.repoId,`${e}%`]);return t.map(s=>s.hash)}},Re=class{constructor(e,t){this.db=e;this.repoId=t}async readRef(e){let{rows:t}=await this.db.query(w.refRead,[this.repoId,e]),s=t[0];return s?s.type==="symbolic"?{type:"symbolic",target:s.target}:{type:"direct",hash:s.hash}:null}async writeRef(e,t){t.type==="symbolic"?await this.db.query(w.refWrite,[this.repoId,e,"symbolic",null,t.target]):await this.db.query(w.refWrite,[this.repoId,e,"direct",t.hash,null])}async deleteRef(e){await this.db.query(w.refDelete,[this.repoId,e])}async compareAndSwapRef(e,t,s){return this.db.transaction(async n=>{let{rows:a}=await n.query(w.refReadForUpdate,[this.repoId,e]),i=a[0]??null,o=null;if(i&&(i.type==="direct"?o=i.hash:i.type==="symbolic"&&i.target&&(o=await Pe(n,this.repoId,i.target))),t===null){if(i!==null)return!1}else if(o!==t)return!1;return s===null?await n.query(w.refDelete,[this.repoId,e]):s.type==="symbolic"?await n.query(w.refWrite,[this.repoId,e,"symbolic",null,s.target]):await n.query(w.refWrite,[this.repoId,e,"direct",s.hash,null]),!0})}async listRefs(e){let t;e?{rows:t}=await this.db.query(w.refList,[this.repoId,`${e}%`]):{rows:t}=await this.db.query(w.refListAll,[this.repoId]);let 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 a=await Pe(this.db,this.repoId,n.target);a&&s.push({name:n.name,hash:a})}return s}};async function Pe(r,e,t,s=0){if(s>10)return null;let{rows:n}=await r.query(w.refRead,[e,t]),a=n[0];return a?a.type==="direct"?a.hash:a.type==="symbolic"&&a.target?Pe(r,e,a.target,s+1):null:null}export{pe as MemoryStorage,C as PackCache,ge as PgStorage,ye as SqliteStorage,ce as buildRefAdvertisementBytes,ie as collectRefs,Ht as composeHooks,Lt as createGitServer,Dt as createStandardHooks,fe as handleUploadPack,de as ingestReceivePack,$t as wrapPgPool};
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"},ge=class r{constructor(e){this.db=e}static async create(e){return await e.query(Gt),new r(e)}repo(e){return{objectStore:new we(this.db,e),refStore:new Re(this.db,e)}}async deleteRepo(e){await this.db.query(w.objDeleteAll,[e]),await this.db.query(w.refDeleteAll,[e])}},we=class{constructor(e,t){this.db=e;this.repoId=t;this.cache=new A}cache;async write(e,t){let n=S(e,t),s=await v(n);return await this.db.query(w.objInsert,[this.repoId,s,e,t]),s}async read(e){let t=this.cache.get(e);if(t)return t;let{rows:n}=await this.db.query(w.objRead,[this.repoId,e]),s=n[0];if(!s)throw new Error(`object ${e} not found`);let a={type:s.type,content:new Uint8Array(s.content)};return this.cache.set(e,a),a}async exists(e){let{rows:t}=await this.db.query(w.objExists,[this.repoId,e]);return t.length>0}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let s=this.db,a=this.repoId,i=await I(e,async o=>{let{rows:f}=await s.query(w.objRead,[a,o]),c=f[0];return c?{type:c.type,content:new Uint8Array(c.content)}:null});return await s.transaction(async o=>{for(let f of i)await o.query(w.objInsert,[a,f.hash,f.type,f.content])}),i.length}async findByPrefix(e){if(e.length<4)return[];let{rows:t}=await this.db.query(w.objPrefix,[this.repoId,`${e}%`]);return t.map(n=>n.hash)}},Re=class{constructor(e,t){this.db=e;this.repoId=t}async readRef(e){let{rows:t}=await this.db.query(w.refRead,[this.repoId,e]),n=t[0];return n?n.type==="symbolic"?{type:"symbolic",target:n.target}:{type:"direct",hash:n.hash}:null}async writeRef(e,t){t.type==="symbolic"?await this.db.query(w.refWrite,[this.repoId,e,"symbolic",null,t.target]):await this.db.query(w.refWrite,[this.repoId,e,"direct",t.hash,null])}async deleteRef(e){await this.db.query(w.refDelete,[this.repoId,e])}async compareAndSwapRef(e,t,n){return this.db.transaction(async s=>{let{rows:a}=await s.query(w.refReadForUpdate,[this.repoId,e]),i=a[0]??null,o=null;if(i&&(i.type==="direct"?o=i.hash:i.type==="symbolic"&&i.target&&(o=await Pe(s,this.repoId,i.target))),t===null){if(i!==null)return!1}else if(o!==t)return!1;return n===null?await s.query(w.refDelete,[this.repoId,e]):n.type==="symbolic"?await s.query(w.refWrite,[this.repoId,e,"symbolic",null,n.target]):await s.query(w.refWrite,[this.repoId,e,"direct",n.hash,null]),!0})}async listRefs(e){let t;e?{rows:t}=await this.db.query(w.refList,[this.repoId,`${e}%`]):{rows:t}=await this.db.query(w.refListAll,[this.repoId]);let n=[];for(let s of t)if(s.type==="direct"&&s.hash)n.push({name:s.name,hash:s.hash});else if(s.type==="symbolic"&&s.target){let a=await Pe(this.db,this.repoId,s.target);a&&n.push({name:s.name,hash:a})}return n}};async function Pe(r,e,t,n=0){if(n>10)return null;let{rows:s}=await r.query(w.refRead,[e,t]),a=s[0];return a?a.type==="direct"?a.hash:a.type==="symbolic"&&a.target?Pe(r,e,a.target,n+1):null:null}export{pe as MemoryStorage,C as PackCache,ge as PgStorage,ye as SqliteStorage,ce as buildRefAdvertisementBytes,ie as collectRefs,Nt as composeHooks,Lt as createGitServer,Bt as createStandardHooks,fe as handleUploadPack,de as ingestReceivePack,Ht as toNodeHandler,$t as wrapBetterSqlite3,Mt as wrapPgPool};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "just-git",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "Pure TypeScript git implementation: virtual filesystem client and embeddable server.",
5
5
  "keywords": [
6
6
  "agent",