just-git 1.2.12 → 1.2.13

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.
@@ -18,6 +18,15 @@ interface BlameEntry {
18
18
  };
19
19
  }
20
20
 
21
+ /**
22
+ * Core grep matching logic shared by the `git grep` command and the
23
+ * repo-level `grep` helper.
24
+ */
25
+ interface GrepMatch {
26
+ lineNo: number;
27
+ line: string;
28
+ }
29
+
21
30
  interface MergeConflict {
22
31
  path: string;
23
32
  reason: "content" | "delete-modify" | "add-add" | "rename-delete" | "rename-rename" | "directory-rename";
@@ -269,6 +278,52 @@ declare function walkCommitHistory(repo: GitRepo, startHash: string | string[],
269
278
  exclude?: string[];
270
279
  firstParent?: boolean;
271
280
  }): AsyncGenerator<CommitInfo>;
281
+ /** Options for {@link grep}. */
282
+ interface GrepOptions {
283
+ /** Treat patterns as fixed strings, not regexps. */
284
+ fixed?: boolean;
285
+ /** Case-insensitive matching. */
286
+ ignoreCase?: boolean;
287
+ /** Match whole words only. */
288
+ wordRegexp?: boolean;
289
+ /** Require ALL patterns to hit at least one line in a file (AND). Default is OR. */
290
+ allMatch?: boolean;
291
+ /** Invert the match — return non-matching lines. */
292
+ invert?: boolean;
293
+ /** Limit matches per file. */
294
+ maxCount?: number;
295
+ /** Max directory depth (0 = only root-level files). */
296
+ maxDepth?: number;
297
+ /** Only search files whose paths match these globs. Matched against the full repo-relative path. */
298
+ paths?: string[];
299
+ }
300
+ /** A single file's grep results from {@link grep}. */
301
+ interface GrepFileMatch {
302
+ /** Repo-relative file path. */
303
+ path: string;
304
+ /** Matching lines (empty for binary matches). */
305
+ matches: GrepMatch[];
306
+ /** True when the file is binary and a pattern matched its raw content. */
307
+ binary: boolean;
308
+ }
309
+
310
+ /**
311
+ * Search files at a commit for lines matching one or more patterns.
312
+ *
313
+ * Operates purely on the object store — no filesystem, index, or
314
+ * worktree needed. Takes a commit hash (not a ref name) and returns
315
+ * structured match results.
316
+ *
317
+ * ```ts
318
+ * const results = await grep(repo, commitHash, ["TODO", "FIXME"]);
319
+ * for (const file of results) {
320
+ * for (const m of file.matches) {
321
+ * console.log(`${file.path}:${m.lineNo}: ${m.line}`);
322
+ * }
323
+ * }
324
+ * ```
325
+ */
326
+ declare function grep(repo: GitRepo, commitHash: string, patterns: (string | RegExp)[], options?: GrepOptions): Promise<GrepFileMatch[]>;
272
327
  /**
273
328
  * Wrap a `GitRepo` so all write operations throw.
274
329
  *
@@ -340,4 +395,4 @@ declare class FileSystemRefStore implements RefStore {
340
395
  private walkRefs;
341
396
  }
342
397
 
343
- export { type BlameEntry, type CheckoutToResult, type CommitInfo, type CreateCommitOptions, type CreateWorktreeOptions, FileSystemRefStore, GitRepo, Identity, type MergeConflict, type MergeTreesResult, PackedObjectStore, type TreeEntryInput, type WorktreeResult, blame, checkoutTo, countAheadBehind, createCommit, createWorktree, diffTrees, findMergeBases, flattenTree, getChangedFiles, getNewCommits, isAncestor, listBranches, listTags, mergeTrees, mergeTreesFromTreeHashes, readBlob, readBlobText, readCommit, readFileAtCommit, readonlyRepo, resolveRef, walkCommitHistory, writeBlob, writeTree };
398
+ export { type BlameEntry, type CheckoutToResult, type CommitInfo, type CreateCommitOptions, type CreateWorktreeOptions, FileSystemRefStore, GitRepo, type GrepFileMatch, type GrepMatch, type GrepOptions, Identity, type MergeConflict, type MergeTreesResult, PackedObjectStore, type TreeEntryInput, type WorktreeResult, blame, checkoutTo, countAheadBehind, createCommit, createWorktree, diffTrees, findMergeBases, flattenTree, getChangedFiles, getNewCommits, grep, isAncestor, listBranches, listTags, mergeTrees, mergeTreesFromTreeHashes, readBlob, readBlobText, readCommit, readFileAtCommit, readonlyRepo, resolveRef, walkCommitHistory, writeBlob, writeTree };
@@ -1,20 +1,21 @@
1
- var Me=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function Bn(t){if(t==="")return".";if(t==="/")return"/";let e=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47,r=t.split("/"),s=[];for(let o of r)o===""||o==="."||(o===".."?e||s.length>0&&s[s.length-1]!==".."?s.pop():s.push(".."):s.push(o));let i=s.join("/");return e&&(i=`/${i}`),n&&i.length>1&&!i.endsWith("/")&&(i+="/"),i||(e?"/":n?"./":".")}function D(...t){if(t.length===0)return".";let e=t.filter(n=>n!=="").join("/");return e===""?".":Bn(e)}function Xe(t){if(t==="")return".";if(t==="/")return"/";let e=t.length;for(;e>1&&t.charCodeAt(e-1)===47;)e--;let n=t.slice(0,e),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}var Ct=(()=>{let t=new Array(256);for(let e=0;e<256;e++)t[e]=(e>>4).toString(16)+(e&15).toString(16);return t})();function le(t){let e="";for(let n=0;n<20;n++)e+=Ct[t[n]];return e}function Oe(t,e){let n="";for(let r=0;r<20;r++)n+=Ct[t[e+r]];return n}function Y(t){let e=new Uint8Array(20);for(let n=0;n<20;n++)e[n]=parseInt(t.slice(n*2,n*2+2),16);return e}function jt(t){return t.length===4&&t.toLowerCase()===".git"}function Je(t){if(t.length===0||t.includes("\0")||t.charCodeAt(0)===47||t.charCodeAt(t.length-1)===47)return!1;let e=t.split("/");for(let n of e)if(n.length===0||n==="."||n===".."||jt(n))return!1;return!0}function Ze(t,e){return e===t?!1:t==="/"?e.startsWith("/")&&e.length>1:e.startsWith(t+"/")}function Qe(t){if(t.length===0||t.charCodeAt(0)===47)return!1;let e=t.split("/");for(let n of e)if(n===".."||jt(n))return!1;return!0}var Dn=new TextEncoder;function et(t){return typeof t=="string"?Dn.encode(t):t}function Hn(){if(typeof globalThis.Bun<"u")return()=>{let t=new Bun.CryptoHasher("sha1"),e={update(n){return t.update(et(n)),e},hex:()=>Promise.resolve(t.digest("hex"))};return e};try{let t=Me(["node","crypto"].join(":"));if(typeof t.createHash=="function")return()=>{let e=t.createHash("sha1"),n={update(r){return e.update(et(r)),n},hex:()=>Promise.resolve(e.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let t=[],e={update(n){return t.push(et(n)),e},async hex(){let n=0;for(let o of t)n+=o.byteLength;let r=new Uint8Array(n),s=0;for(let o of t)r.set(o,s),s+=o.byteLength;let i=await crypto.subtle.digest("SHA-1",r);return le(new Uint8Array(i))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var At=Hn(),Ee=At;async function me(t){return At().update(t).hex()}var Nn=1145655875,Fn=2;async function tt(t,e){let n=D(t.gitDir,"index"),r=await Gn(e);await t.fs.writeFile(n,r)}function $t(t){let e=[...t].sort(Lt);return{version:Fn,entries:e}}function re(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}async function Gn(t){let e=new TextEncoder,n=[...t.entries].sort(Lt),r=[],s=12;for(let d of n){let l=e.encode(d.path);r.push(l);let m=62+l.byteLength+1;s+=Math.ceil(m/8)*8}s+=20;let i=new ArrayBuffer(s),o=new Uint8Array(i),a=new DataView(i),c=0;a.setUint32(c,Nn),c+=4,a.setUint32(c,t.version),c+=4,a.setUint32(c,n.length),c+=4;for(let d=0;d<n.length;d++){let l=n[d],m=r[d],g=c;a.setUint32(c,l.stat.ctimeSeconds),a.setUint32(c+4,l.stat.ctimeNanoseconds),a.setUint32(c+8,l.stat.mtimeSeconds),a.setUint32(c+12,l.stat.mtimeNanoseconds),a.setUint32(c+16,l.stat.dev),a.setUint32(c+20,l.stat.ino),a.setUint32(c+24,l.mode),a.setUint32(c+28,l.stat.uid),a.setUint32(c+32,l.stat.gid),a.setUint32(c+36,l.stat.size),c+=40;let p=Y(l.hash);o.set(p,c),c+=20;let I=Math.min(m.byteLength,4095),k=(l.stage&3)<<12|I;a.setUint16(c,k),c+=2,o.set(m,c),c+=m.byteLength,o[c]=0,c+=1;let j=62+m.byteLength+1,A=Math.ceil(j/8)*8;c=g+A}let f=o.subarray(0,c),u=await me(f),h=Y(u);return o.set(h,c),o}function Lt(t,e){return t.path<e.path?-1:t.path>e.path?1:t.stage-e.stage}var _n=new Set(["tree","commit","tag"]),ve=class{map=new Map;currentBytes=0;maxBytes;constructor(e=16*1024*1024){this.maxBytes=e}get(e){return this.map.get(e)}set(e,n){if(!_n.has(n.type))return;let r=n.content.byteLength;if(!(r>this.maxBytes/2)&&!this.map.has(e)){for(;this.currentBytes+r>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,n),this.currentBytes+=r}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}};var Mt=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;Mt[t]=e}function vt(t){let e=4294967295;for(let n=0;n<t.byteLength;n++)e=Mt[(e^t[n])&255]^e>>>8;return(e^4294967295)>>>0}var J=Uint8Array,pe=Uint16Array,Wn=Int32Array,Ut=new J([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]),Bt=new J([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]),zn=new J([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Dt=(t,e)=>{let n=new pe(31);for(let s=0;s<31;++s)n[s]=e+=1<<t[s-1];let r=new Wn(n[30]);for(let s=1;s<30;++s)for(let i=n[s];i<n[s+1];++i)r[i]=i-n[s]<<5|s;return{b:n,r}},{b:Ht}=Dt(Ut,2);Ht[28]=258;var{b:Vn}=Dt(Bt,0),st=new pe(32768);for(let t=0;t<32768;++t){let e=(t&43690)>>1|(t&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,st[t]=((e&65280)>>8|(e&255)<<8)>>1}var Pe=(t,e,n)=>{let r=t.length,s=0,i=new pe(e);for(;s<r;++s)t[s]&&++i[t[s]-1];let o=new pe(e);for(s=1;s<e;++s)o[s]=o[s-1]+i[s-1]<<1;let a;if(n){a=new pe(1<<e);let c=15-e;for(s=0;s<r;++s)if(t[s]){let f=s<<4|t[s],u=e-t[s],h=o[t[s]-1]++<<u;for(let d=h|(1<<u)-1;h<=d;++h)a[st[h]>>c]=f}}else for(a=new pe(r),s=0;s<r;++s)t[s]&&(a[s]=st[o[t[s]-1]++]>>15-t[s]);return a},ke=new J(288);for(let t=0;t<144;++t)ke[t]=8;for(let t=144;t<256;++t)ke[t]=9;for(let t=256;t<280;++t)ke[t]=7;for(let t=280;t<288;++t)ke[t]=8;var Nt=new J(32);for(let t=0;t<32;++t)Nt[t]=5;var Kn=Pe(ke,9,1),qn=Pe(Nt,5,1),nt=t=>{let e=t[0];for(let n=1;n<t.length;++n)t[n]>e&&(e=t[n]);return e},X=(t,e,n)=>{let r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},rt=(t,e)=>{let n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},Ft=t=>(t+7)/8|0,Yn=(t,e,n)=>((e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new J(t.subarray(e,n))),Z=(t,e)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||n[t]||"unknown inflate error")},Gt=(t,e,n,r)=>{let s=t.length,i=r?r.length:0;if(!s||e.f&&!e.l)return n||new J(0);let o=!n,a=o||e.i!=2,c=e.i;o&&(n=new J(s*3));let f=k=>{let j=n.length;if(k>j){let A=new J(Math.max(j*2,k));A.set(n),n=A}},u=e.f||0,h=e.p||0,d=e.b||0,l=e.l,m=e.d,g=e.m,p=e.n,I=s*8;do{if(!l){u=X(t,h,1);let E=X(t,h+1,3);if(h+=3,E)if(E==1)l=Kn,m=qn,g=9,p=5;else if(E==2){let y=X(t,h,31)+257,O=X(t,h+10,15)+4,T=y+X(t,h+5,31)+1;h+=14;let x=new J(T),P=new J(19);for(let b=0;b<O;++b)P[zn[b]]=X(t,h+b*3,7);h+=O*3;let S=nt(P),$=(1<<S)-1,v=Pe(P,S,1);for(let b=0;b<T;){let R=v[X(t,h,$)];h+=R&15;let M=R>>4;if(M<16)x[b++]=M;else{let L=0,C=0;for(M==16?(C=3+X(t,h,3),h+=2,L=x[b-1]):M==17?(C=3+X(t,h,7),h+=3):M==18&&(C=11+X(t,h,127),h+=7);C--;)x[b++]=L}}let ne=x.subarray(0,y),w=x.subarray(y);g=nt(ne),p=nt(w),l=Pe(ne,g,1),m=Pe(w,p,1)}else Z(1);else{let y=Ft(h)+4,O=t[y-4]|t[y-3]<<8,T=y+O;if(T>s){c&&Z(0);break}a&&f(d+O),n.set(t.subarray(y,T),d),e.b=d+=O,e.p=h=T*8,e.f=u;continue}if(h>I){c&&Z(0);break}}a&&f(d+131072);let k=(1<<g)-1,j=(1<<p)-1,A=h;for(;;A=h){let E=l[rt(t,h)&k],y=E>>4;if(h+=E&15,h>I){c&&Z(0);break}if(E||Z(2),y<256)n[d++]=y;else if(y==256){A=h,l=null;break}else{let O=y-254;if(y>264){let $=y-257,v=Ut[$];O=X(t,h,(1<<v)-1)+Ht[$],h+=v}let T=m[rt(t,h)&j],x=T>>4;T||Z(3),h+=T&15;let P=Vn[x];if(x>3){let $=Bt[x];P+=rt(t,h)&(1<<$)-1,h+=$}if(h>I){c&&Z(0);break}a&&f(d+131072);let S=d+O;if(d<P){let $=i-P,v=Math.min(P,S);for($+d<0&&Z(3);d<v;++d)n[d]=r[$+d]}for(;d<S;++d)n[d]=n[d-P]}}e.l=l,e.p=A,e.b=d,e.f=u,l&&(u=1,e.m=g,e.d=m,e.n=p)}while(!u);return d!=n.length&&o?Yn(n,0,d):n.subarray(0,d)},_t=t=>(((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&Z(0,"invalid zlib data"),t[1]&32&&Z(0,"zlib dictionaries are not supported"),2);function Wt(t){let e=_t(t);return Gt(t.subarray(e,-4),{i:2})}function it(t){let e=_t(t),n={i:2},r=Gt(t.subarray(e),n),s=Ft(n.p);return{result:r,bytesConsumed:e+s+4}}async function Xn(){let t;if(!(typeof document<"u"))try{t=Me(["node","zlib"].join(":"))}catch{try{t=await import(["node","zlib"].join(":"))}catch{}}if(t&&typeof t.deflateSync=="function"&&typeof t.inflateSync=="function"){let r=null;try{let s=t.inflateSync(t.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(r=i=>{let o=t.inflateSync(i,{info:!0});return{result:new Uint8Array(o.buffer),bytesConsumed:o.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(t.deflateSync(s)),inflateSync:s=>new Uint8Array(t.inflateSync(s)),inflateWithConsumed:r??it}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let s=new CompressionStream("deflate"),i=s.writable.getWriter();return i.write(r),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Wt,inflateWithConsumed:it}}var Jn=null;function ot(){return Jn??=Xn()}async function at(t){return await(await ot()).deflateSync(t)}async function ge(t){return await(await ot()).inflateSync(t)}async function zt(t,e){let n=await ot(),{result:r,bytesConsumed:s}=n.inflateWithConsumed(t);if(r.byteLength!==e)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${e}`);return{result:r,bytesConsumed:s}}var Vt=1346454347,Zn=2,Qn=1,er=2,tr=3,nr=4,Ue=6,ft=7,rr={[Qn]:"commit",[er]:"tree",[tr]:"blob",[nr]:"tag"};async function Yt(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==Vt)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Vt.toString(16)})`);let s=n.getUint32(4);if(s!==Zn)throw new Error(`Unsupported pack version: ${s}`);if(t.byteLength>=32){let f=Oe(t,t.byteLength-20),u=Ee();u.update(t.subarray(0,t.byteLength-20));let h=await u.hex();if(h!==f)throw new Error(`pack checksum mismatch: expected ${f}, computed ${h}`)}let i=n.getUint32(8),o=[],a=12;for(let f=0;f<i;f++){let u=await sr(t,a);o.push(u),a=u.nextOffset}return(await ir(o,e)).map((f,u)=>({...f,offset:o[u].headerOffset,nextOffset:o[u].nextOffset}))}async function sr(t,e){let n=e,r=t[e++],s=r>>4&7,i=r&15,o=4;for(;r&128;)r=t[e++],i|=(r&127)<<o,o+=7;let a,c;if(s===Ue){let h=t[e++];for(a=h&127;h&128;)a+=1,h=t[e++],a=(a<<7)+(h&127);a=n-a}else s===ft&&(c=Oe(t,e),e+=20);let{result:f,bytesConsumed:u}=await zt(t.subarray(e),i);return{headerOffset:n,typeNum:s,inflated:f,baseOffset:a,baseHash:c,nextOffset:e+u}}var Kt=50;async function ir(t,e){let n=new Map;for(let i=0;i<t.length;i++)n.set(t[i].headerOffset,i);let r=new Array(t.length).fill(null);async function s(i,o=0){if(o>Kt)throw new Error(`delta chain depth ${o} exceeds limit of ${Kt}`);let a=r[i];if(a)return a;let c=t[i];if(c.typeNum!==Ue&&c.typeNum!==ft){let l=rr[c.typeNum];if(!l)throw new Error(`Unknown object type: ${c.typeNum}`);let m={type:l,content:c.inflated,hash:await ct(l,c.inflated)};return r[i]=m,m}if(c.typeNum===Ue){let l=n.get(c.baseOffset);if(l===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let m=await s(l,o+1),g=Re(m.content,c.inflated),p={type:m.type,content:g,hash:await ct(m.type,g)};return r[i]=p,p}let f=await or(t,r,c.baseHash,s),u;if(f!==void 0)u=await s(f,o+1);else if(e){let l=await e(c.baseHash);l&&(u=l)}if(!u)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let h=Re(u.content,c.inflated),d={type:u.type,content:h,hash:await ct(u.type,h)};return r[i]=d,d}for(let i=0;i<t.length;i++)await s(i);return r}async function or(t,e,n,r){for(let s=0;s<e.length;s++)if(e[s]?.hash===n)return s;for(let s=0;s<t.length;s++){let i=t[s];if(i.typeNum!==Ue&&i.typeNum!==ft&&(await r(s)).hash===n)return s}}function Re(t,e){let n=0,{value:r,newPos:s}=qt(e,n);if(n=s,r!==t.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${t.byteLength}`);let{value:i,newPos:o}=qt(e,n);n=o;let a=new Uint8Array(i),c=0;for(;n<e.byteLength;){let f=e[n++];if(f&128){let u=0,h=0;f&1&&(u=e[n++]),f&2&&(u|=e[n++]<<8),f&4&&(u|=e[n++]<<16),f&8&&(u|=e[n++]<<24),f&16&&(h=e[n++]),f&32&&(h|=e[n++]<<8),f&64&&(h|=e[n++]<<16),h===0&&(h=65536),a.set(t.subarray(u,u+h),c),c+=h}else if(f>0)a.set(e.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==i)throw new Error(`Delta produced ${c} bytes, expected ${i}`);return a}function qt(t,e){let n=0,r=0,s;do s=t[e++],n|=(s&127)<<r,r+=7;while(s&128);return{value:n,newPos:e}}var ar=new TextEncoder;async function ct(t,e){let n=ar.encode(`${t} ${e.byteLength}\0`),r=Ee();return r.update(n),r.update(e),r.hex()}var Xt=4285812579,Jt=2,se=class{fanout;hashes;offsets;largeOffsets;count;constructor(e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength);if(n.getUint32(0)!==Xt)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==Jt)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let i=0;i<256;i++)this.fanout[i]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(e.buffer,e.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let i=0;i<this.count;i++)this.offsets[i]=n.getUint32(r),r+=4;let s=!1;for(let i=0;i<this.count;i++)if(this.offsets[i]&2147483648){s=!0;break}this.largeOffsets=s?new DataView(e.buffer,e.byteOffset+r):null}lookup(e){let n=Y(e),r=n[0],s=r===0?0:this.fanout[r-1],i=this.fanout[r],o=s,a=i;for(;o<a;){let c=o+a>>>1,f=this.compareAt(c,n);if(f<0)o=c+1;else if(f>0)a=c;else return this.getOffset(c)}return null}has(e){return this.lookup(e)!==null}get objectCount(){return this.count}allHashes(){let e=[];for(let n=0;n<this.count;n++)e.push(this.hashAtSlot(n));return e}findByPrefix(e){if(e.length<2)return[];let n=parseInt(e.slice(0,2),16),r=n===0?0:this.fanout[n-1],s=this.fanout[n],i=Y(e.padEnd(40,"0")),o=e.length,a=[];for(let c=r;c<s;c++){let f=c*20,u=!0;for(let h=0;h<o;h++){let d=h%2===0?this.hashes[f+(h>>1)]>>4&15:this.hashes[f+(h>>1)]&15,l=h%2===0?i[h>>1]>>4&15:i[h>>1]&15;if(d!==l){u=!1;break}}u&&a.push(this.hashAtSlot(c))}return a}hashAtSlot(e){let n="",r=e*20;for(let s=0;s<20;s++){let i=this.hashes[r+s];n+=(i>>4).toString(16)+(i&15).toString(16)}return n}compareAt(e,n){let r=e*20;for(let s=0;s<20;s++){let i=this.hashes[r+s],o=n[s];if(i<o)return-1;if(i>o)return 1}return 0}getOffset(e){let n=this.offsets[e];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}};async function cr(t,e){let n=[...t].sort((l,m)=>l.hash<m.hash?-1:l.hash>m.hash?1:0),r=n.length,s=[];for(let l of n)l.offset>=2147483648&&s.push(BigInt(l.offset));let i=8+256*4+r*20+r*4+r*4+s.length*8+20+20,o=new Uint8Array(i),a=new DataView(o.buffer),c=0;a.setUint32(c,Xt),c+=4,a.setUint32(c,Jt),c+=4;let f=new Uint32Array(256);for(let l of n){let m=parseInt(l.hash.slice(0,2),16);for(let g=m;g<256;g++)f[g]++}for(let l=0;l<256;l++)a.setUint32(c,f[l]),c+=4;for(let l of n)o.set(Y(l.hash),c),c+=20;for(let l of n)a.setUint32(c,l.crc),c+=4;let u=0;for(let l of n)l.offset>=2147483648?a.setUint32(c,2147483648|u++):a.setUint32(c,l.offset),c+=4;for(let l of s)a.setBigUint64(c,l),c+=8;o.set(e,c),c+=20;let h=Ee();h.update(o.subarray(0,c));let d=await h.hex();return o.set(Y(d),c),o}async function Zt(t){let n=(await Yt(t)).map(s=>({hash:s.hash,offset:s.offset,crc:vt(t.subarray(s.offset,s.nextOffset))})),r=t.subarray(t.byteLength-20);return cr(n,r)}var fr=6,lr=7,ur={1:"commit",2:"tree",3:"blob",4:"tag"},Qt=50,Se=class{constructor(e,n){this.data=e;this.index=n instanceof se?n:new se(n)}index;hasObject(e){return this.index.has(e)}findByPrefix(e){return this.index.findByPrefix(e)}async readObject(e){let n=this.index.lookup(e);return n===null?null:this.readAt(n,0)}get objectCount(){return this.index.objectCount}async readAt(e,n){if(n>Qt)throw new Error(`delta chain depth ${n} exceeds limit of ${Qt}`);let r=this.data,s=e,i=r[s++],o=i>>4&7,a=i&15,c=4;for(;i&128;)i=r[s++],a|=(i&127)<<c,c+=7;if(o===fr){let h=r[s++],d=h&127;for(;h&128;)d+=1,h=r[s++],d=(d<<7)+(h&127);let l=await ge(r.subarray(s)),m=await this.readAt(e-d,n+1);return{type:m.type,content:Re(m.content,l)}}if(o===lr){let h=Oe(r,s);s+=20;let d=await ge(r.subarray(s)),l=this.index.lookup(h);if(l===null)throw new Error(`REF_DELTA base ${h} not found in pack`);let m=await this.readAt(l,n+1);return{type:m.type,content:Re(m.content,d)}}let f=ur[o];if(!f)throw new Error(`Unknown pack object type: ${o}`);let u=await ge(r.subarray(s));if(u.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${e}: got ${u.byteLength}, expected ${a}`);return{type:f,content:u}}};var hr=new TextEncoder,dr=new TextDecoder;function mr(t,e){let n=hr.encode(`${t} ${e.byteLength}\0`),r=new Uint8Array(n.byteLength+e.byteLength);return r.set(n),r.set(e,n.byteLength),r}function pr(t,e){let n=e.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${t}: no null byte in header`);let r=dr.decode(e.subarray(0,n)),s=r.indexOf(" ");if(s===-1)throw new Error(`Corrupt object ${t}: malformed header "${r}"`);let i=r.slice(0,s),o=parseInt(r.slice(s+1),10),a=e.subarray(n+1);if(a.byteLength!==o)throw new Error(`Corrupt object ${t}: expected ${o} bytes, got ${a.byteLength}`);return{type:i,content:a}}function lt(t,e){return D(t,"objects",e.slice(0,2),e.slice(2))}var ut=class{constructor(e,n,r){this.fs=e;this.gitDir=n;this.cache=new ve(r),this.packDir=D(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(e,n){let r=mr(e,n),s=await me(r),i=lt(this.gitDir,s);if(await this.fs.exists(i))return s;let o=D(this.gitDir,"objects",s.slice(0,2));return await this.fs.mkdir(o,{recursive:!0}),await this.fs.writeFile(i,await at(r)),s}async read(e){let n=this.cache.get(e);if(n)return n;let r=lt(this.gitDir,e);if(await this.fs.exists(r)){let s=await this.fs.readFileBuffer(r),i=await ge(s),o=await me(i);if(o!==e)throw new Error(`corrupt loose object ${e}: SHA-1 mismatch (computed ${o})`);let a=pr(e,i);return this.cache.set(e,a),a}await this.discover();for(let s of this.packs){if(!s.index.has(e))continue;let o=await(await this.ensureReader(s)).readObject(e);if(o)return this.cache.set(e,o),o}throw new Error(`object ${e} not found`)}async exists(e){if(await this.fs.exists(lt(this.gitDir,e)))return!0;await this.discover();for(let n of this.packs)if(n.index.has(e))return!0;return!1}async ingestPack(e){if(e.byteLength<32)return 0;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let s=n.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);let i=n.getUint32(8);if(i===0)return 0;let o=e.subarray(e.byteLength-20),a=le(o),c=await me(e.subarray(0,e.byteLength-20));if(c!==a)throw new Error(`pack checksum mismatch: expected ${a}, computed ${c}`);await this.fs.mkdir(this.packDir,{recursive:!0});let f=`pack-${a}`,u=D(this.packDir,`${f}.pack`);await this.fs.writeFile(u,e);let h=await Zt(e),d=D(this.packDir,`${f}.idx`);await this.fs.writeFile(d,h),this.loadedPackNames.add(f);let l=new se(h);return this.packs.push({name:f,index:l,reader:new Se(e,l)}),i}invalidatePacks(){this.packs=[],this.loadedPackNames.clear(),this.discoverPromise=null,this.cache.clear()}async findByPrefix(e){if(e.length<4)return[];let n=e.slice(0,2),r=e.slice(2),s=D(this.gitDir,"objects",n),i=[];if(await this.fs.exists(s)){let o=await this.fs.readdir(s);for(let a of o)a.startsWith(r)&&i.push(`${n}${a}`)}await this.discover();for(let o of this.packs)for(let a of o.index.findByPrefix(e))i.includes(a)||i.push(a);return i}async ensureReader(e){if(e.reader)return e.reader;let n=D(this.packDir,`${e.name}.pack`),r=await this.fs.readFileBuffer(n);return e.reader=new Se(r,e.index),e.reader}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){if(!await this.fs.exists(this.packDir))return;let e=await this.fs.readdir(this.packDir);for(let n of e){if(!n.endsWith(".idx"))continue;let r=n.slice(0,-4);if(this.loadedPackNames.has(r))continue;let s=D(this.packDir,`${r}.pack`);if(!await this.fs.exists(s))continue;let i=await this.fs.readFileBuffer(D(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new se(i),reader:null})}}};function ht(t){let e=t.indexOf("<"),n=t.indexOf(">");if(e===-1||n===-1)throw new Error(`Malformed identity line: "${t}"`);let r=t.slice(0,e).trimEnd(),s=t.slice(e+1,n),i=t.slice(n+2),[o="0",a="+0000"]=i.split(" "),c=parseInt(o,10);return{name:r,email:s,timestamp:c,timezone:a}}function dt(t){return`${t.name} <${t.email}> ${t.timestamp} ${t.timezone}`}var gr=new TextEncoder,br=new TextDecoder;function en(t){let e=br.decode(t),n=e.indexOf(`
1
+ var Me=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function Hn(t){if(t==="")return".";if(t==="/")return"/";let e=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47,r=t.split("/"),s=[];for(let o of r)o===""||o==="."||(o===".."?e||s.length>0&&s[s.length-1]!==".."?s.pop():s.push(".."):s.push(o));let i=s.join("/");return e&&(i=`/${i}`),n&&i.length>1&&!i.endsWith("/")&&(i+="/"),i||(e?"/":n?"./":".")}function D(...t){if(t.length===0)return".";let e=t.filter(n=>n!=="").join("/");return e===""?".":Hn(e)}function Xe(t){if(t==="")return".";if(t==="/")return"/";let e=t.length;for(;e>1&&t.charCodeAt(e-1)===47;)e--;let n=t.slice(0,e),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}var Ct=(()=>{let t=new Array(256);for(let e=0;e<256;e++)t[e]=(e>>4).toString(16)+(e&15).toString(16);return t})();function ue(t){let e="";for(let n=0;n<20;n++)e+=Ct[t[n]];return e}function Oe(t,e){let n="";for(let r=0;r<20;r++)n+=Ct[t[e+r]];return n}function Y(t){let e=new Uint8Array(20);for(let n=0;n<20;n++)e[n]=parseInt(t.slice(n*2,n*2+2),16);return e}function jt(t){return t.length===4&&t.toLowerCase()===".git"}function Je(t){if(t.length===0||t.includes("\0")||t.charCodeAt(0)===47||t.charCodeAt(t.length-1)===47)return!1;let e=t.split("/");for(let n of e)if(n.length===0||n==="."||n===".."||jt(n))return!1;return!0}function Ze(t,e){return e===t?!1:t==="/"?e.startsWith("/")&&e.length>1:e.startsWith(t+"/")}function Qe(t){if(t.length===0||t.charCodeAt(0)===47)return!1;let e=t.split("/");for(let n of e)if(n===".."||jt(n))return!1;return!0}var Nn=new TextEncoder;function et(t){return typeof t=="string"?Nn.encode(t):t}function Fn(){if(typeof globalThis.Bun<"u")return()=>{let t=new Bun.CryptoHasher("sha1"),e={update(n){return t.update(et(n)),e},hex:()=>Promise.resolve(t.digest("hex"))};return e};try{let t=Me(["node","crypto"].join(":"));if(typeof t.createHash=="function")return()=>{let e=t.createHash("sha1"),n={update(r){return e.update(et(r)),n},hex:()=>Promise.resolve(e.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let t=[],e={update(n){return t.push(et(n)),e},async hex(){let n=0;for(let o of t)n+=o.byteLength;let r=new Uint8Array(n),s=0;for(let o of t)r.set(o,s),s+=o.byteLength;let i=await crypto.subtle.digest("SHA-1",r);return ue(new Uint8Array(i))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var At=Fn(),Ee=At;async function me(t){return At().update(t).hex()}var Gn=1145655875,_n=2;async function tt(t,e){let n=D(t.gitDir,"index"),r=await Wn(e);await t.fs.writeFile(n,r)}function $t(t){let e=[...t].sort(Lt);return{version:_n,entries:e}}function re(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}async function Wn(t){let e=new TextEncoder,n=[...t.entries].sort(Lt),r=[],s=12;for(let d of n){let l=e.encode(d.path);r.push(l);let m=62+l.byteLength+1;s+=Math.ceil(m/8)*8}s+=20;let i=new ArrayBuffer(s),o=new Uint8Array(i),a=new DataView(i),c=0;a.setUint32(c,Gn),c+=4,a.setUint32(c,t.version),c+=4,a.setUint32(c,n.length),c+=4;for(let d=0;d<n.length;d++){let l=n[d],m=r[d],g=c;a.setUint32(c,l.stat.ctimeSeconds),a.setUint32(c+4,l.stat.ctimeNanoseconds),a.setUint32(c+8,l.stat.mtimeSeconds),a.setUint32(c+12,l.stat.mtimeNanoseconds),a.setUint32(c+16,l.stat.dev),a.setUint32(c+20,l.stat.ino),a.setUint32(c+24,l.mode),a.setUint32(c+28,l.stat.uid),a.setUint32(c+32,l.stat.gid),a.setUint32(c+36,l.stat.size),c+=40;let p=Y(l.hash);o.set(p,c),c+=20;let w=Math.min(m.byteLength,4095),R=(l.stage&3)<<12|w;a.setUint16(c,R),c+=2,o.set(m,c),c+=m.byteLength,o[c]=0,c+=1;let j=62+m.byteLength+1,A=Math.ceil(j/8)*8;c=g+A}let f=o.subarray(0,c),u=await me(f),h=Y(u);return o.set(h,c),o}function Lt(t,e){return t.path<e.path?-1:t.path>e.path?1:t.stage-e.stage}var zn=new Set(["tree","commit","tag"]),ve=class{map=new Map;currentBytes=0;maxBytes;constructor(e=16*1024*1024){this.maxBytes=e}get(e){return this.map.get(e)}set(e,n){if(!zn.has(n.type))return;let r=n.content.byteLength;if(!(r>this.maxBytes/2)&&!this.map.has(e)){for(;this.currentBytes+r>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,n),this.currentBytes+=r}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}};var Mt=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;Mt[t]=e}function vt(t){let e=4294967295;for(let n=0;n<t.byteLength;n++)e=Mt[(e^t[n])&255]^e>>>8;return(e^4294967295)>>>0}var J=Uint8Array,pe=Uint16Array,Vn=Int32Array,Ut=new J([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]),Bt=new J([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]),Kn=new J([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Dt=(t,e)=>{let n=new pe(31);for(let s=0;s<31;++s)n[s]=e+=1<<t[s-1];let r=new Vn(n[30]);for(let s=1;s<30;++s)for(let i=n[s];i<n[s+1];++i)r[i]=i-n[s]<<5|s;return{b:n,r}},{b:Ht}=Dt(Ut,2);Ht[28]=258;var{b:qn}=Dt(Bt,0),st=new pe(32768);for(let t=0;t<32768;++t){let e=(t&43690)>>1|(t&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,st[t]=((e&65280)>>8|(e&255)<<8)>>1}var Pe=(t,e,n)=>{let r=t.length,s=0,i=new pe(e);for(;s<r;++s)t[s]&&++i[t[s]-1];let o=new pe(e);for(s=1;s<e;++s)o[s]=o[s-1]+i[s-1]<<1;let a;if(n){a=new pe(1<<e);let c=15-e;for(s=0;s<r;++s)if(t[s]){let f=s<<4|t[s],u=e-t[s],h=o[t[s]-1]++<<u;for(let d=h|(1<<u)-1;h<=d;++h)a[st[h]>>c]=f}}else for(a=new pe(r),s=0;s<r;++s)t[s]&&(a[s]=st[o[t[s]-1]++]>>15-t[s]);return a},Re=new J(288);for(let t=0;t<144;++t)Re[t]=8;for(let t=144;t<256;++t)Re[t]=9;for(let t=256;t<280;++t)Re[t]=7;for(let t=280;t<288;++t)Re[t]=8;var Nt=new J(32);for(let t=0;t<32;++t)Nt[t]=5;var Yn=Pe(Re,9,1),Xn=Pe(Nt,5,1),nt=t=>{let e=t[0];for(let n=1;n<t.length;++n)t[n]>e&&(e=t[n]);return e},X=(t,e,n)=>{let r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},rt=(t,e)=>{let n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},Ft=t=>(t+7)/8|0,Jn=(t,e,n)=>((e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new J(t.subarray(e,n))),Z=(t,e)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||n[t]||"unknown inflate error")},Gt=(t,e,n,r)=>{let s=t.length,i=r?r.length:0;if(!s||e.f&&!e.l)return n||new J(0);let o=!n,a=o||e.i!=2,c=e.i;o&&(n=new J(s*3));let f=R=>{let j=n.length;if(R>j){let A=new J(Math.max(j*2,R));A.set(n),n=A}},u=e.f||0,h=e.p||0,d=e.b||0,l=e.l,m=e.d,g=e.m,p=e.n,w=s*8;do{if(!l){u=X(t,h,1);let E=X(t,h+1,3);if(h+=3,E)if(E==1)l=Yn,m=Xn,g=9,p=5;else if(E==2){let y=X(t,h,31)+257,O=X(t,h+10,15)+4,T=y+X(t,h+5,31)+1;h+=14;let I=new J(T),P=new J(19);for(let b=0;b<O;++b)P[Kn[b]]=X(t,h+b*3,7);h+=O*3;let S=nt(P),$=(1<<S)-1,v=Pe(P,S,1);for(let b=0;b<T;){let k=v[X(t,h,$)];h+=k&15;let M=k>>4;if(M<16)I[b++]=M;else{let L=0,C=0;for(M==16?(C=3+X(t,h,3),h+=2,L=I[b-1]):M==17?(C=3+X(t,h,7),h+=3):M==18&&(C=11+X(t,h,127),h+=7);C--;)I[b++]=L}}let ne=I.subarray(0,y),x=I.subarray(y);g=nt(ne),p=nt(x),l=Pe(ne,g,1),m=Pe(x,p,1)}else Z(1);else{let y=Ft(h)+4,O=t[y-4]|t[y-3]<<8,T=y+O;if(T>s){c&&Z(0);break}a&&f(d+O),n.set(t.subarray(y,T),d),e.b=d+=O,e.p=h=T*8,e.f=u;continue}if(h>w){c&&Z(0);break}}a&&f(d+131072);let R=(1<<g)-1,j=(1<<p)-1,A=h;for(;;A=h){let E=l[rt(t,h)&R],y=E>>4;if(h+=E&15,h>w){c&&Z(0);break}if(E||Z(2),y<256)n[d++]=y;else if(y==256){A=h,l=null;break}else{let O=y-254;if(y>264){let $=y-257,v=Ut[$];O=X(t,h,(1<<v)-1)+Ht[$],h+=v}let T=m[rt(t,h)&j],I=T>>4;T||Z(3),h+=T&15;let P=qn[I];if(I>3){let $=Bt[I];P+=rt(t,h)&(1<<$)-1,h+=$}if(h>w){c&&Z(0);break}a&&f(d+131072);let S=d+O;if(d<P){let $=i-P,v=Math.min(P,S);for($+d<0&&Z(3);d<v;++d)n[d]=r[$+d]}for(;d<S;++d)n[d]=n[d-P]}}e.l=l,e.p=A,e.b=d,e.f=u,l&&(u=1,e.m=g,e.d=m,e.n=p)}while(!u);return d!=n.length&&o?Jn(n,0,d):n.subarray(0,d)},_t=t=>(((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&Z(0,"invalid zlib data"),t[1]&32&&Z(0,"zlib dictionaries are not supported"),2);function Wt(t){let e=_t(t);return Gt(t.subarray(e,-4),{i:2})}function it(t){let e=_t(t),n={i:2},r=Gt(t.subarray(e),n),s=Ft(n.p);return{result:r,bytesConsumed:e+s+4}}async function Zn(){let t;if(!(typeof document<"u"))try{t=Me(["node","zlib"].join(":"))}catch{try{t=await import(["node","zlib"].join(":"))}catch{}}if(t&&typeof t.deflateSync=="function"&&typeof t.inflateSync=="function"){let r=null;try{let s=t.inflateSync(t.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(r=i=>{let o=t.inflateSync(i,{info:!0});return{result:new Uint8Array(o.buffer),bytesConsumed:o.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(t.deflateSync(s)),inflateSync:s=>new Uint8Array(t.inflateSync(s)),inflateWithConsumed:r??it}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let s=new CompressionStream("deflate"),i=s.writable.getWriter();return i.write(r),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Wt,inflateWithConsumed:it}}var Qn=null;function ot(){return Qn??=Zn()}async function at(t){return await(await ot()).deflateSync(t)}async function ge(t){return await(await ot()).inflateSync(t)}async function zt(t,e){let n=await ot(),{result:r,bytesConsumed:s}=n.inflateWithConsumed(t);if(r.byteLength!==e)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${e}`);return{result:r,bytesConsumed:s}}var Vt=1346454347,er=2,tr=1,nr=2,rr=3,sr=4,Ue=6,ft=7,ir={[tr]:"commit",[nr]:"tree",[rr]:"blob",[sr]:"tag"};async function Yt(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==Vt)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Vt.toString(16)})`);let s=n.getUint32(4);if(s!==er)throw new Error(`Unsupported pack version: ${s}`);if(t.byteLength>=32){let f=Oe(t,t.byteLength-20),u=Ee();u.update(t.subarray(0,t.byteLength-20));let h=await u.hex();if(h!==f)throw new Error(`pack checksum mismatch: expected ${f}, computed ${h}`)}let i=n.getUint32(8),o=[],a=12;for(let f=0;f<i;f++){let u=await or(t,a);o.push(u),a=u.nextOffset}return(await ar(o,e)).map((f,u)=>({...f,offset:o[u].headerOffset,nextOffset:o[u].nextOffset}))}async function or(t,e){let n=e,r=t[e++],s=r>>4&7,i=r&15,o=4;for(;r&128;)r=t[e++],i|=(r&127)<<o,o+=7;let a,c;if(s===Ue){let h=t[e++];for(a=h&127;h&128;)a+=1,h=t[e++],a=(a<<7)+(h&127);a=n-a}else s===ft&&(c=Oe(t,e),e+=20);let{result:f,bytesConsumed:u}=await zt(t.subarray(e),i);return{headerOffset:n,typeNum:s,inflated:f,baseOffset:a,baseHash:c,nextOffset:e+u}}var Kt=50;async function ar(t,e){let n=new Map;for(let i=0;i<t.length;i++)n.set(t[i].headerOffset,i);let r=new Array(t.length).fill(null);async function s(i,o=0){if(o>Kt)throw new Error(`delta chain depth ${o} exceeds limit of ${Kt}`);let a=r[i];if(a)return a;let c=t[i];if(c.typeNum!==Ue&&c.typeNum!==ft){let l=ir[c.typeNum];if(!l)throw new Error(`Unknown object type: ${c.typeNum}`);let m={type:l,content:c.inflated,hash:await ct(l,c.inflated)};return r[i]=m,m}if(c.typeNum===Ue){let l=n.get(c.baseOffset);if(l===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let m=await s(l,o+1),g=ke(m.content,c.inflated),p={type:m.type,content:g,hash:await ct(m.type,g)};return r[i]=p,p}let f=await cr(t,r,c.baseHash,s),u;if(f!==void 0)u=await s(f,o+1);else if(e){let l=await e(c.baseHash);l&&(u=l)}if(!u)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let h=ke(u.content,c.inflated),d={type:u.type,content:h,hash:await ct(u.type,h)};return r[i]=d,d}for(let i=0;i<t.length;i++)await s(i);return r}async function cr(t,e,n,r){for(let s=0;s<e.length;s++)if(e[s]?.hash===n)return s;for(let s=0;s<t.length;s++){let i=t[s];if(i.typeNum!==Ue&&i.typeNum!==ft&&(await r(s)).hash===n)return s}}function ke(t,e){let n=0,{value:r,newPos:s}=qt(e,n);if(n=s,r!==t.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${t.byteLength}`);let{value:i,newPos:o}=qt(e,n);n=o;let a=new Uint8Array(i),c=0;for(;n<e.byteLength;){let f=e[n++];if(f&128){let u=0,h=0;f&1&&(u=e[n++]),f&2&&(u|=e[n++]<<8),f&4&&(u|=e[n++]<<16),f&8&&(u|=e[n++]<<24),f&16&&(h=e[n++]),f&32&&(h|=e[n++]<<8),f&64&&(h|=e[n++]<<16),h===0&&(h=65536),a.set(t.subarray(u,u+h),c),c+=h}else if(f>0)a.set(e.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==i)throw new Error(`Delta produced ${c} bytes, expected ${i}`);return a}function qt(t,e){let n=0,r=0,s;do s=t[e++],n|=(s&127)<<r,r+=7;while(s&128);return{value:n,newPos:e}}var fr=new TextEncoder;async function ct(t,e){let n=fr.encode(`${t} ${e.byteLength}\0`),r=Ee();return r.update(n),r.update(e),r.hex()}var Xt=4285812579,Jt=2,se=class{fanout;hashes;offsets;largeOffsets;count;constructor(e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength);if(n.getUint32(0)!==Xt)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==Jt)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let i=0;i<256;i++)this.fanout[i]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(e.buffer,e.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let i=0;i<this.count;i++)this.offsets[i]=n.getUint32(r),r+=4;let s=!1;for(let i=0;i<this.count;i++)if(this.offsets[i]&2147483648){s=!0;break}this.largeOffsets=s?new DataView(e.buffer,e.byteOffset+r):null}lookup(e){let n=Y(e),r=n[0],s=r===0?0:this.fanout[r-1],i=this.fanout[r],o=s,a=i;for(;o<a;){let c=o+a>>>1,f=this.compareAt(c,n);if(f<0)o=c+1;else if(f>0)a=c;else return this.getOffset(c)}return null}has(e){return this.lookup(e)!==null}get objectCount(){return this.count}allHashes(){let e=[];for(let n=0;n<this.count;n++)e.push(this.hashAtSlot(n));return e}findByPrefix(e){if(e.length<2)return[];let n=parseInt(e.slice(0,2),16),r=n===0?0:this.fanout[n-1],s=this.fanout[n],i=Y(e.padEnd(40,"0")),o=e.length,a=[];for(let c=r;c<s;c++){let f=c*20,u=!0;for(let h=0;h<o;h++){let d=h%2===0?this.hashes[f+(h>>1)]>>4&15:this.hashes[f+(h>>1)]&15,l=h%2===0?i[h>>1]>>4&15:i[h>>1]&15;if(d!==l){u=!1;break}}u&&a.push(this.hashAtSlot(c))}return a}hashAtSlot(e){let n="",r=e*20;for(let s=0;s<20;s++){let i=this.hashes[r+s];n+=(i>>4).toString(16)+(i&15).toString(16)}return n}compareAt(e,n){let r=e*20;for(let s=0;s<20;s++){let i=this.hashes[r+s],o=n[s];if(i<o)return-1;if(i>o)return 1}return 0}getOffset(e){let n=this.offsets[e];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}};async function lr(t,e){let n=[...t].sort((l,m)=>l.hash<m.hash?-1:l.hash>m.hash?1:0),r=n.length,s=[];for(let l of n)l.offset>=2147483648&&s.push(BigInt(l.offset));let i=8+256*4+r*20+r*4+r*4+s.length*8+20+20,o=new Uint8Array(i),a=new DataView(o.buffer),c=0;a.setUint32(c,Xt),c+=4,a.setUint32(c,Jt),c+=4;let f=new Uint32Array(256);for(let l of n){let m=parseInt(l.hash.slice(0,2),16);for(let g=m;g<256;g++)f[g]++}for(let l=0;l<256;l++)a.setUint32(c,f[l]),c+=4;for(let l of n)o.set(Y(l.hash),c),c+=20;for(let l of n)a.setUint32(c,l.crc),c+=4;let u=0;for(let l of n)l.offset>=2147483648?a.setUint32(c,2147483648|u++):a.setUint32(c,l.offset),c+=4;for(let l of s)a.setBigUint64(c,l),c+=8;o.set(e,c),c+=20;let h=Ee();h.update(o.subarray(0,c));let d=await h.hex();return o.set(Y(d),c),o}async function Zt(t){let n=(await Yt(t)).map(s=>({hash:s.hash,offset:s.offset,crc:vt(t.subarray(s.offset,s.nextOffset))})),r=t.subarray(t.byteLength-20);return lr(n,r)}var ur=6,hr=7,dr={1:"commit",2:"tree",3:"blob",4:"tag"},Qt=50,Se=class{constructor(e,n){this.data=e;this.index=n instanceof se?n:new se(n)}index;hasObject(e){return this.index.has(e)}findByPrefix(e){return this.index.findByPrefix(e)}async readObject(e){let n=this.index.lookup(e);return n===null?null:this.readAt(n,0)}get objectCount(){return this.index.objectCount}async readAt(e,n){if(n>Qt)throw new Error(`delta chain depth ${n} exceeds limit of ${Qt}`);let r=this.data,s=e,i=r[s++],o=i>>4&7,a=i&15,c=4;for(;i&128;)i=r[s++],a|=(i&127)<<c,c+=7;if(o===ur){let h=r[s++],d=h&127;for(;h&128;)d+=1,h=r[s++],d=(d<<7)+(h&127);let l=await ge(r.subarray(s)),m=await this.readAt(e-d,n+1);return{type:m.type,content:ke(m.content,l)}}if(o===hr){let h=Oe(r,s);s+=20;let d=await ge(r.subarray(s)),l=this.index.lookup(h);if(l===null)throw new Error(`REF_DELTA base ${h} not found in pack`);let m=await this.readAt(l,n+1);return{type:m.type,content:ke(m.content,d)}}let f=dr[o];if(!f)throw new Error(`Unknown pack object type: ${o}`);let u=await ge(r.subarray(s));if(u.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${e}: got ${u.byteLength}, expected ${a}`);return{type:f,content:u}}};var mr=new TextEncoder,pr=new TextDecoder;function gr(t,e){let n=mr.encode(`${t} ${e.byteLength}\0`),r=new Uint8Array(n.byteLength+e.byteLength);return r.set(n),r.set(e,n.byteLength),r}function br(t,e){let n=e.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${t}: no null byte in header`);let r=pr.decode(e.subarray(0,n)),s=r.indexOf(" ");if(s===-1)throw new Error(`Corrupt object ${t}: malformed header "${r}"`);let i=r.slice(0,s),o=parseInt(r.slice(s+1),10),a=e.subarray(n+1);if(a.byteLength!==o)throw new Error(`Corrupt object ${t}: expected ${o} bytes, got ${a.byteLength}`);return{type:i,content:a}}function lt(t,e){return D(t,"objects",e.slice(0,2),e.slice(2))}var ut=class{constructor(e,n,r){this.fs=e;this.gitDir=n;this.cache=new ve(r),this.packDir=D(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(e,n){let r=gr(e,n),s=await me(r),i=lt(this.gitDir,s);if(await this.fs.exists(i))return s;let o=D(this.gitDir,"objects",s.slice(0,2));return await this.fs.mkdir(o,{recursive:!0}),await this.fs.writeFile(i,await at(r)),s}async read(e){let n=this.cache.get(e);if(n)return n;let r=lt(this.gitDir,e);if(await this.fs.exists(r)){let s=await this.fs.readFileBuffer(r),i=await ge(s),o=await me(i);if(o!==e)throw new Error(`corrupt loose object ${e}: SHA-1 mismatch (computed ${o})`);let a=br(e,i);return this.cache.set(e,a),a}await this.discover();for(let s of this.packs){if(!s.index.has(e))continue;let o=await(await this.ensureReader(s)).readObject(e);if(o)return this.cache.set(e,o),o}throw new Error(`object ${e} not found`)}async exists(e){if(await this.fs.exists(lt(this.gitDir,e)))return!0;await this.discover();for(let n of this.packs)if(n.index.has(e))return!0;return!1}async ingestPack(e){if(e.byteLength<32)return 0;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let s=n.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);let i=n.getUint32(8);if(i===0)return 0;let o=e.subarray(e.byteLength-20),a=ue(o),c=await me(e.subarray(0,e.byteLength-20));if(c!==a)throw new Error(`pack checksum mismatch: expected ${a}, computed ${c}`);await this.fs.mkdir(this.packDir,{recursive:!0});let f=`pack-${a}`,u=D(this.packDir,`${f}.pack`);await this.fs.writeFile(u,e);let h=await Zt(e),d=D(this.packDir,`${f}.idx`);await this.fs.writeFile(d,h),this.loadedPackNames.add(f);let l=new se(h);return this.packs.push({name:f,index:l,reader:new Se(e,l)}),i}invalidatePacks(){this.packs=[],this.loadedPackNames.clear(),this.discoverPromise=null,this.cache.clear()}async findByPrefix(e){if(e.length<4)return[];let n=e.slice(0,2),r=e.slice(2),s=D(this.gitDir,"objects",n),i=[];if(await this.fs.exists(s)){let o=await this.fs.readdir(s);for(let a of o)a.startsWith(r)&&i.push(`${n}${a}`)}await this.discover();for(let o of this.packs)for(let a of o.index.findByPrefix(e))i.includes(a)||i.push(a);return i}async ensureReader(e){if(e.reader)return e.reader;let n=D(this.packDir,`${e.name}.pack`),r=await this.fs.readFileBuffer(n);return e.reader=new Se(r,e.index),e.reader}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){if(!await this.fs.exists(this.packDir))return;let e=await this.fs.readdir(this.packDir);for(let n of e){if(!n.endsWith(".idx"))continue;let r=n.slice(0,-4);if(this.loadedPackNames.has(r))continue;let s=D(this.packDir,`${r}.pack`);if(!await this.fs.exists(s))continue;let i=await this.fs.readFileBuffer(D(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new se(i),reader:null})}}};function ht(t){let e=t.indexOf("<"),n=t.indexOf(">");if(e===-1||n===-1)throw new Error(`Malformed identity line: "${t}"`);let r=t.slice(0,e).trimEnd(),s=t.slice(e+1,n),i=t.slice(n+2),[o="0",a="+0000"]=i.split(" "),c=parseInt(o,10);return{name:r,email:s,timestamp:c,timezone:a}}function dt(t){return`${t.name} <${t.email}> ${t.timestamp} ${t.timezone}`}var yr=new TextEncoder,wr=new TextDecoder;function en(t){let e=wr.decode(t),n=e.indexOf(`
2
2
 
3
3
  `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o=[],a,c;for(let f of r.split(`
4
- `)){let u=f.indexOf(" ");if(u===-1)continue;let h=f.slice(0,u),d=f.slice(u+1);switch(h){case"tree":i=d;break;case"parent":o.push(d);break;case"author":a=ht(d);break;case"committer":c=ht(d);break}}if(!i)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:i,parents:o,author:a,committer:c,message:s}}function Be(t){let e=[];e.push(`tree ${t.tree}`);for(let n of t.parents)e.push(`parent ${n}`);return e.push(`author ${dt(t.author)}`),e.push(`committer ${dt(t.committer)}`),e.push(""),e.push(t.message),gr.encode(e.join(`
5
- `))}async function _(t,e,n){let r=await t.objectStore.write(e,n);return t.hooks?.onObjectWrite?.({repo:t,type:e,hash:r}),r}async function q(t,e){return t.objectStore.read(e)}function ee(t){let e=Math.min(t.length,8e3);for(let n=0;n<e;n++)if(t.charCodeAt(n)===0)return!0;return!1}var yr=new TextDecoder;async function H(t,e){let n=await q(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return yr.decode(n.content)}async function te(t,e){let n=await q(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return n.content}async function U(t,e){let n=await q(t,e);if(n.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${n.type}`);return en(n.content)}var Te={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};function tn(t){return typeof t=="string"?{type:"direct",hash:t}:t}var mt="ref: ",nn=10,pt=class{constructor(e,n){this.fs=e;this.gitDir=n}casLocks=new Map;async readRef(e){let n=D(this.gitDir,e);if(await this.fs.exists(n)){let i=(await this.fs.readFile(n)).trim();return i.startsWith(mt)?{type:"symbolic",target:i.slice(mt.length)}:{type:"direct",hash:i}}let s=(await this.readPackedRefs()).get(e);return s?{type:"direct",hash:s}:null}async writeRef(e,n){let r=tn(n),s=D(this.gitDir,e);await rn(this.fs,s),r.type==="symbolic"?await this.fs.writeFile(s,`${mt}${r.target}
4
+ `)){let u=f.indexOf(" ");if(u===-1)continue;let h=f.slice(0,u),d=f.slice(u+1);switch(h){case"tree":i=d;break;case"parent":o.push(d);break;case"author":a=ht(d);break;case"committer":c=ht(d);break}}if(!i)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:i,parents:o,author:a,committer:c,message:s}}function Be(t){let e=[];e.push(`tree ${t.tree}`);for(let n of t.parents)e.push(`parent ${n}`);return e.push(`author ${dt(t.author)}`),e.push(`committer ${dt(t.committer)}`),e.push(""),e.push(t.message),yr.encode(e.join(`
5
+ `))}async function _(t,e,n){let r=await t.objectStore.write(e,n);return t.hooks?.onObjectWrite?.({repo:t,type:e,hash:r}),r}async function q(t,e){return t.objectStore.read(e)}function ee(t){let e=Math.min(t.length,8e3);for(let n=0;n<e;n++)if(t.charCodeAt(n)===0)return!0;return!1}var xr=new TextDecoder;async function H(t,e){let n=await q(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return xr.decode(n.content)}async function te(t,e){let n=await q(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return n.content}async function U(t,e){let n=await q(t,e);if(n.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${n.type}`);return en(n.content)}var Te={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};function tn(t){return typeof t=="string"?{type:"direct",hash:t}:t}var mt="ref: ",nn=10,pt=class{constructor(e,n){this.fs=e;this.gitDir=n}casLocks=new Map;async readRef(e){let n=D(this.gitDir,e);if(await this.fs.exists(n)){let i=(await this.fs.readFile(n)).trim();return i.startsWith(mt)?{type:"symbolic",target:i.slice(mt.length)}:{type:"direct",hash:i}}let s=(await this.readPackedRefs()).get(e);return s?{type:"direct",hash:s}:null}async writeRef(e,n){let r=tn(n),s=D(this.gitDir,e);await rn(this.fs,s),r.type==="symbolic"?await this.fs.writeFile(s,`${mt}${r.target}
6
6
  `):await this.fs.writeFile(s,`${r.hash}
7
7
  `)}async deleteRef(e){let n=D(this.gitDir,e);await this.fs.exists(n)&&await this.fs.rm(n),await this.removePackedRef(e)}async listRefs(e="refs"){let n=[],r=D(this.gitDir,e);await this.fs.exists(r)&&await this.walkRefs(r,e,n);let s=await this.readPackedRefs();if(s.size>0){let i=new Set(n.map(a=>a.name)),o=`${e}/`;for(let[a,c]of s)a.startsWith(o)&&!i.has(a)&&n.push({name:a,hash:c})}return n.sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async compareAndSwapRef(e,n,r){let i=(this.casLocks.get(e)??Promise.resolve(!1)).then(()=>this.compareAndSwapUnsafe(e,n,r),()=>this.compareAndSwapUnsafe(e,n,r));this.casLocks.set(e,i);try{return await i}finally{this.casLocks.get(e)===i&&this.casLocks.delete(e)}}async compareAndSwapUnsafe(e,n,r){let s=await this.resolveRefInternal(e);if(n===null){if(await this.readRef(e)!==null)return!1}else if(s!==n)return!1;return r===null?await this.deleteRef(e):await this.writeRef(e,r),!0}async resolveRefInternal(e){let n=e;for(let r=0;r<nn;r++){let s=await this.readRef(n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async readPackedRefs(){let e=D(this.gitDir,"packed-refs");if(!await this.fs.exists(e))return new Map;let n=await this.fs.readFile(e),r=new Map;for(let s of n.split(`
8
8
  `)){if(!s||s.startsWith("#")||s.startsWith("^"))continue;let i=s.indexOf(" ");if(i===-1)continue;let o=s.slice(0,i),a=s.slice(i+1).trim();o.length===40&&a&&r.set(a,o)}return r}async removePackedRef(e){let n=D(this.gitDir,"packed-refs");if(!await this.fs.exists(n))return;let s=(await this.fs.readFile(n)).split(`
9
9
  `),i=[],o=!1;for(let c of s){if(o&&c.startsWith("^")){o=!1;continue}if(o=!1,!c||c.startsWith("#")){i.push(c);continue}let f=c.indexOf(" ");if(f!==-1&&c.slice(f+1).trim()===e){o=!0;continue}i.push(c)}i.some(c=>c&&!c.startsWith("#")&&!c.startsWith("^"))?await this.fs.writeFile(n,i.join(`
10
- `)):await this.fs.rm(n)}async walkRefs(e,n,r){let s=await this.fs.readdir(e);for(let i of s){let o=D(e,i),a=`${n}/${i}`,c=await this.fs.stat(o);if(c.isDirectory)await this.walkRefs(o,a,r);else if(c.isFile){let f=await this.resolveRefInternal(a);f&&r.push({name:a,hash:f})}}}};async function wr(t,e){return t.refStore.readRef(e)}async function De(t,e){let n=e;for(let r=0;r<nn;r++){let s=await wr(t,n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async function gt(t,e="refs"){return t.refStore.listRefs(e)}async function rn(t,e){let n=e.lastIndexOf("/");if(n>0){let r=e.slice(0,n);await t.mkdir(r,{recursive:!0})}}var Li=new TextEncoder;function Q(t){return typeof t=="string"?t==="120000":t===40960}var Ir=new TextEncoder,sn=new TextDecoder,xr=new Set(["100644","100755","040000","120000","160000"]);function Or(t){return t.length===4&&t.toLowerCase()===".git"}function Er(t,e){if(t.length===0)throw new Error("invalid tree entry: empty name");if(t.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${t}'`);if(t.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(t==="."||t==="..")throw new Error(`invalid tree entry: '${t}'`);if(Or(t))throw new Error(`invalid tree entry: '${t}'`);if(!xr.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${t}'`)}function on(t){let e=[],n=0;for(;n<t.byteLength;){let r=t.indexOf(32,n);if(r===-1)break;let s=sn.decode(t.subarray(n,r)),i=t.indexOf(0,r+1);if(i===-1)break;let o=sn.decode(t.subarray(r+1,i)),a=t.subarray(i+1,i+21),c=le(a),f=s.padStart(6,"0");Er(o,f),e.push({mode:f,name:o,hash:c}),n=i+21}return{type:"tree",entries:e}}function He(t){let e=[];for(let i of t.entries){let o=i.mode.replace(/^0+/,""),a=Ir.encode(`${o} ${i.name}\0`),c=Y(i.hash);e.push(a),e.push(c)}let n=e.reduce((i,o)=>i+o.byteLength,0),r=new Uint8Array(n),s=0;for(let i of e)r.set(i,s),s+=i.byteLength;return r}async function bt(t,e){return an(t,e,"")}async function an(t,e,n){let r=[],s=new Map;for(let o of e){let a=n?o.path.slice(n.length+1):o.path,c=a.indexOf("/");if(c===-1)r.push({mode:Pr(o.mode),name:a,hash:o.hash});else{let f=a.slice(0,c),u=s.get(f);u||(u=[],s.set(f,u)),u.push(o)}}for(let[o,a]of s){let c=n?`${n}/${o}`:o,f=await an(t,a,c);r.push({mode:Te.DIRECTORY,name:o,hash:f})}r.sort((o,a)=>{let c=o.mode===Te.DIRECTORY?`${o.name}/`:o.name,f=a.mode===Te.DIRECTORY?`${a.name}/`:a.name;return c<f?-1:c>f?1:0});let i=He({type:"tree",entries:r});return _(t,"tree",i)}async function ue(t,e,n=""){let r=await q(t,e);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let s=on(r.content),i=[];for(let o of s.entries){let a=n?`${n}/${o.name}`:o.name;if(o.mode===Te.DIRECTORY){let c=await ue(t,o.hash,a);i.push(...c)}else i.push({path:a,mode:o.mode,hash:o.hash})}return i}async function ie(t,e){if(!e)return new Map;let n=await ue(t,e);return new Map(n.map(r=>[r.path,r]))}async function Ce(t,e,n){let r=await ie(t,e),s=await ie(t,n),i=[];for(let[o,a]of r){let c=s.get(o);c?(a.hash!==c.hash||a.mode!==c.mode)&&i.push({path:o,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):i.push({path:o,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[o,a]of s)r.has(o)||i.push({path:o,status:"added",newHash:a.hash,newMode:a.mode});return i.sort((o,a)=>je(o.path,a.path))}function Pr(t){return t.toString(8).padStart(6,"0")}function cn(t){return{stdout:"",stderr:`fatal: ${t}
11
- `,exitCode:128}}var Gi=cn("not a git repository (or any of the parent directories): .git"),_i=cn("this operation must be run in a work tree");function je(t,e){return t<e?-1:t>e?1:0}function he(t){if(t.length===0)return[];let e=t.split(`
12
- `);return e[e.length-1]===""&&e.pop(),e}var kr=4,fn=1024,Ne=100,_e=0,Fe=1,be=2;function wt(t){let e=1;for(;e*e<t;)e++;return e}function Rr(t,e){let n=new Map,r=[],s=new Array(t.length),i=new Array(e.length);for(let o=0;o<t.length;o++){let a=t[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,s[o]=c}for(let o=0;o<e.length;o++){let a=e[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,i[o]=c}return{classes1:s,classes2:i,classInfo:r}}function Sr(t,e,n,r){let s=0,i=Math.min(e,r);for(;s<i&&t[s]===n[s];)s++;let o=s,a=0,c=i-o;for(;a<c&&t[e-1-a]===n[r-1-a];)a++;return{dstart:o,dend1:e-a-1,dend2:r-a-1}}function ln(t,e,n,r){e-n>Ne&&(n=e-Ne),r-e>Ne&&(r=e+Ne);let s=0,i=1;for(let c=1;e-c>=n;c++){let f=t[e-c];if(f===_e)s++;else if(f===be)i++;else break}if(s===0)return!1;let o=0,a=1;for(let c=1;e+c<=r;c++){let f=t[e+c];if(f===_e)o++;else if(f===be)a++;else break}return o===0?!1:(o+=s,a+=i,a*kr<a+o)}function Tr(t,e,n,r,s,i,o,a,c,f){let u=new Uint8Array(e),h=new Uint8Array(r),d=Math.min(wt(e),fn);for(let p=i;p<=o;p++){let I=s[t[p]].len2;I===0?u[p]=_e:I>=d?u[p]=be:u[p]=Fe}let l=Math.min(wt(r),fn);for(let p=i;p<=a;p++){let I=s[n[p]].len1;I===0?h[p]=_e:I>=l?h[p]=be:h[p]=Fe}let m=[];for(let p=i;p<=o;p++)u[p]===Fe||u[p]===be&&!ln(u,p,i,o)?m.push(p):c[p]=1;let g=[];for(let p=i;p<=a;p++)h[p]===Fe||h[p]===be&&!ln(h,p,i,a)?g.push(p):f[p]=1;return{refIndex1:m,nreff1:m.length,refIndex2:g,nreff2:g.length}}var oe=20,un=4,Cr=256,jr=256,Ge=2147483647;function W(t,e){return t[e]??0}function Ar(t,e,n,r,s,i,o,a,c,f){let u=e-i,h=n-s,d=e-s,l=n-i,m=d-l&1,g=d,p=d,I=l,k=l;o[d]=e,a[l]=n;for(let j=1;;j++){let A=!1;g>u?o[--g-1]=-1:++g,p<h?o[++p+1]=-1:--p;for(let E=p;E>=g;E-=2){let y;W(o,E-1)>=W(o,E+1)?y=W(o,E-1)+1:y=W(o,E+1);let O=y,T=y-E;for(;y<n&&T<i&&t[y]===r[T];)y++,T++;if(y-O>oe&&(A=!0),o[E]=y,m&&I<=E&&E<=k&&W(a,E)<=y)return{i1:y,i2:T,minLo:!0,minHi:!0}}I>u?a[--I-1]=Ge:++I,k<h?a[++k+1]=Ge:--k;for(let E=k;E>=I;E-=2){let y;W(a,E-1)<W(a,E+1)?y=W(a,E-1):y=W(a,E+1)-1;let O=y,T=y-E;for(;y>e&&T>s&&t[y-1]===r[T-1];)y--,T--;if(O-y>oe&&(A=!0),a[E]=y,!m&&g<=E&&E<=p&&y<=W(o,E))return{i1:y,i2:T,minLo:!0,minHi:!0}}if(!c){if(A&&j>Cr){let E=0,y=null;for(let O=p;O>=g;O-=2){let T=O>d?O-d:d-O,x=W(o,O),P=x-O,S=x-e+(P-s)-T;if(S>un*j&&S>E&&e+oe<=x&&x<n&&s+oe<=P&&P<i){let $=!0;for(let v=1;v<=oe;v++)if(t[x-v]!==r[P-v]){$=!1;break}$&&(E=S,y={i1:x,i2:P,minLo:!0,minHi:!1})}}if(y)return y;E=0,y=null;for(let O=k;O>=I;O-=2){let T=O>l?O-l:l-O,x=W(a,O),P=x-O,S=n-x+(i-P)-T;if(S>un*j&&S>E&&e<x&&x<=n-oe&&s<P&&P<=i-oe){let $=!0;for(let v=0;v<oe;v++)if(t[x+v]!==r[P+v]){$=!1;break}$&&(E=S,y={i1:x,i2:P,minLo:!1,minHi:!0})}}if(y)return y}if(j>=f){let E=-1,y=-1;for(let x=p;x>=g;x-=2){let P=Math.min(W(o,x),n),S=P-x;i<S&&(P=i+x,S=i),E<P+S&&(E=P+S,y=P)}let O=Ge,T=Ge;for(let x=k;x>=I;x-=2){let P=Math.max(e,W(a,x)),S=P-x;S<s&&(P=s+x,S=s),P+S<O&&(O=P+S,T=P)}return n+i-O<E-(e+s)?{i1:y,i2:E-y,minLo:!0,minHi:!1}:{i1:T,i2:O-T,minLo:!1,minHi:!0}}}}}function It(t,e,n,r,s,i,o,a,c,f,u,h,d,l){for(;e<n&&s<i&&t[e]===r[s];)e++,s++;for(;e<n&&s<i&&t[n-1]===r[i-1];)n--,i--;if(e===n)for(let m=s;m<i;m++)a[f[m]]=1;else if(s===i)for(let m=e;m<n;m++)o[c[m]]=1;else{let m=Ar(t,e,n,r,s,i,u,h,d,l);It(t,e,m.i1,r,s,m.i2,o,a,c,f,u,h,m.minLo,l),It(t,m.i1,n,r,m.i2,i,o,a,c,f,u,h,m.minHi,l)}}function $r(t,e,n,r){let s=[],i=0,o=0,a=1,c=1;for(;i<t.length||o<e.length;){if(i<t.length&&o<e.length&&!n[i]&&!r[o]){s.push({type:"keep",line:t[i]??"",oldLineNo:a++,newLineNo:c++}),i++,o++;continue}for(;i<t.length&&n[i];)s.push({type:"delete",line:t[i]??"",oldLineNo:a++,newLineNo:0}),i++;for(;o<e.length&&r[o];)s.push({type:"insert",line:e[o]??"",oldLineNo:0,newLineNo:c++}),o++}return s}var hn=200,dn=20,mn=100,Lr=1,Mr=21,vr=-30,Ur=6,Br=-4,Dr=10,Hr=24,Nr=17,Fr=23,Gr=17,_r=60;function yt(t){let e=0;for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r===32)e+=1;else if(r===9)e+=8-e%8;else if(!(r===10||r===13||r===11||r===12))return e;if(e>=hn)return hn}return-1}function pn(t,e,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=e?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=yt(t[n]));for(let s=n-1;s>=0&&(r.preIndent=yt(t[s]),r.preIndent===-1);s--)if(r.preBlank+=1,r.preBlank===dn){r.preIndent=0;break}for(let s=n+1;s<e&&(r.postIndent=yt(t[s]),r.postIndent===-1);s++)if(r.postBlank+=1,r.postBlank===dn){r.postIndent=0;break}return r}function gn(t,e){t.preIndent===-1&&t.preBlank===0&&(e.penalty+=Lr),t.endOfFile&&(e.penalty+=Mr);let n=t.indent===-1?1+t.postBlank:0,r=t.preBlank+n;e.penalty+=vr*r,e.penalty+=Ur*n;let s=t.indent!==-1?t.indent:t.postIndent,i=r!==0;e.effectiveIndent+=s,s===-1||t.preIndent===-1||(s>t.preIndent?e.penalty+=i?Dr:Br:s===t.preIndent||(t.postIndent!==-1&&t.postIndent>s?e.penalty+=i?Nr:Hr:e.penalty+=i?Gr:Fr))}function Wr(t,e){let n=(t.effectiveIndent>e.effectiveIndent?1:0)-(t.effectiveIndent<e.effectiveIndent?1:0);return _r*n+(t.penalty-e.penalty)}function bn(t,e,n,r,s,i){let o=0,a=0;for(;t[a];)a++;let c=0,f=0;for(;s[f];)f++;let u=(h,d)=>e[h]===e[d];for(;;){if(a!==o){let h,d,l;do{for(h=a-o,d=-1;o>0&&u(o-1,a-1);){for(t[--o]=1,t[--a]=0;t[o-1];)o--;if(c===0)break;for(f=c-1,c=f;s[c-1];c--);}for(l=a,f>c&&(d=a);!(a>=r||!u(o,a));){for(t[o++]=0,t[a++]=1;t[a];)a++;if(f>=i)break;for(c=f+1,f=c;s[f];f++);f>c&&(d=a)}}while(h!==a-o);if(a!==l)if(d!==-1)for(;f===c;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(f=c-1,c=f;s[c-1];c--);}else{let m=-1,g={effectiveIndent:0,penalty:0},p=l;for(a-h-1>p&&(p=a-h-1),a-mn>p&&(p=a-mn);p<=a;p++){let I={effectiveIndent:0,penalty:0},k=pn(n,r,p);gn(k,I);let j=pn(n,r,p-h);gn(j,I),(m===-1||Wr(I,g)<=0)&&(g={effectiveIndent:I.effectiveIndent,penalty:I.penalty},m=p)}for(;a>m;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(f=c-1,c=f;s[c-1];c--);}}}if(a>=r)break;for(o=a+1,a=o;t[a];a++);if(f>=i)break;for(c=f+1,f=c;s[f];f++);}}function xt(t,e){let n=t.length,r=e.length,s=new Uint8Array(n),i=new Uint8Array(r);if(n>0&&r>0){let{classes1:o,classes2:a,classInfo:c}=Rr(t,e),{dstart:f,dend1:u,dend2:h}=Sr(o,n,a,r);if(f>u)for(let d=f;d<r-(n-1-u);d++)i[d]=1;else if(f>h)for(let d=f;d<n-(r-1-h);d++)s[d]=1;else{let{refIndex1:d,nreff1:l,refIndex2:m,nreff2:g}=Tr(o,n,a,r,c,f,u,h,s,i);if(l>0&&g>0){let p=new Array(l);for(let y=0;y<l;y++)p[y]=o[d[y]];let I=new Array(g);for(let y=0;y<g;y++)I[y]=a[m[y]];let k={},j={},A=l+g+3,E=Math.max(jr,wt(A));It(p,0,l,I,0,g,s,i,d,m,k,j,!1,E)}else if(l===0)for(let p=0;p<g;p++)i[m[p]]=1;else for(let p=0;p<l;p++)s[d[p]]=1;bn(s,o,t,n,i,r),bn(i,a,e,r,s,n)}}else n===0?i.fill(1):s.fill(1);return{changedOld:s,changedNew:i}}function We(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return e.map((o,a)=>({type:"insert",line:o,oldLineNo:0,newLineNo:a+1}));if(r===0)return t.map((o,a)=>({type:"delete",line:o,oldLineNo:a+1,newLineNo:0}));let{changedOld:s,changedNew:i}=xt(t,e);return $r(t,e,s,i)}function ye(t){let e=t.lastIndexOf("/");return e>=0?t.slice(e+1):t}function zr(t,e){if(t.length===0)return;if(t.length===1)return t.shift();let n=ye(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];if(i&&ye(i.path)===n){r=s;break}}return t.splice(r,1)[0]}var Vr=50;async function Ae(t,e,n=Vr){let r=new Map,s=[],i=[],o=[];for(let u of e)if(u.status==="deleted"&&u.oldHash){let h=r.get(u.oldHash)??[];h.push(u),r.set(u.oldHash,h),s.push(u)}else u.status==="added"&&u.newHash?i.push(u):o.push(u);let a=[],c=[];for(let u of i){let h=u.newHash;if(!h){c.push(u);continue}let d=r.get(h);if(d&&d.length>0){let l=zr(d,u.path);l&&a.push({oldPath:l.path,newPath:u.path,oldHash:l.oldHash??h,newHash:h,similarity:100,oldMode:l.oldMode,newMode:u.newMode})}else c.push(u)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let u=await Kr(t,f,c,n);if(u.length>0){let h=new Set(u.map(l=>l.oldPath)),d=new Set(u.map(l=>l.newPath));f=f.filter(l=>!h.has(l.path)),c=c.filter(l=>!d.has(l.path)),a.push(...u)}}if(f.length>0&&c.length>0){let u=await Xr(t,f,c,n);if(u.length>0){let h=new Set(u.map(l=>l.oldPath)),d=new Set(u.map(l=>l.newPath));f=f.filter(l=>!h.has(l.path)),c=c.filter(l=>!d.has(l.path)),a.push(...u)}}return{remaining:[...o,...f,...c],renames:a}}async function Kr(t,e,n,r){let s=new Map;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let f=ye(c.path);s.has(f)?s.set(f,-1):s.set(f,a)}let i=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let f=ye(c.path);i.has(f)?i.set(f,-1):i.set(f,a)}let o=[];for(let[a,c]of s){if(c===-1)continue;let f=i.get(a);if(f===void 0||f===-1)continue;let u=e[c],h=n[f];if(!u?.oldHash||!h?.newHash||u.oldHash===h.newHash)continue;let d=await te(t,u.oldHash),l=await te(t,h.newHash),m=Yr(d,l);m<r||o.push({oldPath:u.path,newPath:h.path,oldHash:u.oldHash,newHash:h.newHash,similarity:m,oldMode:u.oldMode,newMode:h.newMode})}return o}var yn=107927;function ze(t){let e=new Map,n=0,r=0,s=0;for(let o=0;o<t.length;o++){let a=t[o],c=r;if(r=(r<<7^s>>>25)>>>0,s=(s<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let f=(r+Math.imul(s,97))%yn;e.set(f,(e.get(f)??0)+n),n=0,r=0,s=0}if(n>0){let o=(r+Math.imul(s,97))%yn;e.set(o,(e.get(o)??0)+n)}let i=[];for(let[o,a]of e)i.push({hash:o,count:a});return i.sort((o,a)=>o.hash-a.hash),i}function qr(t,e){let n=0,r=0,s=0,i=0;for(;s<t.length;){let o=t[s];if(!o)break;for(;i<e.length;){let f=e[i];if(!f||f.hash>=o.hash)break;r+=f.count,i++}let a=o.count,c=0;if(i<e.length){let f=e[i];f&&f.hash===o.hash&&(c=f.count,i++)}a<c?(r+=c-a,n+=a):n+=c,s++}for(;i<e.length;){let o=e[i];o&&(r+=o.count),i++}return{srcCopied:n,literalAdded:r}}function Yr(t,e){return t.length===0&&e.length===0?100:t.length===0||e.length===0?0:wn(t.length,ze(t),e.length,ze(e))}function wn(t,e,n,r){let s=Math.max(t,n),i=Math.min(t,n);if(i<s-i)return 0;let{srcCopied:o}=qr(e,r);return Math.floor(o*100/s)}async function Xr(t,e,n,r){let s=[];for(let u of e)if(u.oldHash){let h=await te(t,u.oldHash);s.push({size:h.length,chunks:ze(h)})}else s.push(null);let i=[];for(let u of n)if(u.newHash){let h=await te(t,u.newHash);i.push({size:h.length,chunks:ze(h)})}else i.push(null);let o=[];for(let u=0;u<e.length;u++){let h=e[u],d=s[u];if(!(!h||!d))for(let l=0;l<n.length;l++){let m=n[l],g=i[l];if(!m||!g)continue;let p=wn(d.size,d.chunks,g.size,g.chunks);if(p>=r){let I=ye(h.path)===ye(m.path)?1:0;o.push({similarity:p,nameScore:I,delIdx:u,addIdx:l})}}}o.sort((u,h)=>h.similarity-u.similarity||h.nameScore-u.nameScore);let a=new Set,c=new Set,f=[];for(let{similarity:u,delIdx:h,addIdx:d}of o){if(a.has(h)||c.has(d))continue;a.add(h),c.add(d);let l=e[h],m=n[d];!l||!m||f.push({oldPath:l.path,newPath:m.path,oldHash:l.oldHash??"",newHash:m.newHash??"",similarity:u,oldMode:l.oldMode,newMode:m.newMode})}return f}async function ae(t,e,n){return(await ie(t,e)).get(n)?.hash??null}async function In(t,e,n,r){let s=await Ce(t,e,n);if(!s.find(c=>c.status==="added"&&c.path===r))return null;let{renames:o}=await Ae(t,s);return o.find(c=>c.newPath===r)?.oldPath??null}async function Jr(t,e,n,r,s,i){let o=await ae(t,(await U(t,e)).tree,n);if(!o){let g=new Map,p=await U(t,e);for(let I of r)g.set(I.finalIdx,ce(e,n,I.currentLine,i+I.finalIdx,s[I.finalIdx],p,!1,void 0));return g}let a=await H(t,o),c=he(a),f=new Array(s.length),u=[...r],h=e,d=n,l=c;for(;u.length>0;){let g=await U(t,h);if(g.parents.length===0){for(let x of u)f[x.finalIdx]=ce(h,d,x.currentLine,i+x.finalIdx,s[x.finalIdx],g,!0,void 0);break}let p=await ae(t,g.tree,d),I=null,k=[];for(let x of g.parents){let P=await U(t,x),S=d,$=await ae(t,P.tree,S);if(!$){let v=await In(t,P.tree,g.tree,d);v&&(S=v,$=await ae(t,P.tree,S))}if($&&(k.push({hash:x,path:S,blobHash:$}),$===p)){I={hash:x,path:S};break}}if(I){h=I.hash,d=I.path;continue}if(k.length===0){for(let x of u)f[x.finalIdx]=ce(h,d,x.currentLine,i+x.finalIdx,s[x.finalIdx],g,!1,void 0);break}let j=k[0],A=await H(t,j.blobHash),E=he(A),y=We(E,l),O=new Map;for(let x of y)x.type==="keep"&&O.set(x.newLineNo,x.oldLineNo);let T=[];for(let x of u){let P=O.get(x.currentLine);P!==void 0?T.push({finalIdx:x.finalIdx,currentLine:P}):f[x.finalIdx]=ce(h,d,x.currentLine,i+x.finalIdx,s[x.finalIdx],g,!1,{hash:j.hash,path:j.path})}u=T,h=j.hash,d=j.path,l=E}let m=new Map;for(let g of r)f[g.finalIdx]&&m.set(g.finalIdx,f[g.finalIdx]);return m}async function xn(t,e,n,r){let s=await U(t,e),i=await ae(t,s.tree,n);if(!i)throw new Error(`no such path '${n}' in ${e.slice(0,7)}`);let o=await H(t,i),a=he(o),c=r?.startLine??1,f=r?.endLine??a.length,u=a.slice(c-1,f),h=new Array(u.length),d=u.map((p,I)=>({finalIdx:I,currentLine:c+I})),l=e,m=n,g=a;for(;d.length>0;){let p=await U(t,l);if(p.parents.length===0){for(let O of d)h[O.finalIdx]=ce(l,m,O.currentLine,c+O.finalIdx,u[O.finalIdx],p,!0,void 0);break}let I=await ae(t,p.tree,m),k=[],j=null;for(let O of p.parents){let T=await U(t,O),x=m,P=await ae(t,T.tree,x);if(!P){let S=await In(t,T.tree,p.tree,m);S&&(x=S,P=await ae(t,T.tree,x))}if(P){let S={hash:O,path:x,blobHash:P};if(k.push(S),P===I){j=S;break}}}if(j){l=j.hash,m=j.path;continue}if(k.length===0){for(let O of d)h[O.finalIdx]=ce(l,m,O.currentLine,c+O.finalIdx,u[O.finalIdx],p,!1,void 0);break}if(k.length===1){let O=k[0],T=await H(t,O.blobHash),x=he(T),P=We(x,g),S=new Map;for(let v of P)v.type==="keep"&&S.set(v.newLineNo,v.oldLineNo);let $=[];for(let v of d){let ne=S.get(v.currentLine);ne!==void 0?$.push({finalIdx:v.finalIdx,currentLine:ne}):h[v.finalIdx]=ce(l,m,v.currentLine,c+v.finalIdx,u[v.finalIdx],p,!1,{hash:O.hash,path:O.path})}d=$,l=O.hash,m=O.path,g=x;continue}let A=[];for(let O of k){let T=await H(t,O.blobHash),x=he(T),P=We(x,g),S=new Map;for(let $ of P)$.type==="keep"&&S.set($.newLineNo,$.oldLineNo);A.push({info:O,newToOld:S})}let E=new Map;for(let O of d){let T=!1;for(let x=0;x<A.length;x++){let P=A[x],S=P.newToOld.get(O.currentLine);if(S!==void 0){let $=E.get(x);$||($={info:P.info,lines:[]},E.set(x,$)),$.lines.push({finalIdx:O.finalIdx,currentLine:S}),T=!0;break}}T||(h[O.finalIdx]=ce(l,m,O.currentLine,c+O.finalIdx,u[O.finalIdx],p,!1,{hash:k[0].hash,path:k[0].path}))}let y=E.get(0);for(let[O,T]of E){if(O===0)continue;let x=await Jr(t,T.info.hash,T.info.path,T.lines,u,c);for(let[P,S]of x)h[P]=S}if(y&&y.lines.length>0){d=y.lines,l=y.info.hash,m=y.info.path;let O=await H(t,y.info.blobHash);g=he(O)}else break}return h}function ce(t,e,n,r,s,i,o,a){return{hash:t,origPath:e,origLine:n,finalLine:r,content:s,author:i.author,committer:i.committer,summary:i.message.split(`
13
- `)[0],boundary:o,previous:a}}var Ve=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(e){this.heap.push({entry:e,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:e}=this;if(e.length===0)return;let n=e[0],r=e.pop();return e.length>0&&(e[0]=r,this.siftDown(0)),n.entry}higher(e,n){let r=e.entry.commit.committer.timestamp,s=n.entry.commit.committer.timestamp;return r>s||r===s&&e.epoch<n.epoch}siftUp(e){let{heap:n}=this;for(;e>0;){let r=e-1>>1;if(!this.higher(n[e],n[r]))break;[n[r],n[e]]=[n[e],n[r]],e=r}}siftDown(e){let{heap:n}=this,r=n.length;for(;;){let s=e,i=2*e+1,o=2*e+2;if(i<r&&this.higher(n[i],n[s])&&(s=i),o<r&&this.higher(n[o],n[s])&&(s=o),s===e)break;[n[e],n[s]]=[n[s],n[e]],e=s}}};async function*we(t,e,n){if(n?.topoOrder){yield*Zr(t,e,n);return}let r=await En(t,n?.exclude),s=new Set(r),i=new Ve,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let c of a)s.has(c)||i.push(await Ke(t,c));for(;i.size>0;){let c=i.pop();if(s.has(c.hash)||(s.add(c.hash),yield c,o?.has(c.hash)))continue;let f=n?.firstParent?c.commit.parents.slice(0,1):c.commit.parents;for(let u of f)if(!s.has(u))try{i.push(await Ke(t,u))}catch{}}}async function*Zr(t,e,n){let r=await En(t,n?.exclude),s=new Set(r),i=new Ve,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let l of a)s.has(l)||i.push(await Ke(t,l));let c=[],f=new Map;for(;i.size>0;){let l=i.pop();if(s.has(l.hash)||(s.add(l.hash),f.set(l.hash,c.length),c.push(l),o?.has(l.hash)))continue;let m=n?.firstParent?l.commit.parents.slice(0,1):l.commit.parents;for(let g of m)if(!s.has(g))try{i.push(await Ke(t,g))}catch{}}let u=c.length;if(u===0)return;let h=new Int32Array(u);for(let l of c){let m=n?.firstParent?l.commit.parents.slice(0,1):l.commit.parents;for(let g of m){let p=f.get(g);p!==void 0&&(h[p]=(h[p]??0)+1)}}let d=[];for(let l=u-1;l>=0;l--)h[l]===0&&d.push(l);for(;d.length>0;){let l=d.pop();yield c[l];let m=n?.firstParent?c[l].commit.parents.slice(0,1):c[l].commit.parents;for(let g of m){let p=f.get(g);if(p!==void 0){let I=(h[p]??0)-1;h[p]=I,I===0&&d.push(p)}}}}async function On(t,e,n){if(e===n)return{ahead:0,behind:0};let r=new Set;for await(let a of we(t,e))r.add(a.hash);let s=new Set;for await(let a of we(t,n))s.add(a.hash);let i=0;for(let a of r)s.has(a)||i++;let o=0;for(let a of s)r.has(a)||o++;return{ahead:i,behind:o}}async function En(t,e){if(!e||e.length===0)return new Set;let n=new Set;for await(let r of we(t,e))n.add(r.hash);return n}async function Ke(t,e){return{hash:e,commit:await U(t,e)}}async function Qr(t,e){let n=new Set,r=[e],s=0;for(;s<r.length;){let i=r[s++];if(n.has(i))continue;n.add(i);let o;try{o=await U(t,i)}catch{continue}for(let a of o.parents)n.has(a)||r.push(a)}return n}async function Ot(t,e,n){if(e===n)return!0;let r=new Set,s=[n],i=0;for(;i<s.length;){let o=s[i++];if(o===e)return!0;if(r.has(o))continue;r.add(o);let a;try{a=await U(t,o)}catch{continue}for(let c of a.parents)r.has(c)||s.push(c)}return!1}async function $e(t,e,n){if(e===n)return[e];let r=await Qr(t,e),s=[],i=new Set,o=[n],a=0;for(;a<o.length;){let f=o[a++];if(i.has(f))continue;if(i.add(f),r.has(f)){s.push(f);continue}let u;try{u=await U(t,f)}catch{continue}for(let h of u.parents)i.has(h)||o.push(h)}if(s.length<=1)return s;let c=[];for(let f of s){let u=!1;for(let h of s)if(h!==f&&await Ot(t,f,h)){u=!0;break}u||c.push(f)}return c.length<=1?c:es(t,e,n,c)}async function es(t,e,n,r){let s=new Set(r),i=new Set,o=[],a=new Map,c=new Map,f=0,u=[{hash:e,mask:1,seq:f++},{hash:n,mask:2,seq:f++}];async function h(d){let l=c.get(d);if(l!==void 0)return l;let m=(await U(t,d)).committer.timestamp;return c.set(d,m),m}for(;u.length>0;){let d=0,l=await h(u[0].hash);for(let k=1;k<u.length;k++){let j=u[k],A=await h(j.hash),E=u[d];(A>l||A===l&&j.seq<E.seq)&&(d=k,l=A)}let m=u.splice(d,1)[0],g=a.get(m.hash)??0,p=g|m.mask;if(p===g)continue;if(a.set(m.hash,p),p===3&&s.has(m.hash)&&!i.has(m.hash)&&(o.push(m.hash),i.add(m.hash),i.size===s.size))break;let I=await U(t,m.hash);for(let k of I.parents)u.push({hash:k,mask:p,seq:f++})}for(let d of r)i.has(d)||o.push(d);return o}function Et(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:s,changedNew:i}=xt(t,e);return ts(s,n,i,r)}function ts(t,e,n,r){let s=[],i=0,o=0;for(;i<e||o<r;){for(;i<e&&o<r&&!t[i]&&!n[o];)i++,o++;if(i>=e&&o>=r)break;let a=i,c=o;for(;i<e&&t[i];)i++;for(;o<r&&n[o];)o++;(i>a||o>c)&&s.push({buffer1:[a,i-a],buffer2:[c,o-c]})}return s}function ns(t,e,n){let r=[];for(let c of Et(e,t))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of Et(e,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,f)=>c.oStart-f.oStart);let s=[],i=0;function o(c){c>i&&(s.push({stable:!0,buffer:"o",bufferStart:i,bufferLength:c-i,content:e.slice(i,c)}),i=c)}let a=0;for(;a<r.length;){let c=r[a++],f=c.oStart,u=c.oStart+c.oLength,h=[c];for(o(f);a<r.length;){let d=r[a];if(d.oStart>u)break;u=Math.max(u,d.oStart+d.oLength),h.push(d),a++}if(h.length===1){if(c.abLength>0){let d=c.ab==="a"?t:n;s.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:d.slice(c.abStart,c.abStart+c.abLength)})}}else{let d={a:{abMin:t.length,abMax:-1,oMin:e.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:e.length,oMax:-1}};for(let I of h){let k=I.oStart,j=k+I.oLength,A=I.abStart,E=A+I.abLength,y=d[I.ab];y.abMin=Math.min(A,y.abMin),y.abMax=Math.max(E,y.abMax),y.oMin=Math.min(k,y.oMin),y.oMax=Math.max(j,y.oMax)}let l=d.a.abMin+(f-d.a.oMin),m=d.a.abMax+(u-d.a.oMax),g=d.b.abMin+(f-d.b.oMin),p=d.b.abMax+(u-d.b.oMax);s.push({stable:!1,a:t.slice(l,m),o:e.slice(f,u),b:n.slice(g,p)})}i=u}return o(e.length),s}function rs(t,e,n,r){let s=r?.excludeFalseConflicts??!0,i=ns(t,e,n),o=[],a=[];function c(){a.length&&(o.push({type:"ok",lines:a}),a=[])}for(let f of i)f.stable?a.push(...f.content):s&&kn(f.a,f.b)?a.push(...f.a):(c(),o.push({type:"conflict",a:f.a,o:f.o,b:f.b}));return c(),r?.conflictStyle==="diff3"?Pn(o):Pn(ss(o))}function Le(t,e,n,r){let s=r?.markerSize??7,i=r?.conflictStyle??"merge",o=`${"<".repeat(s)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(s)}${r?.o?` ${r.o}`:""}`,c="=".repeat(s),f=`${">".repeat(s)}${r?.b?` ${r.b}`:""}`,u=rs(t,e,n,{conflictStyle:i}),h=!1,d=[];for(let l of u)l.type==="ok"?d.push(...l.lines):(h=!0,i==="diff3"?d.push(o,...l.a,a,...l.o,c,...l.b,f):d.push(o,...l.a,c,...l.b,f));return{conflict:h,result:d}}function ss(t){let e=[];for(let n of t)n.type==="ok"?e.push(n):e.push(...is(n));return e}function is(t){let{a:e,b:n}=t;if(e.length===0||n.length===0)return[t];if(kn(e,n))return[t];let r=Et(e,n);if(r.length===0)return[{type:"ok",lines:e}];let s=[],i=0;for(let a of r){let c=a.buffer1[0];c-i>0&&s.push({type:"ok",lines:e.slice(i,c)});let u=c+a.buffer1[1],h=a.buffer2[0]+a.buffer2[1];s.push({type:"conflict",a:e.slice(c,u),o:[],b:n.slice(a.buffer2[0],h)}),i=u}return e.length-i>0&&s.push({type:"ok",lines:e.slice(i)}),s.length===1&&s[0].type==="conflict"?[t]:s}function Pn(t){if(t.length<3)return t;let e=[t[0]];for(let r=1;r<t.length;r++){let s=e[e.length-1],i=t[r];s.type==="ok"&&i.type==="ok"?s.lines=[...s.lines,...i.lines]:e.push(i)}if(e.length<3)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let s=n[n.length-1],i=e[r];if(s.type==="conflict"&&i.type==="ok"&&i.lines.length<=3&&r+1<e.length&&e[r+1].type==="conflict"){let o=e[r+1],a=s;a.a=[...s.a,...i.lines,...o.a],a.b=[...s.b,...i.lines,...o.b],a.o=[...s.o,...i.lines,...o.o],r++}else n.push(i)}return n}function de(t,e,n,r){let s=Le(V(t),V(e),V(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),o=(s.result[s.result.length-1]??"").endsWith("\0"),a=s.result.map(Pt);return(a[a.length-1]??"").startsWith(">>>>>>>")||!o?`${a.join(`
10
+ `)):await this.fs.rm(n)}async walkRefs(e,n,r){let s=await this.fs.readdir(e);for(let i of s){let o=D(e,i),a=`${n}/${i}`,c=await this.fs.stat(o);if(c.isDirectory)await this.walkRefs(o,a,r);else if(c.isFile){let f=await this.resolveRefInternal(a);f&&r.push({name:a,hash:f})}}}};async function Ir(t,e){return t.refStore.readRef(e)}async function De(t,e){let n=e;for(let r=0;r<nn;r++){let s=await Ir(t,n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async function gt(t,e="refs"){return t.refStore.listRefs(e)}async function rn(t,e){let n=e.lastIndexOf("/");if(n>0){let r=e.slice(0,n);await t.mkdir(r,{recursive:!0})}}var Ni=new TextEncoder;function Q(t){return typeof t=="string"?t==="120000":t===40960}var Or=new TextEncoder,sn=new TextDecoder,Er=new Set(["100644","100755","040000","120000","160000"]);function Pr(t){return t.length===4&&t.toLowerCase()===".git"}function Rr(t,e){if(t.length===0)throw new Error("invalid tree entry: empty name");if(t.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${t}'`);if(t.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(t==="."||t==="..")throw new Error(`invalid tree entry: '${t}'`);if(Pr(t))throw new Error(`invalid tree entry: '${t}'`);if(!Er.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${t}'`)}function on(t){let e=[],n=0;for(;n<t.byteLength;){let r=t.indexOf(32,n);if(r===-1)break;let s=sn.decode(t.subarray(n,r)),i=t.indexOf(0,r+1);if(i===-1)break;let o=sn.decode(t.subarray(r+1,i)),a=t.subarray(i+1,i+21),c=ue(a),f=s.padStart(6,"0");Rr(o,f),e.push({mode:f,name:o,hash:c}),n=i+21}return{type:"tree",entries:e}}function He(t){let e=[];for(let i of t.entries){let o=i.mode.replace(/^0+/,""),a=Or.encode(`${o} ${i.name}\0`),c=Y(i.hash);e.push(a),e.push(c)}let n=e.reduce((i,o)=>i+o.byteLength,0),r=new Uint8Array(n),s=0;for(let i of e)r.set(i,s),s+=i.byteLength;return r}async function bt(t,e){return an(t,e,"")}async function an(t,e,n){let r=[],s=new Map;for(let o of e){let a=n?o.path.slice(n.length+1):o.path,c=a.indexOf("/");if(c===-1)r.push({mode:kr(o.mode),name:a,hash:o.hash});else{let f=a.slice(0,c),u=s.get(f);u||(u=[],s.set(f,u)),u.push(o)}}for(let[o,a]of s){let c=n?`${n}/${o}`:o,f=await an(t,a,c);r.push({mode:Te.DIRECTORY,name:o,hash:f})}r.sort((o,a)=>{let c=o.mode===Te.DIRECTORY?`${o.name}/`:o.name,f=a.mode===Te.DIRECTORY?`${a.name}/`:a.name;return c<f?-1:c>f?1:0});let i=He({type:"tree",entries:r});return _(t,"tree",i)}async function oe(t,e,n=""){let r=await q(t,e);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let s=on(r.content),i=[];for(let o of s.entries){let a=n?`${n}/${o.name}`:o.name;if(o.mode===Te.DIRECTORY){let c=await oe(t,o.hash,a);i.push(...c)}else i.push({path:a,mode:o.mode,hash:o.hash})}return i}async function ie(t,e){if(!e)return new Map;let n=await oe(t,e);return new Map(n.map(r=>[r.path,r]))}async function Ce(t,e,n){let r=await ie(t,e),s=await ie(t,n),i=[];for(let[o,a]of r){let c=s.get(o);c?(a.hash!==c.hash||a.mode!==c.mode)&&i.push({path:o,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):i.push({path:o,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[o,a]of s)r.has(o)||i.push({path:o,status:"added",newHash:a.hash,newMode:a.mode});return i.sort((o,a)=>je(o.path,a.path))}function kr(t){return t.toString(8).padStart(6,"0")}function cn(t){return{stdout:"",stderr:`fatal: ${t}
11
+ `,exitCode:128}}var Yi=cn("not a git repository (or any of the parent directories): .git"),Xi=cn("this operation must be run in a work tree");function je(t,e){return t<e?-1:t>e?1:0}function he(t){if(t.length===0)return[];let e=t.split(`
12
+ `);return e[e.length-1]===""&&e.pop(),e}var Sr=4,fn=1024,Ne=100,_e=0,Fe=1,be=2;function wt(t){let e=1;for(;e*e<t;)e++;return e}function Tr(t,e){let n=new Map,r=[],s=new Array(t.length),i=new Array(e.length);for(let o=0;o<t.length;o++){let a=t[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,s[o]=c}for(let o=0;o<e.length;o++){let a=e[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,i[o]=c}return{classes1:s,classes2:i,classInfo:r}}function Cr(t,e,n,r){let s=0,i=Math.min(e,r);for(;s<i&&t[s]===n[s];)s++;let o=s,a=0,c=i-o;for(;a<c&&t[e-1-a]===n[r-1-a];)a++;return{dstart:o,dend1:e-a-1,dend2:r-a-1}}function ln(t,e,n,r){e-n>Ne&&(n=e-Ne),r-e>Ne&&(r=e+Ne);let s=0,i=1;for(let c=1;e-c>=n;c++){let f=t[e-c];if(f===_e)s++;else if(f===be)i++;else break}if(s===0)return!1;let o=0,a=1;for(let c=1;e+c<=r;c++){let f=t[e+c];if(f===_e)o++;else if(f===be)a++;else break}return o===0?!1:(o+=s,a+=i,a*Sr<a+o)}function jr(t,e,n,r,s,i,o,a,c,f){let u=new Uint8Array(e),h=new Uint8Array(r),d=Math.min(wt(e),fn);for(let p=i;p<=o;p++){let w=s[t[p]].len2;w===0?u[p]=_e:w>=d?u[p]=be:u[p]=Fe}let l=Math.min(wt(r),fn);for(let p=i;p<=a;p++){let w=s[n[p]].len1;w===0?h[p]=_e:w>=l?h[p]=be:h[p]=Fe}let m=[];for(let p=i;p<=o;p++)u[p]===Fe||u[p]===be&&!ln(u,p,i,o)?m.push(p):c[p]=1;let g=[];for(let p=i;p<=a;p++)h[p]===Fe||h[p]===be&&!ln(h,p,i,a)?g.push(p):f[p]=1;return{refIndex1:m,nreff1:m.length,refIndex2:g,nreff2:g.length}}var ae=20,un=4,Ar=256,$r=256,Ge=2147483647;function W(t,e){return t[e]??0}function Lr(t,e,n,r,s,i,o,a,c,f){let u=e-i,h=n-s,d=e-s,l=n-i,m=d-l&1,g=d,p=d,w=l,R=l;o[d]=e,a[l]=n;for(let j=1;;j++){let A=!1;g>u?o[--g-1]=-1:++g,p<h?o[++p+1]=-1:--p;for(let E=p;E>=g;E-=2){let y;W(o,E-1)>=W(o,E+1)?y=W(o,E-1)+1:y=W(o,E+1);let O=y,T=y-E;for(;y<n&&T<i&&t[y]===r[T];)y++,T++;if(y-O>ae&&(A=!0),o[E]=y,m&&w<=E&&E<=R&&W(a,E)<=y)return{i1:y,i2:T,minLo:!0,minHi:!0}}w>u?a[--w-1]=Ge:++w,R<h?a[++R+1]=Ge:--R;for(let E=R;E>=w;E-=2){let y;W(a,E-1)<W(a,E+1)?y=W(a,E-1):y=W(a,E+1)-1;let O=y,T=y-E;for(;y>e&&T>s&&t[y-1]===r[T-1];)y--,T--;if(O-y>ae&&(A=!0),a[E]=y,!m&&g<=E&&E<=p&&y<=W(o,E))return{i1:y,i2:T,minLo:!0,minHi:!0}}if(!c){if(A&&j>Ar){let E=0,y=null;for(let O=p;O>=g;O-=2){let T=O>d?O-d:d-O,I=W(o,O),P=I-O,S=I-e+(P-s)-T;if(S>un*j&&S>E&&e+ae<=I&&I<n&&s+ae<=P&&P<i){let $=!0;for(let v=1;v<=ae;v++)if(t[I-v]!==r[P-v]){$=!1;break}$&&(E=S,y={i1:I,i2:P,minLo:!0,minHi:!1})}}if(y)return y;E=0,y=null;for(let O=R;O>=w;O-=2){let T=O>l?O-l:l-O,I=W(a,O),P=I-O,S=n-I+(i-P)-T;if(S>un*j&&S>E&&e<I&&I<=n-ae&&s<P&&P<=i-ae){let $=!0;for(let v=0;v<ae;v++)if(t[I+v]!==r[P+v]){$=!1;break}$&&(E=S,y={i1:I,i2:P,minLo:!1,minHi:!0})}}if(y)return y}if(j>=f){let E=-1,y=-1;for(let I=p;I>=g;I-=2){let P=Math.min(W(o,I),n),S=P-I;i<S&&(P=i+I,S=i),E<P+S&&(E=P+S,y=P)}let O=Ge,T=Ge;for(let I=R;I>=w;I-=2){let P=Math.max(e,W(a,I)),S=P-I;S<s&&(P=s+I,S=s),P+S<O&&(O=P+S,T=P)}return n+i-O<E-(e+s)?{i1:y,i2:E-y,minLo:!0,minHi:!1}:{i1:T,i2:O-T,minLo:!1,minHi:!0}}}}}function xt(t,e,n,r,s,i,o,a,c,f,u,h,d,l){for(;e<n&&s<i&&t[e]===r[s];)e++,s++;for(;e<n&&s<i&&t[n-1]===r[i-1];)n--,i--;if(e===n)for(let m=s;m<i;m++)a[f[m]]=1;else if(s===i)for(let m=e;m<n;m++)o[c[m]]=1;else{let m=Lr(t,e,n,r,s,i,u,h,d,l);xt(t,e,m.i1,r,s,m.i2,o,a,c,f,u,h,m.minLo,l),xt(t,m.i1,n,r,m.i2,i,o,a,c,f,u,h,m.minHi,l)}}function Mr(t,e,n,r){let s=[],i=0,o=0,a=1,c=1;for(;i<t.length||o<e.length;){if(i<t.length&&o<e.length&&!n[i]&&!r[o]){s.push({type:"keep",line:t[i]??"",oldLineNo:a++,newLineNo:c++}),i++,o++;continue}for(;i<t.length&&n[i];)s.push({type:"delete",line:t[i]??"",oldLineNo:a++,newLineNo:0}),i++;for(;o<e.length&&r[o];)s.push({type:"insert",line:e[o]??"",oldLineNo:0,newLineNo:c++}),o++}return s}var hn=200,dn=20,mn=100,vr=1,Ur=21,Br=-30,Dr=6,Hr=-4,Nr=10,Fr=24,Gr=17,_r=23,Wr=17,zr=60;function yt(t){let e=0;for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r===32)e+=1;else if(r===9)e+=8-e%8;else if(!(r===10||r===13||r===11||r===12))return e;if(e>=hn)return hn}return-1}function pn(t,e,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=e?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=yt(t[n]));for(let s=n-1;s>=0&&(r.preIndent=yt(t[s]),r.preIndent===-1);s--)if(r.preBlank+=1,r.preBlank===dn){r.preIndent=0;break}for(let s=n+1;s<e&&(r.postIndent=yt(t[s]),r.postIndent===-1);s++)if(r.postBlank+=1,r.postBlank===dn){r.postIndent=0;break}return r}function gn(t,e){t.preIndent===-1&&t.preBlank===0&&(e.penalty+=vr),t.endOfFile&&(e.penalty+=Ur);let n=t.indent===-1?1+t.postBlank:0,r=t.preBlank+n;e.penalty+=Br*r,e.penalty+=Dr*n;let s=t.indent!==-1?t.indent:t.postIndent,i=r!==0;e.effectiveIndent+=s,s===-1||t.preIndent===-1||(s>t.preIndent?e.penalty+=i?Nr:Hr:s===t.preIndent||(t.postIndent!==-1&&t.postIndent>s?e.penalty+=i?Gr:Fr:e.penalty+=i?Wr:_r))}function Vr(t,e){let n=(t.effectiveIndent>e.effectiveIndent?1:0)-(t.effectiveIndent<e.effectiveIndent?1:0);return zr*n+(t.penalty-e.penalty)}function bn(t,e,n,r,s,i){let o=0,a=0;for(;t[a];)a++;let c=0,f=0;for(;s[f];)f++;let u=(h,d)=>e[h]===e[d];for(;;){if(a!==o){let h,d,l;do{for(h=a-o,d=-1;o>0&&u(o-1,a-1);){for(t[--o]=1,t[--a]=0;t[o-1];)o--;if(c===0)break;for(f=c-1,c=f;s[c-1];c--);}for(l=a,f>c&&(d=a);!(a>=r||!u(o,a));){for(t[o++]=0,t[a++]=1;t[a];)a++;if(f>=i)break;for(c=f+1,f=c;s[f];f++);f>c&&(d=a)}}while(h!==a-o);if(a!==l)if(d!==-1)for(;f===c;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(f=c-1,c=f;s[c-1];c--);}else{let m=-1,g={effectiveIndent:0,penalty:0},p=l;for(a-h-1>p&&(p=a-h-1),a-mn>p&&(p=a-mn);p<=a;p++){let w={effectiveIndent:0,penalty:0},R=pn(n,r,p);gn(R,w);let j=pn(n,r,p-h);gn(j,w),(m===-1||Vr(w,g)<=0)&&(g={effectiveIndent:w.effectiveIndent,penalty:w.penalty},m=p)}for(;a>m;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(f=c-1,c=f;s[c-1];c--);}}}if(a>=r)break;for(o=a+1,a=o;t[a];a++);if(f>=i)break;for(c=f+1,f=c;s[f];f++);}}function It(t,e){let n=t.length,r=e.length,s=new Uint8Array(n),i=new Uint8Array(r);if(n>0&&r>0){let{classes1:o,classes2:a,classInfo:c}=Tr(t,e),{dstart:f,dend1:u,dend2:h}=Cr(o,n,a,r);if(f>u)for(let d=f;d<r-(n-1-u);d++)i[d]=1;else if(f>h)for(let d=f;d<n-(r-1-h);d++)s[d]=1;else{let{refIndex1:d,nreff1:l,refIndex2:m,nreff2:g}=jr(o,n,a,r,c,f,u,h,s,i);if(l>0&&g>0){let p=new Array(l);for(let y=0;y<l;y++)p[y]=o[d[y]];let w=new Array(g);for(let y=0;y<g;y++)w[y]=a[m[y]];let R={},j={},A=l+g+3,E=Math.max($r,wt(A));xt(p,0,l,w,0,g,s,i,d,m,R,j,!1,E)}else if(l===0)for(let p=0;p<g;p++)i[m[p]]=1;else for(let p=0;p<l;p++)s[d[p]]=1;bn(s,o,t,n,i,r),bn(i,a,e,r,s,n)}}else n===0?i.fill(1):s.fill(1);return{changedOld:s,changedNew:i}}function We(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return e.map((o,a)=>({type:"insert",line:o,oldLineNo:0,newLineNo:a+1}));if(r===0)return t.map((o,a)=>({type:"delete",line:o,oldLineNo:a+1,newLineNo:0}));let{changedOld:s,changedNew:i}=It(t,e);return Mr(t,e,s,i)}function ye(t){let e=t.lastIndexOf("/");return e>=0?t.slice(e+1):t}function Kr(t,e){if(t.length===0)return;if(t.length===1)return t.shift();let n=ye(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];if(i&&ye(i.path)===n){r=s;break}}return t.splice(r,1)[0]}var qr=50;async function Ae(t,e,n=qr){let r=new Map,s=[],i=[],o=[];for(let u of e)if(u.status==="deleted"&&u.oldHash){let h=r.get(u.oldHash)??[];h.push(u),r.set(u.oldHash,h),s.push(u)}else u.status==="added"&&u.newHash?i.push(u):o.push(u);let a=[],c=[];for(let u of i){let h=u.newHash;if(!h){c.push(u);continue}let d=r.get(h);if(d&&d.length>0){let l=Kr(d,u.path);l&&a.push({oldPath:l.path,newPath:u.path,oldHash:l.oldHash??h,newHash:h,similarity:100,oldMode:l.oldMode,newMode:u.newMode})}else c.push(u)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let u=await Yr(t,f,c,n);if(u.length>0){let h=new Set(u.map(l=>l.oldPath)),d=new Set(u.map(l=>l.newPath));f=f.filter(l=>!h.has(l.path)),c=c.filter(l=>!d.has(l.path)),a.push(...u)}}if(f.length>0&&c.length>0){let u=await Zr(t,f,c,n);if(u.length>0){let h=new Set(u.map(l=>l.oldPath)),d=new Set(u.map(l=>l.newPath));f=f.filter(l=>!h.has(l.path)),c=c.filter(l=>!d.has(l.path)),a.push(...u)}}return{remaining:[...o,...f,...c],renames:a}}async function Yr(t,e,n,r){let s=new Map;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let f=ye(c.path);s.has(f)?s.set(f,-1):s.set(f,a)}let i=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let f=ye(c.path);i.has(f)?i.set(f,-1):i.set(f,a)}let o=[];for(let[a,c]of s){if(c===-1)continue;let f=i.get(a);if(f===void 0||f===-1)continue;let u=e[c],h=n[f];if(!u?.oldHash||!h?.newHash||u.oldHash===h.newHash)continue;let d=await te(t,u.oldHash),l=await te(t,h.newHash),m=Jr(d,l);m<r||o.push({oldPath:u.path,newPath:h.path,oldHash:u.oldHash,newHash:h.newHash,similarity:m,oldMode:u.oldMode,newMode:h.newMode})}return o}var yn=107927;function ze(t){let e=new Map,n=0,r=0,s=0;for(let o=0;o<t.length;o++){let a=t[o],c=r;if(r=(r<<7^s>>>25)>>>0,s=(s<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let f=(r+Math.imul(s,97))%yn;e.set(f,(e.get(f)??0)+n),n=0,r=0,s=0}if(n>0){let o=(r+Math.imul(s,97))%yn;e.set(o,(e.get(o)??0)+n)}let i=[];for(let[o,a]of e)i.push({hash:o,count:a});return i.sort((o,a)=>o.hash-a.hash),i}function Xr(t,e){let n=0,r=0,s=0,i=0;for(;s<t.length;){let o=t[s];if(!o)break;for(;i<e.length;){let f=e[i];if(!f||f.hash>=o.hash)break;r+=f.count,i++}let a=o.count,c=0;if(i<e.length){let f=e[i];f&&f.hash===o.hash&&(c=f.count,i++)}a<c?(r+=c-a,n+=a):n+=c,s++}for(;i<e.length;){let o=e[i];o&&(r+=o.count),i++}return{srcCopied:n,literalAdded:r}}function Jr(t,e){return t.length===0&&e.length===0?100:t.length===0||e.length===0?0:wn(t.length,ze(t),e.length,ze(e))}function wn(t,e,n,r){let s=Math.max(t,n),i=Math.min(t,n);if(i<s-i)return 0;let{srcCopied:o}=Xr(e,r);return Math.floor(o*100/s)}async function Zr(t,e,n,r){let s=[];for(let u of e)if(u.oldHash){let h=await te(t,u.oldHash);s.push({size:h.length,chunks:ze(h)})}else s.push(null);let i=[];for(let u of n)if(u.newHash){let h=await te(t,u.newHash);i.push({size:h.length,chunks:ze(h)})}else i.push(null);let o=[];for(let u=0;u<e.length;u++){let h=e[u],d=s[u];if(!(!h||!d))for(let l=0;l<n.length;l++){let m=n[l],g=i[l];if(!m||!g)continue;let p=wn(d.size,d.chunks,g.size,g.chunks);if(p>=r){let w=ye(h.path)===ye(m.path)?1:0;o.push({similarity:p,nameScore:w,delIdx:u,addIdx:l})}}}o.sort((u,h)=>h.similarity-u.similarity||h.nameScore-u.nameScore);let a=new Set,c=new Set,f=[];for(let{similarity:u,delIdx:h,addIdx:d}of o){if(a.has(h)||c.has(d))continue;a.add(h),c.add(d);let l=e[h],m=n[d];!l||!m||f.push({oldPath:l.path,newPath:m.path,oldHash:l.oldHash??"",newHash:m.newHash??"",similarity:u,oldMode:l.oldMode,newMode:m.newMode})}return f}async function ce(t,e,n){return(await ie(t,e)).get(n)?.hash??null}async function xn(t,e,n,r){let s=await Ce(t,e,n);if(!s.find(c=>c.status==="added"&&c.path===r))return null;let{renames:o}=await Ae(t,s);return o.find(c=>c.newPath===r)?.oldPath??null}async function Qr(t,e,n,r,s,i){let o=await ce(t,(await U(t,e)).tree,n);if(!o){let g=new Map,p=await U(t,e);for(let w of r)g.set(w.finalIdx,fe(e,n,w.currentLine,i+w.finalIdx,s[w.finalIdx],p,!1,void 0));return g}let a=await H(t,o),c=he(a),f=new Array(s.length),u=[...r],h=e,d=n,l=c;for(;u.length>0;){let g=await U(t,h);if(g.parents.length===0){for(let I of u)f[I.finalIdx]=fe(h,d,I.currentLine,i+I.finalIdx,s[I.finalIdx],g,!0,void 0);break}let p=await ce(t,g.tree,d),w=null,R=[];for(let I of g.parents){let P=await U(t,I),S=d,$=await ce(t,P.tree,S);if(!$){let v=await xn(t,P.tree,g.tree,d);v&&(S=v,$=await ce(t,P.tree,S))}if($&&(R.push({hash:I,path:S,blobHash:$}),$===p)){w={hash:I,path:S};break}}if(w){h=w.hash,d=w.path;continue}if(R.length===0){for(let I of u)f[I.finalIdx]=fe(h,d,I.currentLine,i+I.finalIdx,s[I.finalIdx],g,!1,void 0);break}let j=R[0],A=await H(t,j.blobHash),E=he(A),y=We(E,l),O=new Map;for(let I of y)I.type==="keep"&&O.set(I.newLineNo,I.oldLineNo);let T=[];for(let I of u){let P=O.get(I.currentLine);P!==void 0?T.push({finalIdx:I.finalIdx,currentLine:P}):f[I.finalIdx]=fe(h,d,I.currentLine,i+I.finalIdx,s[I.finalIdx],g,!1,{hash:j.hash,path:j.path})}u=T,h=j.hash,d=j.path,l=E}let m=new Map;for(let g of r)f[g.finalIdx]&&m.set(g.finalIdx,f[g.finalIdx]);return m}async function In(t,e,n,r){let s=await U(t,e),i=await ce(t,s.tree,n);if(!i)throw new Error(`no such path '${n}' in ${e.slice(0,7)}`);let o=await H(t,i),a=he(o),c=r?.startLine??1,f=r?.endLine??a.length,u=a.slice(c-1,f),h=new Array(u.length),d=u.map((p,w)=>({finalIdx:w,currentLine:c+w})),l=e,m=n,g=a;for(;d.length>0;){let p=await U(t,l);if(p.parents.length===0){for(let O of d)h[O.finalIdx]=fe(l,m,O.currentLine,c+O.finalIdx,u[O.finalIdx],p,!0,void 0);break}let w=await ce(t,p.tree,m),R=[],j=null;for(let O of p.parents){let T=await U(t,O),I=m,P=await ce(t,T.tree,I);if(!P){let S=await xn(t,T.tree,p.tree,m);S&&(I=S,P=await ce(t,T.tree,I))}if(P){let S={hash:O,path:I,blobHash:P};if(R.push(S),P===w){j=S;break}}}if(j){l=j.hash,m=j.path;continue}if(R.length===0){for(let O of d)h[O.finalIdx]=fe(l,m,O.currentLine,c+O.finalIdx,u[O.finalIdx],p,!1,void 0);break}if(R.length===1){let O=R[0],T=await H(t,O.blobHash),I=he(T),P=We(I,g),S=new Map;for(let v of P)v.type==="keep"&&S.set(v.newLineNo,v.oldLineNo);let $=[];for(let v of d){let ne=S.get(v.currentLine);ne!==void 0?$.push({finalIdx:v.finalIdx,currentLine:ne}):h[v.finalIdx]=fe(l,m,v.currentLine,c+v.finalIdx,u[v.finalIdx],p,!1,{hash:O.hash,path:O.path})}d=$,l=O.hash,m=O.path,g=I;continue}let A=[];for(let O of R){let T=await H(t,O.blobHash),I=he(T),P=We(I,g),S=new Map;for(let $ of P)$.type==="keep"&&S.set($.newLineNo,$.oldLineNo);A.push({info:O,newToOld:S})}let E=new Map;for(let O of d){let T=!1;for(let I=0;I<A.length;I++){let P=A[I],S=P.newToOld.get(O.currentLine);if(S!==void 0){let $=E.get(I);$||($={info:P.info,lines:[]},E.set(I,$)),$.lines.push({finalIdx:O.finalIdx,currentLine:S}),T=!0;break}}T||(h[O.finalIdx]=fe(l,m,O.currentLine,c+O.finalIdx,u[O.finalIdx],p,!1,{hash:R[0].hash,path:R[0].path}))}let y=E.get(0);for(let[O,T]of E){if(O===0)continue;let I=await Qr(t,T.info.hash,T.info.path,T.lines,u,c);for(let[P,S]of I)h[P]=S}if(y&&y.lines.length>0){d=y.lines,l=y.info.hash,m=y.info.path;let O=await H(t,y.info.blobHash);g=he(O)}else break}return h}function fe(t,e,n,r,s,i,o,a){return{hash:t,origPath:e,origLine:n,finalLine:r,content:s,author:i.author,committer:i.committer,summary:i.message.split(`
13
+ `)[0],boundary:o,previous:a}}function es(t){let e=Math.min(t.length,8e3),n=0;for(let r=0;r<e;r++)t.charCodeAt(r)===0&&n++;return n>e*.01}function On(t,e,n,r){if(es(t)){let o=e.some(a=>a.test(t));return{matches:[],binary:o}}let s=t.split(`
14
+ `);if(s.length>0&&s[s.length-1]===""&&s.pop(),n&&e.length>1&&!e.every(a=>s.some(c=>a.test(c))))return{matches:[],binary:!1};let i=[];for(let o=0;o<s.length;o++){let a=s[o],c=e.some(f=>f.test(a));(r?!c:c)&&i.push({lineNo:o+1,line:a})}return{matches:i,binary:!1}}function ts(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function En(t,e){let n=e?.fixed?ts(t):t;e?.wordRegexp&&(n=`\\b${n}\\b`);let r=e?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}var Ve=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(e){this.heap.push({entry:e,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:e}=this;if(e.length===0)return;let n=e[0],r=e.pop();return e.length>0&&(e[0]=r,this.siftDown(0)),n.entry}higher(e,n){let r=e.entry.commit.committer.timestamp,s=n.entry.commit.committer.timestamp;return r>s||r===s&&e.epoch<n.epoch}siftUp(e){let{heap:n}=this;for(;e>0;){let r=e-1>>1;if(!this.higher(n[e],n[r]))break;[n[r],n[e]]=[n[e],n[r]],e=r}}siftDown(e){let{heap:n}=this,r=n.length;for(;;){let s=e,i=2*e+1,o=2*e+2;if(i<r&&this.higher(n[i],n[s])&&(s=i),o<r&&this.higher(n[o],n[s])&&(s=o),s===e)break;[n[e],n[s]]=[n[s],n[e]],e=s}}};async function*we(t,e,n){if(n?.topoOrder){yield*ns(t,e,n);return}let r=await Rn(t,n?.exclude),s=new Set(r),i=new Ve,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let c of a)s.has(c)||i.push(await Ke(t,c));for(;i.size>0;){let c=i.pop();if(s.has(c.hash)||(s.add(c.hash),yield c,o?.has(c.hash)))continue;let f=n?.firstParent?c.commit.parents.slice(0,1):c.commit.parents;for(let u of f)if(!s.has(u))try{i.push(await Ke(t,u))}catch{}}}async function*ns(t,e,n){let r=await Rn(t,n?.exclude),s=new Set(r),i=new Ve,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let l of a)s.has(l)||i.push(await Ke(t,l));let c=[],f=new Map;for(;i.size>0;){let l=i.pop();if(s.has(l.hash)||(s.add(l.hash),f.set(l.hash,c.length),c.push(l),o?.has(l.hash)))continue;let m=n?.firstParent?l.commit.parents.slice(0,1):l.commit.parents;for(let g of m)if(!s.has(g))try{i.push(await Ke(t,g))}catch{}}let u=c.length;if(u===0)return;let h=new Int32Array(u);for(let l of c){let m=n?.firstParent?l.commit.parents.slice(0,1):l.commit.parents;for(let g of m){let p=f.get(g);p!==void 0&&(h[p]=(h[p]??0)+1)}}let d=[];for(let l=u-1;l>=0;l--)h[l]===0&&d.push(l);for(;d.length>0;){let l=d.pop();yield c[l];let m=n?.firstParent?c[l].commit.parents.slice(0,1):c[l].commit.parents;for(let g of m){let p=f.get(g);if(p!==void 0){let w=(h[p]??0)-1;h[p]=w,w===0&&d.push(p)}}}}async function Pn(t,e,n){if(e===n)return{ahead:0,behind:0};let r=new Set;for await(let a of we(t,e))r.add(a.hash);let s=new Set;for await(let a of we(t,n))s.add(a.hash);let i=0;for(let a of r)s.has(a)||i++;let o=0;for(let a of s)r.has(a)||o++;return{ahead:i,behind:o}}async function Rn(t,e){if(!e||e.length===0)return new Set;let n=new Set;for await(let r of we(t,e))n.add(r.hash);return n}async function Ke(t,e){return{hash:e,commit:await U(t,e)}}async function rs(t,e){let n=new Set,r=[e],s=0;for(;s<r.length;){let i=r[s++];if(n.has(i))continue;n.add(i);let o;try{o=await U(t,i)}catch{continue}for(let a of o.parents)n.has(a)||r.push(a)}return n}async function Ot(t,e,n){if(e===n)return!0;let r=new Set,s=[n],i=0;for(;i<s.length;){let o=s[i++];if(o===e)return!0;if(r.has(o))continue;r.add(o);let a;try{a=await U(t,o)}catch{continue}for(let c of a.parents)r.has(c)||s.push(c)}return!1}async function $e(t,e,n){if(e===n)return[e];let r=await rs(t,e),s=[],i=new Set,o=[n],a=0;for(;a<o.length;){let f=o[a++];if(i.has(f))continue;if(i.add(f),r.has(f)){s.push(f);continue}let u;try{u=await U(t,f)}catch{continue}for(let h of u.parents)i.has(h)||o.push(h)}if(s.length<=1)return s;let c=[];for(let f of s){let u=!1;for(let h of s)if(h!==f&&await Ot(t,f,h)){u=!0;break}u||c.push(f)}return c.length<=1?c:ss(t,e,n,c)}async function ss(t,e,n,r){let s=new Set(r),i=new Set,o=[],a=new Map,c=new Map,f=0,u=[{hash:e,mask:1,seq:f++},{hash:n,mask:2,seq:f++}];async function h(d){let l=c.get(d);if(l!==void 0)return l;let m=(await U(t,d)).committer.timestamp;return c.set(d,m),m}for(;u.length>0;){let d=0,l=await h(u[0].hash);for(let R=1;R<u.length;R++){let j=u[R],A=await h(j.hash),E=u[d];(A>l||A===l&&j.seq<E.seq)&&(d=R,l=A)}let m=u.splice(d,1)[0],g=a.get(m.hash)??0,p=g|m.mask;if(p===g)continue;if(a.set(m.hash,p),p===3&&s.has(m.hash)&&!i.has(m.hash)&&(o.push(m.hash),i.add(m.hash),i.size===s.size))break;let w=await U(t,m.hash);for(let R of w.parents)u.push({hash:R,mask:p,seq:f++})}for(let d of r)i.has(d)||o.push(d);return o}function Et(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:s,changedNew:i}=It(t,e);return is(s,n,i,r)}function is(t,e,n,r){let s=[],i=0,o=0;for(;i<e||o<r;){for(;i<e&&o<r&&!t[i]&&!n[o];)i++,o++;if(i>=e&&o>=r)break;let a=i,c=o;for(;i<e&&t[i];)i++;for(;o<r&&n[o];)o++;(i>a||o>c)&&s.push({buffer1:[a,i-a],buffer2:[c,o-c]})}return s}function os(t,e,n){let r=[];for(let c of Et(e,t))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of Et(e,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,f)=>c.oStart-f.oStart);let s=[],i=0;function o(c){c>i&&(s.push({stable:!0,buffer:"o",bufferStart:i,bufferLength:c-i,content:e.slice(i,c)}),i=c)}let a=0;for(;a<r.length;){let c=r[a++],f=c.oStart,u=c.oStart+c.oLength,h=[c];for(o(f);a<r.length;){let d=r[a];if(d.oStart>u)break;u=Math.max(u,d.oStart+d.oLength),h.push(d),a++}if(h.length===1){if(c.abLength>0){let d=c.ab==="a"?t:n;s.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:d.slice(c.abStart,c.abStart+c.abLength)})}}else{let d={a:{abMin:t.length,abMax:-1,oMin:e.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:e.length,oMax:-1}};for(let w of h){let R=w.oStart,j=R+w.oLength,A=w.abStart,E=A+w.abLength,y=d[w.ab];y.abMin=Math.min(A,y.abMin),y.abMax=Math.max(E,y.abMax),y.oMin=Math.min(R,y.oMin),y.oMax=Math.max(j,y.oMax)}let l=d.a.abMin+(f-d.a.oMin),m=d.a.abMax+(u-d.a.oMax),g=d.b.abMin+(f-d.b.oMin),p=d.b.abMax+(u-d.b.oMax);s.push({stable:!1,a:t.slice(l,m),o:e.slice(f,u),b:n.slice(g,p)})}i=u}return o(e.length),s}function as(t,e,n,r){let s=r?.excludeFalseConflicts??!0,i=os(t,e,n),o=[],a=[];function c(){a.length&&(o.push({type:"ok",lines:a}),a=[])}for(let f of i)f.stable?a.push(...f.content):s&&Sn(f.a,f.b)?a.push(...f.a):(c(),o.push({type:"conflict",a:f.a,o:f.o,b:f.b}));return c(),r?.conflictStyle==="diff3"?kn(o):kn(cs(o))}function Le(t,e,n,r){let s=r?.markerSize??7,i=r?.conflictStyle??"merge",o=`${"<".repeat(s)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(s)}${r?.o?` ${r.o}`:""}`,c="=".repeat(s),f=`${">".repeat(s)}${r?.b?` ${r.b}`:""}`,u=as(t,e,n,{conflictStyle:i}),h=!1,d=[];for(let l of u)l.type==="ok"?d.push(...l.lines):(h=!0,i==="diff3"?d.push(o,...l.a,a,...l.o,c,...l.b,f):d.push(o,...l.a,c,...l.b,f));return{conflict:h,result:d}}function cs(t){let e=[];for(let n of t)n.type==="ok"?e.push(n):e.push(...fs(n));return e}function fs(t){let{a:e,b:n}=t;if(e.length===0||n.length===0)return[t];if(Sn(e,n))return[t];let r=Et(e,n);if(r.length===0)return[{type:"ok",lines:e}];let s=[],i=0;for(let a of r){let c=a.buffer1[0];c-i>0&&s.push({type:"ok",lines:e.slice(i,c)});let u=c+a.buffer1[1],h=a.buffer2[0]+a.buffer2[1];s.push({type:"conflict",a:e.slice(c,u),o:[],b:n.slice(a.buffer2[0],h)}),i=u}return e.length-i>0&&s.push({type:"ok",lines:e.slice(i)}),s.length===1&&s[0].type==="conflict"?[t]:s}function kn(t){if(t.length<3)return t;let e=[t[0]];for(let r=1;r<t.length;r++){let s=e[e.length-1],i=t[r];s.type==="ok"&&i.type==="ok"?s.lines=[...s.lines,...i.lines]:e.push(i)}if(e.length<3)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let s=n[n.length-1],i=e[r];if(s.type==="conflict"&&i.type==="ok"&&i.lines.length<=3&&r+1<e.length&&e[r+1].type==="conflict"){let o=e[r+1],a=s;a.a=[...s.a,...i.lines,...o.a],a.b=[...s.b,...i.lines,...o.b],a.o=[...s.o,...i.lines,...o.o],r++}else n.push(i)}return n}function de(t,e,n,r){let s=Le(V(t),V(e),V(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),o=(s.result[s.result.length-1]??"").endsWith("\0"),a=s.result.map(Pt);return(a[a.length-1]??"").startsWith(">>>>>>>")||!o?`${a.join(`
14
15
  `)}
15
16
  `:a.join(`
16
17
  `)}function V(t){if(t==="")return[];let e=t.split(`
17
- `);if(e[e.length-1]==="")e.pop();else{let n=e[e.length-1]??"";e[e.length-1]=`${n}\0`}return e}function Pt(t){return t.endsWith("\0")?t.slice(0,-1):t}function kn(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var Ie=new TextDecoder,fe=new TextEncoder,Rn={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function xe(t,e,n,r,s){let{paths:i,baseMap:o,oursMap:a,theirsMap:c}=await os(t,e,n,r),f=await cs(t,i,o,a,c,s);return fs(t,i,s,f)}async function Ln(t,e,n,r){let s=await $e(t,e,n),i=await U(t,e),o=await U(t,n);if(s.length===0)return{...await xe(t,null,i.tree,o.tree,r),baseTree:null};if(s.length===1){let f=await U(t,s[0]);return{...await xe(t,f.tree,i.tree,o.tree,r),baseTree:f.tree}}let a=await vn(t,e,n,s,1);return{...await xe(t,a,i.tree,o.tree,r),baseTree:a}}async function os(t,e,n,r){let s=await ie(t,e),i=await ie(t,n),o=await ie(t,r),a=new Set;for(let f of s.keys())a.add(f);for(let f of i.keys())a.add(f);for(let f of o.keys())a.add(f);let c=new Map;for(let f of a){let u=s.get(f)??null,h=i.get(f)??null,d=o.get(f)??null,l=u?{hash:u.hash,mode:u.mode}:null,m=h?{hash:h.hash,mode:h.mode}:null,g=d?{hash:d.hash,mode:d.mode}:null,p=(u?1:0)|(h?2:0)|(d?4:0),I=u?.hash??null,k=h?.hash??null,j=d?.hash??null,A=0;I!==null&&I===k&&(A|=3),I!==null&&I===j&&(A|=5),k!==null&&k===j&&(A|=6);let E={path:f,stages:[l,m,g],pathnames:[f,f,f],filemask:p,matchMask:A,merged:{result:null,clean:!1},pathConflict:!1};if(as(E)){c.set(f,E);continue}c.set(f,E)}return{paths:c,baseMap:s,oursMap:i,theirsMap:o}}function as(t){let[e,n,r]=t.stages,s=e?.hash??null,i=n?.hash??null,o=r?.hash??null;return i===s&&o===s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===o&&i!==null?(t.merged={result:{hash:i,mode:n.mode},clean:!0},!0):i===null&&o===null?(t.merged={result:null,clean:!0},!0):o===s&&i!==s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===s&&o!==s?(r?t.merged={result:{hash:o,mode:r.mode},clean:!0}:t.merged={result:null,clean:!0},!0):!1}async function cs(t,e,n,r,s,i){let o={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[w,b]of n)r.has(w)||a.push({path:w,status:"deleted",oldHash:b.hash,oldMode:b.mode}),s.has(w)||c.push({path:w,status:"deleted",oldHash:b.hash,oldMode:b.mode});for(let[w,b]of r)n.has(w)||a.push({path:w,status:"added",newHash:b.hash,newMode:b.mode});for(let[w,b]of s)n.has(w)||c.push({path:w,status:"added",newHash:b.hash,newMode:b.mode});let f=await Ae(t,a),u=await Ae(t,c);if(f.renames.length===0&&u.renames.length===0)return o;let h=new Map,d=new Map;for(let w of f.renames)h.set(w.oldPath,w);for(let w of u.renames)d.set(w.oldPath,w);let l=new Set;for(let[w]of r)!n.has(w)&&s.has(w)&&l.add(w);let m=new Set,g=i?.a??"HEAD",p=i?.b??"theirs";function I(w,b,R=0){o.msgBuf.push({sortKey:w,subOrder:R,text:b})}for(let w of[...n.keys()].sort()){let b=h.get(w),R=d.get(w);if(!b&&!R)continue;let M=n.get(w);if(m.add(w),b&&R)if(m.add(b.newPath),m.add(R.newPath),b.newPath===R.newPath){let L=r.get(b.newPath),C=s.get(R.newPath);if(L.hash===C.hash)o.entries.push(z(b.newPath,L));else{let N=kt(e,b.newPath);N.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],N.pathnames=[w,b.newPath,R.newPath],N.filemask=7,N.merged={result:null,clean:!1}}}else{let L=r.get(b.newPath),C=s.get(R.newPath),N=await Mn(t,M,L,C,i);N.conflict&&I(w,`Auto-merging ${w}`,-1),o.conflicts.push({path:w,reason:"rename-rename",oursPath:b.newPath,theirsPath:R.newPath}),I(w,`CONFLICT (rename/rename): ${w} renamed to ${b.newPath} in ${g} and to ${R.newPath} in ${p}.`),o.entries.push(z(w,M,1)),o.entries.push(G(b.newPath,L.mode,N.hash,2)),o.entries.push(G(R.newPath,C.mode,N.hash,3)),o.worktreeBlobs.set(b.newPath,{hash:N.hash,mode:L.mode}),o.worktreeBlobs.set(R.newPath,{hash:N.hash,mode:C.mode})}else if(b){m.add(b.newPath);let L=s.get(w),C=r.get(b.newPath),N=l.has(b.newPath);if(L)if(N)await $n(t,o,b.newPath,w,M,C,L,r,s,!1,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(z(b.newPath,C));else if(L.hash===M.hash)o.entries.push(z(b.newPath,C));else if(C.hash===M.hash)o.entries.push(G(b.newPath,C.mode,L.hash));else{let F=kt(e,b.newPath);F.stages=[{hash:M.hash,mode:M.mode},{hash:C.hash,mode:C.mode},{hash:L.hash,mode:L.mode}],F.pathnames=[w,b.newPath,w],F.filemask=7,F.merged={result:null,clean:!1}}else{let F=s.get(b.newPath);if(o.conflicts.push({path:b.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:w}),I(b.newPath,`CONFLICT (rename/delete): ${w} renamed to ${b.newPath} in ${g}, but deleted in ${p}.`),F){o.conflicts.push({path:b.newPath,reason:"add-add"}),I(b.newPath,`Auto-merging ${b.newPath}`,0),I(b.newPath,`CONFLICT (add/add): Merge conflict in ${b.newPath}`,1),o.entries.push(z(b.newPath,C,2)),o.entries.push(z(b.newPath,F,3));let Ye=await qe(t,C.hash,F.hash,C.mode,i);o.worktreeBlobs.set(b.newPath,{hash:Ye,mode:C.mode})}else o.entries.push(G(b.newPath,M.mode,M.hash,1)),o.entries.push(z(b.newPath,C,2)),o.worktreeBlobs.set(b.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&I(b.newPath,`CONFLICT (modify/delete): ${b.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${b.newPath} left in tree.`,1)}}else if(R){m.add(R.newPath);let L=r.get(w),C=s.get(R.newPath),N=l.has(R.newPath);if(L)if(N)await $n(t,o,R.newPath,w,M,L,C,r,s,!0,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(z(R.newPath,C));else if(L.hash===M.hash)o.entries.push(z(R.newPath,C));else if(C.hash===M.hash)o.entries.push(G(R.newPath,C.mode,L.hash));else{let F=kt(e,R.newPath);F.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],F.pathnames=[w,w,R.newPath],F.filemask=7,F.merged={result:null,clean:!1}}else{let F=r.get(R.newPath);if(o.conflicts.push({path:R.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:w}),I(R.newPath,`CONFLICT (rename/delete): ${w} renamed to ${R.newPath} in ${p}, but deleted in ${g}.`),F){o.conflicts.push({path:R.newPath,reason:"add-add"}),I(R.newPath,`Auto-merging ${R.newPath}`,0),I(R.newPath,`CONFLICT (add/add): Merge conflict in ${R.newPath}`,1),o.entries.push(z(R.newPath,F,2)),o.entries.push(z(R.newPath,C,3));let Ye=await qe(t,F.hash,C.hash,F.mode,i);o.worktreeBlobs.set(R.newPath,{hash:Ye,mode:F.mode})}else o.entries.push(G(R.newPath,M.mode,M.hash,1)),o.entries.push(z(R.newPath,C,3)),o.worktreeBlobs.set(R.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&I(R.newPath,`CONFLICT (modify/delete): ${R.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${R.newPath} left in tree.`,1)}}}let k=new Set(f.renames.map(w=>w.newPath)),j=new Set(u.renames.map(w=>w.newPath)),A=Sn(n,r),E=Sn(n,s),y=Tn(A,s,n),O=Tn(E,r,n),T=Cn(f.renames,y),x=Cn(u.renames,O),P=jn(T),S=jn(x);for(let w of[...P.keys()])S.has(w)&&(P.delete(w),S.delete(w));let $=new Set(P.keys()),v=new Set(S.keys());if(S.size>0)for(let w of a){if(w.status!=="added"||k.has(w.path))continue;let b=An(w.path,S,$);if(!b)continue;if(e.has(b)||n.has(b)||r.has(b)||s.has(b)){if(r.has(b)){I(b,`CONFLICT (implicit dir rename): Existing file/dir at ${b} in the way of implicit directory rename(s) putting the following path(s) there: ${w.path}.`,1);continue}let L=r.get(w.path),C=s.get(b)??n.get(b);o.entries.push(G(b,L.mode,L.hash,2)),C&&o.entries.push(G(b,C.mode,C.hash,3)),o.worktreeBlobs.set(b,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:b,reason:"add-add"}),I(b,`CONFLICT (file location): ${w.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${b}.`,1);let N=e.get(w.path);N&&(N.merged={result:null,clean:!0}),m.add(w.path);continue}let R=r.get(w.path);o.entries.push(G(b,R.mode,R.hash,2)),o.worktreeBlobs.set(b,{hash:R.hash,mode:R.mode}),o.conflicts.push({path:b,reason:"directory-rename"}),I(b,`CONFLICT (file location): ${w.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${b}.`,1);let M=e.get(w.path);M&&(M.merged={result:null,clean:!0}),m.add(w.path)}if(P.size>0)for(let w of c){if(w.status!=="added"||j.has(w.path))continue;let b=An(w.path,P,v);if(!b)continue;if(e.has(b)||n.has(b)||r.has(b)||s.has(b)){if(s.has(b)){I(b,`CONFLICT (implicit dir rename): Existing file/dir at ${b} in the way of implicit directory rename(s) putting the following path(s) there: ${w.path}.`,1);continue}let L=s.get(w.path),C=r.get(b)??n.get(b);C&&o.entries.push(G(b,C.mode,C.hash,2)),o.entries.push(G(b,L.mode,L.hash,3)),o.worktreeBlobs.set(b,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:b,reason:"add-add"}),I(b,`CONFLICT (file location): ${w.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${b}.`,1);let N=e.get(w.path);N&&(N.merged={result:null,clean:!0}),m.add(w.path);continue}let R=s.get(w.path);o.entries.push(G(b,R.mode,R.hash,3)),o.worktreeBlobs.set(b,{hash:R.hash,mode:R.mode}),o.conflicts.push({path:b,reason:"directory-rename"}),I(b,`CONFLICT (file location): ${w.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${b}.`,1);let M=e.get(w.path);M&&(M.merged={result:null,clean:!0}),m.add(w.path)}let ne=new Set(o.entries.map(w=>w.path));for(let w of ne){let b=e.get(w);b&&(b.merged={result:null,clean:!0})}for(let w of m){if(ne.has(w))continue;let b=e.get(w);if(!b||b.merged.clean)continue;b.filemask===7&&!b.pathConflict||(b.merged={result:null,clean:!0})}return o}function Sn(t,e){let n=new Set;for(let i of t.keys()){let o=K(i);for(;o;)n.add(o),o=K(o)}let r=new Set;for(let i of e.keys()){let o=K(i);for(;o;)r.add(o),o=K(o)}let s=new Set;for(let i of n)r.has(i)||s.add(i);return s}function Tn(t,e,n){if(t.size===0)return t;let r=new Set;for(let s of e.keys()){if(n.has(s))continue;let i=K(s)??"";t.has(i)&&r.add(i)}for(let s of[...r]){let i=K(s);for(;i;)t.has(i)&&!r.has(i)&&r.add(i),i=K(i)}return r}function Cn(t,e){let n=new Map;for(let r of t){let s=K(r.oldPath),i=K(r.newPath),o=!0;for(;;){if(!o){let a=s.length+(s?1:0),c=i.length+(i?1:0),f=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),u=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==u)break}if(e.has(s)){let a=n.get(s);a||(a=new Map,n.set(s,a)),a.set(i,(a.get(i)??0)+1)}if(o=!1,!s||!i)break;s=K(s),i=K(i)}}return n}function jn(t){let e=new Map;for(let[n,r]of t){let s=0,i=0,o=null;for(let[a,c]of r)c===s?i=s:c>s&&(s=c,o=a);s>0&&i!==s&&o!==null&&e.set(n,o)}return e}function An(t,e,n){let r=K(t);for(;r;){let i=e.get(r);if(i!==void 0){if(n.has(i))return null;let o=t.slice(r.length+1);return i?`${i}/${o}`:o}r=K(r)}let s=e.get("");return s!==void 0&&!n.has(s)?`${s}/${t}`:null}function K(t){let e=t.lastIndexOf("/");return e===-1?"":t.slice(0,e)}async function $n(t,e,n,r,s,i,o,a,c,f=!1,u){let h=f?a.get(n):c.get(n),d=f?o:i;if(h.hash===d.hash){e.entries.push(G(n,h.mode,h.hash)),e.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let m=await Mn(t,s,i,o,u,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(h.hash===m.hash)e.entries.push(G(n,h.mode,m.hash));else if(e.conflicts.push({path:n,reason:"add-add"}),e.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),e.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){e.entries.push(z(n,h,2)),e.entries.push(G(n,o.mode,m.hash,3));let g=await qe(t,h.hash,m.hash,h.mode,u);e.worktreeBlobs.set(n,{hash:g,mode:h.mode})}else{e.entries.push(G(n,i.mode,m.hash,2)),e.entries.push(z(n,h,3));let g=await qe(t,m.hash,h.hash,i.mode,u);e.worktreeBlobs.set(n,{hash:g,mode:i.mode})}}async function Mn(t,e,n,r,s,i,o){if(n.hash===e.hash)return{hash:r.hash,conflict:!1};if(r.hash===e.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(Q(e.mode)||Q(n.mode)||Q(r.mode))return{hash:n.hash,conflict:!0};let a=await H(t,e.hash),c=await H(t,n.hash),f=await H(t,r.hash);if(ee(c)||ee(f)||ee(a))return{hash:n.hash,conflict:!0};let u=V(a),h=V(c),d=V(f),l=s?.conflictStyle,m=Le(h,u,d,{conflictStyle:l});if(!m.conflict)return{hash:await Rt(t,m.result),conflict:!1};let g=s?.a??"HEAD",p=s?.b??"theirs",I=i?.oursPath?`${g}:${i.oursPath}`:g,k=i?.theirsPath?`${p}:${i.theirsPath}`:p,j=de(c,a,f,{a:I,b:k,markerSize:o??7,conflictStyle:l});return{hash:await _(t,"blob",fe.encode(j)),conflict:!0}}async function qe(t,e,n,r,s){let i=await H(t,e),o=await H(t,n),a=de(i,"",o,{a:s?.a??"HEAD",b:s?.b??"theirs",conflictStyle:s?.conflictStyle});return _(t,"blob",fe.encode(a))}function z(t,e,n=0){return G(t,e.mode,e.hash,n)}function G(t,e,n,r=0){return{path:t,mode:parseInt(e,8),hash:n,stage:r,stat:re()}}async function fs(t,e,n,r){let s=[...r.entries],i=[...r.conflicts],o=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(l,m,g=0){o.push({sortKey:l,subOrder:g,text:m})}for(let l of[...e.keys()].sort()){let m=e.get(l);if(m.merged.clean){m.merged.result?.hash&&s.push(B(l,m.merged.result.hash,m.merged.result.mode));continue}await ls(t,m,n,s,i,c,a)}o.sort((l,m)=>(l.sortKey<m.sortKey?-1:l.sortKey>m.sortKey?1:0)||l.subOrder-m.subOrder);let f=o.map(l=>l.text),u=[],h=new Set;for(let l of s)l.stage===0&&(u.push(l),h.add(l.path));for(let[l,m]of a)h.has(l)||u.push(B(l,m.hash,m.mode));u.sort((l,m)=>je(l.path,m.path));let d=await bt(t,u);return{entries:s,conflicts:i,messages:f,resultTree:d}}async function ls(t,e,n,r,s,i,o){let a=e.path,[c,f,u]=e.stages,h=c?.hash??null,d=f?.hash??null,l=u?.hash??null;if(d===null&&l!==null&&h!==null){s.push({path:a,reason:"delete-modify",deletedBy:"ours"});let m=n?.a??"HEAD",g=n?.b??"theirs";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(B(a,h,c.mode,1)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:l,mode:u.mode});return}if(l===null&&d!==null&&h!==null){s.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let m=n?.b??"theirs",g=n?.a??"HEAD";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),o.set(a,{hash:d,mode:f.mode});return}if(h===null&&d!==null&&l!==null){if(d===l){r.push(B(a,d,f.mode));return}i(a,`Auto-merging ${a}`,0);let m=await H(t,d),g=await H(t,l);if(ee(m)||ee(g)){s.push({path:a,reason:"add-add"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let p=V(""),I=V(m),k=V(g),j=Le(I,p,k,{conflictStyle:n?.conflictStyle});if(!j.conflict){let y=await Rt(t,j.result);r.push(B(a,y,f.mode));return}s.push({path:a,reason:"add-add"}),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3));let A=de(m,"",g,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),E=await _(t,"blob",fe.encode(A));o.set(a,{hash:E,mode:f.mode});return}if(h!==null&&d!==null&&l!==null){if(d===h){r.push(B(a,l,u.mode));return}if(l===h){r.push(B(a,d,f.mode));return}if(d===l){r.push(B(a,d,f.mode));return}if(i(a,`Auto-merging ${a}`,0),Q(c.mode)||Q(f.mode)||Q(u.mode)){s.push({path:a,reason:"content"}),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let m=await H(t,h),g=await H(t,d),p=await H(t,l);if(ee(g)||ee(p)||ee(m)){s.push({path:a,reason:"content"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let I=V(m),k=V(g),j=V(p),A=Le(k,I,j,{conflictStyle:n?.conflictStyle});if(A.conflict){let E=e.pathnames[1],y=e.pathnames[2],O=E!==a||y!==a,T={path:a,reason:"content"};O&&(E!==a&&(T.oursOrigPath=E),y!==a&&(T.theirsOrigPath=y)),s.push(T),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3));let x=O?`${n?.a??"HEAD"}:${E}`:n?.a??"HEAD",P=O?`${n?.b??"theirs"}:${y}`:n?.b??"theirs",S=de(g,m,p,{a:x,b:P,conflictStyle:n?.conflictStyle}),$=await _(t,"blob",fe.encode(S));o.set(a,{hash:$,mode:f.mode})}else{let E=await Rt(t,A.result);r.push(B(a,E,f.mode))}return}}var us=200;async function vn(t,e,n,r,s){let i=await Promise.all(r.map(async u=>({hash:u,timestamp:(await U(t,u)).committer.timestamp})));i.sort((u,h)=>u.timestamp-h.timestamp);let o=i.map(u=>u.hash),a=o[0],c=a,f=(await U(t,a)).tree;for(let u=1;u<o.length;u++){let h=o[u],d=(await U(t,h)).tree,l=null;if(s>=us)l=f;else{let p=await $e(t,c,h);p.length===0?l=null:p.length===1?l=(await U(t,p[0])).tree:l=await vn(t,c,h,p,s+1)}let m=await xe(t,l,f,d);f=await hs(t,m,s);let g=Be({type:"commit",tree:f,parents:[c,h],author:Rn,committer:Rn,message:"merged common ancestors"});c=await _(t,"commit",g)}return f}async function hs(t,e,n){let r=e.entries.filter(a=>a.stage===0),s=new Map;for(let a of e.entries)a.stage>0&&s.set(`${a.path}\0${a.stage}`,a);let i=(a,c)=>s.get(`${a}\0${c}`),o={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of e.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let u=i(a.path,1);if(u){r.push({...u,stage:0});continue}}if(a.reason==="rename-rename"){let u=a.oursPath??a.path,h=a.theirsPath??a.path,d=i(a.path,1),l=i(u,2),m=i(h,3);if(l&&m){let g=Ie.decode((await q(t,l.hash)).content),p=Ie.decode((await q(t,m.hash)).content),I=d?Ie.decode((await q(t,d.hash)).content):"",k=8+n*2,j=o.a??"Temporary merge branch 1",A=o.b??"Temporary merge branch 2",E=de(g,I,p,{a:`${j}:${u}`,o:o.o,b:`${A}:${h}`,markerSize:k}),y=await _(t,"blob",fe.encode(E));r.push({path:u,mode:l.mode,hash:y,stage:0,stat:re()}),r.push({path:h,mode:m.mode,hash:y,stage:0,stat:re()});continue}else if(l){r.push({...l,stage:0});continue}}let c=i(a.path,2),f=i(a.path,3);if(c&&f&&(a.reason==="content"||a.reason==="add-add")){let u=Ie.decode((await q(t,c.hash)).content),h=Ie.decode((await q(t,f.hash)).content),d=a.reason==="content"?i(a.path,1):null,l=d?Ie.decode((await q(t,d.hash)).content):"",m=a.oursOrigPath||a.theirsOrigPath,g=o.a??"Temporary merge branch 1",p=o.b??"Temporary merge branch 2",I=m?`${g}:${a.oursOrigPath??a.path}`:g,k=m?`${p}:${a.theirsOrigPath??a.path}`:p,j=de(u,l,h,{a:I,o:o.o,b:k,markerSize:o.markerSize}),A=await _(t,"blob",fe.encode(j));r.push({path:a.path,mode:c.mode,hash:A,stage:0,stat:re()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>je(a.path,c.path)),bt(t,r)}async function Rt(t,e){let n=e.map(Pt);if(n.length===0)return _(t,"blob",fe.encode(""));let i=(e[e.length-1]??"").endsWith("\0")?n.join(`
18
+ `);if(e[e.length-1]==="")e.pop();else{let n=e[e.length-1]??"";e[e.length-1]=`${n}\0`}return e}function Pt(t){return t.endsWith("\0")?t.slice(0,-1):t}function Sn(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var xe=new TextDecoder,le=new TextEncoder,Tn={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Ie(t,e,n,r,s){let{paths:i,baseMap:o,oursMap:a,theirsMap:c}=await ls(t,e,n,r),f=await hs(t,i,o,a,c,s);return ds(t,i,s,f)}async function vn(t,e,n,r){let s=await $e(t,e,n),i=await U(t,e),o=await U(t,n);if(s.length===0)return{...await Ie(t,null,i.tree,o.tree,r),baseTree:null};if(s.length===1){let f=await U(t,s[0]);return{...await Ie(t,f.tree,i.tree,o.tree,r),baseTree:f.tree}}let a=await Bn(t,e,n,s,1);return{...await Ie(t,a,i.tree,o.tree,r),baseTree:a}}async function ls(t,e,n,r){let s=await ie(t,e),i=await ie(t,n),o=await ie(t,r),a=new Set;for(let f of s.keys())a.add(f);for(let f of i.keys())a.add(f);for(let f of o.keys())a.add(f);let c=new Map;for(let f of a){let u=s.get(f)??null,h=i.get(f)??null,d=o.get(f)??null,l=u?{hash:u.hash,mode:u.mode}:null,m=h?{hash:h.hash,mode:h.mode}:null,g=d?{hash:d.hash,mode:d.mode}:null,p=(u?1:0)|(h?2:0)|(d?4:0),w=u?.hash??null,R=h?.hash??null,j=d?.hash??null,A=0;w!==null&&w===R&&(A|=3),w!==null&&w===j&&(A|=5),R!==null&&R===j&&(A|=6);let E={path:f,stages:[l,m,g],pathnames:[f,f,f],filemask:p,matchMask:A,merged:{result:null,clean:!1},pathConflict:!1};if(us(E)){c.set(f,E);continue}c.set(f,E)}return{paths:c,baseMap:s,oursMap:i,theirsMap:o}}function us(t){let[e,n,r]=t.stages,s=e?.hash??null,i=n?.hash??null,o=r?.hash??null;return i===s&&o===s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===o&&i!==null?(t.merged={result:{hash:i,mode:n.mode},clean:!0},!0):i===null&&o===null?(t.merged={result:null,clean:!0},!0):o===s&&i!==s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===s&&o!==s?(r?t.merged={result:{hash:o,mode:r.mode},clean:!0}:t.merged={result:null,clean:!0},!0):!1}async function hs(t,e,n,r,s,i){let o={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[x,b]of n)r.has(x)||a.push({path:x,status:"deleted",oldHash:b.hash,oldMode:b.mode}),s.has(x)||c.push({path:x,status:"deleted",oldHash:b.hash,oldMode:b.mode});for(let[x,b]of r)n.has(x)||a.push({path:x,status:"added",newHash:b.hash,newMode:b.mode});for(let[x,b]of s)n.has(x)||c.push({path:x,status:"added",newHash:b.hash,newMode:b.mode});let f=await Ae(t,a),u=await Ae(t,c);if(f.renames.length===0&&u.renames.length===0)return o;let h=new Map,d=new Map;for(let x of f.renames)h.set(x.oldPath,x);for(let x of u.renames)d.set(x.oldPath,x);let l=new Set;for(let[x]of r)!n.has(x)&&s.has(x)&&l.add(x);let m=new Set,g=i?.a??"HEAD",p=i?.b??"theirs";function w(x,b,k=0){o.msgBuf.push({sortKey:x,subOrder:k,text:b})}for(let x of[...n.keys()].sort()){let b=h.get(x),k=d.get(x);if(!b&&!k)continue;let M=n.get(x);if(m.add(x),b&&k)if(m.add(b.newPath),m.add(k.newPath),b.newPath===k.newPath){let L=r.get(b.newPath),C=s.get(k.newPath);if(L.hash===C.hash)o.entries.push(z(b.newPath,L));else{let N=Rt(e,b.newPath);N.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],N.pathnames=[x,b.newPath,k.newPath],N.filemask=7,N.merged={result:null,clean:!1}}}else{let L=r.get(b.newPath),C=s.get(k.newPath),N=await Un(t,M,L,C,i);N.conflict&&w(x,`Auto-merging ${x}`,-1),o.conflicts.push({path:x,reason:"rename-rename",oursPath:b.newPath,theirsPath:k.newPath}),w(x,`CONFLICT (rename/rename): ${x} renamed to ${b.newPath} in ${g} and to ${k.newPath} in ${p}.`),o.entries.push(z(x,M,1)),o.entries.push(G(b.newPath,L.mode,N.hash,2)),o.entries.push(G(k.newPath,C.mode,N.hash,3)),o.worktreeBlobs.set(b.newPath,{hash:N.hash,mode:L.mode}),o.worktreeBlobs.set(k.newPath,{hash:N.hash,mode:C.mode})}else if(b){m.add(b.newPath);let L=s.get(x),C=r.get(b.newPath),N=l.has(b.newPath);if(L)if(N)await Mn(t,o,b.newPath,x,M,C,L,r,s,!1,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(z(b.newPath,C));else if(L.hash===M.hash)o.entries.push(z(b.newPath,C));else if(C.hash===M.hash)o.entries.push(G(b.newPath,C.mode,L.hash));else{let F=Rt(e,b.newPath);F.stages=[{hash:M.hash,mode:M.mode},{hash:C.hash,mode:C.mode},{hash:L.hash,mode:L.mode}],F.pathnames=[x,b.newPath,x],F.filemask=7,F.merged={result:null,clean:!1}}else{let F=s.get(b.newPath);if(o.conflicts.push({path:b.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:x}),w(b.newPath,`CONFLICT (rename/delete): ${x} renamed to ${b.newPath} in ${g}, but deleted in ${p}.`),F){o.conflicts.push({path:b.newPath,reason:"add-add"}),w(b.newPath,`Auto-merging ${b.newPath}`,0),w(b.newPath,`CONFLICT (add/add): Merge conflict in ${b.newPath}`,1),o.entries.push(z(b.newPath,C,2)),o.entries.push(z(b.newPath,F,3));let Ye=await qe(t,C.hash,F.hash,C.mode,i);o.worktreeBlobs.set(b.newPath,{hash:Ye,mode:C.mode})}else o.entries.push(G(b.newPath,M.mode,M.hash,1)),o.entries.push(z(b.newPath,C,2)),o.worktreeBlobs.set(b.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&w(b.newPath,`CONFLICT (modify/delete): ${b.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${b.newPath} left in tree.`,1)}}else if(k){m.add(k.newPath);let L=r.get(x),C=s.get(k.newPath),N=l.has(k.newPath);if(L)if(N)await Mn(t,o,k.newPath,x,M,L,C,r,s,!0,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(z(k.newPath,C));else if(L.hash===M.hash)o.entries.push(z(k.newPath,C));else if(C.hash===M.hash)o.entries.push(G(k.newPath,C.mode,L.hash));else{let F=Rt(e,k.newPath);F.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],F.pathnames=[x,x,k.newPath],F.filemask=7,F.merged={result:null,clean:!1}}else{let F=r.get(k.newPath);if(o.conflicts.push({path:k.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:x}),w(k.newPath,`CONFLICT (rename/delete): ${x} renamed to ${k.newPath} in ${p}, but deleted in ${g}.`),F){o.conflicts.push({path:k.newPath,reason:"add-add"}),w(k.newPath,`Auto-merging ${k.newPath}`,0),w(k.newPath,`CONFLICT (add/add): Merge conflict in ${k.newPath}`,1),o.entries.push(z(k.newPath,F,2)),o.entries.push(z(k.newPath,C,3));let Ye=await qe(t,F.hash,C.hash,F.mode,i);o.worktreeBlobs.set(k.newPath,{hash:Ye,mode:F.mode})}else o.entries.push(G(k.newPath,M.mode,M.hash,1)),o.entries.push(z(k.newPath,C,3)),o.worktreeBlobs.set(k.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&w(k.newPath,`CONFLICT (modify/delete): ${k.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${k.newPath} left in tree.`,1)}}}let R=new Set(f.renames.map(x=>x.newPath)),j=new Set(u.renames.map(x=>x.newPath)),A=Cn(n,r),E=Cn(n,s),y=jn(A,s,n),O=jn(E,r,n),T=An(f.renames,y),I=An(u.renames,O),P=$n(T),S=$n(I);for(let x of[...P.keys()])S.has(x)&&(P.delete(x),S.delete(x));let $=new Set(P.keys()),v=new Set(S.keys());if(S.size>0)for(let x of a){if(x.status!=="added"||R.has(x.path))continue;let b=Ln(x.path,S,$);if(!b)continue;if(e.has(b)||n.has(b)||r.has(b)||s.has(b)){if(r.has(b)){w(b,`CONFLICT (implicit dir rename): Existing file/dir at ${b} in the way of implicit directory rename(s) putting the following path(s) there: ${x.path}.`,1);continue}let L=r.get(x.path),C=s.get(b)??n.get(b);o.entries.push(G(b,L.mode,L.hash,2)),C&&o.entries.push(G(b,C.mode,C.hash,3)),o.worktreeBlobs.set(b,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:b,reason:"add-add"}),w(b,`CONFLICT (file location): ${x.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${b}.`,1);let N=e.get(x.path);N&&(N.merged={result:null,clean:!0}),m.add(x.path);continue}let k=r.get(x.path);o.entries.push(G(b,k.mode,k.hash,2)),o.worktreeBlobs.set(b,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:b,reason:"directory-rename"}),w(b,`CONFLICT (file location): ${x.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${b}.`,1);let M=e.get(x.path);M&&(M.merged={result:null,clean:!0}),m.add(x.path)}if(P.size>0)for(let x of c){if(x.status!=="added"||j.has(x.path))continue;let b=Ln(x.path,P,v);if(!b)continue;if(e.has(b)||n.has(b)||r.has(b)||s.has(b)){if(s.has(b)){w(b,`CONFLICT (implicit dir rename): Existing file/dir at ${b} in the way of implicit directory rename(s) putting the following path(s) there: ${x.path}.`,1);continue}let L=s.get(x.path),C=r.get(b)??n.get(b);C&&o.entries.push(G(b,C.mode,C.hash,2)),o.entries.push(G(b,L.mode,L.hash,3)),o.worktreeBlobs.set(b,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:b,reason:"add-add"}),w(b,`CONFLICT (file location): ${x.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${b}.`,1);let N=e.get(x.path);N&&(N.merged={result:null,clean:!0}),m.add(x.path);continue}let k=s.get(x.path);o.entries.push(G(b,k.mode,k.hash,3)),o.worktreeBlobs.set(b,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:b,reason:"directory-rename"}),w(b,`CONFLICT (file location): ${x.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${b}.`,1);let M=e.get(x.path);M&&(M.merged={result:null,clean:!0}),m.add(x.path)}let ne=new Set(o.entries.map(x=>x.path));for(let x of ne){let b=e.get(x);b&&(b.merged={result:null,clean:!0})}for(let x of m){if(ne.has(x))continue;let b=e.get(x);if(!b||b.merged.clean)continue;b.filemask===7&&!b.pathConflict||(b.merged={result:null,clean:!0})}return o}function Cn(t,e){let n=new Set;for(let i of t.keys()){let o=K(i);for(;o;)n.add(o),o=K(o)}let r=new Set;for(let i of e.keys()){let o=K(i);for(;o;)r.add(o),o=K(o)}let s=new Set;for(let i of n)r.has(i)||s.add(i);return s}function jn(t,e,n){if(t.size===0)return t;let r=new Set;for(let s of e.keys()){if(n.has(s))continue;let i=K(s)??"";t.has(i)&&r.add(i)}for(let s of[...r]){let i=K(s);for(;i;)t.has(i)&&!r.has(i)&&r.add(i),i=K(i)}return r}function An(t,e){let n=new Map;for(let r of t){let s=K(r.oldPath),i=K(r.newPath),o=!0;for(;;){if(!o){let a=s.length+(s?1:0),c=i.length+(i?1:0),f=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),u=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==u)break}if(e.has(s)){let a=n.get(s);a||(a=new Map,n.set(s,a)),a.set(i,(a.get(i)??0)+1)}if(o=!1,!s||!i)break;s=K(s),i=K(i)}}return n}function $n(t){let e=new Map;for(let[n,r]of t){let s=0,i=0,o=null;for(let[a,c]of r)c===s?i=s:c>s&&(s=c,o=a);s>0&&i!==s&&o!==null&&e.set(n,o)}return e}function Ln(t,e,n){let r=K(t);for(;r;){let i=e.get(r);if(i!==void 0){if(n.has(i))return null;let o=t.slice(r.length+1);return i?`${i}/${o}`:o}r=K(r)}let s=e.get("");return s!==void 0&&!n.has(s)?`${s}/${t}`:null}function K(t){let e=t.lastIndexOf("/");return e===-1?"":t.slice(0,e)}async function Mn(t,e,n,r,s,i,o,a,c,f=!1,u){let h=f?a.get(n):c.get(n),d=f?o:i;if(h.hash===d.hash){e.entries.push(G(n,h.mode,h.hash)),e.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let m=await Un(t,s,i,o,u,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(h.hash===m.hash)e.entries.push(G(n,h.mode,m.hash));else if(e.conflicts.push({path:n,reason:"add-add"}),e.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),e.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){e.entries.push(z(n,h,2)),e.entries.push(G(n,o.mode,m.hash,3));let g=await qe(t,h.hash,m.hash,h.mode,u);e.worktreeBlobs.set(n,{hash:g,mode:h.mode})}else{e.entries.push(G(n,i.mode,m.hash,2)),e.entries.push(z(n,h,3));let g=await qe(t,m.hash,h.hash,i.mode,u);e.worktreeBlobs.set(n,{hash:g,mode:i.mode})}}async function Un(t,e,n,r,s,i,o){if(n.hash===e.hash)return{hash:r.hash,conflict:!1};if(r.hash===e.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(Q(e.mode)||Q(n.mode)||Q(r.mode))return{hash:n.hash,conflict:!0};let a=await H(t,e.hash),c=await H(t,n.hash),f=await H(t,r.hash);if(ee(c)||ee(f)||ee(a))return{hash:n.hash,conflict:!0};let u=V(a),h=V(c),d=V(f),l=s?.conflictStyle,m=Le(h,u,d,{conflictStyle:l});if(!m.conflict)return{hash:await kt(t,m.result),conflict:!1};let g=s?.a??"HEAD",p=s?.b??"theirs",w=i?.oursPath?`${g}:${i.oursPath}`:g,R=i?.theirsPath?`${p}:${i.theirsPath}`:p,j=de(c,a,f,{a:w,b:R,markerSize:o??7,conflictStyle:l});return{hash:await _(t,"blob",le.encode(j)),conflict:!0}}async function qe(t,e,n,r,s){let i=await H(t,e),o=await H(t,n),a=de(i,"",o,{a:s?.a??"HEAD",b:s?.b??"theirs",conflictStyle:s?.conflictStyle});return _(t,"blob",le.encode(a))}function z(t,e,n=0){return G(t,e.mode,e.hash,n)}function G(t,e,n,r=0){return{path:t,mode:parseInt(e,8),hash:n,stage:r,stat:re()}}async function ds(t,e,n,r){let s=[...r.entries],i=[...r.conflicts],o=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(l,m,g=0){o.push({sortKey:l,subOrder:g,text:m})}for(let l of[...e.keys()].sort()){let m=e.get(l);if(m.merged.clean){m.merged.result?.hash&&s.push(B(l,m.merged.result.hash,m.merged.result.mode));continue}await ms(t,m,n,s,i,c,a)}o.sort((l,m)=>(l.sortKey<m.sortKey?-1:l.sortKey>m.sortKey?1:0)||l.subOrder-m.subOrder);let f=o.map(l=>l.text),u=[],h=new Set;for(let l of s)l.stage===0&&(u.push(l),h.add(l.path));for(let[l,m]of a)h.has(l)||u.push(B(l,m.hash,m.mode));u.sort((l,m)=>je(l.path,m.path));let d=await bt(t,u);return{entries:s,conflicts:i,messages:f,resultTree:d}}async function ms(t,e,n,r,s,i,o){let a=e.path,[c,f,u]=e.stages,h=c?.hash??null,d=f?.hash??null,l=u?.hash??null;if(d===null&&l!==null&&h!==null){s.push({path:a,reason:"delete-modify",deletedBy:"ours"});let m=n?.a??"HEAD",g=n?.b??"theirs";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(B(a,h,c.mode,1)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:l,mode:u.mode});return}if(l===null&&d!==null&&h!==null){s.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let m=n?.b??"theirs",g=n?.a??"HEAD";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),o.set(a,{hash:d,mode:f.mode});return}if(h===null&&d!==null&&l!==null){if(d===l){r.push(B(a,d,f.mode));return}i(a,`Auto-merging ${a}`,0);let m=await H(t,d),g=await H(t,l);if(ee(m)||ee(g)){s.push({path:a,reason:"add-add"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let p=V(""),w=V(m),R=V(g),j=Le(w,p,R,{conflictStyle:n?.conflictStyle});if(!j.conflict){let y=await kt(t,j.result);r.push(B(a,y,f.mode));return}s.push({path:a,reason:"add-add"}),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3));let A=de(m,"",g,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),E=await _(t,"blob",le.encode(A));o.set(a,{hash:E,mode:f.mode});return}if(h!==null&&d!==null&&l!==null){if(d===h){r.push(B(a,l,u.mode));return}if(l===h){r.push(B(a,d,f.mode));return}if(d===l){r.push(B(a,d,f.mode));return}if(i(a,`Auto-merging ${a}`,0),Q(c.mode)||Q(f.mode)||Q(u.mode)){s.push({path:a,reason:"content"}),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let m=await H(t,h),g=await H(t,d),p=await H(t,l);if(ee(g)||ee(p)||ee(m)){s.push({path:a,reason:"content"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let w=V(m),R=V(g),j=V(p),A=Le(R,w,j,{conflictStyle:n?.conflictStyle});if(A.conflict){let E=e.pathnames[1],y=e.pathnames[2],O=E!==a||y!==a,T={path:a,reason:"content"};O&&(E!==a&&(T.oursOrigPath=E),y!==a&&(T.theirsOrigPath=y)),s.push(T),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(B(a,h,c.mode,1)),r.push(B(a,d,f.mode,2)),r.push(B(a,l,u.mode,3));let I=O?`${n?.a??"HEAD"}:${E}`:n?.a??"HEAD",P=O?`${n?.b??"theirs"}:${y}`:n?.b??"theirs",S=de(g,m,p,{a:I,b:P,conflictStyle:n?.conflictStyle}),$=await _(t,"blob",le.encode(S));o.set(a,{hash:$,mode:f.mode})}else{let E=await kt(t,A.result);r.push(B(a,E,f.mode))}return}}var ps=200;async function Bn(t,e,n,r,s){let i=await Promise.all(r.map(async u=>({hash:u,timestamp:(await U(t,u)).committer.timestamp})));i.sort((u,h)=>u.timestamp-h.timestamp);let o=i.map(u=>u.hash),a=o[0],c=a,f=(await U(t,a)).tree;for(let u=1;u<o.length;u++){let h=o[u],d=(await U(t,h)).tree,l=null;if(s>=ps)l=f;else{let p=await $e(t,c,h);p.length===0?l=null:p.length===1?l=(await U(t,p[0])).tree:l=await Bn(t,c,h,p,s+1)}let m=await Ie(t,l,f,d);f=await gs(t,m,s);let g=Be({type:"commit",tree:f,parents:[c,h],author:Tn,committer:Tn,message:"merged common ancestors"});c=await _(t,"commit",g)}return f}async function gs(t,e,n){let r=e.entries.filter(a=>a.stage===0),s=new Map;for(let a of e.entries)a.stage>0&&s.set(`${a.path}\0${a.stage}`,a);let i=(a,c)=>s.get(`${a}\0${c}`),o={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of e.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let u=i(a.path,1);if(u){r.push({...u,stage:0});continue}}if(a.reason==="rename-rename"){let u=a.oursPath??a.path,h=a.theirsPath??a.path,d=i(a.path,1),l=i(u,2),m=i(h,3);if(l&&m){let g=xe.decode((await q(t,l.hash)).content),p=xe.decode((await q(t,m.hash)).content),w=d?xe.decode((await q(t,d.hash)).content):"",R=8+n*2,j=o.a??"Temporary merge branch 1",A=o.b??"Temporary merge branch 2",E=de(g,w,p,{a:`${j}:${u}`,o:o.o,b:`${A}:${h}`,markerSize:R}),y=await _(t,"blob",le.encode(E));r.push({path:u,mode:l.mode,hash:y,stage:0,stat:re()}),r.push({path:h,mode:m.mode,hash:y,stage:0,stat:re()});continue}else if(l){r.push({...l,stage:0});continue}}let c=i(a.path,2),f=i(a.path,3);if(c&&f&&(a.reason==="content"||a.reason==="add-add")){let u=xe.decode((await q(t,c.hash)).content),h=xe.decode((await q(t,f.hash)).content),d=a.reason==="content"?i(a.path,1):null,l=d?xe.decode((await q(t,d.hash)).content):"",m=a.oursOrigPath||a.theirsOrigPath,g=o.a??"Temporary merge branch 1",p=o.b??"Temporary merge branch 2",w=m?`${g}:${a.oursOrigPath??a.path}`:g,R=m?`${p}:${a.theirsOrigPath??a.path}`:p,j=de(u,l,h,{a:w,o:o.o,b:R,markerSize:o.markerSize}),A=await _(t,"blob",le.encode(j));r.push({path:a.path,mode:c.mode,hash:A,stage:0,stat:re()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>je(a.path,c.path)),bt(t,r)}async function kt(t,e){let n=e.map(Pt);if(n.length===0)return _(t,"blob",le.encode(""));let i=(e[e.length-1]??"").endsWith("\0")?n.join(`
18
19
  `):`${n.join(`
19
20
  `)}
20
- `;return _(t,"blob",fe.encode(i))}function B(t,e,n,r=0){let s=typeof n=="string"?parseInt(n,8):n;return{path:t,mode:s,hash:e,stage:r,stat:re()}}function kt(t,e){let n=t.get(e);return n||(n={path:e,stages:[null,null,null],pathnames:[e,e,e],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},t.set(e,n)),n}async function*ds(t,e,n){let r=e?[e]:[];for await(let s of we(t,n,{exclude:r}))yield{hash:s.hash,message:s.commit.message,tree:s.commit.tree,parents:s.commit.parents,author:s.commit.author,committer:s.commit.committer}}async function ms(t,e,n){let r=await U(t,n),s=null;return e&&(s=(await U(t,e)).tree),Ce(t,s,r.tree)}async function ps(t,e,n){return Ot(t,e,n)}async function gs(t,e){return De(t,e)}async function bs(t){return gt(t,"refs/heads")}async function ys(t){return gt(t,"refs/tags")}async function ws(t,e){return U(t,e)}async function Is(t,e){return te(t,e)}async function xs(t,e){return H(t,e)}async function Os(t,e){return ue(t,e)}async function Es(t,e,n){return Ce(t,e,n)}async function Ps(t,e,n){return $e(t,e,n)}async function ks(t,e,n,r){let s=r?{a:r.ours??"ours",b:r.theirs??"theirs"}:void 0,i=await Ln(t,e,n,s);return{treeHash:i.resultTree,clean:i.conflicts.length===0,conflicts:i.conflicts,messages:i.messages}}async function Rs(t,e,n,r,s){let i=s?{a:s.ours??"ours",b:s.theirs??"theirs"}:void 0,o=await xe(t,e,n,r,i);return{treeHash:o.resultTree,clean:o.conflicts.length===0,conflicts:o.conflicts,messages:o.messages}}async function Ss(t,e){let n=Be({type:"commit",tree:e.tree,parents:e.parents,author:e.author,committer:e.committer,message:e.message}),r=await _(t,"commit",n);if(e.branch){let s=`refs/heads/${e.branch}`;await t.refStore.writeRef(s,{type:"direct",hash:r}),await t.refStore.readRef("HEAD")||await t.refStore.writeRef("HEAD",{type:"symbolic",target:s})}return r}async function Ts(t,e){let n=[...e].sort((i,o)=>i.name.localeCompare(o.name)),r=await Promise.all(n.map(async i=>{let o=i.mode;return o||(o=(await t.objectStore.read(i.hash)).type==="tree"?"040000":"100644"),{mode:o,name:i.name,hash:i.hash}})),s=He({type:"tree",entries:r});return _(t,"tree",s)}async function Cs(t,e){return _(t,"blob",new TextEncoder().encode(e))}async function js(t,e,n){let r=await U(t,e),i=(await ue(t,r.tree)).find(o=>o.path===n);return i?H(t,i.hash):null}var Un=/^[0-9a-f]{40}$/;async function As(t,e,n,r="/"){let s=await De(t,e);if(!s)if(Un.test(e)&&await t.objectStore.exists(e))s=e;else throw new Error(`ref or commit '${e}' not found`);let i=await U(t,s),o=await ue(t,i.tree),a=new Set,c=0;for(let f of o){if(!Je(f.path))throw new Error(`refusing to check out unsafe path '${f.path}'`);let u=D(r,f.path);if(!Ze(r,u))throw new Error(`refusing to check out path outside target directory: '${f.path}'`);let h=Xe(u);if(h!==r&&!a.has(h)&&(await n.mkdir(h,{recursive:!0}),a.add(h)),Q(f.mode)){let d=await H(t,f.hash);if(!Qe(d))throw new Error(`refusing to create symlink with unsafe target '${d}'`);n.symlink?await n.symlink(d,u):await n.writeFile(u,d)}else{let d=await te(t,f.hash);await n.writeFile(u,d)}c++}return{commitHash:s,treeHash:i.tree,filesWritten:c}}async function $s(t,e,n){let r=n?.workTree??"/",s=n?.gitDir??D(r,".git"),i=n?.ref??"HEAD";await e.mkdir(s,{recursive:!0});let o=await De(t,i);if(!o)if(Un.test(i)&&await t.objectStore.exists(i))o=i;else throw new Error(`ref or commit '${i}' not found`);let a=await U(t,o),c=await ue(t,a.tree),f={...t,fs:e,gitDir:s,workTree:r},u=new Set,h=0;for(let l of c){if(!Je(l.path))throw new Error(`refusing to check out unsafe path '${l.path}'`);let m=D(r,l.path);if(!Ze(r,m))throw new Error(`refusing to check out path outside worktree: '${l.path}'`);let g=Xe(m);if(g!==r&&!u.has(g)&&(await e.mkdir(g,{recursive:!0}),u.add(g)),Q(l.mode)){let p=await H(t,l.hash);if(!Qe(p))throw new Error(`refusing to create symlink with unsafe target '${p}'`);e.symlink?await e.symlink(p,m):await e.writeFile(m,p)}else{let p=await te(t,l.hash);await e.writeFile(m,p)}h++}let d=$t(c.map(l=>({path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:re()})));return await tt(f,d),{ctx:f,commitHash:o,treeHash:a.tree,filesWritten:h}}async function Ls(t,e,n){return On(t,e,n)}async function Ms(t,e,n,r){return xn(t,e,n,r)}async function*vs(t,e,n){for await(let r of we(t,e,n))yield{hash:r.hash,message:r.commit.message,tree:r.commit.tree,parents:r.commit.parents,author:r.commit.author,committer:r.commit.committer}}var St=class{constructor(e){this.inner=e}read(e){return this.inner.read(e)}write(e,n){throw new Error("cannot write: object store is read-only")}exists(e){return this.inner.exists(e)}ingestPack(e){throw new Error("cannot ingest pack: object store is read-only")}findByPrefix(e){return this.inner.findByPrefix(e)}},Tt=class{constructor(e){this.inner=e}readRef(e){return this.inner.readRef(e)}writeRef(e,n){throw new Error("cannot write ref: ref store is read-only")}deleteRef(e){throw new Error("cannot delete ref: ref store is read-only")}listRefs(e){return this.inner.listRefs(e)}compareAndSwapRef(e,n,r){throw new Error("cannot update ref: ref store is read-only")}};function Us(t){return{objectStore:new St(t.objectStore),refStore:new Tt(t.refStore),hooks:t.hooks}}export{pt as FileSystemRefStore,ut as PackedObjectStore,Ms as blame,As as checkoutTo,Ls as countAheadBehind,Ss as createCommit,$s as createWorktree,Es as diffTrees,Ps as findMergeBases,Os as flattenTree,ms as getChangedFiles,ds as getNewCommits,ps as isAncestor,bs as listBranches,ys as listTags,ks as mergeTrees,Rs as mergeTreesFromTreeHashes,Is as readBlob,xs as readBlobText,ws as readCommit,js as readFileAtCommit,Us as readonlyRepo,gs as resolveRef,vs as walkCommitHistory,Cs as writeBlob,Ts as writeTree};
21
+ `;return _(t,"blob",le.encode(i))}function B(t,e,n,r=0){let s=typeof n=="string"?parseInt(n,8):n;return{path:t,mode:s,hash:e,stage:r,stat:re()}}function Rt(t,e){let n=t.get(e);return n||(n={path:e,stages:[null,null,null],pathnames:[e,e,e],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},t.set(e,n)),n}async function*bs(t,e,n){let r=e?[e]:[];for await(let s of we(t,n,{exclude:r}))yield{hash:s.hash,message:s.commit.message,tree:s.commit.tree,parents:s.commit.parents,author:s.commit.author,committer:s.commit.committer}}async function ys(t,e,n){let r=await U(t,n),s=null;return e&&(s=(await U(t,e)).tree),Ce(t,s,r.tree)}async function ws(t,e,n){return Ot(t,e,n)}async function xs(t,e){return De(t,e)}async function Is(t){return gt(t,"refs/heads")}async function Os(t){return gt(t,"refs/tags")}async function Es(t,e){return U(t,e)}async function Ps(t,e){return te(t,e)}async function Rs(t,e){return H(t,e)}async function ks(t,e){return oe(t,e)}async function Ss(t,e,n){return Ce(t,e,n)}async function Ts(t,e,n){return $e(t,e,n)}async function Cs(t,e,n,r){let s=r?{a:r.ours??"ours",b:r.theirs??"theirs"}:void 0,i=await vn(t,e,n,s);return{treeHash:i.resultTree,clean:i.conflicts.length===0,conflicts:i.conflicts,messages:i.messages}}async function js(t,e,n,r,s){let i=s?{a:s.ours??"ours",b:s.theirs??"theirs"}:void 0,o=await Ie(t,e,n,r,i);return{treeHash:o.resultTree,clean:o.conflicts.length===0,conflicts:o.conflicts,messages:o.messages}}async function As(t,e){let n=Be({type:"commit",tree:e.tree,parents:e.parents,author:e.author,committer:e.committer,message:e.message}),r=await _(t,"commit",n);if(e.branch){let s=`refs/heads/${e.branch}`;await t.refStore.writeRef(s,{type:"direct",hash:r}),await t.refStore.readRef("HEAD")||await t.refStore.writeRef("HEAD",{type:"symbolic",target:s})}return r}async function $s(t,e){let n=[...e].sort((i,o)=>i.name.localeCompare(o.name)),r=await Promise.all(n.map(async i=>{let o=i.mode;return o||(o=(await t.objectStore.read(i.hash)).type==="tree"?"040000":"100644"),{mode:o,name:i.name,hash:i.hash}})),s=He({type:"tree",entries:r});return _(t,"tree",s)}async function Ls(t,e){return _(t,"blob",new TextEncoder().encode(e))}async function Ms(t,e,n){let r=await U(t,e),i=(await oe(t,r.tree)).find(o=>o.path===n);return i?H(t,i.hash):null}var Dn=/^[0-9a-f]{40}$/;async function vs(t,e,n,r="/"){let s=await De(t,e);if(!s)if(Dn.test(e)&&await t.objectStore.exists(e))s=e;else throw new Error(`ref or commit '${e}' not found`);let i=await U(t,s),o=await oe(t,i.tree),a=new Set,c=0;for(let f of o){if(!Je(f.path))throw new Error(`refusing to check out unsafe path '${f.path}'`);let u=D(r,f.path);if(!Ze(r,u))throw new Error(`refusing to check out path outside target directory: '${f.path}'`);let h=Xe(u);if(h!==r&&!a.has(h)&&(await n.mkdir(h,{recursive:!0}),a.add(h)),Q(f.mode)){let d=await H(t,f.hash);if(!Qe(d))throw new Error(`refusing to create symlink with unsafe target '${d}'`);n.symlink?await n.symlink(d,u):await n.writeFile(u,d)}else{let d=await te(t,f.hash);await n.writeFile(u,d)}c++}return{commitHash:s,treeHash:i.tree,filesWritten:c}}async function Us(t,e,n){let r=n?.workTree??"/",s=n?.gitDir??D(r,".git"),i=n?.ref??"HEAD";await e.mkdir(s,{recursive:!0});let o=await De(t,i);if(!o)if(Dn.test(i)&&await t.objectStore.exists(i))o=i;else throw new Error(`ref or commit '${i}' not found`);let a=await U(t,o),c=await oe(t,a.tree),f={...t,fs:e,gitDir:s,workTree:r},u=new Set,h=0;for(let l of c){if(!Je(l.path))throw new Error(`refusing to check out unsafe path '${l.path}'`);let m=D(r,l.path);if(!Ze(r,m))throw new Error(`refusing to check out path outside worktree: '${l.path}'`);let g=Xe(m);if(g!==r&&!u.has(g)&&(await e.mkdir(g,{recursive:!0}),u.add(g)),Q(l.mode)){let p=await H(t,l.hash);if(!Qe(p))throw new Error(`refusing to create symlink with unsafe target '${p}'`);e.symlink?await e.symlink(p,m):await e.writeFile(m,p)}else{let p=await te(t,l.hash);await e.writeFile(m,p)}h++}let d=$t(c.map(l=>({path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:re()})));return await tt(f,d),{ctx:f,commitHash:o,treeHash:a.tree,filesWritten:h}}async function Bs(t,e,n){return Pn(t,e,n)}async function Ds(t,e,n,r){return In(t,e,n,r)}async function*Hs(t,e,n){for await(let r of we(t,e,n))yield{hash:r.hash,message:r.commit.message,tree:r.commit.tree,parents:r.commit.parents,author:r.commit.author,committer:r.commit.committer}}var St=class{constructor(e){this.inner=e}read(e){return this.inner.read(e)}write(e,n){throw new Error("cannot write: object store is read-only")}exists(e){return this.inner.exists(e)}ingestPack(e){throw new Error("cannot ingest pack: object store is read-only")}findByPrefix(e){return this.inner.findByPrefix(e)}},Tt=class{constructor(e){this.inner=e}readRef(e){return this.inner.readRef(e)}writeRef(e,n){throw new Error("cannot write ref: ref store is read-only")}deleteRef(e){throw new Error("cannot delete ref: ref store is read-only")}listRefs(e){return this.inner.listRefs(e)}compareAndSwapRef(e,n,r){throw new Error("cannot update ref: ref store is read-only")}};function Ns(t){let e=0;for(let n=0;n<t.length;n++)t[n]==="/"&&e++;return e}function Fs(t,e){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"\0").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/\0/g,".*");return new RegExp(`^${n}$`).test(e)}async function Gs(t,e,n,r){let s=[];for(let m of n)if(m instanceof RegExp)s.push(m);else{let g=En(m,{fixed:r?.fixed,ignoreCase:r?.ignoreCase,wordRegexp:r?.wordRegexp});if(!g)throw new Error(`Invalid pattern: ${m}`);s.push(g)}let i=await U(t,e),a=(await oe(t,i.tree)).filter(m=>!m.mode.startsWith("120")).sort((m,g)=>m.path<g.path?-1:m.path>g.path?1:0),c=r?.allMatch??!1,f=r?.invert??!1,u=r?.maxCount,h=r?.maxDepth,d=r?.paths,l=[];for(let m of a){if(h!==void 0&&Ns(m.path)>h||d&&!d.some(R=>Fs(R,m.path)))continue;let g=await H(t,m.hash),p=On(g,s,c,f);if(p.binary){l.push({path:m.path,matches:[],binary:!0});continue}if(p.matches.length===0)continue;let w=u!==void 0?p.matches.slice(0,u):p.matches;l.push({path:m.path,matches:w,binary:!1})}return l}function _s(t){return{objectStore:new St(t.objectStore),refStore:new Tt(t.refStore),hooks:t.hooks}}export{pt as FileSystemRefStore,ut as PackedObjectStore,Ds as blame,vs as checkoutTo,Bs as countAheadBehind,As as createCommit,Us as createWorktree,Ss as diffTrees,Ts as findMergeBases,ks as flattenTree,ys as getChangedFiles,bs as getNewCommits,Gs as grep,ws as isAncestor,Is as listBranches,Os as listTags,Cs as mergeTrees,js as mergeTreesFromTreeHashes,Ps as readBlob,Rs as readBlobText,Es as readCommit,Ms as readFileAtCommit,_s as readonlyRepo,xs as resolveRef,Hs as walkCommitHistory,Ls as writeBlob,$s as writeTree};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "just-git",
3
- "version": "1.2.12",
3
+ "version": "1.2.13",
4
4
  "description": "Pure TypeScript git implementation: virtual filesystem client and embeddable server.",
5
5
  "keywords": [
6
6
  "agent",