just-git 0.1.4 → 0.1.6

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.
Files changed (3) hide show
  1. package/README.md +13 -10
  2. package/dist/index.js +303 -291
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- var br=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Rs=class e{_def;constructor(t){this._def=t}name(t){return new e({...this._def,name:t})}describe(t){return new e({...this._def,description:t})}optional(){return new e({...this._def,required:!1})}variadic(){return new e({...this._def,variadic:!0})}default(t){return new e({...this._def,required:!1,default:t})}};function Fo(e){return new Rs({_kind:"arg",type:e,required:!0})}function Uo(){return Fo("string")}function Bo(){return Fo("number")}var yr=class e{_def;constructor(t={_kind:"flag"}){this._def=t}describe(t){return new e({...this._def,description:t})}alias(t){return new e({...this._def,short:t})}default(t){return new e({...this._def,default:t})}count(){return new e({...this._def,counted:!0})}};var Is=class e{_def;constructor(t){this._def=t}describe(t){return new e({...this._def,description:t})}alias(t){return new e({...this._def,short:t})}env(t){return new e({...this._def,env:t})}required(){return new e({...this._def,required:!0})}default(t){return new e({...this._def,default:t})}};function Wo(e){return new Is({_kind:"option",type:e})}function qo(){return Wo("string")}function Ko(){return Wo("number")}var te={string:qo,number:Ko};function A(){return new yr}var W={string:Uo,number:Bo};function sf(e){switch(e.type){case"unknown_option":{let t=`Unknown option "${e.name}".`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t}case"invalid_type":return`Invalid value for "${e.name}": expected ${e.expected}, got "${e.received}".`;case"missing_required":return e.kind==="option"?`Missing required option "--${e.name}".`:`Missing required argument <${e.name}>.`;case"unexpected_positional":return e.maxPositionals===0?`Unexpected argument "${e.value}". This command takes no positional arguments.`:`Unexpected argument "${e.value}". Expected at most ${e.maxPositionals} positional argument${e.maxPositionals===1?"":"s"}.`;case"missing_value":return`Option "--${e.name}" requires a value.`;case"unknown_command":{let t=`Unknown command "${e.path}".`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t}}}function $s(e){return e.map(sf).join(`
2
- `)}function of(e,t){let n=e.length,r=t.length,o=new Array((n+1)*(r+1));for(let s=0;s<=n;s++)o[s*(r+1)]=s;for(let s=0;s<=r;s++)o[s]=s;for(let s=1;s<=n;s++)for(let a=1;a<=r;a++){let i=e[s-1]===t[a-1]?0:1;o[s*(r+1)+a]=Math.min(o[(s-1)*(r+1)+a]+1,o[s*(r+1)+(a-1)]+1,o[(s-1)*(r+1)+(a-1)]+i)}return o[n*(r+1)+r]}function Er(e,t,n=3){return t.map(o=>({candidate:o,distance:of(e,o)})).filter(o=>o.distance<=n&&o.distance>0).sort((o,s)=>o.distance-s.distance).slice(0,2).map(o=>o.candidate)}function zo(e,t,n,r){let o=[],s=new Map,a=new Map;for(let[l,m]of Object.entries(e)){let h=Bn(l);s.set(h,{key:l,def:m}),m.short&&a.set(m.short,{key:l,def:m})}let i={},c=[],f=[],d=0;for(;d<n.length;){let l=n[d];if(l==="--"){for(d++;d<n.length;)f.push(n[d]),d++;break}if(l.startsWith("--")){let m=l.indexOf("="),h,p;m!==-1?(h=l.slice(2,m),p=l.slice(m+1)):h=l.slice(2);let g=s.get(h);if(!g){if(h.startsWith("no-")){let y=s.get(h.slice(3));if(y&&y.def._kind==="flag"){i[y.key]=y.def.counted?0:!1,d++;continue}}let b=[...s.keys()];o.push({type:"unknown_option",name:`--${h}`,suggestions:Er(h,b).map(y=>`--${y}`)}),d++;continue}if(g.def._kind==="flag"){g.def.counted?i[g.key]=(i[g.key]||0)+1:i[g.key]=!0,d++;continue}let w=p??n[++d];if(w===void 0){o.push({type:"missing_value",name:g.key}),d++;continue}let x=Un(w,g.def.type,g.key,o);x!==void 0&&(i[g.key]=x),d++;continue}if(l.startsWith("-")&&l.length>1){let m=l.slice(1);for(let h=0;h<m.length;h++){let p=m[h],g=a.get(p);if(!g){let y=[];s.has(p)&&y.push(`--${p}`),o.push({type:"unknown_option",name:`-${p}`,suggestions:y});continue}if(g.def._kind==="flag"){g.def.counted?i[g.key]=(i[g.key]||0)+1:i[g.key]=!0;continue}let w=m.slice(h+1),x=w.length>0?w:n[++d];if(x===void 0){o.push({type:"missing_value",name:g.key});break}let b=Un(x,g.def.type,g.key,o);b!==void 0&&(i[g.key]=b);break}d++;continue}c.push(l),d++}let u=0;for(let l=0;l<t.length;l++){let m=t[l],h=m.name??`arg${l}`;if(m.variadic){let p=c.slice(u);p.length>0?i[h]=p.map(g=>Un(g,m.type,h,o)):m.required?o.push({type:"missing_required",name:h,kind:"arg"}):m.default!==void 0?i[h]=m.default:i[h]=[],u=c.length}else{let p=c[u];p!==void 0?(i[h]=Un(p,m.type,h,o),u++):m.required?o.push({type:"missing_required",name:h,kind:"arg"}):m.default!==void 0&&(i[h]=m.default)}}if(u<c.length)for(let l=u;l<c.length;l++)o.push({type:"unexpected_positional",value:c[l],maxPositionals:t.length});for(let[l,m]of Object.entries(e))if(i[l]===void 0){if(m._kind==="flag")i[l]=m.default??(m.counted?0:!1);else if(m._kind==="option"){let h=m;if(h.env&&r?.[h.env]!==void 0){let p=Un(r[h.env],h.type,l,o);p!==void 0&&(i[l]=p)}i[l]===void 0&&(h.required&&h.default===void 0?o.push({type:"missing_required",name:l,kind:"option"}):h.default!==void 0&&(i[l]=h.default))}}return o.length>0?{ok:!1,errors:o}:{ok:!0,args:i,passthrough:f}}function Un(e,t,n,r){switch(t){case"string":return e;case"number":{let o=Number(e);if(Number.isNaN(o)){r.push({type:"invalid_type",name:n,expected:"number",received:e});return}return o}case"boolean":{if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;r.push({type:"invalid_type",name:n,expected:"boolean",received:e});return}default:return e}}function Bn(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Ts(e){let t=[],n=e.children.size>0;e.description?t.push(`${e.fullPath} - ${e.description}`):t.push(e.fullPath),t.push("");let r=[e.fullPath];n&&r.push("<command>"),Object.keys(e.options).length>0&&r.push("[options]");let o=e.args;for(let a of o){let i=a.name??"arg",c=a.variadic?`${i}...`:i;r.push(a.required?`<${c}>`:`[${c}]`)}if(t.push("Usage:"),t.push(` ${r.join(" ")}`),t.push(""),n){t.push("Commands:");let a=[];for(let[c,f]of e.children)a.push([c,f.description||""]);let i=Math.max(...a.map(([c])=>c.length));for(let[c,f]of a)if(f){let d=" ".repeat(i-c.length+2);t.push(` ${c}${d}${f}`)}else t.push(` ${c}`);t.push("")}if(o.length>0){t.push("Arguments:");let a=[];for(let c of o){let f=c.name??"arg",d=c.variadic?`${f}...`:f,u=[];c.description&&u.push(c.description),c.required&&u.push("(required)"),c.default!==void 0&&u.push(`(default: ${JSON.stringify(c.default)})`),a.push([d,u.join(" ")])}let i=Math.max(...a.map(([c])=>c.length));for(let[c,f]of a)if(f){let d=" ".repeat(i-c.length+2);t.push(` ${c}${d}${f}`)}else t.push(` ${c}`);t.push("")}let s=af(e.options);if(s.length>0&&(t.push("Options:"),t.push(...s),t.push("")),e.examples.length>0){t.push("Examples:");for(let a of e.examples)t.push(` ${a}`);t.push("")}return t.join(`
3
- `)}function af(e,t){let n=Object.entries(e);if(n.length===0)return[];let r=[];for(let[a,i]of n){let c=Bn(a);if(i._kind==="flag"){let f=i,d=[];f.short&&d.push(`-${f.short},`),d.push(`--${c}`);let u=[];f.description&&u.push(f.description),f.counted&&u.push("(counted)"),f.default!==void 0&&u.push(`(default: ${f.default})`),r.push([d.join(" "),u.join(" ")])}else{let f=i,d=[];f.short&&d.push(`-${f.short},`),d.push(`--${c} <${f.type}>`);let u=[];f.description&&u.push(f.description),f.required&&u.push("(required)"),f.default!==void 0&&u.push(`(default: ${JSON.stringify(f.default)})`),f.env&&u.push(`[env: ${f.env}]`),r.push([d.join(" "),u.join(" ")])}}let o=Math.max(...r.map(([a])=>a.length)),s=[];t&&s.push(t);for(let[a,i]of r)if(i){let c=" ".repeat(o-a.length+2);s.push(` ${a}${c}${i}`)}else s.push(` ${a}`);return s}function Vo(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r._def;return t}function Yo(e){return e?e.map(t=>t._def):[]}var xr=class e{name;description;options;args;examples;handler;transformArgs;children=new Map;parent;constructor(t,n,r,o,s,a,i){this.name=t,this.description=n,this.options=r,this.args=o,this.examples=s,this.handler=a,this.transformArgs=i}command(t,n){let r=new e(t,n.description,Vo(n.options),Yo(n.args),n.examples??[],n.handler,n.transformArgs);return r.parent=this,this.children.set(t,r),r}get fullPath(){let t=[],n=this;for(;n;)t.unshift(n.name),n=n.parent;return t.join(" ")}toCommand(){return{name:this.name,execute:this.execute.bind(this)}}get allOptions(){return this.options}toTokens(t){let n=[],r=this.allOptions,o=t;for(let[s,a]of Object.entries(r)){let i=o[s],c=Bn(s);if(a._kind==="flag")if(a.counted&&typeof i=="number"&&i>0)for(let f=0;f<i;f++)n.push(`--${c}`);else i===!0?n.push(`--${c}`):i===!1&&a.default===!0&&n.push(`--no-${c}`);else a._kind==="option"&&i!==void 0&&n.push(`--${c}`,String(i))}for(let s of this.args){let a=s.name??"arg",i=o[a];if(i!==void 0)if(s.variadic&&Array.isArray(i))for(let c of i)n.push(String(c));else n.push(String(i))}return n}async invoke(t,n){if(!this.handler)return{stdout:"",stderr:`Command "${this.fullPath}" has no handler`,exitCode:1};let r={...t},o=this.allOptions;for(let[s,a]of Object.entries(o))if(r[s]===void 0){if(a._kind==="flag")r[s]=a.default??(a.counted?0:!1);else if(a._kind==="option"){if(a.default!==void 0)r[s]=a.default;else if(a.required)return{stdout:"",stderr:`Missing required option "${s}"`,exitCode:1}}}for(let s of this.args){let a=s.name??"arg";if(r[a]===void 0){if(s.default!==void 0)r[a]=s.default;else if(s.required)return{stdout:"",stderr:`Missing required arg "${a}"`,exitCode:1}}}try{return await this.handler(r,n,{passthrough:[]})}catch(s){return{stdout:"",stderr:s instanceof Error?s.message:String(s),exitCode:1}}}async execute(t,n){let r=n?.env?Object.fromEntries(n.env):{},o=t[0];if(o&&!o.startsWith("-")){let s=this.children.get(o);if(s)return s.execute(t.slice(1),n)}if(cf(t))return{stdout:Ts(this),stderr:"",exitCode:0};if(this.handler){let s=this.transformArgs?this.transformArgs([...t]):[...t],a=zo(this.allOptions,this.args,s,r);if(!a.ok)return{stdout:"",stderr:$s(a.errors),exitCode:1};try{return await this.handler(a.args,n,{passthrough:a.passthrough})}catch(i){return{stdout:"",stderr:i instanceof Error?i.message:String(i),exitCode:1}}}if(o&&!o.startsWith("-")){let s=Er(o,[...this.children.keys()]);return{stdout:"",stderr:$s([{type:"unknown_command",path:`${this.fullPath} ${o}`,suggestions:s}]),exitCode:1}}return{stdout:Ts(this),stderr:"",exitCode:0}}};function Hs(e,t){return new xr(e,t.description,Vo(t.options),Yo(t.args),t.examples??[],t.handler,t.transformArgs)}function cf(e){return e.some(t=>t==="--help"||t==="-h")}function kr(e){if(e==="")return".";if(e==="/")return"/";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=e.split("/"),o=[];for(let a of r)a===""||a==="."||(a===".."?t||o.length>0&&o[o.length-1]!==".."?o.pop():o.push(".."):o.push(a));let s=o.join("/");return t&&(s=`/${s}`),n&&s.length>1&&!s.endsWith("/")&&(s+="/"),s||(t?"/":n?"./":".")}function v(...e){if(e.length===0)return".";let t=e.filter(n=>n!=="").join("/");return t===""?".":kr(t)}function ct(...e){let t="";for(let n=e.length-1;n>=0;n--){let r=e[n];if(r&&(t=t?`${r}/${t}`:r,r.charCodeAt(0)===47))break}return kr(t||".")}function Pt(e){if(e==="")return".";if(e==="/")return"/";let t=e.length;for(;t>1&&e.charCodeAt(t-1)===47;)t--;let n=e.slice(0,t),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}function Wn(e,t){if(e==="")return"";let n=e.length;for(;n>1&&e.charCodeAt(n-1)===47;)n--;let r=e.slice(0,n);if(r==="/")return"";let o=r.lastIndexOf("/"),s=o===-1?r:r.slice(o+1);return t&&s.endsWith(t)&&s.length>t.length?s.slice(0,s.length-t.length):s}function Ke(e,t){let n=kr(e),r=kr(t);if(n===r)return"";let o=n==="/"?[""]:n.split("/"),s=r==="/"?[""]:r.split("/"),a=n.charCodeAt(0)===47,i=r.charCodeAt(0)===47,f=a&&i?1:0,d=Math.min(o.length,s.length);for(;f<d&&o[f]===s[f];)f++;let u=o.length-f,l=s.slice(f),m=[];for(let h=0;h<u;h++)m.push("..");for(let h of l)m.push(h);return m.join("/")||"."}function ff(e){let t={},n=null;for(let r of e.split(`
4
- `)){let o=r.trim();if(!(!o||o.startsWith("#")||o.startsWith(";"))){if(o.startsWith("[")){let s=o.indexOf("]");if(s===-1)continue;n=o.slice(1,s).trim(),n in t||(t[n]={});continue}if(n!==null){let s=t[n];if(!s)continue;let a=o.indexOf("=");if(a===-1){let i=o.trim().toLowerCase();s[i]="true"}else{let i=o.slice(0,a).trim().toLowerCase(),c=o.slice(a+1).trim();s[i]=c}}}}return t}function As(e){let t=[];for(let[n,r]of Object.entries(e)){t.push(`[${n}]`);for(let[o,s]of Object.entries(r))t.push(` ${o} = ${s}`)}return`${t.join(`
1
+ var Er=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ts=class e{_def;constructor(t){this._def=t}name(t){return new e({...this._def,name:t})}describe(t){return new e({...this._def,description:t})}optional(){return new e({...this._def,required:!1})}variadic(){return new e({...this._def,variadic:!0})}default(t){return new e({...this._def,required:!1,default:t})}};function Bo(e){return new Ts({_kind:"arg",type:e,required:!0})}function Wo(){return Bo("string")}function qo(){return Bo("number")}var xr=class e{_def;constructor(t={_kind:"flag"}){this._def=t}describe(t){return new e({...this._def,description:t})}alias(t){return new e({...this._def,short:t})}default(t){return new e({...this._def,default:t})}count(){return new e({...this._def,counted:!0})}};var Hs=class e{_def;constructor(t){this._def=t}describe(t){return new e({...this._def,description:t})}alias(t){return new e({...this._def,short:t})}env(t){return new e({...this._def,env:t})}required(){return new e({...this._def,required:!0})}default(t){return new e({...this._def,default:t})}};function Ko(e){return new Hs({_kind:"option",type:e})}function zo(){return Ko("string")}function Vo(){return Ko("number")}var te={string:zo,number:Vo};function v(){return new xr}var W={string:Wo,number:qo};function af(e){switch(e.type){case"unknown_option":{let t=`Unknown option "${e.name}".`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t}case"invalid_type":return`Invalid value for "${e.name}": expected ${e.expected}, got "${e.received}".`;case"missing_required":return e.kind==="option"?`Missing required option "--${e.name}".`:`Missing required argument <${e.name}>.`;case"unexpected_positional":return e.maxPositionals===0?`Unexpected argument "${e.value}". This command takes no positional arguments.`:`Unexpected argument "${e.value}". Expected at most ${e.maxPositionals} positional argument${e.maxPositionals===1?"":"s"}.`;case"missing_value":return`Option "--${e.name}" requires a value.`;case"unknown_command":{let t=`Unknown command "${e.path}".`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t}}}function As(e){return e.map(af).join(`
2
+ `)}function cf(e,t){let n=e.length,r=t.length,o=new Array((n+1)*(r+1));for(let s=0;s<=n;s++)o[s*(r+1)]=s;for(let s=0;s<=r;s++)o[s]=s;for(let s=1;s<=n;s++)for(let a=1;a<=r;a++){let i=e[s-1]===t[a-1]?0:1;o[s*(r+1)+a]=Math.min(o[(s-1)*(r+1)+a]+1,o[s*(r+1)+(a-1)]+1,o[(s-1)*(r+1)+(a-1)]+i)}return o[n*(r+1)+r]}function kr(e,t,n=3){return t.map(o=>({candidate:o,distance:cf(e,o)})).filter(o=>o.distance<=n&&o.distance>0).sort((o,s)=>o.distance-s.distance).slice(0,2).map(o=>o.candidate)}function Yo(e,t,n,r){let o=[],s=new Map,a=new Map;for(let[l,m]of Object.entries(e)){let h=Kn(l);s.set(h,{key:l,def:m}),m.short&&a.set(m.short,{key:l,def:m})}let i={},c=[],f=[],d=0;for(;d<n.length;){let l=n[d];if(l==="--"){for(d++;d<n.length;)f.push(n[d]),d++;break}if(l.startsWith("--")){let m=l.indexOf("="),h,p;m!==-1?(h=l.slice(2,m),p=l.slice(m+1)):h=l.slice(2);let g=s.get(h);if(!g){if(h.startsWith("no-")){let E=s.get(h.slice(3));if(E&&E.def._kind==="flag"){i[E.key]=E.def.counted?0:!1,d++;continue}}let b=[...s.keys()];o.push({type:"unknown_option",name:`--${h}`,suggestions:kr(h,b).map(E=>`--${E}`)}),d++;continue}if(g.def._kind==="flag"){g.def.counted?i[g.key]=(i[g.key]||0)+1:i[g.key]=!0,d++;continue}let w=p??n[++d];if(w===void 0){o.push({type:"missing_value",name:g.key}),d++;continue}let x=qn(w,g.def.type,g.key,o);x!==void 0&&(i[g.key]=x),d++;continue}if(l.startsWith("-")&&l.length>1){let m=l.slice(1);for(let h=0;h<m.length;h++){let p=m[h],g=a.get(p);if(!g){let E=[];s.has(p)&&E.push(`--${p}`),o.push({type:"unknown_option",name:`-${p}`,suggestions:E});continue}if(g.def._kind==="flag"){g.def.counted?i[g.key]=(i[g.key]||0)+1:i[g.key]=!0;continue}let w=m.slice(h+1),x=w.length>0?w:n[++d];if(x===void 0){o.push({type:"missing_value",name:g.key});break}let b=qn(x,g.def.type,g.key,o);b!==void 0&&(i[g.key]=b);break}d++;continue}c.push(l),d++}let u=0;for(let l=0;l<t.length;l++){let m=t[l],h=m.name??`arg${l}`;if(m.variadic){let p=c.slice(u);p.length>0?i[h]=p.map(g=>qn(g,m.type,h,o)):m.required?o.push({type:"missing_required",name:h,kind:"arg"}):m.default!==void 0?i[h]=m.default:i[h]=[],u=c.length}else{let p=c[u];p!==void 0?(i[h]=qn(p,m.type,h,o),u++):m.required?o.push({type:"missing_required",name:h,kind:"arg"}):m.default!==void 0&&(i[h]=m.default)}}if(u<c.length)for(let l=u;l<c.length;l++)o.push({type:"unexpected_positional",value:c[l],maxPositionals:t.length});for(let[l,m]of Object.entries(e))if(i[l]===void 0){if(m._kind==="flag")i[l]=m.default??(m.counted?0:!1);else if(m._kind==="option"){let h=m;if(h.env&&r?.[h.env]!==void 0){let p=qn(r[h.env],h.type,l,o);p!==void 0&&(i[l]=p)}i[l]===void 0&&(h.required&&h.default===void 0?o.push({type:"missing_required",name:l,kind:"option"}):h.default!==void 0&&(i[l]=h.default))}}return o.length>0?{ok:!1,errors:o}:{ok:!0,args:i,passthrough:f}}function qn(e,t,n,r){switch(t){case"string":return e;case"number":{let o=Number(e);if(Number.isNaN(o)){r.push({type:"invalid_type",name:n,expected:"number",received:e});return}return o}case"boolean":{if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;r.push({type:"invalid_type",name:n,expected:"boolean",received:e});return}default:return e}}function Kn(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function vs(e){let t=[],n=e.children.size>0;e.description?t.push(`${e.fullPath} - ${e.description}`):t.push(e.fullPath),t.push("");let r=[e.fullPath];n&&r.push("<command>"),Object.keys(e.options).length>0&&r.push("[options]");let o=e.args;for(let a of o){let i=a.name??"arg",c=a.variadic?`${i}...`:i;r.push(a.required?`<${c}>`:`[${c}]`)}if(t.push("Usage:"),t.push(` ${r.join(" ")}`),t.push(""),n){t.push("Commands:");let a=[];for(let[c,f]of e.children)a.push([c,f.description||""]);let i=Math.max(...a.map(([c])=>c.length));for(let[c,f]of a)if(f){let d=" ".repeat(i-c.length+2);t.push(` ${c}${d}${f}`)}else t.push(` ${c}`);t.push("")}if(o.length>0){t.push("Arguments:");let a=[];for(let c of o){let f=c.name??"arg",d=c.variadic?`${f}...`:f,u=[];c.description&&u.push(c.description),c.required&&u.push("(required)"),c.default!==void 0&&u.push(`(default: ${JSON.stringify(c.default)})`),a.push([d,u.join(" ")])}let i=Math.max(...a.map(([c])=>c.length));for(let[c,f]of a)if(f){let d=" ".repeat(i-c.length+2);t.push(` ${c}${d}${f}`)}else t.push(` ${c}`);t.push("")}let s=ff(e.options);if(s.length>0&&(t.push("Options:"),t.push(...s),t.push("")),e.examples.length>0){t.push("Examples:");for(let a of e.examples)t.push(` ${a}`);t.push("")}return t.join(`
3
+ `)}function ff(e,t){let n=Object.entries(e);if(n.length===0)return[];let r=[];for(let[a,i]of n){let c=Kn(a);if(i._kind==="flag"){let f=i,d=[];f.short&&d.push(`-${f.short},`),d.push(`--${c}`);let u=[];f.description&&u.push(f.description),f.counted&&u.push("(counted)"),f.default!==void 0&&u.push(`(default: ${f.default})`),r.push([d.join(" "),u.join(" ")])}else{let f=i,d=[];f.short&&d.push(`-${f.short},`),d.push(`--${c} <${f.type}>`);let u=[];f.description&&u.push(f.description),f.required&&u.push("(required)"),f.default!==void 0&&u.push(`(default: ${JSON.stringify(f.default)})`),f.env&&u.push(`[env: ${f.env}]`),r.push([d.join(" "),u.join(" ")])}}let o=Math.max(...r.map(([a])=>a.length)),s=[];t&&s.push(t);for(let[a,i]of r)if(i){let c=" ".repeat(o-a.length+2);s.push(` ${a}${c}${i}`)}else s.push(` ${a}`);return s}function Xo(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r._def;return t}function Zo(e){return e?e.map(t=>t._def):[]}var Cr=class e{name;description;options;args;examples;handler;transformArgs;children=new Map;parent;constructor(t,n,r,o,s,a,i){this.name=t,this.description=n,this.options=r,this.args=o,this.examples=s,this.handler=a,this.transformArgs=i}command(t,n){let r=new e(t,n.description,Xo(n.options),Zo(n.args),n.examples??[],n.handler,n.transformArgs);return r.parent=this,this.children.set(t,r),r}get fullPath(){let t=[],n=this;for(;n;)t.unshift(n.name),n=n.parent;return t.join(" ")}toCommand(){return{name:this.name,execute:this.execute.bind(this)}}get allOptions(){return this.options}toTokens(t){let n=[],r=this.allOptions,o=t;for(let[s,a]of Object.entries(r)){let i=o[s],c=Kn(s);if(a._kind==="flag")if(a.counted&&typeof i=="number"&&i>0)for(let f=0;f<i;f++)n.push(`--${c}`);else i===!0?n.push(`--${c}`):i===!1&&a.default===!0&&n.push(`--no-${c}`);else a._kind==="option"&&i!==void 0&&n.push(`--${c}`,String(i))}for(let s of this.args){let a=s.name??"arg",i=o[a];if(i!==void 0)if(s.variadic&&Array.isArray(i))for(let c of i)n.push(String(c));else n.push(String(i))}return n}async invoke(t,n){if(!this.handler)return{stdout:"",stderr:`Command "${this.fullPath}" has no handler`,exitCode:1};let r={...t},o=this.allOptions;for(let[s,a]of Object.entries(o))if(r[s]===void 0){if(a._kind==="flag")r[s]=a.default??(a.counted?0:!1);else if(a._kind==="option"){if(a.default!==void 0)r[s]=a.default;else if(a.required)return{stdout:"",stderr:`Missing required option "${s}"`,exitCode:1}}}for(let s of this.args){let a=s.name??"arg";if(r[a]===void 0){if(s.default!==void 0)r[a]=s.default;else if(s.required)return{stdout:"",stderr:`Missing required arg "${a}"`,exitCode:1}}}try{return await this.handler(r,n,{passthrough:[]})}catch(s){return{stdout:"",stderr:s instanceof Error?s.message:String(s),exitCode:1}}}async execute(t,n){let r=n?.env?Object.fromEntries(n.env):{},o=t[0];if(o&&!o.startsWith("-")){let s=this.children.get(o);if(s)return s.execute(t.slice(1),n)}if(df(t))return{stdout:vs(this),stderr:"",exitCode:0};if(this.handler){let s=this.transformArgs?this.transformArgs([...t]):[...t],a=Yo(this.allOptions,this.args,s,r);if(!a.ok)return{stdout:"",stderr:As(a.errors),exitCode:1};try{return await this.handler(a.args,n,{passthrough:a.passthrough})}catch(i){return{stdout:"",stderr:i instanceof Error?i.message:String(i),exitCode:1}}}if(o&&!o.startsWith("-")){let s=kr(o,[...this.children.keys()]);return{stdout:"",stderr:As([{type:"unknown_command",path:`${this.fullPath} ${o}`,suggestions:s}]),exitCode:1}}return{stdout:vs(this),stderr:"",exitCode:0}}};function Ss(e,t){return new Cr(e,t.description,Xo(t.options),Zo(t.args),t.examples??[],t.handler,t.transformArgs)}function df(e){return e.some(t=>t==="--help"||t==="-h")}function Pr(e){if(e==="")return".";if(e==="/")return"/";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=e.split("/"),o=[];for(let a of r)a===""||a==="."||(a===".."?t||o.length>0&&o[o.length-1]!==".."?o.pop():o.push(".."):o.push(a));let s=o.join("/");return t&&(s=`/${s}`),n&&s.length>1&&!s.endsWith("/")&&(s+="/"),s||(t?"/":n?"./":".")}function H(...e){if(e.length===0)return".";let t=e.filter(n=>n!=="").join("/");return t===""?".":Pr(t)}function ft(...e){let t="";for(let n=e.length-1;n>=0;n--){let r=e[n];if(r&&(t=t?`${r}/${t}`:r,r.charCodeAt(0)===47))break}return Pr(t||".")}function Pt(e){if(e==="")return".";if(e==="/")return"/";let t=e.length;for(;t>1&&e.charCodeAt(t-1)===47;)t--;let n=e.slice(0,t),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}function zn(e,t){if(e==="")return"";let n=e.length;for(;n>1&&e.charCodeAt(n-1)===47;)n--;let r=e.slice(0,n);if(r==="/")return"";let o=r.lastIndexOf("/"),s=o===-1?r:r.slice(o+1);return t&&s.endsWith(t)&&s.length>t.length?s.slice(0,s.length-t.length):s}function Ke(e,t){let n=Pr(e),r=Pr(t);if(n===r)return"";let o=n==="/"?[""]:n.split("/"),s=r==="/"?[""]:r.split("/"),a=n.charCodeAt(0)===47,i=r.charCodeAt(0)===47,f=a&&i?1:0,d=Math.min(o.length,s.length);for(;f<d&&o[f]===s[f];)f++;let u=o.length-f,l=s.slice(f),m=[];for(let h=0;h<u;h++)m.push("..");for(let h of l)m.push(h);return m.join("/")||"."}function lf(e){let t={},n=null;for(let r of e.split(`
4
+ `)){let o=r.trim();if(!(!o||o.startsWith("#")||o.startsWith(";"))){if(o.startsWith("[")){let s=o.indexOf("]");if(s===-1)continue;n=o.slice(1,s).trim(),n in t||(t[n]={});continue}if(n!==null){let s=t[n];if(!s)continue;let a=o.indexOf("=");if(a===-1){let i=o.trim().toLowerCase();s[i]="true"}else{let i=o.slice(0,a).trim().toLowerCase(),c=o.slice(a+1).trim();s[i]=c}}}}return t}function Ds(e){let t=[];for(let[n,r]of Object.entries(e)){t.push(`[${n}]`);for(let[o,s]of Object.entries(r))t.push(` ${o} = ${s}`)}return`${t.join(`
5
5
  `)}
6
- `}async function ae(e){let t=v(e.gitDir,"config");if(!await e.fs.exists(t))return{};let n=await e.fs.readFile(t);return ff(n)}async function Ge(e,t){let n=v(e.gitDir,"config");await e.fs.writeFile(n,As(t))}async function bt(e,t){let n=await ae(e),{section:r,key:o}=Ss(t);return n[r]?.[o]}async function vs(e,t,n){let r=await ae(e),{section:o,key:s}=Ss(t);r[o]||(r[o]={}),r[o][s]=n,await Ge(e,r)}async function Xo(e,t){let n=await ae(e),{section:r,key:o}=Ss(t);return n[r]?.[o]?(delete n[r][o],Object.keys(n[r]).length===0&&delete n[r],await Ge(e,n),!0):!1}function Ss(e){let t=e.split(".");if(t.length===2){let[n="",r=""]=t;return{section:n,key:r.toLowerCase()}}if(t.length===3){let[n="",r="",o=""]=t;return{section:`${n} "${r}"`,key:o.toLowerCase()}}throw new Error(`Invalid config key: "${e}"`)}var df={author:{name:"GIT_AUTHOR_NAME",email:"GIT_AUTHOR_EMAIL",date:"GIT_AUTHOR_DATE"},committer:{name:"GIT_COMMITTER_NAME",email:"GIT_COMMITTER_EMAIL",date:"GIT_COMMITTER_DATE"}};function Cr(e,t){return Jo(e,t,"author")}function qn(e,t){return Jo(e,t,"committer")}async function Jo(e,t,n){let r=df[n],o=e.identityOverride;if(o?.locked)return{name:o.name,email:o.email,timestamp:Zo(t.get(r.date)),timezone:"+0000"};let s=t.get(r.name)??o?.name??await bt(e,"user.name"),a=t.get(r.email)??o?.email??await bt(e,"user.email");if(!s||!a)throw new Error(`${n.charAt(0).toUpperCase()}${n.slice(1)} identity unknown
6
+ `}async function ce(e){let t=H(e.gitDir,"config");if(!await e.fs.exists(t))return{};let n=await e.fs.readFile(t);return lf(n)}async function Ge(e,t){let n=H(e.gitDir,"config");await e.fs.writeFile(n,Ds(t))}async function Et(e,t){let n=await ce(e),{section:r,key:o}=js(t);return n[r]?.[o]}async function Ms(e,t,n){let r=await ce(e),{section:o,key:s}=js(t);r[o]||(r[o]={}),r[o][s]=n,await Ge(e,r)}async function Jo(e,t){let n=await ce(e),{section:r,key:o}=js(t);return n[r]?.[o]?(delete n[r][o],Object.keys(n[r]).length===0&&delete n[r],await Ge(e,n),!0):!1}function js(e){let t=e.split(".");if(t.length===2){let[n="",r=""]=t;return{section:n,key:r.toLowerCase()}}if(t.length===3){let[n="",r="",o=""]=t;return{section:`${n} "${r}"`,key:o.toLowerCase()}}throw new Error(`Invalid config key: "${e}"`)}var uf={author:{name:"GIT_AUTHOR_NAME",email:"GIT_AUTHOR_EMAIL",date:"GIT_AUTHOR_DATE"},committer:{name:"GIT_COMMITTER_NAME",email:"GIT_COMMITTER_EMAIL",date:"GIT_COMMITTER_DATE"}};function Or(e,t){return ei(e,t,"author")}function Vn(e,t){return ei(e,t,"committer")}async function ei(e,t,n){let r=uf[n],o=e.identityOverride;if(o?.locked)return{name:o.name,email:o.email,timestamp:Qo(t.get(r.date)),timezone:"+0000"};let s=t.get(r.name)??await Et(e,"user.name")??o?.name,a=t.get(r.email)??await Et(e,"user.email")??o?.email;if(!s||!a)throw new Error(`${n.charAt(0).toUpperCase()}${n.slice(1)} identity unknown
7
7
 
8
8
  *** Please tell me who you are.
9
9
 
@@ -11,96 +11,106 @@ Run
11
11
 
12
12
  git config user.email "you@example.com"
13
13
  git config user.name "Your Name"
14
- `);return{name:s,email:a,timestamp:Zo(t.get(r.date)),timezone:"+0000"}}async function Ot(e,t){try{let n=await qn(e,t);return{name:n.name,email:n.email,timestamp:n.timestamp,tz:n.timezone}}catch{return{name:t.get("GIT_COMMITTER_NAME")??"",email:t.get("GIT_COMMITTER_EMAIL")??"",timestamp:Math.floor(Date.now()/1e3),tz:"+0000"}}}function Zo(e){if(e){let t=parseInt(e,10);if(!Number.isNaN(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return Math.floor(n/1e3)}return Math.floor(Date.now()/1e3)}var Z="0000000000000000000000000000000000000000",Qo=(()=>{let e=new Array(256);for(let t=0;t<256;t++)e[t]=(t>>4).toString(16)+(t&15).toString(16);return e})();function qt(e){let t="";for(let n=0;n<20;n++)t+=Qo[e[n]];return t}function Pr(e,t){let n="";for(let r=0;r<20;r++)n+=Qo[e[t+r]];return n}function ft(e){let t=new Uint8Array(20);for(let n=0;n<20;n++)t[n]=parseInt(e.slice(n*2,n*2+2),16);return t}var lf=new TextEncoder;function Ds(e){return typeof e=="string"?lf.encode(e):e}function uf(){if(typeof globalThis.Bun<"u")return()=>{let e=new Bun.CryptoHasher("sha1"),t={update(n){return e.update(Ds(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t};try{let e=br(["node","crypto"].join(":"));if(typeof e.createHash=="function")return()=>{let t=e.createHash("sha1"),n={update(r){return t.update(Ds(r)),n},hex:()=>Promise.resolve(t.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let e=[],t={update(n){return e.push(Ds(n)),t},async hex(){let n=0;for(let a of e)n+=a.byteLength;let r=new Uint8Array(n),o=0;for(let a of e)r.set(a,o),o+=a.byteLength;let s=await crypto.subtle.digest("SHA-1",r);return qt(new Uint8Array(s))}};return t};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var ei=uf(),Kt=ei;async function On(e){return ei().update(e).hex()}var ti=1145655875,Ms=2;async function U(e){let t=v(e.gitDir,"index");if(!await e.fs.exists(t))return{version:Ms,entries:[]};let n=await e.fs.readFileBuffer(t);return mf(n)}async function re(e,t){let n=v(e.gitDir,"index"),r=await hf(t);await e.fs.writeFile(n,r)}function Xe(e,t){let n;return t.stage===0?n=e.entries.filter(r=>r.path!==t.path):n=e.entries.filter(r=>!(r.path===t.path&&r.stage===t.stage)),n.push(t),n.sort(js),{...e,entries:n}}function Ne(e,t){return{...e,entries:e.entries.filter(n=>n.path!==t)}}function Dt(e,t,n=0){return e.entries.find(r=>r.path===t&&r.stage===n)}function dt(e){return e.entries.some(t=>t.stage>0)}function Rt(e){return[...new Set(e.entries.filter(t=>t.stage>0).map(t=>t.path))]}function xe(e){return e.entries.filter(t=>t.stage===0)}function ni(){return{version:Ms,entries:[]}}function Or(e){let t=[...e].sort(js);return{version:Ms,entries:t}}function pe(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}function mf(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=t.getUint32(n);if(n+=4,r!==ti)throw new Error(`Invalid index signature: 0x${r.toString(16)}`);let o=t.getUint32(n);n+=4;let s=t.getUint32(n);n+=4;let a=[];for(let i=0;i<s;i++){let c=n,f={ctimeSeconds:t.getUint32(n),ctimeNanoseconds:t.getUint32(n+4),mtimeSeconds:t.getUint32(n+8),mtimeNanoseconds:t.getUint32(n+12),dev:t.getUint32(n+16),ino:t.getUint32(n+20),uid:t.getUint32(n+28),gid:t.getUint32(n+32),size:t.getUint32(n+36)},d=t.getUint32(n+24);n+=40;let u=e.subarray(n,n+20),l=qt(u);n+=20;let m=t.getUint16(n);n+=2;let h=m>>12&3,p=m&4095,g;if(p<4095)g=new TextDecoder().decode(e.subarray(n,n+p));else{let b=n;for(;b<e.byteLength&&e[b]!==0;)b++;g=new TextDecoder().decode(e.subarray(n,b))}let w=62+g.length+1,x=Math.ceil(w/8)*8;n=c+x,a.push({path:g,mode:d,hash:l,stage:h,stat:f})}return{version:o,entries:a}}async function hf(e){let t=[...e.entries].sort(js),n=12;for(let d of t){let u=62+d.path.length+1;n+=Math.ceil(u/8)*8}n+=20;let r=new ArrayBuffer(n),o=new Uint8Array(r),s=new DataView(r),a=0;s.setUint32(a,ti),a+=4,s.setUint32(a,e.version),a+=4,s.setUint32(a,t.length),a+=4;for(let d of t){let u=a;s.setUint32(a,d.stat.ctimeSeconds),s.setUint32(a+4,d.stat.ctimeNanoseconds),s.setUint32(a+8,d.stat.mtimeSeconds),s.setUint32(a+12,d.stat.mtimeNanoseconds),s.setUint32(a+16,d.stat.dev),s.setUint32(a+20,d.stat.ino),s.setUint32(a+24,d.mode),s.setUint32(a+28,d.stat.uid),s.setUint32(a+32,d.stat.gid),s.setUint32(a+36,d.stat.size),a+=40;let l=ft(d.hash);o.set(l,a),a+=20;let m=Math.min(d.path.length,4095),h=(d.stage&3)<<12|m;s.setUint16(a,h),a+=2;let p=new TextEncoder().encode(d.path);o.set(p,a),a+=p.byteLength,o[a]=0,a+=1;let g=62+p.byteLength+1,w=Math.ceil(g/8)*8;a=u+w}let i=o.subarray(0,a),c=await On(i),f=ft(c);return o.set(f,a),o}function js(e,t){return e.path<t.path?-1:e.path>t.path?1:e.stage-t.stage}var ri=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;ri[e]=t}function Ls(e){let t=4294967295;for(let n=0;n<e.byteLength;n++)t=ri[(t^e[n])&255]^t>>>8;return(t^4294967295)>>>0}function pf(){try{let e=br(["node","zlib"].join(":"));if(typeof e.deflateSync=="function"&&typeof e.inflateSync=="function")return{deflate:t=>Promise.resolve(new Uint8Array(e.deflateSync(t))),inflate:t=>Promise.resolve(new Uint8Array(e.inflateSync(t)))}}catch{}if(typeof globalThis.CompressionStream=="function"&&typeof globalThis.DecompressionStream=="function")return{async deflate(e){let t=new CompressionStream("deflate"),n=t.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())},async inflate(e){let t=new DecompressionStream("deflate"),n=t.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())}};throw new Error("No zlib implementation available. Requires Bun, Node.js, Deno, or a browser with CompressionStream.")}var si=pf(),Rn=si.deflate,Mt=si.inflate;var Rr=1346454347,Ns=2,ai=1,ci=2,fi=3,di=4,Kn=6,_s=7,gf={[ai]:"commit",[ci]:"tree",[fi]:"blob",[di]:"tag"},li={commit:ai,tree:ci,blob:fi,tag:di};async function ui(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0);if(n!==Rr)throw new Error(`Invalid pack signature: 0x${n.toString(16)} (expected 0x${Rr.toString(16)})`);let r=t.getUint32(4);if(r!==Ns)throw new Error(`Unsupported pack version: ${r}`);let o=t.getUint32(8),s=[],a=12;for(let c=0;c<o;c++){let f=await wf(e,a);s.push(f),a=f.nextOffset}return(await bf(s)).map((c,f)=>({...c,offset:s[f].headerOffset,nextOffset:s[f].nextOffset}))}async function wf(e,t){let n=t,r=e[t++],o=r>>4&7,s=r&15,a=4;for(;r&128;)r=e[t++],s|=(r&127)<<a,a+=7;let i,c;if(o===Kn){let u=e[t++];for(i=u&127;u&128;)i+=1,u=e[t++],i=(i<<7)+(u&127);i=n-i}else o===_s&&(c=Pr(e,t),t+=20);let{result:f,bytesConsumed:d}=await xf(e,t,s);return{headerOffset:n,typeNum:o,inflated:f,baseOffset:i,baseHash:c,nextOffset:t+d}}async function bf(e){let t=new Map;for(let o=0;o<e.length;o++)t.set(e[o].headerOffset,o);let n=new Array(e.length).fill(null);async function r(o){let s=n[o];if(s)return s;let a=e[o];if(a.typeNum!==Kn&&a.typeNum!==_s){let u=gf[a.typeNum];if(!u)throw new Error(`Unknown object type: ${a.typeNum}`);let l={type:u,content:a.inflated,hash:await ii(u,a.inflated)};return n[o]=l,l}let i;if(a.typeNum===Kn){if(i=t.get(a.baseOffset),i===void 0)throw new Error(`OFS_DELTA base not found at offset ${a.baseOffset}`)}else if(i=await yf(e,n,a.baseHash,r),i===void 0)throw new Error(`REF_DELTA base not found for hash ${a.baseHash}`);let c=await r(i),f=Ir(c.content,a.inflated),d={type:c.type,content:f,hash:await ii(c.type,f)};return n[o]=d,d}for(let o=0;o<e.length;o++)await r(o);return n}async function yf(e,t,n,r){for(let o=0;o<t.length;o++)if(t[o]?.hash===n)return o;for(let o=0;o<e.length;o++){let s=e[o];if(s.typeNum!==Kn&&s.typeNum!==_s&&(await r(o)).hash===n)return o}}function Ir(e,t){let n=0,{value:r,newPos:o}=oi(t,n);if(n=o,r!==e.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${e.byteLength}`);let{value:s,newPos:a}=oi(t,n);n=a;let i=new Uint8Array(s),c=0;for(;n<t.byteLength;){let f=t[n++];if(f&128){let d=0,u=0;f&1&&(d=t[n++]),f&2&&(d|=t[n++]<<8),f&4&&(d|=t[n++]<<16),f&8&&(d|=t[n++]<<24),f&16&&(u=t[n++]),f&32&&(u|=t[n++]<<8),f&64&&(u|=t[n++]<<16),u===0&&(u=65536),i.set(e.subarray(d,d+u),c),c+=u}else if(f>0)i.set(t.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==s)throw new Error(`Delta produced ${c} bytes, expected ${s}`);return i}async function $r(e){let t=[],n=new Uint8Array(12),r=new DataView(n.buffer);r.setUint32(0,Rr),r.setUint32(4,Ns),r.setUint32(8,e.length),t.push(n);for(let d of e){let u=li[d.type],l=await Rn(d.content),m=Gs(u,d.content.byteLength);t.push(m),t.push(l)}let o=0;for(let d of t)o+=d.byteLength;o+=20;let s=new Uint8Array(o),a=0;for(let d of t)s.set(d,a),a+=d.byteLength;let i=Kt();i.update(s.subarray(0,a));let c=await i.hex(),f=ft(c);return s.set(f,a),s}async function mi(e){let t=[],n=new Map,r=new Uint8Array(12),o=new DataView(r.buffer);o.setUint32(0,Rr),o.setUint32(4,Ns),o.setUint32(8,e.length),t.push(r);let s=12,a=[];for(let l of e){let m=s;n.set(l.hash,s);let h=l.delta&&l.deltaBaseHash?n.get(l.deltaBaseHash):void 0;if(l.delta&&h!==void 0){let p=Gs(Kn,l.delta.byteLength),g=Ef(s-h),w=await Rn(l.delta);t.push(p,g,w),s+=p.byteLength+g.byteLength+w.byteLength}else{let p=li[l.type],g=Gs(p,l.content.byteLength),w=await Rn(l.content);t.push(g,w),s+=g.byteLength+w.byteLength}a.push({hash:l.hash,offset:m,nextOffset:s})}let i=0;for(let l of t)i+=l.byteLength;i+=20;let c=new Uint8Array(i),f=0;for(let l of t)c.set(l,f),f+=l.byteLength;let d=Kt();d.update(c.subarray(0,f));let u=await d.hex();return c.set(ft(u),f),{data:c,entries:a}}function Ef(e){let t=[];t.push(e&127);let n=e>>>7;for(;n>0;)t.unshift(128|--n&127),n>>>=7;return new Uint8Array(t)}function Gs(e,t){let n=[],r=e<<4|t&15;for(t>>=4;t>0;)n.push(r|128),r=t&127,t>>=7;return n.push(r),new Uint8Array(n)}function oi(e,t){let n=0,r=0,o;do o=e[t++],n|=(o&127)<<r,r+=7;while(o&128);return{value:n,newPos:t}}async function xf(e,t,n){let r=e.subarray(t),o=await Mt(r);if(o.byteLength!==n)throw new Error(`Inflate size mismatch: got ${o.byteLength}, expected ${n}`);let s=2,a=r.byteLength;for(;s<a;){let i=s+a>>>1;try{(await Mt(r.subarray(0,i))).byteLength===n?a=i:s=i+1}catch{s=i+1}}return{result:o,bytesConsumed:s}}var kf=new TextEncoder;async function ii(e,t){let n=kf.encode(`${e} ${t.byteLength}\0`),r=Kt();return r.update(n),r.update(t),r.hex()}var hi=4285812579,pi=2,un=class{fanout;hashes;offsets;largeOffsets;count;constructor(t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0)!==hi)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==pi)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let s=0;s<256;s++)this.fanout[s]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(t.buffer,t.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let s=0;s<this.count;s++)this.offsets[s]=n.getUint32(r),r+=4;let o=!1;for(let s=0;s<this.count;s++)if(this.offsets[s]&2147483648){o=!0;break}this.largeOffsets=o?new DataView(t.buffer,t.byteOffset+r):null}lookup(t){let n=ft(t),r=n[0],o=r===0?0:this.fanout[r-1],s=this.fanout[r],a=o,i=s;for(;a<i;){let c=a+i>>>1,f=this.compareAt(c,n);if(f<0)a=c+1;else if(f>0)i=c;else return this.getOffset(c)}return null}has(t){return this.lookup(t)!==null}get objectCount(){return this.count}allHashes(){let t=[];for(let n=0;n<this.count;n++){let r="",o=n*20;for(let s=0;s<20;s++){let a=this.hashes[o+s];r+=(a>>4).toString(16)+(a&15).toString(16)}t.push(r)}return t}compareAt(t,n){let r=t*20;for(let o=0;o<20;o++){let s=this.hashes[r+o],a=n[o];if(s<a)return-1;if(s>a)return 1}return 0}getOffset(t){let n=this.offsets[t];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}};async function gi(e,t){let n=[...e].sort((m,h)=>m.hash<h.hash?-1:m.hash>h.hash?1:0),r=n.length,o=[];for(let m of n)m.offset>=2147483648&&o.push(BigInt(m.offset));let s=8+256*4+r*20+r*4+r*4+o.length*8+20+20,a=new Uint8Array(s),i=new DataView(a.buffer),c=0;i.setUint32(c,hi),c+=4,i.setUint32(c,pi),c+=4;let f=new Uint32Array(256);for(let m of n){let h=parseInt(m.hash.slice(0,2),16);for(let p=h;p<256;p++)f[p]++}for(let m=0;m<256;m++)i.setUint32(c,f[m]),c+=4;for(let m of n)a.set(ft(m.hash),c),c+=20;for(let m of n)i.setUint32(c,m.crc),c+=4;let d=0;for(let m of n)m.offset>=2147483648?i.setUint32(c,2147483648|d++):i.setUint32(c,m.offset),c+=4;for(let m of o)i.setBigUint64(c,m),c+=8;a.set(t,c),c+=20;let u=Kt();u.update(a.subarray(0,c));let l=await u.hex();return a.set(ft(l),c),a}async function wi(e){let n=(await ui(e)).map(o=>({hash:o.hash,offset:o.offset,crc:Ls(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return gi(n,r)}async function bi(e,t){let n=t.map(o=>({hash:o.hash,offset:o.offset,crc:Ls(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return gi(n,r)}var Cf=6,Pf=7,Of={1:"commit",2:"tree",3:"blob",4:"tag"},zn=class{constructor(t,n){this.data=t;this.index=new un(n)}index;hasObject(t){return this.index.has(t)}async readObject(t){let n=this.index.lookup(t);return n===null?null:this.readAt(n)}get objectCount(){return this.index.objectCount}async readAt(t){let n=this.data,r=t,o=n[r++],s=o>>4&7,a=o&15,i=4;for(;o&128;)o=n[r++],a|=(o&127)<<i,i+=7;if(s===Cf){let d=n[r++],u=d&127;for(;d&128;)u+=1,d=n[r++],u=(u<<7)+(d&127);let l=await Mt(n.subarray(r)),m=await this.readAt(t-u);return{type:m.type,content:Ir(m.content,l)}}if(s===Pf){let d=Pr(n,r);r+=20;let u=await Mt(n.subarray(r)),l=this.index.lookup(d);if(l===null)throw new Error(`REF_DELTA base ${d} not found in pack`);let m=await this.readAt(l);return{type:m.type,content:Ir(m.content,u)}}let c=Of[s];if(!c)throw new Error(`Unknown pack object type: ${s}`);let f=await Mt(n.subarray(r));if(f.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${t}: got ${f.byteLength}, expected ${a}`);return{type:c,content:f}}};var Rf=new TextEncoder,If=new TextDecoder;function Us(e,t){let n=Rf.encode(`${e} ${t.byteLength}\0`),r=new Uint8Array(n.byteLength+t.byteLength);return r.set(n),r.set(t,n.byteLength),r}function $f(e,t){let n=t.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${e}: no null byte in header`);let r=If.decode(t.subarray(0,n)),o=r.indexOf(" ");if(o===-1)throw new Error(`Corrupt object ${e}: malformed header "${r}"`);let s=r.slice(0,o),a=parseInt(r.slice(o+1),10),i=t.subarray(n+1);if(i.byteLength!==a)throw new Error(`Corrupt object ${e}: expected ${a} bytes, got ${i.byteLength}`);return{type:s,content:i}}function Fs(e,t){return v(e,"objects",t.slice(0,2),t.slice(2))}var Tr=class{constructor(t,n,r){this.fs=t;this.gitDir=n;this.hooks=r}packs=[];loadedPackNames=new Set;discoverPromise=null;async write(t,n){let r=Us(t,n),o=await On(r),s=Fs(this.gitDir,o);if(await this.fs.exists(s))return o;let a=v(this.gitDir,"objects",o.slice(0,2));return await this.fs.mkdir(a,{recursive:!0}),await this.fs.writeFile(s,await Rn(r)),this.hooks?.emit("object:write",{type:t,hash:o}),o}async read(t){let n=Fs(this.gitDir,t);if(await this.fs.exists(n)){let r=await this.fs.readFileBuffer(n),o=await Mt(r);return $f(t,o)}await this.discover();for(let r of this.packs){let o=await r.readObject(t);if(o)return o}throw new Error(`object ${t} not found`)}async exists(t){if(await this.fs.exists(Fs(this.gitDir,t)))return!0;await this.discover();for(let n of this.packs)if(n.hasObject(t))return!0;return!1}async ingestPack(t){if(t.byteLength<32)return 0;let r=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(8);if(r===0)return 0;let o=t.subarray(t.byteLength-20),s=qt(o),a=v(this.gitDir,"objects","pack");await this.fs.mkdir(a,{recursive:!0});let i=`pack-${s}`,c=v(a,`${i}.pack`);await this.fs.writeFile(c,t);let f=await wi(t),d=v(a,`${i}.idx`);return await this.fs.writeFile(d,f),this.loadedPackNames.add(i),this.packs.push(new zn(t,f)),r}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){let t=v(this.gitDir,"objects","pack");if(!await this.fs.exists(t))return;let n=await this.fs.readdir(t);for(let r of n){if(!r.endsWith(".idx"))continue;let o=r.slice(0,-4);if(this.loadedPackNames.has(o))continue;let s=v(t,`${o}.pack`);if(!await this.fs.exists(s))continue;let[a,i]=await Promise.all([this.fs.readFileBuffer(v(t,r)),this.fs.readFileBuffer(s)]);this.loadedPackNames.add(o),this.packs.push(new zn(i,a))}}};function Vn(e){let t=e.indexOf("<"),n=e.indexOf(">");if(t===-1||n===-1)throw new Error(`Malformed identity line: "${e}"`);let r=e.slice(0,t).trimEnd(),o=e.slice(t+1,n),s=e.slice(n+2),[a="0",i="+0000"]=s.split(" "),c=parseInt(a,10);return{name:r,email:o,timestamp:c,timezone:i}}function Yn(e){return`${e.name} <${e.email}> ${e.timestamp} ${e.timezone}`}var Tf=new TextEncoder,Hf=new TextDecoder;function It(e){let t=Hf.decode(e),n=t.indexOf(`
14
+ `);return{name:s,email:a,timestamp:Qo(t.get(r.date)),timezone:"+0000"}}async function Ot(e,t){try{let n=await Vn(e,t);return{name:n.name,email:n.email,timestamp:n.timestamp,tz:n.timezone}}catch{return{name:t.get("GIT_COMMITTER_NAME")??"",email:t.get("GIT_COMMITTER_EMAIL")??"",timestamp:Math.floor(Date.now()/1e3),tz:"+0000"}}}function Qo(e){if(e){let t=parseInt(e,10);if(!Number.isNaN(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return Math.floor(n/1e3)}return Math.floor(Date.now()/1e3)}var Z="0000000000000000000000000000000000000000",ti=(()=>{let e=new Array(256);for(let t=0;t<256;t++)e[t]=(t>>4).toString(16)+(t&15).toString(16);return e})();function Kt(e){let t="";for(let n=0;n<20;n++)t+=ti[e[n]];return t}function Ir(e,t){let n="";for(let r=0;r<20;r++)n+=ti[e[t+r]];return n}function dt(e){let t=new Uint8Array(20);for(let n=0;n<20;n++)t[n]=parseInt(e.slice(n*2,n*2+2),16);return t}var mf=new TextEncoder;function Ls(e){return typeof e=="string"?mf.encode(e):e}function hf(){if(typeof globalThis.Bun<"u")return()=>{let e=new Bun.CryptoHasher("sha1"),t={update(n){return e.update(Ls(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t};try{let e=Er(["node","crypto"].join(":"));if(typeof e.createHash=="function")return()=>{let t=e.createHash("sha1"),n={update(r){return t.update(Ls(r)),n},hex:()=>Promise.resolve(t.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let e=[],t={update(n){return e.push(Ls(n)),t},async hex(){let n=0;for(let a of e)n+=a.byteLength;let r=new Uint8Array(n),o=0;for(let a of e)r.set(a,o),o+=a.byteLength;let s=await crypto.subtle.digest("SHA-1",r);return Kt(new Uint8Array(s))}};return t};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var ni=hf(),zt=ni;async function Rn(e){return ni().update(e).hex()}var ri=1145655875,Gs=2;async function U(e){let t=H(e.gitDir,"index");if(!await e.fs.exists(t))return{version:Gs,entries:[]};let n=await e.fs.readFileBuffer(t);return pf(n)}async function re(e,t){let n=H(e.gitDir,"index"),r=await gf(t);await e.fs.writeFile(n,r)}function Xe(e,t){let n;return t.stage===0?n=e.entries.filter(r=>r.path!==t.path):n=e.entries.filter(r=>!(r.path===t.path&&r.stage===t.stage)),n.push(t),n.sort(Ns),{...e,entries:n}}function Ne(e,t){return{...e,entries:e.entries.filter(n=>n.path!==t)}}function Dt(e,t,n=0){return e.entries.find(r=>r.path===t&&r.stage===n)}function lt(e){return e.entries.some(t=>t.stage>0)}function It(e){return[...new Set(e.entries.filter(t=>t.stage>0).map(t=>t.path))]}function xe(e){return e.entries.filter(t=>t.stage===0)}function si(){return{version:Gs,entries:[]}}function Rr(e){let t=[...e].sort(Ns);return{version:Gs,entries:t}}function pe(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}function pf(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=t.getUint32(n);if(n+=4,r!==ri)throw new Error(`Invalid index signature: 0x${r.toString(16)}`);let o=t.getUint32(n);n+=4;let s=t.getUint32(n);n+=4;let a=[];for(let i=0;i<s;i++){let c=n,f={ctimeSeconds:t.getUint32(n),ctimeNanoseconds:t.getUint32(n+4),mtimeSeconds:t.getUint32(n+8),mtimeNanoseconds:t.getUint32(n+12),dev:t.getUint32(n+16),ino:t.getUint32(n+20),uid:t.getUint32(n+28),gid:t.getUint32(n+32),size:t.getUint32(n+36)},d=t.getUint32(n+24);n+=40;let u=e.subarray(n,n+20),l=Kt(u);n+=20;let m=t.getUint16(n);n+=2;let h=m>>12&3,p=m&4095,g;if(p<4095)g=new TextDecoder().decode(e.subarray(n,n+p));else{let b=n;for(;b<e.byteLength&&e[b]!==0;)b++;g=new TextDecoder().decode(e.subarray(n,b))}let w=62+g.length+1,x=Math.ceil(w/8)*8;n=c+x,a.push({path:g,mode:d,hash:l,stage:h,stat:f})}return{version:o,entries:a}}async function gf(e){let t=[...e.entries].sort(Ns),n=12;for(let d of t){let u=62+d.path.length+1;n+=Math.ceil(u/8)*8}n+=20;let r=new ArrayBuffer(n),o=new Uint8Array(r),s=new DataView(r),a=0;s.setUint32(a,ri),a+=4,s.setUint32(a,e.version),a+=4,s.setUint32(a,t.length),a+=4;for(let d of t){let u=a;s.setUint32(a,d.stat.ctimeSeconds),s.setUint32(a+4,d.stat.ctimeNanoseconds),s.setUint32(a+8,d.stat.mtimeSeconds),s.setUint32(a+12,d.stat.mtimeNanoseconds),s.setUint32(a+16,d.stat.dev),s.setUint32(a+20,d.stat.ino),s.setUint32(a+24,d.mode),s.setUint32(a+28,d.stat.uid),s.setUint32(a+32,d.stat.gid),s.setUint32(a+36,d.stat.size),a+=40;let l=dt(d.hash);o.set(l,a),a+=20;let m=Math.min(d.path.length,4095),h=(d.stage&3)<<12|m;s.setUint16(a,h),a+=2;let p=new TextEncoder().encode(d.path);o.set(p,a),a+=p.byteLength,o[a]=0,a+=1;let g=62+p.byteLength+1,w=Math.ceil(g/8)*8;a=u+w}let i=o.subarray(0,a),c=await Rn(i),f=dt(c);return o.set(f,a),o}function Ns(e,t){return e.path<t.path?-1:e.path>t.path?1:e.stage-t.stage}var oi=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;oi[e]=t}function _s(e){let t=4294967295;for(let n=0;n<e.byteLength;n++)t=oi[(t^e[n])&255]^t>>>8;return(t^4294967295)>>>0}function wf(){try{let e=Er(["node","zlib"].join(":"));if(typeof e.deflateSync=="function"&&typeof e.inflateSync=="function")return{deflate:t=>Promise.resolve(new Uint8Array(e.deflateSync(t))),inflate:t=>Promise.resolve(new Uint8Array(e.inflateSync(t)))}}catch{}if(typeof globalThis.CompressionStream=="function"&&typeof globalThis.DecompressionStream=="function")return{async deflate(e){let t=new CompressionStream("deflate"),n=t.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())},async inflate(e){let t=new DecompressionStream("deflate"),n=t.writable.getWriter();return n.write(e),n.close(),new Uint8Array(await new Response(t.readable).arrayBuffer())}};throw new Error("No zlib implementation available. Requires Bun, Node.js, Deno, or a browser with CompressionStream.")}var ii=wf(),$n=ii.deflate,Mt=ii.inflate;var $r=1346454347,Us=2,fi=1,di=2,li=3,ui=4,Yn=6,Bs=7,bf={[fi]:"commit",[di]:"tree",[li]:"blob",[ui]:"tag"},mi={commit:fi,tree:di,blob:li,tag:ui};async function hi(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0);if(n!==$r)throw new Error(`Invalid pack signature: 0x${n.toString(16)} (expected 0x${$r.toString(16)})`);let r=t.getUint32(4);if(r!==Us)throw new Error(`Unsupported pack version: ${r}`);let o=t.getUint32(8),s=[],a=12;for(let c=0;c<o;c++){let f=await yf(e,a);s.push(f),a=f.nextOffset}return(await Ef(s)).map((c,f)=>({...c,offset:s[f].headerOffset,nextOffset:s[f].nextOffset}))}async function yf(e,t){let n=t,r=e[t++],o=r>>4&7,s=r&15,a=4;for(;r&128;)r=e[t++],s|=(r&127)<<a,a+=7;let i,c;if(o===Yn){let u=e[t++];for(i=u&127;u&128;)i+=1,u=e[t++],i=(i<<7)+(u&127);i=n-i}else o===Bs&&(c=Ir(e,t),t+=20);let{result:f,bytesConsumed:d}=await Cf(e,t,s);return{headerOffset:n,typeNum:o,inflated:f,baseOffset:i,baseHash:c,nextOffset:t+d}}async function Ef(e){let t=new Map;for(let o=0;o<e.length;o++)t.set(e[o].headerOffset,o);let n=new Array(e.length).fill(null);async function r(o){let s=n[o];if(s)return s;let a=e[o];if(a.typeNum!==Yn&&a.typeNum!==Bs){let u=bf[a.typeNum];if(!u)throw new Error(`Unknown object type: ${a.typeNum}`);let l={type:u,content:a.inflated,hash:await ci(u,a.inflated)};return n[o]=l,l}let i;if(a.typeNum===Yn){if(i=t.get(a.baseOffset),i===void 0)throw new Error(`OFS_DELTA base not found at offset ${a.baseOffset}`)}else if(i=await xf(e,n,a.baseHash,r),i===void 0)throw new Error(`REF_DELTA base not found for hash ${a.baseHash}`);let c=await r(i),f=Tr(c.content,a.inflated),d={type:c.type,content:f,hash:await ci(c.type,f)};return n[o]=d,d}for(let o=0;o<e.length;o++)await r(o);return n}async function xf(e,t,n,r){for(let o=0;o<t.length;o++)if(t[o]?.hash===n)return o;for(let o=0;o<e.length;o++){let s=e[o];if(s.typeNum!==Yn&&s.typeNum!==Bs&&(await r(o)).hash===n)return o}}function Tr(e,t){let n=0,{value:r,newPos:o}=ai(t,n);if(n=o,r!==e.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${e.byteLength}`);let{value:s,newPos:a}=ai(t,n);n=a;let i=new Uint8Array(s),c=0;for(;n<t.byteLength;){let f=t[n++];if(f&128){let d=0,u=0;f&1&&(d=t[n++]),f&2&&(d|=t[n++]<<8),f&4&&(d|=t[n++]<<16),f&8&&(d|=t[n++]<<24),f&16&&(u=t[n++]),f&32&&(u|=t[n++]<<8),f&64&&(u|=t[n++]<<16),u===0&&(u=65536),i.set(e.subarray(d,d+u),c),c+=u}else if(f>0)i.set(t.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==s)throw new Error(`Delta produced ${c} bytes, expected ${s}`);return i}async function Hr(e){let t=[],n=new Uint8Array(12),r=new DataView(n.buffer);r.setUint32(0,$r),r.setUint32(4,Us),r.setUint32(8,e.length),t.push(n);for(let d of e){let u=mi[d.type],l=await $n(d.content),m=Fs(u,d.content.byteLength);t.push(m),t.push(l)}let o=0;for(let d of t)o+=d.byteLength;o+=20;let s=new Uint8Array(o),a=0;for(let d of t)s.set(d,a),a+=d.byteLength;let i=zt();i.update(s.subarray(0,a));let c=await i.hex(),f=dt(c);return s.set(f,a),s}async function pi(e){let t=[],n=new Map,r=new Uint8Array(12),o=new DataView(r.buffer);o.setUint32(0,$r),o.setUint32(4,Us),o.setUint32(8,e.length),t.push(r);let s=12,a=[];for(let l of e){let m=s;n.set(l.hash,s);let h=l.delta&&l.deltaBaseHash?n.get(l.deltaBaseHash):void 0;if(l.delta&&h!==void 0){let p=Fs(Yn,l.delta.byteLength),g=kf(s-h),w=await $n(l.delta);t.push(p,g,w),s+=p.byteLength+g.byteLength+w.byteLength}else{let p=mi[l.type],g=Fs(p,l.content.byteLength),w=await $n(l.content);t.push(g,w),s+=g.byteLength+w.byteLength}a.push({hash:l.hash,offset:m,nextOffset:s})}let i=0;for(let l of t)i+=l.byteLength;i+=20;let c=new Uint8Array(i),f=0;for(let l of t)c.set(l,f),f+=l.byteLength;let d=zt();d.update(c.subarray(0,f));let u=await d.hex();return c.set(dt(u),f),{data:c,entries:a}}function kf(e){let t=[];t.push(e&127);let n=e>>>7;for(;n>0;)t.unshift(128|--n&127),n>>>=7;return new Uint8Array(t)}function Fs(e,t){let n=[],r=e<<4|t&15;for(t>>=4;t>0;)n.push(r|128),r=t&127,t>>=7;return n.push(r),new Uint8Array(n)}function ai(e,t){let n=0,r=0,o;do o=e[t++],n|=(o&127)<<r,r+=7;while(o&128);return{value:n,newPos:t}}async function Cf(e,t,n){let r=e.subarray(t),o=await Mt(r);if(o.byteLength!==n)throw new Error(`Inflate size mismatch: got ${o.byteLength}, expected ${n}`);let s=2,a=r.byteLength;for(;s<a;){let i=s+a>>>1;try{(await Mt(r.subarray(0,i))).byteLength===n?a=i:s=i+1}catch{s=i+1}}return{result:o,bytesConsumed:s}}var Pf=new TextEncoder;async function ci(e,t){let n=Pf.encode(`${e} ${t.byteLength}\0`),r=zt();return r.update(n),r.update(t),r.hex()}var gi=4285812579,wi=2,hn=class{fanout;hashes;offsets;largeOffsets;count;constructor(t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0)!==gi)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==wi)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let s=0;s<256;s++)this.fanout[s]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(t.buffer,t.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let s=0;s<this.count;s++)this.offsets[s]=n.getUint32(r),r+=4;let o=!1;for(let s=0;s<this.count;s++)if(this.offsets[s]&2147483648){o=!0;break}this.largeOffsets=o?new DataView(t.buffer,t.byteOffset+r):null}lookup(t){let n=dt(t),r=n[0],o=r===0?0:this.fanout[r-1],s=this.fanout[r],a=o,i=s;for(;a<i;){let c=a+i>>>1,f=this.compareAt(c,n);if(f<0)a=c+1;else if(f>0)i=c;else return this.getOffset(c)}return null}has(t){return this.lookup(t)!==null}get objectCount(){return this.count}allHashes(){let t=[];for(let n=0;n<this.count;n++){let r="",o=n*20;for(let s=0;s<20;s++){let a=this.hashes[o+s];r+=(a>>4).toString(16)+(a&15).toString(16)}t.push(r)}return t}compareAt(t,n){let r=t*20;for(let o=0;o<20;o++){let s=this.hashes[r+o],a=n[o];if(s<a)return-1;if(s>a)return 1}return 0}getOffset(t){let n=this.offsets[t];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}};async function bi(e,t){let n=[...e].sort((m,h)=>m.hash<h.hash?-1:m.hash>h.hash?1:0),r=n.length,o=[];for(let m of n)m.offset>=2147483648&&o.push(BigInt(m.offset));let s=8+256*4+r*20+r*4+r*4+o.length*8+20+20,a=new Uint8Array(s),i=new DataView(a.buffer),c=0;i.setUint32(c,gi),c+=4,i.setUint32(c,wi),c+=4;let f=new Uint32Array(256);for(let m of n){let h=parseInt(m.hash.slice(0,2),16);for(let p=h;p<256;p++)f[p]++}for(let m=0;m<256;m++)i.setUint32(c,f[m]),c+=4;for(let m of n)a.set(dt(m.hash),c),c+=20;for(let m of n)i.setUint32(c,m.crc),c+=4;let d=0;for(let m of n)m.offset>=2147483648?i.setUint32(c,2147483648|d++):i.setUint32(c,m.offset),c+=4;for(let m of o)i.setBigUint64(c,m),c+=8;a.set(t,c),c+=20;let u=zt();u.update(a.subarray(0,c));let l=await u.hex();return a.set(dt(l),c),a}async function yi(e){let n=(await hi(e)).map(o=>({hash:o.hash,offset:o.offset,crc:_s(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return bi(n,r)}async function Ei(e,t){let n=t.map(o=>({hash:o.hash,offset:o.offset,crc:_s(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return bi(n,r)}var Of=6,If=7,Rf={1:"commit",2:"tree",3:"blob",4:"tag"},Xn=class{constructor(t,n){this.data=t;this.index=new hn(n)}index;hasObject(t){return this.index.has(t)}async readObject(t){let n=this.index.lookup(t);return n===null?null:this.readAt(n)}get objectCount(){return this.index.objectCount}async readAt(t){let n=this.data,r=t,o=n[r++],s=o>>4&7,a=o&15,i=4;for(;o&128;)o=n[r++],a|=(o&127)<<i,i+=7;if(s===Of){let d=n[r++],u=d&127;for(;d&128;)u+=1,d=n[r++],u=(u<<7)+(d&127);let l=await Mt(n.subarray(r)),m=await this.readAt(t-u);return{type:m.type,content:Tr(m.content,l)}}if(s===If){let d=Ir(n,r);r+=20;let u=await Mt(n.subarray(r)),l=this.index.lookup(d);if(l===null)throw new Error(`REF_DELTA base ${d} not found in pack`);let m=await this.readAt(l);return{type:m.type,content:Tr(m.content,u)}}let c=Rf[s];if(!c)throw new Error(`Unknown pack object type: ${s}`);let f=await Mt(n.subarray(r));if(f.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${t}: got ${f.byteLength}, expected ${a}`);return{type:c,content:f}}};var $f=new TextEncoder,Tf=new TextDecoder;function qs(e,t){let n=$f.encode(`${e} ${t.byteLength}\0`),r=new Uint8Array(n.byteLength+t.byteLength);return r.set(n),r.set(t,n.byteLength),r}function Hf(e,t){let n=t.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${e}: no null byte in header`);let r=Tf.decode(t.subarray(0,n)),o=r.indexOf(" ");if(o===-1)throw new Error(`Corrupt object ${e}: malformed header "${r}"`);let s=r.slice(0,o),a=parseInt(r.slice(o+1),10),i=t.subarray(n+1);if(i.byteLength!==a)throw new Error(`Corrupt object ${e}: expected ${a} bytes, got ${i.byteLength}`);return{type:s,content:i}}function Ws(e,t){return H(e,"objects",t.slice(0,2),t.slice(2))}var Ar=class{constructor(t,n,r){this.fs=t;this.gitDir=n;this.hooks=r}packs=[];loadedPackNames=new Set;discoverPromise=null;async write(t,n){let r=qs(t,n),o=await Rn(r),s=Ws(this.gitDir,o);if(await this.fs.exists(s))return o;let a=H(this.gitDir,"objects",o.slice(0,2));return await this.fs.mkdir(a,{recursive:!0}),await this.fs.writeFile(s,await $n(r)),this.hooks?.emit("object:write",{type:t,hash:o}),o}async read(t){let n=Ws(this.gitDir,t);if(await this.fs.exists(n)){let r=await this.fs.readFileBuffer(n),o=await Mt(r);return Hf(t,o)}await this.discover();for(let r of this.packs){let o=await r.readObject(t);if(o)return o}throw new Error(`object ${t} not found`)}async exists(t){if(await this.fs.exists(Ws(this.gitDir,t)))return!0;await this.discover();for(let n of this.packs)if(n.hasObject(t))return!0;return!1}async ingestPack(t){if(t.byteLength<32)return 0;let r=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(8);if(r===0)return 0;let o=t.subarray(t.byteLength-20),s=Kt(o),a=H(this.gitDir,"objects","pack");await this.fs.mkdir(a,{recursive:!0});let i=`pack-${s}`,c=H(a,`${i}.pack`);await this.fs.writeFile(c,t);let f=await yi(t),d=H(a,`${i}.idx`);return await this.fs.writeFile(d,f),this.loadedPackNames.add(i),this.packs.push(new Xn(t,f)),r}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){let t=H(this.gitDir,"objects","pack");if(!await this.fs.exists(t))return;let n=await this.fs.readdir(t);for(let r of n){if(!r.endsWith(".idx"))continue;let o=r.slice(0,-4);if(this.loadedPackNames.has(o))continue;let s=H(t,`${o}.pack`);if(!await this.fs.exists(s))continue;let[a,i]=await Promise.all([this.fs.readFileBuffer(H(t,r)),this.fs.readFileBuffer(s)]);this.loadedPackNames.add(o),this.packs.push(new Xn(i,a))}}};function Zn(e){let t=e.indexOf("<"),n=e.indexOf(">");if(t===-1||n===-1)throw new Error(`Malformed identity line: "${e}"`);let r=e.slice(0,t).trimEnd(),o=e.slice(t+1,n),s=e.slice(n+2),[a="0",i="+0000"]=s.split(" "),c=parseInt(a,10);return{name:r,email:o,timestamp:c,timezone:i}}function Jn(e){return`${e.name} <${e.email}> ${e.timestamp} ${e.timezone}`}var Af=new TextEncoder,vf=new TextDecoder;function Rt(e){let t=vf.decode(e),n=t.indexOf(`
15
15
 
16
16
  `),r=n===-1?t:t.slice(0,n),o=n===-1?"":t.slice(n+2),s="",a=[],i,c;for(let f of r.split(`
17
- `)){let d=f.indexOf(" ");if(d===-1)continue;let u=f.slice(0,d),l=f.slice(d+1);switch(u){case"tree":s=l;break;case"parent":a.push(l);break;case"author":i=Vn(l);break;case"committer":c=Vn(l);break}}if(!s)throw new Error("Commit missing tree field");if(!i)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:s,parents:a,author:i,committer:c,message:o}}function $t(e){let t=[];t.push(`tree ${e.tree}`);for(let n of e.parents)t.push(`parent ${n}`);return t.push(`author ${Yn(e.author)}`),t.push(`committer ${Yn(e.committer)}`),t.push(""),t.push(e.message),Tf.encode(t.join(`
18
- `))}var Af=new TextEncoder,vf=new TextDecoder;function jt(e){let t=vf.decode(e),n=t.indexOf(`
17
+ `)){let d=f.indexOf(" ");if(d===-1)continue;let u=f.slice(0,d),l=f.slice(d+1);switch(u){case"tree":s=l;break;case"parent":a.push(l);break;case"author":i=Zn(l);break;case"committer":c=Zn(l);break}}if(!s)throw new Error("Commit missing tree field");if(!i)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:s,parents:a,author:i,committer:c,message:o}}function $t(e){let t=[];t.push(`tree ${e.tree}`);for(let n of e.parents)t.push(`parent ${n}`);return t.push(`author ${Jn(e.author)}`),t.push(`committer ${Jn(e.committer)}`),t.push(""),t.push(e.message),Af.encode(t.join(`
18
+ `))}var Sf=new TextEncoder,Df=new TextDecoder;function jt(e){let t=Df.decode(e),n=t.indexOf(`
19
19
 
20
20
  `),r=n===-1?t:t.slice(0,n),o=n===-1?"":t.slice(n+2),s="",a="commit",i="",c;for(let f of r.split(`
21
- `)){let d=f.indexOf(" ");if(d===-1)continue;let u=f.slice(0,d),l=f.slice(d+1);switch(u){case"object":s=l;break;case"type":a=l;break;case"tag":i=l;break;case"tagger":c=Vn(l);break}}if(!s)throw new Error("Tag missing object field");if(!i)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:s,objectType:a,name:i,tagger:c,message:o}}function yi(e){let t=[];return t.push(`object ${e.object}`),t.push(`type ${e.objectType}`),t.push(`tag ${e.name}`),t.push(`tagger ${Yn(e.tagger)}`),t.push(""),t.push(e.message),Af.encode(t.join(`
22
- `))}function Hr(e){if(e.objectStore)return e.objectStore;let t=new Tr(e.fs,e.gitDir,e.hooks);return e.objectStore=t,t}async function st(e,t){return On(Us(e,t))}async function we(e,t,n){return Hr(e).write(t,n)}async function ce(e,t){return Hr(e).read(t)}async function zt(e,t){return Hr(e).exists(t)}async function Ar(e,t){return Hr(e).ingestPack(t)}function Pe(e){let t=Math.min(e.length,8e3);for(let n=0;n<t;n++)if(e.charCodeAt(n)===0)return!0;return!1}function Vt(e){let t=Math.min(e.byteLength,8e3);for(let n=0;n<t;n++)if(e[n]===0)return!0;return!1}var Sf=new TextDecoder;async function fe(e,t){let n=await ce(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return Sf.decode(n.content)}async function ot(e,t){let n=await ce(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return n.content}async function M(e,t){let n=await ce(e,t);if(n.type!=="commit")throw new Error(`Expected commit object for ${t}, got ${n.type}`);return It(n.content)}async function Ei(e,t){let n=await ce(e,t);if(n.type!=="tag")throw new Error(`Expected tag object for ${t}, got ${n.type}`);return jt(n.content)}async function Re(e,t){let n=t;for(let r=0;r<100;r++){let o=await ce(e,n);if(o.type==="commit")return n;if(o.type==="tag"){n=jt(o.content).object;continue}throw new Error(`Cannot peel ${o.type} object ${t} to commit`)}throw new Error(`Tag chain too deep for ${t}`)}var Bs="ref: ",Df=10;async function xi(e,t){let n=Xn(e,t);if(await e.fs.exists(n)){let s=(await e.fs.readFile(n)).trim();return s.startsWith(Bs)?{type:"symbolic",target:s.slice(Bs.length)}:{type:"direct",hash:s}}let o=(await Pi(e)).get(t);return o?{type:"direct",hash:o}:null}async function F(e,t){let n=t;for(let r=0;r<Df;r++){let o=await xi(e,n);if(!o)return null;if(o.type==="direct")return o.hash;n=o.target}throw new Error(`Symbolic ref loop detected resolving "${t}"`)}async function J(e){return xi(e,"HEAD")}async function X(e){return F(e,"HEAD")}async function Y(e,t,n){let r=e.hooks?await F(e,t):null,o=Xn(e,t);await In(e.fs,o),await e.fs.writeFile(o,`${n}
23
- `),e.hooks?.emit("ref:update",{ref:t,oldHash:r,newHash:n})}async function $e(e,t,n){let r=Xn(e,t);await In(e.fs,r),await e.fs.writeFile(r,`${Bs}${n}
24
- `)}async function ie(e,t){let n=e.hooks?await F(e,t):null,r=Xn(e,t);await e.fs.exists(r)&&await e.fs.rm(r),await Mf(e,t),await Zn(e,t),e.hooks&&n&&e.hooks.emit("ref:delete",{ref:t,oldHash:n})}async function le(e,t="refs"){let n=[],r=v(e.gitDir,t);await e.fs.exists(r)&&await Oi(e,r,t,n);let o=await Pi(e);if(o.size>0){let s=new Set(n.map(i=>i.name)),a=`${t}/`;for(let[i,c]of o)i.startsWith(a)&&!s.has(i)&&n.push({name:i,hash:c})}return n.sort((s,a)=>s.name<a.name?-1:s.name>a.name?1:0)}function de(e){return e.replace("refs/heads/","")}async function Yt(e,t){let n=await J(e);n&&n.type==="symbolic"?await Y(e,n.target,t):await Y(e,"HEAD",t)}async function Mf(e,t){let n=v(e.gitDir,"packed-refs");if(!await e.fs.exists(n))return;let o=(await e.fs.readFile(n)).split(`
21
+ `)){let d=f.indexOf(" ");if(d===-1)continue;let u=f.slice(0,d),l=f.slice(d+1);switch(u){case"object":s=l;break;case"type":a=l;break;case"tag":i=l;break;case"tagger":c=Zn(l);break}}if(!s)throw new Error("Tag missing object field");if(!i)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:s,objectType:a,name:i,tagger:c,message:o}}function xi(e){let t=[];return t.push(`object ${e.object}`),t.push(`type ${e.objectType}`),t.push(`tag ${e.name}`),t.push(`tagger ${Jn(e.tagger)}`),t.push(""),t.push(e.message),Sf.encode(t.join(`
22
+ `))}function vr(e){if(e.objectStore)return e.objectStore;let t=new Ar(e.fs,e.gitDir,e.hooks);return e.objectStore=t,t}async function st(e,t){return Rn(qs(e,t))}async function we(e,t,n){return vr(e).write(t,n)}async function fe(e,t){return vr(e).read(t)}async function Vt(e,t){return vr(e).exists(t)}async function Sr(e,t){return vr(e).ingestPack(t)}function Pe(e){let t=Math.min(e.length,8e3);for(let n=0;n<t;n++)if(e.charCodeAt(n)===0)return!0;return!1}function Yt(e){let t=Math.min(e.byteLength,8e3);for(let n=0;n<t;n++)if(e[n]===0)return!0;return!1}var Mf=new TextDecoder;async function ie(e,t){let n=await fe(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return Mf.decode(n.content)}async function ot(e,t){let n=await fe(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return n.content}async function j(e,t){let n=await fe(e,t);if(n.type!=="commit")throw new Error(`Expected commit object for ${t}, got ${n.type}`);return Rt(n.content)}async function ki(e,t){let n=await fe(e,t);if(n.type!=="tag")throw new Error(`Expected tag object for ${t}, got ${n.type}`);return jt(n.content)}async function Ie(e,t){let n=t;for(let r=0;r<100;r++){let o=await fe(e,n);if(o.type==="commit")return n;if(o.type==="tag"){n=jt(o.content).object;continue}throw new Error(`Cannot peel ${o.type} object ${t} to commit`)}throw new Error(`Tag chain too deep for ${t}`)}var Ks="ref: ",jf=10;async function Ci(e,t){let n=Qn(e,t);if(await e.fs.exists(n)){let s=(await e.fs.readFile(n)).trim();return s.startsWith(Ks)?{type:"symbolic",target:s.slice(Ks.length)}:{type:"direct",hash:s}}let o=(await Ii(e)).get(t);return o?{type:"direct",hash:o}:null}async function F(e,t){let n=t;for(let r=0;r<jf;r++){let o=await Ci(e,n);if(!o)return null;if(o.type==="direct")return o.hash;n=o.target}throw new Error(`Symbolic ref loop detected resolving "${t}"`)}async function J(e){return Ci(e,"HEAD")}async function X(e){return F(e,"HEAD")}async function Y(e,t,n){let r=e.hooks?await F(e,t):null,o=Qn(e,t);await Tn(e.fs,o),await e.fs.writeFile(o,`${n}
23
+ `),e.hooks?.emit("ref:update",{ref:t,oldHash:r,newHash:n})}async function $e(e,t,n){let r=Qn(e,t);await Tn(e.fs,r),await e.fs.writeFile(r,`${Ks}${n}
24
+ `)}async function ae(e,t){let n=e.hooks?await F(e,t):null,r=Qn(e,t);await e.fs.exists(r)&&await e.fs.rm(r),await Lf(e,t),await er(e,t),e.hooks&&n&&e.hooks.emit("ref:delete",{ref:t,oldHash:n})}async function le(e,t="refs"){let n=[],r=H(e.gitDir,t);await e.fs.exists(r)&&await Ri(e,r,t,n);let o=await Ii(e);if(o.size>0){let s=new Set(n.map(i=>i.name)),a=`${t}/`;for(let[i,c]of o)i.startsWith(a)&&!s.has(i)&&n.push({name:i,hash:c})}return n.sort((s,a)=>s.name<a.name?-1:s.name>a.name?1:0)}function de(e){return e.replace("refs/heads/","")}async function Xt(e,t){let n=await J(e);n&&n.type==="symbolic"?await Y(e,n.target,t):await Y(e,"HEAD",t)}async function Lf(e,t){let n=H(e.gitDir,"packed-refs");if(!await e.fs.exists(n))return;let o=(await e.fs.readFile(n)).split(`
25
25
  `),s=[],a=!1;for(let c of o){if(a&&c.startsWith("^")){a=!1;continue}if(a=!1,!c||c.startsWith("#")){s.push(c);continue}let f=c.indexOf(" ");if(f!==-1&&c.slice(f+1).trim()===t){a=!0;continue}s.push(c)}s.some(c=>c&&!c.startsWith("#")&&!c.startsWith("^"))?await e.fs.writeFile(n,s.join(`
26
- `)):await e.fs.rm(n)}async function ki(e){let t=await le(e,"refs");if(t.length===0)return;let n=["# pack-refs with: peeled fully-peeled sorted"];for(let r of t)if(n.push(`${r.hash} ${r.name}`),r.name.startsWith("refs/tags/"))try{let o=await ce(e,r.hash);if(o.type==="tag"){let s=jt(o.content).object;for(let a=0;a<100;a++){let i=await ce(e,s);if(i.type!=="tag")break;s=jt(i.content).object}n.push(`^${s}`)}}catch{}await e.fs.writeFile(v(e.gitDir,"packed-refs"),`${n.join(`
26
+ `)):await e.fs.rm(n)}async function Pi(e){let t=await le(e,"refs");if(t.length===0)return;let n=["# pack-refs with: peeled fully-peeled sorted"];for(let o of t)if(n.push(`${o.hash} ${o.name}`),o.name.startsWith("refs/tags/"))try{let s=await fe(e,o.hash);if(s.type==="tag"){let a=jt(s.content).object;for(let i=0;i<100;i++){let c=await fe(e,a);if(c.type!=="tag")break;a=jt(c.content).object}n.push(`^${a}`)}}catch{}await e.fs.writeFile(H(e.gitDir,"packed-refs"),`${n.join(`
27
27
  `)}
28
- `);for(let r of t){let o=Xn(e,r.name);await e.fs.exists(o)&&await e.fs.rm(o)}await Ci(e,v(e.gitDir,"refs"))}async function Ci(e,t){if(!await e.fs.exists(t)||!(await e.fs.stat(t)).isDirectory)return;let r=await e.fs.readdir(t);for(let s of r)await Ci(e,v(t,s));(await e.fs.readdir(t)).length===0&&await e.fs.rm(t,{recursive:!0})}async function Pi(e){let t=v(e.gitDir,"packed-refs");if(!await e.fs.exists(t))return new Map;let n=await e.fs.readFile(t),r=new Map;for(let o of n.split(`
29
- `)){if(!o||o.startsWith("#")||o.startsWith("^"))continue;let s=o.indexOf(" ");if(s===-1)continue;let a=o.slice(0,s),i=o.slice(s+1).trim();a.length===40&&i&&r.set(i,a)}return r}function Xn(e,t){return v(e.gitDir,t)}async function Oi(e,t,n,r){let o=await e.fs.readdir(t);for(let s of o){let a=v(t,s),i=`${n}/${s}`,c=await e.fs.stat(a);if(c.isDirectory)await Oi(e,a,i,r);else if(c.isFile){let f=await F(e,i);f&&r.push({name:i,hash:f})}}}async function $n(e,t){let n=t;for(;;){let r=v(n,".git");if(await e.exists(r)&&(await e.stat(r)).isDirectory)return{fs:e,gitDir:r,workTree:n};let o=jf(n);if(o===n)return null;n=o}}async function vr(e,t,n={}){let{bare:r=!1,initialBranch:o="main"}=n,s=r?t:v(t,".git"),a=r?null:t,i=v(s,"HEAD"),c=await e.exists(i);await e.mkdir(v(s,"objects"),{recursive:!0}),await e.mkdir(v(s,"refs","heads"),{recursive:!0}),await e.mkdir(v(s,"refs","tags"),{recursive:!0});let f={fs:e,gitDir:s,workTree:a};if(!c){await $e(f,"HEAD",`refs/heads/${o}`);let d={core:{repositoryformatversion:"0",filemode:"true",bare:r?"true":"false"}};await e.writeFile(v(s,"config"),As(d))}return{ctx:f,reinit:c}}async function In(e,t){let n=t.lastIndexOf("/");if(n>0){let r=t.slice(0,n);await e.mkdir(r,{recursive:!0})}}function jf(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}function Sr(e,t){return v(e.gitDir,"logs",t)}function Lf(e){let t=e.indexOf(" ");if(t<0)return null;let n=e.slice(0,t),r=e.slice(t+1),o=n.split(" ");if(o.length<5)return null;let s=o[0],a=o[1];if(!s||!a)return null;let i=n.indexOf("<"),c=n.indexOf(">",i);if(i<0||c<0)return null;let f=n.slice(s.length+1+a.length+1,i).trim(),d=n.slice(i+1,c),u=n.slice(c+2),l=u.indexOf(" ");if(l<0)return null;let m=parseInt(u.slice(0,l),10),h=u.slice(l+1);return{oldHash:s,newHash:a,name:f,email:d,timestamp:m,tz:h,message:r}}async function Me(e,t){let n=Sr(e,t);if(!await e.fs.exists(n))return[];let r=await e.fs.readFile(n);if(!r.trim())return[];let o=[];for(let s of r.split(`
30
- `)){if(!s)continue;let a=Lf(s);a&&o.push(a)}return o}function Ri(e){return`${e.oldHash} ${e.newHash} ${e.name} <${e.email}> ${e.timestamp} ${e.tz} ${e.message}`}async function Xt(e,t,n){let r=Sr(e,t);if(await In(e.fs,r),n.length===0){await e.fs.writeFile(r,"");return}let o=`${n.map(Ri).join(`
28
+ `);for(let o of t){let s=Qn(e,o.name);await e.fs.exists(s)&&await e.fs.rm(s)}await Oi(e,H(e.gitDir,"refs"));let r=H(e.gitDir,"refs");await e.fs.mkdir(r,{recursive:!0}),await e.fs.mkdir(H(r,"heads"),{recursive:!0}),await e.fs.mkdir(H(r,"tags"),{recursive:!0})}async function Oi(e,t){if(!await e.fs.exists(t)||!(await e.fs.stat(t)).isDirectory)return;let r=await e.fs.readdir(t);for(let s of r)await Oi(e,H(t,s));(await e.fs.readdir(t)).length===0&&await e.fs.rm(t,{recursive:!0})}async function Ii(e){let t=H(e.gitDir,"packed-refs");if(!await e.fs.exists(t))return new Map;let n=await e.fs.readFile(t),r=new Map;for(let o of n.split(`
29
+ `)){if(!o||o.startsWith("#")||o.startsWith("^"))continue;let s=o.indexOf(" ");if(s===-1)continue;let a=o.slice(0,s),i=o.slice(s+1).trim();a.length===40&&i&&r.set(i,a)}return r}function Qn(e,t){return H(e.gitDir,t)}async function Ri(e,t,n,r){let o=await e.fs.readdir(t);for(let s of o){let a=H(t,s),i=`${n}/${s}`,c=await e.fs.stat(a);if(c.isDirectory)await Ri(e,a,i,r);else if(c.isFile){let f=await F(e,i);f&&r.push({name:i,hash:f})}}}async function Hn(e,t){let n=t;for(;;){let r=H(n,".git");if(await e.exists(r)&&(await e.stat(r)).isDirectory)return{fs:e,gitDir:r,workTree:n};let o=Gf(n);if(o===n)return null;n=o}}async function Dr(e,t,n={}){let{bare:r=!1,initialBranch:o="main"}=n,s=r?t:H(t,".git"),a=r?null:t,i=H(s,"HEAD"),c=await e.exists(i);await e.mkdir(H(s,"objects"),{recursive:!0}),await e.mkdir(H(s,"refs","heads"),{recursive:!0}),await e.mkdir(H(s,"refs","tags"),{recursive:!0});let f={fs:e,gitDir:s,workTree:a};if(!c){await $e(f,"HEAD",`refs/heads/${o}`);let d={core:{repositoryformatversion:"0",filemode:"true",bare:r?"true":"false",...r?{}:{logallrefupdates:"true"}}};await e.writeFile(H(s,"config"),Ds(d))}return{ctx:f,reinit:c}}async function Tn(e,t){let n=t.lastIndexOf("/");if(n>0){let r=t.slice(0,n);await e.mkdir(r,{recursive:!0})}}function Gf(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}function Mr(e,t){return H(e.gitDir,"logs",t)}function Nf(e){let t=e.indexOf(" ");if(t<0)return null;let n=e.slice(0,t),r=e.slice(t+1),o=n.split(" ");if(o.length<5)return null;let s=o[0],a=o[1];if(!s||!a)return null;let i=n.indexOf("<"),c=n.indexOf(">",i);if(i<0||c<0)return null;let f=n.slice(s.length+1+a.length+1,i).trim(),d=n.slice(i+1,c),u=n.slice(c+2),l=u.indexOf(" ");if(l<0)return null;let m=parseInt(u.slice(0,l),10),h=u.slice(l+1);return{oldHash:s,newHash:a,name:f,email:d,timestamp:m,tz:h,message:r}}async function Me(e,t){let n=Mr(e,t);if(!await e.fs.exists(n))return[];let r=await e.fs.readFile(n);if(!r.trim())return[];let o=[];for(let s of r.split(`
30
+ `)){if(!s)continue;let a=Nf(s);a&&o.push(a)}return o}function $i(e){return`${e.oldHash} ${e.newHash} ${e.name} <${e.email}> ${e.timestamp} ${e.tz} ${e.message}`}async function Zt(e,t,n){let r=Mr(e,t);if(await Tn(e.fs,r),n.length===0){await e.fs.writeFile(r,"");return}let o=`${n.map($i).join(`
31
31
  `)}
32
- `;await e.fs.writeFile(r,o)}async function Te(e,t,n){let r=Sr(e,t);await In(e.fs,r);let o=`${Ri(n)}
33
- `;if(await e.fs.exists(r)){let s=await e.fs.readFile(r);await e.fs.writeFile(r,s+o)}else await e.fs.writeFile(r,o)}async function Zn(e,t){let n=Sr(e,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function ee(e,t,n,r,o,s,a=!1){let i=await Ot(e,t),c={oldHash:r??Z,newHash:o,...i,message:s};await Te(e,n,c),a&&n!=="HEAD"&&await Te(e,"HEAD",c)}function Gf(e){let t=[],n=e.length;for(;n>0;){let s=e.slice(0,n).match(/^(.+?)~(\d*)$/);if(s&&s[1]!==void 0&&s[2]!==void 0){let i=s[2]===""?1:parseInt(s[2],10);t.unshift({type:"tilde",n:i}),n=s[1].length;continue}let a=e.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let i=a[2]===""?1:parseInt(a[2],10);t.unshift({type:"caret",n:i}),n=a[1].length;continue}break}let r=e.slice(0,n),o=r.match(/^(.+?)@\{(\d+)\}$/);return o&&o[1]!==void 0&&o[2]!==void 0?{base:o[1],reflogIndex:parseInt(o[2],10),suffixes:t}:{base:r,suffixes:t}}var Ii=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];async function Nf(e,t){let n=t.slice(0,2),r=t.slice(2),o=v(e.gitDir,"objects",n);if(!await e.fs.exists(o))return null;let a=(await e.fs.readdir(o)).filter(i=>i.startsWith(r));if(a.length===0)return null;if(a.length>1)throw new Ws(t);return`${n}${a[0]}`}var Ws=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}};async function _f(e,t){if(t==="HEAD"||t==="@")return F(e,"HEAD");if(Ii.includes(t))return F(e,t);if(/^[0-9a-f]{40}$/.test(t))return await zt(e,t)?t:null;if(/^[0-9a-f]{4,39}$/.test(t)){let s=await Nf(e,t);if(s)return s}if(t.startsWith("refs/")){let s=await F(e,t);if(s)return s}let n=await F(e,`refs/heads/${t}`);if(n)return n;let r=await F(e,`refs/tags/${t}`);if(r)return r;let o=await F(e,`refs/remotes/${t}`);return o||null}function Ff(e){if(e==="HEAD"||e==="@")return"HEAD";for(let t of Ii)if(e===t)return t;return e.startsWith("refs/")?e:`refs/heads/${e}`}async function Uf(e,t,n){let r=Ff(t),o=await Me(e,r);if(o.length===0)return null;let s=o.length-1-n;if(s<0||s>=o.length)return null;let a=o[s];return a?a.newHash:null}async function je(e,t){let{base:n,reflogIndex:r,suffixes:o}=Gf(t),s;if(r!==void 0?s=await Uf(e,n,r):s=await _f(e,n),!s)return null;o.length>0&&(s=await Re(e,s));for(let a of o)if(a.type==="tilde")for(let i=0;i<a.n;i++){if(!s)return null;let c=await M(e,s);if(c.parents.length===0||(s=c.parents[0]??null,!s))return null}else{if(a.n===0)continue;if(!s)return null;let i=await M(e,s);if(a.n>i.parents.length||(s=i.parents[a.n-1]??null,!s))return null}return s}function $i(e){let t=e.indexOf(":");return t<0?null:{rev:e.slice(0,t)||"HEAD",path:e.slice(t+1)}}var Bf=new TextEncoder;function ze(e,t){return e.lstat?e.lstat(t):e.stat(t)}function Lt(e){return typeof e=="string"?e==="120000":e===40960}async function Jn(e,t){if((await ze(e,t)).isSymbolicLink&&e.readlink){let r=await e.readlink(t);return Bf.encode(r)}return e.readFileBuffer(t)}async function Zt(e,t){let n=await Jn(e,t);return st("blob",n)}var Wf=new TextEncoder,Ti=new TextDecoder;function Jt(e){let t=[],n=0;for(;n<e.byteLength;){let r=e.indexOf(32,n);if(r===-1)break;let o=Ti.decode(e.subarray(n,r)),s=e.indexOf(0,r+1);if(s===-1)break;let a=Ti.decode(e.subarray(r+1,s)),i=e.subarray(s+1,s+21),c=qt(i),f=o.padStart(6,"0");t.push({mode:f,name:a,hash:c}),n=s+21}return{type:"tree",entries:t}}function Hi(e){let t=[];for(let s of e.entries){let a=s.mode.replace(/^0+/,""),i=Wf.encode(`${a} ${s.name}\0`),c=ft(s.hash);t.push(i),t.push(c)}let n=t.reduce((s,a)=>s+a.byteLength,0),r=new Uint8Array(n),o=0;for(let s of t)r.set(s,o),o+=s.byteLength;return r}var Qn={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};async function ke(e,t){return Ai(e,t,"")}async function Ai(e,t,n){let r=[],o=new Map;for(let a of t){let i=n?a.path.slice(n.length+1):a.path,c=i.indexOf("/");if(c===-1)r.push({mode:qf(a.mode),name:i,hash:a.hash});else{let f=i.slice(0,c),d=o.get(f);d||(d=[],o.set(f,d)),d.push(a)}}for(let[a,i]of o){let c=n?`${n}/${a}`:a,f=await Ai(e,i,c);r.push({mode:Qn.DIRECTORY,name:a,hash:f})}r.sort((a,i)=>{let c=a.mode===Qn.DIRECTORY?`${a.name}/`:a.name,f=i.mode===Qn.DIRECTORY?`${i.name}/`:i.name;return c<f?-1:c>f?1:0});let s=Hi({type:"tree",entries:r});return we(e,"tree",s)}async function He(e,t,n=""){let r=await ce(e,t);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let o=Jt(r.content),s=[];for(let a of o.entries){let i=n?`${n}/${a.name}`:a.name;if(a.mode===Qn.DIRECTORY){let c=await He(e,a.hash,i);s.push(...c)}else s.push({path:i,mode:a.mode,hash:a.hash})}return s}async function se(e,t){if(!t)return new Map;let n=await He(e,t);return new Map(n.map(r=>[r.path,r]))}async function Ae(e,t,n){let r=await se(e,t),o=await se(e,n),s=[];for(let[a,i]of r){let c=o.get(a);c?(i.hash!==c.hash||i.mode!==c.mode)&&s.push({path:a,status:"modified",oldHash:i.hash,newHash:c.hash,oldMode:i.mode,newMode:c.mode}):s.push({path:a,status:"deleted",oldHash:i.hash,oldMode:i.mode})}for(let[a,i]of o)r.has(a)||s.push({path:a,status:"added",newHash:i.hash,newMode:i.mode});return s.sort((a,i)=>he(a.path,i.path))}function qf(e){return e.toString(8).padStart(6,"0")}function vi(e){return/^[a-zA-Z0-9]$/.test(e)}function Kf(e){return/^[a-zA-Z]$/.test(e)}function zf(e){return e>="0"&&e<="9"}function qs(e){return e>="A"&&e<="Z"}function Ks(e){return e>="a"&&e<="z"}function Si(e){return/^\s$/.test(e)}function Vf(e){return e===" "||e===" "}function Vs(e){let t=e.charCodeAt(0);return t>=32&&t<=126}function Yf(e){return Vs(e)&&!Si(e)}function Xf(e){return Vs(e)&&!vi(e)&&e!==" "}function Zf(e){let t=e.charCodeAt(0);return t<32||t===127}function Jf(e){return/^[0-9a-fA-F]$/.test(e)}function er(e,t,n){return n?e.toLowerCase()===t.toLowerCase():e===t}function zs(e,t,n,r,o){let s=(o&1)!==0,a=(o&2)!==0;for(;t<e.length;){let i=e[t];if(r>=n.length&&i!=="*")return-1;let c=r<n.length?n[r]:"";switch(i){case"\\":{if(t++,t>=e.length)return-1;if(!er(n[r],e[t],s))return 1;r++,t++;break}case"?":{if(a&&c==="/")return 1;r++,t++;break}case"*":{let f;if(t++,t<e.length&&e[t]==="*"){let d=t;for(;t<e.length&&e[t]==="*";)t++;if(!a)f=!0;else if((d-1<1||e[d-2]==="/")&&(t>=e.length||e[t]==="/"||e[t]==="\\"&&t+1<e.length&&e[t+1]==="/")){if(t<e.length&&e[t]==="/"&&zs(e,t+1,n,r,o)===0)return 0;f=!0}else f=!1}else f=!a;if(t>=e.length)return!f&&n.indexOf("/",r)!==-1?-2:0;if(!f&&e[t]==="/"){let d=n.indexOf("/",r);if(d===-1)return-1;r=d+1,t++;break}for(;!(r>=n.length);){if(!Qf(e[t])){let u=s?e[t].toLowerCase():e[t];for(;r<n.length&&(f||n[r]!=="/")&&(s?n[r].toLowerCase():n[r])!==u;)r++;if(r>=n.length||!f&&n[r]==="/")return r<n.length&&!f&&n[r]==="/"?-2:f?-1:-2}let d=zs(e,t,n,r,o);if(d!==1){if(!f||d!==-2)return d}else if(!f&&n[r]==="/")return-2;r++}return-1}case"[":{if(a&&c==="/")return 1;if(t++,t>=e.length)return-1;let f=!1;(e[t]==="!"||e[t]==="^")&&(f=!0,t++);let d=!1,u="",l=!0;for(;t<e.length&&(l||e[t]!=="]");){l=!1;let m=e[t];if(m==="\\"){if(t++,t>=e.length)return-1;m=e[t],er(c,m,s)&&(d=!0)}else if(m==="-"&&u&&t+1<e.length&&e[t+1]!=="]"){if(t++,m=e[t],m==="\\"){if(t++,t>=e.length)return-1;m=e[t]}let h=u,p=m;if(c>=h&&c<=p&&(d=!0),s){if(Ks(c)){let g=c.toUpperCase();g>=h&&g<=p&&(d=!0)}else if(qs(c)){let g=c.toLowerCase();g>=h&&g<=p&&(d=!0)}}m=""}else if(m==="["&&t+1<e.length&&e[t+1]===":"){t+=2;let h=t;for(;t<e.length&&e[t]!=="]";)t++;if(t>=e.length)return-1;let p=t-h-1;if(p<0||e[t-1]!==":")t=h-2,m="[",er(c,m,s)&&(d=!0);else{let g=e.slice(h,h+p);ed(g,c,s)&&(d=!0),m=""}}else er(c,m,s)&&(d=!0);u=m,t++}if(t>=e.length)return-1;if(t++,d===f)return 1;r++;break}default:{if(!er(c,i,s))return 1;r++,t++;break}}}return r>=n.length?0:1}function Qf(e){return e==="*"||e==="?"||e==="["||e==="\\"}function ed(e,t,n){switch(e){case"alnum":return vi(t);case"alpha":return Kf(t);case"blank":return Vf(t);case"cntrl":return Zf(t);case"digit":return zf(t);case"graph":return Yf(t);case"lower":return Ks(t)||n&&qs(t);case"print":return Vs(t);case"punct":return Xf(t);case"space":return Si(t);case"upper":return qs(t)||n&&Ks(t);case"xdigit":return Jf(t);default:return!1}}function mn(e,t,n=0){return zs(e,0,t,0,n)===0?0:1}var Di=1,Mi=4,ji=8,Dr=16;function Li(e){for(let t=0;t<e.length;t++){let n=e[t];if(n==="\\"){t++;continue}if(n==="*"||n==="?"||n==="[")return t}return e.length}function td(e){return Li(e)===e.length}function nd(e,t){let n=e;for(;n.length>0;){let c=n[n.length-1];if(c===" "||c===" "){if(n.length>=2&&n[n.length-2]==="\\"){n=n.slice(0,n.length-2)+n[n.length-1];break}n=n.slice(0,-1)}else break}if(n.length===0||n[0]==="#")return null;let r=0,o=n;if(o[0]==="!"&&(r|=Dr,o=o.slice(1)),o.length===0)return null;let s=o.length;o[s-1]==="/"&&(s--,o=o.slice(0,s),r|=ji);let a=!1;for(let c=0;c<s;c++)if(o[c]==="/"){a=!0;break}a||(r|=Di);let i=Math.min(Li(o),s);return o[0]==="*"&&td(o.slice(1))&&(r|=Mi),{pattern:o,patternLen:s,nowildcardLen:i,flags:r,base:t}}function tr(e,t,n){let r=[];for(let o of e.split(`
34
- `)){let s=nd(o,t);s&&r.push(s)}return{patterns:r,src:n}}function rd(e,t){let{pattern:n,patternLen:r,nowildcardLen:o,flags:s}=t;if(o===r)return e===n;if(s&Mi){let a=n.slice(1);return e.length>=a.length&&e.endsWith(a)}return mn(n,e,2)===0}function sd(e,t){let{base:n}=t,{pattern:r,patternLen:o,nowildcardLen:s}=t;r[0]==="/"&&(r=r.slice(1),o--,s=Math.max(0,s-1));let a=n.length;if(a>0&&(e.length<a+1||e[a]!=="/"||!e.startsWith(n)))return!1;let i=a>0?e.slice(a+1):e,c=i.length;if(s>0){if(s>c||i.slice(0,s)!==r.slice(0,s))return!1;if(o===s&&c===s)return!0}return mn(r,i,2)===0}function Ys(e,t,n){let r=e.lastIndexOf("/")>=0?e.slice(e.lastIndexOf("/")+1):e;for(let o=n.patterns.length-1;o>=0;o--){let s=n.patterns[o];if(s&&!(s.flags&ji&&!t)){if(s.flags&Di){if(s.base&&!e.startsWith(`${s.base}/`))continue;if(rd(r,s))return s;continue}if(sd(e,s))return s}}return null}function Tt(e,t,n){for(let r=e.dirPatterns.length-1;r>=0;r--){let o=e.dirPatterns[r],s=Ys(t,n,o);if(s)return s.flags&Dr?"not-ignored":"ignored"}if(e.excludeFile){let r=Ys(t,n,e.excludeFile);if(r)return r.flags&Dr?"not-ignored":"ignored"}if(e.globalExclude){let r=Ys(t,n,e.globalExclude);if(r)return r.flags&Dr?"not-ignored":"ignored"}return"undecided"}async function Hn(e){let t={dirPatterns:[],excludeFile:null,globalExclude:null},n=v(e.gitDir,"info","exclude");try{let r=await e.fs.readFile(n);t.excludeFile=tr(r,"",n)}catch{}try{let r=await bt(e,"core.excludesFile");if(r)try{let o=await e.fs.readFile(r);t.globalExclude=tr(o,"",r)}catch{}}catch{}return t}function hn(e,t,n,r){let s=tr(t,n===""?"":n,r);return{...e,dirPatterns:[...e.dirPatterns,s]}}var od=new TextEncoder,id=new TextDecoder;async function lt(e,t){if(!e.workTree)throw new Error("Cannot diff working tree in a bare repository");let n=[];for(let s of t.entries){if(s.stage!==0)continue;let a=v(e.workTree,s.path),i;try{i=await ze(e.fs,a)}catch{i=null}if(!i){n.push({path:s.path,status:"deleted",indexHash:s.hash});continue}if(!i.isFile&&!i.isSymbolicLink)continue;await Zt(e.fs,a)!==s.hash&&n.push({path:s.path,status:"modified",indexHash:s.hash})}let r=new Set(t.entries.map(s=>s.path)),o=await _e(e,e.workTree,"");for(let s of o)r.has(s)||n.push({path:s,status:"untracked"});return n.sort((s,a)=>he(s.path,a.path))}async function ve(e,t){if(!e.workTree)throw new Error("Cannot checkout in a bare repository");let n=await ce(e,t.hash);if(n.type!=="blob")throw new Error(`Expected blob for ${t.path}, got ${n.type}`);let r=v(e.workTree,t.path),o=r.lastIndexOf("/");if(o>0&&await e.fs.mkdir(r.slice(0,o),{recursive:!0}),t.mode!=null&&Lt(t.mode)&&e.fs.symlink){await ze(e.fs,r).then(()=>!0).catch(()=>!1)&&await e.fs.rm(r,{force:!0});let a=id.decode(n.content);await e.fs.symlink(a,r)}else{if(e.fs.lstat)try{(await e.fs.lstat(r)).isSymbolicLink&&await e.fs.rm(r,{force:!0})}catch{}await e.fs.writeFile(r,n.content)}}async function Gi(e,t){let n=await He(e,t);for(let r of n)await ve(e,r)}async function Gt(e,t,n){if(!e.workTree)throw new Error("Cannot stage in a bare repository");let r=v(e.workTree,n);if(!await e.fs.exists(r))throw new Error(`Path does not exist: ${n}`);let o=await ze(e.fs,r);if(o.isSymbolicLink&&e.fs.readlink){let f=await e.fs.readlink(r),d=od.encode(f),u=await we(e,"blob",d),l={path:n,mode:40960,hash:u,stage:0,stat:{...pe(),size:d.byteLength}};return{index:Xe(t,l),hash:u}}let s=await e.fs.readFileBuffer(r),a=await we(e,"blob",s),i=o.mode!=null?ad(o.mode):33188,c={path:n,mode:i,hash:a,stage:0,stat:{...pe(),size:s.byteLength}};return{index:Xe(t,c),hash:a}}async function _e(e,t,n,r){let o=r?.skipIgnore??!1,s=null;if(!o){s=r?._ignore??await Hn(e);let c=v(t,".gitignore");try{let f=await e.fs.readFile(c);s=hn(s,f,n,c)}catch{}}let a=[],i=await e.fs.readdir(t);for(let c of i){if(n===""&&c===".git")continue;let f=v(t,c),d=n?`${n}/${c}`:c,u=await ze(e.fs,f);if(u.isSymbolicLink){if(s&&Tt(s,d,!1)==="ignored")continue;a.push(d)}else if(u.isDirectory){if(s&&Tt(s,d,!0)==="ignored")continue;let l=await _e(e,f,d,{skipIgnore:o,_ignore:s??void 0});a.push(...l)}else if(u.isFile){if(s&&Tt(s,d,!1)==="ignored")continue;a.push(d)}}return a}function ad(e){return e>511?e:e&73?33261:33188}async function pn(e,t,n){if(t===n||t==="/"||!t.startsWith(n)||!await e.exists(t)||!(await e.stat(t)).isDirectory)return;(await e.readdir(t)).length===0&&(await e.rm(t),await pn(e,Pt(t),n))}function Xs(e){return e.existsOnDisk&&e.indexHash===null}async function cd(e,t,n){let r=await Promise.all(t.map(h=>se(e,h.treeHash))),o=new Map,s=new Set;for(let h of n.entries)h.stage===0?o.set(h.path,h):s.add(h.path);let a=e.workTree?new Set(await _e(e,e.workTree,"",{skipIgnore:!0})):new Set,i=null,c=async()=>(i===null&&(i=e.workTree?new Set(await _e(e,e.workTree,"")):new Set),i),f=new Set;for(let h of r)for(let p of h.keys())f.add(p);let d=new Set;for(let h of n.entries)f.has(h.path)||d.add(h.path);for(let h of a)f.has(h)||d.add(h);let u=Array.from(f).sort().concat(Array.from(d).sort()),l=(h,p)=>r[h]?.get(p),m=[];for(let h of u){let p=null,g=null,w=null,x=null,b=null;if(r.length===1){let _=l(0,h);w=_?.hash??null,b=_?.mode??null}else if(r.length===2){let _=l(0,h),G=l(1,h);g=_?.hash??null,x=_?.mode??null,w=G?.hash??null,b=G?.mode??null}else if(r.length>=3){let _=l(0,h),G=l(1,h),z=l(2,h);p=_?.hash??null,g=G?.hash??null,x=G?.mode??null,w=z?.hash??null,b=z?.mode??null}let k=o.get(h)?.hash??null,C=s.has(h)?1:0,P=a.has(h),O,E=async()=>O!==void 0?O:P?(O=!(await c()).has(h),O):(O=!1,!1),I,H=async()=>{if(I!==void 0)return I;if(!P||!e.workTree)return I=null,null;let _=v(e.workTree,h);try{I=await Zt(e.fs,_)}catch{I=null}return I};m.push({path:h,baseHash:p,headHash:g,remoteHash:w,indexHash:k,indexStage:C,existsOnDisk:P,isIgnoredOnDisk:E,getWorktreeHash:H,headMode:x,remoteMode:b})}return m}function jr(e,t){let n=e.remoteHash;return n===null?e.indexHash===null&&e.indexStage===0?{action:"SKIP",requirements:[]}:{action:"DELETE",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}:e.indexHash===n?{action:"KEEP",requirements:[]}:e.indexHash===null?{action:"TAKE",takeFrom:"remote",requirements:t.reset||!!t.strippedConflictPaths?.has(e.path)?[]:["NO_UNTRACKED"]}:{action:"TAKE",takeFrom:"remote",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}}function Lr(e,t){let{headHash:n,remoteHash:r,indexHash:o}=e;return e.indexStage>0?n===r?r===null?{action:"DELETE",requirements:[]}:{action:"TAKE",takeFrom:"remote",requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}:o===null?r===null?n===null?{action:"SKIP",caseNumber:0,requirements:[]}:{action:"SKIP",caseNumber:2,requirements:["NO_UNTRACKED_REMOVED"]}:n!==null?n===r?{action:"SKIP",caseNumber:3,requirements:[]}:t.allowStagedChanges?{action:"TAKE",takeFrom:"remote",caseNumber:3,requirements:[]}:{action:"KEEP",caseNumber:3,requirements:["INDEX_MUST_MATCH_HEAD"]}:{action:"TAKE",takeFrom:"remote",caseNumber:1,requirements:["NO_UNTRACKED"]}:n===null&&r===null?{action:"KEEP",caseNumber:4,requirements:[]}:n===null&&r===o?{action:"KEEP",caseNumber:6,requirements:[]}:n===o&&r===null?{action:"DELETE",caseNumber:10,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:n!==null&&n===r?{action:"KEEP",caseNumber:14,requirements:[]}:n!==null&&r!==null&&o===r?{action:"KEEP",caseNumber:18,requirements:[]}:n!==null&&r!==null&&o===n&&o!==r?{action:"TAKE",takeFrom:"remote",caseNumber:20,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:t.allowStagedChanges?r===null?{action:"DELETE",caseNumber:-1,requirements:[]}:{action:"TAKE",takeFrom:"remote",caseNumber:-1,requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}}function fd(e,t){switch(e.action){case"TAKE":return e.takeFrom==="head"?t.headHash:e.takeFrom==="remote"?t.remoteHash:e.takeFrom==="base"?t.baseHash:null;case"DELETE":return null;case"KEEP":return t.indexHash;default:return null}}async function dd(e,t,n){let r=[];if(n.reset)return r;for(let[o,s]of e){if(s.requirements.length===0)continue;let a=t.get(o);if(!a)continue;let i=fd(s,a);for(let c of s.requirements){if(n.allowStagedChanges&&c==="INDEX_MUST_MATCH_HEAD")continue;let f=await ld(c,a,i);if(f){r.push({path:o,error:f});break}}if(n.stopAtFirstError&&r.length>0)break}return r}async function ld(e,t,n,r){switch(e){case"INDEX_MUST_NOT_EXIST":return t.indexHash!==null?"WOULD_OVERWRITE":Xs(t)?"WOULD_LOSE_UNTRACKED_REMOVED":null;case"INDEX_MUST_MATCH_HEAD":return t.indexHash!==t.headHash?"WOULD_OVERWRITE":null;case"INDEX_MUST_MATCH_RESULT":return t.indexHash!==null&&t.indexHash!==n?"WOULD_OVERWRITE":null;case"WORKTREE_MUST_BE_UPTODATE":{if(!t.existsOnDisk)return null;let o=await t.getWorktreeHash();return o!==t.indexHash?r?.allowContentEscapeHatch&&(n!==null&&o===n||o===null&&n===null)?null:"NOT_UPTODATE_FILE":null}case"NO_UNTRACKED":return Xs(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_OVERWRITTEN":null;case"NO_UNTRACKED_REMOVED":return Xs(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_REMOVED":null}}function ud(e,t,n,r){let o=[],s=[],a=new Set(e.keys()),i=new Map;for(let c of n.entries)a.has(c.path)||o.push(c),c.stage===0&&i.set(c.path,c);for(let[c,f]of e){let d=t.get(c);if(d)switch(f.action){case"KEEP":{let u=i.get(c);u&&(o.push(u),r.reset&&r.updateWorktree&&s.push({path:c,type:"checkout",hash:u.hash,mode:u.mode}));break}case"TAKE":{let u=f.takeFrom==="head"?d.headHash:d.remoteHash,l=f.takeFrom==="head"?d.headMode:d.remoteMode,m=l?Number.parseInt(l,8):33188;o.push({path:c,mode:m,hash:u,stage:0,stat:pe()}),r.updateWorktree&&s.push({path:c,type:"checkout",hash:u,mode:m});break}case"DELETE":{r.updateWorktree&&d.existsOnDisk&&s.push({path:c,type:"delete"});break}case"SKIP":break}}return o.sort((c,f)=>he(c.path,f.path)||c.stage-f.stage),{newEntries:o,worktreeOps:s}}var md=[{error:"WOULD_OVERWRITE",msg:e=>`error: Your local changes to the following files would be overwritten by ${e}:`,fix:e=>`Please commit your changes or stash them before you ${e}.`},{error:"NOT_UPTODATE_FILE",msg:e=>`error: Your local changes to the following files would be overwritten by ${e}:`,fix:e=>`Please commit your changes or stash them before you ${e}.`},{error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN",msg:e=>`error: The following untracked working tree files would be overwritten by ${e}:`,fix:e=>`Please move or remove them before you ${e}.`},{error:"WOULD_LOSE_UNTRACKED_REMOVED",msg:e=>`error: The following untracked working tree files would be removed by ${e}:`,fix:e=>`Please move or remove them before you ${e}.`}];function Gr(e,t){let n=t.actionHint??t.operationName,r=[];for(let{error:s,msg:a,fix:i}of md){let c=e.filter(f=>f.error===s).map(f=>f.path).sort();if(c.length>0){let f=c.map(d=>` ${d}`).join(`
32
+ `;await e.fs.writeFile(r,o)}async function Te(e,t,n){let r=Mr(e,t);await Tn(e.fs,r);let o=`${$i(n)}
33
+ `;if(await e.fs.exists(r)){let s=await e.fs.readFile(r);await e.fs.writeFile(r,s+o)}else await e.fs.writeFile(r,o)}async function er(e,t){let n=Mr(e,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function ee(e,t,n,r,o,s,a=!1){let i=await Ot(e,t),c={oldHash:r??Z,newHash:o,...i,message:s};await Te(e,n,c),a&&n!=="HEAD"&&await Te(e,"HEAD",c)}function _f(e){let t=[],n=e.length;for(;n>0;){let s=e.slice(0,n).match(/^(.+?)~(\d*)$/);if(s&&s[1]!==void 0&&s[2]!==void 0){let i=s[2]===""?1:parseInt(s[2],10);t.unshift({type:"tilde",n:i}),n=s[1].length;continue}let a=e.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let i=a[2]===""?1:parseInt(a[2],10);t.unshift({type:"caret",n:i}),n=a[1].length;continue}break}let r=e.slice(0,n),o=r.match(/^(.+?)@\{(\d+)\}$/);return o&&o[1]!==void 0&&o[2]!==void 0?{base:o[1],reflogIndex:parseInt(o[2],10),suffixes:t}:{base:r,suffixes:t}}var Ti=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];async function Ff(e,t){let n=t.slice(0,2),r=t.slice(2),o=H(e.gitDir,"objects",n);if(!await e.fs.exists(o))return null;let a=(await e.fs.readdir(o)).filter(i=>i.startsWith(r));if(a.length===0)return null;if(a.length>1)throw new zs(t);return`${n}${a[0]}`}var zs=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}};async function Uf(e,t){if(t==="HEAD"||t==="@")return F(e,"HEAD");if(Ti.includes(t))return F(e,t);if(/^[0-9a-f]{40}$/.test(t))return await Vt(e,t)?t:null;if(/^[0-9a-f]{4,39}$/.test(t)){let s=await Ff(e,t);if(s)return s}if(t.startsWith("refs/")){let s=await F(e,t);if(s)return s}let n=await F(e,`refs/heads/${t}`);if(n)return n;let r=await F(e,`refs/tags/${t}`);if(r)return r;let o=await F(e,`refs/remotes/${t}`);return o||null}function Bf(e){if(e==="HEAD"||e==="@")return"HEAD";for(let t of Ti)if(e===t)return t;return e.startsWith("refs/")?e:`refs/heads/${e}`}async function Wf(e,t,n){let r=Bf(t),o=await Me(e,r);if(o.length===0)return null;let s=o.length-1-n;if(s<0||s>=o.length)return null;let a=o[s];return a?a.newHash:null}async function je(e,t){let{base:n,reflogIndex:r,suffixes:o}=_f(t),s;if(r!==void 0?s=await Wf(e,n,r):s=await Uf(e,n),!s)return null;o.length>0&&(s=await Ie(e,s));for(let a of o)if(a.type==="tilde")for(let i=0;i<a.n;i++){if(!s)return null;let c=await j(e,s);if(c.parents.length===0||(s=c.parents[0]??null,!s))return null}else{if(a.n===0)continue;if(!s)return null;let i=await j(e,s);if(a.n>i.parents.length||(s=i.parents[a.n-1]??null,!s))return null}return s}function Hi(e){let t=e.indexOf(":");return t<0?null:{rev:e.slice(0,t)||"HEAD",path:e.slice(t+1)}}var qf=new TextEncoder;function ze(e,t){return e.lstat?e.lstat(t):e.stat(t)}function Lt(e){return typeof e=="string"?e==="120000":e===40960}async function tr(e,t){if((await ze(e,t)).isSymbolicLink&&e.readlink){let r=await e.readlink(t);return qf.encode(r)}return e.readFileBuffer(t)}async function Jt(e,t){let n=await tr(e,t);return st("blob",n)}var Kf=new TextEncoder,Ai=new TextDecoder;function Qt(e){let t=[],n=0;for(;n<e.byteLength;){let r=e.indexOf(32,n);if(r===-1)break;let o=Ai.decode(e.subarray(n,r)),s=e.indexOf(0,r+1);if(s===-1)break;let a=Ai.decode(e.subarray(r+1,s)),i=e.subarray(s+1,s+21),c=Kt(i),f=o.padStart(6,"0");t.push({mode:f,name:a,hash:c}),n=s+21}return{type:"tree",entries:t}}function vi(e){let t=[];for(let s of e.entries){let a=s.mode.replace(/^0+/,""),i=Kf.encode(`${a} ${s.name}\0`),c=dt(s.hash);t.push(i),t.push(c)}let n=t.reduce((s,a)=>s+a.byteLength,0),r=new Uint8Array(n),o=0;for(let s of t)r.set(s,o),o+=s.byteLength;return r}var nr={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};async function ke(e,t){return Si(e,t,"")}async function Si(e,t,n){let r=[],o=new Map;for(let a of t){let i=n?a.path.slice(n.length+1):a.path,c=i.indexOf("/");if(c===-1)r.push({mode:zf(a.mode),name:i,hash:a.hash});else{let f=i.slice(0,c),d=o.get(f);d||(d=[],o.set(f,d)),d.push(a)}}for(let[a,i]of o){let c=n?`${n}/${a}`:a,f=await Si(e,i,c);r.push({mode:nr.DIRECTORY,name:a,hash:f})}r.sort((a,i)=>{let c=a.mode===nr.DIRECTORY?`${a.name}/`:a.name,f=i.mode===nr.DIRECTORY?`${i.name}/`:i.name;return c<f?-1:c>f?1:0});let s=vi({type:"tree",entries:r});return we(e,"tree",s)}async function He(e,t,n=""){let r=await fe(e,t);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let o=Qt(r.content),s=[];for(let a of o.entries){let i=n?`${n}/${a.name}`:a.name;if(a.mode===nr.DIRECTORY){let c=await He(e,a.hash,i);s.push(...c)}else s.push({path:i,mode:a.mode,hash:a.hash})}return s}async function se(e,t){if(!t)return new Map;let n=await He(e,t);return new Map(n.map(r=>[r.path,r]))}async function Ae(e,t,n){let r=await se(e,t),o=await se(e,n),s=[];for(let[a,i]of r){let c=o.get(a);c?(i.hash!==c.hash||i.mode!==c.mode)&&s.push({path:a,status:"modified",oldHash:i.hash,newHash:c.hash,oldMode:i.mode,newMode:c.mode}):s.push({path:a,status:"deleted",oldHash:i.hash,oldMode:i.mode})}for(let[a,i]of o)r.has(a)||s.push({path:a,status:"added",newHash:i.hash,newMode:i.mode});return s.sort((a,i)=>he(a.path,i.path))}function zf(e){return e.toString(8).padStart(6,"0")}function Di(e){return/^[a-zA-Z0-9]$/.test(e)}function Vf(e){return/^[a-zA-Z]$/.test(e)}function Yf(e){return e>="0"&&e<="9"}function Vs(e){return e>="A"&&e<="Z"}function Ys(e){return e>="a"&&e<="z"}function Mi(e){return/^\s$/.test(e)}function Xf(e){return e===" "||e===" "}function Zs(e){let t=e.charCodeAt(0);return t>=32&&t<=126}function Zf(e){return Zs(e)&&!Mi(e)}function Jf(e){return Zs(e)&&!Di(e)&&e!==" "}function Qf(e){let t=e.charCodeAt(0);return t<32||t===127}function ed(e){return/^[0-9a-fA-F]$/.test(e)}function rr(e,t,n){return n?e.toLowerCase()===t.toLowerCase():e===t}function Xs(e,t,n,r,o){let s=(o&1)!==0,a=(o&2)!==0;for(;t<e.length;){let i=e[t];if(r>=n.length&&i!=="*")return-1;let c=r<n.length?n[r]:"";switch(i){case"\\":{if(t++,t>=e.length)return-1;if(!rr(n[r],e[t],s))return 1;r++,t++;break}case"?":{if(a&&c==="/")return 1;r++,t++;break}case"*":{let f;if(t++,t<e.length&&e[t]==="*"){let d=t;for(;t<e.length&&e[t]==="*";)t++;if(!a)f=!0;else if((d-1<1||e[d-2]==="/")&&(t>=e.length||e[t]==="/"||e[t]==="\\"&&t+1<e.length&&e[t+1]==="/")){if(t<e.length&&e[t]==="/"&&Xs(e,t+1,n,r,o)===0)return 0;f=!0}else f=!1}else f=!a;if(t>=e.length)return!f&&n.indexOf("/",r)!==-1?-2:0;if(!f&&e[t]==="/"){let d=n.indexOf("/",r);if(d===-1)return-1;r=d+1,t++;break}for(;!(r>=n.length);){if(!td(e[t])){let u=s?e[t].toLowerCase():e[t];for(;r<n.length&&(f||n[r]!=="/")&&(s?n[r].toLowerCase():n[r])!==u;)r++;if(r>=n.length||!f&&n[r]==="/")return r<n.length&&!f&&n[r]==="/"?-2:f?-1:-2}let d=Xs(e,t,n,r,o);if(d!==1){if(!f||d!==-2)return d}else if(!f&&n[r]==="/")return-2;r++}return-1}case"[":{if(a&&c==="/")return 1;if(t++,t>=e.length)return-1;let f=!1;(e[t]==="!"||e[t]==="^")&&(f=!0,t++);let d=!1,u="",l=!0;for(;t<e.length&&(l||e[t]!=="]");){l=!1;let m=e[t];if(m==="\\"){if(t++,t>=e.length)return-1;m=e[t],rr(c,m,s)&&(d=!0)}else if(m==="-"&&u&&t+1<e.length&&e[t+1]!=="]"){if(t++,m=e[t],m==="\\"){if(t++,t>=e.length)return-1;m=e[t]}let h=u,p=m;if(c>=h&&c<=p&&(d=!0),s){if(Ys(c)){let g=c.toUpperCase();g>=h&&g<=p&&(d=!0)}else if(Vs(c)){let g=c.toLowerCase();g>=h&&g<=p&&(d=!0)}}m=""}else if(m==="["&&t+1<e.length&&e[t+1]===":"){t+=2;let h=t;for(;t<e.length&&e[t]!=="]";)t++;if(t>=e.length)return-1;let p=t-h-1;if(p<0||e[t-1]!==":")t=h-2,m="[",rr(c,m,s)&&(d=!0);else{let g=e.slice(h,h+p);nd(g,c,s)&&(d=!0),m=""}}else rr(c,m,s)&&(d=!0);u=m,t++}if(t>=e.length)return-1;if(t++,d===f)return 1;r++;break}default:{if(!rr(c,i,s))return 1;r++,t++;break}}}return r>=n.length?0:1}function td(e){return e==="*"||e==="?"||e==="["||e==="\\"}function nd(e,t,n){switch(e){case"alnum":return Di(t);case"alpha":return Vf(t);case"blank":return Xf(t);case"cntrl":return Qf(t);case"digit":return Yf(t);case"graph":return Zf(t);case"lower":return Ys(t)||n&&Vs(t);case"print":return Zs(t);case"punct":return Jf(t);case"space":return Mi(t);case"upper":return Vs(t)||n&&Ys(t);case"xdigit":return ed(t);default:return!1}}function pn(e,t,n=0){return Xs(e,0,t,0,n)===0?0:1}var ji=1,Li=4,Gi=8,jr=16;function Ni(e){for(let t=0;t<e.length;t++){let n=e[t];if(n==="\\"){t++;continue}if(n==="*"||n==="?"||n==="[")return t}return e.length}function rd(e){return Ni(e)===e.length}function sd(e,t){let n=e;for(;n.length>0;){let c=n[n.length-1];if(c===" "||c===" "){if(n.length>=2&&n[n.length-2]==="\\"){n=n.slice(0,n.length-2)+n[n.length-1];break}n=n.slice(0,-1)}else break}if(n.length===0||n[0]==="#")return null;let r=0,o=n;if(o[0]==="!"&&(r|=jr,o=o.slice(1)),o.length===0)return null;let s=o.length;o[s-1]==="/"&&(s--,o=o.slice(0,s),r|=Gi);let a=!1;for(let c=0;c<s;c++)if(o[c]==="/"){a=!0;break}a||(r|=ji);let i=Math.min(Ni(o),s);return o[0]==="*"&&rd(o.slice(1))&&(r|=Li),{pattern:o,patternLen:s,nowildcardLen:i,flags:r,base:t}}function sr(e,t,n){let r=[];for(let o of e.split(`
34
+ `)){let s=sd(o,t);s&&r.push(s)}return{patterns:r,src:n}}function od(e,t){let{pattern:n,patternLen:r,nowildcardLen:o,flags:s}=t;if(o===r)return e===n;if(s&Li){let a=n.slice(1);return e.length>=a.length&&e.endsWith(a)}return pn(n,e,2)===0}function id(e,t){let{base:n}=t,{pattern:r,patternLen:o,nowildcardLen:s}=t;r[0]==="/"&&(r=r.slice(1),o--,s=Math.max(0,s-1));let a=n.length;if(a>0&&(e.length<a+1||e[a]!=="/"||!e.startsWith(n)))return!1;let i=a>0?e.slice(a+1):e,c=i.length;if(s>0){if(s>c||i.slice(0,s)!==r.slice(0,s))return!1;if(o===s&&c===s)return!0}return pn(r,i,2)===0}function Js(e,t,n){let r=e.lastIndexOf("/")>=0?e.slice(e.lastIndexOf("/")+1):e;for(let o=n.patterns.length-1;o>=0;o--){let s=n.patterns[o];if(s&&!(s.flags&Gi&&!t)){if(s.flags&ji){if(s.base&&!e.startsWith(`${s.base}/`))continue;if(od(r,s))return s;continue}if(id(e,s))return s}}return null}function Tt(e,t,n){for(let r=e.dirPatterns.length-1;r>=0;r--){let o=e.dirPatterns[r],s=Js(t,n,o);if(s)return s.flags&jr?"not-ignored":"ignored"}if(e.excludeFile){let r=Js(t,n,e.excludeFile);if(r)return r.flags&jr?"not-ignored":"ignored"}if(e.globalExclude){let r=Js(t,n,e.globalExclude);if(r)return r.flags&jr?"not-ignored":"ignored"}return"undecided"}async function vn(e){let t={dirPatterns:[],excludeFile:null,globalExclude:null},n=H(e.gitDir,"info","exclude");try{let r=await e.fs.readFile(n);t.excludeFile=sr(r,"",n)}catch{}try{let r=await Et(e,"core.excludesFile");if(r)try{let o=await e.fs.readFile(r);t.globalExclude=sr(o,"",r)}catch{}}catch{}return t}function gn(e,t,n,r){let s=sr(t,n===""?"":n,r);return{...e,dirPatterns:[...e.dirPatterns,s]}}var ad=new TextEncoder,cd=new TextDecoder;async function ut(e,t){if(!e.workTree)throw new Error("Cannot diff working tree in a bare repository");let n=[];for(let s of t.entries){if(s.stage!==0)continue;let a=H(e.workTree,s.path),i;try{i=await ze(e.fs,a)}catch{i=null}if(!i){n.push({path:s.path,status:"deleted",indexHash:s.hash});continue}if(!i.isFile&&!i.isSymbolicLink)continue;await Jt(e.fs,a)!==s.hash&&n.push({path:s.path,status:"modified",indexHash:s.hash})}let r=new Set(t.entries.map(s=>s.path)),o=await _e(e,e.workTree,"");for(let s of o)r.has(s)||n.push({path:s,status:"untracked"});return n.sort((s,a)=>he(s.path,a.path))}async function ve(e,t){if(!e.workTree)throw new Error("Cannot checkout in a bare repository");let n=await fe(e,t.hash);if(n.type!=="blob")throw new Error(`Expected blob for ${t.path}, got ${n.type}`);let r=H(e.workTree,t.path),o=r.lastIndexOf("/");if(o>0&&await e.fs.mkdir(r.slice(0,o),{recursive:!0}),t.mode!=null&&Lt(t.mode)&&e.fs.symlink){await ze(e.fs,r).then(()=>!0).catch(()=>!1)&&await e.fs.rm(r,{force:!0});let a=cd.decode(n.content);await e.fs.symlink(a,r)}else{if(e.fs.lstat)try{(await e.fs.lstat(r)).isSymbolicLink&&await e.fs.rm(r,{force:!0})}catch{}await e.fs.writeFile(r,n.content)}}async function _i(e,t){let n=await He(e,t);for(let r of n)await ve(e,r)}async function Gt(e,t,n){if(!e.workTree)throw new Error("Cannot stage in a bare repository");let r=H(e.workTree,n);if(!await e.fs.exists(r))throw new Error(`Path does not exist: ${n}`);let o=await ze(e.fs,r);if(o.isSymbolicLink&&e.fs.readlink){let f=await e.fs.readlink(r),d=ad.encode(f),u=await we(e,"blob",d),l={path:n,mode:40960,hash:u,stage:0,stat:{...pe(),size:d.byteLength}};return{index:Xe(t,l),hash:u}}let s=await e.fs.readFileBuffer(r),a=await we(e,"blob",s),i=o.mode!=null?fd(o.mode):33188,c={path:n,mode:i,hash:a,stage:0,stat:{...pe(),size:s.byteLength}};return{index:Xe(t,c),hash:a}}async function _e(e,t,n,r){let o=r?.skipIgnore??!1,s=null;if(!o){s=r?._ignore??await vn(e);let c=H(t,".gitignore");try{let f=await e.fs.readFile(c);s=gn(s,f,n,c)}catch{}}let a=[],i=await e.fs.readdir(t);for(let c of i){if(n===""&&c===".git")continue;let f=H(t,c),d=n?`${n}/${c}`:c,u=await ze(e.fs,f);if(u.isSymbolicLink){if(s&&Tt(s,d,!1)==="ignored")continue;a.push(d)}else if(u.isDirectory){if(s&&Tt(s,d,!0)==="ignored")continue;let l=await _e(e,f,d,{skipIgnore:o,_ignore:s??void 0});a.push(...l)}else if(u.isFile){if(s&&Tt(s,d,!1)==="ignored")continue;a.push(d)}}return a}function fd(e){return e>511?e:e&73?33261:33188}async function wn(e,t,n){if(t===n||t==="/"||!t.startsWith(n)||!await e.exists(t)||!(await e.stat(t)).isDirectory)return;(await e.readdir(t)).length===0&&(await e.rm(t),await wn(e,Pt(t),n))}function Qs(e){return e.existsOnDisk&&e.indexHash===null}async function dd(e,t,n){let r=await Promise.all(t.map(h=>se(e,h.treeHash))),o=new Map,s=new Set;for(let h of n.entries)h.stage===0?o.set(h.path,h):s.add(h.path);let a=e.workTree?new Set(await _e(e,e.workTree,"",{skipIgnore:!0})):new Set,i=null,c=async()=>(i===null&&(i=e.workTree?new Set(await _e(e,e.workTree,"")):new Set),i),f=new Set;for(let h of r)for(let p of h.keys())f.add(p);let d=new Set;for(let h of n.entries)f.has(h.path)||d.add(h.path);for(let h of a)f.has(h)||d.add(h);let u=Array.from(f).sort().concat(Array.from(d).sort()),l=(h,p)=>r[h]?.get(p),m=[];for(let h of u){let p=null,g=null,w=null,x=null,b=null;if(r.length===1){let L=l(0,h);w=L?.hash??null,b=L?.mode??null}else if(r.length===2){let L=l(0,h),D=l(1,h);g=L?.hash??null,x=L?.mode??null,w=D?.hash??null,b=D?.mode??null}else if(r.length>=3){let L=l(0,h),D=l(1,h),z=l(2,h);p=L?.hash??null,g=D?.hash??null,x=D?.mode??null,w=z?.hash??null,b=z?.mode??null}let k=o.get(h)?.hash??null,P=s.has(h)?1:0,C=a.has(h),O,y=async()=>O!==void 0?O:C?(O=!(await c()).has(h),O):(O=!1,!1),I,A=async()=>{if(I!==void 0)return I;if(!C||!e.workTree)return I=null,null;let L=H(e.workTree,h);try{I=await Jt(e.fs,L)}catch{I=null}return I};m.push({path:h,baseHash:p,headHash:g,remoteHash:w,indexHash:k,indexStage:P,existsOnDisk:C,isIgnoredOnDisk:y,getWorktreeHash:A,headMode:x,remoteMode:b})}return m}function Gr(e,t){let n=e.remoteHash;return n===null?e.indexHash===null&&e.indexStage===0?{action:"SKIP",requirements:[]}:{action:"DELETE",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}:e.indexHash===n?{action:"KEEP",requirements:[]}:e.indexHash===null?{action:"TAKE",takeFrom:"remote",requirements:t.reset||!!t.strippedConflictPaths?.has(e.path)?[]:["NO_UNTRACKED"]}:{action:"TAKE",takeFrom:"remote",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}}function Nr(e,t){let{headHash:n,remoteHash:r,indexHash:o}=e;return e.indexStage>0?n===r?r===null?{action:"DELETE",requirements:[]}:{action:"TAKE",takeFrom:"remote",requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}:o===null?r===null?n===null?{action:"SKIP",caseNumber:0,requirements:[]}:{action:"SKIP",caseNumber:2,requirements:["NO_UNTRACKED_REMOVED"]}:n!==null?n===r?{action:"SKIP",caseNumber:3,requirements:[]}:t.allowStagedChanges?{action:"TAKE",takeFrom:"remote",caseNumber:3,requirements:[]}:{action:"KEEP",caseNumber:3,requirements:["INDEX_MUST_MATCH_HEAD"]}:{action:"TAKE",takeFrom:"remote",caseNumber:1,requirements:["NO_UNTRACKED"]}:n===null&&r===null?{action:"KEEP",caseNumber:4,requirements:[]}:n===null&&r===o?{action:"KEEP",caseNumber:6,requirements:[]}:n===o&&r===null?{action:"DELETE",caseNumber:10,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:n!==null&&n===r?{action:"KEEP",caseNumber:14,requirements:[]}:n!==null&&r!==null&&o===r?{action:"KEEP",caseNumber:18,requirements:[]}:n!==null&&r!==null&&o===n&&o!==r?{action:"TAKE",takeFrom:"remote",caseNumber:20,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:t.allowStagedChanges?r===null?{action:"DELETE",caseNumber:-1,requirements:[]}:{action:"TAKE",takeFrom:"remote",caseNumber:-1,requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}}function ld(e,t){switch(e.action){case"TAKE":return e.takeFrom==="head"?t.headHash:e.takeFrom==="remote"?t.remoteHash:e.takeFrom==="base"?t.baseHash:null;case"DELETE":return null;case"KEEP":return t.indexHash;default:return null}}async function ud(e,t,n){let r=[];if(n.reset)return r;for(let[o,s]of e){if(s.requirements.length===0)continue;let a=t.get(o);if(!a)continue;let i=ld(s,a);for(let c of s.requirements){if(n.allowStagedChanges&&c==="INDEX_MUST_MATCH_HEAD")continue;let f=await md(c,a,i);if(f){r.push({path:o,error:f});break}}if(n.stopAtFirstError&&r.length>0)break}return r}async function md(e,t,n,r){switch(e){case"INDEX_MUST_NOT_EXIST":return t.indexHash!==null?"WOULD_OVERWRITE":Qs(t)?"WOULD_LOSE_UNTRACKED_REMOVED":null;case"INDEX_MUST_MATCH_HEAD":return t.indexHash!==t.headHash?"WOULD_OVERWRITE":null;case"INDEX_MUST_MATCH_RESULT":return t.indexHash!==null&&t.indexHash!==n?"WOULD_OVERWRITE":null;case"WORKTREE_MUST_BE_UPTODATE":{if(!t.existsOnDisk)return null;let o=await t.getWorktreeHash();return o!==t.indexHash?r?.allowContentEscapeHatch&&(n!==null&&o===n||o===null&&n===null)?null:"NOT_UPTODATE_FILE":null}case"NO_UNTRACKED":return Qs(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_OVERWRITTEN":null;case"NO_UNTRACKED_REMOVED":return Qs(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_REMOVED":null}}function hd(e,t,n,r){let o=[],s=[],a=new Set(e.keys()),i=new Map;for(let c of n.entries)a.has(c.path)||o.push(c),c.stage===0&&i.set(c.path,c);for(let[c,f]of e){let d=t.get(c);if(d)switch(f.action){case"KEEP":{let u=i.get(c);u&&(o.push(u),r.reset&&r.updateWorktree&&s.push({path:c,type:"checkout",hash:u.hash,mode:u.mode}));break}case"TAKE":{let u=f.takeFrom==="head"?d.headHash:d.remoteHash,l=f.takeFrom==="head"?d.headMode:d.remoteMode,m=l?Number.parseInt(l,8):33188;o.push({path:c,mode:m,hash:u,stage:0,stat:pe()}),r.updateWorktree&&s.push({path:c,type:"checkout",hash:u,mode:m});break}case"DELETE":{r.updateWorktree&&d.existsOnDisk&&s.push({path:c,type:"delete"});break}case"SKIP":break}}return o.sort((c,f)=>he(c.path,f.path)||c.stage-f.stage),{newEntries:o,worktreeOps:s}}var pd=[{error:"WOULD_OVERWRITE",msg:e=>`error: Your local changes to the following files would be overwritten by ${e}:`,fix:e=>`Please commit your changes or stash them before you ${e}.`},{error:"NOT_UPTODATE_FILE",msg:e=>`error: Your local changes to the following files would be overwritten by ${e}:`,fix:e=>`Please commit your changes or stash them before you ${e}.`},{error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN",msg:e=>`error: The following untracked working tree files would be overwritten by ${e}:`,fix:e=>`Please move or remove them before you ${e}.`},{error:"WOULD_LOSE_UNTRACKED_REMOVED",msg:e=>`error: The following untracked working tree files would be removed by ${e}:`,fix:e=>`Please move or remove them before you ${e}.`}];function _r(e,t){let n=t.actionHint??t.operationName,r=[];for(let{error:s,msg:a,fix:i}of pd){let c=e.filter(f=>f.error===s).map(f=>f.path).sort();if(c.length>0){let f=c.map(d=>` ${d}`).join(`
35
35
  `);r.push(`${a(t.operationName)}
36
36
  ${f}
37
37
  ${i(n)}
38
38
  `)}}return{stdout:"",stderr:r.length>0?`${r.join("")}Aborting
39
- `:"",exitCode:t.errorExitCode}}async function gn(e,t,n,r){let o=await cd(e,t,n),s=new Map(o.map(d=>[d.path,d])),a=new Map;for(let d of o){let u=r.mergeFn(d,r);a.set(d.path,u)}let i=await dd(a,s,r);if(i.length>0)return{success:!1,newEntries:[],worktreeOps:[],errors:i,errorOutput:Gr(i,r)};let{newEntries:c,worktreeOps:f}=ud(a,s,n,r);return{success:!0,newEntries:c,worktreeOps:f,errors:[],errorOutput:null}}async function be(e,t){if(!e.workTree)return;let n=e.workTree,r=[];for(let o of t){let s=v(n,o.path);o.type==="delete"?await ze(e.fs,s).then(()=>!0).catch(()=>!1)&&(await e.fs.rm(s),r.push(s)):o.type==="checkout"&&o.hash&&await ve(e,{path:o.path,hash:o.hash,mode:o.mode})}for(let o of r)await pn(e.fs,Pt(o),n)}async function Qt(e,t,n,r){return gn(e,[{label:"current",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:Lr,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"checkout",actionHint:"switch branches"})}async function Ni(e,t,n,r){return gn(e,[{label:"HEAD",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:Lr,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"merge"})}async function yt(e,t,n){return gn(e,[{label:"target",treeHash:t}],n,{mergeFn:jr,updateWorktree:!0,reset:!0,errorExitCode:128,operationName:"reset"})}async function _i(e,t,n,r){let o=new Set;for(let i of n.entries)i.stage>0&&o.add(i.path);let s={version:n.version,entries:xe(n)},a=await gn(e,[{label:"ORIG_HEAD",treeHash:t}],s,{mergeFn:jr,updateWorktree:!0,reset:!1,errorExitCode:128,operationName:"merge",stopAtFirstError:!0,strippedConflictPaths:o});if(!a.success){let i=r??"HEAD",c=[];for(let f of a.errors)f.error==="NOT_UPTODATE_FILE"?c.push(`error: Entry '${f.path}' not uptodate. Cannot merge.
39
+ `:"",exitCode:t.errorExitCode}}async function bn(e,t,n,r){let o=await dd(e,t,n),s=new Map(o.map(d=>[d.path,d])),a=new Map;for(let d of o){let u=r.mergeFn(d,r);a.set(d.path,u)}let i=await ud(a,s,r);if(i.length>0)return{success:!1,newEntries:[],worktreeOps:[],errors:i,errorOutput:_r(i,r)};let{newEntries:c,worktreeOps:f}=hd(a,s,n,r);return{success:!0,newEntries:c,worktreeOps:f,errors:[],errorOutput:null}}async function be(e,t){if(!e.workTree)return;let n=e.workTree,r=[];for(let o of t){let s=H(n,o.path);o.type==="delete"?await ze(e.fs,s).then(()=>!0).catch(()=>!1)&&(await e.fs.rm(s),r.push(s)):o.type==="checkout"&&o.hash&&await ve(e,{path:o.path,hash:o.hash,mode:o.mode})}for(let o of r)await wn(e.fs,Pt(o),n)}async function en(e,t,n,r){return bn(e,[{label:"current",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:Nr,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"checkout",actionHint:"switch branches"})}async function Fi(e,t,n,r){return bn(e,[{label:"HEAD",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:Nr,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"merge"})}async function Nt(e,t,n){return bn(e,[{label:"target",treeHash:t}],n,{mergeFn:Gr,updateWorktree:!0,reset:!0,errorExitCode:128,operationName:"reset"})}async function Fr(e,t,n,r){let o=new Set;for(let i of n.entries)i.stage>0&&o.add(i.path);let s={version:n.version,entries:xe(n)},a=await bn(e,[{label:"ORIG_HEAD",treeHash:t}],s,{mergeFn:Gr,updateWorktree:!0,reset:!1,errorExitCode:128,operationName:"merge",stopAtFirstError:!0,strippedConflictPaths:o});if(!a.success){let i=r??"HEAD",c=[];for(let f of a.errors)f.error==="NOT_UPTODATE_FILE"?c.push(`error: Entry '${f.path}' not uptodate. Cannot merge.
40
40
  `):f.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"&&c.push(`error: Untracked working tree file '${f.path}' would be overwritten by merge.
41
- `);return c.length>0&&(a.errorOutput=j(c.join("")+`fatal: Could not reset index file to revision '${i}'.
41
+ `);return c.length>0&&(a.errorOutput=G(c.join("")+`fatal: Could not reset index file to revision '${i}'.
42
42
  `,128)),a}if(e.workTree&&o.size>0){let i=await se(e,t),c=new Set(a.newEntries.map(f=>f.path));for(let f of o)!i.has(f)&&!c.has(f)&&a.worktreeOps.push({path:f,type:"delete"})}return a}function T(e){return{stdout:"",stderr:`fatal: ${e}
43
- `,exitCode:128}}function j(e,t=1){return{stdout:"",stderr:e,exitCode:t}}var hd=T("not a git repository (or any of the parent directories): .git"),pd=T("this operation must be run in a work tree");async function B(e,t,n){let r=await $n(e,t);return r?n?{...r,...n}:r:hd}function S(e){return typeof e=="object"&&e!==null&&"exitCode"in e}function Fe(e){return e.workTree?null:pd}async function Se(e){let t=await X(e);return t||T("your current branch does not have any commits yet")}function Nt(e,t,n=`fatal: Exiting because of an unresolved conflict.
44
- `){return dt(e)?j(`error: ${t} is not possible because you have unmerged files.
43
+ `,exitCode:128}}function G(e,t=1){return{stdout:"",stderr:e,exitCode:t}}var gd=T("not a git repository (or any of the parent directories): .git"),wd=T("this operation must be run in a work tree");async function B(e,t,n){let r=await Hn(e,t);return r?n?{...r,...n}:r:gd}function S(e){return typeof e=="object"&&e!==null&&"exitCode"in e}function Fe(e){return e.workTree?null:wd}async function Se(e){let t=await X(e);return t||T("your current branch does not have any commits yet")}function _t(e,t,n=`fatal: Exiting because of an unresolved conflict.
44
+ `){return lt(e)?G(`error: ${t} is not possible because you have unmerged files.
45
45
  hint: Fix them up in the work tree, and then use 'git add/rm <file>'
46
46
  hint: as appropriate to mark resolution and make a commit.
47
- `+n,128):null}async function An(e,t,n){let r=await je(e,t);return r||T(n??`bad revision '${t}'`)}async function ye(e,t,n){let r=await je(e,t);if(!r)return T(n??`bad revision '${t}'`);try{let o=await Re(e,r),s=await M(e,o);return{hash:o,commit:s}}catch{return T(n??`bad revision '${t}'`)}}async function Le(e,t){try{return await qn(e,t)}catch(n){return T(n.message)}}async function Ht(e,t){try{return await Cr(e,t)}catch(n){return T(n.message)}}function vn(e,t){let n=new Map;for(let r of e.entries)r.stage===0&&n.set(r.path,r);for(let[r,o]of n){let s=t.get(r);if(!s||s.hash!==o.hash)return!0}for(let[r]of t)if(!n.has(r))return!0;return!1}function he(e,t){return e<t?-1:e>t?1:0}function Ze(e,t){return e.workTree?Ke(e.workTree,t):""}function K(e){return e.slice(0,7)}function ue(e){let t=e.indexOf(`
48
- `);return t===-1?e:e.slice(0,t)}function Et(e){return T(`ambiguous argument '${e}': unknown revision or path not in the working tree.
47
+ `+n,128):null}async function Sn(e,t,n){let r=await je(e,t);return r||T(n??`bad revision '${t}'`)}async function ye(e,t,n){let r=await je(e,t);if(!r)return T(n??`bad revision '${t}'`);try{let o=await Ie(e,r),s=await j(e,o);return{hash:o,commit:s}}catch{return T(n??`bad revision '${t}'`)}}async function Le(e,t){try{return await Vn(e,t)}catch(n){return T(n.message)}}async function Ht(e,t){try{return await Or(e,t)}catch(n){return T(n.message)}}function Dn(e,t){let n=new Map;for(let r of e.entries)r.stage===0&&n.set(r.path,r);for(let[r,o]of n){let s=t.get(r);if(!s||s.hash!==o.hash)return!0}for(let[r]of t)if(!n.has(r))return!0;return!1}function he(e,t){return e<t?-1:e>t?1:0}function Ze(e,t){return e.workTree?Ke(e.workTree,t):""}function K(e){return e.slice(0,7)}function ue(e){let t=e.indexOf(`
48
+ `);return t===-1?e:e.slice(0,t)}function xt(e){return T(`ambiguous argument '${e}': unknown revision or path not in the working tree.
49
49
  Use '--' to separate paths from revisions, like this:
50
- 'git <command> [<revision>...] -- [<file>...]'`)}function ut(e,t,n,r=!1){return`[${e}${r?" (root-commit)":""} ${K(t)}] ${ue(n)}`}async function en(e,t,n){if(!await F(e,n.operationRef))return n.noOpError;let o=await F(e,"ORIG_HEAD");if(!o)return T(`There is no ${n.operationName} to abort (ORIG_HEAD missing).`);let s=await X(e),a=await M(e,o),i=await U(e),c=await _i(e,a.tree,i,n.origHeadAsTargetRev?o:void 0);if(!c.success)return c.errorOutput;if(await Yt(e,o),await re(e,{version:2,entries:c.newEntries}),await be(e,c.worktreeOps),s&&((await J(e))?.type==="symbolic"||s!==o)){let u=n.origHeadAsTargetRev?o:"HEAD";await ee(e,t,"HEAD",s,o,`reset: moving to ${u}`)}return await n.clearState(e),{stdout:"",stderr:"",exitCode:0}}async function Je(e,t,n,r,o,s){let a=$t({type:"commit",tree:t,parents:n,author:r,committer:o,message:s}),i=await we(e,"commit",a);return await Yt(e,i),i}function nr(e){return e.split(`
50
+ 'git <command> [<revision>...] -- [<file>...]'`)}function mt(e,t,n,r=!1){return`[${e}${r?" (root-commit)":""} ${K(t)}] ${ue(n)}`}async function tn(e,t,n){if(!await F(e,n.operationRef))return n.noOpError;let o=await F(e,"ORIG_HEAD")??await X(e);if(!o)return T(`There is no ${n.operationName} to abort (ORIG_HEAD missing).`);let s=await X(e),a=await j(e,o),i=await U(e),c=await Fr(e,a.tree,i,n.origHeadAsTargetRev?o:void 0);if(!c.success)return c.errorOutput;if(await Xt(e,o),await re(e,{version:2,entries:c.newEntries}),await be(e,c.worktreeOps),s&&((await J(e))?.type==="symbolic"||s!==o)){let u=n.origHeadAsTargetRev?o:"HEAD";await ee(e,t,"HEAD",s,o,`reset: moving to ${u}`)}return await n.clearState(e),{stdout:"",stderr:"",exitCode:0}}async function Je(e,t,n,r,o,s){let a=$t({type:"commit",tree:t,parents:n,author:r,committer:o,message:s}),i=await we(e,"commit",a);return await Xt(e,i),i}function or(e){return e.split(`
51
51
  `).filter(t=>!t.startsWith("#")).join(`
52
52
  `).replace(/\n+$/,`
53
- `)}function mt(e){return e.endsWith(`
53
+ `)}function ht(e){return e.endsWith(`
54
54
  `)?e:`${e}
55
- `}var _r=1,Zs=2,Nr=4,Js=8,rr=16,Fi=new Set(["*","?","[","\\"]),wd={glob:_r,literal:Zs,icase:Nr,top:Js,exclude:rr};function Ve(e){for(let t=0;t<e.length;t++)if(Fi.has(e[t]))return!0;return!1}function bd(e){for(let t=0;t<e.length;t++)if(Fi.has(e[t]))return t;return e.length}function yd(e){let t=e.split("/"),n=[];for(let r of t)if(!(r===""||r===".")){if(r===".."){n.length>0&&n[n.length-1]!==".."&&n.pop();continue}n.push(r)}return n.join("/")}function Oe(e,t){let n=0,r=e;if(r.startsWith(":(")){let c=r.indexOf(")");if(c!==-1){let f=r.slice(2,c);r=r.slice(c+1);for(let d of f.split(",")){let u=wd[d.trim()];u!==void 0&&(n|=u)}}}else r.startsWith(":/")?(n|=Js,r=r.slice(2)):(r.startsWith(":!")||r.startsWith(":^"))&&(n|=rr,r=r.slice(2));n&Zs&&n&_r&&(n&=~_r);let o;n&Js||t===""?o=r:o=yd(`${t}/${r}`);let s=!!(n&Zs),a=s?!1:Ve(o),i=s?o.length:bd(o);return{original:e,pattern:o,magic:n,hasWildcard:a,nowildcardLen:i}}function Fr(e,t){let{pattern:n,hasWildcard:r,magic:o,nowildcardLen:s}=e;if(n==="")return!0;if(!r){let i=!!(o&Nr),c=i?n.toLowerCase():n,f=i?t.toLowerCase():t;return!!(c===f||f.startsWith(c)&&f[c.length]==="/"||c.endsWith("/")&&f.startsWith(c))}if(s>0){let i=n.slice(0,s),c=t.slice(0,s);if(o&Nr){if(i.toLowerCase()!==c.toLowerCase())return!1}else if(i!==c)return!1}let a=0;return o&_r&&(a|=2),o&Nr&&(a|=1),mn(n,t,a)===0}function me(e,t){let n=!1,r=!1;for(let o of e)o.magic&rr?Fr(o,t)&&(r=!0):Fr(o,t)&&(n=!0);return n&&!r}function Bi(e,t){e.command("add",{description:"Add file contents to the index",args:[W.string().name("paths").describe("Pathspec of files to add").optional().variadic()],options:{all:A().alias("A").describe("Add changes from all tracked and untracked files"),force:A().alias("f").describe("Allow adding otherwise ignored files"),update:A().alias("u").describe("Update tracked files"),"dry-run":A().alias("n").describe("Don't actually add the file(s)")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c={skipIgnore:n.force,updateOnly:n.update,actions:n["dry-run"]?[]:void 0},f=n.paths;if((n.all||n.update)&&f.length===0){let p=await U(s);return p=await Ui(s,p,i,"",c),n["dry-run"]||await re(s,p),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}if(f.length===0)return{stdout:"",stderr:`Nothing specified, nothing added.
56
- Maybe you wanted to say 'git add .'?`,exitCode:0};let d=await U(s),u=[],l=[];for(let p of f)Ve(p)?l.push(p):u.push(p);let m=[];for(let p of u){let g=ct(r.cwd,p),w=Ke(i,g);if((w==="."||w==="")&&(w=""),w.startsWith(".."))return T(`'${p}' is outside repository at '${i}'`);if(await r.fs.exists(g)){if(!n.force&&w!==""){let y=d.entries.some(C=>C.path===w||C.path.startsWith(`${w}/`)),k=await xd(s,i,w,y);if(k){m.push(k);continue}}if((await r.fs.stat(g)).isDirectory)d=await Ui(s,d,g,w,c);else{let y=d.entries.find(C=>C.path===w&&C.stage===0)?.hash,k=await Gt(s,d,w);d=k.index,c.actions&&k.hash!==y&&c.actions.push(`add '${w}'
57
- `)}}else if(d.entries.some(y=>y.path===w||y.path.startsWith(`${w}/`))){if(c.actions)for(let y of d.entries)(y.path===w||y.path.startsWith(`${w}/`))&&c.actions.push(`remove '${y.path}'
58
- `);d={...d,entries:d.entries.filter(y=>y.path!==w&&!y.path.startsWith(`${w}/`))}}else return T(`pathspec '${p}' did not match any files`)}if(m.length>0)return j(`The following paths are ignored by one of your .gitignore files:
55
+ `}var Br=1,eo=2,Ur=4,to=8,ir=16,Ui=new Set(["*","?","[","\\"]),yd={glob:Br,literal:eo,icase:Ur,top:to,exclude:ir};function Ve(e){for(let t=0;t<e.length;t++)if(Ui.has(e[t]))return!0;return!1}function Ed(e){for(let t=0;t<e.length;t++)if(Ui.has(e[t]))return t;return e.length}function xd(e){let t=e.split("/"),n=[];for(let r of t)if(!(r===""||r===".")){if(r===".."){n.length>0&&n[n.length-1]!==".."&&n.pop();continue}n.push(r)}return n.join("/")}function Oe(e,t){let n=0,r=e;if(r.startsWith(":(")){let c=r.indexOf(")");if(c!==-1){let f=r.slice(2,c);r=r.slice(c+1);for(let d of f.split(",")){let u=yd[d.trim()];u!==void 0&&(n|=u)}}}else r.startsWith(":/")?(n|=to,r=r.slice(2)):(r.startsWith(":!")||r.startsWith(":^"))&&(n|=ir,r=r.slice(2));n&eo&&n&Br&&(n&=~Br);let o;n&to||t===""?o=r:o=xd(`${t}/${r}`);let s=!!(n&eo),a=s?!1:Ve(o),i=s?o.length:Ed(o);return{original:e,pattern:o,magic:n,hasWildcard:a,nowildcardLen:i}}function Wr(e,t){let{pattern:n,hasWildcard:r,magic:o,nowildcardLen:s}=e;if(n==="")return!0;if(!r){let i=!!(o&Ur),c=i?n.toLowerCase():n,f=i?t.toLowerCase():t;return!!(c===f||f.startsWith(c)&&f[c.length]==="/"||c.endsWith("/")&&f.startsWith(c))}if(s>0){let i=n.slice(0,s),c=t.slice(0,s);if(o&Ur){if(i.toLowerCase()!==c.toLowerCase())return!1}else if(i!==c)return!1}let a=0;return o&Br&&(a|=2),o&Ur&&(a|=1),pn(n,t,a)===0}function me(e,t){let n=!1,r=!1;for(let o of e)o.magic&ir?Wr(o,t)&&(r=!0):Wr(o,t)&&(n=!0);return n&&!r}function Wi(e,t){e.command("add",{description:"Add file contents to the index",args:[W.string().name("paths").describe("Pathspec of files to add").optional().variadic()],options:{all:v().alias("A").describe("Add changes from all tracked and untracked files"),force:v().alias("f").describe("Allow adding otherwise ignored files"),update:v().alias("u").describe("Update tracked files"),"dry-run":v().alias("n").describe("Don't actually add the file(s)")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c={skipIgnore:n.force,updateOnly:n.update,actions:n["dry-run"]?[]:void 0},f=n.paths;if((n.all||n.update)&&f.length===0){let p=await U(s);return p=await Bi(s,p,i,"",c),n["dry-run"]||await re(s,p),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}if(f.length===0)return{stdout:"",stderr:`Nothing specified, nothing added.
56
+ Maybe you wanted to say 'git add .'?`,exitCode:0};let d=await U(s),u=[],l=[];for(let p of f)Ve(p)?l.push(p):u.push(p);let m=[];for(let p of u){let g=ft(r.cwd,p),w=Ke(i,g);if((w==="."||w==="")&&(w=""),w.startsWith(".."))return T(`'${p}' is outside repository at '${i}'`);if(await r.fs.exists(g)){if(!n.force&&w!==""){let E=d.entries.some(P=>P.path===w||P.path.startsWith(`${w}/`)),k=await Cd(s,i,w,E);if(k){m.push(k);continue}}if((await r.fs.stat(g)).isDirectory)d=await Bi(s,d,g,w,c);else{let E=d.entries.find(P=>P.path===w&&P.stage===0)?.hash,k=await Gt(s,d,w);d=k.index,c.actions&&k.hash!==E&&c.actions.push(`add '${w}'
57
+ `)}}else if(d.entries.some(E=>E.path===w||E.path.startsWith(`${w}/`))){if(c.actions)for(let E of d.entries)(E.path===w||E.path.startsWith(`${w}/`))&&c.actions.push(`remove '${E.path}'
58
+ `);d={...d,entries:d.entries.filter(E=>E.path!==w&&!E.path.startsWith(`${w}/`))}}else return T(`pathspec '${p}' did not match any files`)}if(m.length>0)return G(`The following paths are ignored by one of your .gitignore files:
59
59
  ${m.join(`
60
60
  `)}
61
61
  hint: Use -f if you really want to add them.
62
62
  hint: Disable this message with "git config set advice.addIgnoredFile false"
63
- `);if(l.length>0){let p=await Ed(s,r.cwd,d,l,c);if(p.error)return p.error;d=p.index}return n["dry-run"]||await re(s,d),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}})}async function Ed(e,t,n,r,o){let s=e.workTree,a=Ze(e,t),i=r.map(u=>Oe(u,a)),c=new Array(i.length).fill(!1),f=u=>{for(let l=0;l<i.length;l++)i[l].hasWildcard&&Fr(i[l],u)&&(c[l]=!0)},d=[];for(let u of n.entries){if(u.stage>0||!me(i,u.path))continue;f(u.path);let l=v(s,u.path);if(await e.fs.exists(l)){let m=await Gt(e,n,u.path);n=m.index,o?.actions&&m.hash!==u.hash&&o.actions.push(`add '${u.path}'
63
+ `);if(l.length>0){let p=await kd(s,r.cwd,d,l,c);if(p.error)return p.error;d=p.index}return n["dry-run"]||await re(s,d),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}})}async function kd(e,t,n,r,o){let s=e.workTree,a=Ze(e,t),i=r.map(u=>Oe(u,a)),c=new Array(i.length).fill(!1),f=u=>{for(let l=0;l<i.length;l++)i[l].hasWildcard&&Wr(i[l],u)&&(c[l]=!0)},d=[];for(let u of n.entries){if(u.stage>0||!me(i,u.path))continue;f(u.path);let l=H(s,u.path);if(await e.fs.exists(l)){let m=await Gt(e,n,u.path);n=m.index,o?.actions&&m.hash!==u.hash&&o.actions.push(`add '${u.path}'
64
64
  `)}else o?.actions&&o.actions.push(`remove '${u.path}'
65
65
  `),d.push(u.path)}for(let u of d)n=Ne(n,u);if(!o?.updateOnly){let u=new Set(n.entries.map(m=>m.path)),l=await _e(e,s,"",{skipIgnore:o?.skipIgnore});for(let m of l){if(u.has(m)||!me(i,m))continue;f(m),o?.actions&&o.actions.push(`add '${m}'
66
- `),n=(await Gt(e,n,m)).index}}for(let u=0;u<i.length;u++){let l=i[u];if(!c[u]&&!(l.magic&rr))return{index:n,error:T(`pathspec '${l.original}' did not match any files`)}}return{index:n}}async function Ui(e,t,n,r,o){let s=r===""?"":`${r}/`,a=e.workTree,i=[],c=new Set;for(let f of t.entries){if(!(s===""||f.path.startsWith(s))||c.has(f.path))continue;c.add(f.path);let d=v(a,f.path);if(await e.fs.exists(d)){let u=f.stage>0,l=await Gt(e,t,f.path);t=l.index,o?.actions&&(u||l.hash!==f.hash)&&o.actions.push(`add '${f.path}'
66
+ `),n=(await Gt(e,n,m)).index}}for(let u=0;u<i.length;u++){let l=i[u];if(!c[u]&&!(l.magic&ir))return{index:n,error:T(`pathspec '${l.original}' did not match any files`)}}return{index:n}}async function Bi(e,t,n,r,o){let s=r===""?"":`${r}/`,a=e.workTree,i=[],c=new Set;for(let f of t.entries){if(!(s===""||f.path.startsWith(s))||c.has(f.path))continue;c.add(f.path);let d=H(a,f.path);if(await e.fs.exists(d)){let u=f.stage>0,l=await Gt(e,t,f.path);t=l.index,o?.actions&&(u||l.hash!==f.hash)&&o.actions.push(`add '${f.path}'
67
67
  `)}else o?.actions&&o.actions.push(`remove '${f.path}'
68
68
  `),i.push(f.path)}for(let f of i)t=Ne(t,f);if(!o?.updateOnly){let f=new Set(t.entries.map(u=>u.path)),d=await _e(e,n,r===""?"":r,{skipIgnore:o?.skipIgnore});for(let u of d){if(f.has(u))continue;o?.actions&&o.actions.push(`add '${u}'
69
- `),t=(await Gt(e,t,u)).index}}return t}async function xd(e,t,n,r){let o=await Hn(e);try{let a=await e.fs.readFile(v(t,".gitignore"));o=hn(o,a,"",v(t,".gitignore"))}catch{}let s=n.split("/");for(let a=0;a<s.length-1;a++){let i=s.slice(0,a+1).join("/"),c=v(t,i);if(Tt(o,i,!0)==="ignored")return i;try{let f=await e.fs.readFile(v(c,".gitignore"));o=hn(o,f,i,v(c,".gitignore"))}catch{}}if(!r){let a=await e.fs.stat(v(t,n)).then(i=>i.isDirectory).catch(()=>!1);if(Tt(o,n,a)==="ignored")return n}return null}function nn(e){if(e.length===0)return[];let t=e.split(`
69
+ `),t=(await Gt(e,t,u)).index}}return t}async function Cd(e,t,n,r){let o=await vn(e);try{let a=await e.fs.readFile(H(t,".gitignore"));o=gn(o,a,"",H(t,".gitignore"))}catch{}let s=n.split("/");for(let a=0;a<s.length-1;a++){let i=s.slice(0,a+1).join("/"),c=H(t,i);if(Tt(o,i,!0)==="ignored")return i;try{let f=await e.fs.readFile(H(c,".gitignore"));o=gn(o,f,i,H(c,".gitignore"))}catch{}}if(!r){let a=await e.fs.stat(H(t,n)).then(i=>i.isDirectory).catch(()=>!1);if(Tt(o,n,a)==="ignored")return n}return null}function pt(e){if(e.length===0)return[];let t=e.split(`
70
70
  `);return t[t.length-1]===""&&t.pop(),t}function rn(e){if(e.length===0)return[];let t=[],n=0;for(let r=0;r<e.length;r++)e[r]===`
71
- `&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}var kd=4,Wi=1024,Ur=100,qr=0,Br=1,Sn=2;function eo(e){let t=1;for(;t*t<e;)t++;return t}function Cd(e,t){let n=new Map,r=[],o=new Array(e.length),s=new Array(t.length);for(let a=0;a<e.length;a++){let i=e[a],c=n.get(i);c===void 0&&(c=r.length,n.set(i,c),r.push({len1:0,len2:0})),r[c].len1++,o[a]=c}for(let a=0;a<t.length;a++){let i=t[a],c=n.get(i);c===void 0&&(c=r.length,n.set(i,c),r.push({len1:0,len2:0})),r[c].len2++,s[a]=c}return{classes1:o,classes2:s,classInfo:r}}function Pd(e,t,n,r){let o=0,s=Math.min(t,r);for(;o<s&&e[o]===n[o];)o++;let a=o,i=0,c=s-a;for(;i<c&&e[t-1-i]===n[r-1-i];)i++;return{dstart:a,dend1:t-i-1,dend2:r-i-1}}function qi(e,t,n,r){t-n>Ur&&(n=t-Ur),r-t>Ur&&(r=t+Ur);let o=0,s=1;for(let c=1;t-c>=n;c++){let f=e[t-c];if(f===qr)o++;else if(f===Sn)s++;else break}if(o===0)return!1;let a=0,i=1;for(let c=1;t+c<=r;c++){let f=e[t+c];if(f===qr)a++;else if(f===Sn)i++;else break}return a===0?!1:(a+=o,i+=s,i*kd<i+a)}function Od(e,t,n,r,o,s,a,i,c,f){let d=new Uint8Array(t),u=new Uint8Array(r),l=Math.min(eo(t),Wi);for(let g=s;g<=a;g++){let w=o[e[g]].len2;w===0?d[g]=qr:w>=l?d[g]=Sn:d[g]=Br}let m=Math.min(eo(r),Wi);for(let g=s;g<=i;g++){let w=o[n[g]].len1;w===0?u[g]=qr:w>=m?u[g]=Sn:u[g]=Br}let h=[];for(let g=s;g<=a;g++)d[g]===Br||d[g]===Sn&&!qi(d,g,s,a)?h.push(g):c[g]=1;let p=[];for(let g=s;g<=i;g++)u[g]===Br||u[g]===Sn&&!qi(u,g,s,i)?p.push(g):f[g]=1;return{refIndex1:h,nreff1:h.length,refIndex2:p,nreff2:p.length}}var tn=20,Ki=4,Rd=256,Id=256,Wr=2147483647;function Qe(e,t){return e[t]??0}function $d(e,t,n,r,o,s,a,i,c,f){let d=t-s,u=n-o,l=t-o,m=n-s,h=l-m&1,p=l,g=l,w=m,x=m;a[l]=t,i[m]=n;for(let b=1;;b++){let y=!1;p>d?a[--p-1]=-1:++p,g<u?a[++g+1]=-1:--g;for(let k=g;k>=p;k-=2){let C;Qe(a,k-1)>=Qe(a,k+1)?C=Qe(a,k-1)+1:C=Qe(a,k+1);let P=C,O=C-k;for(;C<n&&O<s&&e[C]===r[O];)C++,O++;if(C-P>tn&&(y=!0),a[k]=C,h&&w<=k&&k<=x&&Qe(i,k)<=C)return{i1:C,i2:O,minLo:!0,minHi:!0}}w>d?i[--w-1]=Wr:++w,x<u?i[++x+1]=Wr:--x;for(let k=x;k>=w;k-=2){let C;Qe(i,k-1)<Qe(i,k+1)?C=Qe(i,k-1):C=Qe(i,k+1)-1;let P=C,O=C-k;for(;C>t&&O>o&&e[C-1]===r[O-1];)C--,O--;if(P-C>tn&&(y=!0),i[k]=C,!h&&p<=k&&k<=g&&C<=Qe(a,k))return{i1:C,i2:O,minLo:!0,minHi:!0}}if(!c){if(y&&b>Rd){let k=0,C=null;for(let P=g;P>=p;P-=2){let O=P>l?P-l:l-P,E=Qe(a,P),I=E-P,H=E-t+(I-o)-O;if(H>Ki*b&&H>k&&t+tn<=E&&E<n&&o+tn<=I&&I<s){let _=!0;for(let G=1;G<=tn;G++)if(e[E-G]!==r[I-G]){_=!1;break}_&&(k=H,C={i1:E,i2:I,minLo:!0,minHi:!1})}}if(C)return C;k=0,C=null;for(let P=x;P>=w;P-=2){let O=P>m?P-m:m-P,E=Qe(i,P),I=E-P,H=n-E+(s-I)-O;if(H>Ki*b&&H>k&&t<E&&E<=n-tn&&o<I&&I<=s-tn){let _=!0;for(let G=0;G<tn;G++)if(e[E+G]!==r[I+G]){_=!1;break}_&&(k=H,C={i1:E,i2:I,minLo:!1,minHi:!0})}}if(C)return C}if(b>=f){let k=-1,C=-1;for(let E=g;E>=p;E-=2){let I=Math.min(Qe(a,E),n),H=I-E;s<H&&(I=s+E,H=s),k<I+H&&(k=I+H,C=I)}let P=Wr,O=Wr;for(let E=x;E>=w;E-=2){let I=Math.max(t,Qe(i,E)),H=I-E;H<o&&(I=o+E,H=o),I+H<P&&(P=I+H,O=I)}return n+s-P<k-(t+o)?{i1:C,i2:k-C,minLo:!0,minHi:!1}:{i1:O,i2:P-O,minLo:!1,minHi:!0}}}}}function to(e,t,n,r,o,s,a,i,c,f,d,u,l,m){for(;t<n&&o<s&&e[t]===r[o];)t++,o++;for(;t<n&&o<s&&e[n-1]===r[s-1];)n--,s--;if(t===n)for(let h=o;h<s;h++)i[f[h]]=1;else if(o===s)for(let h=t;h<n;h++)a[c[h]]=1;else{let h=$d(e,t,n,r,o,s,d,u,l,m);to(e,t,h.i1,r,o,h.i2,a,i,c,f,d,u,h.minLo,m),to(e,h.i1,n,r,h.i2,s,a,i,c,f,d,u,h.minHi,m)}}function Td(e,t,n,r){let o=[],s=0,a=0,i=1,c=1;for(;s<e.length||a<t.length;){if(s<e.length&&a<t.length&&!n[s]&&!r[a]){o.push({type:"keep",line:e[s]??"",oldLineNo:i++,newLineNo:c++}),s++,a++;continue}for(;s<e.length&&n[s];)o.push({type:"delete",line:e[s]??"",oldLineNo:i++,newLineNo:0}),s++;for(;a<t.length&&r[a];)o.push({type:"insert",line:t[a]??"",oldLineNo:0,newLineNo:c++}),a++}return o}var zi=200,Vi=20,Yi=100,Hd=1,Ad=21,vd=-30,Sd=6,Dd=-4,Md=10,jd=24,Ld=17,Gd=23,Nd=17,_d=60;function Qs(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===32)t+=1;else if(r===9)t+=8-t%8;else if(!(r===10||r===13||r===11||r===12))return t;if(t>=zi)return zi}return-1}function Xi(e,t,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=t?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=Qs(e[n]));for(let o=n-1;o>=0&&(r.preIndent=Qs(e[o]),r.preIndent===-1);o--)if(r.preBlank+=1,r.preBlank===Vi){r.preIndent=0;break}for(let o=n+1;o<t&&(r.postIndent=Qs(e[o]),r.postIndent===-1);o++)if(r.postBlank+=1,r.postBlank===Vi){r.postIndent=0;break}return r}function Zi(e,t){e.preIndent===-1&&e.preBlank===0&&(t.penalty+=Hd),e.endOfFile&&(t.penalty+=Ad);let n=e.indent===-1?1+e.postBlank:0,r=e.preBlank+n;t.penalty+=vd*r,t.penalty+=Sd*n;let o=e.indent!==-1?e.indent:e.postIndent,s=r!==0;t.effectiveIndent+=o,o===-1||e.preIndent===-1||(o>e.preIndent?t.penalty+=s?Md:Dd:o===e.preIndent||(e.postIndent!==-1&&e.postIndent>o?t.penalty+=s?Ld:jd:t.penalty+=s?Nd:Gd))}function Fd(e,t){let n=(e.effectiveIndent>t.effectiveIndent?1:0)-(e.effectiveIndent<t.effectiveIndent?1:0);return _d*n+(e.penalty-t.penalty)}function Ji(e,t,n,r,o,s){let a=0,i=0;for(;e[i];)i++;let c=0,f=0;for(;o[f];)f++;let d=(u,l)=>t[u]===t[l];for(;;){if(i!==a){let u,l,m;do{for(u=i-a,l=-1;a>0&&d(a-1,i-1);){for(e[--a]=1,e[--i]=0;e[a-1];)a--;if(c===0)break;for(f=c-1,c=f;o[c-1];c--);}for(m=i,f>c&&(l=i);!(i>=r||!d(a,i));){for(e[a++]=0,e[i++]=1;e[i];)i++;if(f>=s)break;for(c=f+1,f=c;o[f];f++);f>c&&(l=i)}}while(u!==i-a);if(i!==m)if(l!==-1)for(;f===c;){for(e[--i]=0,e[--a]=1;e[a-1];)a--;for(f=c-1,c=f;o[c-1];c--);}else{let h=-1,p={effectiveIndent:0,penalty:0},g=m;for(i-u-1>g&&(g=i-u-1),i-Yi>g&&(g=i-Yi);g<=i;g++){let w={effectiveIndent:0,penalty:0},x=Xi(n,r,g);Zi(x,w);let b=Xi(n,r,g-u);Zi(b,w),(h===-1||Fd(w,p)<=0)&&(p={effectiveIndent:w.effectiveIndent,penalty:w.penalty},h=g)}for(;i>h;){for(e[--i]=0,e[--a]=1;e[a-1];)a--;for(f=c-1,c=f;o[c-1];c--);}}}if(i>=r)break;for(a=i+1,i=a;e[i];i++);if(f>=s)break;for(c=f+1,f=c;o[f];f++);}}function no(e,t){let n=e.length,r=t.length,o=new Uint8Array(n),s=new Uint8Array(r);if(n>0&&r>0){let{classes1:a,classes2:i,classInfo:c}=Cd(e,t),{dstart:f,dend1:d,dend2:u}=Pd(a,n,i,r);if(f>d)for(let l=f;l<r-(n-1-d);l++)s[l]=1;else if(f>u)for(let l=f;l<n-(r-1-u);l++)o[l]=1;else{let{refIndex1:l,nreff1:m,refIndex2:h,nreff2:p}=Od(a,n,i,r,c,f,d,u,o,s);if(m>0&&p>0){let g=new Array(m);for(let C=0;C<m;C++)g[C]=a[l[C]];let w=new Array(p);for(let C=0;C<p;C++)w[C]=i[h[C]];let x={},b={},y=m+p+3,k=Math.max(Id,eo(y));to(g,0,m,w,0,p,o,s,l,h,x,b,!1,k)}else if(m===0)for(let g=0;g<p;g++)s[h[g]]=1;else for(let g=0;g<m;g++)o[l[g]]=1;Ji(o,a,e,n,s,r),Ji(s,i,t,r,o,n)}}else n===0?s.fill(1):o.fill(1);return{changedOld:o,changedNew:s}}function xt(e,t){let n=e.length,r=t.length;if(n===0&&r===0)return[];if(n===0)return t.map((a,i)=>({type:"insert",line:a,oldLineNo:0,newLineNo:i+1}));if(r===0)return e.map((a,i)=>({type:"delete",line:a,oldLineNo:i+1,newLineNo:0}));let{changedOld:o,changedNew:s}=no(e,t);return Td(e,t,o,s)}var Ud=3;function Bd(e,t=Ud){if(e.length===0)return[];let n=[];for(let i=0;i<e.length;i++){let c=e[i];c&&c.type!=="keep"&&n.push(i)}if(n.length===0)return[];let r=n[0]??0,o=[],s=Math.max(0,r-t),a=Math.min(e.length-1,r+t);for(let i=1;i<n.length;i++){let c=n[i]??0,f=Math.max(0,c-t),d=Math.min(e.length-1,c+t);f<=a+1||(o.push({start:s,end:a}),s=f),a=d}return o.push({start:s,end:a}),o.map(i=>Wd(e,i.start,i.end))}function Wd(e,t,n){let r=0,o=0,s=0,a=0,i=[],c=!1,f=!1;for(let d=t;d<=n;d++){let u=e[d];if(u)switch(u.type){case"keep":c||(r=u.oldLineNo,c=!0),f||(s=u.newLineNo,f=!0),o++,a++,i.push({type:"context",content:u.line});break;case"delete":c||(r=u.oldLineNo,c=!0),o++,i.push({type:"delete",content:u.line});break;case"insert":f||(s=u.newLineNo,f=!0),a++,i.push({type:"insert",content:u.line});break}}if(c||(r=s>0?s:1),f||(s=r>0?r:1),o===0)for(let d=t;d<=n;d++){let u=e[d];if(u&&u.type==="insert"){r=u.newLineNo>1?u.newLineNo-1:0;break}}if(a===0)for(let d=t;d<=n;d++){let u=e[d];if(u&&u.type==="delete"){s=u.oldLineNo>1?u.oldLineNo-1:0;break}}return{oldStart:r,oldCount:o,newStart:s,newCount:a,lines:i}}function Kr(e){return e?e.length<40?e:K(e):"0000000"}function Qi(e,t,n,r,o,s){let{path:a,oldMode:i,newMode:c}=t;e.push(`diff --git a/${a} b/${n}`),s?(e.push(`similarity index ${t.similarity??100}%`),e.push(`rename from ${a}`),e.push(`rename to ${n}`)):r?e.push(`new file mode ${c||"100644"}`):o?e.push(`deleted file mode ${i||"100644"}`):i&&c&&i!==c&&(e.push(`old mode ${i}`),e.push(`new mode ${c}`))}function qd(e,t,n){let{path:r,oldContent:o,newContent:s,oldMode:a,oldHash:i,newHash:c}=e,f=e.renameTo!==void 0,d=e.renameTo??r,u=e.isNew??o==="",l=e.isDeleted??s==="";if(o===s&&!f)return"";let m=[];if(Qi(m,e,d,u,l,f),o!==s){if(i||c){let h=Kr(i),p=Kr(c);u||l||f?m.push(`index ${h}..${p}`):m.push(`index ${h}..${p} ${a||"100644"}`)}t&&n?m.push(`Binary files a/${r} and b/${d} differ`):u?m.push(`Binary files /dev/null and b/${d} differ`):l?m.push(`Binary files a/${r} and /dev/null differ`):m.push(`Binary files a/${r} and b/${d} differ`)}return`${m.join(`
71
+ `&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}var Pd=4,qi=1024,qr=100,Vr=0,Kr=1,Mn=2;function ro(e){let t=1;for(;t*t<e;)t++;return t}function Od(e,t){let n=new Map,r=[],o=new Array(e.length),s=new Array(t.length);for(let a=0;a<e.length;a++){let i=e[a],c=n.get(i);c===void 0&&(c=r.length,n.set(i,c),r.push({len1:0,len2:0})),r[c].len1++,o[a]=c}for(let a=0;a<t.length;a++){let i=t[a],c=n.get(i);c===void 0&&(c=r.length,n.set(i,c),r.push({len1:0,len2:0})),r[c].len2++,s[a]=c}return{classes1:o,classes2:s,classInfo:r}}function Id(e,t,n,r){let o=0,s=Math.min(t,r);for(;o<s&&e[o]===n[o];)o++;let a=o,i=0,c=s-a;for(;i<c&&e[t-1-i]===n[r-1-i];)i++;return{dstart:a,dend1:t-i-1,dend2:r-i-1}}function Ki(e,t,n,r){t-n>qr&&(n=t-qr),r-t>qr&&(r=t+qr);let o=0,s=1;for(let c=1;t-c>=n;c++){let f=e[t-c];if(f===Vr)o++;else if(f===Mn)s++;else break}if(o===0)return!1;let a=0,i=1;for(let c=1;t+c<=r;c++){let f=e[t+c];if(f===Vr)a++;else if(f===Mn)i++;else break}return a===0?!1:(a+=o,i+=s,i*Pd<i+a)}function Rd(e,t,n,r,o,s,a,i,c,f){let d=new Uint8Array(t),u=new Uint8Array(r),l=Math.min(ro(t),qi);for(let g=s;g<=a;g++){let w=o[e[g]].len2;w===0?d[g]=Vr:w>=l?d[g]=Mn:d[g]=Kr}let m=Math.min(ro(r),qi);for(let g=s;g<=i;g++){let w=o[n[g]].len1;w===0?u[g]=Vr:w>=m?u[g]=Mn:u[g]=Kr}let h=[];for(let g=s;g<=a;g++)d[g]===Kr||d[g]===Mn&&!Ki(d,g,s,a)?h.push(g):c[g]=1;let p=[];for(let g=s;g<=i;g++)u[g]===Kr||u[g]===Mn&&!Ki(u,g,s,i)?p.push(g):f[g]=1;return{refIndex1:h,nreff1:h.length,refIndex2:p,nreff2:p.length}}var nn=20,zi=4,$d=256,Td=256,zr=2147483647;function Qe(e,t){return e[t]??0}function Hd(e,t,n,r,o,s,a,i,c,f){let d=t-s,u=n-o,l=t-o,m=n-s,h=l-m&1,p=l,g=l,w=m,x=m;a[l]=t,i[m]=n;for(let b=1;;b++){let E=!1;p>d?a[--p-1]=-1:++p,g<u?a[++g+1]=-1:--g;for(let k=g;k>=p;k-=2){let P;Qe(a,k-1)>=Qe(a,k+1)?P=Qe(a,k-1)+1:P=Qe(a,k+1);let C=P,O=P-k;for(;P<n&&O<s&&e[P]===r[O];)P++,O++;if(P-C>nn&&(E=!0),a[k]=P,h&&w<=k&&k<=x&&Qe(i,k)<=P)return{i1:P,i2:O,minLo:!0,minHi:!0}}w>d?i[--w-1]=zr:++w,x<u?i[++x+1]=zr:--x;for(let k=x;k>=w;k-=2){let P;Qe(i,k-1)<Qe(i,k+1)?P=Qe(i,k-1):P=Qe(i,k+1)-1;let C=P,O=P-k;for(;P>t&&O>o&&e[P-1]===r[O-1];)P--,O--;if(C-P>nn&&(E=!0),i[k]=P,!h&&p<=k&&k<=g&&P<=Qe(a,k))return{i1:P,i2:O,minLo:!0,minHi:!0}}if(!c){if(E&&b>$d){let k=0,P=null;for(let C=g;C>=p;C-=2){let O=C>l?C-l:l-C,y=Qe(a,C),I=y-C,A=y-t+(I-o)-O;if(A>zi*b&&A>k&&t+nn<=y&&y<n&&o+nn<=I&&I<s){let L=!0;for(let D=1;D<=nn;D++)if(e[y-D]!==r[I-D]){L=!1;break}L&&(k=A,P={i1:y,i2:I,minLo:!0,minHi:!1})}}if(P)return P;k=0,P=null;for(let C=x;C>=w;C-=2){let O=C>m?C-m:m-C,y=Qe(i,C),I=y-C,A=n-y+(s-I)-O;if(A>zi*b&&A>k&&t<y&&y<=n-nn&&o<I&&I<=s-nn){let L=!0;for(let D=0;D<nn;D++)if(e[y+D]!==r[I+D]){L=!1;break}L&&(k=A,P={i1:y,i2:I,minLo:!1,minHi:!0})}}if(P)return P}if(b>=f){let k=-1,P=-1;for(let y=g;y>=p;y-=2){let I=Math.min(Qe(a,y),n),A=I-y;s<A&&(I=s+y,A=s),k<I+A&&(k=I+A,P=I)}let C=zr,O=zr;for(let y=x;y>=w;y-=2){let I=Math.max(t,Qe(i,y)),A=I-y;A<o&&(I=o+y,A=o),I+A<C&&(C=I+A,O=I)}return n+s-C<k-(t+o)?{i1:P,i2:k-P,minLo:!0,minHi:!1}:{i1:O,i2:C-O,minLo:!1,minHi:!0}}}}}function so(e,t,n,r,o,s,a,i,c,f,d,u,l,m){for(;t<n&&o<s&&e[t]===r[o];)t++,o++;for(;t<n&&o<s&&e[n-1]===r[s-1];)n--,s--;if(t===n)for(let h=o;h<s;h++)i[f[h]]=1;else if(o===s)for(let h=t;h<n;h++)a[c[h]]=1;else{let h=Hd(e,t,n,r,o,s,d,u,l,m);so(e,t,h.i1,r,o,h.i2,a,i,c,f,d,u,h.minLo,m),so(e,h.i1,n,r,h.i2,s,a,i,c,f,d,u,h.minHi,m)}}function Ad(e,t,n,r){let o=[],s=0,a=0,i=1,c=1;for(;s<e.length||a<t.length;){if(s<e.length&&a<t.length&&!n[s]&&!r[a]){o.push({type:"keep",line:e[s]??"",oldLineNo:i++,newLineNo:c++}),s++,a++;continue}for(;s<e.length&&n[s];)o.push({type:"delete",line:e[s]??"",oldLineNo:i++,newLineNo:0}),s++;for(;a<t.length&&r[a];)o.push({type:"insert",line:t[a]??"",oldLineNo:0,newLineNo:c++}),a++}return o}var Vi=200,Yi=20,Xi=100,vd=1,Sd=21,Dd=-30,Md=6,jd=-4,Ld=10,Gd=24,Nd=17,_d=23,Fd=17,Ud=60;function no(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===32)t+=1;else if(r===9)t+=8-t%8;else if(!(r===10||r===13||r===11||r===12))return t;if(t>=Vi)return Vi}return-1}function Zi(e,t,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=t?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=no(e[n]));for(let o=n-1;o>=0&&(r.preIndent=no(e[o]),r.preIndent===-1);o--)if(r.preBlank+=1,r.preBlank===Yi){r.preIndent=0;break}for(let o=n+1;o<t&&(r.postIndent=no(e[o]),r.postIndent===-1);o++)if(r.postBlank+=1,r.postBlank===Yi){r.postIndent=0;break}return r}function Ji(e,t){e.preIndent===-1&&e.preBlank===0&&(t.penalty+=vd),e.endOfFile&&(t.penalty+=Sd);let n=e.indent===-1?1+e.postBlank:0,r=e.preBlank+n;t.penalty+=Dd*r,t.penalty+=Md*n;let o=e.indent!==-1?e.indent:e.postIndent,s=r!==0;t.effectiveIndent+=o,o===-1||e.preIndent===-1||(o>e.preIndent?t.penalty+=s?Ld:jd:o===e.preIndent||(e.postIndent!==-1&&e.postIndent>o?t.penalty+=s?Nd:Gd:t.penalty+=s?Fd:_d))}function Bd(e,t){let n=(e.effectiveIndent>t.effectiveIndent?1:0)-(e.effectiveIndent<t.effectiveIndent?1:0);return Ud*n+(e.penalty-t.penalty)}function Qi(e,t,n,r,o,s){let a=0,i=0;for(;e[i];)i++;let c=0,f=0;for(;o[f];)f++;let d=(u,l)=>t[u]===t[l];for(;;){if(i!==a){let u,l,m;do{for(u=i-a,l=-1;a>0&&d(a-1,i-1);){for(e[--a]=1,e[--i]=0;e[a-1];)a--;if(c===0)break;for(f=c-1,c=f;o[c-1];c--);}for(m=i,f>c&&(l=i);!(i>=r||!d(a,i));){for(e[a++]=0,e[i++]=1;e[i];)i++;if(f>=s)break;for(c=f+1,f=c;o[f];f++);f>c&&(l=i)}}while(u!==i-a);if(i!==m)if(l!==-1)for(;f===c;){for(e[--i]=0,e[--a]=1;e[a-1];)a--;for(f=c-1,c=f;o[c-1];c--);}else{let h=-1,p={effectiveIndent:0,penalty:0},g=m;for(i-u-1>g&&(g=i-u-1),i-Xi>g&&(g=i-Xi);g<=i;g++){let w={effectiveIndent:0,penalty:0},x=Zi(n,r,g);Ji(x,w);let b=Zi(n,r,g-u);Ji(b,w),(h===-1||Bd(w,p)<=0)&&(p={effectiveIndent:w.effectiveIndent,penalty:w.penalty},h=g)}for(;i>h;){for(e[--i]=0,e[--a]=1;e[a-1];)a--;for(f=c-1,c=f;o[c-1];c--);}}}if(i>=r)break;for(a=i+1,i=a;e[i];i++);if(f>=s)break;for(c=f+1,f=c;o[f];f++);}}function oo(e,t){let n=e.length,r=t.length,o=new Uint8Array(n),s=new Uint8Array(r);if(n>0&&r>0){let{classes1:a,classes2:i,classInfo:c}=Od(e,t),{dstart:f,dend1:d,dend2:u}=Id(a,n,i,r);if(f>d)for(let l=f;l<r-(n-1-d);l++)s[l]=1;else if(f>u)for(let l=f;l<n-(r-1-u);l++)o[l]=1;else{let{refIndex1:l,nreff1:m,refIndex2:h,nreff2:p}=Rd(a,n,i,r,c,f,d,u,o,s);if(m>0&&p>0){let g=new Array(m);for(let P=0;P<m;P++)g[P]=a[l[P]];let w=new Array(p);for(let P=0;P<p;P++)w[P]=i[h[P]];let x={},b={},E=m+p+3,k=Math.max(Td,ro(E));so(g,0,m,w,0,p,o,s,l,h,x,b,!1,k)}else if(m===0)for(let g=0;g<p;g++)s[h[g]]=1;else for(let g=0;g<m;g++)o[l[g]]=1;Qi(o,a,e,n,s,r),Qi(s,i,t,r,o,n)}}else n===0?s.fill(1):o.fill(1);return{changedOld:o,changedNew:s}}function it(e,t){let n=e.length,r=t.length;if(n===0&&r===0)return[];if(n===0)return t.map((a,i)=>({type:"insert",line:a,oldLineNo:0,newLineNo:i+1}));if(r===0)return e.map((a,i)=>({type:"delete",line:a,oldLineNo:i+1,newLineNo:0}));let{changedOld:o,changedNew:s}=oo(e,t);return Ad(e,t,o,s)}var Wd=3;function qd(e,t=Wd){if(e.length===0)return[];let n=[];for(let i=0;i<e.length;i++){let c=e[i];c&&c.type!=="keep"&&n.push(i)}if(n.length===0)return[];let r=n[0]??0,o=[],s=Math.max(0,r-t),a=Math.min(e.length-1,r+t);for(let i=1;i<n.length;i++){let c=n[i]??0,f=Math.max(0,c-t),d=Math.min(e.length-1,c+t);f<=a+1||(o.push({start:s,end:a}),s=f),a=d}return o.push({start:s,end:a}),o.map(i=>Kd(e,i.start,i.end))}function Kd(e,t,n){let r=0,o=0,s=0,a=0,i=[],c=!1,f=!1;for(let d=t;d<=n;d++){let u=e[d];if(u)switch(u.type){case"keep":c||(r=u.oldLineNo,c=!0),f||(s=u.newLineNo,f=!0),o++,a++,i.push({type:"context",content:u.line});break;case"delete":c||(r=u.oldLineNo,c=!0),o++,i.push({type:"delete",content:u.line});break;case"insert":f||(s=u.newLineNo,f=!0),a++,i.push({type:"insert",content:u.line});break}}if(c||(r=s>0?s:1),f||(s=r>0?r:1),o===0)for(let d=t;d<=n;d++){let u=e[d];if(u&&u.type==="insert"){r=u.newLineNo>1?u.newLineNo-1:0;break}}if(a===0)for(let d=t;d<=n;d++){let u=e[d];if(u&&u.type==="delete"){s=u.oldLineNo>1?u.oldLineNo-1:0;break}}return{oldStart:r,oldCount:o,newStart:s,newCount:a,lines:i}}function Yr(e){return e?e.length<40?e:K(e):"0000000"}function ea(e,t,n,r,o,s){let{path:a,oldMode:i,newMode:c}=t;e.push(`diff --git a/${a} b/${n}`),s?(e.push(`similarity index ${t.similarity??100}%`),e.push(`rename from ${a}`),e.push(`rename to ${n}`)):r?e.push(`new file mode ${c||"100644"}`):o?e.push(`deleted file mode ${i||"100644"}`):i&&c&&i!==c&&(e.push(`old mode ${i}`),e.push(`new mode ${c}`))}function zd(e,t,n){let{path:r,oldContent:o,newContent:s,oldMode:a,oldHash:i,newHash:c}=e,f=e.renameTo!==void 0,d=e.renameTo??r,u=e.isNew??o==="",l=e.isDeleted??s==="";if(o===s&&!f)return"";let m=[];if(ea(m,e,d,u,l,f),o!==s){if(i||c){let h=Yr(i),p=Yr(c);u||l||f?m.push(`index ${h}..${p}`):m.push(`index ${h}..${p} ${a||"100644"}`)}t&&n?m.push(`Binary files a/${r} and b/${d} differ`):u?m.push(`Binary files /dev/null and b/${d} differ`):l?m.push(`Binary files a/${r} and /dev/null differ`):m.push(`Binary files a/${r} and b/${d} differ`)}return`${m.join(`
72
72
  `)}
73
- `}function At(e){let{path:t,oldContent:n,newContent:r,oldMode:o,newMode:s,oldHash:a,newHash:i}=e,c=e.renameTo!==void 0,f=e.renameTo??t,d=Pe(n),u=Pe(r);if(d||u)return qd(e,d,u);let l=nn(n),m=nn(r),h=n.length>0&&n.endsWith(`
73
+ `}function At(e){let{path:t,oldContent:n,newContent:r,oldMode:o,newMode:s,oldHash:a,newHash:i}=e,c=e.renameTo!==void 0,f=e.renameTo??t,d=Pe(n),u=Pe(r);if(d||u)return zd(e,d,u);let l=pt(n),m=pt(r),h=n.length>0&&n.endsWith(`
74
74
  `),p=r.length>0&&r.endsWith(`
75
- `),g="\0NOEOL",w=l;!h&&l.length>0&&(w=l.slice(),w[w.length-1]+=g);let x=m;!p&&m.length>0&&(x=m.slice(),x[x.length-1]+=g);let b=xt(w,x);if(!h||!p)for(let H of b)H.line.includes(g)&&(H.line=H.line.replace(g,""));let y=Bd(b);if(y.length===0&&!c)return"";let k=e.isNew??n==="",C=e.isDeleted??r==="",P=[];if(Qi(P,e,f,k,C,c),y.length===0)return`${P.join(`
75
+ `),g="\0NOEOL",w=l;!h&&l.length>0&&(w=l.slice(),w[w.length-1]+=g);let x=m;!p&&m.length>0&&(x=m.slice(),x[x.length-1]+=g);let b=it(w,x);if(!h||!p)for(let A of b)A.line.includes(g)&&(A.line=A.line.replace(g,""));let E=qd(b);if(E.length===0&&!c)return"";let k=e.isNew??n==="",P=e.isDeleted??r==="",C=[];if(ea(C,e,f,k,P,c),E.length===0)return`${C.join(`
76
76
  `)}
77
- `;if(a||i){let H=Kr(a),_=Kr(i);k||C?P.push(`index ${H}..${_}`):c?P.push(`index ${H}..${_} ${o||"100644"}`):o&&s&&o!==s?P.push(`index ${H}..${_}`):P.push(`index ${H}..${_} ${o||"100644"}`)}let O=H=>H.includes(" ")?" ":"";k?(P.push("--- /dev/null"),P.push(`+++ b/${f}${O(f)}`)):C?(P.push(`--- a/${t}${O(t)}`),P.push("+++ /dev/null")):(P.push(`--- a/${t}${O(t)}`),P.push(`+++ b/${f}${O(f)}`));let E=l.length,I=m.length;for(let H of y){let _=H.oldCount===1?`${H.oldStart}`:`${H.oldStart},${H.oldCount}`,G=H.newCount===1?`${H.newStart}`:`${H.newStart},${H.newCount}`,z="";for(let R=H.oldStart-2;R>=0;R--){let N=l[R];if(N&&/^[a-zA-Z$_]/.test(N)){z=` ${N.trimEnd().slice(0,79)}`;break}}P.push(`@@ -${_} +${G} @@${z}`);let D=H.oldStart,$=H.newStart;for(let R of H.lines)switch(R.type){case"context":P.push(` ${R.content}`),(!h&&D===E||!p&&$===I)&&P.push("\"),D++,$++;break;case"delete":P.push(`-${R.content}`),!h&&D===E&&P.push("\"),D++;break;case"insert":P.push(`+${R.content}`),!p&&$===I&&P.push("\"),$++;break}}return`${P.join(`
77
+ `;if(a||i){let A=Yr(a),L=Yr(i);k||P?C.push(`index ${A}..${L}`):c?C.push(`index ${A}..${L} ${o||"100644"}`):o&&s&&o!==s?C.push(`index ${A}..${L}`):C.push(`index ${A}..${L} ${o||"100644"}`)}let O=A=>A.includes(" ")?" ":"";k?(C.push("--- /dev/null"),C.push(`+++ b/${f}${O(f)}`)):P?(C.push(`--- a/${t}${O(t)}`),C.push("+++ /dev/null")):(C.push(`--- a/${t}${O(t)}`),C.push(`+++ b/${f}${O(f)}`));let y=l.length,I=m.length;for(let A of E){let L=A.oldCount===1?`${A.oldStart}`:`${A.oldStart},${A.oldCount}`,D=A.newCount===1?`${A.newStart}`:`${A.newStart},${A.newCount}`,z="";for(let R=A.oldStart-2;R>=0;R--){let _=l[R];if(_&&/^[a-zA-Z$_]/.test(_)){z=` ${_.trimEnd().slice(0,79)}`;break}}C.push(`@@ -${L} +${D} @@${z}`);let M=A.oldStart,$=A.newStart;for(let R of A.lines)switch(R.type){case"context":C.push(` ${R.content}`),(!h&&M===y||!p&&$===I)&&C.push("\"),M++,$++;break;case"delete":C.push(`-${R.content}`),!h&&M===y&&C.push("\"),M++;break;case"insert":C.push(`+${R.content}`),!p&&$===I&&C.push("\"),$++;break}}return`${C.join(`
78
78
  `)}
79
- `}function Dn(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function Kd(e,t){if(e.length===0)return;if(e.length===1)return e.shift();let n=Dn(t),r=0;for(let o=0;o<e.length;o++){let s=e[o];if(s&&Dn(s.path)===n){r=o;break}}return e.splice(r,1)[0]}var zd=50;async function Ye(e,t,n=zd){let r=new Map,o=[],s=[],a=[];for(let d of t)if(d.status==="deleted"&&d.oldHash){let u=r.get(d.oldHash)??[];u.push(d),r.set(d.oldHash,u),o.push(d)}else d.status==="added"&&d.newHash?s.push(d):a.push(d);let i=[],c=[];for(let d of s){let u=d.newHash;if(!u){c.push(d);continue}let l=r.get(u);if(l&&l.length>0){let m=Kd(l,d.path);m&&i.push({oldPath:m.path,newPath:d.path,oldHash:m.oldHash??u,newHash:u,similarity:100,oldMode:m.oldMode,newMode:d.newMode})}else c.push(d)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let d=await Vd(e,f,c,n);if(d.length>0){let u=new Set(d.map(m=>m.oldPath)),l=new Set(d.map(m=>m.newPath));f=f.filter(m=>!u.has(m.path)),c=c.filter(m=>!l.has(m.path)),i.push(...d)}}if(f.length>0&&c.length>0){let d=await Zd(e,f,c,n);if(d.length>0){let u=new Set(d.map(m=>m.oldPath)),l=new Set(d.map(m=>m.newPath));f=f.filter(m=>!u.has(m.path)),c=c.filter(m=>!l.has(m.path)),i.push(...d)}}return{remaining:[...a,...f,...c],renames:i}}async function Vd(e,t,n,r){let o=new Map;for(let i=0;i<t.length;i++){let c=t[i];if(!c)continue;let f=Dn(c.path);o.has(f)?o.set(f,-1):o.set(f,i)}let s=new Map;for(let i=0;i<n.length;i++){let c=n[i];if(!c)continue;let f=Dn(c.path);s.has(f)?s.set(f,-1):s.set(f,i)}let a=[];for(let[i,c]of o){if(c===-1)continue;let f=s.get(i);if(f===void 0||f===-1)continue;let d=t[c],u=n[f];if(!d?.oldHash||!u?.newHash||d.oldHash===u.newHash)continue;let l=await ot(e,d.oldHash),m=await ot(e,u.newHash),h=Xd(l,m);h<r||a.push({oldPath:d.path,newPath:u.path,oldHash:d.oldHash,newHash:u.newHash,similarity:h,oldMode:d.oldMode,newMode:u.newMode})}return a}var ea=107927;function zr(e){let t=new Map,n=0,r=0,o=0;for(let a=0;a<e.length;a++){let i=e[a],c=r;if(r=(r<<7^o>>>25)>>>0,o=(o<<7^c>>>25)>>>0,r=r+i>>>0,n++,n<64&&i!==10)continue;let f=(r+Math.imul(o,97))%ea;t.set(f,(t.get(f)??0)+n),n=0,r=0,o=0}if(n>0){let a=(r+Math.imul(o,97))%ea;t.set(a,(t.get(a)??0)+n)}let s=[];for(let[a,i]of t)s.push({hash:a,count:i});return s.sort((a,i)=>a.hash-i.hash),s}function Yd(e,t){let n=0,r=0,o=0,s=0;for(;o<e.length;){let a=e[o];if(!a)break;for(;s<t.length;){let f=t[s];if(!f||f.hash>=a.hash)break;r+=f.count,s++}let i=a.count,c=0;if(s<t.length){let f=t[s];f&&f.hash===a.hash&&(c=f.count,s++)}i<c?(r+=c-i,n+=i):n+=c,o++}for(;s<t.length;){let a=t[s];a&&(r+=a.count),s++}return{srcCopied:n,literalAdded:r}}function Xd(e,t){return e.length===0&&t.length===0?100:e.length===0||t.length===0?0:ta(e.length,zr(e),t.length,zr(t))}function ta(e,t,n,r){let o=Math.max(e,n),s=Math.min(e,n);if(s<o-s)return 0;let{srcCopied:a}=Yd(t,r);return Math.floor(a*100/o)}async function Zd(e,t,n,r){let o=[];for(let d of t)if(d.oldHash){let u=await ot(e,d.oldHash);o.push({size:u.length,chunks:zr(u)})}else o.push(null);let s=[];for(let d of n)if(d.newHash){let u=await ot(e,d.newHash);s.push({size:u.length,chunks:zr(u)})}else s.push(null);let a=[];for(let d=0;d<t.length;d++){let u=t[d],l=o[d];if(!(!u||!l))for(let m=0;m<n.length;m++){let h=n[m],p=s[m];if(!h||!p)continue;let g=ta(l.size,l.chunks,p.size,p.chunks);if(g>=r){let w=Dn(u.path)===Dn(h.path)?1:0;a.push({similarity:g,nameScore:w,delIdx:d,addIdx:m})}}}a.sort((d,u)=>u.similarity-d.similarity||u.nameScore-d.nameScore);let i=new Set,c=new Set,f=[];for(let{similarity:d,delIdx:u,addIdx:l}of a){if(i.has(u)||c.has(l))continue;i.add(u),c.add(l);let m=t[u],h=n[l];!m||!h||f.push({oldPath:m.path,newPath:h.path,oldHash:m.oldHash??"",newHash:h.newHash??"",similarity:d,oldMode:m.oldMode,newMode:h.newMode})}return f}function Mn(e,t){let n=e.length,r=t.length,o=0,s=0;for(;s<n&&s<r&&e[s]===t[s];)e[s]==="/"&&(o=s+1),s++;let a=o>0?1:0,i=0,c=n,f=r;for(;o-a<=c&&o-a<=f&&c>=0&&f>=0;){if(c===n&&f===r){c--,f--;continue}if(e[c]!==t[f])break;e[c]==="/"&&(i=n-c),c--,f--}let d=Math.max(0,n-o-i),u=Math.max(0,r-o-i),l=e.slice(0,o),m=e.slice(n-i),h=e.slice(o,o+d),p=t.slice(o,o+u);return o+i>0?`${l}{${h} => ${p}}${m}`:`${e} => ${t}`}async function Vr(e,t,n){return(await se(e,t)).get(n)?.hash??null}async function Jd(e,t,n,r){let o=await Ae(e,t,n);if(!o.find(c=>c.status==="added"&&c.path===r))return null;let{renames:a}=await Ye(e,o);return a.find(c=>c.newPath===r)?.oldPath??null}async function na(e,t,n,r){let o=await M(e,t),s=await Vr(e,o.tree,n);if(!s)throw new Error(`no such path '${n}' in ${t.slice(0,7)}`);let a=await fe(e,s),i=nn(a),c=r?.startLine??1,f=r?.endLine??i.length,d=i.slice(c-1,f),u=new Array(d.length),l=d.map((g,w)=>({finalIdx:w,currentLine:c+w})),m=t,h=n,p=i;for(;l.length>0;){let g=await M(e,m);if(g.parents.length===0){for(let H of l)u[H.finalIdx]=ro(m,h,H.currentLine,c+H.finalIdx,d[H.finalIdx],g,!0,void 0);break}let w=g.parents[0],x=await M(e,w),b=h,y=await Vr(e,x.tree,b);if(!y){let H=await Jd(e,x.tree,g.tree,h);H&&(b=H,y=await Vr(e,x.tree,b))}if(!y){for(let H of l)u[H.finalIdx]=ro(m,h,H.currentLine,c+H.finalIdx,d[H.finalIdx],g,!1,void 0);break}let k=await fe(e,y),C=nn(k);if(await Vr(e,g.tree,h)===y){m=w,h=b,p=C;continue}let O=xt(C,p),E=new Map;for(let H of O)H.type==="keep"&&E.set(H.newLineNo,H.oldLineNo);let I=[];for(let H of l){let _=E.get(H.currentLine);_!==void 0?I.push({finalIdx:H.finalIdx,currentLine:_}):u[H.finalIdx]=ro(m,h,H.currentLine,c+H.finalIdx,d[H.finalIdx],g,!1,{hash:w,path:b})}l=I,m=w,h=b,p=C}return u}function ro(e,t,n,r,o,s,a,i){return{hash:e,origPath:t,origLine:n,finalLine:r,content:o,author:s.author,committer:s.committer,summary:s.message.split(`
80
- `)[0],boundary:a,previous:i}}function Qd(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}function el(e,t){let n=Qd(t),r=new Date((e+n*60)*1e3),o=r.getUTCFullYear(),s=(r.getUTCMonth()+1).toString().padStart(2,"0"),a=r.getUTCDate().toString().padStart(2,"0"),i=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),f=r.getUTCSeconds().toString().padStart(2,"0");return`${o}-${s}-${a} ${i}:${c}:${f} ${t}`}function tl(e,t,n,r,o){if(e.length===0)return"";let s=Math.max(...e.map(d=>d.finalLine)),a=String(s).length,i=e.some(d=>d.origPath!==t),c=0;if(!o)for(let d of e){let u=r?`<${d.author.email}>`:d.author.name;u.length>c&&(c=u.length)}let f=[];for(let d of e){let u;n?u=d.boundary?`^${d.hash.slice(0,39)}`:d.hash:u=d.boundary?`^${d.hash.slice(0,7)}`:d.hash.slice(0,8);let l=i&&d.origPath!==t?` ${d.origPath}`:"";if(o)f.push(`${u}${l} ${String(d.finalLine).padStart(a)}) ${d.content}`);else{let m=r?`<${d.author.email}>`:d.author.name,h=el(d.author.timestamp,d.author.timezone);f.push(`${u}${l} (${m.padEnd(c)} ${h} ${String(d.finalLine).padStart(a)}) ${d.content}`)}}return`${f.join(`
79
+ `}function jn(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function Vd(e,t){if(e.length===0)return;if(e.length===1)return e.shift();let n=jn(t),r=0;for(let o=0;o<e.length;o++){let s=e[o];if(s&&jn(s.path)===n){r=o;break}}return e.splice(r,1)[0]}var Yd=50;async function Ye(e,t,n=Yd){let r=new Map,o=[],s=[],a=[];for(let d of t)if(d.status==="deleted"&&d.oldHash){let u=r.get(d.oldHash)??[];u.push(d),r.set(d.oldHash,u),o.push(d)}else d.status==="added"&&d.newHash?s.push(d):a.push(d);let i=[],c=[];for(let d of s){let u=d.newHash;if(!u){c.push(d);continue}let l=r.get(u);if(l&&l.length>0){let m=Vd(l,d.path);m&&i.push({oldPath:m.path,newPath:d.path,oldHash:m.oldHash??u,newHash:u,similarity:100,oldMode:m.oldMode,newMode:d.newMode})}else c.push(d)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let d=await Xd(e,f,c,n);if(d.length>0){let u=new Set(d.map(m=>m.oldPath)),l=new Set(d.map(m=>m.newPath));f=f.filter(m=>!u.has(m.path)),c=c.filter(m=>!l.has(m.path)),i.push(...d)}}if(f.length>0&&c.length>0){let d=await Qd(e,f,c,n);if(d.length>0){let u=new Set(d.map(m=>m.oldPath)),l=new Set(d.map(m=>m.newPath));f=f.filter(m=>!u.has(m.path)),c=c.filter(m=>!l.has(m.path)),i.push(...d)}}return{remaining:[...a,...f,...c],renames:i}}async function Xd(e,t,n,r){let o=new Map;for(let i=0;i<t.length;i++){let c=t[i];if(!c)continue;let f=jn(c.path);o.has(f)?o.set(f,-1):o.set(f,i)}let s=new Map;for(let i=0;i<n.length;i++){let c=n[i];if(!c)continue;let f=jn(c.path);s.has(f)?s.set(f,-1):s.set(f,i)}let a=[];for(let[i,c]of o){if(c===-1)continue;let f=s.get(i);if(f===void 0||f===-1)continue;let d=t[c],u=n[f];if(!d?.oldHash||!u?.newHash||d.oldHash===u.newHash)continue;let l=await ot(e,d.oldHash),m=await ot(e,u.newHash),h=Jd(l,m);h<r||a.push({oldPath:d.path,newPath:u.path,oldHash:d.oldHash,newHash:u.newHash,similarity:h,oldMode:d.oldMode,newMode:u.newMode})}return a}var ta=107927;function Xr(e){let t=new Map,n=0,r=0,o=0;for(let a=0;a<e.length;a++){let i=e[a],c=r;if(r=(r<<7^o>>>25)>>>0,o=(o<<7^c>>>25)>>>0,r=r+i>>>0,n++,n<64&&i!==10)continue;let f=(r+Math.imul(o,97))%ta;t.set(f,(t.get(f)??0)+n),n=0,r=0,o=0}if(n>0){let a=(r+Math.imul(o,97))%ta;t.set(a,(t.get(a)??0)+n)}let s=[];for(let[a,i]of t)s.push({hash:a,count:i});return s.sort((a,i)=>a.hash-i.hash),s}function Zd(e,t){let n=0,r=0,o=0,s=0;for(;o<e.length;){let a=e[o];if(!a)break;for(;s<t.length;){let f=t[s];if(!f||f.hash>=a.hash)break;r+=f.count,s++}let i=a.count,c=0;if(s<t.length){let f=t[s];f&&f.hash===a.hash&&(c=f.count,s++)}i<c?(r+=c-i,n+=i):n+=c,o++}for(;s<t.length;){let a=t[s];a&&(r+=a.count),s++}return{srcCopied:n,literalAdded:r}}function Jd(e,t){return e.length===0&&t.length===0?100:e.length===0||t.length===0?0:na(e.length,Xr(e),t.length,Xr(t))}function na(e,t,n,r){let o=Math.max(e,n),s=Math.min(e,n);if(s<o-s)return 0;let{srcCopied:a}=Zd(t,r);return Math.floor(a*100/o)}async function Qd(e,t,n,r){let o=[];for(let d of t)if(d.oldHash){let u=await ot(e,d.oldHash);o.push({size:u.length,chunks:Xr(u)})}else o.push(null);let s=[];for(let d of n)if(d.newHash){let u=await ot(e,d.newHash);s.push({size:u.length,chunks:Xr(u)})}else s.push(null);let a=[];for(let d=0;d<t.length;d++){let u=t[d],l=o[d];if(!(!u||!l))for(let m=0;m<n.length;m++){let h=n[m],p=s[m];if(!h||!p)continue;let g=na(l.size,l.chunks,p.size,p.chunks);if(g>=r){let w=jn(u.path)===jn(h.path)?1:0;a.push({similarity:g,nameScore:w,delIdx:d,addIdx:m})}}}a.sort((d,u)=>u.similarity-d.similarity||u.nameScore-d.nameScore);let i=new Set,c=new Set,f=[];for(let{similarity:d,delIdx:u,addIdx:l}of a){if(i.has(u)||c.has(l))continue;i.add(u),c.add(l);let m=t[u],h=n[l];!m||!h||f.push({oldPath:m.path,newPath:h.path,oldHash:m.oldHash??"",newHash:h.newHash??"",similarity:d,oldMode:m.oldMode,newMode:h.newMode})}return f}function Ln(e,t){let n=e.length,r=t.length,o=0,s=0;for(;s<n&&s<r&&e[s]===t[s];)e[s]==="/"&&(o=s+1),s++;let a=o>0?1:0,i=0,c=n,f=r;for(;o-a<=c&&o-a<=f&&c>=0&&f>=0;){if(c===n&&f===r){c--,f--;continue}if(e[c]!==t[f])break;e[c]==="/"&&(i=n-c),c--,f--}let d=Math.max(0,n-o-i),u=Math.max(0,r-o-i),l=e.slice(0,o),m=e.slice(n-i),h=e.slice(o,o+d),p=t.slice(o,o+u);return o+i>0?`${l}{${h} => ${p}}${m}`:`${e} => ${t}`}async function sn(e,t,n){return(await se(e,t)).get(n)?.hash??null}async function ra(e,t,n,r){let o=await Ae(e,t,n);if(!o.find(c=>c.status==="added"&&c.path===r))return null;let{renames:a}=await Ye(e,o);return a.find(c=>c.newPath===r)?.oldPath??null}async function el(e,t,n,r,o,s){let a=await sn(e,(await j(e,t)).tree,n);if(!a){let p=new Map,g=await j(e,t);for(let w of r)p.set(w.finalIdx,on(t,n,w.currentLine,s+w.finalIdx,o[w.finalIdx],g,!1,void 0));return p}let i=await ie(e,a),c=pt(i),f=new Array(o.length),d=[...r],u=t,l=n,m=c;for(;d.length>0;){let p=await j(e,u);if(p.parents.length===0){for(let y of d)f[y.finalIdx]=on(u,l,y.currentLine,s+y.finalIdx,o[y.finalIdx],p,!0,void 0);break}let g=await sn(e,p.tree,l),w=null,x=[];for(let y of p.parents){let I=await j(e,y),A=l,L=await sn(e,I.tree,A);if(!L){let D=await ra(e,I.tree,p.tree,l);D&&(A=D,L=await sn(e,I.tree,A))}if(L&&(x.push({hash:y,path:A,blobHash:L}),L===g)){w={hash:y,path:A};break}}if(w){u=w.hash,l=w.path;continue}if(x.length===0){for(let y of d)f[y.finalIdx]=on(u,l,y.currentLine,s+y.finalIdx,o[y.finalIdx],p,!1,void 0);break}let b=x[0],E=await ie(e,b.blobHash),k=pt(E),P=it(k,m),C=new Map;for(let y of P)y.type==="keep"&&C.set(y.newLineNo,y.oldLineNo);let O=[];for(let y of d){let I=C.get(y.currentLine);I!==void 0?O.push({finalIdx:y.finalIdx,currentLine:I}):f[y.finalIdx]=on(u,l,y.currentLine,s+y.finalIdx,o[y.finalIdx],p,!1,{hash:b.hash,path:b.path})}d=O,u=b.hash,l=b.path,m=k}let h=new Map;for(let p of r)f[p.finalIdx]&&h.set(p.finalIdx,f[p.finalIdx]);return h}async function sa(e,t,n,r){let o=await j(e,t),s=await sn(e,o.tree,n);if(!s)throw new Error(`no such path '${n}' in ${t.slice(0,7)}`);let a=await ie(e,s),i=pt(a),c=r?.startLine??1,f=r?.endLine??i.length,d=i.slice(c-1,f),u=new Array(d.length),l=d.map((g,w)=>({finalIdx:w,currentLine:c+w})),m=t,h=n,p=i;for(;l.length>0;){let g=await j(e,m);if(g.parents.length===0){for(let C of l)u[C.finalIdx]=on(m,h,C.currentLine,c+C.finalIdx,d[C.finalIdx],g,!0,void 0);break}let w=await sn(e,g.tree,h),x=[],b=null;for(let C of g.parents){let O=await j(e,C),y=h,I=await sn(e,O.tree,y);if(!I){let A=await ra(e,O.tree,g.tree,h);A&&(y=A,I=await sn(e,O.tree,y))}if(I){let A={hash:C,path:y,blobHash:I};if(x.push(A),I===w){b=A;break}}}if(b){m=b.hash,h=b.path;continue}if(x.length===0){for(let C of l)u[C.finalIdx]=on(m,h,C.currentLine,c+C.finalIdx,d[C.finalIdx],g,!1,void 0);break}if(x.length===1){let C=x[0],O=await ie(e,C.blobHash),y=pt(O),I=it(y,p),A=new Map;for(let D of I)D.type==="keep"&&A.set(D.newLineNo,D.oldLineNo);let L=[];for(let D of l){let z=A.get(D.currentLine);z!==void 0?L.push({finalIdx:D.finalIdx,currentLine:z}):u[D.finalIdx]=on(m,h,D.currentLine,c+D.finalIdx,d[D.finalIdx],g,!1,{hash:C.hash,path:C.path})}l=L,m=C.hash,h=C.path,p=y;continue}let E=[];for(let C of x){let O=await ie(e,C.blobHash),y=pt(O),I=it(y,p),A=new Map;for(let L of I)L.type==="keep"&&A.set(L.newLineNo,L.oldLineNo);E.push({info:C,newToOld:A})}let k=new Map;for(let C of l){let O=!1;for(let y=0;y<E.length;y++){let I=E[y],A=I.newToOld.get(C.currentLine);if(A!==void 0){let L=k.get(y);L||(L={info:I.info,lines:[]},k.set(y,L)),L.lines.push({finalIdx:C.finalIdx,currentLine:A}),O=!0;break}}O||(u[C.finalIdx]=on(m,h,C.currentLine,c+C.finalIdx,d[C.finalIdx],g,!1,{hash:x[0].hash,path:x[0].path}))}let P=k.get(0);for(let[C,O]of k){if(C===0)continue;let y=await el(e,O.info.hash,O.info.path,O.lines,d,c);for(let[I,A]of y)u[I]=A}if(P&&P.lines.length>0){l=P.lines,m=P.info.hash,h=P.info.path;let C=await ie(e,P.info.blobHash);p=pt(C)}else break}return u}function on(e,t,n,r,o,s,a,i){return{hash:e,origPath:t,origLine:n,finalLine:r,content:o,author:s.author,committer:s.committer,summary:s.message.split(`
80
+ `)[0],boundary:a,previous:i}}function tl(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}function nl(e,t){let n=tl(t),r=new Date((e+n*60)*1e3),o=r.getUTCFullYear(),s=(r.getUTCMonth()+1).toString().padStart(2,"0"),a=r.getUTCDate().toString().padStart(2,"0"),i=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),f=r.getUTCSeconds().toString().padStart(2,"0");return`${o}-${s}-${a} ${i}:${c}:${f} ${t}`}function rl(e,t,n,r,o){if(e.length===0)return"";let s=Math.max(...e.map(d=>d.finalLine)),a=String(s).length,i=e.some(d=>d.origPath!==t),c=0;if(!o)for(let d of e){let u=r?`<${d.author.email}>`:d.author.name;u.length>c&&(c=u.length)}let f=[];for(let d of e){let u;n?u=d.boundary?`^${d.hash.slice(0,39)}`:d.hash:u=d.boundary?`^${d.hash.slice(0,7)}`:d.hash.slice(0,8);let l=i&&d.origPath!==t?` ${d.origPath}`:"";if(o)f.push(`${u}${l} ${String(d.finalLine).padStart(a)}) ${d.content}`);else{let m=r?`<${d.author.email}>`:d.author.name,h=nl(d.author.timestamp,d.author.timezone);f.push(`${u}${l} (${m.padEnd(c)} ${h} ${String(d.finalLine).padStart(a)}) ${d.content}`)}}return`${f.join(`
81
81
  `)}
82
- `}function nl(e,t){let n=new Set,r=[];for(let o of e){let s=!n.has(o.hash);n.add(o.hash),r.push(`${o.hash} ${o.origLine} ${o.finalLine} 1`),(s||t)&&(r.push(`author ${o.author.name}`),r.push(`author-mail <${o.author.email}>`),r.push(`author-time ${o.author.timestamp}`),r.push(`author-tz ${o.author.timezone}`),r.push(`committer ${o.committer.name}`),r.push(`committer-mail <${o.committer.email}>`),r.push(`committer-time ${o.committer.timestamp}`),r.push(`committer-tz ${o.committer.timezone}`),r.push(`summary ${o.summary}`),o.boundary&&r.push("boundary"),o.previous&&r.push(`previous ${o.previous.hash} ${o.previous.path}`),r.push(`filename ${o.origPath}`)),r.push(` ${o.content}`)}return`${r.join(`
82
+ `}function sl(e,t){let n=new Set,r=[];for(let o of e){let s=!n.has(o.hash);n.add(o.hash),r.push(`${o.hash} ${o.origLine} ${o.finalLine} 1`),(s||t)&&(r.push(`author ${o.author.name}`),r.push(`author-mail <${o.author.email}>`),r.push(`author-time ${o.author.timestamp}`),r.push(`author-tz ${o.author.timezone}`),r.push(`committer ${o.committer.name}`),r.push(`committer-mail <${o.committer.email}>`),r.push(`committer-time ${o.committer.timestamp}`),r.push(`committer-tz ${o.committer.timezone}`),r.push(`summary ${o.summary}`),o.boundary&&r.push("boundary"),o.previous&&r.push(`previous ${o.previous.hash} ${o.previous.path}`),r.push(`filename ${o.origPath}`)),r.push(` ${o.content}`)}return`${r.join(`
83
83
  `)}
84
- `}function rl(e,t,n){if(e.startsWith("/"))return Ke(n,e);let r=Ke(n,t);return r===""||r==="."?e:`${r}/${e}`}function ra(e,t){e.command("blame",{description:"Show what revision and author last modified each line of a file",args:[W.string().name("args").variadic().optional()],options:{lineRange:te.string().alias("L").describe("Annotate only the given line range (<start>,<end>)"),long:A().alias("l").describe("Show long revision"),showEmail:A().alias("e").describe("Show author email instead of name"),suppress:A().alias("s").describe("Suppress author name and date"),porcelain:A().alias("p").describe("Show in machine-readable format"),linePorcelain:A().describe("Show porcelain format with full headers for each line")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s;if(!a.workTree)return T("this operation must be run in a work tree");let i=await Se(a);if(S(i))return i;let c=n.args??[],f=o.passthrough??[],d=null,u=null;if(f.length>0?(u=f[f.length-1],c.length>0&&(d=c[0])):c.length===2?(d=c[0],u=c[1]):c.length===1&&(u=c[0]),!u)return T("no file specified");let l=rl(u,r.cwd,a.workTree),m;if(d){let C=await An(a,d);if(S(C))return C;m=await Re(a,C)}else m=i;let h=await M(a,m),p=await se(a,h.tree);if(!p.has(l))return T(`no such path ${l} in ${d??"HEAD"}`);let g=p.get(l).hash,w=await fe(a,g);if(Pe(w))return T(`cannot blame binary file '${l}'`);let x,b;if(n.lineRange){let C=n.lineRange,P=C.match(/^(\d+),(\d+)$/);if(P)x=parseInt(P[1],10),b=parseInt(P[2],10);else return T(`invalid -L range: '${C}'`)}let y;try{y=await na(a,m,l,{startLine:x,endLine:b})}catch(C){let P=C instanceof Error?C.message:String(C);return T(P)}let k;return n.porcelain||n.linePorcelain?k=nl(y,!!n.linePorcelain):k=tl(y,l,!!n.long,!!n.showEmail,!!n.suppress),{stdout:k,stderr:"",exitCode:0}}})}var sl=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ol=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function vt(e,t){let n=il(t),r=new Date((e+n*60)*1e3),o=sl[r.getUTCDay()],s=ol[r.getUTCMonth()],a=r.getUTCDate(),i=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),f=r.getUTCSeconds().toString().padStart(2,"0"),d=r.getUTCFullYear();return`${o} ${s} ${a} ${i}:${c}:${f} ${d} ${t}`}function so(e){let t=e.trim();if(/^\d+$/.test(t))return parseInt(t,10);let n=Date.parse(t);return Number.isNaN(n)?null:Math.floor(n/1e3)}function il(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}var Yr=new TextDecoder;function sa(e){if(e.length===0)return 0;let t=0;for(let n=0;n<e.length;n++)e[n]===`
84
+ `}function ol(e,t,n){if(e.startsWith("/"))return Ke(n,e);let r=Ke(n,t);return r===""||r==="."?e:`${r}/${e}`}function oa(e,t){e.command("blame",{description:"Show what revision and author last modified each line of a file",args:[W.string().name("args").variadic().optional()],options:{lineRange:te.string().alias("L").describe("Annotate only the given line range (<start>,<end>)"),long:v().alias("l").describe("Show long revision"),showEmail:v().alias("e").describe("Show author email instead of name"),suppress:v().alias("s").describe("Suppress author name and date"),porcelain:v().alias("p").describe("Show in machine-readable format"),linePorcelain:v().describe("Show porcelain format with full headers for each line")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s;if(!a.workTree)return T("this operation must be run in a work tree");let i=await Se(a);if(S(i))return i;let c=n.args??[],f=o.passthrough??[],d=null,u=null;if(f.length>0?(u=f[f.length-1],c.length>0&&(d=c[0])):c.length===2?(d=c[0],u=c[1]):c.length===1&&(u=c[0]),!u)return T("no file specified");let l=ol(u,r.cwd,a.workTree),m;if(d){let P=await Sn(a,d);if(S(P))return P;m=await Ie(a,P)}else m=i;let h=await j(a,m),p=await se(a,h.tree);if(!p.has(l))return T(`no such path ${l} in ${d??"HEAD"}`);let g=p.get(l).hash,w=await ie(a,g);if(Pe(w))return T(`cannot blame binary file '${l}'`);let x,b;if(n.lineRange){let P=n.lineRange,C=P.match(/^(\d+),(\d+)$/);if(C)x=parseInt(C[1],10),b=parseInt(C[2],10);else return T(`invalid -L range: '${P}'`)}let E;try{E=await sa(a,m,l,{startLine:x,endLine:b})}catch(P){let C=P instanceof Error?P.message:String(P);return T(C)}let k;return n.porcelain||n.linePorcelain?k=sl(E,!!n.linePorcelain):k=rl(E,l,!!n.long,!!n.showEmail,!!n.suppress),{stdout:k,stderr:"",exitCode:0}}})}var il=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],al=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function vt(e,t){let n=cl(t),r=new Date((e+n*60)*1e3),o=il[r.getUTCDay()],s=al[r.getUTCMonth()],a=r.getUTCDate(),i=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),f=r.getUTCSeconds().toString().padStart(2,"0"),d=r.getUTCFullYear();return`${o} ${s} ${a} ${i}:${c}:${f} ${d} ${t}`}function io(e){let t=e.trim();if(/^\d+$/.test(t))return parseInt(t,10);let n=Date.parse(t);return Number.isNaN(n)?null:Math.floor(n/1e3)}function cl(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}var Zr=new TextDecoder;function ia(e){if(e.length===0)return 0;let t=0;for(let n=0;n<e.length;n++)e[n]===`
85
85
  `&&t++;return e[e.length-1]!==`
86
- `&&t++,t}function Zr(e,t,n){if(e===0)return"";let r=[];return r.push(`${e} file${e!==1?"s":""} changed`),(t>0||n===0)&&r.push(`${t} insertion${t!==1?"s":""}(+)`),(n>0||t===0)&&r.push(`${n} deletion${n!==1?"s":""}(-)`),` ${r.join(", ")}`}async function oa(e,t,n){let r=[],o=[],s=[];for(let i of t)if(i.status==="added"&&i.newHash&&i.newMode){let c=await ot(e,i.newHash);Vt(c)?r.push({path:i.path,sortKey:i.path,insertions:0,deletions:0,isBinary:!0,oldSize:0,newSize:c.byteLength}):r.push({path:i.path,sortKey:i.path,insertions:sa(Yr.decode(c)),deletions:0}),o.push({path:i.path,mode:i.newMode})}else if(i.status==="deleted"&&i.oldHash&&i.oldMode){let c=await ot(e,i.oldHash);Vt(c)?r.push({path:i.path,sortKey:i.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:0}):r.push({path:i.path,sortKey:i.path,insertions:0,deletions:sa(Yr.decode(c))}),s.push({path:i.path,mode:i.oldMode})}else if(i.status==="modified"&&i.oldHash&&i.newHash){let c=await ot(e,i.oldHash),f=await ot(e,i.newHash);if(Vt(c)||Vt(f))r.push({path:i.path,sortKey:i.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:f.byteLength});else{let d=rn(Yr.decode(c)),u=rn(Yr.decode(f)),l=xt(d,u),m=0,h=0;for(let p of l)p.type==="insert"?m++:p.type==="delete"&&h++;r.push({path:i.path,sortKey:i.path,insertions:m,deletions:h})}i.oldMode&&i.newMode&&i.oldMode!==i.newMode&&(s.push({path:i.path,mode:i.oldMode}),o.push({path:i.path,mode:i.newMode}))}for(let i of n){let c=Mn(i.oldPath,i.newPath),f=0,d=0;if(i.similarity<100&&i.oldHash&&i.newHash){let u=await fe(e,i.oldHash),l=await fe(e,i.newHash);if(!Pe(u)&&!Pe(l)){let m=rn(u),h=rn(l),p=xt(m,h);for(let g of p)g.type==="insert"?f++:g.type==="delete"&&d++}}r.push({path:c,sortKey:i.newPath,insertions:f,deletions:d})}let a=[];for(let{path:i,mode:c}of o)a.push({sortKey:i,text:` create mode ${c} ${i}`});for(let{path:i,mode:c}of s)a.push({sortKey:i,text:` delete mode ${c} ${i}`});for(let i of n){let c=Mn(i.oldPath,i.newPath);a.push({sortKey:i.newPath,text:` rename ${c} (${i.similarity}%)`})}return a.sort((i,c)=>i.sortKey<c.sortKey?-1:i.sortKey>c.sortKey?1:0),{fileStats:r,modeLines:a.map(i=>i.text)}}async function St(e,t,n,r,o,s=!1,a=!1){let i=[];if((r.name!==o.name||r.email!==o.email)&&i.push(` Author: ${r.name} <${r.email}>`),s&&i.push(` Date: ${vt(r.timestamp,r.timezone)}`),a)return i.join(`
86
+ `&&t++,t}function Qr(e,t,n){if(e===0)return"";let r=[];return r.push(`${e} file${e!==1?"s":""} changed`),(t>0||n===0)&&r.push(`${t} insertion${t!==1?"s":""}(+)`),(n>0||t===0)&&r.push(`${n} deletion${n!==1?"s":""}(-)`),` ${r.join(", ")}`}async function aa(e,t,n){let r=[],o=[],s=[];for(let i of t)if(i.status==="added"&&i.newHash&&i.newMode){let c=await ot(e,i.newHash);Yt(c)?r.push({path:i.path,sortKey:i.path,insertions:0,deletions:0,isBinary:!0,oldSize:0,newSize:c.byteLength}):r.push({path:i.path,sortKey:i.path,insertions:ia(Zr.decode(c)),deletions:0}),o.push({path:i.path,mode:i.newMode})}else if(i.status==="deleted"&&i.oldHash&&i.oldMode){let c=await ot(e,i.oldHash);Yt(c)?r.push({path:i.path,sortKey:i.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:0}):r.push({path:i.path,sortKey:i.path,insertions:0,deletions:ia(Zr.decode(c))}),s.push({path:i.path,mode:i.oldMode})}else if(i.status==="modified"&&i.oldHash&&i.newHash){let c=await ot(e,i.oldHash),f=await ot(e,i.newHash);if(Yt(c)||Yt(f))r.push({path:i.path,sortKey:i.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:f.byteLength});else{let d=rn(Zr.decode(c)),u=rn(Zr.decode(f)),l=it(d,u),m=0,h=0;for(let p of l)p.type==="insert"?m++:p.type==="delete"&&h++;r.push({path:i.path,sortKey:i.path,insertions:m,deletions:h})}i.oldMode&&i.newMode&&i.oldMode!==i.newMode&&(s.push({path:i.path,mode:i.oldMode}),o.push({path:i.path,mode:i.newMode}))}for(let i of n){let c=Ln(i.oldPath,i.newPath),f=0,d=0;if(i.similarity<100&&i.oldHash&&i.newHash){let u=await ie(e,i.oldHash),l=await ie(e,i.newHash);if(!Pe(u)&&!Pe(l)){let m=rn(u),h=rn(l),p=it(m,h);for(let g of p)g.type==="insert"?f++:g.type==="delete"&&d++}}r.push({path:c,sortKey:i.newPath,insertions:f,deletions:d})}let a=[];for(let{path:i,mode:c}of o)a.push({sortKey:i,text:` create mode ${c} ${i}`});for(let{path:i,mode:c}of s)a.push({sortKey:i,text:` delete mode ${c} ${i}`});for(let i of n){let c=Ln(i.oldPath,i.newPath);a.push({sortKey:i.newPath,text:` rename ${c} (${i.similarity}%)`})}return a.sort((i,c)=>i.sortKey<c.sortKey?-1:i.sortKey>c.sortKey?1:0),{fileStats:r,modeLines:a.map(i=>i.text)}}async function St(e,t,n,r,o,s=!1,a=!1){let i=[];if((r.name!==o.name||r.email!==o.email)&&i.push(` Author: ${r.name} <${r.email}>`),s&&i.push(` Date: ${vt(r.timestamp,r.timezone)}`),a)return i.join(`
87
87
  `)+(i.length>0?`
88
- `:"");let c=await Ae(e,t,n),{remaining:f,renames:d}=await Ye(e,c),{fileStats:u,modeLines:l}=await oa(e,f,d),m=0,h=0;for(let g of u)m+=g.insertions,h+=g.deletions;let p=Zr(u.length,m,h);p&&i.push(p);for(let g of l)i.push(g);return i.join(`
88
+ `:"");let c=await Ae(e,t,n),{remaining:f,renames:d}=await Ye(e,c),{fileStats:u,modeLines:l}=await aa(e,f,d),m=0,h=0;for(let g of u)m+=g.insertions,h+=g.deletions;let p=Qr(u.length,m,h);p&&i.push(p);for(let g of l)i.push(g);return i.join(`
89
89
  `)+(i.length>0?`
90
- `:"")}var Xr=80;function al(e,t){if(e.length<=t)return e;let n=e;for(;n.length+4>t;){let o=n.indexOf("/");if(o===-1)break;n=n.slice(o+1)}let r=`.../${n}`;return r.length<=t?r:`...${e.slice(e.length-(t-3))}`}function oo(e){if(e.length===0)return"";let t=e.filter(h=>!h.isUnmerged),n=t.length>0?Math.max(...t.map(h=>h.insertions+h.deletions)):0,r=e.some(h=>h.isBinary),o=n>0?String(n).length:1;r&&o<3&&(o=3);let s=Math.max(...e.map(h=>h.path.length)),a=n,i=s;if(i+o+6+a>Xr){let h=Math.floor(Xr*3/8)-o-6;a>h&&(a=Math.max(h,6));let p=Xr-o-6-a;i>p?i=p:a=Xr-o-6-i}for(let h of e)h.path=al(h.path,i);let c=i,f=[],d=0,u=0,l=0;for(let h of e){let p=h.path.padEnd(c);if(h.isUnmerged){f.push(` ${p} | Unmerged`);continue}if(l++,d+=h.insertions,u+=h.deletions,h.isBinary){let P=`${"Bin".padStart(o)} ${h.oldSize??0} -> ${h.newSize??0} bytes`;f.push(` ${p} | ${P}`);continue}let g=h.insertions+h.deletions,w=String(g).padStart(o),x,b;if(n<=a)x=h.insertions,b=h.deletions;else{let C=E=>E===0?0:1+Math.floor(E*(a-1)/n),P=C(g),O=P<2&&h.insertions>0&&h.deletions>0?2:P;h.insertions<h.deletions?(x=C(h.insertions),b=O-x):(b=C(h.deletions),x=O-b)}let y="+".repeat(x)+"-".repeat(b),k=y?` ${y}`:"";f.push(` ${p} | ${w}${k}`)}let m=Zr(l,d,u);return m?f.push(m):e.some(h=>h.isUnmerged)&&f.push(" 0 files changed"),`${f.join(`
90
+ `:"")}var Jr=80;function fl(e,t){if(e.length<=t)return e;let n=e;for(;n.length+4>t;){let o=n.indexOf("/");if(o===-1)break;n=n.slice(o+1)}let r=`.../${n}`;return r.length<=t?r:`...${e.slice(e.length-(t-3))}`}function ao(e){if(e.length===0)return"";let t=e.filter(h=>!h.isUnmerged),n=t.length>0?Math.max(...t.map(h=>h.insertions+h.deletions)):0,r=e.some(h=>h.isBinary),o=n>0?String(n).length:1;r&&o<3&&(o=3);let s=Math.max(...e.map(h=>h.path.length)),a=n,i=s;if(i+o+6+a>Jr){let h=Math.floor(Jr*3/8)-o-6;a>h&&(a=Math.max(h,6));let p=Jr-o-6-a;i>p?i=p:a=Jr-o-6-i}for(let h of e)h.path=fl(h.path,i);let c=i,f=[],d=0,u=0,l=0;for(let h of e){let p=h.path.padEnd(c);if(h.isUnmerged){f.push(` ${p} | Unmerged`);continue}if(l++,d+=h.insertions,u+=h.deletions,h.isBinary){let C=`${"Bin".padStart(o)} ${h.oldSize??0} -> ${h.newSize??0} bytes`;f.push(` ${p} | ${C}`);continue}let g=h.insertions+h.deletions,w=String(g).padStart(o),x,b;if(n<=a)x=h.insertions,b=h.deletions;else{let P=y=>y===0?0:1+Math.floor(y*(a-1)/n),C=P(g),O=C<2&&h.insertions>0&&h.deletions>0?2:C;h.insertions<h.deletions?(x=P(h.insertions),b=O-x):(b=P(h.deletions),x=O-b)}let E="+".repeat(x)+"-".repeat(b),k=E?` ${E}`:"";f.push(` ${p} | ${w}${k}`)}let m=Qr(l,d,u);return m?f.push(m):e.some(h=>h.isUnmerged)&&f.push(" 0 files changed"),`${f.join(`
91
91
  `)}
92
- `}async function sn(e,t,n){let r=await Ae(e,t,n),{remaining:o,renames:s}=await Ye(e,r);if(o.length===0&&s.length===0)return"";let{fileStats:a,modeLines:i}=await oa(e,o,s);a.sort((f,d)=>f.sortKey<d.sortKey?-1:f.sortKey>d.sortKey?1:0);let c=oo(a);for(let f of i)c+=`${f}
93
- `;return c}async function cl(e,t){let n=new Set,r=[t],o=0;for(;o<r.length;){let s=r[o++];if(n.has(s))continue;n.add(s);let a=await M(e,s);for(let i of a.parents)n.has(i)||r.push(i)}return n}async function _t(e,t,n){if(t===n)return!0;let r=new Set,o=[n],s=0;for(;s<o.length;){let a=o[s++];if(a===t)return!0;if(r.has(a))continue;r.add(a);let i=await M(e,a);for(let c of i.parents)r.has(c)||o.push(c)}return!1}async function ht(e,t,n){if(t===n)return[t];let r=await cl(e,t),o=[],s=new Set,a=[n],i=0;for(;i<a.length;){let f=a[i++];if(s.has(f))continue;if(s.add(f),r.has(f)){o.push(f);continue}let d=await M(e,f);for(let u of d.parents)s.has(u)||a.push(u)}if(o.length<=1)return o;let c=[];for(let f of o){let d=!1;for(let u of o)if(u!==f&&await _t(e,f,u)){d=!0;break}d||c.push(f)}return c.length<=1?c:fl(e,t,n,c)}async function fl(e,t,n,r){let o=new Set(r),s=new Set,a=[],i=new Map,c=new Map,f=0,d=[{hash:t,mask:1,seq:f++},{hash:n,mask:2,seq:f++}];async function u(l){let m=c.get(l);if(m!==void 0)return m;let h=(await M(e,l)).committer.timestamp;return c.set(l,h),h}for(;d.length>0;){let l=0,m=await u(d[0].hash);for(let x=1;x<d.length;x++){let b=d[x],y=await u(b.hash),k=d[l];(y>m||y===m&&b.seq<k.seq)&&(l=x,m=y)}let h=d.splice(l,1)[0],p=i.get(h.hash)??0,g=p|h.mask;if(g===p)continue;if(i.set(h.hash,g),g===3&&o.has(h.hash)&&!s.has(h.hash)&&(a.push(h.hash),s.add(h.hash),s.size===o.size))break;let w=await M(e,h.hash);for(let x of w.parents)d.push({hash:x,mask:g,seq:f++})}for(let l of r)s.has(l)||a.push(l);return a}async function Ft(e,t,n){let r=await bt(e,"init.defaultBranch")??"main";return n===r?`Merge branch '${t}'
92
+ `}async function an(e,t,n){let r=await Ae(e,t,n),{remaining:o,renames:s}=await Ye(e,r);if(o.length===0&&s.length===0)return"";let{fileStats:a,modeLines:i}=await aa(e,o,s);a.sort((f,d)=>f.sortKey<d.sortKey?-1:f.sortKey>d.sortKey?1:0);let c=ao(a);for(let f of i)c+=`${f}
93
+ `;return c}async function dl(e,t){let n=new Set,r=[t],o=0;for(;o<r.length;){let s=r[o++];if(n.has(s))continue;n.add(s);let a=await j(e,s);for(let i of a.parents)n.has(i)||r.push(i)}return n}async function Ft(e,t,n){if(t===n)return!0;let r=new Set,o=[n],s=0;for(;s<o.length;){let a=o[s++];if(a===t)return!0;if(r.has(a))continue;r.add(a);let i=await j(e,a);for(let c of i.parents)r.has(c)||o.push(c)}return!1}async function gt(e,t,n){if(t===n)return[t];let r=await dl(e,t),o=[],s=new Set,a=[n],i=0;for(;i<a.length;){let f=a[i++];if(s.has(f))continue;if(s.add(f),r.has(f)){o.push(f);continue}let d=await j(e,f);for(let u of d.parents)s.has(u)||a.push(u)}if(o.length<=1)return o;let c=[];for(let f of o){let d=!1;for(let u of o)if(u!==f&&await Ft(e,f,u)){d=!0;break}d||c.push(f)}return c.length<=1?c:ll(e,t,n,c)}async function ll(e,t,n,r){let o=new Set(r),s=new Set,a=[],i=new Map,c=new Map,f=0,d=[{hash:t,mask:1,seq:f++},{hash:n,mask:2,seq:f++}];async function u(l){let m=c.get(l);if(m!==void 0)return m;let h=(await j(e,l)).committer.timestamp;return c.set(l,h),h}for(;d.length>0;){let l=0,m=await u(d[0].hash);for(let x=1;x<d.length;x++){let b=d[x],E=await u(b.hash),k=d[l];(E>m||E===m&&b.seq<k.seq)&&(l=x,m=E)}let h=d.splice(l,1)[0],p=i.get(h.hash)??0,g=p|h.mask;if(g===p)continue;if(i.set(h.hash,g),g===3&&o.has(h.hash)&&!s.has(h.hash)&&(a.push(h.hash),s.add(h.hash),s.size===o.size))break;let w=await j(e,h.hash);for(let x of w.parents)d.push({hash:x,mask:g,seq:f++})}for(let l of r)s.has(l)||a.push(l);return a}async function Ut(e,t,n){let r=await Et(e,"init.defaultBranch")??"main";return n===r?`Merge branch '${t}'
94
94
  `:`Merge branch '${t}' into ${n}
95
- `}async function Jr(e,t,n){let r=await M(e,t),o=await M(e,n),s=K(t),a=K(n),i=`Updating ${s}..${a}
96
- `;if(e.workTree){let f=await U(e),d=await Ni(e,r.tree,o.tree,f);if(!d.success){let u=d.errorOutput;return{stdout:i+u.stdout,stderr:u.stderr,exitCode:u.exitCode}}await re(e,{version:2,entries:d.newEntries}),await be(e,d.worktreeOps)}await Yt(e,n);let c=await sn(e,r.tree,o.tree);return{stdout:`${i}Fast-forward
97
- ${c}`,stderr:"",exitCode:0}}async function qe(e,t){let n=v(e.gitDir,t);return await e.fs.exists(n)?e.fs.readFile(n):null}async function Ue(e,t,n){await e.fs.writeFile(v(e.gitDir,t),n)}async function et(e,t){let n=v(e.gitDir,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function sr(e){await ie(e,"MERGE_HEAD"),await ie(e,"ORIG_HEAD"),await et(e,"MERGE_MSG"),await et(e,"MERGE_MODE")}async function kt(e){await ie(e,"CHERRY_PICK_HEAD"),await ie(e,"ORIG_HEAD"),await et(e,"MERGE_MSG")}async function pt(e){await ie(e,"REVERT_HEAD"),await ie(e,"ORIG_HEAD"),await et(e,"MERGE_MSG")}async function wn(e){for(let t of["CHERRY_PICK_HEAD","REVERT_HEAD","MERGE_HEAD","ORIG_HEAD"])await ie(e,t);await et(e,"MERGE_MSG"),await et(e,"MERGE_MODE")}var io="DETACH_POINT";async function ia(e,t){await e.fs.writeFile(v(e.gitDir,io),t)}async function tt(e){let t=v(e.gitDir,io);await e.fs.exists(t)&&await e.fs.rm(t)}async function or(e){let t=v(e.gitDir,io);return await e.fs.exists(t)?(await e.fs.readFile(t))?.trim()??null:null}function ir(e){return v(e.gitDir,"rebase-merge")}async function gt(e){return e.fs.exists(ir(e))}async function nt(e){let t=ir(e);if(!await e.fs.exists(t))return null;let n=await e.fs.readFile(v(t,"head-name")),r=await e.fs.readFile(v(t,"orig-head")),o=await e.fs.readFile(v(t,"onto")),s=Number.parseInt(await e.fs.readFile(v(t,"msgnum")),10),a=Number.parseInt(await e.fs.readFile(v(t,"end")),10),i=aa(await e.fs.readFile(v(t,"todo"))),c=await e.fs.exists(v(t,"done"))?await e.fs.readFile(v(t,"done")):"",f=aa(c);return{headName:n.trim(),origHead:r.trim(),onto:o.trim(),todo:i,done:f,msgnum:s,end:a}}async function ao(e,t){let n=ir(e);await e.fs.mkdir(n,{recursive:!0}),await e.fs.writeFile(v(n,"head-name"),t.headName),await e.fs.writeFile(v(n,"orig-head"),t.origHead),await e.fs.writeFile(v(n,"onto"),t.onto),await e.fs.writeFile(v(n,"msgnum"),String(t.msgnum)),await e.fs.writeFile(v(n,"end"),String(t.end)),await e.fs.writeFile(v(n,"todo"),es(t.todo)),await e.fs.writeFile(v(n,"done"),es(t.done))}async function da(e){let t=ir(e),n=await nt(e);if(!n)throw new Error("No rebase in progress");let r=n.todo.shift();r&&n.done.push(r),n.msgnum=n.done.length,await e.fs.writeFile(v(t,"msgnum"),String(n.msgnum)),await e.fs.writeFile(v(t,"todo"),es(n.todo)),await e.fs.writeFile(v(t,"done"),es(n.done))}async function co(e){let t=ir(e);await e.fs.exists(t)&&await e.fs.rm(t,{recursive:!0})}function aa(e){let t=[];for(let n of e.split(`
98
- `)){let r=n.trim();if(!r)continue;let o=r.match(/^pick\s+([0-9a-f]+)\s+(.*)/);o?.[1]&&o[2]&&t.push({hash:o[1],subject:o[2]})}return t}function es(e){return e.length===0?"":`${e.map(t=>`pick ${t.hash} ${t.subject}`).join(`
99
- `)}
100
- `}async function la(e,t,n){let r=new Map,[o,s]=await Promise.all([ca(e,t,r),ca(e,n,r)]),a=new Set;for(let c of s)o.has(c)||a.add(c);let i=new Set;for(let c of o)s.has(c)||i.add(c);return{right:await fa(e,r,n,a),left:await fa(e,r,t,i)}}async function ca(e,t,n){let r=new Set,o=[t],s=0;for(;s<o.length;){let a=o[s++];if(r.has(a))continue;r.add(a);let i=await Qr(e,a,n);for(let c of i.commit.parents)r.has(c)||o.push(c)}return r}async function fa(e,t,n,r){if(r.size===0)return[];let o=new Map;for(let f of r)o.set(f,0);for(let f of r){let d=await Qr(e,f,t);for(let u of d.commit.parents)r.has(u)&&o.set(u,(o.get(u)??0)+1)}let s=[];for(let f of r)o.get(f)===0&&s.push(await Qr(e,f,t));s.sort((f,d)=>f.commit.committer.timestamp-d.commit.committer.timestamp);let a=s.map(f=>f.hash),i=[],c=new Set;for(;a.length>0;){let f=a.pop();if(!f||c.has(f))continue;c.add(f);let d=await Qr(e,f,t);d.commit.parents.length<=1&&i.push(d);for(let u of d.commit.parents)if(r.has(u)&&!c.has(u)){let l=(o.get(u)??0)-1;o.set(u,l),l<=0&&a.push(u)}}return i.reverse(),i}async function Qr(e,t,n){let r=n.get(t);if(r)return r;let o=await ce(e,t);if(o.type!=="commit")throw new Error(`Expected commit object, got ${o.type}`);let s={hash:t,commit:It(o.content)};return n.set(t,s),s}var jn=class{heap=[];get size(){return this.heap.length}push(t){this.heap.push(t),this.siftUp(this.heap.length-1)}pop(){let{heap:t}=this;if(t.length===0)return;let n=t[0],r=t.pop();return t.length>0&&(t[0]=r,this.siftDown(0)),n}siftUp(t){let{heap:n}=this;for(;t>0;){let r=t-1>>1;if(n[r].commit.committer.timestamp>=n[t].commit.committer.timestamp)break;[n[r],n[t]]=[n[t],n[r]],t=r}}siftDown(t){let{heap:n}=this,r=n.length;for(;;){let o=t,s=2*t+1,a=2*t+2;if(s<r&&n[s].commit.committer.timestamp>n[o].commit.committer.timestamp&&(o=s),a<r&&n[a].commit.committer.timestamp>n[o].commit.committer.timestamp&&(o=a),o===t)break;[n[t],n[o]]=[n[o],n[t]],t=o}}};async function*bn(e,t,n){let r=await dl(e,n?.exclude),o=new Set(r),s=new jn,a=Array.isArray(t)?t:[t];for(let i of a)o.has(i)||s.push(await ts(e,i));for(;s.size>0;){let i=s.pop();if(!o.has(i.hash)){o.add(i.hash),yield i;for(let c of i.commit.parents)o.has(c)||s.push(await ts(e,c))}}}async function ua(e,t,n){if(t===n)return{ahead:0,behind:0};let r=new Set;for await(let i of bn(e,t))r.add(i.hash);let o=new Set;for await(let i of bn(e,n))o.add(i.hash);let s=0;for(let i of r)o.has(i)||s++;let a=0;for(let i of o)r.has(i)||a++;return{ahead:s,behind:a}}async function ma(e,t,n){let r=n?.maxCount??25,o=await le(e,"refs"),s=[];for(let d of o)try{s.push(await Re(e,d.hash))}catch{}n?.targetHash&&s.push(n.targetHash);let a=new Set;if(s.length>0)for await(let d of bn(e,s))a.add(d.hash);if(a.has(t))return[];let i=[],c=new Set,f=new jn;for(f.push(await ts(e,t));f.size>0&&i.length<r;){let d=f.pop();if(!c.has(d.hash)&&(c.add(d.hash),!a.has(d.hash))){i.push({hash:d.hash,subject:ue(d.commit.message)});for(let u of d.commit.parents)c.has(u)||f.push(await ts(e,u))}}return i}async function dl(e,t){if(!t||t.length===0)return new Set;let n=new Set;for await(let r of bn(e,t))n.add(r.hash);return n}async function ts(e,t){return{hash:t,commit:await M(e,t)}}async function Be(e,t){let n=await J(e),r=await X(e),o,s=!1;n&&n.type==="symbolic"?o=de(n.target):(s=!0,o="HEAD detached");let a=t?.index??await U(e),i=lo(a),c=t?.compareHash!==void 0?t.compareHash:r,f=t?.compareHash!==void 0?!t.compareHash:!r,d=await fo(e,c,a,i),u=await lt(e,a),l=[],m=[];for(let g of u)g.status==="untracked"?m.push(g.path):l.push({path:g.path,status:g.status});l.sort((g,w)=>he(g.path,w.path));let h=new Set(a.entries.map(g=>g.path)),p=uo(m,h);return ll(e,r,s,o,a,d,l,i,p,{fromCommit:t?.fromCommit,noWarn:t?.noWarn,isInitial:f})}function ha(e,t){if(t.done.length>0){let n=t.done.length;e.push(`Last command${n===1?"":"s"} done (${n} command${n===1?"":"s"} done):`);for(let r of t.done.slice(-2))e.push(` pick ${K(r.hash)} # ${r.subject}`);n>2&&e.push(" (see more in file .git/rebase-merge/done)")}if(t.todo.length>0){let n=t.todo.length;e.push(`Next command${n===1?"":"s"} to do (${n} remaining command${n===1?"":"s"}):`);for(let r of t.todo.slice(0,2))e.push(` pick ${K(r.hash)} # ${r.subject}`);e.push(' (use "git rebase --edit-todo" to view and edit)')}else e.push("No commands remaining.")}async function ll(e,t,n,r,o,s,a,i,c,f){let d=[],u=!1,l=await F(e,"CHERRY_PICK_HEAD"),m=await F(e,"REVERT_HEAD"),h=await F(e,"MERGE_HEAD"),p=!l&&!h,w=await gt(e)?await nt(e):null;if(n&&w){let O=K(w.onto);d.push(`interactive rebase in progress; onto ${O}`)}else if(n){let O=await or(e);if(O){let E=t===O?"at":"from";d.push(`HEAD detached ${E} ${K(O)}`)}else d.push("Not currently on any branch.")}else d.push(`On branch ${r}`);if(!n&&!w){let O=await ae(e),E=await Ut(e,O,r);if(E){let I=yn(E,{abbreviated:f?.fromCommit});for(let H of I.trimEnd().split(`
101
- `))d.push(H);u=!0}}if(u&&(w||l||m||h)&&d.push(""),w&&h)ha(d,w),d.push(""),i.length>0?(d.push("You have unmerged paths."),d.push(' (fix conflicts and run "git commit")'),d.push(' (use "git merge --abort" to abort the merge)')):(d.push("All conflicts fixed but you are still merging."),d.push(' (use "git commit" to conclude merge)')),u=!0;else if(w){let O=dt(o),E=await e.fs.exists(v(e.gitDir,"MERGE_MSG"));ha(d,w);let H=w.headName==="detached HEAD"?null:de(w.headName),_=K(w.onto),G=H?` branch '${H}' on '${_}'`:"";if(O)d.push(`You are currently rebasing${G}.`),d.push(' (fix conflicts and then run "git rebase --continue")'),d.push(' (use "git rebase --skip" to skip this patch)'),d.push(' (use "git rebase --abort" to check out the original branch)');else if(E)d.push(`You are currently rebasing${G}.`),d.push(' (all conflicts fixed: run "git rebase --continue")');else{let z=G?`You are currently editing a commit while rebasing${G}.`:"You are currently editing a commit during a rebase.";d.push(z),d.push(' (use "git commit --amend" to amend the current commit)'),d.push(' (use "git rebase --continue" once you are satisfied with your changes)')}u=!0}else l?(d.push(`You are currently cherry-picking commit ${K(l)}.`),i.length>0?d.push(' (fix conflicts and run "git cherry-pick --continue")'):d.push(' (all conflicts fixed: run "git cherry-pick --continue")'),d.push(' (use "git cherry-pick --skip" to skip this patch)'),d.push(' (use "git cherry-pick --abort" to cancel the cherry-pick operation)'),u=!0):m?(d.push(`You are currently reverting commit ${K(m)}.`),i.length>0?d.push(' (fix conflicts and run "git revert --continue")'):d.push(' (all conflicts fixed: run "git revert --continue")'),d.push(' (use "git revert --skip" to skip this patch)'),d.push(' (use "git revert --abort" to cancel the revert operation)'),u=!0):h&&(i.length>0?(d.push("You have unmerged paths."),d.push(' (fix conflicts and run "git commit")'),d.push(' (use "git merge --abort" to abort the merge)')):(d.push("All conflicts fixed but you are still merging."),d.push(' (use "git commit" to conclude merge)')),u=!0);let x=f?.isInitial??!t;x&&(d.push(""),d.push(f?.fromCommit?"Initial commit":"No commits yet"),u=!0);let b=null;p&&(b=t?' (use "git restore --staged <file>..." to unstage)':' (use "git rm --cached <file>..." to unstage)');let k=a.some(O=>O.status==="deleted")?' (use "git add/rm <file>..." to update what will be committed)':' (use "git add <file>..." to update what will be committed)',C=!1;if(s.length>0){u&&d.push(""),d.push("Changes to be committed:"),b&&d.push(b);for(let O of s)d.push(` ${pa(O.status,O.path,O.displayPath)}`);d.push(""),C=!0}if(i.length>0){!C&&u&&d.push(""),d.push("Unmerged paths:"),p&&(t?d.push(' (use "git restore --staged <file>..." to unstage)'):d.push(' (use "git rm --cached <file>..." to unstage)')),i.some(E=>E.status==="deleted by us"||E.status==="deleted by them"||E.status==="both deleted")?d.push(' (use "git add/rm <file>..." as appropriate to mark resolution)'):d.push(' (use "git add <file>..." to mark resolution)');for(let E of i)d.push(` ${ul(E.status,E.path)}`);d.push(""),C=!0}if(a.length>0){!C&&u&&d.push(""),d.push("Changes not staged for commit:"),d.push(k),d.push(' (use "git restore <file>..." to discard changes in working directory)');for(let O of a)d.push(` ${pa(O.status,O.path)}`);d.push(""),C=!0}if(c.length>0){!C&&u&&d.push(""),d.push("Untracked files:"),d.push(' (use "git add <file>..." to include in what will be committed)');for(let O of c)d.push(` ${O}`);d.push(""),C=!0}let P=s.length>0||!!h&&i.length===0;return!C&&u&&(f?.noWarn||P)&&d.push(""),!P&&!f?.noWarn&&(!C&&u&&a.length===0&&i.length===0&&c.length===0&&d.push(""),a.length>0||i.length>0?d.push('no changes added to commit (use "git add" and/or "git commit -a")'):c.length>0?d.push('nothing added to commit but untracked files present (use "git add" to track)'):x?d.push('nothing to commit (create/copy files and use "git add" to track)'):d.push("nothing to commit, working tree clean")),`${d.join(`
102
- `)}
103
- `}async function fo(e,t,n,r){let o=new Set(r?.map(m=>m.path)),s=null;t&&(s=(await M(e,t)).tree);let a=await se(e,s),i=new Map(xe(n).map(m=>[m.path,m])),c=[];for(let[m,h]of i){if(o.has(m))continue;let p=a.get(m);p?p.hash!==h.hash&&c.push({path:m,status:"modified",oldHash:p.hash,newHash:h.hash,oldMode:p.mode,newMode:h.mode.toString(8).padStart(6,"0")}):c.push({path:m,status:"added",newHash:h.hash,newMode:h.mode.toString(8).padStart(6,"0")})}for(let[m,h]of a)o.has(m)||i.has(m)||c.push({path:m,status:"deleted",oldHash:h.hash,oldMode:h.mode});let{remaining:f,renames:d}=await Ye(e,c),u={added:"new file",deleted:"deleted",modified:"modified"},l=[];for(let m of f){let h=u[m.status];h&&l.push({path:m.path,status:h})}for(let m of d)l.push({path:m.newPath,status:"renamed",displayPath:`${m.oldPath} -> ${m.newPath}`});return l.sort((m,h)=>he(m.path,h.path))}function lo(e){let t=new Map;for(let r of e.entries)if(r.stage>0){let o=t.get(r.path);o||(o=new Set,t.set(r.path,o)),o.add(r.stage)}let n=[];for(let[r,o]of t){let s,a=o.has(1),i=o.has(2),c=o.has(3);i&&c?s=a?"both modified":"both added":a&&!i&&!c?s="both deleted":a&&c?s="deleted by us":a&&i?s="deleted by them":i&&!a&&!c?s="added by us":c&&!a&&!i?s="added by them":s="unmerged",n.push({path:r,status:s})}return n.sort((r,o)=>he(r.path,o.path))}function uo(e,t){if(e.length===0)return[];let n=new Set;for(let o of t){let s=o.indexOf("/");for(;s!==-1;)n.add(o.slice(0,s+1)),s=o.indexOf("/",s+1)}let r=new Set;for(let o of e){let s=o.split("/");if(s.length===1){r.add(o);continue}let a=!1;for(let i=1;i<s.length;i++){let c=`${s.slice(0,i).join("/")}/`;if(!n.has(c)){r.add(c),a=!0;break}}a||r.add(o)}return[...r].sort()}function pa(e,t,n){return`${e}:`.padEnd(12)+(n??t)}function ul(e,t){return`${e}:`.padEnd(17)+t}async function Ut(e,t,n){let r=t[`branch "${n}"`];if(!r?.remote||!r?.merge)return null;let o=r.remote,s=r.merge,a=s.replace(/^refs\/heads\//,`refs/remotes/${o}/`),i=`${o}/${s.replace(/^refs\/heads\//,"")}`,c=await F(e,a);if(!c)return{upstream:i,ahead:0,behind:0,gone:!0};let f=await F(e,`refs/heads/${n}`);if(!f)return null;if(f===c)return{upstream:i,ahead:0,behind:0,gone:!1};let{ahead:d,behind:u}=await ua(e,f,c);return{upstream:i,ahead:d,behind:u,gone:!1}}function ga(e,t){if(t){if(e.gone)return`[${e.upstream}: gone]`;if(e.ahead===0&&e.behind===0)return`[${e.upstream}]`;let r=[];return e.ahead>0&&r.push(`ahead ${e.ahead}`),e.behind>0&&r.push(`behind ${e.behind}`),`[${e.upstream}: ${r.join(", ")}]`}if(e.gone)return"[gone]";if(e.ahead===0&&e.behind===0)return"";let n=[];return e.ahead>0&&n.push(`ahead ${e.ahead}`),e.behind>0&&n.push(`behind ${e.behind}`),`[${n.join(", ")}]`}function yn(e,t){if(e.gone)return`Your branch is based on '${e.upstream}', but the upstream is gone.
95
+ `}async function es(e,t,n){let r=await j(e,t),o=await j(e,n),s=K(t),a=K(n),i=`Updating ${s}..${a}
96
+ `;if(e.workTree){let f=await U(e),d=await Fi(e,r.tree,o.tree,f);if(!d.success){let u=d.errorOutput;return{stdout:i+u.stdout,stderr:u.stderr,exitCode:u.exitCode}}await re(e,{version:2,entries:d.newEntries}),await be(e,d.worktreeOps)}await Xt(e,n);let c=await an(e,r.tree,o.tree);return{stdout:`${i}Fast-forward
97
+ ${c}`,stderr:"",exitCode:0}}async function qe(e,t){let n=H(e.gitDir,t);return await e.fs.exists(n)?e.fs.readFile(n):null}async function Ue(e,t,n){await e.fs.writeFile(H(e.gitDir,t),n)}async function et(e,t){let n=H(e.gitDir,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function ar(e){await ae(e,"MERGE_HEAD"),await ae(e,"ORIG_HEAD"),await et(e,"MERGE_MSG"),await et(e,"MERGE_MODE")}async function kt(e){await ae(e,"CHERRY_PICK_HEAD"),await ae(e,"ORIG_HEAD"),await et(e,"MERGE_MSG")}async function wt(e){await ae(e,"REVERT_HEAD"),await ae(e,"ORIG_HEAD"),await et(e,"MERGE_MSG")}async function yn(e){for(let t of["CHERRY_PICK_HEAD","REVERT_HEAD","MERGE_HEAD","ORIG_HEAD"])await ae(e,t);await et(e,"MERGE_MSG"),await et(e,"MERGE_MODE")}var co="DETACH_POINT";async function ca(e,t){await e.fs.writeFile(H(e.gitDir,co),t)}async function tt(e){let t=H(e.gitDir,co);await e.fs.exists(t)&&await e.fs.rm(t)}async function cr(e){let t=H(e.gitDir,co);return await e.fs.exists(t)?(await e.fs.readFile(t))?.trim()??null:null}function Gn(e){return H(e.gitDir,"rebase-merge")}async function bt(e){return e.fs.exists(Gn(e))}async function nt(e){let t=Gn(e);if(!await e.fs.exists(t))return null;let n=await e.fs.readFile(H(t,"head-name")),r=await e.fs.readFile(H(t,"orig-head")),o=await e.fs.readFile(H(t,"onto")),s=Number.parseInt(await e.fs.readFile(H(t,"msgnum")),10),a=Number.parseInt(await e.fs.readFile(H(t,"end")),10),i=await e.fs.exists(H(t,"git-rebase-todo"))?H(t,"git-rebase-todo"):H(t,"todo"),c=fa(await e.fs.readFile(i)),f=await e.fs.exists(H(t,"done"))?await e.fs.readFile(H(t,"done")):"",d=fa(f);return{headName:n.trim(),origHead:r.trim(),onto:o.trim(),todo:c,done:d,msgnum:s,end:a}}async function fo(e,t){let n=Gn(e);await e.fs.mkdir(n,{recursive:!0}),await e.fs.writeFile(H(n,"head-name"),`${t.headName}
98
+ `),await e.fs.writeFile(H(n,"orig-head"),`${t.origHead}
99
+ `),await e.fs.writeFile(H(n,"onto"),`${t.onto}
100
+ `),await e.fs.writeFile(H(n,"msgnum"),`${String(t.msgnum)}
101
+ `),await e.fs.writeFile(H(n,"end"),`${String(t.end)}
102
+ `),await e.fs.writeFile(H(n,"git-rebase-todo"),ns(t.todo)),await e.fs.writeFile(H(n,"done"),ns(t.done)),await e.fs.writeFile(H(n,"interactive"),"")}async function ua(e){let t=Gn(e),n=await nt(e);if(!n)throw new Error("No rebase in progress");let r=n.todo.shift();r&&n.done.push(r),n.msgnum=n.done.length,await e.fs.writeFile(H(t,"msgnum"),`${String(n.msgnum)}
103
+ `),await e.fs.writeFile(H(t,"git-rebase-todo"),ns(n.todo)),await e.fs.writeFile(H(t,"done"),ns(n.done))}async function lo(e){let t=Gn(e);await e.fs.exists(t)&&await e.fs.rm(t,{recursive:!0})}async function rs(e,t,n){let r=Gn(e),o=`@${n.timestamp} ${n.timezone}`;await e.fs.writeFile(H(r,"author-script"),`GIT_AUTHOR_NAME='${n.name}'
104
+ GIT_AUTHOR_EMAIL='${n.email}'
105
+ GIT_AUTHOR_DATE='${o}'
106
+ `),await e.fs.writeFile(H(r,"stopped-sha"),`${t}
107
+ `)}function fa(e){let t=[];for(let n of e.split(`
108
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^pick\s+([0-9a-f]+)\s+(.*)/);if(o?.[1]&&o[2]){let s=o[2].startsWith("# ")?o[2].slice(2):o[2];t.push({hash:o[1],subject:s})}}return t}function ns(e){return e.length===0?"":`${e.map(t=>`pick ${t.hash} # ${t.subject}`).join(`
109
+ `)}
110
+ `}async function ma(e,t,n){let r=new Map,[o,s]=await Promise.all([da(e,t,r),da(e,n,r)]),a=new Set;for(let c of s)o.has(c)||a.add(c);let i=new Set;for(let c of o)s.has(c)||i.add(c);return{right:await la(e,r,n,a),left:await la(e,r,t,i)}}async function da(e,t,n){let r=new Set,o=[t],s=0;for(;s<o.length;){let a=o[s++];if(r.has(a))continue;r.add(a);let i=await ts(e,a,n);for(let c of i.commit.parents)r.has(c)||o.push(c)}return r}async function la(e,t,n,r){if(r.size===0)return[];let o=new Map;for(let f of r)o.set(f,0);for(let f of r){let d=await ts(e,f,t);for(let u of d.commit.parents)r.has(u)&&o.set(u,(o.get(u)??0)+1)}let s=[];for(let f of r)o.get(f)===0&&s.push(await ts(e,f,t));s.sort((f,d)=>f.commit.committer.timestamp-d.commit.committer.timestamp);let a=s.map(f=>f.hash),i=[],c=new Set;for(;a.length>0;){let f=a.pop();if(!f||c.has(f))continue;c.add(f);let d=await ts(e,f,t);d.commit.parents.length<=1&&i.push(d);for(let u of d.commit.parents)if(r.has(u)&&!c.has(u)){let l=(o.get(u)??0)-1;o.set(u,l),l<=0&&a.push(u)}}return i.reverse(),i}async function ts(e,t,n){let r=n.get(t);if(r)return r;let o=await fe(e,t);if(o.type!=="commit")throw new Error(`Expected commit object, got ${o.type}`);let s={hash:t,commit:Rt(o.content)};return n.set(t,s),s}var Nn=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(t){this.heap.push({entry:t,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:t}=this;if(t.length===0)return;let n=t[0],r=t.pop();return t.length>0&&(t[0]=r,this.siftDown(0)),n.entry}higher(t,n){let r=t.entry.commit.committer.timestamp,o=n.entry.commit.committer.timestamp;return r>o||r===o&&t.epoch<n.epoch}siftUp(t){let{heap:n}=this;for(;t>0;){let r=t-1>>1;if(!this.higher(n[t],n[r]))break;[n[r],n[t]]=[n[t],n[r]],t=r}}siftDown(t){let{heap:n}=this,r=n.length;for(;;){let o=t,s=2*t+1,a=2*t+2;if(s<r&&this.higher(n[s],n[o])&&(o=s),a<r&&this.higher(n[a],n[o])&&(o=a),o===t)break;[n[t],n[o]]=[n[o],n[t]],t=o}}};async function*En(e,t,n){let r=await ul(e,n?.exclude),o=new Set(r),s=new Nn,a=Array.isArray(t)?t:[t];for(let i of a)o.has(i)||s.push(await ss(e,i));for(;s.size>0;){let i=s.pop();if(!o.has(i.hash)){o.add(i.hash),yield i;for(let c of i.commit.parents)o.has(c)||s.push(await ss(e,c))}}}async function ha(e,t,n){if(t===n)return{ahead:0,behind:0};let r=new Set;for await(let i of En(e,t))r.add(i.hash);let o=new Set;for await(let i of En(e,n))o.add(i.hash);let s=0;for(let i of r)o.has(i)||s++;let a=0;for(let i of o)r.has(i)||a++;return{ahead:s,behind:a}}async function pa(e,t,n){let r=n?.maxCount??25,o=await le(e,"refs"),s=[];for(let d of o)try{s.push(await Ie(e,d.hash))}catch{}n?.targetHash&&s.push(n.targetHash);let a=new Set;if(s.length>0)for await(let d of En(e,s))a.add(d.hash);if(a.has(t))return[];let i=[],c=new Set,f=new Nn;for(f.push(await ss(e,t));f.size>0&&i.length<r;){let d=f.pop();if(!c.has(d.hash)&&(c.add(d.hash),!a.has(d.hash))){i.push({hash:d.hash,subject:ue(d.commit.message)});for(let u of d.commit.parents)c.has(u)||f.push(await ss(e,u))}}return i}async function ul(e,t){if(!t||t.length===0)return new Set;let n=new Set;for await(let r of En(e,t))n.add(r.hash);return n}async function ss(e,t){return{hash:t,commit:await j(e,t)}}async function Be(e,t){let n=await J(e),r=await X(e),o,s=!1;n&&n.type==="symbolic"?o=de(n.target):(s=!0,o="HEAD detached");let a=t?.index??await U(e),i=mo(a),c=t?.compareHash!==void 0?t.compareHash:r,f=t?.compareHash!==void 0?!t.compareHash:!r,d=await uo(e,c,a,i),u=await ut(e,a),l=[],m=[];for(let g of u)g.status==="untracked"?m.push(g.path):l.push({path:g.path,status:g.status});l.sort((g,w)=>he(g.path,w.path));let h=new Set(a.entries.map(g=>g.path)),p=ho(m,h);return ml(e,r,s,o,a,d,l,i,p,{fromCommit:t?.fromCommit,noWarn:t?.noWarn,isInitial:f})}function ga(e,t){if(t.done.length>0){let n=t.done.length;e.push(`Last command${n===1?"":"s"} done (${n} command${n===1?"":"s"} done):`);for(let r of t.done.slice(-2))e.push(` pick ${K(r.hash)} # ${r.subject}`);n>2&&e.push(" (see more in file .git/rebase-merge/done)")}if(t.todo.length>0){let n=t.todo.length;e.push(`Next command${n===1?"":"s"} to do (${n} remaining command${n===1?"":"s"}):`);for(let r of t.todo.slice(0,2))e.push(` pick ${K(r.hash)} # ${r.subject}`);e.push(' (use "git rebase --edit-todo" to view and edit)')}else e.push("No commands remaining.")}async function ml(e,t,n,r,o,s,a,i,c,f){let d=[],u=!1,l=await F(e,"CHERRY_PICK_HEAD"),m=await F(e,"REVERT_HEAD"),h=await F(e,"MERGE_HEAD"),p=!l&&!h,w=await bt(e)?await nt(e):null;if(n&&w){let O=K(w.onto);d.push(`interactive rebase in progress; onto ${O}`)}else if(n){let O=await cr(e);if(O){let y=t===O?"at":"from";d.push(`HEAD detached ${y} ${K(O)}`)}else d.push("Not currently on any branch.")}else d.push(`On branch ${r}`);if(!n&&!w){let O=await ce(e),y=await Bt(e,O,r);if(y){let I=xn(y,{abbreviated:f?.fromCommit});for(let A of I.trimEnd().split(`
111
+ `))d.push(A);u=!0}}if(u&&(w||l||m||h)&&d.push(""),w&&h)ga(d,w),d.push(""),i.length>0?(d.push("You have unmerged paths."),d.push(' (fix conflicts and run "git commit")'),d.push(' (use "git merge --abort" to abort the merge)')):(d.push("All conflicts fixed but you are still merging."),d.push(' (use "git commit" to conclude merge)')),u=!0;else if(w){let O=lt(o),y=await e.fs.exists(H(e.gitDir,"MERGE_MSG"));ga(d,w);let A=w.headName==="detached HEAD"?null:de(w.headName),L=K(w.onto),D=A?` branch '${A}' on '${L}'`:"";if(O)d.push(`You are currently rebasing${D}.`),d.push(' (fix conflicts and then run "git rebase --continue")'),d.push(' (use "git rebase --skip" to skip this patch)'),d.push(' (use "git rebase --abort" to check out the original branch)');else if(y)d.push(`You are currently rebasing${D}.`),d.push(' (all conflicts fixed: run "git rebase --continue")');else{let z=D?`You are currently editing a commit while rebasing${D}.`:"You are currently editing a commit during a rebase.";d.push(z),d.push(' (use "git commit --amend" to amend the current commit)'),d.push(' (use "git rebase --continue" once you are satisfied with your changes)')}u=!0}else l?(d.push(`You are currently cherry-picking commit ${K(l)}.`),i.length>0?d.push(' (fix conflicts and run "git cherry-pick --continue")'):d.push(' (all conflicts fixed: run "git cherry-pick --continue")'),d.push(' (use "git cherry-pick --skip" to skip this patch)'),d.push(' (use "git cherry-pick --abort" to cancel the cherry-pick operation)'),u=!0):m?(d.push(`You are currently reverting commit ${K(m)}.`),i.length>0?d.push(' (fix conflicts and run "git revert --continue")'):d.push(' (all conflicts fixed: run "git revert --continue")'),d.push(' (use "git revert --skip" to skip this patch)'),d.push(' (use "git revert --abort" to cancel the revert operation)'),u=!0):h&&(i.length>0?(d.push("You have unmerged paths."),d.push(' (fix conflicts and run "git commit")'),d.push(' (use "git merge --abort" to abort the merge)')):(d.push("All conflicts fixed but you are still merging."),d.push(' (use "git commit" to conclude merge)')),u=!0);let x=f?.isInitial??!t;x&&(d.push(""),d.push(f?.fromCommit?"Initial commit":"No commits yet"),u=!0);let b=null;p&&(b=t?' (use "git restore --staged <file>..." to unstage)':' (use "git rm --cached <file>..." to unstage)');let k=a.some(O=>O.status==="deleted")?' (use "git add/rm <file>..." to update what will be committed)':' (use "git add <file>..." to update what will be committed)',P=!1;if(s.length>0){u&&d.push(""),d.push("Changes to be committed:"),b&&d.push(b);for(let O of s)d.push(` ${wa(O.status,O.path,O.displayPath)}`);d.push(""),P=!0}if(i.length>0){!P&&u&&d.push(""),d.push("Unmerged paths:"),p&&(t?d.push(' (use "git restore --staged <file>..." to unstage)'):d.push(' (use "git rm --cached <file>..." to unstage)')),i.some(y=>y.status==="deleted by us"||y.status==="deleted by them"||y.status==="both deleted")?d.push(' (use "git add/rm <file>..." as appropriate to mark resolution)'):d.push(' (use "git add <file>..." to mark resolution)');for(let y of i)d.push(` ${hl(y.status,y.path)}`);d.push(""),P=!0}if(a.length>0){!P&&u&&d.push(""),d.push("Changes not staged for commit:"),d.push(k),d.push(' (use "git restore <file>..." to discard changes in working directory)');for(let O of a)d.push(` ${wa(O.status,O.path)}`);d.push(""),P=!0}if(c.length>0){!P&&u&&d.push(""),d.push("Untracked files:"),d.push(' (use "git add <file>..." to include in what will be committed)');for(let O of c)d.push(` ${O}`);d.push(""),P=!0}let C=s.length>0||!!h&&i.length===0;return!P&&u&&(f?.noWarn||C)&&d.push(""),!C&&!f?.noWarn&&(!P&&u&&a.length===0&&i.length===0&&c.length===0&&d.push(""),a.length>0||i.length>0?d.push('no changes added to commit (use "git add" and/or "git commit -a")'):c.length>0?d.push('nothing added to commit but untracked files present (use "git add" to track)'):x?d.push('nothing to commit (create/copy files and use "git add" to track)'):d.push("nothing to commit, working tree clean")),`${d.join(`
112
+ `)}
113
+ `}async function uo(e,t,n,r){let o=new Set(r?.map(m=>m.path)),s=null;t&&(s=(await j(e,t)).tree);let a=await se(e,s),i=new Map(xe(n).map(m=>[m.path,m])),c=[];for(let[m,h]of i){if(o.has(m))continue;let p=a.get(m);p?p.hash!==h.hash&&c.push({path:m,status:"modified",oldHash:p.hash,newHash:h.hash,oldMode:p.mode,newMode:h.mode.toString(8).padStart(6,"0")}):c.push({path:m,status:"added",newHash:h.hash,newMode:h.mode.toString(8).padStart(6,"0")})}for(let[m,h]of a)o.has(m)||i.has(m)||c.push({path:m,status:"deleted",oldHash:h.hash,oldMode:h.mode});let{remaining:f,renames:d}=await Ye(e,c),u={added:"new file",deleted:"deleted",modified:"modified"},l=[];for(let m of f){let h=u[m.status];h&&l.push({path:m.path,status:h})}for(let m of d)l.push({path:m.newPath,status:"renamed",displayPath:`${m.oldPath} -> ${m.newPath}`});return l.sort((m,h)=>he(m.path,h.path))}function mo(e){let t=new Map;for(let r of e.entries)if(r.stage>0){let o=t.get(r.path);o||(o=new Set,t.set(r.path,o)),o.add(r.stage)}let n=[];for(let[r,o]of t){let s,a=o.has(1),i=o.has(2),c=o.has(3);i&&c?s=a?"both modified":"both added":a&&!i&&!c?s="both deleted":a&&c?s="deleted by us":a&&i?s="deleted by them":i&&!a&&!c?s="added by us":c&&!a&&!i?s="added by them":s="unmerged",n.push({path:r,status:s})}return n.sort((r,o)=>he(r.path,o.path))}function ho(e,t){if(e.length===0)return[];let n=new Set;for(let o of t){let s=o.indexOf("/");for(;s!==-1;)n.add(o.slice(0,s+1)),s=o.indexOf("/",s+1)}let r=new Set;for(let o of e){let s=o.split("/");if(s.length===1){r.add(o);continue}let a=!1;for(let i=1;i<s.length;i++){let c=`${s.slice(0,i).join("/")}/`;if(!n.has(c)){r.add(c),a=!0;break}}a||r.add(o)}return[...r].sort()}function wa(e,t,n){return`${e}:`.padEnd(12)+(n??t)}function hl(e,t){return`${e}:`.padEnd(17)+t}async function Bt(e,t,n){let r=t[`branch "${n}"`];if(!r?.remote||!r?.merge)return null;let o=r.remote,s=r.merge,a=s.replace(/^refs\/heads\//,`refs/remotes/${o}/`),i=`${o}/${s.replace(/^refs\/heads\//,"")}`,c=await F(e,a);if(!c)return{upstream:i,ahead:0,behind:0,gone:!0};let f=await F(e,`refs/heads/${n}`);if(!f)return null;if(f===c)return{upstream:i,ahead:0,behind:0,gone:!1};let{ahead:d,behind:u}=await ha(e,f,c);return{upstream:i,ahead:d,behind:u,gone:!1}}function ba(e,t){if(t){if(e.gone)return`[${e.upstream}: gone]`;if(e.ahead===0&&e.behind===0)return`[${e.upstream}]`;let r=[];return e.ahead>0&&r.push(`ahead ${e.ahead}`),e.behind>0&&r.push(`behind ${e.behind}`),`[${e.upstream}: ${r.join(", ")}]`}if(e.gone)return"[gone]";if(e.ahead===0&&e.behind===0)return"";let n=[];return e.ahead>0&&n.push(`ahead ${e.ahead}`),e.behind>0&&n.push(`behind ${e.behind}`),`[${n.join(", ")}]`}function xn(e,t){if(e.gone)return`Your branch is based on '${e.upstream}', but the upstream is gone.
104
114
  (use "git branch --unset-upstream" to fixup)
105
115
  `;if(e.ahead===0&&e.behind===0)return`Your branch is up to date with '${e.upstream}'.
106
116
  `;if(e.ahead>0&&e.behind===0){let r=e.ahead===1?"commit":"commits";return`Your branch is ahead of '${e.upstream}' by ${e.ahead} ${r}.
@@ -110,40 +120,40 @@ ${c}`,stderr:"",exitCode:0}}async function qe(e,t){let n=v(e.gitDir,t);return aw
110
120
  `}let n=`Your branch and '${e.upstream}' have diverged,
111
121
  and have ${e.ahead} and ${e.behind} different commits each, respectively.
112
122
  `;return t?.abbreviated?n:n+` (use "git pull" if you want to integrate the remote branch with yours)
113
- `}function wa(e,t){e.command("branch",{description:"List, create, or delete branches",args:[W.string().name("name").describe("Branch name").optional(),W.string().name("newName").describe("New branch name (for -m) or start-point (for create)").optional()],options:{delete:A().alias("d").describe("Delete a branch"),forceDelete:A().alias("D").describe("Force delete a branch"),move:A().alias("m").describe("Rename a branch"),forceMove:A().alias("M").describe("Force rename a branch"),remotes:A().alias("r").describe("List remote-tracking branches"),all:A().alias("a").describe("List all branches"),setUpstreamTo:te.string().alias("u").describe("Set upstream tracking branch"),verbose:A().alias("v").count().describe("Show hash and subject")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await J(s),i=a?.type==="symbolic"?de(a.target):null,c=!!n.forceMove;if(n.move||c){let w,x;if(n.newName)w=n.name,x=n.newName;else if(n.name){if(!i)return T("not on any branch");w=i,x=n.name}else return T("branch name required");let b=`refs/heads/${w}`,y=`refs/heads/${x}`,k=await F(s,b);if(!k)return T(`no branch named '${w}'`);if(await gt(s)&&(await nt(s))?.headName===b)return T(`branch ${b} is being rebased at ${s.workTree}`);let C=await F(s,y);if(C&&!c)return T(`a branch named '${x}' already exists`);C&&await ie(s,y);let P=await Me(s,b);await Y(s,y,k),await ie(s,b),w===i&&await $e(s,"HEAD",y),P.length>0&&await Xt(s,y,P);let O=`Branch: renamed ${b} to ${y}`;if(await ee(s,r.env,y,k,k,O),w===i){let H=await Ot(s,r.env);await Te(s,"HEAD",{oldHash:k,newHash:Z,...H,message:O}),await Te(s,"HEAD",{oldHash:Z,newHash:k,...H,message:O})}let E=await ae(s),I=`branch "${w}"`;return E[I]&&(E[`branch "${x}"`]=E[I],delete E[I],await Ge(s,E)),{stdout:"",stderr:"",exitCode:0}}let f=n.forceDelete;if(n.delete||f){if(!n.name)return T("branch name required");let w=n.name===i;if(!w&&!i&&await gt(s)&&(await nt(s))?.headName===`refs/heads/${n.name}`&&(w=!0),w)return j(`error: cannot delete branch '${n.name}' used by worktree at '${s.workTree}'
114
- `);let x=`refs/heads/${n.name}`,b=await F(s,x);if(!b)return j(`error: branch '${n.name}' not found
115
- `);let y="";if(!f){let k=await X(s),P=(await ae(s))[`branch "${n.name}"`],O=P?.remote,E=P?.merge,I=null,H=null;if(O&&E&&(I=E.replace(/^refs\/heads\//,`refs/remotes/${O}/`),H=await F(s,I)),H&&I){if(!(b===H||await _t(s,b,H))){let D=k!=null&&(b===k||await _t(s,b,k))?`warning: not deleting branch '${n.name}' that is not yet merged to
123
+ `}function ya(e,t){e.command("branch",{description:"List, create, or delete branches",args:[W.string().name("name").describe("Branch name").optional(),W.string().name("newName").describe("New branch name (for -m) or start-point (for create)").optional()],options:{delete:v().alias("d").describe("Delete a branch"),forceDelete:v().alias("D").describe("Force delete a branch"),move:v().alias("m").describe("Rename a branch"),forceMove:v().alias("M").describe("Force rename a branch"),remotes:v().alias("r").describe("List remote-tracking branches"),all:v().alias("a").describe("List all branches"),setUpstreamTo:te.string().alias("u").describe("Set upstream tracking branch"),verbose:v().alias("v").count().describe("Show hash and subject")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await J(s),i=a?.type==="symbolic"?de(a.target):null,c=!!n.forceMove;if(n.move||c){let w,x;if(n.newName)w=n.name,x=n.newName;else if(n.name){if(!i)return T("not on any branch");w=i,x=n.name}else return T("branch name required");let b=`refs/heads/${w}`,E=`refs/heads/${x}`,k=await F(s,b);if(!k)return T(`no branch named '${w}'`);if(await bt(s)&&(await nt(s))?.headName===b)return T(`branch ${b} is being rebased at ${s.workTree}`);let P=await F(s,E);if(P&&!c)return T(`a branch named '${x}' already exists`);P&&await ae(s,E);let C=await Me(s,b);await Y(s,E,k),await ae(s,b),w===i&&await $e(s,"HEAD",E),C.length>0&&await Zt(s,E,C);let O=`Branch: renamed ${b} to ${E}`;if(await ee(s,r.env,E,k,k,O),w===i){let A=await Ot(s,r.env);await Te(s,"HEAD",{oldHash:k,newHash:Z,...A,message:O}),await Te(s,"HEAD",{oldHash:Z,newHash:k,...A,message:O})}let y=await ce(s),I=`branch "${w}"`;return y[I]&&(y[`branch "${x}"`]=y[I],delete y[I],await Ge(s,y)),{stdout:"",stderr:"",exitCode:0}}let f=n.forceDelete;if(n.delete||f){if(!n.name)return T("branch name required");let w=n.name===i;if(!w&&!i&&await bt(s)&&(await nt(s))?.headName===`refs/heads/${n.name}`&&(w=!0),w)return G(`error: cannot delete branch '${n.name}' used by worktree at '${s.workTree}'
124
+ `);let x=`refs/heads/${n.name}`,b=await F(s,x);if(!b)return G(`error: branch '${n.name}' not found
125
+ `);let E="";if(!f){let k=await X(s),C=(await ce(s))[`branch "${n.name}"`],O=C?.remote,y=C?.merge,I=null,A=null;if(O&&y&&(I=y.replace(/^refs\/heads\//,`refs/remotes/${O}/`),A=await F(s,I)),A&&I){if(!(b===A||await Ft(s,b,A))){let M=k!=null&&(b===k||await Ft(s,b,k))?`warning: not deleting branch '${n.name}' that is not yet merged to
116
126
  '${I}', even though it is merged to HEAD
117
- `:"";return j(`${D}error: the branch '${n.name}' is not fully merged
127
+ `:"";return G(`${M}error: the branch '${n.name}' is not fully merged
118
128
  hint: If you are sure you want to delete it, run 'git branch -D ${n.name}'
119
129
  hint: Disable this message with "git config set advice.forceDeleteBranch false"
120
- `)}k!=null&&(b===k||await _t(s,b,k))||(y=`warning: deleting branch '${n.name}' that has been merged to
130
+ `)}k!=null&&(b===k||await Ft(s,b,k))||(E=`warning: deleting branch '${n.name}' that has been merged to
121
131
  '${I}', but not yet merged to HEAD
122
- `)}else if(k&&b!==k&&!await _t(s,b,k))return j(`error: the branch '${n.name}' is not fully merged
132
+ `)}else if(k&&b!==k&&!await Ft(s,b,k))return G(`error: the branch '${n.name}' is not fully merged
123
133
  hint: If you are sure you want to delete it, run 'git branch -D ${n.name}'
124
134
  hint: Disable this message with "git config set advice.forceDeleteBranch false"
125
- `)}return await ie(s,x),{stdout:`Deleted branch ${n.name} (was ${K(b)}).
126
- `,stderr:y,exitCode:0}}if(n.setUpstreamTo){let w=n.setUpstreamTo,x=n.name||i;if(!x)return T("could not set upstream of HEAD when it does not point to any branch.");if(!await F(s,`refs/heads/${x}`))return T(`branch '${x}' does not exist`);let y=w.indexOf("/");if(y<0)return T(`the requested upstream branch '${w}' does not exist`);let k=w.slice(0,y),C=w.slice(y+1);if(!await F(s,`refs/remotes/${w}`))return T(`the requested upstream branch '${w}' does not exist`);let O=await ae(s),E=`branch "${x}"`;return O[E]||(O[E]={}),O[E].remote=k,O[E].merge=`refs/heads/${C}`,await Ge(s,O),{stdout:"",stderr:`branch '${x}' set up to track '${w}'.
127
- `,exitCode:0}}if(n.name&&!n.remotes&&!n.all){let w=n.newName,x;if(w){let C=await ye(s,w,`not a valid object name: '${w}'`);if(S(C))return C;x=C.hash}else if(x=await X(s),!x)return T("Not a valid object name: 'HEAD'.");let b=`refs/heads/${n.name}`;if(await F(s,b))return T(`a branch named '${n.name}' already exists`);await Y(s,b,x);let k=w??"HEAD";return await ee(s,r.env,b,null,x,`branch: Created from ${k}`),{stdout:"",stderr:"",exitCode:0}}let d=n.verbose||0,u=!n.remotes||n.all,l=n.remotes||n.all,m=[];if(u&&!i){let w=await X(s);if(w){let x=await gt(s),b;if(x){let y=await nt(s);if(y?.headName){let k=de(y.headName);if(k==="detached HEAD"){let C=await or(s);b=`(no branch, rebasing detached HEAD ${C?K(C):"(null)"})`}else b=`(no branch, rebasing ${k})`}else b="(no branch)"}else{let y=await or(s);y?b=`(HEAD detached ${w===y?"at":"from"} ${K(y)})`:b="(no branch)"}m.push({displayName:b,hash:w,isCurrent:!0,branchName:null})}}if(u){let w=await le(s,"refs/heads");for(let x of w){let b=de(x.name);m.push({displayName:b,hash:x.hash,isCurrent:b===i,branchName:b})}}if(l){let w=await le(s,"refs/remotes");for(let x of w){let b=x.name.replace("refs/remotes/","");m.push({displayName:n.all?`remotes/${b}`:b,hash:x.hash,isCurrent:!1,branchName:null})}}if(m.length===0)return{stdout:"",stderr:"",exitCode:0};if(d===0)return{stdout:`${m.map(x=>x.isCurrent?`* ${x.displayName}`:` ${x.displayName}`).join(`
135
+ `)}return await ae(s,x),{stdout:`Deleted branch ${n.name} (was ${K(b)}).
136
+ `,stderr:E,exitCode:0}}if(n.setUpstreamTo){let w=n.setUpstreamTo,x=n.name||i;if(!x)return T("could not set upstream of HEAD when it does not point to any branch.");if(!await F(s,`refs/heads/${x}`))return T(`branch '${x}' does not exist`);let E=w.indexOf("/");if(E<0)return T(`the requested upstream branch '${w}' does not exist`);let k=w.slice(0,E),P=w.slice(E+1);if(!await F(s,`refs/remotes/${w}`))return T(`the requested upstream branch '${w}' does not exist`);let O=await ce(s),y=`branch "${x}"`;return O[y]||(O[y]={}),O[y].remote=k,O[y].merge=`refs/heads/${P}`,await Ge(s,O),{stdout:"",stderr:`branch '${x}' set up to track '${w}'.
137
+ `,exitCode:0}}if(n.name&&!n.remotes&&!n.all){let w=n.newName,x;if(w){let P=await ye(s,w,`not a valid object name: '${w}'`);if(S(P))return P;x=P.hash}else if(x=await X(s),!x)return T("Not a valid object name: 'HEAD'.");let b=`refs/heads/${n.name}`;if(await F(s,b))return T(`a branch named '${n.name}' already exists`);await Y(s,b,x);let k=w??"HEAD";return await ee(s,r.env,b,null,x,`branch: Created from ${k}`),{stdout:"",stderr:"",exitCode:0}}let d=n.verbose||0,u=!n.remotes||n.all,l=n.remotes||n.all,m=[];if(u&&!i){let w=await X(s);if(w){let x=await bt(s),b;if(x){let E=await nt(s);if(E?.headName){let k=de(E.headName);if(k==="detached HEAD"){let P=await cr(s);b=`(no branch, rebasing detached HEAD ${P?K(P):"(null)"})`}else b=`(no branch, rebasing ${k})`}else b="(no branch)"}else{let E=await cr(s);E?b=`(HEAD detached ${w===E?"at":"from"} ${K(E)})`:b="(no branch)"}m.push({displayName:b,hash:w,isCurrent:!0,branchName:null})}}if(u){let w=await le(s,"refs/heads");for(let x of w){let b=de(x.name);m.push({displayName:b,hash:x.hash,isCurrent:b===i,branchName:b})}}if(l){let w=await le(s,"refs/remotes");for(let x of w){let b=x.name.replace("refs/remotes/","");m.push({displayName:n.all?`remotes/${b}`:b,hash:x.hash,isCurrent:!1,branchName:null})}}if(m.length===0)return{stdout:"",stderr:"",exitCode:0};if(d===0)return{stdout:`${m.map(x=>x.isCurrent?`* ${x.displayName}`:` ${x.displayName}`).join(`
128
138
  `)}
129
- `,stderr:"",exitCode:0};let h=d>=1?await ae(s):null,p=Math.max(...m.map(w=>w.displayName.length)),g=[];for(let w of m){let x=w.isCurrent?"* ":" ",b=w.displayName.padEnd(p),y=K(w.hash),k="";try{let P=await M(s,w.hash);k=ue(P.message)}catch{}let C="";if(h&&w.branchName){let P=await Ut(s,h,w.branchName);if(P){let O=ga(P,d>=2);O&&(C=` ${O}`)}}g.push(`${x}${b} ${y}${C} ${k}`)}return{stdout:`${g.join(`
139
+ `,stderr:"",exitCode:0};let h=d>=1?await ce(s):null,p=Math.max(...m.map(w=>w.displayName.length)),g=[];for(let w of m){let x=w.isCurrent?"* ":" ",b=w.displayName.padEnd(p),E=K(w.hash),k="";try{let C=await j(s,w.hash);k=ue(C.message)}catch{}let P="";if(h&&w.branchName){let C=await Bt(s,h,w.branchName);if(C){let O=ba(C,d>=2);O&&(P=` ${O}`)}}g.push(`${x}${b} ${E}${P} ${k}`)}return{stdout:`${g.join(`
130
140
  `)}
131
- `,stderr:"",exitCode:0}}})}async function ns(e){let t=await Me(e,"HEAD");for(let n=t.length-1;n>=0;n--){let r=t[n];if(!r)continue;let o=r.message.match(/^checkout: moving from (.+) to (.+)$/);if(o?.[1]){let s=o[1],a=`refs/heads/${s}`,i=await F(e,a);if(i)return{name:s,refName:a,hash:i}}}return null}async function Bt(e){let t="";return await F(e,"CHERRY_PICK_HEAD")&&(t=`warning: cancelling a cherry picking in progress
141
+ `,stderr:"",exitCode:0}}})}async function os(e){let t=await Me(e,"HEAD");for(let n=t.length-1;n>=0;n--){let r=t[n];if(!r)continue;let o=r.message.match(/^checkout: moving from (.+) to (.+)$/);if(o?.[1]){let s=o[1],a=`refs/heads/${s}`,i=await F(e,a);if(i)return{name:s,refName:a,hash:i}}}return null}async function Wt(e){let t="";return await F(e,"CHERRY_PICK_HEAD")&&(t=`warning: cancelling a cherry picking in progress
132
142
  `),await F(e,"REVERT_HEAD")&&(t+=`warning: cancelling a revert in progress
133
- `),await wn(e),t}function ml(e){let t=new Set,n=[];for(let r of e.entries)r.stage>0&&!t.has(r.path)&&(t.add(r.path),n.push(`${r.path}: needs merge`));return n.sort(),n.length>0?`${n.join(`
134
- `)}
135
- `:""}function on(e){return e.entries.some(t=>t.stage>0)?{stdout:ml(e),stderr:`error: you need to resolve your current index first
136
- `,exitCode:1}:null}async function rs(e,t,n,r){if(!e.workTree)return T("this operation must be run in a work tree");if(r)return hl(e,t,n,r);let o=await U(e);if(t.some(Ve)){let a=t.map(c=>Oe(c,n)),i=o.entries.filter(c=>c.stage===0&&me(a,c.path));if(i.length===0)return j(`error: pathspec '${t[0]}' did not match any file(s) known to git
137
- `);for(let c of i)await ve(e,{path:c.path,hash:c.hash,mode:c.mode})}else for(let a of t){let i=Dt(o,a);if(!i)return o.entries.some(f=>f.path===a&&f.stage>0)?j(`error: path '${a}' is unmerged
138
- `):j(`error: pathspec '${a}' did not match any file(s) known to git
139
- `);await ve(e,{path:i.path,hash:i.hash,mode:i.mode})}return{stdout:"",stderr:"",exitCode:0}}async function hl(e,t,n,r){let o=await se(e,r),s=await U(e),a=t.some(Ve),i=[];if(a){let c=t.map(f=>Oe(f,n));for(let[f]of o)me(c,f)&&i.push(f);if(i.length===0)return j(`error: pathspec '${t[0]}' did not match any file(s) known to git
140
- `)}else for(let c of t){if(!o.get(c))return j(`error: pathspec '${c}' did not match any file(s) known to git
141
- `);i.push(c)}for(let c of i){let f=o.get(c);f&&(await ve(e,{path:f.path,hash:f.hash,mode:f.mode}),s=Xe(s,{path:f.path,hash:f.hash,mode:parseInt(f.mode,8),stage:0,stat:pe()}))}return await re(e,s),{stdout:"",stderr:"",exitCode:0}}async function ss(e,t,n,r,o){if(!e.workTree)return T("this operation must be run in a work tree");let s=o?.deleteOnMissing??!1,a=await U(e);if(t.some(Ve)){let c=t.map(d=>Oe(d,n)),f=new Set;for(let d of a.entries)me(c,d.path)&&f.add(d.path);if(f.size===0)return j(`error: pathspec '${t[0]}' did not match any file(s) known to git
142
- `);for(let d of f){let u=a.entries.find(h=>h.path===d&&h.stage===r),l=!u&&a.entries.find(h=>h.path===d&&h.stage===0),m=u||l;if(m)await ve(e,{path:m.path,hash:m.hash,mode:m.mode});else if(s){let h=v(e.workTree,d);await e.fs.exists(h)&&await e.fs.rm(h)}}}else for(let c of t)if(a.entries.some(d=>d.path===c&&d.stage>0)){let d=a.entries.find(u=>u.path===c&&u.stage===r);if(d)await ve(e,{path:d.path,hash:d.hash,mode:d.mode});else if(s){let u=v(e.workTree,c);await e.fs.exists(u)&&await e.fs.rm(u)}else return j(`error: path '${c}' does not have ${r===2?"our":"their"} version
143
- `)}else{let d=Dt(a,c);if(!d)return j(`error: pathspec '${c}' did not match any file(s) known to git
144
- `);await ve(e,{path:d.path,hash:d.hash,mode:d.mode})}return{stdout:"",stderr:"",exitCode:0}}async function En(e,t,n){if(!e.workTree)return"";let r=await He(e,t),o=new Map;for(let c of r)o.set(c.path,c.hash);let s=new Map;for(let c of n.entries)c.stage===0&&s.set(c.path,c.hash);let a=new Map;for(let[c]of s){let f=v(e.workTree,c);if(await e.fs.exists(f)){if((await e.fs.stat(f)).isFile){let u=await e.fs.readFileBuffer(f);a.set(c,await st("blob",u))}}else a.set(c,null)}let i=[];for(let[c,f]of o){let d=s.get(c);if(d===void 0){i.push(`D ${c}`);continue}let u=a.get(c);u===null?i.push(`D ${c}`):(d!==f||u!==void 0&&u!==f)&&i.push(`M ${c}`)}for(let[c]of s)o.has(c)||a.get(c)!=null&&i.push(`A ${c}`);return i.length===0?"":(i.sort((c,f)=>{let d=c.slice(2),u=f.slice(2);return d<u?-1:d>u?1:0}),`${i.join(`
145
- `)}
146
- `)}var ba=5;function pl(e){let t=e.length,n=t===1?"commit":"commits",r=t===1?"it":"them",o=t>ba?ba-1:t,a=e.slice(0,o).map(c=>` ${K(c.hash)} ${c.subject}`),i=t-o;return i>0&&a.push(` ... and ${i} more.`),`Warning: you are leaving ${t} ${n} behind, not connected to
143
+ `),await yn(e),t}function pl(e){let t=new Set,n=[];for(let r of e.entries)r.stage>0&&!t.has(r.path)&&(t.add(r.path),n.push(`${r.path}: needs merge`));return n.sort(),n.length>0?`${n.join(`
144
+ `)}
145
+ `:""}function cn(e){return e.entries.some(t=>t.stage>0)?{stdout:pl(e),stderr:`error: you need to resolve your current index first
146
+ `,exitCode:1}:null}async function is(e,t,n,r){if(!e.workTree)return T("this operation must be run in a work tree");if(r)return gl(e,t,n,r);let o=await U(e);if(t.some(Ve)){let a=t.map(c=>Oe(c,n)),i=o.entries.filter(c=>c.stage===0&&me(a,c.path));if(i.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
147
+ `);for(let c of i)await ve(e,{path:c.path,hash:c.hash,mode:c.mode})}else for(let a of t){let i=Dt(o,a);if(!i)return o.entries.some(f=>f.path===a&&f.stage>0)?G(`error: path '${a}' is unmerged
148
+ `):G(`error: pathspec '${a}' did not match any file(s) known to git
149
+ `);await ve(e,{path:i.path,hash:i.hash,mode:i.mode})}return{stdout:"",stderr:"",exitCode:0}}async function gl(e,t,n,r){let o=await se(e,r),s=await U(e),a=t.some(Ve),i=[];if(a){let c=t.map(f=>Oe(f,n));for(let[f]of o)me(c,f)&&i.push(f);if(i.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
150
+ `)}else for(let c of t){if(!o.get(c))return G(`error: pathspec '${c}' did not match any file(s) known to git
151
+ `);i.push(c)}for(let c of i){let f=o.get(c);f&&(await ve(e,{path:f.path,hash:f.hash,mode:f.mode}),s=Xe(s,{path:f.path,hash:f.hash,mode:parseInt(f.mode,8),stage:0,stat:pe()}))}return await re(e,s),{stdout:"",stderr:"",exitCode:0}}async function as(e,t,n,r,o){if(!e.workTree)return T("this operation must be run in a work tree");let s=o?.deleteOnMissing??!1,a=await U(e);if(t.some(Ve)){let c=t.map(d=>Oe(d,n)),f=new Set;for(let d of a.entries)me(c,d.path)&&f.add(d.path);if(f.size===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
152
+ `);for(let d of f){let u=a.entries.find(h=>h.path===d&&h.stage===r),l=!u&&a.entries.find(h=>h.path===d&&h.stage===0),m=u||l;if(m)await ve(e,{path:m.path,hash:m.hash,mode:m.mode});else if(s){let h=H(e.workTree,d);await e.fs.exists(h)&&await e.fs.rm(h)}}}else for(let c of t)if(a.entries.some(d=>d.path===c&&d.stage>0)){let d=a.entries.find(u=>u.path===c&&u.stage===r);if(d)await ve(e,{path:d.path,hash:d.hash,mode:d.mode});else if(s){let u=H(e.workTree,c);await e.fs.exists(u)&&await e.fs.rm(u)}else return G(`error: path '${c}' does not have ${r===2?"our":"their"} version
153
+ `)}else{let d=Dt(a,c);if(!d)return G(`error: pathspec '${c}' did not match any file(s) known to git
154
+ `);await ve(e,{path:d.path,hash:d.hash,mode:d.mode})}return{stdout:"",stderr:"",exitCode:0}}async function kn(e,t,n){if(!e.workTree)return"";let r=await He(e,t),o=new Map;for(let c of r)o.set(c.path,c.hash);let s=new Map;for(let c of n.entries)c.stage===0&&s.set(c.path,c.hash);let a=new Map;for(let[c]of s){let f=H(e.workTree,c);if(await e.fs.exists(f)){if((await e.fs.stat(f)).isFile){let u=await e.fs.readFileBuffer(f);a.set(c,await st("blob",u))}}else a.set(c,null)}let i=[];for(let[c,f]of o){let d=s.get(c);if(d===void 0){i.push(`D ${c}`);continue}let u=a.get(c);u===null?i.push(`D ${c}`):(d!==f||u!==void 0&&u!==f)&&i.push(`M ${c}`)}for(let[c]of s)o.has(c)||a.get(c)!=null&&i.push(`A ${c}`);return i.length===0?"":(i.sort((c,f)=>{let d=c.slice(2),u=f.slice(2);return d<u?-1:d>u?1:0}),`${i.join(`
155
+ `)}
156
+ `)}var Ea=5;function wl(e){let t=e.length,n=t===1?"commit":"commits",r=t===1?"it":"them",o=t>Ea?Ea-1:t,a=e.slice(0,o).map(c=>` ${K(c.hash)} ${c.subject}`),i=t-o;return i>0&&a.push(` ... and ${i} more.`),`Warning: you are leaving ${t} ${n} behind, not connected to
147
157
  any of your branches:
148
158
 
149
159
  ${a.join(`
@@ -154,10 +164,10 @@ to do so with:
154
164
 
155
165
  git branch <new-branch-name> ${K(e[0].hash)}
156
166
 
157
- `}async function mo(e,t){let n=await M(e,t);return`Previous HEAD position was ${K(t)} ${ue(n.message)}
158
- `}async function os(e,t,n){let r=await ma(e,t,{targetHash:n});return r.length>0?pl(r):t!==n?mo(e,t):""}async function is(e,t,n,r,o,s){let a=await J(e);if(a?.type==="symbolic"&&a.target===n)return{stdout:"",stderr:`Already on '${t}'
159
- `,exitCode:0};let i=await U(e),c=on(i);if(c)return c;let f=await X(e),u=(await M(e,r)).tree,l=null;if(f&&(l=(await M(e,f)).tree),l!==u){let b=await Qt(e,l,u,i);if(!b.success)return b.errorOutput??j("error: checkout would overwrite local changes");i={version:2,entries:b.newEntries},await re(e,i),await be(e,b.worktreeOps)}let m="";a?.type==="direct"&&f&&(m=await os(e,f,r));let h=a?.type==="symbolic"?a.target.replace(/^refs\/heads\//,""):f??Z;await $e(e,"HEAD",n),await tt(e);let p=await Bt(e);await ee(e,o,"HEAD",f,r,`checkout: moving from ${h} to ${t}`),await s?.hooks?.emitPost("post-checkout",{prevHead:f,newHead:r,isBranchCheckout:!0});let g=await En(e,u,i),w=await ae(e),x=await Ut(e,w,t);return x&&(g+=yn(x)),{stdout:g,stderr:`${m}Switched to branch '${t}'
160
- ${p}`,exitCode:0}}async function as(e,t,n,r,o){let s=await U(e),a=on(s);if(a)return a;let i=await X(e),c=await M(e,t),f=c.tree,d=null;if(i&&(d=(await M(e,i)).tree),d!==f){let b=await Qt(e,d,f,s);if(!b.success)return b.errorOutput??j("error: checkout would overwrite local changes");s={version:2,entries:b.newEntries},await re(e,s),await be(e,b.worktreeOps)}let u=await J(e),l=u?.type==="direct"&&i===t;if(await Y(e,"HEAD",t),!l){await ia(e,t);let b=u?.type==="symbolic"?u.target.replace(/^refs\/heads\//,""):i??Z;await ee(e,n,"HEAD",i,t,`checkout: moving from ${b} to ${t}`)}let m=await Bt(e);await r?.hooks?.emitPost("post-checkout",{prevHead:i,newHead:t,isBranchCheckout:!1});let h=K(t),p=ue(c.message),g=u?.type==="direct",w="";return g&&i&&i!==t&&(w+=await os(e,i,t)),g||!o?.detachAdviceTarget?w+=`HEAD is now at ${h} ${p}
167
+ `}async function po(e,t){let n=await j(e,t);return`Previous HEAD position was ${K(t)} ${ue(n.message)}
168
+ `}async function cs(e,t,n){let r=await pa(e,t,{targetHash:n});return r.length>0?wl(r):t!==n?po(e,t):""}async function fs(e,t,n,r,o,s){let a=await J(e);if(a?.type==="symbolic"&&a.target===n)return{stdout:"",stderr:`Already on '${t}'
169
+ `,exitCode:0};let i=await U(e),c=cn(i);if(c)return c;let f=await X(e),u=(await j(e,r)).tree,l=null;if(f&&(l=(await j(e,f)).tree),l!==u){let b=await en(e,l,u,i);if(!b.success)return b.errorOutput??G("error: checkout would overwrite local changes");i={version:2,entries:b.newEntries},await re(e,i),await be(e,b.worktreeOps)}let m="";a?.type==="direct"&&f&&(m=await cs(e,f,r));let h=a?.type==="symbolic"?a.target.replace(/^refs\/heads\//,""):f??Z;await $e(e,"HEAD",n),await tt(e);let p=await Wt(e);await ee(e,o,"HEAD",f,r,`checkout: moving from ${h} to ${t}`),await s?.hooks?.emitPost("post-checkout",{prevHead:f,newHead:r,isBranchCheckout:!0});let g=await kn(e,u,i),w=await ce(e),x=await Bt(e,w,t);return x&&(g+=xn(x)),{stdout:g,stderr:`${m}Switched to branch '${t}'
170
+ ${p}`,exitCode:0}}async function ds(e,t,n,r,o){let s=await U(e),a=cn(s);if(a)return a;let i=await X(e),c=await j(e,t),f=c.tree,d=null;if(i&&(d=(await j(e,i)).tree),d!==f){let b=await en(e,d,f,s);if(!b.success)return b.errorOutput??G("error: checkout would overwrite local changes");s={version:2,entries:b.newEntries},await re(e,s),await be(e,b.worktreeOps)}let u=await J(e),l=u?.type==="direct"&&i===t;if(await Y(e,"HEAD",t),!l){await ca(e,t);let b=u?.type==="symbolic"?u.target.replace(/^refs\/heads\//,""):i??Z;await ee(e,n,"HEAD",i,t,`checkout: moving from ${b} to ${t}`)}let m=await Wt(e);await r?.hooks?.emitPost("post-checkout",{prevHead:i,newHead:t,isBranchCheckout:!1});let h=K(t),p=ue(c.message),g=u?.type==="direct",w="";return g&&i&&i!==t&&(w+=await cs(e,i,t)),g||!o?.detachAdviceTarget?w+=`HEAD is now at ${h} ${p}
161
171
  `:w=`Note: switching to '${o.detachAdviceTarget}'.
162
172
 
163
173
  You are in 'detached HEAD' state. You can look around, make experimental
@@ -176,18 +186,18 @@ Or undo this operation with:
176
186
  Turn off this advice by setting config variable advice.detachedHead to false
177
187
 
178
188
  HEAD is now at ${h} ${p}
179
- `,w+=m,{stdout:await En(e,f,s),stderr:w,exitCode:0}}function ya(e,t){e.command("checkout",{description:"Switch branches or restore working tree files",args:[W.string().name("target").describe("Branch name or path to checkout").optional()],options:{branch:A().alias("b").describe("Create and switch to a new branch"),forceBranch:A().alias("B").describe("Create/reset and switch to a new branch"),orphan:A().describe("Create a new orphan branch"),ours:A().describe("Checkout our version for unmerged files"),theirs:A().describe("Checkout their version for unmerged files")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n.target;if(n.ours&&n.theirs)return T("--ours and --theirs are incompatible");if(o.passthrough.length>0){let u=Ze(a,r.cwd),l=o.passthrough,m=null;if(i){if(n.ours||n.theirs)return T("cannot specify both a revision and --ours/--theirs");let h=await ye(a,i,`invalid reference: ${i}`);if(S(h))return h;m=h.commit.tree}return n.ours||n.theirs?ss(a,l,u,n.theirs?3:2):rs(a,l,u,m)}if(n.orphan)return n.branch?T("--orphan and -b are incompatible"):n.ours||n.theirs?T("--orphan and --ours/--theirs are incompatible"):i?wl(a,i,r.env,t):T("you must specify a branch to checkout");if(!i)return T("you must specify a branch to checkout");if(n.branch||n.forceBranch)return bl(a,i,r.env,t,!!n.forceBranch);if(i==="-")return gl(a,r.env,t);let c=`refs/heads/${i}`,f=await F(a,c);if(f)return Ea(a,i,c,f,r.env,t);let d=await je(a,i);if(d){let u=await Re(a,d);return yl(a,i,u,r.env,t)}if(a.workTree){let u=await U(a),l=Dt(u,i);if(l)return await ve(a,{path:l.path,hash:l.hash,mode:l.mode}),{stdout:"",stderr:"",exitCode:0}}return j(`error: pathspec '${i}' did not match any file(s) known to git
180
- `)}})}async function gl(e,t,n){let r=await ns(e);return r?Ea(e,r.name,r.refName,r.hash,t,n):T("no previous branch")}async function wl(e,t,n,r){let o=`refs/heads/${t}`;if(await F(e,o))return T(`a branch named '${t}' already exists`);let a=await U(e),i=on(a);if(i)return i;let c=await X(e),f=null;c&&(f=(await M(e,c)).tree),await $e(e,"HEAD",o),await tt(e);let d=await Bt(e);await r?.hooks?.emitPost("post-checkout",{prevHead:c,newHead:Z,isBranchCheckout:!0});let u="";return f&&(u=await En(e,f,a)),{stdout:u,stderr:`Switched to a new branch '${t}'
181
- ${d}`,exitCode:0}}async function bl(e,t,n,r,o=!1){if(r?.hooks){let p=await r.hooks.emitPre("pre-checkout",{target:t,mode:"create-branch"});if(p)return{stdout:"",stderr:p.message??"",exitCode:1}}let s=await J(e),a=await X(e),i=`refs/heads/${t}`,c=await F(e,i);if(c&&!o)return T(`a branch named '${t}' already exists`);if(o){let p=await U(e),g=on(p);if(g)return g}a&&await Y(e,i,a),await $e(e,"HEAD",i),await tt(e);let f=await Bt(e),d=s?.type==="symbolic"?s.target.replace(/^refs\/heads\//,""):a??Z;a&&await ee(e,n,i,c,a,c?"branch: Reset to HEAD":"branch: Created from HEAD"),await ee(e,n,"HEAD",a,a??Z,`checkout: moving from ${d} to ${t}`),await r?.hooks?.emitPost("post-checkout",{prevHead:a,newHead:a??Z,isBranchCheckout:!0});let u="";if(o&&a){let p=await U(e),g=await M(e,a);u=await En(e,g.tree,p)}let l=await ae(e),m=await Ut(e,l,t);m&&(u+=yn(m));let h=c?`Switched to and reset branch '${t}'
189
+ `,w+=m,{stdout:await kn(e,f,s),stderr:w,exitCode:0}}function xa(e,t){e.command("checkout",{description:"Switch branches or restore working tree files",args:[W.string().name("target").describe("Branch name or path to checkout").optional()],options:{branch:v().alias("b").describe("Create and switch to a new branch"),forceBranch:v().alias("B").describe("Create/reset and switch to a new branch"),orphan:v().describe("Create a new orphan branch"),ours:v().describe("Checkout our version for unmerged files"),theirs:v().describe("Checkout their version for unmerged files")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n.target;if(n.ours&&n.theirs)return T("--ours and --theirs are incompatible");if(o.passthrough.length>0){let u=Ze(a,r.cwd),l=o.passthrough,m=null;if(i){if(n.ours||n.theirs)return T("cannot specify both a revision and --ours/--theirs");let h=await ye(a,i,`invalid reference: ${i}`);if(S(h))return h;m=h.commit.tree}return n.ours||n.theirs?as(a,l,u,n.theirs?3:2):is(a,l,u,m)}if(n.orphan)return n.branch?T("--orphan and -b are incompatible"):n.ours||n.theirs?T("--orphan and --ours/--theirs are incompatible"):i?yl(a,i,r.env,t):T("you must specify a branch to checkout");if(!i)return T("you must specify a branch to checkout");if(n.branch||n.forceBranch)return El(a,i,r.env,t,!!n.forceBranch);if(i==="-")return bl(a,r.env,t);let c=`refs/heads/${i}`,f=await F(a,c);if(f)return ka(a,i,c,f,r.env,t);let d=await je(a,i);if(d){let u=await Ie(a,d);return xl(a,i,u,r.env,t)}if(a.workTree){let u=await U(a),l=Dt(u,i);if(l)return await ve(a,{path:l.path,hash:l.hash,mode:l.mode}),{stdout:"",stderr:"",exitCode:0}}return G(`error: pathspec '${i}' did not match any file(s) known to git
190
+ `)}})}async function bl(e,t,n){let r=await os(e);return r?ka(e,r.name,r.refName,r.hash,t,n):T("no previous branch")}async function yl(e,t,n,r){let o=`refs/heads/${t}`;if(await F(e,o))return T(`a branch named '${t}' already exists`);let a=await U(e),i=cn(a);if(i)return i;let c=await X(e),f=null;c&&(f=(await j(e,c)).tree),await $e(e,"HEAD",o),await tt(e);let d=await Wt(e);await r?.hooks?.emitPost("post-checkout",{prevHead:c,newHead:Z,isBranchCheckout:!0});let u="";return f&&(u=await kn(e,f,a)),{stdout:u,stderr:`Switched to a new branch '${t}'
191
+ ${d}`,exitCode:0}}async function El(e,t,n,r,o=!1){if(r?.hooks){let p=await r.hooks.emitPre("pre-checkout",{target:t,mode:"create-branch"});if(p)return{stdout:"",stderr:p.message??"",exitCode:1}}let s=await J(e),a=await X(e),i=`refs/heads/${t}`,c=await F(e,i);if(c&&!o)return T(`a branch named '${t}' already exists`);if(o){let p=await U(e),g=cn(p);if(g)return g}a&&await Y(e,i,a),await $e(e,"HEAD",i),await tt(e);let f=await Wt(e),d=s?.type==="symbolic"?s.target.replace(/^refs\/heads\//,""):a??Z;a&&await ee(e,n,i,c,a,c?"branch: Reset to HEAD":"branch: Created from HEAD"),await ee(e,n,"HEAD",a,a??Z,`checkout: moving from ${d} to ${t}`),await r?.hooks?.emitPost("post-checkout",{prevHead:a,newHead:a??Z,isBranchCheckout:!0});let u="";if(o&&a){let p=await U(e),g=await j(e,a);u=await kn(e,g.tree,p)}let l=await ce(e),m=await Bt(e,l,t);m&&(u+=xn(m));let h=c?`Switched to and reset branch '${t}'
182
192
  `:`Switched to a new branch '${t}'
183
- `;return{stdout:u,stderr:`${h}${f}`,exitCode:0}}async function Ea(e,t,n,r,o,s){if(s?.hooks){let a=await s.hooks.emitPre("pre-checkout",{target:t,mode:"switch"});if(a)return{stdout:"",stderr:a.message??"",exitCode:1}}return is(e,t,n,r,o,s)}async function yl(e,t,n,r,o){if(o?.hooks){let s=await o.hooks.emitPre("pre-checkout",{target:t,mode:"detach"});if(s)return{stdout:"",stderr:s.message??"",exitCode:1}}return as(e,n,r,o,{detachAdviceTarget:t})}function ho(e,t){let n=e.length,r=t.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:o,changedNew:s}=no(e,t);return xa(o,e,s,t),xa(s,t,o,e),El(o,n,s,r)}function El(e,t,n,r){let o=[],s=0,a=0;for(;s<t||a<r;){for(;s<t&&a<r&&!e[s]&&!n[a];)s++,a++;if(s>=t&&a>=r)break;let i=s,c=a;for(;s<t&&e[s];)s++;for(;a<r&&n[a];)a++;(s>i||a>c)&&o.push({buffer1:[i,s-i],buffer2:[c,a-c]})}return o}function xa(e,t,n,r){let o=t.length,s=r.length,a=0,i=0;for(;i<o&&e[i];)i++;let c=0,f=0;for(;f<s&&n[f];)f++;for(;;){if(i===a){if(i>=o)break;for(a=i+1,i=a;i<o&&e[i];)i++;if(f>=s)break;for(c=f+1,f=c;f<s&&n[f];)f++;continue}let d,u,l;do{for(d=i-a,l=-1;a>0&&i>0&&t[a-1]===t[i-1];){for(e[--a]=1,e[--i]=0;a>0&&e[a-1];)a--;if(c===0)break;for(f=c-1,c=f;c>0&&n[c-1];)c--}for(u=i,f>c&&(l=i);i<o&&t[a]===t[i];){for(e[a++]=0,e[i++]=1;i<o&&e[i];)i++;if(f>=s)break;for(c=f+1,f=c;f<s&&n[f];)f++;f>c&&(l=i)}}while(d!==i-a);if(i!==u&&l!==-1)for(;f===c&&!(a<=0||t[a-1]!==t[i-1]);){for(e[--a]=1,e[--i]=0;a>0&&e[a-1];)a--;if(c===0)break;for(f=c-1,c=f;c>0&&n[c-1];)c--}if(i>=o)break;for(a=i+1,i=a;i<o&&e[i];)i++;if(f>=s)break;for(c=f+1,f=c;f<s&&n[f];)f++}}function xl(e,t,n){let r=[];for(let c of ho(t,e))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of ho(t,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 o=[],s=0;function a(c){c>s&&(o.push({stable:!0,buffer:"o",bufferStart:s,bufferLength:c-s,content:t.slice(s,c)}),s=c)}let i=0;for(;i<r.length;){let c=r[i++],f=c.oStart,d=c.oStart+c.oLength,u=[c];for(a(f);i<r.length;){let l=r[i];if(l.oStart>d)break;d=Math.max(d,l.oStart+l.oLength),u.push(l),i++}if(u.length===1){if(c.abLength>0){let l=c.ab==="a"?e:n;o.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:l.slice(c.abStart,c.abStart+c.abLength)})}}else{let l={a:{abMin:e.length,abMax:-1,oMin:t.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:t.length,oMax:-1}};for(let w of u){let x=w.oStart,b=x+w.oLength,y=w.abStart,k=y+w.abLength,C=l[w.ab];C.abMin=Math.min(y,C.abMin),C.abMax=Math.max(k,C.abMax),C.oMin=Math.min(x,C.oMin),C.oMax=Math.max(b,C.oMax)}let m=l.a.abMin+(f-l.a.oMin),h=l.a.abMax+(d-l.a.oMax),p=l.b.abMin+(f-l.b.oMin),g=l.b.abMax+(d-l.b.oMax);o.push({stable:!1,a:e.slice(m,h),o:t.slice(f,d),b:n.slice(p,g)})}s=d}return a(t.length),o}function kl(e,t,n,r){let o=r?.excludeFalseConflicts??!0,s=xl(e,t,n),a=[],i=[];function c(){i.length&&(a.push({type:"ok",lines:i}),i=[])}for(let f of s)f.stable?i.push(...f.content):o&&ka(f.a,f.b)?i.push(...f.a):(c(),a.push({type:"conflict",a:f.a,o:f.o,b:f.b}));return c(),Ol(Cl(a))}function ar(e,t,n,r){let o=r?.markerSize??7,s=`${"<".repeat(o)}${r?.a?` ${r.a}`:""}`,a="=".repeat(o),i=`${">".repeat(o)}${r?.b?` ${r.b}`:""}`,c=kl(e,t,n),f=!1,d=[];for(let u of c)u.type==="ok"?d.push(...u.lines):(f=!0,d.push(s,...u.a,a,...u.b,i));return{conflict:f,result:d}}function Cl(e){let t=[];for(let n of e)n.type==="ok"?t.push(n):t.push(...Pl(n));return t}function Pl(e){let{a:t,b:n}=e;if(t.length===0||n.length===0)return[e];if(ka(t,n))return[e];let r=ho(t,n);if(r.length===0)return[{type:"ok",lines:t}];let o=[],s=0;for(let i of r){let c=i.buffer1[0];c-s>0&&o.push({type:"ok",lines:t.slice(s,c)});let d=c+i.buffer1[1],u=i.buffer2[0]+i.buffer2[1];o.push({type:"conflict",a:t.slice(c,d),o:[],b:n.slice(i.buffer2[0],u)}),s=d}return t.length-s>0&&o.push({type:"ok",lines:t.slice(s)}),o.length===1&&o[0].type==="conflict"?[e]:o}function Ol(e){if(e.length<3)return e;let t=[e[0]];for(let n=1;n<e.length;n++){let r=t[t.length-1],o=e[n];if(r.type==="conflict"&&o.type==="ok"&&o.lines.length<=3&&n+1<e.length&&e[n+1].type==="conflict"){let s=e[n+1],a=r;a.a=[...r.a,...o.lines,...s.a],a.b=[...r.b,...o.lines,...s.b],a.o=[...r.o,...o.lines,...s.o],n++}else t.push(o)}return t}function xn(e,t,n,r){let o=ar(it(e),it(t),it(n),{a:r.a,b:r.b,markerSize:r.markerSize}),a=(o.result[o.result.length-1]??"").endsWith("\0"),i=o.result.map(po);return(i[i.length-1]??"").startsWith(">>>>>>>")||!a?`${i.join(`
193
+ `;return{stdout:u,stderr:`${h}${f}`,exitCode:0}}async function ka(e,t,n,r,o,s){if(s?.hooks){let a=await s.hooks.emitPre("pre-checkout",{target:t,mode:"switch"});if(a)return{stdout:"",stderr:a.message??"",exitCode:1}}return fs(e,t,n,r,o,s)}async function xl(e,t,n,r,o){if(o?.hooks){let s=await o.hooks.emitPre("pre-checkout",{target:t,mode:"detach"});if(s)return{stdout:"",stderr:s.message??"",exitCode:1}}return ds(e,n,r,o,{detachAdviceTarget:t})}function go(e,t){let n=e.length,r=t.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:o,changedNew:s}=oo(e,t);return Ca(o,e,s,t),Ca(s,t,o,e),kl(o,n,s,r)}function kl(e,t,n,r){let o=[],s=0,a=0;for(;s<t||a<r;){for(;s<t&&a<r&&!e[s]&&!n[a];)s++,a++;if(s>=t&&a>=r)break;let i=s,c=a;for(;s<t&&e[s];)s++;for(;a<r&&n[a];)a++;(s>i||a>c)&&o.push({buffer1:[i,s-i],buffer2:[c,a-c]})}return o}function Ca(e,t,n,r){let o=t.length,s=r.length,a=0,i=0;for(;i<o&&e[i];)i++;let c=0,f=0;for(;f<s&&n[f];)f++;for(;;){if(i===a){if(i>=o)break;for(a=i+1,i=a;i<o&&e[i];)i++;if(f>=s)break;for(c=f+1,f=c;f<s&&n[f];)f++;continue}let d,u,l;do{for(d=i-a,l=-1;a>0&&i>0&&t[a-1]===t[i-1];){for(e[--a]=1,e[--i]=0;a>0&&e[a-1];)a--;if(c===0)break;for(f=c-1,c=f;c>0&&n[c-1];)c--}for(u=i,f>c&&(l=i);i<o&&t[a]===t[i];){for(e[a++]=0,e[i++]=1;i<o&&e[i];)i++;if(f>=s)break;for(c=f+1,f=c;f<s&&n[f];)f++;f>c&&(l=i)}}while(d!==i-a);if(i!==u&&l!==-1)for(;f===c&&!(a<=0||t[a-1]!==t[i-1]);){for(e[--a]=1,e[--i]=0;a>0&&e[a-1];)a--;if(c===0)break;for(f=c-1,c=f;c>0&&n[c-1];)c--}if(i>=o)break;for(a=i+1,i=a;i<o&&e[i];)i++;if(f>=s)break;for(c=f+1,f=c;f<s&&n[f];)f++}}function Cl(e,t,n){let r=[];for(let c of go(t,e))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of go(t,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 o=[],s=0;function a(c){c>s&&(o.push({stable:!0,buffer:"o",bufferStart:s,bufferLength:c-s,content:t.slice(s,c)}),s=c)}let i=0;for(;i<r.length;){let c=r[i++],f=c.oStart,d=c.oStart+c.oLength,u=[c];for(a(f);i<r.length;){let l=r[i];if(l.oStart>d)break;d=Math.max(d,l.oStart+l.oLength),u.push(l),i++}if(u.length===1){if(c.abLength>0){let l=c.ab==="a"?e:n;o.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:l.slice(c.abStart,c.abStart+c.abLength)})}}else{let l={a:{abMin:e.length,abMax:-1,oMin:t.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:t.length,oMax:-1}};for(let w of u){let x=w.oStart,b=x+w.oLength,E=w.abStart,k=E+w.abLength,P=l[w.ab];P.abMin=Math.min(E,P.abMin),P.abMax=Math.max(k,P.abMax),P.oMin=Math.min(x,P.oMin),P.oMax=Math.max(b,P.oMax)}let m=l.a.abMin+(f-l.a.oMin),h=l.a.abMax+(d-l.a.oMax),p=l.b.abMin+(f-l.b.oMin),g=l.b.abMax+(d-l.b.oMax);o.push({stable:!1,a:e.slice(m,h),o:t.slice(f,d),b:n.slice(p,g)})}s=d}return a(t.length),o}function Pl(e,t,n,r){let o=r?.excludeFalseConflicts??!0,s=Cl(e,t,n),a=[],i=[];function c(){i.length&&(a.push({type:"ok",lines:i}),i=[])}for(let f of s)f.stable?i.push(...f.content):o&&Pa(f.a,f.b)?i.push(...f.a):(c(),a.push({type:"conflict",a:f.a,o:f.o,b:f.b}));return c(),Rl(Ol(a))}function fr(e,t,n,r){let o=r?.markerSize??7,s=`${"<".repeat(o)}${r?.a?` ${r.a}`:""}`,a="=".repeat(o),i=`${">".repeat(o)}${r?.b?` ${r.b}`:""}`,c=Pl(e,t,n),f=!1,d=[];for(let u of c)u.type==="ok"?d.push(...u.lines):(f=!0,d.push(s,...u.a,a,...u.b,i));return{conflict:f,result:d}}function Ol(e){let t=[];for(let n of e)n.type==="ok"?t.push(n):t.push(...Il(n));return t}function Il(e){let{a:t,b:n}=e;if(t.length===0||n.length===0)return[e];if(Pa(t,n))return[e];let r=go(t,n);if(r.length===0)return[{type:"ok",lines:t}];let o=[],s=0;for(let i of r){let c=i.buffer1[0];c-s>0&&o.push({type:"ok",lines:t.slice(s,c)});let d=c+i.buffer1[1],u=i.buffer2[0]+i.buffer2[1];o.push({type:"conflict",a:t.slice(c,d),o:[],b:n.slice(i.buffer2[0],u)}),s=d}return t.length-s>0&&o.push({type:"ok",lines:t.slice(s)}),o.length===1&&o[0].type==="conflict"?[e]:o}function Rl(e){if(e.length<3)return e;let t=[e[0]];for(let n=1;n<e.length;n++){let r=t[t.length-1],o=e[n];if(r.type==="conflict"&&o.type==="ok"&&o.lines.length<=3&&n+1<e.length&&e[n+1].type==="conflict"){let s=e[n+1],a=r;a.a=[...r.a,...o.lines,...s.a],a.b=[...r.b,...o.lines,...s.b],a.o=[...r.o,...o.lines,...s.o],n++}else t.push(o)}return t}function Cn(e,t,n,r){let o=fr(at(e),at(t),at(n),{a:r.a,b:r.b,markerSize:r.markerSize}),a=(o.result[o.result.length-1]??"").endsWith("\0"),i=o.result.map(wo);return(i[i.length-1]??"").startsWith(">>>>>>>")||!a?`${i.join(`
184
194
  `)}
185
195
  `:i.join(`
186
- `)}function it(e){if(e==="")return[];let t=e.split(`
187
- `);if(t[t.length-1]==="")t.pop();else{let n=t[t.length-1]??"";t[t.length-1]=`${n}\0`}return t}function po(e){return e.endsWith("\0")?e.slice(0,-1):e}function ka(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}var Ln=new TextDecoder,an=new TextEncoder,Ca={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function wt(e,t,n,r,o){let{paths:s,baseMap:a,oursMap:i,theirsMap:c}=await Il(e,t,n,r),f=await Tl(e,s,a,i,c,o);return Hl(e,s,o,f)}async function fr(e,t,n,r){let o=await ht(e,t,n),s=await M(e,t),a=await M(e,n);if(o.length===0)return{...await wt(e,null,s.tree,a.tree,r),baseTree:null};if(o.length===1){let f=await M(e,o[0]);return{...await wt(e,f.tree,s.tree,a.tree,r),baseTree:f.tree}}let i=await va(e,t,n,o,1);return{...await wt(e,i,s.tree,a.tree,r),baseTree:i}}async function Il(e,t,n,r){let o=await se(e,t),s=await se(e,n),a=await se(e,r),i=new Set;for(let f of o.keys())i.add(f);for(let f of s.keys())i.add(f);for(let f of a.keys())i.add(f);let c=new Map;for(let f of i){let d=o.get(f)??null,u=s.get(f)??null,l=a.get(f)??null,m=d?{hash:d.hash,mode:d.mode}:null,h=u?{hash:u.hash,mode:u.mode}:null,p=l?{hash:l.hash,mode:l.mode}:null,g=(d?1:0)|(u?2:0)|(l?4:0),w=d?.hash??null,x=u?.hash??null,b=l?.hash??null,y=0;w!==null&&w===x&&(y|=3),w!==null&&w===b&&(y|=5),x!==null&&x===b&&(y|=6);let k={path:f,stages:[m,h,p],pathnames:[f,f,f],filemask:g,matchMask:y,merged:{result:null,clean:!1},pathConflict:!1};if($l(k)){c.set(f,k);continue}c.set(f,k)}return{paths:c,baseMap:o,oursMap:s,theirsMap:a}}function $l(e){let[t,n,r]=e.stages,o=t?.hash??null,s=n?.hash??null,a=r?.hash??null;return s===o&&a===o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===a&&s!==null?(e.merged={result:{hash:s,mode:n.mode},clean:!0},!0):s===null&&a===null?(e.merged={result:null,clean:!0},!0):a===o&&s!==o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===o&&a!==o?(r?e.merged={result:{hash:a,mode:r.mode},clean:!0}:e.merged={result:null,clean:!0},!0):!1}async function Tl(e,t,n,r,o,s){let a={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},i=[],c=[];for(let[D,$]of n)r.has(D)||i.push({path:D,status:"deleted",oldHash:$.hash,oldMode:$.mode}),o.has(D)||c.push({path:D,status:"deleted",oldHash:$.hash,oldMode:$.mode});for(let[D,$]of r)n.has(D)||i.push({path:D,status:"added",newHash:$.hash,newMode:$.mode});for(let[D,$]of o)n.has(D)||c.push({path:D,status:"added",newHash:$.hash,newMode:$.mode});let f=await Ye(e,i),d=await Ye(e,c);if(f.renames.length===0&&d.renames.length===0)return a;let u=new Map,l=new Map;for(let D of f.renames)u.set(D.oldPath,D);for(let D of d.renames)l.set(D.oldPath,D);let m=new Set;for(let[D]of r)!n.has(D)&&o.has(D)&&m.add(D);let h=new Set,p=s?.a??"HEAD",g=s?.b??"theirs";function w(D,$,R=0){a.msgBuf.push({sortKey:D,subOrder:R,text:$})}for(let D of[...n.keys()].sort()){let $=u.get(D),R=l.get(D);if(!$&&!R)continue;let N=n.get(D);if(h.add(D),$&&R)if(h.add($.newPath),h.add(R.newPath),$.newPath===R.newPath){let q=r.get($.newPath),L=o.get(R.newPath);if(q.hash===L.hash)a.entries.push(rt($.newPath,q));else{let V=go(t,$.newPath);V.stages=[{hash:N.hash,mode:N.mode},{hash:q.hash,mode:q.mode},{hash:L.hash,mode:L.mode}],V.pathnames=[D,$.newPath,R.newPath],V.filemask=7,V.merged={result:null,clean:!1}}}else{let q=r.get($.newPath),L=o.get(R.newPath),V=await Aa(e,N,q,L,s);V.conflict&&w(D,`Auto-merging ${D}`,-1),a.conflicts.push({path:D,reason:"rename-rename",oursPath:$.newPath,theirsPath:R.newPath}),w(D,`CONFLICT (rename/rename): ${D} renamed to ${$.newPath} in ${p} and to ${R.newPath} in ${g}.`),a.entries.push(rt(D,N,1)),a.entries.push(We($.newPath,q.mode,V.hash,2)),a.entries.push(We(R.newPath,L.mode,V.hash,3)),a.worktreeBlobs.set($.newPath,{hash:V.hash,mode:q.mode}),a.worktreeBlobs.set(R.newPath,{hash:V.hash,mode:L.mode})}else if($){h.add($.newPath);let q=o.get(D),L=r.get($.newPath),V=m.has($.newPath);if(q)if(V)await Ta(e,a,$.newPath,D,N,L,q,r,o,!1,s);else if(q.hash===N.hash&&L.hash===N.hash)a.entries.push(rt($.newPath,L));else if(q.hash===N.hash)a.entries.push(rt($.newPath,L));else if(L.hash===N.hash)a.entries.push(We($.newPath,L.mode,q.hash));else{let oe=go(t,$.newPath);oe.stages=[{hash:N.hash,mode:N.mode},{hash:L.hash,mode:L.mode},{hash:q.hash,mode:q.mode}],oe.pathnames=[D,$.newPath,D],oe.filemask=7,oe.merged={result:null,clean:!1}}else{let oe=o.get($.newPath);if(a.conflicts.push({path:$.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:D}),w($.newPath,`CONFLICT (rename/delete): ${D} renamed to ${$.newPath} in ${p}, but deleted in ${g}.`),oe){a.conflicts.push({path:$.newPath,reason:"add-add"}),w($.newPath,`Auto-merging ${$.newPath}`,0),w($.newPath,`CONFLICT (add/add): Merge conflict in ${$.newPath}`,1),a.entries.push(rt($.newPath,L,2)),a.entries.push(rt($.newPath,oe,3));let Q=await cs(e,L.hash,oe.hash,L.mode,s);a.worktreeBlobs.set($.newPath,{hash:Q,mode:L.mode})}else a.entries.push(We($.newPath,N.mode,N.hash,1)),a.entries.push(rt($.newPath,L,2)),a.worktreeBlobs.set($.newPath,{hash:L.hash,mode:L.mode}),L.hash!==N.hash&&w($.newPath,`CONFLICT (modify/delete): ${$.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${$.newPath} left in tree.`,1)}}else if(R){h.add(R.newPath);let q=r.get(D),L=o.get(R.newPath),V=m.has(R.newPath);if(q)if(V)await Ta(e,a,R.newPath,D,N,q,L,r,o,!0,s);else if(q.hash===N.hash&&L.hash===N.hash)a.entries.push(rt(R.newPath,L));else if(q.hash===N.hash)a.entries.push(rt(R.newPath,L));else if(L.hash===N.hash)a.entries.push(We(R.newPath,L.mode,q.hash));else{let oe=go(t,R.newPath);oe.stages=[{hash:N.hash,mode:N.mode},{hash:q.hash,mode:q.mode},{hash:L.hash,mode:L.mode}],oe.pathnames=[D,D,R.newPath],oe.filemask=7,oe.merged={result:null,clean:!1}}else{let oe=r.get(R.newPath);if(a.conflicts.push({path:R.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:D}),w(R.newPath,`CONFLICT (rename/delete): ${D} renamed to ${R.newPath} in ${g}, but deleted in ${p}.`),oe){a.conflicts.push({path:R.newPath,reason:"add-add"}),w(R.newPath,`Auto-merging ${R.newPath}`,0),w(R.newPath,`CONFLICT (add/add): Merge conflict in ${R.newPath}`,1),a.entries.push(rt(R.newPath,oe,2)),a.entries.push(rt(R.newPath,L,3));let Q=await cs(e,oe.hash,L.hash,oe.mode,s);a.worktreeBlobs.set(R.newPath,{hash:Q,mode:oe.mode})}else a.entries.push(We(R.newPath,N.mode,N.hash,1)),a.entries.push(rt(R.newPath,L,3)),a.worktreeBlobs.set(R.newPath,{hash:L.hash,mode:L.mode}),L.hash!==N.hash&&w(R.newPath,`CONFLICT (modify/delete): ${R.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${R.newPath} left in tree.`,1)}}}let x=new Set(f.renames.map(D=>D.newPath)),b=new Set(d.renames.map(D=>D.newPath)),y=Pa(n,r),k=Pa(n,o),C=Oa(y,o,n),P=Oa(k,r,n),O=Ra(f.renames,C),E=Ra(d.renames,P),I=Ia(O),H=Ia(E);for(let D of[...I.keys()])H.has(D)&&(I.delete(D),H.delete(D));let _=new Set(I.keys()),G=new Set(H.keys());if(H.size>0)for(let D of i){if(D.status!=="added"||x.has(D.path))continue;let $=$a(D.path,H,_);if(!$)continue;if(t.has($)||n.has($)||r.has($)||o.has($)){if(r.has($)){w($,`CONFLICT (implicit dir rename): Existing file/dir at ${$} in the way of implicit directory rename(s) putting the following path(s) there: ${D.path}.`,1);continue}let q=r.get(D.path),L=o.get($)??n.get($);a.entries.push(We($,q.mode,q.hash,2)),L&&a.entries.push(We($,L.mode,L.hash,3)),a.worktreeBlobs.set($,{hash:q.hash,mode:q.mode}),a.conflicts.push({path:$,reason:"add-add"}),w($,`CONFLICT (file location): ${D.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${$}.`,1);let V=t.get(D.path);V&&(V.merged={result:null,clean:!0}),h.add(D.path);continue}let R=r.get(D.path);a.entries.push(We($,R.mode,R.hash,2)),a.worktreeBlobs.set($,{hash:R.hash,mode:R.mode}),a.conflicts.push({path:$,reason:"directory-rename"}),w($,`CONFLICT (file location): ${D.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${$}.`,1);let N=t.get(D.path);N&&(N.merged={result:null,clean:!0}),h.add(D.path)}if(I.size>0)for(let D of c){if(D.status!=="added"||b.has(D.path))continue;let $=$a(D.path,I,G);if(!$)continue;if(t.has($)||n.has($)||r.has($)||o.has($)){if(o.has($)){w($,`CONFLICT (implicit dir rename): Existing file/dir at ${$} in the way of implicit directory rename(s) putting the following path(s) there: ${D.path}.`,1);continue}let q=o.get(D.path),L=r.get($)??n.get($);L&&a.entries.push(We($,L.mode,L.hash,2)),a.entries.push(We($,q.mode,q.hash,3)),a.worktreeBlobs.set($,{hash:q.hash,mode:q.mode}),a.conflicts.push({path:$,reason:"add-add"}),w($,`CONFLICT (file location): ${D.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${$}.`,1);let V=t.get(D.path);V&&(V.merged={result:null,clean:!0}),h.add(D.path);continue}let R=o.get(D.path);a.entries.push(We($,R.mode,R.hash,3)),a.worktreeBlobs.set($,{hash:R.hash,mode:R.mode}),a.conflicts.push({path:$,reason:"directory-rename"}),w($,`CONFLICT (file location): ${D.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${$}.`,1);let N=t.get(D.path);N&&(N.merged={result:null,clean:!0}),h.add(D.path)}let z=new Set(a.entries.map(D=>D.path));for(let D of z){let $=t.get(D);$&&($.merged={result:null,clean:!0})}for(let D of h){if(z.has(D))continue;let $=t.get(D);if(!$||$.merged.clean)continue;$.filemask===7&&!$.pathConflict||($.merged={result:null,clean:!0})}return a}function Pa(e,t){let n=new Set;for(let s of e.keys()){let a=at(s);for(;a;)n.add(a),a=at(a)}let r=new Set;for(let s of t.keys()){let a=at(s);for(;a;)r.add(a),a=at(a)}let o=new Set;for(let s of n)r.has(s)||o.add(s);return o}function Oa(e,t,n){if(e.size===0)return e;let r=new Set;for(let o of t.keys()){if(n.has(o))continue;let s=at(o)??"";e.has(s)&&r.add(s)}for(let o of[...r]){let s=at(o);for(;s;)e.has(s)&&!r.has(s)&&r.add(s),s=at(s)}return r}function Ra(e,t){let n=new Map;for(let r of e){let o=at(r.oldPath),s=at(r.newPath),a=!0;for(;;){if(!a){let i=o.length+(o?1:0),c=s.length+(s?1:0),f=r.oldPath.slice(i,r.oldPath.indexOf("/",i)),d=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==d)break}if(t.has(o)){let i=n.get(o);i||(i=new Map,n.set(o,i)),i.set(s,(i.get(s)??0)+1)}if(a=!1,!o||!s)break;o=at(o),s=at(s)}}return n}function Ia(e){let t=new Map;for(let[n,r]of e){let o=0,s=0,a=null;for(let[i,c]of r)c===o?s=o:c>o&&(o=c,a=i);o>0&&s!==o&&a!==null&&t.set(n,a)}return t}function $a(e,t,n){let r=at(e);for(;r;){let s=t.get(r);if(s!==void 0){if(n.has(s))return null;let a=e.slice(r.length+1);return s?`${s}/${a}`:a}r=at(r)}let o=t.get("");return o!==void 0&&!n.has(o)?`${o}/${e}`:null}function at(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}async function Ta(e,t,n,r,o,s,a,i,c,f=!1,d){let u=f?i.get(n):c.get(n),l=f?a:s;if(u.hash===l.hash){t.entries.push(We(n,u.mode,u.hash)),t.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let h=await Aa(e,o,s,a,d,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(u.hash===h.hash)t.entries.push(We(n,u.mode,h.hash));else if(t.conflicts.push({path:n,reason:"add-add"}),t.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),t.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){t.entries.push(rt(n,u,2)),t.entries.push(We(n,a.mode,h.hash,3));let p=await cs(e,u.hash,h.hash,u.mode,d);t.worktreeBlobs.set(n,{hash:p,mode:u.mode})}else{t.entries.push(We(n,s.mode,h.hash,2)),t.entries.push(rt(n,u,3));let p=await cs(e,h.hash,u.hash,s.mode,d);t.worktreeBlobs.set(n,{hash:p,mode:s.mode})}}async function Aa(e,t,n,r,o,s,a){if(n.hash===t.hash)return{hash:r.hash,conflict:!1};if(r.hash===t.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(Lt(t.mode)||Lt(n.mode)||Lt(r.mode))return{hash:n.hash,conflict:!0};let i=await fe(e,t.hash),c=await fe(e,n.hash),f=await fe(e,r.hash);if(Pe(c)||Pe(f)||Pe(i))return{hash:n.hash,conflict:!0};let d=it(i),u=it(c),l=it(f),m=ar(u,d,l);if(!m.conflict)return{hash:await bo(e,m.result),conflict:!1};let h=o?.a??"HEAD",p=o?.b??"theirs",g=s?.oursPath?`${h}:${s.oursPath}`:h,w=s?.theirsPath?`${p}:${s.theirsPath}`:p,x=xn(c,i,f,{a:g,b:w,markerSize:a??7});return{hash:await we(e,"blob",an.encode(x)),conflict:!0}}async function cs(e,t,n,r,o){let s=await fe(e,t),a=await fe(e,n),i=xn(s,"",a,{a:o?.a??"HEAD",b:o?.b??"theirs"});return we(e,"blob",an.encode(i))}function rt(e,t,n=0){return We(e,t.mode,t.hash,n)}function We(e,t,n,r=0){return{path:e,mode:parseInt(t,8),hash:n,stage:r,stat:pe()}}async function Hl(e,t,n,r){let o=[...r.entries],s=[...r.conflicts],a=[...r.msgBuf],i=new Map(r.worktreeBlobs);function c(m,h,p=0){a.push({sortKey:m,subOrder:p,text:h})}for(let m of[...t.keys()].sort()){let h=t.get(m);if(h.merged.clean){h.merged.result?.hash&&o.push(Ee(m,h.merged.result.hash,h.merged.result.mode));continue}await Al(e,h,n,o,s,c,i)}a.sort((m,h)=>(m.sortKey<h.sortKey?-1:m.sortKey>h.sortKey?1:0)||m.subOrder-h.subOrder);let f=a.map(m=>m.text),d=[],u=new Set;for(let m of o)m.stage===0&&(d.push(m),u.add(m.path));for(let[m,h]of i)u.has(m)||d.push(Ee(m,h.hash,h.mode));d.sort((m,h)=>he(m.path,h.path));let l=await ke(e,d);return{entries:o,conflicts:s,messages:f,resultTree:l}}async function Al(e,t,n,r,o,s,a){let i=t.path,[c,f,d]=t.stages,u=c?.hash??null,l=f?.hash??null,m=d?.hash??null;if(l===null&&m!==null&&u!==null){o.push({path:i,reason:"delete-modify",deletedBy:"ours"});let h=n?.a??"HEAD",p=n?.b??"theirs";s(i,`CONFLICT (modify/delete): ${i} deleted in ${h} and modified in ${p}. Version ${p} of ${i} left in tree.`),c&&r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:m,mode:d.mode});return}if(m===null&&l!==null&&u!==null){o.push({path:i,reason:"delete-modify",deletedBy:"theirs"});let h=n?.b??"theirs",p=n?.a??"HEAD";s(i,`CONFLICT (modify/delete): ${i} deleted in ${h} and modified in ${p}. Version ${p} of ${i} left in tree.`),c&&r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),a.set(i,{hash:l,mode:f.mode});return}if(u===null&&l!==null&&m!==null){if(l===m){r.push(Ee(i,l,f.mode));return}s(i,`Auto-merging ${i}`,0);let h=await fe(e,l),p=await fe(e,m);if(Pe(h)||Pe(p)){o.push({path:i,reason:"add-add"}),s(i,`warning: Cannot merge binary files: ${i} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(i,`CONFLICT (add/add): Merge conflict in ${i}`,1),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:l,mode:f.mode});return}let g=it(""),w=it(h),x=it(p),b=ar(w,g,x,n);if(!b.conflict){let C=await bo(e,b.result);r.push(Ee(i,C,f.mode));return}o.push({path:i,reason:"add-add"}),s(i,`CONFLICT (add/add): Merge conflict in ${i}`,1),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3));let y=xn(h,"",p,{a:n?.a??"HEAD",b:n?.b??"theirs"}),k=await we(e,"blob",an.encode(y));a.set(i,{hash:k,mode:f.mode});return}if(u!==null&&l!==null&&m!==null){if(l===u){r.push(Ee(i,m,d.mode));return}if(m===u){r.push(Ee(i,l,f.mode));return}if(l===m){r.push(Ee(i,l,f.mode));return}if(s(i,`Auto-merging ${i}`,0),Lt(c.mode)||Lt(f.mode)||Lt(d.mode)){o.push({path:i,reason:"content"}),s(i,`CONFLICT (content): Merge conflict in ${i}`,1),r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:l,mode:f.mode});return}let h=await fe(e,u),p=await fe(e,l),g=await fe(e,m);if(Pe(p)||Pe(g)||Pe(h)){o.push({path:i,reason:"content"}),s(i,`warning: Cannot merge binary files: ${i} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(i,`CONFLICT (content): Merge conflict in ${i}`,1),r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:l,mode:f.mode});return}let w=it(h),x=it(p),b=it(g),y=ar(x,w,b,n);if(y.conflict){let k=t.pathnames[1],C=t.pathnames[2],P=k!==i||C!==i,O={path:i,reason:"content"};P&&(k!==i&&(O.oursOrigPath=k),C!==i&&(O.theirsOrigPath=C)),o.push(O),s(i,`CONFLICT (content): Merge conflict in ${i}`,1),r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3));let E=P?`${n?.a??"HEAD"}:${k}`:n?.a??"HEAD",I=P?`${n?.b??"theirs"}:${C}`:n?.b??"theirs",H=xn(p,h,g,{a:E,b:I}),_=await we(e,"blob",an.encode(H));a.set(i,{hash:_,mode:f.mode})}else{let k=await bo(e,y.result);r.push(Ee(i,k,f.mode))}return}}var vl=200;async function va(e,t,n,r,o){let s=await Promise.all(r.map(async d=>({hash:d,timestamp:(await M(e,d)).committer.timestamp})));s.sort((d,u)=>d.timestamp-u.timestamp);let a=s.map(d=>d.hash),i=a[0],c=i,f=(await M(e,i)).tree;for(let d=1;d<a.length;d++){let u=a[d],l=(await M(e,u)).tree,m=null;if(o>=vl)m=f;else{let g=await ht(e,c,u);g.length===0?m=null:g.length===1?m=(await M(e,g[0])).tree:m=await va(e,c,u,g,o+1)}let h=await wt(e,m,f,l);f=await Sl(e,h,o);let p=$t({type:"commit",tree:f,parents:[c,u],author:Ca,committer:Ca,message:"merged common ancestors"});c=await we(e,"commit",p)}return f}async function Sl(e,t,n){let r=t.entries.filter(i=>i.stage===0),o=new Map;for(let i of t.entries)i.stage>0&&o.set(`${i.path}\0${i.stage}`,i);let s=(i,c)=>o.get(`${i}\0${c}`),a={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let i of t.conflicts){if(i.reason==="delete-modify"||i.reason==="rename-delete"){let d=s(i.path,1);if(d){r.push({...d,stage:0});continue}}if(i.reason==="rename-rename"){let d=i.oursPath??i.path,u=i.theirsPath??i.path,l=s(i.path,1),m=s(d,2),h=s(u,3);if(m&&h){let p=Ln.decode((await ce(e,m.hash)).content),g=Ln.decode((await ce(e,h.hash)).content),w=l?Ln.decode((await ce(e,l.hash)).content):"",x=8+n*2,b=a.a??"Temporary merge branch 1",y=a.b??"Temporary merge branch 2",k=xn(p,w,g,{a:`${b}:${d}`,o:a.o,b:`${y}:${u}`,markerSize:x}),C=await we(e,"blob",an.encode(k));r.push({path:d,mode:m.mode,hash:C,stage:0,stat:pe()}),r.push({path:u,mode:h.mode,hash:C,stage:0,stat:pe()});continue}else if(m){r.push({...m,stage:0});continue}}let c=s(i.path,2),f=s(i.path,3);if(c&&f&&(i.reason==="content"||i.reason==="add-add")){let d=Ln.decode((await ce(e,c.hash)).content),u=Ln.decode((await ce(e,f.hash)).content),l=i.reason==="content"?s(i.path,1):null,m=l?Ln.decode((await ce(e,l.hash)).content):"",h=i.oursOrigPath||i.theirsOrigPath,p=a.a??"Temporary merge branch 1",g=a.b??"Temporary merge branch 2",w=h?`${p}:${i.oursOrigPath??i.path}`:p,x=h?`${g}:${i.theirsOrigPath??i.path}`:g,b=xn(d,m,u,{a:w,o:a.o,b:x,markerSize:a.markerSize}),y=await we(e,"blob",an.encode(b));r.push({path:i.path,mode:c.mode,hash:y,stage:0,stat:pe()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((i,c)=>he(i.path,c.path)),ke(e,r)}async function bo(e,t){let n=t.map(po);if(n.length===0)return we(e,"blob",an.encode(""));let s=(t[t.length-1]??"").endsWith("\0")?n.join(`
196
+ `)}function at(e){if(e==="")return[];let t=e.split(`
197
+ `);if(t[t.length-1]==="")t.pop();else{let n=t[t.length-1]??"";t[t.length-1]=`${n}\0`}return t}function wo(e){return e.endsWith("\0")?e.slice(0,-1):e}function Pa(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}var _n=new TextDecoder,fn=new TextEncoder,Oa={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function yt(e,t,n,r,o){let{paths:s,baseMap:a,oursMap:i,theirsMap:c}=await Tl(e,t,n,r),f=await Al(e,s,a,i,c,o);return vl(e,s,o,f)}async function lr(e,t,n,r){let o=await gt(e,t,n),s=await j(e,t),a=await j(e,n);if(o.length===0)return{...await yt(e,null,s.tree,a.tree,r),baseTree:null};if(o.length===1){let f=await j(e,o[0]);return{...await yt(e,f.tree,s.tree,a.tree,r),baseTree:f.tree}}let i=await Da(e,t,n,o,1);return{...await yt(e,i,s.tree,a.tree,r),baseTree:i}}async function Tl(e,t,n,r){let o=await se(e,t),s=await se(e,n),a=await se(e,r),i=new Set;for(let f of o.keys())i.add(f);for(let f of s.keys())i.add(f);for(let f of a.keys())i.add(f);let c=new Map;for(let f of i){let d=o.get(f)??null,u=s.get(f)??null,l=a.get(f)??null,m=d?{hash:d.hash,mode:d.mode}:null,h=u?{hash:u.hash,mode:u.mode}:null,p=l?{hash:l.hash,mode:l.mode}:null,g=(d?1:0)|(u?2:0)|(l?4:0),w=d?.hash??null,x=u?.hash??null,b=l?.hash??null,E=0;w!==null&&w===x&&(E|=3),w!==null&&w===b&&(E|=5),x!==null&&x===b&&(E|=6);let k={path:f,stages:[m,h,p],pathnames:[f,f,f],filemask:g,matchMask:E,merged:{result:null,clean:!1},pathConflict:!1};if(Hl(k)){c.set(f,k);continue}c.set(f,k)}return{paths:c,baseMap:o,oursMap:s,theirsMap:a}}function Hl(e){let[t,n,r]=e.stages,o=t?.hash??null,s=n?.hash??null,a=r?.hash??null;return s===o&&a===o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===a&&s!==null?(e.merged={result:{hash:s,mode:n.mode},clean:!0},!0):s===null&&a===null?(e.merged={result:null,clean:!0},!0):a===o&&s!==o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===o&&a!==o?(r?e.merged={result:{hash:a,mode:r.mode},clean:!0}:e.merged={result:null,clean:!0},!0):!1}async function Al(e,t,n,r,o,s){let a={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},i=[],c=[];for(let[M,$]of n)r.has(M)||i.push({path:M,status:"deleted",oldHash:$.hash,oldMode:$.mode}),o.has(M)||c.push({path:M,status:"deleted",oldHash:$.hash,oldMode:$.mode});for(let[M,$]of r)n.has(M)||i.push({path:M,status:"added",newHash:$.hash,newMode:$.mode});for(let[M,$]of o)n.has(M)||c.push({path:M,status:"added",newHash:$.hash,newMode:$.mode});let f=await Ye(e,i),d=await Ye(e,c);if(f.renames.length===0&&d.renames.length===0)return a;let u=new Map,l=new Map;for(let M of f.renames)u.set(M.oldPath,M);for(let M of d.renames)l.set(M.oldPath,M);let m=new Set;for(let[M]of r)!n.has(M)&&o.has(M)&&m.add(M);let h=new Set,p=s?.a??"HEAD",g=s?.b??"theirs";function w(M,$,R=0){a.msgBuf.push({sortKey:M,subOrder:R,text:$})}for(let M of[...n.keys()].sort()){let $=u.get(M),R=l.get(M);if(!$&&!R)continue;let _=n.get(M);if(h.add(M),$&&R)if(h.add($.newPath),h.add(R.newPath),$.newPath===R.newPath){let q=r.get($.newPath),N=o.get(R.newPath);if(q.hash===N.hash)a.entries.push(rt($.newPath,q));else{let V=bo(t,$.newPath);V.stages=[{hash:_.hash,mode:_.mode},{hash:q.hash,mode:q.mode},{hash:N.hash,mode:N.mode}],V.pathnames=[M,$.newPath,R.newPath],V.filemask=7,V.merged={result:null,clean:!1}}}else{let q=r.get($.newPath),N=o.get(R.newPath),V=await Sa(e,_,q,N,s);V.conflict&&w(M,`Auto-merging ${M}`,-1),a.conflicts.push({path:M,reason:"rename-rename",oursPath:$.newPath,theirsPath:R.newPath}),w(M,`CONFLICT (rename/rename): ${M} renamed to ${$.newPath} in ${p} and to ${R.newPath} in ${g}.`),a.entries.push(rt(M,_,1)),a.entries.push(We($.newPath,q.mode,V.hash,2)),a.entries.push(We(R.newPath,N.mode,V.hash,3)),a.worktreeBlobs.set($.newPath,{hash:V.hash,mode:q.mode}),a.worktreeBlobs.set(R.newPath,{hash:V.hash,mode:N.mode})}else if($){h.add($.newPath);let q=o.get(M),N=r.get($.newPath),V=m.has($.newPath);if(q)if(V)await Aa(e,a,$.newPath,M,_,N,q,r,o,!1,s);else if(q.hash===_.hash&&N.hash===_.hash)a.entries.push(rt($.newPath,N));else if(q.hash===_.hash)a.entries.push(rt($.newPath,N));else if(N.hash===_.hash)a.entries.push(We($.newPath,N.mode,q.hash));else{let oe=bo(t,$.newPath);oe.stages=[{hash:_.hash,mode:_.mode},{hash:N.hash,mode:N.mode},{hash:q.hash,mode:q.mode}],oe.pathnames=[M,$.newPath,M],oe.filemask=7,oe.merged={result:null,clean:!1}}else{let oe=o.get($.newPath);if(a.conflicts.push({path:$.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:M}),w($.newPath,`CONFLICT (rename/delete): ${M} renamed to ${$.newPath} in ${p}, but deleted in ${g}.`),oe){a.conflicts.push({path:$.newPath,reason:"add-add"}),w($.newPath,`Auto-merging ${$.newPath}`,0),w($.newPath,`CONFLICT (add/add): Merge conflict in ${$.newPath}`,1),a.entries.push(rt($.newPath,N,2)),a.entries.push(rt($.newPath,oe,3));let Q=await ls(e,N.hash,oe.hash,N.mode,s);a.worktreeBlobs.set($.newPath,{hash:Q,mode:N.mode})}else a.entries.push(We($.newPath,_.mode,_.hash,1)),a.entries.push(rt($.newPath,N,2)),a.worktreeBlobs.set($.newPath,{hash:N.hash,mode:N.mode}),N.hash!==_.hash&&w($.newPath,`CONFLICT (modify/delete): ${$.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${$.newPath} left in tree.`,1)}}else if(R){h.add(R.newPath);let q=r.get(M),N=o.get(R.newPath),V=m.has(R.newPath);if(q)if(V)await Aa(e,a,R.newPath,M,_,q,N,r,o,!0,s);else if(q.hash===_.hash&&N.hash===_.hash)a.entries.push(rt(R.newPath,N));else if(q.hash===_.hash)a.entries.push(rt(R.newPath,N));else if(N.hash===_.hash)a.entries.push(We(R.newPath,N.mode,q.hash));else{let oe=bo(t,R.newPath);oe.stages=[{hash:_.hash,mode:_.mode},{hash:q.hash,mode:q.mode},{hash:N.hash,mode:N.mode}],oe.pathnames=[M,M,R.newPath],oe.filemask=7,oe.merged={result:null,clean:!1}}else{let oe=r.get(R.newPath);if(a.conflicts.push({path:R.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:M}),w(R.newPath,`CONFLICT (rename/delete): ${M} renamed to ${R.newPath} in ${g}, but deleted in ${p}.`),oe){a.conflicts.push({path:R.newPath,reason:"add-add"}),w(R.newPath,`Auto-merging ${R.newPath}`,0),w(R.newPath,`CONFLICT (add/add): Merge conflict in ${R.newPath}`,1),a.entries.push(rt(R.newPath,oe,2)),a.entries.push(rt(R.newPath,N,3));let Q=await ls(e,oe.hash,N.hash,oe.mode,s);a.worktreeBlobs.set(R.newPath,{hash:Q,mode:oe.mode})}else a.entries.push(We(R.newPath,_.mode,_.hash,1)),a.entries.push(rt(R.newPath,N,3)),a.worktreeBlobs.set(R.newPath,{hash:N.hash,mode:N.mode}),N.hash!==_.hash&&w(R.newPath,`CONFLICT (modify/delete): ${R.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${R.newPath} left in tree.`,1)}}}let x=new Set(f.renames.map(M=>M.newPath)),b=new Set(d.renames.map(M=>M.newPath)),E=Ia(n,r),k=Ia(n,o),P=Ra(E,o,n),C=Ra(k,r,n),O=$a(f.renames,P),y=$a(d.renames,C),I=Ta(O),A=Ta(y);for(let M of[...I.keys()])A.has(M)&&(I.delete(M),A.delete(M));let L=new Set(I.keys()),D=new Set(A.keys());if(A.size>0)for(let M of i){if(M.status!=="added"||x.has(M.path))continue;let $=Ha(M.path,A,L);if(!$)continue;if(t.has($)||n.has($)||r.has($)||o.has($)){if(r.has($)){w($,`CONFLICT (implicit dir rename): Existing file/dir at ${$} in the way of implicit directory rename(s) putting the following path(s) there: ${M.path}.`,1);continue}let q=r.get(M.path),N=o.get($)??n.get($);a.entries.push(We($,q.mode,q.hash,2)),N&&a.entries.push(We($,N.mode,N.hash,3)),a.worktreeBlobs.set($,{hash:q.hash,mode:q.mode}),a.conflicts.push({path:$,reason:"add-add"}),w($,`CONFLICT (file location): ${M.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${$}.`,1);let V=t.get(M.path);V&&(V.merged={result:null,clean:!0}),h.add(M.path);continue}let R=r.get(M.path);a.entries.push(We($,R.mode,R.hash,2)),a.worktreeBlobs.set($,{hash:R.hash,mode:R.mode}),a.conflicts.push({path:$,reason:"directory-rename"}),w($,`CONFLICT (file location): ${M.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${$}.`,1);let _=t.get(M.path);_&&(_.merged={result:null,clean:!0}),h.add(M.path)}if(I.size>0)for(let M of c){if(M.status!=="added"||b.has(M.path))continue;let $=Ha(M.path,I,D);if(!$)continue;if(t.has($)||n.has($)||r.has($)||o.has($)){if(o.has($)){w($,`CONFLICT (implicit dir rename): Existing file/dir at ${$} in the way of implicit directory rename(s) putting the following path(s) there: ${M.path}.`,1);continue}let q=o.get(M.path),N=r.get($)??n.get($);N&&a.entries.push(We($,N.mode,N.hash,2)),a.entries.push(We($,q.mode,q.hash,3)),a.worktreeBlobs.set($,{hash:q.hash,mode:q.mode}),a.conflicts.push({path:$,reason:"add-add"}),w($,`CONFLICT (file location): ${M.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${$}.`,1);let V=t.get(M.path);V&&(V.merged={result:null,clean:!0}),h.add(M.path);continue}let R=o.get(M.path);a.entries.push(We($,R.mode,R.hash,3)),a.worktreeBlobs.set($,{hash:R.hash,mode:R.mode}),a.conflicts.push({path:$,reason:"directory-rename"}),w($,`CONFLICT (file location): ${M.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${$}.`,1);let _=t.get(M.path);_&&(_.merged={result:null,clean:!0}),h.add(M.path)}let z=new Set(a.entries.map(M=>M.path));for(let M of z){let $=t.get(M);$&&($.merged={result:null,clean:!0})}for(let M of h){if(z.has(M))continue;let $=t.get(M);if(!$||$.merged.clean)continue;$.filemask===7&&!$.pathConflict||($.merged={result:null,clean:!0})}return a}function Ia(e,t){let n=new Set;for(let s of e.keys()){let a=ct(s);for(;a;)n.add(a),a=ct(a)}let r=new Set;for(let s of t.keys()){let a=ct(s);for(;a;)r.add(a),a=ct(a)}let o=new Set;for(let s of n)r.has(s)||o.add(s);return o}function Ra(e,t,n){if(e.size===0)return e;let r=new Set;for(let o of t.keys()){if(n.has(o))continue;let s=ct(o)??"";e.has(s)&&r.add(s)}for(let o of[...r]){let s=ct(o);for(;s;)e.has(s)&&!r.has(s)&&r.add(s),s=ct(s)}return r}function $a(e,t){let n=new Map;for(let r of e){let o=ct(r.oldPath),s=ct(r.newPath),a=!0;for(;;){if(!a){let i=o.length+(o?1:0),c=s.length+(s?1:0),f=r.oldPath.slice(i,r.oldPath.indexOf("/",i)),d=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==d)break}if(t.has(o)){let i=n.get(o);i||(i=new Map,n.set(o,i)),i.set(s,(i.get(s)??0)+1)}if(a=!1,!o||!s)break;o=ct(o),s=ct(s)}}return n}function Ta(e){let t=new Map;for(let[n,r]of e){let o=0,s=0,a=null;for(let[i,c]of r)c===o?s=o:c>o&&(o=c,a=i);o>0&&s!==o&&a!==null&&t.set(n,a)}return t}function Ha(e,t,n){let r=ct(e);for(;r;){let s=t.get(r);if(s!==void 0){if(n.has(s))return null;let a=e.slice(r.length+1);return s?`${s}/${a}`:a}r=ct(r)}let o=t.get("");return o!==void 0&&!n.has(o)?`${o}/${e}`:null}function ct(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}async function Aa(e,t,n,r,o,s,a,i,c,f=!1,d){let u=f?i.get(n):c.get(n),l=f?a:s;if(u.hash===l.hash){t.entries.push(We(n,u.mode,u.hash)),t.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let h=await Sa(e,o,s,a,d,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(u.hash===h.hash)t.entries.push(We(n,u.mode,h.hash));else if(t.conflicts.push({path:n,reason:"add-add"}),t.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),t.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){t.entries.push(rt(n,u,2)),t.entries.push(We(n,a.mode,h.hash,3));let p=await ls(e,u.hash,h.hash,u.mode,d);t.worktreeBlobs.set(n,{hash:p,mode:u.mode})}else{t.entries.push(We(n,s.mode,h.hash,2)),t.entries.push(rt(n,u,3));let p=await ls(e,h.hash,u.hash,s.mode,d);t.worktreeBlobs.set(n,{hash:p,mode:s.mode})}}async function Sa(e,t,n,r,o,s,a){if(n.hash===t.hash)return{hash:r.hash,conflict:!1};if(r.hash===t.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(Lt(t.mode)||Lt(n.mode)||Lt(r.mode))return{hash:n.hash,conflict:!0};let i=await ie(e,t.hash),c=await ie(e,n.hash),f=await ie(e,r.hash);if(Pe(c)||Pe(f)||Pe(i))return{hash:n.hash,conflict:!0};let d=at(i),u=at(c),l=at(f),m=fr(u,d,l);if(!m.conflict)return{hash:await Eo(e,m.result),conflict:!1};let h=o?.a??"HEAD",p=o?.b??"theirs",g=s?.oursPath?`${h}:${s.oursPath}`:h,w=s?.theirsPath?`${p}:${s.theirsPath}`:p,x=Cn(c,i,f,{a:g,b:w,markerSize:a??7});return{hash:await we(e,"blob",fn.encode(x)),conflict:!0}}async function ls(e,t,n,r,o){let s=await ie(e,t),a=await ie(e,n),i=Cn(s,"",a,{a:o?.a??"HEAD",b:o?.b??"theirs"});return we(e,"blob",fn.encode(i))}function rt(e,t,n=0){return We(e,t.mode,t.hash,n)}function We(e,t,n,r=0){return{path:e,mode:parseInt(t,8),hash:n,stage:r,stat:pe()}}async function vl(e,t,n,r){let o=[...r.entries],s=[...r.conflicts],a=[...r.msgBuf],i=new Map(r.worktreeBlobs);function c(m,h,p=0){a.push({sortKey:m,subOrder:p,text:h})}for(let m of[...t.keys()].sort()){let h=t.get(m);if(h.merged.clean){h.merged.result?.hash&&o.push(Ee(m,h.merged.result.hash,h.merged.result.mode));continue}await Sl(e,h,n,o,s,c,i)}a.sort((m,h)=>(m.sortKey<h.sortKey?-1:m.sortKey>h.sortKey?1:0)||m.subOrder-h.subOrder);let f=a.map(m=>m.text),d=[],u=new Set;for(let m of o)m.stage===0&&(d.push(m),u.add(m.path));for(let[m,h]of i)u.has(m)||d.push(Ee(m,h.hash,h.mode));d.sort((m,h)=>he(m.path,h.path));let l=await ke(e,d);return{entries:o,conflicts:s,messages:f,resultTree:l}}async function Sl(e,t,n,r,o,s,a){let i=t.path,[c,f,d]=t.stages,u=c?.hash??null,l=f?.hash??null,m=d?.hash??null;if(l===null&&m!==null&&u!==null){o.push({path:i,reason:"delete-modify",deletedBy:"ours"});let h=n?.a??"HEAD",p=n?.b??"theirs";s(i,`CONFLICT (modify/delete): ${i} deleted in ${h} and modified in ${p}. Version ${p} of ${i} left in tree.`),c&&r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:m,mode:d.mode});return}if(m===null&&l!==null&&u!==null){o.push({path:i,reason:"delete-modify",deletedBy:"theirs"});let h=n?.b??"theirs",p=n?.a??"HEAD";s(i,`CONFLICT (modify/delete): ${i} deleted in ${h} and modified in ${p}. Version ${p} of ${i} left in tree.`),c&&r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),a.set(i,{hash:l,mode:f.mode});return}if(u===null&&l!==null&&m!==null){if(l===m){r.push(Ee(i,l,f.mode));return}s(i,`Auto-merging ${i}`,0);let h=await ie(e,l),p=await ie(e,m);if(Pe(h)||Pe(p)){o.push({path:i,reason:"add-add"}),s(i,`warning: Cannot merge binary files: ${i} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(i,`CONFLICT (add/add): Merge conflict in ${i}`,1),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:l,mode:f.mode});return}let g=at(""),w=at(h),x=at(p),b=fr(w,g,x,n);if(!b.conflict){let P=await Eo(e,b.result);r.push(Ee(i,P,f.mode));return}o.push({path:i,reason:"add-add"}),s(i,`CONFLICT (add/add): Merge conflict in ${i}`,1),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3));let E=Cn(h,"",p,{a:n?.a??"HEAD",b:n?.b??"theirs"}),k=await we(e,"blob",fn.encode(E));a.set(i,{hash:k,mode:f.mode});return}if(u!==null&&l!==null&&m!==null){if(l===u){r.push(Ee(i,m,d.mode));return}if(m===u){r.push(Ee(i,l,f.mode));return}if(l===m){r.push(Ee(i,l,f.mode));return}if(s(i,`Auto-merging ${i}`,0),Lt(c.mode)||Lt(f.mode)||Lt(d.mode)){o.push({path:i,reason:"content"}),s(i,`CONFLICT (content): Merge conflict in ${i}`,1),r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:l,mode:f.mode});return}let h=await ie(e,u),p=await ie(e,l),g=await ie(e,m);if(Pe(p)||Pe(g)||Pe(h)){o.push({path:i,reason:"content"}),s(i,`warning: Cannot merge binary files: ${i} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(i,`CONFLICT (content): Merge conflict in ${i}`,1),r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3)),a.set(i,{hash:l,mode:f.mode});return}let w=at(h),x=at(p),b=at(g),E=fr(x,w,b,n);if(E.conflict){let k=t.pathnames[1],P=t.pathnames[2],C=k!==i||P!==i,O={path:i,reason:"content"};C&&(k!==i&&(O.oursOrigPath=k),P!==i&&(O.theirsOrigPath=P)),o.push(O),s(i,`CONFLICT (content): Merge conflict in ${i}`,1),r.push(Ee(i,u,c.mode,1)),r.push(Ee(i,l,f.mode,2)),r.push(Ee(i,m,d.mode,3));let y=C?`${n?.a??"HEAD"}:${k}`:n?.a??"HEAD",I=C?`${n?.b??"theirs"}:${P}`:n?.b??"theirs",A=Cn(p,h,g,{a:y,b:I}),L=await we(e,"blob",fn.encode(A));a.set(i,{hash:L,mode:f.mode})}else{let k=await Eo(e,E.result);r.push(Ee(i,k,f.mode))}return}}var Dl=200;async function Da(e,t,n,r,o){let s=await Promise.all(r.map(async d=>({hash:d,timestamp:(await j(e,d)).committer.timestamp})));s.sort((d,u)=>d.timestamp-u.timestamp);let a=s.map(d=>d.hash),i=a[0],c=i,f=(await j(e,i)).tree;for(let d=1;d<a.length;d++){let u=a[d],l=(await j(e,u)).tree,m=null;if(o>=Dl)m=f;else{let g=await gt(e,c,u);g.length===0?m=null:g.length===1?m=(await j(e,g[0])).tree:m=await Da(e,c,u,g,o+1)}let h=await yt(e,m,f,l);f=await Ml(e,h,o);let p=$t({type:"commit",tree:f,parents:[c,u],author:Oa,committer:Oa,message:"merged common ancestors"});c=await we(e,"commit",p)}return f}async function Ml(e,t,n){let r=t.entries.filter(i=>i.stage===0),o=new Map;for(let i of t.entries)i.stage>0&&o.set(`${i.path}\0${i.stage}`,i);let s=(i,c)=>o.get(`${i}\0${c}`),a={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let i of t.conflicts){if(i.reason==="delete-modify"||i.reason==="rename-delete"){let d=s(i.path,1);if(d){r.push({...d,stage:0});continue}}if(i.reason==="rename-rename"){let d=i.oursPath??i.path,u=i.theirsPath??i.path,l=s(i.path,1),m=s(d,2),h=s(u,3);if(m&&h){let p=_n.decode((await fe(e,m.hash)).content),g=_n.decode((await fe(e,h.hash)).content),w=l?_n.decode((await fe(e,l.hash)).content):"",x=8+n*2,b=a.a??"Temporary merge branch 1",E=a.b??"Temporary merge branch 2",k=Cn(p,w,g,{a:`${b}:${d}`,o:a.o,b:`${E}:${u}`,markerSize:x}),P=await we(e,"blob",fn.encode(k));r.push({path:d,mode:m.mode,hash:P,stage:0,stat:pe()}),r.push({path:u,mode:h.mode,hash:P,stage:0,stat:pe()});continue}else if(m){r.push({...m,stage:0});continue}}let c=s(i.path,2),f=s(i.path,3);if(c&&f&&(i.reason==="content"||i.reason==="add-add")){let d=_n.decode((await fe(e,c.hash)).content),u=_n.decode((await fe(e,f.hash)).content),l=i.reason==="content"?s(i.path,1):null,m=l?_n.decode((await fe(e,l.hash)).content):"",h=i.oursOrigPath||i.theirsOrigPath,p=a.a??"Temporary merge branch 1",g=a.b??"Temporary merge branch 2",w=h?`${p}:${i.oursOrigPath??i.path}`:p,x=h?`${g}:${i.theirsOrigPath??i.path}`:g,b=Cn(d,m,u,{a:w,o:a.o,b:x,markerSize:a.markerSize}),E=await we(e,"blob",fn.encode(b));r.push({path:i.path,mode:c.mode,hash:E,stage:0,stat:pe()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((i,c)=>he(i.path,c.path)),ke(e,r)}async function Eo(e,t){let n=t.map(wo);if(n.length===0)return we(e,"blob",fn.encode(""));let s=(t[t.length-1]??"").endsWith("\0")?n.join(`
188
198
  `):`${n.join(`
189
199
  `)}
190
- `;return we(e,"blob",an.encode(s))}function Ee(e,t,n,r=0){let o=typeof n=="string"?parseInt(n,8):n;return{path:e,mode:o,hash:t,stage:r,stat:pe()}}function go(e,t){let n=e.get(t);return n||(n={path:t,stages:[null,null,null],pathnames:[t,t,t],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},e.set(t,n)),n}function cr(e,t,n,r,o){let s=r==="untracked"?`error: The following untracked working tree files would be overwritten by ${t}:`:`error: Your local changes to the following files would be overwritten by ${t}:`;if(n==="merge"){if(o==="staged")return`${s}
200
+ `;return we(e,"blob",fn.encode(s))}function Ee(e,t,n,r=0){let o=typeof n=="string"?parseInt(n,8):n;return{path:e,mode:o,hash:t,stage:r,stat:pe()}}function bo(e,t){let n=e.get(t);return n||(n={path:t,stages:[null,null,null],pathnames:[t,t,t],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},e.set(t,n)),n}function dr(e,t,n,r,o){let s=r==="untracked"?`error: The following untracked working tree files would be overwritten by ${t}:`:`error: Your local changes to the following files would be overwritten by ${t}:`;if(n==="merge"){if(o==="staged")return`${s}
191
201
  ${e.join(" ")}
192
202
  Merge with strategy ort failed.
193
203
  `;let c=e.map(d=>` ${d}`).join(`
@@ -202,7 +212,7 @@ ${a}
202
212
  ${i}
203
213
  Aborting
204
214
  fatal: ${n} failed
205
- `}function Ha(e,t,n,r){let o=[];if(e.length>0){let a=e.map(i=>` ${i}`).join(`
215
+ `}function va(e,t,n,r){let o=[];if(e.length>0){let a=e.map(i=>` ${i}`).join(`
206
216
  `);o.push(`error: Your local changes to the following files would be overwritten by ${n}:
207
217
  ${a}
208
218
  Please commit your changes or stash them before you ${n}.
@@ -212,22 +222,22 @@ ${a}
212
222
  Please move or remove them before you ${n}.
213
223
  `)}let s=r==="merge"?"Merge with strategy ort failed.":`fatal: ${r} failed`;return`${o.join("")}Aborting
214
224
  ${s}
215
- `}async function Wt(e,t,n,r){let o=await U(e),s=await se(e,n);if(!r.skipStagedChangeCheck&&e.workTree){let h=new Map(xe(o).map(g=>[g.path,g])),p=[];for(let[g,w]of h){let x=s.get(g);(!x||x.hash!==w.hash)&&p.push(g)}for(let[g]of s)h.has(g)||p.push(g);if(p.length>0){let g=[...p].sort();await wo(e,o,s);let w=r.operationName??"merge",x=r.callerCommand??"merge";return{ok:!1,stdout:"",stderr:cr(g,w,x,"local","staged"),exitCode:r.errorExitCode??2,failureKind:"staged"}}}if(e.workTree&&r.preflightOnewayCheck){let h=await gn(e,[{label:"target",treeHash:t.resultTree}],o,{mergeFn:jr,updateWorktree:!1,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge"});if(!h.success){await wo(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(y=>y.error==="WOULD_OVERWRITE"||y.error==="NOT_UPTODATE_FILE").map(y=>y.path).sort(),x=h.errors.filter(y=>y.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||y.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(y=>y.path).sort(),b;return w.length>0&&x.length>0?b=Ha(w,x,p,g):x.length>0?b=cr(x,p,g,"untracked","worktree"):b=cr(w,p,g,"local","worktree"),{ok:!1,stdout:"",stderr:b,exitCode:r.errorExitCode??2,failureKind:"worktree"}}}if(e.workTree){let h=await gn(e,[{label:"current",treeHash:n},{label:"target",treeHash:t.resultTree}],o,{mergeFn:Lr,updateWorktree:!0,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge",allowStagedChanges:!!r.preflightOnewayCheck});if(!h.success){await wo(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(k=>k.error==="WOULD_OVERWRITE"||k.error==="NOT_UPTODATE_FILE").map(k=>k.path).sort(),x=h.errors.filter(k=>k.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||k.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(k=>k.path).sort(),b=[];w.length>0&&b.push(cr(w,p,g,"local","worktree")),x.length>0&&b.push(cr(x,p,g,"untracked","worktree"));let y;return b.length>1?y=Ha(w,x,p,g):y=b[0]??"",{ok:!1,stdout:"",stderr:y,exitCode:r.errorExitCode??2,failureKind:"worktree"}}await be(e,h.worktreeOps)}let a=new Set,i=t.entries;if(r.preflightOnewayCheck){let h=[];for(let p of t.entries){if(p.stage===0){let g=s.get(p.path);if(g&&g.hash===p.hash){a.add(p.path);continue}}h.push(p)}i=h}let c=new Set(i.map(h=>h.path));for(let h of s.keys())a.has(h)||c.add(h);let f=o.entries.filter(h=>!c.has(h.path)),d=[...i,...f];d.sort((h,p)=>he(h.path,p.path)||h.stage-p.stage);let u={version:2,entries:d};await re(e,u);let l=d.filter(h=>h.stage===0),m=await ke(e,l);return{ok:!0,finalIndex:u,mergedTreeHash:m}}async function wo(e,t,n){if(e.workTree)for(let r of t.entries){if(r.stage!==0||n.has(r.path))continue;let o=v(e.workTree,r.path);await e.fs.exists(o)||await ve(e,{path:r.path,hash:r.hash,mode:r.mode})}}function Sa(e,t){e.command("cherry-pick",{description:"Apply the changes introduced by some existing commits",args:[W.string().name("commit").describe("The commit to cherry-pick").optional()],options:{abort:A().describe("Abort the current cherry-pick operation"),continue:A().describe("Continue the cherry-pick after conflict resolution"),skip:A().describe("Skip the current cherry-pick and continue with the rest"),"record-origin":A().alias("x").describe('Append "(cherry picked from commit ...)" to the commit message'),mainline:te.number().alias("m").describe("Select parent number for merge commit (1-based)"),noCommit:A().alias("n").describe("Apply changes without creating a commit")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort){if(t?.hooks){let R=await t.hooks.emitPre("pre-cherry-pick",{mode:"abort",commit:null});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let $=await Ml(s,r.env);return $.exitCode===0&&await t?.hooks?.emitPost("post-cherry-pick",{mode:"abort",commitHash:null,hadConflicts:!1}),$}if(n.continue){if(t?.hooks){let R=await t.hooks.emitPre("pre-cherry-pick",{mode:"continue",commit:null});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let $=await jl(s,r.env);return $.exitCode===0&&await t?.hooks?.emitPost("post-cherry-pick",{mode:"continue",commitHash:null,hadConflicts:!1}),$}if(n.skip)return Dl(s,r.env);let a=n.commit;if(!a)return T("you must specify a commit to cherry-pick");if(t?.hooks){let $=await t.hooks.emitPre("pre-cherry-pick",{mode:"pick",commit:a});if($)return{stdout:"",stderr:$.message??"",exitCode:1}}let i=await ye(s,a);if(S(i))return i;let c=i.hash,f=i.commit,d=await Se(s);if(S(d))return d;let u=await U(s);if(n.noCommit){let $=u.entries.filter(R=>R.stage>0);if($.length>0){let q=$.slice(0,10).map(V=>`${V.path}: unmerged (${V.hash})`).join(`
216
- `),L=$.length>10?`
217
- ...`:"";return j(`${q}${L}
225
+ `}async function qt(e,t,n,r){let o=await U(e),s=await se(e,n);if(!r.skipStagedChangeCheck&&e.workTree){let h=new Map(xe(o).map(g=>[g.path,g])),p=[];for(let[g,w]of h){let x=s.get(g);(!x||x.hash!==w.hash)&&p.push(g)}for(let[g]of s)h.has(g)||p.push(g);if(p.length>0){let g=[...p].sort();await yo(e,o,s);let w=r.operationName??"merge",x=r.callerCommand??"merge";return{ok:!1,stdout:"",stderr:dr(g,w,x,"local","staged"),exitCode:r.errorExitCode??2,failureKind:"staged"}}}if(e.workTree&&r.preflightOnewayCheck){let h=await bn(e,[{label:"target",treeHash:t.resultTree}],o,{mergeFn:Gr,updateWorktree:!1,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge"});if(!h.success){await yo(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(E=>E.error==="WOULD_OVERWRITE"||E.error==="NOT_UPTODATE_FILE").map(E=>E.path).sort(),x=h.errors.filter(E=>E.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||E.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(E=>E.path).sort(),b;return w.length>0&&x.length>0?b=va(w,x,p,g):x.length>0?b=dr(x,p,g,"untracked","worktree"):b=dr(w,p,g,"local","worktree"),{ok:!1,stdout:"",stderr:b,exitCode:r.errorExitCode??2,failureKind:"worktree"}}}if(e.workTree){let h=await bn(e,[{label:"current",treeHash:n},{label:"target",treeHash:t.resultTree}],o,{mergeFn:Nr,updateWorktree:!0,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge",allowStagedChanges:!!r.preflightOnewayCheck});if(!h.success){await yo(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(k=>k.error==="WOULD_OVERWRITE"||k.error==="NOT_UPTODATE_FILE").map(k=>k.path).sort(),x=h.errors.filter(k=>k.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||k.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(k=>k.path).sort(),b=[];w.length>0&&b.push(dr(w,p,g,"local","worktree")),x.length>0&&b.push(dr(x,p,g,"untracked","worktree"));let E;return b.length>1?E=va(w,x,p,g):E=b[0]??"",{ok:!1,stdout:"",stderr:E,exitCode:r.errorExitCode??2,failureKind:"worktree"}}await be(e,h.worktreeOps)}let a=new Set,i=t.entries;if(r.preflightOnewayCheck){let h=[];for(let p of t.entries){if(p.stage===0){let g=s.get(p.path);if(g&&g.hash===p.hash){a.add(p.path);continue}}h.push(p)}i=h}let c=new Set(i.map(h=>h.path));for(let h of s.keys())a.has(h)||c.add(h);let f=o.entries.filter(h=>!c.has(h.path)),d=[...i,...f];d.sort((h,p)=>he(h.path,p.path)||h.stage-p.stage);let u={version:2,entries:d};await re(e,u);let l=d.filter(h=>h.stage===0),m=await ke(e,l);return{ok:!0,finalIndex:u,mergedTreeHash:m}}async function yo(e,t,n){if(e.workTree)for(let r of t.entries){if(r.stage!==0||n.has(r.path))continue;let o=H(e.workTree,r.path);await e.fs.exists(o)||await ve(e,{path:r.path,hash:r.hash,mode:r.mode})}}function Ma(e,t){e.command("cherry-pick",{description:"Apply the changes introduced by some existing commits",args:[W.string().name("commit").describe("The commit to cherry-pick").optional()],options:{abort:v().describe("Abort the current cherry-pick operation"),continue:v().describe("Continue the cherry-pick after conflict resolution"),skip:v().describe("Skip the current cherry-pick and continue with the rest"),"record-origin":v().alias("x").describe('Append "(cherry picked from commit ...)" to the commit message'),mainline:te.number().alias("m").describe("Select parent number for merge commit (1-based)"),noCommit:v().alias("n").describe("Apply changes without creating a commit")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort){if(t?.hooks){let R=await t.hooks.emitPre("pre-cherry-pick",{mode:"abort",commit:null});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let $=await Ll(s,r.env);return $.exitCode===0&&await t?.hooks?.emitPost("post-cherry-pick",{mode:"abort",commitHash:null,hadConflicts:!1}),$}if(n.continue){if(t?.hooks){let R=await t.hooks.emitPre("pre-cherry-pick",{mode:"continue",commit:null});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let $=await Gl(s,r.env);return $.exitCode===0&&await t?.hooks?.emitPost("post-cherry-pick",{mode:"continue",commitHash:null,hadConflicts:!1}),$}if(n.skip)return jl(s,r.env);let a=n.commit;if(!a)return T("you must specify a commit to cherry-pick");if(t?.hooks){let $=await t.hooks.emitPre("pre-cherry-pick",{mode:"pick",commit:a});if($)return{stdout:"",stderr:$.message??"",exitCode:1}}let i=await ye(s,a);if(S(i))return i;let c=i.hash,f=i.commit,d=await Se(s);if(S(d))return d;let u=await U(s);if(n.noCommit){let $=u.entries.filter(R=>R.stage>0);if($.length>0){let q=$.slice(0,10).map(V=>`${V.path}: unmerged (${V.hash})`).join(`
226
+ `),N=$.length>10?`
227
+ ...`:"";return G(`${q}${N}
218
228
  error: your index file is unmerged.
219
229
  fatal: cherry-pick failed
220
- `,128)}}else{let $=Nt(u,"Cherry-picking",`fatal: cherry-pick failed
221
- `);if($)return $}let l=await M(s,d),h=!!n["record-origin"]?Ll(f.message,c):f.message;if(s.workTree&&!n.noCommit){let $=await se(s,l.tree);if(vn(u,$))return j(`error: your local changes would be overwritten by cherry-pick.
230
+ `,128)}}else{let $=_t(u,"Cherry-picking",`fatal: cherry-pick failed
231
+ `);if($)return $}let l=await j(s,d),h=!!n["record-origin"]?Nl(f.message,c):f.message;if(s.workTree&&!n.noCommit){let $=await se(s,l.tree);if(Dn(u,$))return G(`error: your local changes would be overwritten by cherry-pick.
222
232
  hint: commit your changes or stash them to proceed.
223
233
  fatal: cherry-pick failed
224
- `,128)}if(f.parents.length>1){if(!n.mainline)return j(`error: commit ${c} is a merge but no -m option was given.
234
+ `,128)}if(f.parents.length>1){if(!n.mainline)return G(`error: commit ${c} is a merge but no -m option was given.
225
235
  fatal: cherry-pick failed
226
- `,128);let $=n.mainline-1;if($<0||$>=f.parents.length)return j(`error: commit ${c} does not have parent ${n.mainline}
236
+ `,128);let $=n.mainline-1;if($<0||$>=f.parents.length)return G(`error: commit ${c} does not have parent ${n.mainline}
227
237
  fatal: cherry-pick failed
228
- `,128)}else if(n.mainline)return j(`error: mainline was specified but commit is not a merge.
238
+ `,128)}else if(n.mainline)return G(`error: mainline was specified but commit is not a merge.
229
239
  fatal: cherry-pick failed
230
- `,128);let p;if(f.parents.length===0)p=await ke(s,[]);else{let $=f.parents.length>1?n.mainline-1:0,R=f.parents[$];if(!R)throw new Error("unreachable: parent must exist");p=(await M(s,R)).tree}let g=K(c),w=ue(f.message),x={a:"HEAD",b:w?`${g} (${w})`:g},b=await wt(s,p,l.tree,f.tree,x);if(b.conflicts.length===0&&b.resultTree===l.tree){if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};await Y(s,"CHERRY_PICK_HEAD",c),await Y(s,"ORIG_HEAD",d),await Ue(s,"MERGE_MSG",h);let $=b.messages.length>0?`${b.messages.join(`
240
+ `,128);let p;if(f.parents.length===0)p=await ke(s,[]);else{let $=f.parents.length>1?n.mainline-1:0,R=f.parents[$];if(!R)throw new Error("unreachable: parent must exist");p=(await j(s,R)).tree}let g=K(c),w=ue(f.message),x={a:"HEAD",b:w?`${g} (${w})`:g},b=await yt(s,p,l.tree,f.tree,x);if(b.conflicts.length===0&&b.resultTree===l.tree){if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};await Y(s,"CHERRY_PICK_HEAD",c),await Y(s,"ORIG_HEAD",d),await Ue(s,"MERGE_MSG",h);let $=b.messages.length>0?`${b.messages.join(`
231
241
  `)}
232
242
  `:"",R=await Be(s,{fromCommit:!0});return{stdout:`${$}${R}`,stderr:`The previous cherry-pick is now empty, possibly due to conflict resolution.
233
243
  If you wish to commit it anyway, use:
@@ -235,7 +245,7 @@ If you wish to commit it anyway, use:
235
245
  git commit --allow-empty
236
246
 
237
247
  Otherwise, please use 'git cherry-pick --skip'
238
- `,exitCode:1}}let y=await Wt(s,b,l.tree,{labels:x,errorExitCode:128,operationName:"merge",callerCommand:"cherry-pick",skipStagedChangeCheck:!0,preflightOnewayCheck:!!n.noCommit});if(!y.ok)return y;if(b.conflicts.length>0){let $=b.messages.join(`
248
+ `,exitCode:1}}let E=await qt(s,b,l.tree,{labels:x,errorExitCode:128,operationName:"merge",callerCommand:"cherry-pick",skipStagedChangeCheck:!0,preflightOnewayCheck:!!n.noCommit});if(!E.ok)return E;if(b.conflicts.length>0){let $=b.messages.join(`
239
249
  `);return await t?.hooks?.emitPost("post-cherry-pick",{mode:"pick",commitHash:null,hadConflicts:!0}),n.noCommit?{stdout:$?`${$}
240
250
  `:"",stderr:`error: could not apply ${g}... ${ue(f.message)}
241
251
  hint: after resolving the conflicts, mark the corrected paths
@@ -250,49 +260,51 @@ hint: You can instead skip this commit with "git cherry-pick --skip".
250
260
  hint: To abort and get back to the state before "git cherry-pick",
251
261
  hint: run "git cherry-pick --abort".
252
262
  hint: Disable this message with "git config set advice.mergeConflict false"
253
- `,exitCode:1})}let k=y.mergedTreeHash;if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};let C=await Le(s,r.env);if(S(C))return C;let P=await Je(s,k,[d],f.author,C,h);await kt(s),await pt(s);let O=await J(s),E=h.split(`
254
- `)[0]??"",I=O?.type==="symbolic"?O.target:"HEAD";await ee(s,r.env,I,d,P,`cherry-pick: ${E}`,O?.type==="symbolic");let H=O?.type==="symbolic"?de(O.target):"detached HEAD",_=l.tree,G=await St(s,_,k,f.author,C,!0),z=ut(H,P,h),D=b.messages.length>0?`${b.messages.join(`
263
+ `,exitCode:1})}let k=E.mergedTreeHash;if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};let P=await Le(s,r.env);if(S(P))return P;let C=await Je(s,k,[d],f.author,P,h);await kt(s),await wt(s);let O=await J(s),y=h.split(`
264
+ `)[0]??"",I=O?.type==="symbolic"?O.target:"HEAD";await ee(s,r.env,I,d,C,`cherry-pick: ${y}`,O?.type==="symbolic");let A=O?.type==="symbolic"?de(O.target):"detached HEAD",L=l.tree,D=await St(s,L,k,f.author,P,!0),z=mt(A,C,h),M=b.messages.length>0?`${b.messages.join(`
255
265
  `)}
256
- `:"";return await t?.hooks?.emitPost("post-cherry-pick",{mode:"pick",commitHash:P,hadConflicts:!1}),{stdout:`${D}${z}
257
- ${G}`,stderr:"",exitCode:0}}})}async function Dl(e,t){if(!await F(e,"CHERRY_PICK_HEAD"))return j(`error: no cherry-pick in progress
266
+ `:"";return await t?.hooks?.emitPost("post-cherry-pick",{mode:"pick",commitHash:C,hadConflicts:!1}),{stdout:`${M}${z}
267
+ ${D}`,stderr:"",exitCode:0}}})}async function jl(e,t){if(!await F(e,"CHERRY_PICK_HEAD"))return G(`error: no cherry-pick in progress
268
+ fatal: cherry-pick failed
269
+ `,128);let r=await X(e);if(!r)return T("unable to resolve HEAD");let o=await j(e,r),s=await U(e),a=await Fr(e,o.tree,s,r);if(!a.success){let i=a.errorOutput;return{...i,stderr:i.stderr+`error: failed to skip the commit
258
270
  fatal: cherry-pick failed
259
- `,128);let r=await X(e);if(!r)return T("unable to resolve HEAD");let o=await M(e,r),s=await U(e),a=await yt(e,o.tree,s);return a.success?(await re(e,{version:2,entries:a.newEntries}),await be(e,a.worktreeOps),await ee(e,t,"HEAD",r,r,`reset: moving to ${r}`),await kt(e),{stdout:"",stderr:"",exitCode:0}):a.errorOutput}async function Ml(e,t){return await F(e,"CHERRY_PICK_HEAD")?en(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:j(`error: no cherry-pick or revert in progress
271
+ `}}return await re(e,{version:2,entries:a.newEntries}),await be(e,a.worktreeOps),await ee(e,t,"HEAD",r,r,`reset: moving to ${r}`),await kt(e),{stdout:"",stderr:"",exitCode:0}}async function Ll(e,t){return await F(e,"CHERRY_PICK_HEAD")?tn(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
260
272
  fatal: cherry-pick failed
261
- `,128),operationName:"cherry-pick",clearState:kt,origHeadAsTargetRev:!0}):await F(e,"REVERT_HEAD")?en(e,t,{operationRef:"REVERT_HEAD",noOpError:j(`error: no cherry-pick or revert in progress
273
+ `,128),operationName:"cherry-pick",clearState:kt,origHeadAsTargetRev:!0}):await F(e,"REVERT_HEAD")?tn(e,t,{operationRef:"REVERT_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
262
274
  fatal: cherry-pick failed
263
- `,128),operationName:"cherry-pick",clearState:pt,origHeadAsTargetRev:!0}):j(`error: no cherry-pick or revert in progress
275
+ `,128),operationName:"cherry-pick",clearState:wt,origHeadAsTargetRev:!0}):G(`error: no cherry-pick or revert in progress
264
276
  fatal: cherry-pick failed
265
- `,128)}async function jl(e,t){let n=await F(e,"CHERRY_PICK_HEAD");if(!n)return j(`error: no cherry-pick or revert in progress
277
+ `,128)}async function Gl(e,t){let n=await F(e,"CHERRY_PICK_HEAD");if(!n)return G(`error: no cherry-pick or revert in progress
266
278
  fatal: cherry-pick failed
267
- `,128);let r=await U(e),o=Nt(r,"Committing");if(o)return o;let s=await M(e,n),a=await qe(e,"MERGE_MSG");a||(a=s.message);let i=xe(r),c=await ke(e,i),f=await Se(e);if(S(f))return f;let u=(await M(e,f)).tree,l=await Le(e,t);if(S(l))return l;let m=mt(a),h=await Je(e,c,[f],s.author,l,m);await kt(e),await pt(e);let p=await J(e),g=ue(m),w=p?.type==="symbolic"?p.target:"HEAD";await ee(e,t,w,f,h,`commit (cherry-pick): ${g}`,p?.type==="symbolic");let x=p?.type==="symbolic"?de(p.target):"detached HEAD",b=await St(e,u,c,s.author,l,!0);return{stdout:`${ut(x,h,a)}
268
- ${b}`,stderr:"",exitCode:0}}function Ll(e,t){let n=`(cherry picked from commit ${t})`,r=e.replace(/\n+$/,""),o=r.lastIndexOf(`
279
+ `,128);let r=await U(e),o=_t(r,"Committing");if(o)return o;let s=await j(e,n),a=await qe(e,"MERGE_MSG");a||(a=s.message);let i=xe(r),c=await ke(e,i),f=await Se(e);if(S(f))return f;let u=(await j(e,f)).tree,l=await Le(e,t);if(S(l))return l;let m=ht(a),h=await Je(e,c,[f],s.author,l,m);await kt(e),await wt(e);let p=await J(e),g=ue(m),w=p?.type==="symbolic"?p.target:"HEAD";await ee(e,t,w,f,h,`commit (cherry-pick): ${g}`,p?.type==="symbolic");let x=p?.type==="symbolic"?de(p.target):"detached HEAD",b=await St(e,u,c,s.author,l,!0);return{stdout:`${mt(x,h,a)}
280
+ ${b}`,stderr:"",exitCode:0}}function Nl(e,t){let n=`(cherry picked from commit ${t})`,r=e.replace(/\n+$/,""),o=r.lastIndexOf(`
269
281
  `),s=o===-1?r:r.slice(o+1);return/^\(cherry picked from commit [0-9a-f]+\)$/.test(s)?`${r}
270
282
  ${n}
271
283
  `:`${r}
272
284
 
273
285
  ${n}
274
- `}function Da(e,t){e.command("clean",{description:"Remove untracked files from the working tree",args:[W.string().name("pathspec").describe("Pathspec to limit which files are removed").optional().variadic()],options:{force:A().alias("f").describe("Required to actually remove files"),"dry-run":A().alias("n").describe("Don't actually remove anything, just show what would be done"),directories:A().alias("d").describe("Also remove untracked directories"),removeIgnored:A().alias("x").describe("Remove ignored files as well"),onlyIgnored:A().alias("X").describe("Remove only ignored files"),exclude:te.string().alias("e").describe("Additional exclude pattern")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c=n["dry-run"],f=n.force,d=n.directories,u=n.removeIgnored,l=n.onlyIgnored;if(t?.hooks){let P=await t.hooks.emitPre("pre-clean",{dryRun:c,force:f,removeDirs:d,removeIgnored:u,onlyIgnored:l});if(P)return{stdout:"",stderr:P.message??"",exitCode:1}}if(!f&&!c&&await bt(s,"clean.requireForce")!=="false")return T("clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean");let m=await U(s),h=new Set(m.entries.map(P=>P.path)),p=Ze(s,r.cwd),g=n.pathspec,w=g.length>0?g.map(P=>Oe(P,p)):null,x=n.exclude?[n.exclude]:[],b=await Ma(s,i,"",{trackedPaths:h,removeDirs:d,removeIgnored:u,onlyIgnored:l,extraExcludes:x}),y;w?y=b.filter(P=>me(w,P.path)):y=b,y.sort((P,O)=>P.path<O.path?-1:P.path>O.path?1:0);let k=[];if(c)for(let P of y){let O=P.isDir?`Would remove ${P.path}/`:`Would remove ${P.path}`;k.push(O)}else for(let P of y){let O=v(i,P.path);P.isDir?(await r.fs.rm(O,{recursive:!0}),k.push(`Removing ${P.path}/`)):(await r.fs.rm(O),k.push(`Removing ${P.path}`))}let C=k.length>0?`${k.join(`
275
- `)}
276
- `:"";return await t?.hooks?.emitPost("post-clean",{removed:y.map(P=>P.path),dryRun:c}),{stdout:C,stderr:"",exitCode:0}}})}async function Ma(e,t,n,r){let o=[],s=!r.removeIgnored,a=null;if(s||r.onlyIgnored){a=r._ignore??await Hn(e);let c=v(t,".gitignore");try{let f=await e.fs.readFile(c);a=hn(a,f,n,c)}catch{}if(!r._ignore&&r.extraExcludes.length>0){let f=r.extraExcludes.join(`
277
- `),d=tr(f,"","<cli>");a={...a,dirPatterns:[d,...a.dirPatterns]}}}let i=await e.fs.readdir(t);for(let c of i){if(n===""&&c===".git")continue;let f=v(t,c),d=n?`${n}/${c}`:c,u=await e.fs.stat(f);if(u.isDirectory){let l=a&&Tt(a,d,!0)==="ignored",m=Gl(r.trackedPaths,d),h=()=>Ma(e,f,d,{...r,_ignore:a??void 0});if(r.onlyIgnored){if(l&&!m){r.removeDirs&&o.push({path:d,isDir:!0});continue}let p=await h();!m&&r.removeDirs?p.length>0&&o.push({path:d,isDir:!0}):o.push(...p)}else if(m){let p=await h();o.push(...p)}else if(!(l&&s)){if(r.removeDirs)if(r.removeIgnored)o.push({path:d,isDir:!0});else{let p=await h(),g=await e.fs.readdir(f);(p.length>0||g.length===0)&&o.push({path:d,isDir:!0})}}}else if(u.isFile){if(r.trackedPaths.has(d))continue;let l=a&&Tt(a,d,!1)==="ignored";r.onlyIgnored?l&&o.push({path:d,isDir:!1}):l&&s||o.push({path:d,isDir:!1})}}return o}function Gl(e,t){let n=`${t}/`;for(let r of e)if(r.startsWith(n))return!0;return!1}async function fs(e,t,n){return ja(e,t,n,!1)}async function ds(e,t,n){return ja(e,t,n,!0)}async function ja(e,t,n,r){let o=new Set;for(let i of n)await dr(e,i,o);let s=[],a=new Set;for(let i of t)await lr(e,i,o,a,s,r);return s}async function dr(e,t,n){if(n.has(t)||(n.add(t),!await zt(e,t)))return;let r=await ce(e,t);switch(r.type){case"commit":{let o=It(r.content);await dr(e,o.tree,n);for(let s of o.parents)await dr(e,s,n);break}case"tree":{let o=Jt(r.content);for(let s of o.entries)await dr(e,s.hash,n);break}case"tag":{let o=jt(r.content);await dr(e,o.object,n);break}case"blob":break}}async function lr(e,t,n,r,o,s){if(r.has(t)||n.has(t))return;r.add(t);let a=await ce(e,t);switch(o.push(s?{hash:t,type:a.type,content:a.content}:{hash:t,type:a.type}),a.type){case"commit":{let i=It(a.content);await lr(e,i.tree,n,r,o,s);for(let c of i.parents)await lr(e,c,n,r,o,s);break}case"tree":{let i=Jt(a.content);for(let c of i.entries)await lr(e,c.hash,n,r,o,s);break}case"tag":{let i=jt(a.content);await lr(e,i.object,n,r,o,s);break}case"blob":break}}var Nl=new TextEncoder,ls=new TextDecoder,La=65520,_l=new Uint8Array([48,48,48,48]);function kn(e){let t=typeof e=="string"?Nl.encode(e):e,n=4+t.byteLength;if(n>La)throw new Error(`pkt-line too long: ${n} bytes (max ${La})`);let r=n.toString(16).padStart(4,"0"),o=new Uint8Array(n);return o[0]=r.charCodeAt(0),o[1]=r.charCodeAt(1),o[2]=r.charCodeAt(2),o[3]=r.charCodeAt(3),o.set(t,4),o}function yo(){return _l.slice()}function us(...e){let t=0;for(let o of e)t+=o.byteLength;let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function Gn(e){let t=[],n=0;for(;n<e.byteLength;){if(n+4>e.byteLength)throw new Error("Truncated pkt-line header");let r=ls.decode(e.subarray(n,n+4)),o=parseInt(r,16);if(Number.isNaN(o))throw new Error(`Invalid pkt-line length: ${r}`);if(o===0){t.push({type:"flush"}),n+=4;continue}if(o<4)throw new Error(`Invalid pkt-line length: ${o}`);if(n+o>e.byteLength)throw new Error(`Truncated pkt-line: need ${o} bytes at offset ${n}, have ${e.byteLength-n}`);t.push({type:"data",data:e.subarray(n+4,n+o)}),n+=o}return t}function ms(e){if(e.type==="flush")return"";let t=ls.decode(e.data);return t.endsWith(`
278
- `)?t.slice(0,-1):t}var Fl=1,Ul=2,Bl=3;function Eo(e){let t=[],n=[],r=[],o=0;for(let i of e){if(i.type==="flush"||i.data.byteLength===0)continue;let c=i.data[0];if(c===void 0)continue;let f=i.data.subarray(1);switch(c){case Fl:t.push(f),o+=f.byteLength;break;case Ul:n.push(ls.decode(f));break;case Bl:r.push(ls.decode(f));break;default:break}}let s=new Uint8Array(o),a=0;for(let i of t)s.set(i,a),a+=i.byteLength;return{packData:s,progress:n,errors:r}}function xo(e){return e?e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:{Authorization:`Basic ${btoa(`${e.username}:${e.password}`)}`}:{}}async function ko(e,t,n,r=globalThis.fetch){let o=e.replace(/\/+$/,""),s=await r(`${o}/info/refs?service=${t}`,{headers:{...xo(n),"User-Agent":"just-git/1.0"}});if(!s.ok)throw new Error(`HTTP ${s.status} discovering refs at ${o}`);let a=s.headers.get("content-type")??"",i=`application/x-${t}-advertisement`,c=new Uint8Array(await s.arrayBuffer());if(!a.startsWith(i)){let d=new TextDecoder().decode(c.subarray(0,5));if(!/^[0-9a-f]{4}#/.test(d))throw new Error(`Server does not support smart HTTP (Content-Type: ${a})`)}let f=Gn(c);return Wl(f,t)}function Wl(e,t){let n=0,r=e[n];r?.type==="data"&&ms(r)===`# service=${t}`&&n++,e[n]?.type==="flush"&&n++;let o=[],s=[],a=new Map;for(;n<e.length;n++){let i=e[n];if(!i||i.type==="flush")break;let c=i.data,f=c.indexOf(0),d;if(f!==-1){d=new TextDecoder().decode(c.subarray(0,f)),s=new TextDecoder().decode(c.subarray(f+1)).replace(/\n$/,"").split(" ").filter(Boolean);for(let p of s)if(p.startsWith("symref=")){let g=p.slice(7),w=g.indexOf(":");w!==-1&&a.set(g.slice(0,w),g.slice(w+1))}}else d=new TextDecoder().decode(c).replace(/\n$/,"");let u=d.indexOf(" ");if(u===-1)continue;let l=d.slice(0,u),m=d.slice(u+1);if(!(l===Z&&m==="capabilities^{}")){if(m.endsWith("^{}")){let h=m.slice(0,-3),p=o.find(g=>g.name===h);p&&(p.peeledHash=l);continue}o.push({name:m,hash:l})}}return{refs:o,capabilities:s,symrefs:a}}var ql=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","thin-pack","include-tag"];async function Ga(e,t,n,r,o,s=globalThis.fetch){if(t.length===0)throw new Error("fetchPack requires at least one want");let a=_a(r,ql),i=[];i.push(kn(`want ${t[0]} ${a.join(" ")}
279
- `));for(let l=1;l<t.length;l++)i.push(kn(`want ${t[l]}
280
- `));i.push(yo());for(let l of n)i.push(kn(`have ${l}
281
- `));i.push(kn(`done
282
- `));let c=us(...i),f=e.replace(/\/+$/,""),d=await s(`${f}/git-upload-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-upload-pack-request",...xo(o),"User-Agent":"just-git/1.0"},body:c});if(!d.ok)throw new Error(`HTTP ${d.status} fetching pack from ${f}`);let u=new Uint8Array(await d.arrayBuffer());return Kl(u,a.includes("side-band-64k"))}function Kl(e,t){let n=Gn(e),r=[],o=0;for(let f=0;f<n.length;f++){let d=n[f];if(!d||d.type==="flush"){o=f+1;continue}if(d.type!=="data")continue;let u=ms(d);if(u.startsWith("ACK ")||u==="NAK")r.push(u),o=f+1;else{o=f;break}}let s=n.slice(o);if(t){let{packData:f,progress:d,errors:u}=Eo(s);if(u.length>0)throw new Error(`Remote error: ${u.join("")}`);return{packData:f,acks:r,progress:d}}let a=0;for(let f of s)f.type==="data"&&(a+=f.data.byteLength);let i=new Uint8Array(a),c=0;for(let f of s)f.type==="data"&&(i.set(f.data,c),c+=f.data.byteLength);return{packData:i,acks:r,progress:[]}}var zl=["report-status","side-band-64k","ofs-delta","delete-refs"];async function Na(e,t,n,r,o,s=globalThis.fetch){if(t.length===0)throw new Error("pushPack requires at least one command");let a=_a(r,zl),i=[],[c,...f]=t;if(!c)throw new Error("pushPack requires at least one command");i.push(kn(`${c.oldHash} ${c.newHash} ${c.refName}\0${a.join(" ")}
283
- `));for(let h of f)i.push(kn(`${h.oldHash} ${h.newHash} ${h.refName}
284
- `));i.push(yo());let d;if(n&&n.byteLength>0){let h=us(...i);d=new Uint8Array(h.byteLength+n.byteLength),d.set(h,0),d.set(n,h.byteLength)}else d=us(...i);let u=e.replace(/\/+$/,""),l=await s(`${u}/git-receive-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-receive-pack-request",...xo(o),"User-Agent":"just-git/1.0"},body:d});if(!l.ok)throw new Error(`HTTP ${l.status} pushing to ${u}`);let m=new Uint8Array(await l.arrayBuffer());return a.includes("report-status")?Vl(m,a.includes("side-band-64k")):{unpackOk:!0,refResults:[],progress:[]}}function Vl(e,t){let n,r=[];if(t){let i=Gn(e),{packData:c,progress:f,errors:d}=Eo(i);if(d.length>0)throw new Error(`Remote error: ${d.join("")}`);r=f,n=Gn(c)}else n=Gn(e);let o=!1,s,a=[];for(let i of n){if(i.type==="flush")break;let c=ms(i);if(c.startsWith("unpack "))o=c==="unpack ok",o||(s=c.slice(7));else if(c.startsWith("ok "))a.push({name:c.slice(3),ok:!0});else if(c.startsWith("ng ")){let f=c.slice(3),d=f.indexOf(" ");d!==-1?a.push({name:f.slice(0,d),ok:!1,error:f.slice(d+1)}):a.push({name:f,ok:!1})}}return{unpackOk:o,unpackError:s,refResults:a,progress:r}}function _a(e,t){let n=new Set(e.map(o=>o.split("=",1)[0]??o)),r=[];for(let o of t)n.has(o)&&r.push(o);return r.push("agent=just-git/1.0"),r}var ur=class{constructor(t,n){this.local=t;this.remote=n}headTarget;async advertiseRefs(){let t=await le(this.remote),n=[];for(let s of t)n.push({name:s.name,hash:s.hash});let r=await F(this.remote,"HEAD");r&&n.push({name:"HEAD",hash:r});let o=await J(this.remote);return o?.type==="symbolic"&&(this.headTarget=o.target),n}async fetch(t,n){let r=await this.advertiseRefs();if(t.length===0)return{remoteRefs:r,objectCount:0};let o=await fs(this.remote,t,n);if(o.length===0)return{remoteRefs:r,objectCount:0};let s=[];for(let c of o){let f=await ce(this.remote,c.hash);s.push({type:f.type,content:f.content})}let a=await $r(s),i=await Ar(this.local,a);return{remoteRefs:r,objectCount:i}}async push(t){let n=[],r=[];for(let s of t)s.newHash!==Z&&n.push(s.newHash),s.oldHash&&r.push(s.oldHash);if(n.length>0){let s=await fs(this.local,n,r);if(s.length>0){let a=[];for(let c of s){let f=await ce(this.local,c.hash);a.push({type:f.type,content:f.content})}let i=await $r(a);await Ar(this.remote,i)}}let o=[];for(let s of t)try{if(s.newHash===Z){await ie(this.remote,s.name),o.push({...s,ok:!0});continue}let a=await F(this.remote,s.name);if(a&&!s.ok&&!await _t(this.remote,a,s.newHash)){o.push({...s,ok:!1,error:`non-fast-forward update rejected for ${s.name}`});continue}await Y(this.remote,s.name,s.newHash),o.push({...s,ok:!0})}catch(a){o.push({...s,ok:!1,error:a instanceof Error?a.message:String(a)})}return{updates:o}}},mr=class{constructor(t,n,r,o){this.local=t;this.url=n;this.auth=r;this.fetchFn=o}headTarget;cachedFetchCaps=null;cachedPushCaps=null;cachedFetchRefs=null;async advertiseRefs(){let t=await ko(this.url,"git-upload-pack",this.auth,this.fetchFn);this.cachedFetchCaps=t.capabilities,this.cachedFetchRefs=t.refs;let n=t.symrefs.get("HEAD");return n&&(this.headTarget=n),t.refs}async ensureFetchDiscovery(){return(!this.cachedFetchCaps||!this.cachedFetchRefs)&&await this.advertiseRefs(),{caps:this.cachedFetchCaps,refs:this.cachedFetchRefs}}async ensurePushDiscovery(){if(!this.cachedPushCaps){let t=await ko(this.url,"git-receive-pack",this.auth,this.fetchFn);this.cachedPushCaps=t.capabilities}return this.cachedPushCaps}async fetch(t,n){let{caps:r,refs:o}=await this.ensureFetchDiscovery();if(t.length===0)return{remoteRefs:o,objectCount:0};let s=await Ga(this.url,t,n,r,this.auth,this.fetchFn);if(s.packData.byteLength===0)return{remoteRefs:o,objectCount:0};let a=await Ar(this.local,s.packData);return{remoteRefs:o,objectCount:a}}async push(t){for(let d of t)if(d.oldHash&&d.oldHash!==Z&&d.newHash!==Z&&!d.ok&&!await _t(this.local,d.oldHash,d.newHash))return{updates:t.map(l=>l===d?{...l,ok:!1,error:"non-fast-forward"}:{...l,ok:!1,error:"atomic push failed"})};let n=await this.ensurePushDiscovery(),r=t.map(d=>({oldHash:d.oldHash??Z,newHash:d.newHash,refName:d.name})),o=[],s=[],a=!1;for(let d of t)d.newHash!==Z&&(o.push(d.newHash),a=!0),d.oldHash&&d.oldHash!==Z&&s.push(d.oldHash);let i=null;if(a){let d=await fs(this.local,o,s),u=[];for(let l of d){let m=await ce(this.local,l.hash);u.push({type:m.type,content:m.content})}i=await $r(u)}let c=await Na(this.url,r,i,n,this.auth,this.fetchFn);return{updates:t.map(d=>{let u=c.refResults.find(h=>h.name===d.name),l=u?.ok??c.unpackOk,m=u?.error??(!l&&c.unpackError?`unpack failed: ${c.unpackError}`:void 0);return{...d,ok:l,error:m}})}}};async function Yl(e,t){let r=(await ae(e))[`remote "${t}"`];return r?.url?{name:t,url:r.url,fetchRefspec:r.fetch??"+refs/heads/*:refs/remotes/origin/*"}:null}function Co(e){return e.startsWith("http://")||e.startsWith("https://")}function Fa(e,t){if(t===void 0)return null;if(t===!1)return"network access is disabled";if(!t.allowed)return null;if(t.allowed.length===0)return"network access is disabled";let n;try{n=new URL(e).hostname}catch{return`network policy: access to '${e}' is not allowed`}for(let r of t.allowed)if(Co(r)){if(e===r||e.startsWith(r))return null}else if(n===r)return null;return`network policy: access to '${e}' is not allowed`}function Xl(e){let t=e.get("GIT_HTTP_BEARER_TOKEN");if(t)return{type:"bearer",token:t};let n=e.get("GIT_HTTP_USER"),r=e.get("GIT_HTTP_PASSWORD");if(n&&r)return{type:"basic",username:n,password:r}}async function Ua(e,t,n){if(e.credentialProvider){let r=await e.credentialProvider(t);if(r)return r}return Xl(n)}async function Ba(e,t,n,r){if(Co(t)){let o=Fa(t,e.networkPolicy);if(o)throw new Error(o);let s=await Ua(e,t,n);return new mr(e,t,s,e.fetchFn)}if(!r)throw new Error(`'${t}' does not appear to be a git repository`);return new ur(e,r)}async function Nn(e,t,n){let r=await Yl(e,t);if(!r)return null;if(Co(r.url)){let s=Fa(r.url,e.networkPolicy);if(s)throw new Error(s);let a=n?await Ua(e,r.url,n):void 0;return{transport:new mr(e,r.url,a,e.fetchFn),config:r}}let o=await $n(e.fs,r.url);return o?{transport:new ur(e,o),config:r}:null}function Wa(e,t){e.command("clone",{description:"Clone a repository into a new directory",args:[W.string().name("repository").describe("Repository to clone"),W.string().name("directory").describe("Target directory").optional()],options:{bare:A().describe("Create a bare clone"),branch:te.string().alias("b").describe("Checkout this branch instead of HEAD")},handler:async(n,r)=>{let o=n.repository;if(!o)return T("You must specify a repository to clone.");let s=o.startsWith("http://")||o.startsWith("https://"),a=s?o:ct(r.cwd,o),i=n.branch,c=n.directory;if(!c){let E=s?o.split("/").pop()??o:Wn(a);E.endsWith(".git")&&(E=E.slice(0,-4)),c=E}let f=ct(r.cwd,c);if(t?.hooks){let E=await t.hooks.emitPre("pre-clone",{repository:o,targetPath:f,bare:n.bare,branch:i??null});if(E)return{stdout:"",stderr:E.message??"",exitCode:1}}if(await r.fs.exists(f))try{if((await r.fs.readdir(f)).length>0)return T(`destination path '${c}' already exists and is not an empty directory.`)}catch{return T(`destination path '${c}' already exists and is not an empty directory.`)}let d=null;if(!s&&(d=await $n(r.fs,a),!d))return T(`repository '${o}' does not exist`);await r.fs.mkdir(f,{recursive:!0});let{ctx:u}=await vr(r.fs,f,{bare:n.bare}),l=t?{...u,hooks:t.hooks,credentialProvider:t.credentialProvider,identityOverride:t.identityOverride,fetchFn:t.fetchFn,networkPolicy:t.networkPolicy}:u,m=await ae(l);m['remote "origin"']={url:a,fetch:"+refs/heads/*:refs/remotes/origin/*"},await Ge(l,m);let h;try{h=await Ba(l,a,r.env,d??void 0)}catch(E){let I=E instanceof Error?E.message:"";return I.startsWith("network")?T(I):T(`repository '${o}' does not exist`)}let p=await h.advertiseRefs();if(p.length===0)return await t?.hooks?.emitPost("post-clone",{repository:o,targetPath:f,bare:n.bare,branch:i??null}),{stdout:"",stderr:`Cloning into '${c}'...
286
+ `}function ja(e,t){e.command("clean",{description:"Remove untracked files from the working tree",args:[W.string().name("pathspec").describe("Pathspec to limit which files are removed").optional().variadic()],options:{force:v().alias("f").describe("Required to actually remove files"),"dry-run":v().alias("n").describe("Don't actually remove anything, just show what would be done"),directories:v().alias("d").describe("Also remove untracked directories"),removeIgnored:v().alias("x").describe("Remove ignored files as well"),onlyIgnored:v().alias("X").describe("Remove only ignored files"),exclude:te.string().alias("e").describe("Additional exclude pattern")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c=n["dry-run"],f=n.force,d=n.directories,u=n.removeIgnored,l=n.onlyIgnored;if(t?.hooks){let C=await t.hooks.emitPre("pre-clean",{dryRun:c,force:f,removeDirs:d,removeIgnored:u,onlyIgnored:l});if(C)return{stdout:"",stderr:C.message??"",exitCode:1}}if(!f&&!c&&await Et(s,"clean.requireForce")!=="false")return T("clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean");let m=await U(s),h=new Set(m.entries.map(C=>C.path)),p=Ze(s,r.cwd),g=n.pathspec,w=g.length>0?g.map(C=>Oe(C,p)):null,x=n.exclude?[n.exclude]:[],b=await La(s,i,"",{trackedPaths:h,removeDirs:d,removeIgnored:u,onlyIgnored:l,extraExcludes:x}),E;w?E=b.filter(C=>me(w,C.path)):E=b,E.sort((C,O)=>C.path<O.path?-1:C.path>O.path?1:0);let k=[];if(c)for(let C of E){let O=C.isDir?`Would remove ${C.path}/`:`Would remove ${C.path}`;k.push(O)}else for(let C of E){let O=H(i,C.path);C.isDir?(await r.fs.rm(O,{recursive:!0}),k.push(`Removing ${C.path}/`)):(await r.fs.rm(O),k.push(`Removing ${C.path}`))}let P=k.length>0?`${k.join(`
287
+ `)}
288
+ `:"";return await t?.hooks?.emitPost("post-clean",{removed:E.map(C=>C.path),dryRun:c}),{stdout:P,stderr:"",exitCode:0}}})}async function La(e,t,n,r){let o=[],s=!r.removeIgnored,a=null;if(s||r.onlyIgnored){a=r._ignore??await vn(e);let c=H(t,".gitignore");try{let f=await e.fs.readFile(c);a=gn(a,f,n,c)}catch{}if(!r._ignore&&r.extraExcludes.length>0){let f=r.extraExcludes.join(`
289
+ `),d=sr(f,"","<cli>");a={...a,dirPatterns:[d,...a.dirPatterns]}}}let i=await e.fs.readdir(t);for(let c of i){if(n===""&&c===".git")continue;let f=H(t,c),d=n?`${n}/${c}`:c,u=await e.fs.stat(f);if(u.isDirectory){let l=a&&Tt(a,d,!0)==="ignored",m=_l(r.trackedPaths,d),h=()=>La(e,f,d,{...r,_ignore:a??void 0});if(r.onlyIgnored){if(l&&!m){r.removeDirs&&o.push({path:d,isDir:!0});continue}let p=await h();!m&&r.removeDirs?p.length>0&&o.push({path:d,isDir:!0}):o.push(...p)}else if(m){let p=await h();o.push(...p)}else if(!(l&&s)){if(r.removeDirs)if(r.removeIgnored)o.push({path:d,isDir:!0});else{let p=await h(),g=await e.fs.readdir(f);(p.length>0||g.length===0)&&o.push({path:d,isDir:!0})}}}else if(u.isFile){if(r.trackedPaths.has(d))continue;let l=a&&Tt(a,d,!1)==="ignored";r.onlyIgnored?l&&o.push({path:d,isDir:!1}):l&&s||o.push({path:d,isDir:!1})}}return o}function _l(e,t){let n=`${t}/`;for(let r of e)if(r.startsWith(n))return!0;return!1}async function us(e,t,n){return Ga(e,t,n,!1)}async function ms(e,t,n){return Ga(e,t,n,!0)}async function Ga(e,t,n,r){let o=new Set;for(let i of n)await ur(e,i,o);let s=[],a=new Set;for(let i of t)await mr(e,i,o,a,s,r);return s}async function ur(e,t,n){if(n.has(t)||(n.add(t),!await Vt(e,t)))return;let r=await fe(e,t);switch(r.type){case"commit":{let o=Rt(r.content);await ur(e,o.tree,n);for(let s of o.parents)await ur(e,s,n);break}case"tree":{let o=Qt(r.content);for(let s of o.entries)await ur(e,s.hash,n);break}case"tag":{let o=jt(r.content);await ur(e,o.object,n);break}case"blob":break}}async function mr(e,t,n,r,o,s){if(r.has(t)||n.has(t))return;r.add(t);let a=await fe(e,t);switch(o.push(s?{hash:t,type:a.type,content:a.content}:{hash:t,type:a.type}),a.type){case"commit":{let i=Rt(a.content);await mr(e,i.tree,n,r,o,s);for(let c of i.parents)await mr(e,c,n,r,o,s);break}case"tree":{let i=Qt(a.content);for(let c of i.entries)await mr(e,c.hash,n,r,o,s);break}case"tag":{let i=jt(a.content);await mr(e,i.object,n,r,o,s);break}case"blob":break}}var Fl=new TextEncoder,hs=new TextDecoder,Na=65520,Ul=new Uint8Array([48,48,48,48]);function Pn(e){let t=typeof e=="string"?Fl.encode(e):e,n=4+t.byteLength;if(n>Na)throw new Error(`pkt-line too long: ${n} bytes (max ${Na})`);let r=n.toString(16).padStart(4,"0"),o=new Uint8Array(n);return o[0]=r.charCodeAt(0),o[1]=r.charCodeAt(1),o[2]=r.charCodeAt(2),o[3]=r.charCodeAt(3),o.set(t,4),o}function xo(){return Ul.slice()}function ps(...e){let t=0;for(let o of e)t+=o.byteLength;let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function Fn(e){let t=[],n=0;for(;n<e.byteLength;){if(n+4>e.byteLength)throw new Error("Truncated pkt-line header");let r=hs.decode(e.subarray(n,n+4)),o=parseInt(r,16);if(Number.isNaN(o))throw new Error(`Invalid pkt-line length: ${r}`);if(o===0){t.push({type:"flush"}),n+=4;continue}if(o<4)throw new Error(`Invalid pkt-line length: ${o}`);if(n+o>e.byteLength)throw new Error(`Truncated pkt-line: need ${o} bytes at offset ${n}, have ${e.byteLength-n}`);t.push({type:"data",data:e.subarray(n+4,n+o)}),n+=o}return t}function gs(e){if(e.type==="flush")return"";let t=hs.decode(e.data);return t.endsWith(`
290
+ `)?t.slice(0,-1):t}var Bl=1,Wl=2,ql=3;function ko(e){let t=[],n=[],r=[],o=0;for(let i of e){if(i.type==="flush"||i.data.byteLength===0)continue;let c=i.data[0];if(c===void 0)continue;let f=i.data.subarray(1);switch(c){case Bl:t.push(f),o+=f.byteLength;break;case Wl:n.push(hs.decode(f));break;case ql:r.push(hs.decode(f));break;default:break}}let s=new Uint8Array(o),a=0;for(let i of t)s.set(i,a),a+=i.byteLength;return{packData:s,progress:n,errors:r}}function Co(e){return e?e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:{Authorization:`Basic ${btoa(`${e.username}:${e.password}`)}`}:{}}async function Po(e,t,n,r=globalThis.fetch){let o=e.replace(/\/+$/,""),s=await r(`${o}/info/refs?service=${t}`,{headers:{...Co(n),"User-Agent":"just-git/1.0"}});if(!s.ok)throw new Error(`HTTP ${s.status} discovering refs at ${o}`);let a=s.headers.get("content-type")??"",i=`application/x-${t}-advertisement`,c=new Uint8Array(await s.arrayBuffer());if(!a.startsWith(i)){let d=new TextDecoder().decode(c.subarray(0,5));if(!/^[0-9a-f]{4}#/.test(d))throw new Error(`Server does not support smart HTTP (Content-Type: ${a})`)}let f=Fn(c);return Kl(f,t)}function Kl(e,t){let n=0,r=e[n];r?.type==="data"&&gs(r)===`# service=${t}`&&n++,e[n]?.type==="flush"&&n++;let o=[],s=[],a=new Map;for(;n<e.length;n++){let i=e[n];if(!i||i.type==="flush")break;let c=i.data,f=c.indexOf(0),d;if(f!==-1){d=new TextDecoder().decode(c.subarray(0,f)),s=new TextDecoder().decode(c.subarray(f+1)).replace(/\n$/,"").split(" ").filter(Boolean);for(let p of s)if(p.startsWith("symref=")){let g=p.slice(7),w=g.indexOf(":");w!==-1&&a.set(g.slice(0,w),g.slice(w+1))}}else d=new TextDecoder().decode(c).replace(/\n$/,"");let u=d.indexOf(" ");if(u===-1)continue;let l=d.slice(0,u),m=d.slice(u+1);if(!(l===Z&&m==="capabilities^{}")){if(m.endsWith("^{}")){let h=m.slice(0,-3),p=o.find(g=>g.name===h);p&&(p.peeledHash=l);continue}o.push({name:m,hash:l})}}return{refs:o,capabilities:s,symrefs:a}}var zl=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","thin-pack","include-tag"];async function _a(e,t,n,r,o,s=globalThis.fetch){if(t.length===0)throw new Error("fetchPack requires at least one want");let a=Ua(r,zl),i=[];i.push(Pn(`want ${t[0]} ${a.join(" ")}
291
+ `));for(let l=1;l<t.length;l++)i.push(Pn(`want ${t[l]}
292
+ `));i.push(xo());for(let l of n)i.push(Pn(`have ${l}
293
+ `));i.push(Pn(`done
294
+ `));let c=ps(...i),f=e.replace(/\/+$/,""),d=await s(`${f}/git-upload-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-upload-pack-request",...Co(o),"User-Agent":"just-git/1.0"},body:c});if(!d.ok)throw new Error(`HTTP ${d.status} fetching pack from ${f}`);let u=new Uint8Array(await d.arrayBuffer());return Vl(u,a.includes("side-band-64k"))}function Vl(e,t){let n=Fn(e),r=[],o=0;for(let f=0;f<n.length;f++){let d=n[f];if(!d||d.type==="flush"){o=f+1;continue}if(d.type!=="data")continue;let u=gs(d);if(u.startsWith("ACK ")||u==="NAK")r.push(u),o=f+1;else{o=f;break}}let s=n.slice(o);if(t){let{packData:f,progress:d,errors:u}=ko(s);if(u.length>0)throw new Error(`Remote error: ${u.join("")}`);return{packData:f,acks:r,progress:d}}let a=0;for(let f of s)f.type==="data"&&(a+=f.data.byteLength);let i=new Uint8Array(a),c=0;for(let f of s)f.type==="data"&&(i.set(f.data,c),c+=f.data.byteLength);return{packData:i,acks:r,progress:[]}}var Yl=["report-status","side-band-64k","ofs-delta","delete-refs"];async function Fa(e,t,n,r,o,s=globalThis.fetch){if(t.length===0)throw new Error("pushPack requires at least one command");let a=Ua(r,Yl),i=[],[c,...f]=t;if(!c)throw new Error("pushPack requires at least one command");i.push(Pn(`${c.oldHash} ${c.newHash} ${c.refName}\0${a.join(" ")}
295
+ `));for(let h of f)i.push(Pn(`${h.oldHash} ${h.newHash} ${h.refName}
296
+ `));i.push(xo());let d;if(n&&n.byteLength>0){let h=ps(...i);d=new Uint8Array(h.byteLength+n.byteLength),d.set(h,0),d.set(n,h.byteLength)}else d=ps(...i);let u=e.replace(/\/+$/,""),l=await s(`${u}/git-receive-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-receive-pack-request",...Co(o),"User-Agent":"just-git/1.0"},body:d});if(!l.ok)throw new Error(`HTTP ${l.status} pushing to ${u}`);let m=new Uint8Array(await l.arrayBuffer());return a.includes("report-status")?Xl(m,a.includes("side-band-64k")):{unpackOk:!0,refResults:[],progress:[]}}function Xl(e,t){let n,r=[];if(t){let i=Fn(e),{packData:c,progress:f,errors:d}=ko(i);if(d.length>0)throw new Error(`Remote error: ${d.join("")}`);r=f,n=Fn(c)}else n=Fn(e);let o=!1,s,a=[];for(let i of n){if(i.type==="flush")break;let c=gs(i);if(c.startsWith("unpack "))o=c==="unpack ok",o||(s=c.slice(7));else if(c.startsWith("ok "))a.push({name:c.slice(3),ok:!0});else if(c.startsWith("ng ")){let f=c.slice(3),d=f.indexOf(" ");d!==-1?a.push({name:f.slice(0,d),ok:!1,error:f.slice(d+1)}):a.push({name:f,ok:!1})}}return{unpackOk:o,unpackError:s,refResults:a,progress:r}}function Ua(e,t){let n=new Set(e.map(o=>o.split("=",1)[0]??o)),r=[];for(let o of t)n.has(o)&&r.push(o);return r.push("agent=just-git/1.0"),r}var hr=class{constructor(t,n){this.local=t;this.remote=n}headTarget;async advertiseRefs(){let t=await le(this.remote),n=[];for(let s of t)n.push({name:s.name,hash:s.hash});let r=await F(this.remote,"HEAD");r&&n.push({name:"HEAD",hash:r});let o=await J(this.remote);return o?.type==="symbolic"&&(this.headTarget=o.target),n}async fetch(t,n){let r=await this.advertiseRefs();if(t.length===0)return{remoteRefs:r,objectCount:0};let o=await us(this.remote,t,n);if(o.length===0)return{remoteRefs:r,objectCount:0};let s=[];for(let c of o){let f=await fe(this.remote,c.hash);s.push({type:f.type,content:f.content})}let a=await Hr(s),i=await Sr(this.local,a);return{remoteRefs:r,objectCount:i}}async push(t){let n=[],r=[];for(let s of t)s.newHash!==Z&&n.push(s.newHash),s.oldHash&&r.push(s.oldHash);if(n.length>0){let s=await us(this.local,n,r);if(s.length>0){let a=[];for(let c of s){let f=await fe(this.local,c.hash);a.push({type:f.type,content:f.content})}let i=await Hr(a);await Sr(this.remote,i)}}let o=[];for(let s of t)try{if(s.newHash===Z){await ae(this.remote,s.name),o.push({...s,ok:!0});continue}let a=await F(this.remote,s.name);if(a&&!s.ok&&!await Ft(this.remote,a,s.newHash)){o.push({...s,ok:!1,error:`non-fast-forward update rejected for ${s.name}`});continue}await Y(this.remote,s.name,s.newHash),o.push({...s,ok:!0})}catch(a){o.push({...s,ok:!1,error:a instanceof Error?a.message:String(a)})}return{updates:o}}},pr=class{constructor(t,n,r,o){this.local=t;this.url=n;this.auth=r;this.fetchFn=o}headTarget;cachedFetchCaps=null;cachedPushCaps=null;cachedFetchRefs=null;async advertiseRefs(){let t=await Po(this.url,"git-upload-pack",this.auth,this.fetchFn);this.cachedFetchCaps=t.capabilities,this.cachedFetchRefs=t.refs;let n=t.symrefs.get("HEAD");return n&&(this.headTarget=n),t.refs}async ensureFetchDiscovery(){return(!this.cachedFetchCaps||!this.cachedFetchRefs)&&await this.advertiseRefs(),{caps:this.cachedFetchCaps,refs:this.cachedFetchRefs}}async ensurePushDiscovery(){if(!this.cachedPushCaps){let t=await Po(this.url,"git-receive-pack",this.auth,this.fetchFn);this.cachedPushCaps=t.capabilities}return this.cachedPushCaps}async fetch(t,n){let{caps:r,refs:o}=await this.ensureFetchDiscovery();if(t.length===0)return{remoteRefs:o,objectCount:0};let s=await _a(this.url,t,n,r,this.auth,this.fetchFn);if(s.packData.byteLength===0)return{remoteRefs:o,objectCount:0};let a=await Sr(this.local,s.packData);return{remoteRefs:o,objectCount:a}}async push(t){for(let d of t)if(d.oldHash&&d.oldHash!==Z&&d.newHash!==Z&&!d.ok&&!await Ft(this.local,d.oldHash,d.newHash))return{updates:t.map(l=>l===d?{...l,ok:!1,error:"non-fast-forward"}:{...l,ok:!1,error:"atomic push failed"})};let n=await this.ensurePushDiscovery(),r=t.map(d=>({oldHash:d.oldHash??Z,newHash:d.newHash,refName:d.name})),o=[],s=[],a=!1;for(let d of t)d.newHash!==Z&&(o.push(d.newHash),a=!0),d.oldHash&&d.oldHash!==Z&&s.push(d.oldHash);let i=null;if(a){let d=await us(this.local,o,s),u=[];for(let l of d){let m=await fe(this.local,l.hash);u.push({type:m.type,content:m.content})}i=await Hr(u)}let c=await Fa(this.url,r,i,n,this.auth,this.fetchFn);return{updates:t.map(d=>{let u=c.refResults.find(h=>h.name===d.name),l=u?.ok??c.unpackOk,m=u?.error??(!l&&c.unpackError?`unpack failed: ${c.unpackError}`:void 0);return{...d,ok:l,error:m}})}}};async function Zl(e,t){let r=(await ce(e))[`remote "${t}"`];return r?.url?{name:t,url:r.url,fetchRefspec:r.fetch??"+refs/heads/*:refs/remotes/origin/*"}:null}function Oo(e){return e.startsWith("http://")||e.startsWith("https://")}function Ba(e,t){if(t===void 0)return null;if(t===!1)return"network access is disabled";if(!t.allowed)return null;if(t.allowed.length===0)return"network access is disabled";let n;try{n=new URL(e).hostname}catch{return`network policy: access to '${e}' is not allowed`}for(let r of t.allowed)if(Oo(r)){if(e===r||e.startsWith(r))return null}else if(n===r)return null;return`network policy: access to '${e}' is not allowed`}function Jl(e){let t=e.get("GIT_HTTP_BEARER_TOKEN");if(t)return{type:"bearer",token:t};let n=e.get("GIT_HTTP_USER"),r=e.get("GIT_HTTP_PASSWORD");if(n&&r)return{type:"basic",username:n,password:r}}async function Wa(e,t,n){if(e.credentialProvider){let r=await e.credentialProvider(t);if(r)return r}return Jl(n)}async function qa(e,t,n,r){if(Oo(t)){let o=Ba(t,e.networkPolicy);if(o)throw new Error(o);let s=await Wa(e,t,n);return new pr(e,t,s,e.fetchFn)}if(!r)throw new Error(`'${t}' does not appear to be a git repository`);return new hr(e,r)}async function Un(e,t,n){let r=await Zl(e,t);if(!r)return null;if(Oo(r.url)){let s=Ba(r.url,e.networkPolicy);if(s)throw new Error(s);let a=n?await Wa(e,r.url,n):void 0;return{transport:new pr(e,r.url,a,e.fetchFn),config:r}}let o=await Hn(e.fs,r.url);return o?{transport:new hr(e,o),config:r}:null}function Ka(e,t){e.command("clone",{description:"Clone a repository into a new directory",args:[W.string().name("repository").describe("Repository to clone"),W.string().name("directory").describe("Target directory").optional()],options:{bare:v().describe("Create a bare clone"),branch:te.string().alias("b").describe("Checkout this branch instead of HEAD")},handler:async(n,r)=>{let o=n.repository;if(!o)return T("You must specify a repository to clone.");let s=o.startsWith("http://")||o.startsWith("https://"),a=s?o:ft(r.cwd,o),i=n.branch,c=n.directory;if(!c){let y=s?o.split("/").pop()??o:zn(a);y.endsWith(".git")&&(y=y.slice(0,-4)),c=y}let f=ft(r.cwd,c);if(t?.hooks){let y=await t.hooks.emitPre("pre-clone",{repository:o,targetPath:f,bare:n.bare,branch:i??null});if(y)return{stdout:"",stderr:y.message??"",exitCode:1}}if(await r.fs.exists(f))try{if((await r.fs.readdir(f)).length>0)return T(`destination path '${c}' already exists and is not an empty directory.`)}catch{return T(`destination path '${c}' already exists and is not an empty directory.`)}let d=null;if(!s&&(d=await Hn(r.fs,a),!d))return T(`repository '${o}' does not exist`);await r.fs.mkdir(f,{recursive:!0});let{ctx:u}=await Dr(r.fs,f,{bare:n.bare}),l=t?{...u,hooks:t.hooks,credentialProvider:t.credentialProvider,identityOverride:t.identityOverride,fetchFn:t.fetchFn,networkPolicy:t.networkPolicy}:u,m=await ce(l);m['remote "origin"']={url:a,fetch:"+refs/heads/*:refs/remotes/origin/*"},await Ge(l,m);let h;try{h=await qa(l,a,r.env,d??void 0)}catch(y){let I=y instanceof Error?y.message:"";return I.startsWith("network")?T(I):T(`repository '${o}' does not exist`)}let p=await h.advertiseRefs();if(p.length===0)return await t?.hooks?.emitPost("post-clone",{repository:o,targetPath:f,bare:n.bare,branch:i??null}),{stdout:"",stderr:`Cloning into '${c}'...
285
297
  warning: You appear to have cloned an empty repository.
286
- `,exitCode:0};let g=[],w=new Set;for(let E of p)E.name!=="HEAD"&&(w.has(E.hash)||(w.add(E.hash),g.push(E.hash)));g.length>0&&await h.fetch(g,[]);let x=p.find(E=>E.name==="HEAD"),b=null,y=null,k=await Ot(l,r.env),C=`clone: from ${a}`,P=h.headTarget;P?.startsWith("refs/heads/")&&p.some(E=>E.name===P)&&(b=P.slice(11),y=p.find(E=>E.name===P)?.hash??null);for(let E of p)if(E.name!=="HEAD"){if(E.name.startsWith("refs/heads/")){let I=E.name.slice(11),H=`refs/remotes/origin/${I}`;await Y(l,H,E.hash),await Te(l,H,{oldHash:Z,newHash:E.hash,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:C}),!b&&x&&E.hash===x.hash&&(b=I,y=E.hash)}E.name.startsWith("refs/tags/")&&await Y(l,E.name,E.hash)}if(i){let E=p.find(I=>I.name===`refs/heads/${i}`);if(!E)return T(`Remote branch '${i}' not found in upstream origin`);b=i,y=E.hash}if(!b){let E=p.find(I=>I.name.startsWith("refs/heads/"));E&&(b=E.name.slice(11),y=E.hash)}if(n.bare)return b&&await $e(l,"HEAD",`refs/heads/${b}`),await t?.hooks?.emitPost("post-clone",{repository:o,targetPath:f,bare:n.bare,branch:b}),{stdout:"",stderr:`Cloning into bare repository '${c}'...
287
- `,exitCode:0};if(b&&await $e(l,"refs/remotes/origin/HEAD",`refs/remotes/origin/${b}`),b&&y){await Y(l,`refs/heads/${b}`,y),await $e(l,"HEAD",`refs/heads/${b}`);let E={oldHash:Z,newHash:y,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:C};await Te(l,`refs/heads/${b}`,E),await Te(l,"HEAD",E);let I=await ae(l);I[`branch "${b}"`]={remote:"origin",merge:`refs/heads/${b}`},await Ge(l,I);let H=await M(l,y);await Gi(l,H.tree);let _=await He(l,H.tree),G=Or(_.map(z=>({path:z.path,mode:parseInt(z.mode,8),hash:z.hash,stage:0,stat:pe()})));await re(l,G)}let O={stdout:"",stderr:`Cloning into '${c}'...
288
- `,exitCode:0};return await t?.hooks?.emitPost("post-clone",{repository:o,targetPath:f,bare:n.bare,branch:b}),O}})}function qa(e,t){e.command("commit",{description:"Record changes to the repository",options:{message:te.string().alias("m").describe("Commit message"),file:te.string().alias("F").describe("Read commit message from file ('-' for stdin)"),allowEmpty:A().describe("Allow creating an empty commit"),amend:A().describe("Amend the previous commit"),noEdit:A().describe("Use the previous commit message without editing"),all:A().alias("a").describe("Auto-stage modified and deleted tracked files")},handler:async(n,r)=>{if(n.message!==void 0&&n.file!==void 0)return T("options '-m' and '-F' cannot be used together");let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await U(s);if(n.all){let Q=Fe(s);if(Q)return Q;let ge=await lt(s,a);for(let Ie of ge)Ie.status==="modified"?a=(await Gt(s,a,Ie.path)).index:Ie.status==="deleted"&&(a=Ne(a,Ie.path));let De=new Set(xe(a).map(Ie=>Ie.path)),dn=new Set(a.entries.filter(Ie=>Ie.stage>0&&!De.has(Ie.path)).map(Ie=>Ie.path));for(let Ie of dn){let wr=v(s.workTree,Ie);await r.fs.exists(wr)?a=(await Gt(s,a,Ie)).index:a=Ne(a,Ie)}}let i=await F(s,"MERGE_HEAD"),c=await F(s,"CHERRY_PICK_HEAD"),f=await F(s,"REVERT_HEAD"),u=await gt(s)?await F(s,"REBASE_HEAD"):null,l=n.amend,m=await X(s);if(l){if(!m)return T("You have nothing yet to amend.");if(i)return T("You are in the middle of a merge -- cannot amend.");if(c)return T("You are in the middle of a cherry-pick -- cannot amend.")}if(dt(a)){let Q=new Set,ge=[];for(let De of a.entries)De.stage>0&&!Q.has(De.path)&&(Q.add(De.path),ge.push(`U ${De.path}`));return ge.sort(),{stdout:ge.length>0?`${ge.join(`
298
+ `,exitCode:0};let g=[],w=new Set;for(let y of p)y.name!=="HEAD"&&(w.has(y.hash)||(w.add(y.hash),g.push(y.hash)));g.length>0&&await h.fetch(g,[]);let x=p.find(y=>y.name==="HEAD"),b=null,E=null,k=await Ot(l,r.env),P=`clone: from ${a}`,C=h.headTarget;C?.startsWith("refs/heads/")&&p.some(y=>y.name===C)&&(b=C.slice(11),E=p.find(y=>y.name===C)?.hash??null);for(let y of p)if(y.name!=="HEAD"){if(y.name.startsWith("refs/heads/")){let I=y.name.slice(11),A=`refs/remotes/origin/${I}`;await Y(l,A,y.hash),await Te(l,A,{oldHash:Z,newHash:y.hash,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:P}),!b&&x&&y.hash===x.hash&&(b=I,E=y.hash)}y.name.startsWith("refs/tags/")&&await Y(l,y.name,y.hash)}if(i){let y=p.find(I=>I.name===`refs/heads/${i}`);if(!y)return T(`Remote branch '${i}' not found in upstream origin`);b=i,E=y.hash}if(!b){let y=p.find(I=>I.name.startsWith("refs/heads/"));y&&(b=y.name.slice(11),E=y.hash)}if(n.bare)return b&&await $e(l,"HEAD",`refs/heads/${b}`),await t?.hooks?.emitPost("post-clone",{repository:o,targetPath:f,bare:n.bare,branch:b}),{stdout:"",stderr:`Cloning into bare repository '${c}'...
299
+ `,exitCode:0};if(b&&await $e(l,"refs/remotes/origin/HEAD",`refs/remotes/origin/${b}`),b&&E){await Y(l,`refs/heads/${b}`,E),await $e(l,"HEAD",`refs/heads/${b}`);let y={oldHash:Z,newHash:E,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:P};await Te(l,`refs/heads/${b}`,y),await Te(l,"HEAD",y);let I=await ce(l);I[`branch "${b}"`]={remote:"origin",merge:`refs/heads/${b}`},await Ge(l,I);let A=await j(l,E);await _i(l,A.tree);let L=await He(l,A.tree),D=Rr(L.map(z=>({path:z.path,mode:parseInt(z.mode,8),hash:z.hash,stage:0,stat:pe()})));await re(l,D)}let O={stdout:"",stderr:`Cloning into '${c}'...
300
+ `,exitCode:0};return await t?.hooks?.emitPost("post-clone",{repository:o,targetPath:f,bare:n.bare,branch:b}),O}})}function za(e,t){e.command("commit",{description:"Record changes to the repository",options:{message:te.string().alias("m").describe("Commit message"),file:te.string().alias("F").describe("Read commit message from file ('-' for stdin)"),allowEmpty:v().describe("Allow creating an empty commit"),amend:v().describe("Amend the previous commit"),noEdit:v().describe("Use the previous commit message without editing"),all:v().alias("a").describe("Auto-stage modified and deleted tracked files")},handler:async(n,r)=>{if(n.message!==void 0&&n.file!==void 0)return T("options '-m' and '-F' cannot be used together");let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await U(s);if(n.all){let Q=Fe(s);if(Q)return Q;let ge=await ut(s,a);for(let Re of ge)Re.status==="modified"?a=(await Gt(s,a,Re.path)).index:Re.status==="deleted"&&(a=Ne(a,Re.path));let De=new Set(xe(a).map(Re=>Re.path)),un=new Set(a.entries.filter(Re=>Re.stage>0&&!De.has(Re.path)).map(Re=>Re.path));for(let Re of un){let yr=H(s.workTree,Re);await r.fs.exists(yr)?a=(await Gt(s,a,Re)).index:a=Ne(a,Re)}}let i=await F(s,"MERGE_HEAD"),c=await F(s,"CHERRY_PICK_HEAD"),f=await F(s,"REVERT_HEAD"),u=await bt(s)?await F(s,"REBASE_HEAD"):null,l=n.amend,m=await X(s);if(l){if(!m)return T("You have nothing yet to amend.");if(i)return T("You are in the middle of a merge -- cannot amend.");if(c)return T("You are in the middle of a cherry-pick -- cannot amend.")}if(lt(a)){let Q=new Set,ge=[];for(let De of a.entries)De.stage>0&&!Q.has(De.path)&&(Q.add(De.path),ge.push(`U ${De.path}`));return ge.sort(),{stdout:ge.length>0?`${ge.join(`
289
301
  `)}
290
302
  `:"",stderr:`error: Committing is not possible because you have unmerged files.
291
303
  hint: Fix them up in the work tree, and then use 'git add/rm <file>'
292
304
  hint: as appropriate to mark resolution and make a commit.
293
305
  fatal: Exiting because of an unresolved conflict.
294
- `,exitCode:128}}let h=l&&m?await M(s,m):null,p=n.message;if(!p&&n.file!==void 0){if(n.file==="-")p=r.stdin;else{let Q=n.file.startsWith("/")?n.file:v(r.cwd,n.file);if(!await r.fs.exists(Q))return T(`could not read log file '${n.file}': No such file or directory`);let ge=await r.fs.readFile(Q);p=typeof ge=="string"?ge:new TextDecoder().decode(ge)}if(p=nr(p),!p)return{stdout:`Aborting commit due to empty commit message.
295
- `,stderr:"",exitCode:1}}if(!p&&l&&h&&(p=h.message),!p&&(i||c||f||u)){let Q=await qe(s,"MERGE_MSG");Q!==null&&(p=nr(Q))}if(!p)return j("error: must provide a commit message with -m or -F");let g=xe(a),w=await ke(s,g);if(t?.hooks){let Q=await t.hooks.emitPre("pre-commit",{index:a,treeHash:w});if(Q)return j(Q.message??"")}let x=n.allowEmpty,b=null;if(l&&h){let Q=h.parents[0];Q?b=(await M(s,Q)).tree:b=await st("tree",new Uint8Array(0))}else m&&(b=(await M(s,m)).tree);let y=l&&h&&h.parents.length>1;if(!x&&!i&&!y){if(!m&&!l&&g.length===0)return{stdout:await Be(s,{fromCommit:!0,index:a}),stderr:"",exitCode:1};if(b!==null&&b===w){if(l){let Q=h?.parents[0]??null;return{stdout:`${await Be(s,{fromCommit:!0,compareHash:Q,noWarn:!0,index:a})}No changes
306
+ `,exitCode:128}}let h=l&&m?await j(s,m):null,p=n.message;if(!p&&n.file!==void 0){if(n.file==="-")p=r.stdin;else{let Q=n.file.startsWith("/")?n.file:H(r.cwd,n.file);if(!await r.fs.exists(Q))return T(`could not read log file '${n.file}': No such file or directory`);let ge=await r.fs.readFile(Q);p=typeof ge=="string"?ge:new TextDecoder().decode(ge)}if(p=or(p),!p)return{stdout:`Aborting commit due to empty commit message.
307
+ `,stderr:"",exitCode:1}}if(!p&&l&&h&&(p=h.message),!p&&(i||c||f||u)){let Q=await qe(s,"MERGE_MSG");Q!==null&&(p=or(Q))}if(!p)return G("error: must provide a commit message with -m or -F");let g=xe(a),w=await ke(s,g);if(t?.hooks){let Q=await t.hooks.emitPre("pre-commit",{index:a,treeHash:w});if(Q)return G(Q.message??"")}let x=n.allowEmpty,b=null;if(l&&h){let Q=h.parents[0];Q?b=(await j(s,Q)).tree:b=await st("tree",new Uint8Array(0))}else m&&(b=(await j(s,m)).tree);let E=l&&h&&h.parents.length>1;if(!x&&!i&&!E){if(!m&&!l&&g.length===0)return{stdout:await Be(s,{fromCommit:!0,index:a}),stderr:"",exitCode:1};if(b!==null&&b===w){if(l){let Q=h?.parents[0]??null;return{stdout:`${await Be(s,{fromCommit:!0,compareHash:Q,noWarn:!0,index:a})}No changes
296
308
  `,stderr:`You asked to amend the most recent commit, but doing so would make
297
309
  it empty. You can repeat your command with --allow-empty, or you can
298
310
  remove the commit entirely with "git reset HEAD^".
@@ -302,60 +314,60 @@ If you wish to commit it anyway, use:
302
314
  git commit --allow-empty
303
315
 
304
316
  Otherwise, please use 'git cherry-pick --skip'
305
- `,exitCode:1}:{stdout:await Be(s,{fromCommit:!0,index:a}),stderr:"",exitCode:1}}}let k=await Ht(s,r.env);if(S(k))return k;let C=await Le(s,r.env);if(S(C))return C;l&&h&&(k.name=h.author.name,k.email=h.author.email,k.timestamp=h.author.timestamp,k.timezone=h.author.timezone),c&&(k=(await M(s,c)).author);let P=mt(p);if(t?.hooks){let Q={message:P},ge=await t.hooks.emitPre("commit-msg",Q);if(ge)return j(ge.message??"");P=Q.message}let O;l&&h?O=[...h.parents]:(O=m?[m]:[],i&&O.push(i));let E=$t({type:"commit",tree:w,parents:O,author:k,committer:C,message:P}),I=await we(s,"commit",E);await re(s,a);let H=await J(s);H&&H.type==="symbolic"?await Y(s,H.target,I):await Y(s,"HEAD",I);let _=ue(P),G;l?G="commit (amend)":i?G="commit (merge)":c?G="commit (cherry-pick)":m?G="commit":G="commit (initial)";let z=`${G}: ${_}`,D=H?.type==="symbolic"?H.target:"HEAD";await ee(s,r.env,D,m,I,z,H?.type==="symbolic"),i&&await sr(s),c&&await kt(s),f&&await pt(s),u&&await et(s,"MERGE_MSG"),await t?.hooks?.emitPost("post-commit",{hash:I,message:P,branch:H?.type==="symbolic"?de(H.target):null,parents:O,author:k});let $=H?.type==="symbolic"?H.target:null,R=$?de($):"detached HEAD",N;if(l&&h){let Q=h.parents[0];N=Q?(await M(s,Q)).tree:null}else N=m?(await M(s,m)).tree:null;let q=k.timestamp!==C.timestamp||k.timezone!==C.timezone,L=O.length>1,V=await St(s,N,w,k,C,q,L);return{stdout:`${ut(R,I,p,O.length===0&&!l)}
306
- ${V}`,stderr:"",exitCode:0}}})}function hr(e){let t=e.split(".");return t.length===2||t.length===3}function Zl(e){let t=[];for(let[n,r]of Object.entries(e)){let o=n.match(/^(\S+)\s+"(.+)"$/);for(let[s,a]of Object.entries(r)){let i=o?`${o[1]}.${o[2]}.${s}`:`${n}.${s}`;t.push(`${i}=${a}`)}}return t}function Ya(e,t){e.command("config",{description:"Get and set repository options",args:[W.string().name("positionals").variadic().optional()],options:{list:A().alias("l").describe("List all config entries"),unset:A().describe("Remove a config key")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=n.positionals,i=a[0];if(n.list)return Va(await ae(s));if(n.unset){let f=i;return f?hr(f)?za(s,f):j(`error: invalid key: ${f}`,2):j("error: missing key",2)}if(i==="list")return Va(await ae(s));if(i==="get"){let f=a[1];return f?hr(f)?Ka(s,f):j(`error: invalid key: ${f}`,2):j("error: missing key",2)}if(i==="set"){let f=a[1],d=a[2];return!f||d===void 0?j("error: missing key and/or value",2):hr(f)?(await vs(s,f,d),{stdout:"",stderr:"",exitCode:0}):j(`error: invalid key: ${f}`,2)}if(i==="unset"){let f=a[1];return f?hr(f)?za(s,f):j(`error: invalid key: ${f}`,2):j("error: missing key",2)}if(!i)return j("usage: git config [get|set|unset|list] [<key>] [<value>]",2);if(!hr(i))return j(`error: invalid key: ${i}`,2);let c=a[1];return c!==void 0?(await vs(s,i,c),{stdout:"",stderr:"",exitCode:0}):Ka(s,i)}})}async function Ka(e,t){let n=await bt(e,t);return n===void 0?j(""):{stdout:`${n}
307
- `,stderr:"",exitCode:0}}async function za(e,t){return await Xo(e,t)?{stdout:"",stderr:"",exitCode:0}:j("",5)}function Va(e){let t=Zl(e);return{stdout:t.length>0?`${t.join(`
317
+ `,exitCode:1}:{stdout:await Be(s,{fromCommit:!0,index:a}),stderr:"",exitCode:1}}}let k=await Ht(s,r.env);if(S(k))return k;let P=await Le(s,r.env);if(S(P))return P;l&&h&&(k.name=h.author.name,k.email=h.author.email,k.timestamp=h.author.timestamp,k.timezone=h.author.timezone),c&&(k=(await j(s,c)).author);let C=ht(p);if(t?.hooks){let Q={message:C},ge=await t.hooks.emitPre("commit-msg",Q);if(ge)return G(ge.message??"");C=Q.message}let O;l&&h?O=[...h.parents]:(O=m?[m]:[],i&&O.push(i));let y=$t({type:"commit",tree:w,parents:O,author:k,committer:P,message:C}),I=await we(s,"commit",y);await re(s,a);let A=await J(s);A&&A.type==="symbolic"?await Y(s,A.target,I):await Y(s,"HEAD",I);let L=ue(C),D;l?D="commit (amend)":i?D="commit (merge)":c?D="commit (cherry-pick)":m?D="commit":D="commit (initial)";let z=`${D}: ${L}`,M=A?.type==="symbolic"?A.target:"HEAD";await ee(s,r.env,M,m,I,z,A?.type==="symbolic"),i&&await ar(s),c&&await kt(s),f&&await wt(s),u&&await et(s,"MERGE_MSG"),await t?.hooks?.emitPost("post-commit",{hash:I,message:C,branch:A?.type==="symbolic"?de(A.target):null,parents:O,author:k});let $=A?.type==="symbolic"?A.target:null,R=$?de($):"detached HEAD",_;if(l&&h){let Q=h.parents[0];_=Q?(await j(s,Q)).tree:null}else _=m?(await j(s,m)).tree:null;let q=k.timestamp!==P.timestamp||k.timezone!==P.timezone,N=O.length>1,V=await St(s,_,w,k,P,q,N);return{stdout:`${mt(R,I,p,O.length===0&&!l)}
318
+ ${V}`,stderr:"",exitCode:0}}})}function gr(e){let t=e.split(".");return t.length===2||t.length===3}function Ql(e){let t=[];for(let[n,r]of Object.entries(e)){let o=n.match(/^(\S+)\s+"(.+)"$/);for(let[s,a]of Object.entries(r)){let i=o?`${o[1]}.${o[2]}.${s}`:`${n}.${s}`;t.push(`${i}=${a}`)}}return t}function Za(e,t){e.command("config",{description:"Get and set repository options",args:[W.string().name("positionals").variadic().optional()],options:{list:v().alias("l").describe("List all config entries"),unset:v().describe("Remove a config key")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=n.positionals,i=a[0];if(n.list)return Xa(await ce(s));if(n.unset){let f=i;return f?gr(f)?Ya(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(i==="list")return Xa(await ce(s));if(i==="get"){let f=a[1];return f?gr(f)?Va(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(i==="set"){let f=a[1],d=a[2];return!f||d===void 0?G("error: missing key and/or value",2):gr(f)?(await Ms(s,f,d),{stdout:"",stderr:"",exitCode:0}):G(`error: invalid key: ${f}`,2)}if(i==="unset"){let f=a[1];return f?gr(f)?Ya(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(!i)return G("usage: git config [get|set|unset|list] [<key>] [<value>]",2);if(!gr(i))return G(`error: invalid key: ${i}`,2);let c=a[1];return c!==void 0?(await Ms(s,i,c),{stdout:"",stderr:"",exitCode:0}):Va(s,i)}})}async function Va(e,t){let n=await Et(e,t);return n===void 0?G(""):{stdout:`${n}
319
+ `,stderr:"",exitCode:0}}async function Ya(e,t){return await Jo(e,t)?{stdout:"",stderr:"",exitCode:0}:G("",5)}function Xa(e){let t=Ql(e);return{stdout:t.length>0?`${t.join(`
308
320
  `)}
309
- `:"",stderr:"",exitCode:0}}function hs(e){let{path:t,parentHashes:n,parentModes:r,resultHash:o,resultMode:s}=e,a=[];a.push(`diff --cc ${t}`);let i=n.map(x=>x?K(x):"0000000"),c=o?K(o):"0000000";a.push(`index ${i.join(",")}..${c}`);let f=e.resultContent.length>0,d=n.every(x=>x===null),u=!f&&n.some(x=>x!==null);if(d&&s)a.push(`new file mode ${s}`);else if(u){let x=r.map(b=>b||"000000").join(",");a.push(`deleted file mode ${x}`)}else{let x=r.map(k=>k||"000000"),b=s||"000000";x.some(k=>k!==b)&&a.push(`mode ${x.join(",")}..${b}`)}let l=n.some(x=>x!==null);if(a.push(l?`--- a/${t}`:"--- /dev/null"),a.push(f?`+++ b/${t}`:"+++ /dev/null"),u||d)return`${a.join(`
321
+ `:"",stderr:"",exitCode:0}}function ws(e){let{path:t,parentHashes:n,parentModes:r,resultHash:o,resultMode:s}=e,a=[];a.push(`diff --cc ${t}`);let i=n.map(x=>x?K(x):"0000000"),c=o?K(o):"0000000";a.push(`index ${i.join(",")}..${c}`);let f=e.resultContent.length>0,d=n.every(x=>x===null),u=!f&&n.some(x=>x!==null);if(d&&s)a.push(`new file mode ${s}`);else if(u){let x=r.map(b=>b||"000000").join(",");a.push(`deleted file mode ${x}`)}else{let x=r.map(k=>k||"000000"),b=s||"000000";x.some(k=>k!==b)&&a.push(`mode ${x.join(",")}..${b}`)}let l=n.some(x=>x!==null);if(a.push(l?`--- a/${t}`:"--- /dev/null"),a.push(f?`+++ b/${t}`:"+++ /dev/null"),u||d)return`${a.join(`
310
322
  `)}
311
- `;let m=e.parentContents.map(x=>x.length>0?nn(x):[]),h=e.resultContent.length>0?nn(e.resultContent):[],p=m.map(x=>xt(x,h)),g=Jl(m,h,p),w=eu(g,m.length,h);if(w.length===0)return"";for(let x of w)a.push(x);return`${a.join(`
323
+ `;let m=e.parentContents.map(x=>x.length>0?pt(x):[]),h=e.resultContent.length>0?pt(e.resultContent):[],p=m.map(x=>it(x,h)),g=eu(m,h,p),w=nu(g,m.length,h);if(w.length===0)return"";for(let x of w)a.push(x);return`${a.join(`
312
324
  `)}
313
- `}function Jl(e,t,n){let r=e.length,o=n.map(a=>{let i=[],c=new Map,f=0;for(let d of a)if(d.type==="keep")i[d.newLineNo-1]="keep",f=d.newLineNo;else if(d.type==="insert")i[d.newLineNo-1]="insert",f=d.newLineNo;else if(d.type==="delete"){let u=c.get(f)??[];u.push({text:d.line,parentLineNo:d.oldLineNo}),c.set(f,u)}return{resultStatus:i,deletions:c}}),s=[];for(let a=0;a<=t.length;a++){let i=[];for(let f=0;f<r;f++){let d=o[f];i.push(d?.deletions.get(a)??[])}let c=Ql(i,r);for(let f of c)s.push(f);if(a<t.length){let f=[],d=Array(r).fill(0);for(let u=0;u<r;u++){let m=o[u]?.resultStatus[a];if(f.push(m==="insert"?"+":" "),m==="keep"){let h=n[u];if(h){for(let p of h)if(p.type==="keep"&&p.newLineNo===a+1){d[u]=p.oldLineNo;break}}}}s.push({columns:f,text:t[a]??"",resultLineNo:a+1,parentLineNos:d})}}return s}function Ql(e,t){if(!e.some(o=>o.length>0))return[];if(t===2){let o=e[0]??[],s=e[1]??[];if(o.length===0)return s.map(d=>({columns:[" ","-"],text:d.text,resultLineNo:0,parentLineNos:[0,d.parentLineNo]}));if(s.length===0)return o.map(d=>({columns:["-"," "],text:d.text,resultLineNo:0,parentLineNos:[d.parentLineNo,0]}));let a=o.map(d=>d.text),i=s.map(d=>d.text),c=xt(a,i),f=[];for(let d of c)if(d.type==="keep"){let u=o.find(m=>m.text===d.line&&m.parentLineNo===d.oldLineNo),l=s.find(m=>m.text===d.line&&m.parentLineNo===d.newLineNo);f.push({columns:["-","-"],text:d.line,resultLineNo:0,parentLineNos:[u?.parentLineNo??0,l?.parentLineNo??0]})}else if(d.type==="delete"){let u=o.find(l=>l.parentLineNo===d.oldLineNo);f.push({columns:["-"," "],text:d.line,resultLineNo:0,parentLineNos:[u?.parentLineNo??0,0]})}else if(d.type==="insert"){let u=s.find(l=>l.parentLineNo===d.newLineNo);f.push({columns:[" ","-"],text:d.line,resultLineNo:0,parentLineNos:[0,u?.parentLineNo??0]})}return f}let r=[];for(let o=0;o<t;o++){let s=e[o]??[];for(let a of s){let i=Array(t).fill(" ");i[o]="-";let c=Array(t).fill(0);c[o]=a.parentLineNo,r.push({columns:i,text:a.text,resultLineNo:0,parentLineNos:c})}}return r}function eu(e,t,n){let o=[];for(let d=0;d<e.length;d++)e[d]?.columns.some(l=>l!==" ")&&o.push(d);if(o.length===0)return[];let s=[],a=o[0]??0,i=Math.max(0,a-3),c=Math.min(e.length-1,a+3);for(let d=1;d<o.length;d++){let u=o[d]??0,l=Math.max(0,u-3),m=Math.min(e.length-1,u+3);l<=c+1||(s.push({start:i,end:c}),i=l),c=m}s.push({start:i,end:c});let f=[];for(let d of s){let u=e.slice(d.start,d.end+1),l=[];for(let y=0;y<t;y++){let k=u.filter(C=>(C.parentLineNos[y]??0)>0||C.columns[y]==="-");if(k.length===0)l.push({start:1,count:0});else{let P=k.find(O=>(O.parentLineNos[y]??0)>0)?.parentLineNos[y]??1;l.push({start:P,count:k.length})}}let m=u.filter(y=>y.resultLineNo>0),h=m[0],p=h?h.resultLineNo:1,g=m.length,w="";for(let y=p-2;y>=0;y--){let k=n[y];if(k&&/^[a-zA-Z$_]/.test(k)){w=` ${k.trimEnd().slice(0,79)}`;break}}let x=l.map(y=>`-${y.start},${y.count}`),b=`${"@".repeat(t+1)} ${x.join(" ")} +${p},${g} ${"@".repeat(t+1)}${w}`;f.push(b);for(let y of u)f.push(`${y.columns.join("")}${y.text}`)}return f}function ps(e){let t=e.indexOf("...");if(t>=0)return{type:"three-dot",left:e.slice(0,t)||"HEAD",right:e.slice(t+3)||"HEAD"};let n=e.indexOf("..");return n>=0?{type:"two-dot",left:e.slice(0,n)||"HEAD",right:e.slice(n+2)||"HEAD"}:null}var Po=new TextDecoder;function Qa(e){return"exitCode"in e}function _n(e){return e.toString(8).padStart(6,"0")}function ec(e,t){let n=[];for(let r of e)n.push({path:r.path,status:r.status==="added"?"A":r.status==="deleted"?"D":"M",oldHash:r.oldHash,newHash:r.newHash,oldMode:r.oldMode,newMode:r.newMode});for(let r of t)n.push({path:r.newPath,status:"R",oldHash:r.oldHash,newHash:r.newHash,oldMode:r.oldMode,newMode:r.newMode,oldPath:r.oldPath,similarity:r.similarity});return n}function tc(e,t){e.command("diff",{description:"Show changes between commits, commit and working tree, etc.",args:[W.string().name("commits").variadic().optional()],options:{cached:A().describe("Show staged changes (index vs HEAD)"),staged:A().describe("Synonym for --cached"),stat:A().describe("Show diffstat summary"),nameOnly:A().describe("Show only names of changed files"),nameStatus:A().describe("Show names and status of changed files"),shortstat:A().describe("Show only the shortstat summary line"),numstat:A().describe("Machine-readable insertions/deletions per file")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n.cached||n.staged,c=n.commits,f=Ze(a,r.cwd),d=o.passthrough.length>0?o.passthrough.map(p=>Oe(p,f)):null,u=n.stat?"stat":n.nameOnly?"name-only":n.nameStatus?"name-status":n.shortstat?"shortstat":n.numstat?"numstat":"unified",l,m=c.length===1?ps(c[0]):null;if(m){if(i)return T("too many arguments");m.type==="three-dot"?l=await su(a,m.left,m.right,d):l=await Ja(a,m.left,m.right,d)}else if(c.length===2)l=await Ja(a,c[0],c[1],d);else{if(c.length>2)return T("too many arguments");i?l=await ru(a,c.length===1?c[0]:null,d):c.length===1?l=await ou(a,c[0],d):l=await tu(a,d)}if(Qa(l))return l;let h=await iu(a,l.items,u);return l.stderr&&(h.stderr=l.stderr),h}})}async function tu(e,t){let n=Fe(e);if(n)return n;let r=await U(e),o=new Set,s=new Map,a=new Map,i=new Map;for(let d of r.entries)d.stage===0?s.set(d.path,d):(o.add(d.path),d.stage===2?a.set(d.path,d):d.stage===3&&i.set(d.path,d));let c=await lt(e,r);c.sort((d,u)=>he(d.path,u.path));let f=[];for(let d of c){if(d.status==="untracked"||t&&!me(t,d.path)||o.has(d.path))continue;let u=s.get(d.path);if(!u)continue;let l=_n(u.mode),m;if(d.status==="modified"&&e.workTree){let h=v(e.workTree,d.path),p=await e.fs.readFileBuffer(h);m=await st("blob",p)}f.push({path:d.path,status:d.status==="deleted"?"D":"M",oldHash:u.hash,newHash:m,oldMode:l,newMode:l,newFromWorkTree:d.status==="modified"})}for(let d of o){if(t&&!me(t,d))continue;let u=a.get(d),l=i.get(d);await nu(f,e,d,u,l)}return f.sort((d,u)=>{let l=he(d.path,u.path);return l!==0?l:d.status==="U"&&u.status!=="U"?-1:d.status!=="U"&&u.status==="U"?1:0}),{items:f}}async function nu(e,t,n,r,o){let s=t.workTree;if(s&&r&&o){let a=_n(r.mode),i=_n(o.mode),{exists:c,hash:f}=await Xa(t.fs,s,n);e.push({path:n,status:"U",newHash:f,newMode:a,newFromWorkTree:c,combinedParentHashes:[r.hash,o.hash],combinedParentModes:[a,i]}),Za(e,n,r.hash,a,c,f);return}if(e.push({path:n,status:"U"}),s&&r){let a=_n(r.mode),{exists:i,hash:c}=await Xa(t.fs,s,n);Za(e,n,r.hash,a,i,c)}}async function Xa(e,t,n){let r=v(t,n);if(!await e.exists(r))return{exists:!1};let o=await Jn(e,r);return{exists:!0,hash:await st("blob",o)}}function Za(e,t,n,r,o,s){o&&s&&s!==n?e.push({path:t,status:"M",oldHash:n,newHash:s,oldMode:r,newMode:r,newFromWorkTree:!0}):o||e.push({path:t,status:"D",oldHash:n,oldMode:r})}async function ru(e,t,n){let r=null;if(t){let l=await ye(e,t);if(S(l))return l;r=l.commit.tree}else{let l=await X(e);l&&(r=(await M(e,l)).tree)}let o=await se(e,r),s=await U(e),a=new Set;for(let l of s.entries)l.stage>0&&a.add(l.path);let i=new Map(xe(s).map(l=>[l.path,l])),c=[];for(let[l,m]of i){if(a.has(l))continue;let h=o.get(l);h?h.hash!==m.hash&&c.push({path:l,status:"modified",oldHash:h.hash,newHash:m.hash,oldMode:h.mode,newMode:_n(m.mode)}):c.push({path:l,status:"added",newHash:m.hash,newMode:_n(m.mode)})}for(let[l,m]of o)a.has(l)||i.has(l)||c.push({path:l,status:"deleted",oldHash:m.hash,oldMode:m.mode});let{remaining:f,renames:d}=await Ye(e,c),u=ec(f,d);for(let l of a)u.push({path:l,status:"U"});return u.sort((l,m)=>he(l.path,m.path)),n?{items:u.filter(l=>me(n,l.path))}:{items:u}}async function Ja(e,t,n,r){let o=await ye(e,t);if(S(o))return o;let s=await ye(e,n);if(S(s))return s;let a=await Ae(e,o.commit.tree,s.commit.tree);return nc(e,a,r)}async function su(e,t,n,r){let o=await ye(e,t);if(S(o))return o;let s=await ye(e,n);if(S(s))return s;let a=await ht(e,o.hash,s.hash);if(a.length===0)return T(`${t}...${n}: no merge base`);let i;a.length>1&&(i=`warning: ${t}...${n}: multiple merge bases, using ${a[0]}
314
- `);let c=a[0],f=await M(e,c),d=await Ae(e,f.tree,s.commit.tree),u=await nc(e,d,r);return Qa(u)||i&&(u.stderr=i),u}async function nc(e,t,n){let{remaining:r,renames:o}=await Ye(e,t),s=ec(r,o);return s.sort((a,i)=>he(a.path,i.path)),n?{items:s.filter(a=>me(n,a.path))}:{items:s}}async function ou(e,t,n){let r=Fe(e);if(r)return r;let o=await ye(e,t);if(S(o))return o;let s=e.workTree,a=await se(e,o.commit.tree),i=[];for(let[c,f]of a){if(n&&!me(n,c))continue;let d=v(s,c);if(!await e.fs.exists(d)){i.push({path:c,status:"D",oldHash:f.hash,oldMode:f.mode});continue}let u=await e.fs.readFileBuffer(d),l=await st("blob",u);l!==f.hash&&i.push({path:c,status:"M",oldHash:f.hash,newHash:l,oldMode:f.mode,newMode:f.mode,newFromWorkTree:!0})}return i.sort((c,f)=>he(c.path,f.path)),{items:i}}async function iu(e,t,n){let r;switch(n){case"stat":r=await uu(e,t);break;case"shortstat":r=await mu(e,t);break;case"numstat":r=await lu(e,t);break;case"name-only":r=fu(t);break;case"name-status":r=du(t);break;default:r=await au(e,t);break}return{stdout:r,stderr:"",exitCode:0}}async function au(e,t){let n="",r=new Set,o=await cu(e,t);for(let s of t)if(s.status==="U")if(s.combinedParentHashes){let a=await Promise.all(s.combinedParentHashes.map(async f=>f?await fe(e,f):"")),i=await Oo(e,s);if(a.some(f=>Pe(f))||Pe(i)){let f=s.combinedParentHashes.map(d=>d?K(d):"0000000");n+=`diff --cc ${s.path}
325
+ `}function eu(e,t,n){let r=e.length,o=n.map(a=>{let i=[],c=new Map,f=0;for(let d of a)if(d.type==="keep")i[d.newLineNo-1]="keep",f=d.newLineNo;else if(d.type==="insert")i[d.newLineNo-1]="insert",f=d.newLineNo;else if(d.type==="delete"){let u=c.get(f)??[];u.push({text:d.line,parentLineNo:d.oldLineNo}),c.set(f,u)}return{resultStatus:i,deletions:c}}),s=[];for(let a=0;a<=t.length;a++){let i=[];for(let f=0;f<r;f++){let d=o[f];i.push(d?.deletions.get(a)??[])}let c=tu(i,r);for(let f of c)s.push(f);if(a<t.length){let f=[],d=Array(r).fill(0);for(let u=0;u<r;u++){let m=o[u]?.resultStatus[a];if(f.push(m==="insert"?"+":" "),m==="keep"){let h=n[u];if(h){for(let p of h)if(p.type==="keep"&&p.newLineNo===a+1){d[u]=p.oldLineNo;break}}}}s.push({columns:f,text:t[a]??"",resultLineNo:a+1,parentLineNos:d})}}return s}function tu(e,t){if(!e.some(o=>o.length>0))return[];if(t===2){let o=e[0]??[],s=e[1]??[];if(o.length===0)return s.map(d=>({columns:[" ","-"],text:d.text,resultLineNo:0,parentLineNos:[0,d.parentLineNo]}));if(s.length===0)return o.map(d=>({columns:["-"," "],text:d.text,resultLineNo:0,parentLineNos:[d.parentLineNo,0]}));let a=o.map(d=>d.text),i=s.map(d=>d.text),c=it(a,i),f=[];for(let d of c)if(d.type==="keep"){let u=o.find(m=>m.text===d.line&&m.parentLineNo===d.oldLineNo),l=s.find(m=>m.text===d.line&&m.parentLineNo===d.newLineNo);f.push({columns:["-","-"],text:d.line,resultLineNo:0,parentLineNos:[u?.parentLineNo??0,l?.parentLineNo??0]})}else if(d.type==="delete"){let u=o.find(l=>l.parentLineNo===d.oldLineNo);f.push({columns:["-"," "],text:d.line,resultLineNo:0,parentLineNos:[u?.parentLineNo??0,0]})}else if(d.type==="insert"){let u=s.find(l=>l.parentLineNo===d.newLineNo);f.push({columns:[" ","-"],text:d.line,resultLineNo:0,parentLineNos:[0,u?.parentLineNo??0]})}return f}let r=[];for(let o=0;o<t;o++){let s=e[o]??[];for(let a of s){let i=Array(t).fill(" ");i[o]="-";let c=Array(t).fill(0);c[o]=a.parentLineNo,r.push({columns:i,text:a.text,resultLineNo:0,parentLineNos:c})}}return r}function nu(e,t,n){let o=[];for(let d=0;d<e.length;d++)e[d]?.columns.some(l=>l!==" ")&&o.push(d);if(o.length===0)return[];let s=[],a=o[0]??0,i=Math.max(0,a-3),c=Math.min(e.length-1,a+3);for(let d=1;d<o.length;d++){let u=o[d]??0,l=Math.max(0,u-3),m=Math.min(e.length-1,u+3);l<=c+1||(s.push({start:i,end:c}),i=l),c=m}s.push({start:i,end:c});let f=[];for(let d of s){let u=e.slice(d.start,d.end+1),l=[];for(let E=0;E<t;E++){let k=u.filter(P=>(P.parentLineNos[E]??0)>0||P.columns[E]==="-");if(k.length===0)l.push({start:1,count:0});else{let C=k.find(O=>(O.parentLineNos[E]??0)>0)?.parentLineNos[E]??1;l.push({start:C,count:k.length})}}let m=u.filter(E=>E.resultLineNo>0),h=m[0],p=h?h.resultLineNo:1,g=m.length,w="";for(let E=p-2;E>=0;E--){let k=n[E];if(k&&/^[a-zA-Z$_]/.test(k)){w=` ${k.trimEnd().slice(0,79)}`;break}}let x=l.map(E=>`-${E.start},${E.count}`),b=`${"@".repeat(t+1)} ${x.join(" ")} +${p},${g} ${"@".repeat(t+1)}${w}`;f.push(b);for(let E of u)f.push(`${E.columns.join("")}${E.text}`)}return f}function bs(e){let t=e.indexOf("...");if(t>=0)return{type:"three-dot",left:e.slice(0,t)||"HEAD",right:e.slice(t+3)||"HEAD"};let n=e.indexOf("..");return n>=0?{type:"two-dot",left:e.slice(0,n)||"HEAD",right:e.slice(n+2)||"HEAD"}:null}var Io=new TextDecoder;function tc(e){return"exitCode"in e}function Bn(e){return e.toString(8).padStart(6,"0")}function nc(e,t){let n=[];for(let r of e)n.push({path:r.path,status:r.status==="added"?"A":r.status==="deleted"?"D":"M",oldHash:r.oldHash,newHash:r.newHash,oldMode:r.oldMode,newMode:r.newMode});for(let r of t)n.push({path:r.newPath,status:"R",oldHash:r.oldHash,newHash:r.newHash,oldMode:r.oldMode,newMode:r.newMode,oldPath:r.oldPath,similarity:r.similarity});return n}function rc(e,t){e.command("diff",{description:"Show changes between commits, commit and working tree, etc.",args:[W.string().name("commits").variadic().optional()],options:{cached:v().describe("Show staged changes (index vs HEAD)"),staged:v().describe("Synonym for --cached"),stat:v().describe("Show diffstat summary"),nameOnly:v().describe("Show only names of changed files"),nameStatus:v().describe("Show names and status of changed files"),shortstat:v().describe("Show only the shortstat summary line"),numstat:v().describe("Machine-readable insertions/deletions per file")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n.cached||n.staged,c=n.commits,f=Ze(a,r.cwd),d=o.passthrough.length>0?o.passthrough.map(p=>Oe(p,f)):null,u=n.stat?"stat":n.nameOnly?"name-only":n.nameStatus?"name-status":n.shortstat?"shortstat":n.numstat?"numstat":"unified",l,m=c.length===1?bs(c[0]):null;if(m){if(i)return T("too many arguments");m.type==="three-dot"?l=await iu(a,m.left,m.right,d):l=await ec(a,m.left,m.right,d)}else if(c.length===2)l=await ec(a,c[0],c[1],d);else{if(c.length>2)return T("too many arguments");i?l=await ou(a,c.length===1?c[0]:null,d):c.length===1?l=await au(a,c[0],d):l=await ru(a,d)}if(tc(l))return l;let h=await cu(a,l.items,u);return l.stderr&&(h.stderr=l.stderr),h}})}async function ru(e,t){let n=Fe(e);if(n)return n;let r=await U(e),o=new Set,s=new Map,a=new Map,i=new Map;for(let d of r.entries)d.stage===0?s.set(d.path,d):(o.add(d.path),d.stage===2?a.set(d.path,d):d.stage===3&&i.set(d.path,d));let c=await ut(e,r);c.sort((d,u)=>he(d.path,u.path));let f=[];for(let d of c){if(d.status==="untracked"||t&&!me(t,d.path)||o.has(d.path))continue;let u=s.get(d.path);if(!u)continue;let l=Bn(u.mode),m;if(d.status==="modified"&&e.workTree){let h=H(e.workTree,d.path),p=await e.fs.readFileBuffer(h);m=await st("blob",p)}f.push({path:d.path,status:d.status==="deleted"?"D":"M",oldHash:u.hash,newHash:m,oldMode:l,newMode:l,newFromWorkTree:d.status==="modified"})}for(let d of o){if(t&&!me(t,d))continue;let u=a.get(d),l=i.get(d);await su(f,e,d,u,l)}return f.sort((d,u)=>{let l=he(d.path,u.path);return l!==0?l:d.status==="U"&&u.status!=="U"?-1:d.status!=="U"&&u.status==="U"?1:0}),{items:f}}async function su(e,t,n,r,o){let s=t.workTree;if(s&&r&&o){let a=Bn(r.mode),i=Bn(o.mode),{exists:c,hash:f}=await Ja(t.fs,s,n);e.push({path:n,status:"U",newHash:f,newMode:a,newFromWorkTree:c,combinedParentHashes:[r.hash,o.hash],combinedParentModes:[a,i]}),Qa(e,n,r.hash,a,c,f);return}if(e.push({path:n,status:"U"}),s&&r){let a=Bn(r.mode),{exists:i,hash:c}=await Ja(t.fs,s,n);Qa(e,n,r.hash,a,i,c)}}async function Ja(e,t,n){let r=H(t,n);if(!await e.exists(r))return{exists:!1};let o=await tr(e,r);return{exists:!0,hash:await st("blob",o)}}function Qa(e,t,n,r,o,s){o&&s&&s!==n?e.push({path:t,status:"M",oldHash:n,newHash:s,oldMode:r,newMode:r,newFromWorkTree:!0}):o||e.push({path:t,status:"D",oldHash:n,oldMode:r})}async function ou(e,t,n){let r=null;if(t){let l=await ye(e,t);if(S(l))return l;r=l.commit.tree}else{let l=await X(e);l&&(r=(await j(e,l)).tree)}let o=await se(e,r),s=await U(e),a=new Set;for(let l of s.entries)l.stage>0&&a.add(l.path);let i=new Map(xe(s).map(l=>[l.path,l])),c=[];for(let[l,m]of i){if(a.has(l))continue;let h=o.get(l);h?h.hash!==m.hash&&c.push({path:l,status:"modified",oldHash:h.hash,newHash:m.hash,oldMode:h.mode,newMode:Bn(m.mode)}):c.push({path:l,status:"added",newHash:m.hash,newMode:Bn(m.mode)})}for(let[l,m]of o)a.has(l)||i.has(l)||c.push({path:l,status:"deleted",oldHash:m.hash,oldMode:m.mode});let{remaining:f,renames:d}=await Ye(e,c),u=nc(f,d);for(let l of a)u.push({path:l,status:"U"});return u.sort((l,m)=>he(l.path,m.path)),n?{items:u.filter(l=>me(n,l.path))}:{items:u}}async function ec(e,t,n,r){let o=await ye(e,t);if(S(o))return o;let s=await ye(e,n);if(S(s))return s;let a=await Ae(e,o.commit.tree,s.commit.tree);return sc(e,a,r)}async function iu(e,t,n,r){let o=await ye(e,t);if(S(o))return o;let s=await ye(e,n);if(S(s))return s;let a=await gt(e,o.hash,s.hash);if(a.length===0)return T(`${t}...${n}: no merge base`);let i;a.length>1&&(i=`warning: ${t}...${n}: multiple merge bases, using ${a[0]}
326
+ `);let c=a[0],f=await j(e,c),d=await Ae(e,f.tree,s.commit.tree),u=await sc(e,d,r);return tc(u)||i&&(u.stderr=i),u}async function sc(e,t,n){let{remaining:r,renames:o}=await Ye(e,t),s=nc(r,o);return s.sort((a,i)=>he(a.path,i.path)),n?{items:s.filter(a=>me(n,a.path))}:{items:s}}async function au(e,t,n){let r=Fe(e);if(r)return r;let o=await ye(e,t);if(S(o))return o;let s=e.workTree,a=await se(e,o.commit.tree),i=[];for(let[c,f]of a){if(n&&!me(n,c))continue;let d=H(s,c);if(!await e.fs.exists(d)){i.push({path:c,status:"D",oldHash:f.hash,oldMode:f.mode});continue}let u=await e.fs.readFileBuffer(d),l=await st("blob",u);l!==f.hash&&i.push({path:c,status:"M",oldHash:f.hash,newHash:l,oldMode:f.mode,newMode:f.mode,newFromWorkTree:!0})}return i.sort((c,f)=>he(c.path,f.path)),{items:i}}async function cu(e,t,n){let r;switch(n){case"stat":r=await hu(e,t);break;case"shortstat":r=await pu(e,t);break;case"numstat":r=await mu(e,t);break;case"name-only":r=lu(t);break;case"name-status":r=uu(t);break;default:r=await fu(e,t);break}return{stdout:r,stderr:"",exitCode:0}}async function fu(e,t){let n="",r=new Set,o=await du(e,t);for(let s of t)if(s.status==="U")if(s.combinedParentHashes){let a=await Promise.all(s.combinedParentHashes.map(async f=>f?await ie(e,f):"")),i=await Ro(e,s);if(a.some(f=>Pe(f))||Pe(i)){let f=s.combinedParentHashes.map(d=>d?K(d):"0000000");n+=`diff --cc ${s.path}
315
327
  index ${f.join(",")}..0000000
316
328
  Binary files differ
317
- `,r.add(s.path)}else{let f=hs({path:s.path,parentHashes:s.combinedParentHashes,parentModes:s.combinedParentModes??[],parentContents:a,resultHash:null,resultMode:s.newMode??null,resultContent:i});f?(n+=f,r.add(s.path)):n+=`* Unmerged path ${s.path}
329
+ `,r.add(s.path)}else{let f=ws({path:s.path,parentHashes:s.combinedParentHashes,parentModes:s.combinedParentModes??[],parentContents:a,resultHash:null,resultMode:s.newMode??null,resultContent:i});f?(n+=f,r.add(s.path)):n+=`* Unmerged path ${s.path}
318
330
  `}}else n+=`* Unmerged path ${s.path}
319
- `;for(let s of t){if(s.status==="U"||r.has(s.path))continue;let a=s.oldHash?await fe(e,s.oldHash):"",i=await Oo(e,s);s.status==="R"&&s.oldPath?n+=At({path:s.oldPath,oldContent:a,newContent:i,oldMode:s.oldMode,newMode:s.newMode,oldHash:gs(s.oldHash,o),newHash:gs(s.newHash,o),renameTo:s.path,similarity:s.similarity}):n+=At({path:s.path,oldContent:a,newContent:i,oldMode:s.oldMode,newMode:s.newMode,oldHash:gs(s.oldHash,o),newHash:gs(s.newHash,o),isNew:s.status==="A",isDeleted:s.status==="D"})}return n}async function cu(e,t){let n=new Set;for(let i of t)i.oldHash&&i.oldHash.length===40&&n.add(i.oldHash),i.newHash&&i.newHash.length===40&&n.add(i.newHash);let r=new Map,o=async i=>{let c=r.get(i);if(c)return c;let f=v(e.gitDir,"objects",i),d=await e.fs.exists(f)?await e.fs.readdir(f):[];return r.set(i,d),d},s=async(i,c)=>{let f=i.slice(0,2),d=i.slice(2,c),u=await o(f),l=0;for(let m of u)if(m.startsWith(d)&&(l++,l>1))return!1;return l===1},a=new Map;for(let i of n){let c=7;for(;c<40&&!await s(i,c);)c++;a.set(i,i.slice(0,c))}return a}function gs(e,t){if(e)return e.length!==40?e:t.get(e)??K(e)}function fu(e){let t="";for(let n of e)t+=`${n.path}
320
- `;return t}function du(e){let t="";for(let n of e)if(n.status==="R"){let r=String(n.similarity??100).padStart(3,"0");t+=`R${r} ${n.oldPath} ${n.path}
331
+ `;for(let s of t){if(s.status==="U"||r.has(s.path))continue;let a=s.oldHash?await ie(e,s.oldHash):"",i=await Ro(e,s);s.status==="R"&&s.oldPath?n+=At({path:s.oldPath,oldContent:a,newContent:i,oldMode:s.oldMode,newMode:s.newMode,oldHash:ys(s.oldHash,o),newHash:ys(s.newHash,o),renameTo:s.path,similarity:s.similarity}):n+=At({path:s.path,oldContent:a,newContent:i,oldMode:s.oldMode,newMode:s.newMode,oldHash:ys(s.oldHash,o),newHash:ys(s.newHash,o),isNew:s.status==="A",isDeleted:s.status==="D"})}return n}async function du(e,t){let n=new Set;for(let i of t)i.oldHash&&i.oldHash.length===40&&n.add(i.oldHash),i.newHash&&i.newHash.length===40&&n.add(i.newHash);let r=new Map,o=async i=>{let c=r.get(i);if(c)return c;let f=H(e.gitDir,"objects",i),d=await e.fs.exists(f)?await e.fs.readdir(f):[];return r.set(i,d),d},s=async(i,c)=>{let f=i.slice(0,2),d=i.slice(2,c),u=await o(f),l=0;for(let m of u)if(m.startsWith(d)&&(l++,l>1))return!1;return l===1},a=new Map;for(let i of n){let c=7;for(;c<40&&!await s(i,c);)c++;a.set(i,i.slice(0,c))}return a}function ys(e,t){if(e)return e.length!==40?e:t.get(e)??K(e)}function lu(e){let t="";for(let n of e)t+=`${n.path}
332
+ `;return t}function uu(e){let t="";for(let n of e)if(n.status==="R"){let r=String(n.similarity??100).padStart(3,"0");t+=`R${r} ${n.oldPath} ${n.path}
321
333
  `}else t+=`${n.status} ${n.path}
322
- `;return t}async function lu(e,t){let n="";for(let r of t){if(r.status==="U"){n+=`0 0 ${r.path}
323
- `;continue}let o=r.oldHash?await fe(e,r.oldHash):"",s=await Oo(e,r),a=Pe(o)||Pe(s),i,c;if(a)i="-",c="-";else{let{ins:f,del:d}=rc(o,s);i=String(f),c=String(d)}if(r.status==="R"&&r.oldPath){let f=Mn(r.oldPath,r.path);n+=`${i} ${c} ${f}
334
+ `;return t}async function mu(e,t){let n="";for(let r of t){if(r.status==="U"){n+=`0 0 ${r.path}
335
+ `;continue}let o=r.oldHash?await ie(e,r.oldHash):"",s=await Ro(e,r),a=Pe(o)||Pe(s),i,c;if(a)i="-",c="-";else{let{ins:f,del:d}=oc(o,s);i=String(f),c=String(d)}if(r.status==="R"&&r.oldPath){let f=Ln(r.oldPath,r.path);n+=`${i} ${c} ${f}
324
336
  `}else n+=`${i} ${c} ${r.path}
325
- `}return n}async function uu(e,t){let n=await sc(e,t);return oo(n)}async function mu(e,t){let n=await sc(e,t);if(n.length===0)return"";let r=0,o=0,s=0;for(let i of n)i.isUnmerged||(s++,r+=i.insertions,o+=i.deletions);let a=Zr(s,r,o);return a?`${a}
337
+ `}return n}async function hu(e,t){let n=await ic(e,t);return ao(n)}async function pu(e,t){let n=await ic(e,t);if(n.length===0)return"";let r=0,o=0,s=0;for(let i of n)i.isUnmerged||(s++,r+=i.insertions,o+=i.deletions);let a=Qr(s,r,o);return a?`${a}
326
338
  `:n.some(i=>i.isUnmerged)?` 0 files changed
327
- `:""}async function Oo(e,t){if(!t.newHash)return"";if(t.newFromWorkTree&&e.workTree){let n=v(e.workTree,t.path),r=await Jn(e.fs,n);return Po.decode(r)}return fe(e,t.newHash)}async function hu(e,t){if(!t.newHash)return new Uint8Array(0);if(t.newFromWorkTree&&e.workTree){let n=v(e.workTree,t.path);return Jn(e.fs,n)}return ot(e,t.newHash)}function rc(e,t){let n=rn(e),r=rn(t),o=xt(n,r),s=0,a=0;for(let i of o)i.type==="insert"?s++:i.type==="delete"&&a++;return{ins:s,del:a}}async function sc(e,t){let n=[];for(let r of t){if(r.status==="U"){n.push({path:r.path,sortKey:r.path,insertions:0,deletions:0,isUnmerged:!0});continue}let o=r.status==="R"&&r.oldPath?Mn(r.oldPath,r.path):r.path,s=r.oldHash?await ot(e,r.oldHash):new Uint8Array(0),a=await hu(e,r);if(Vt(s)||Vt(a))n.push({path:o,sortKey:r.path,insertions:0,deletions:0,isBinary:!0,oldSize:s.byteLength,newSize:a.byteLength});else{let i=Po.decode(s),c=Po.decode(a),{ins:f,del:d}=rc(i,c);n.push({path:o,sortKey:r.path,insertions:f,deletions:d})}}return n}function Cn(e){let t=e,n=!1;t.startsWith("+")&&(n=!0,t=t.slice(1));let r=t.indexOf(":");return r===-1?{force:n,src:t,dst:t}:{force:n,src:t.slice(0,r),dst:t.slice(r+1)}}function pu(e,t){let n=e.indexOf("*");if(n===-1)return e===t;let r=e.slice(0,n),o=e.slice(n+1);return t.startsWith(r)&&t.endsWith(o)&&t.length>=r.length+o.length}function ws(e,t){if(!pu(e.src,t))return null;let n=e.src.indexOf("*"),r=e.dst.indexOf("*");if(n===-1)return e.dst;let o=e.src.slice(0,n),s=e.src.slice(n+1),a=s.length>0?t.length-s.length:t.length,i=t.slice(o.length,a);return r===-1?e.dst:e.dst.slice(0,r)+i+e.dst.slice(r+1)}function oc(e,t){e.command("fetch",{description:"Download objects and refs from another repository",args:[W.string().name("remote").describe("Remote to fetch from").optional(),W.string().name("refspec").describe("Refspec(s) to fetch").optional().variadic()],options:{all:A().describe("Fetch from all remotes"),prune:A().alias("p").describe("Remove stale remote-tracking refs"),tags:A().describe("Also fetch tags")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=n.remote||"origin",i;try{i=await Nn(s,a,r.env)}catch(E){let I=E instanceof Error?E.message:"";if(I.startsWith("network"))return T(I);throw E}if(!i)return T(`'${a}' does not appear to be a git repository`);let{transport:c,config:f}=i,d=n.refspec,u;if(d&&d.length>0?u=d.map(Cn):u=[Cn(f.fetchRefspec)],t?.hooks){let E=await t.hooks.emitPre("pre-fetch",{remote:a,url:f.url,refspecs:u.map(I=>`${I.src}:${I.dst}`),prune:n.prune,tags:n.tags});if(E)return{stdout:"",stderr:E.message??"",exitCode:1}}let l=await c.advertiseRefs();if(l.length===0)return{stdout:"",stderr:"",exitCode:0};let h=(await le(s)).map(E=>E.hash),p=await F(s,"HEAD");p&&h.push(p);let g=[],w=new Set,x=[];for(let E of l)if(E.name!=="HEAD")for(let I of u){let H=ws(I,E.name);if(H!==null){x.push({remote:E,localRef:H,force:I.force}),w.has(E.hash)||(w.add(E.hash),g.push(E.hash));break}}if(n.tags)for(let E of l)E.name.startsWith("refs/tags/")&&(x.push({remote:E,localRef:E.name,force:!1}),w.has(E.hash)||(w.add(E.hash),g.push(E.hash)));let b=new Set(h),y=g.filter(E=>!b.has(E));y.length>0&&await c.fetch(y,h);let k=await Ot(s,r.env),C=[];C.push(`From ${f.url}
328
- `);for(let E of x){let I=await F(s,E.localRef);await Y(s,E.localRef,E.remote.hash),await Te(s,E.localRef,{oldHash:I??Z,newHash:E.remote.hash,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:I?"fetch":"fetch: storing head"});let H=bs(E.remote.name),_=bs(E.localRef);if(I){if(I!==E.remote.hash){let G=K(I),z=K(E.remote.hash);C.push(` ${G}..${z} ${H} -> ${_}
329
- `)}}else{let z=E.remote.name.startsWith("refs/tags/")?" * [new tag]":" * [new branch]";C.push(`${z} ${H} -> ${_}
330
- `)}}if(!n.tags)for(let E of l){if(!E.name.startsWith("refs/tags/")||w.has(E.hash))continue;let I=await F(s,E.name),H=E.peeledHash??E.hash;!I&&b.has(H)&&(await Y(s,E.name,E.hash),await Te(s,E.name,{oldHash:Z,newHash:E.hash,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:"fetch: storing head"}),C.push(` * [new tag] ${bs(E.name)} -> ${bs(E.name)}
331
- `))}if(n.prune){let E=`refs/remotes/${a}`,I=await le(s,E),H=new Set(l.filter(_=>_.name.startsWith("refs/heads/")).map(_=>_.name.slice(11)));for(let _ of I){let G=_.name.slice(E.length+1);H.has(G)||(await ie(s,_.name),C.push(` - [deleted] (none) -> ${a}/${G}
332
- `))}}let P=l.find(E=>E.name==="HEAD");if(P){let E=v(s.gitDir,"FETCH_HEAD"),I=l.find(_=>_.name.startsWith("refs/heads/")&&_.hash===P.hash),H=I?`branch '${I.name.slice(11)}' of`:"of";await r.fs.writeFile(E,`${P.hash} ${H} ${f.url}
333
- `)}let O={stdout:"",stderr:C.join(""),exitCode:0};return await t?.hooks?.emitPost("post-fetch",{remote:a,url:f.url,refsUpdated:x.length}),O}})}function bs(e){return e.startsWith("refs/heads/")?e.slice(11):e.startsWith("refs/tags/")?e.slice(10):e.startsWith("refs/remotes/")?e.slice(13):e}async function ic(e){let t=new Set,n=await X(e);n&&t.add(n);let r=await le(e,"refs");for(let i of r)t.add(i.hash);let o=v(e.gitDir,"logs");await e.fs.exists(o)&&await ac(e,o,o,t);let s=await U(e);for(let i of s.entries)t.add(i.hash);for(let i of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let c=await F(e,i);c&&t.add(c)}let a=[];for(let i of t)await zt(e,i)&&a.push(i);return a}async function ac(e,t,n,r){let o=await e.fs.readdir(t);for(let s of o){let a=v(t,s),i=await e.fs.stat(a);if(i.isDirectory)await ac(e,a,n,r);else if(i.isFile){let c=a.slice(n.length+1),f=await Me(e,c);for(let d of f)d.newHash!==Z&&r.add(d.newHash)}}}var Es=new Uint32Array([0,2874782929,1454598562,4260027763,104818581,2909197124,1351355959,4225088230,209637162,2804382715,1523426952,4053013081,172075199,2702711918,1559413021,4155209164,419274324,3013880453,1313798134,3843506983,516094401,3046853904,1215402083,3811058866,344150398,3218793903,1110456540,3916008461,314324715,3118826042,1141858121,4015451032,838548648,2594343033,1732793610,3423723995,935615293,2627596268,1635201695,3392046670,1032188802,2531018579,1798740512,3228511985,1002083351,2430804166,1829371317,3327150436,688300796,2187269677,2142620510,3572268943,792315241,2220913080,2039131339,3537049626,628649430,2384582919,1942684788,3633492133,591858243,2283716242,1978950625,3735934768,1677097296,3366964609,893718770,2652677155,1707679429,3465587220,863663975,2552480694,1871230586,3302032043,960225240,2455923465,1773654511,3270403390,1057273933,2489126044,2064377604,3495056341,767069862,2262907511,2100592785,3597481024,730327347,2162056674,2004166702,3693911295,566641036,2325738845,1900695483,3658742634,670639641,2359333576,1376601592,4183093545,79572058,2951190667,1412571757,4285241020,42027983,2849570590,1584630482,4113186307,146858864,2744735649,1481436487,4078262678,251626725,2779131956,1257298860,3785977725,474198542,3071936223,1288682553,3885369576,444388763,2972016970,1183716486,3990331479,272465188,3143944693,1085371155,3957901250,369236657,3176902240,1823819377,3354194592,973483987,2438961922,1787437540,3251868981,1010387014,2539715735,1623951707,3415358858,913891577,2636207144,1727327950,3450690079,809994092,2602447805,1950930981,3742461172,586920327,2309096790,1920450480,3643673441,616879634,2409456323,2016810767,3547309022,780500653,2245839484,2114547866,3578840139,683284792,2212736489,1565424345,4128755208,201134971,2695145386,1534139724,4029196701,230847726,2795225151,1362146803,4201185570,126082129,2899994752,1460654694,4233520823,29146052,2867138325,1169417357,4008333404,318803247,3092855294,1133282072,3906287561,356510394,3194379883,1238182823,3801390966,528368133,3022517972,1341279282,3836475619,423699856,2987954497,256065313,2753203184,1508923011,4071219794,159144116,2720394341,1607414038,4103505351,54390795,2825143514,1435408809,4275514744,84055966,2925208399,1404173884,4175973101,398369141,3169260964,1091422423,3931405318,293717728,3134747185,1194504002,3966442387,465595999,2962872974,1299384317,3861558060,503253450,3064380699,1263296616,3759527097,1052246921,2514597720,1745578539,3276988154,948397084,2480853197,1848905150,3312302447,851889315,2577365106,1685431553,3475771856,888777526,2678071271,1649066644,3373495877,642096605,2367432972,1895232639,3685695662,544930376,2334346905,1992922090,3717211963,708530935,2170742310,2089302869,3620835204,738473314,2271052211,2058837184,3522095121]),gu=new Uint32Array([0,2125799437,1446245579,679924934,121527623,2039184714,1359849868,800622977,243055246,1892260483,1481592389,653946440,155379657,2012727236,1601245954,566506255,486110492,1649169681,1254785495,880779738,466036827,1701972054,1307892880,859962525,310759314,1815146399,1152793433,973282132,364614357,1796125400,1133012510,1027425811,972220984,1195887157,1874927347,292830974,1053603711,1081710450,1761559476,373973945,932073654,1228632251,1639818365,520651888,816844273,1308962300,1719925050,406247735,621518628,1539227433,1933077487,227363810,573948515,1551950446,1946564264,179508901,729228714,1438778791,2101662049,66187628,743012589,1392269536,2054851622,80718891,1944441968,223409277,634790075,1533214902,1960544567,175024442,585661948,1549622769,2107207422,53235443,732600885,1428142648,2057778105,68293556,747947890,1377953663,1864147308,296321377,959403431,1201305002,1747123243,379051046,1041303776,1084500205,1633688546,534068207,928247593,1239863076,1717454501,418080424,812495470,1322816099,1243037256,883039813,472173187,1653729934,1294557967,865878786,454727620,1706014665,1147897030,987669707,307785741,1827491840,1129699713,1038154124,359017802,1808993607,1458457428,677079897,14532511,2120785810,1372591635,795162142,132375256,2035729109,1486025178,640143831,245433617,1880368412,1605151901,555322512,161437782,1999272027,1284643889,841432124,446818554,1679083767,1269580150,890855803,497006013,1663735216,1122936511,1012631218,350048884,1785229945,1171323896,996531189,333647667,1834364734,1349216557,786319648,106470886,2028846571,1465201770,702551143,23511201,2144592044,1578619811,547550126,136587112,1989216101,1495895780,664579817,253393455,1907317282,1969288713,198563332,592642754,1575363279,1918806862,216763203,611147653,1524137864,2065452167,94989450,758102092,1402640449,2082607552,43463117,705815819,1420084486,1771668245,388801304,1068136414,1092573139,1856495186,269680223,949234329,1176570516,1743075739,424679830,836160848,1331948893,1624990940,510543057,921210903,1214099482,1064814657,1103292492,1766079626,401677447,944346374,1190966539,1853514189,282018240,822833871,1337873090,1731757572,428713481,909455240,1216352133,1611062083,515111758,596557149,1564187984,1975339414,185100699,615571482,1510326295,1921193169,204879068,770836435,1397172190,2076308248,91542293,718035604,1417247385,2097131103,38440530,109388409,2016412276,1354159794,772011711,29065022,2131648307,1468566517,691907576,150575351,1984739578,1590324284,545213489,264750512,1903355325,1509175675,658575734,444356453,1690924904,1280287662,855278499,490867234,1677142575,1265762025,902094564,335605227,1790299622,1110645024,1015429421,322875564,1837863073,1158497383,1001940074]),ys=64,wu=4,Ro=4096,cc=65536,bu=127;function yu(e){let t=e.byteLength;if(t===0)return null;let n=(t-1)/16|0;if(n===0)return null;let r=n>>>2;r<16&&(r=16),r=xu(r);let o=r-1,s=new Uint32Array(r),a=[],i=-1>>>0;for(let l=n*16-16;l>=0;l-=16){let m=0;for(let h=1;h<=16;h++)m=(m<<8|e[l+h])^Es[m>>>23];if(m=m>>>0,m===i)a[a.length-1].ptr=l+16;else{i=m;let h=m&o;a.push({ptr:l+16,val:m}),s[h]++}}let c=new Map;for(let l of a){let m=l.val&o,h=c.get(m);h||(h=[],c.set(m,h)),h.push(l)}for(let[l,m]of c){if(m.length<=ys)continue;let h=[],p=m.length/ys;for(let g=0;g<ys;g++)h.push(m[Math.floor(g*p)]);c.set(l,h),s[l]=ys}let f=new Uint32Array(r+1),d=[],u=0;for(let l=0;l<r;l++){f[l]=u;let m=c.get(l);if(m){for(let h of m)d.push(h);u+=m.length}}return f[r]=u,{src:e,hashMask:o,buckets:f,entries:d}}function Eu(e,t,n){if(!e||t.byteLength===0)return null;let r=e.src.byteLength,o=t.byteLength,s=e.src,a=new Uint8Array(Math.max(o,1024)),i=0;function c(p){for(;i+p>a.length;){let g=new Uint8Array(a.length*2);g.set(a),a=g}}i=dc(a,i,r),i=dc(a,i,o),c(18),i++;let f=0,d=0,u=Math.min(16,o);for(let p=0;p<u;p++)a[i++]=t[p],f=(f<<8|t[p])^Es[f>>>23],d++;f=f>>>0;let l=u,m=0,h=0;for(;l<o;){if(h<Ro){f^=gu[t[l-16]],f=((f<<8|t[l])^Es[f>>>23])>>>0;let p=f&e.hashMask,g=e.buckets[p],w=e.buckets[p+1];for(let x=g;x<w;x++){let b=e.entries[x];if(b.val!==f)continue;let y=b.ptr,k=s.byteLength-y,C=o-l;if(k>C&&(k=C),k<=h)break;let P=0;for(;P<k&&s[y+P]===t[l+P];)P++;if(P>h&&(h=P,m=y,h>=Ro))break}}if(h<wu)c(2),d===0&&i++,a[i++]=t[l++],d++,d===bu&&(a[i-d-1]=d,d=0),h=0;else{if(d>0){for(;m>0&&s[m-1]===t[l-1];)if(h++,m--,l--,i--,!(--d>0)){i--,d=-1;break}d>0&&(a[i-d-1]=d),d=0}let p=h>cc?h-cc:0;h-=p,c(8);let g=i++,w=128;if(m&255&&(a[i++]=m&255,w|=1),m&65280&&(a[i++]=m>>>8&255,w|=2),m&16711680&&(a[i++]=m>>>16&255,w|=4),m&4278190080&&(a[i++]=m>>>24&255,w|=8),h&255&&(a[i++]=h&255,w|=16),h&65280&&(a[i++]=h>>>8&255,w|=32),a[g]=w,l+=h,m+=h,h=p,m>4294967295&&(h=0),h<Ro){f=0;for(let x=-16;x<0;x++)f=(f<<8|t[l+x])^Es[f>>>23];f=f>>>0}}if(n&&i>n)return null}return d>0&&(a[i-d-1]=d),n&&i>n?null:a.subarray(0,i)}var fc={blob:0,tree:1,commit:2,tag:3};function lc(e,t){let n=t?.window??10,r=t?.depth??50,o=e.slice().sort((f,d)=>{let u=fc[f.type]??99,l=fc[d.type]??99;return u!==l?u-l:d.content.byteLength-f.content.byteLength}),s=new Map,a=[],i=[],c=[];for(let f=0;f<o.length;f++){let d=o[f],u={hash:d.hash,type:d.type,content:d.content,depth:0},l=null,m=null,h=Math.max(0,f-n);for(let p=f-1;p>=h;p--){let g=o[p];if(g.type!==d.type||(s.get(g.hash)?.depth??0)>=r||d.content.byteLength<g.content.byteLength>>>5)continue;let b=i[p-h]??null;if(!b)continue;let y=l?l.byteLength:d.content.byteLength/2|0;if(y<16)continue;let k=Eu(b,d.content,y);k&&(!l||k.byteLength<l.byteLength)&&(l=k,m=g.hash)}if(l&&m){u.delta=l,u.deltaBase=m;let p=s.get(m);u.depth=(p?.depth??0)+1}s.set(d.hash,u),a.push(u),i.length>=n&&(i.shift(),c.shift()),i.push(yu(d.content)),c.push(d.hash)}return a}function xu(e){let t=e;return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t++,t<16?16:t}function dc(e,t,n){let r=n;do{let o=r&127;r>>>=7,r>0&&(o|=128),e[t++]=o}while(r>0);return t}async function ku(e,t){let n=new Set,r=v(e.gitDir,"objects","pack");try{let s=await e.fs.readdir(r);for(let a of s){if(!a.endsWith(".idx"))continue;let i=await e.fs.readFileBuffer(v(r,a)),c=new un(i);for(let f of c.allHashes())n.add(f)}}catch{}return n.size===0?ds(e,t,[]):(await ds(e,t,[])).filter(s=>!n.has(s.hash))}async function Io(e){let{gitCtx:t,fs:n,tips:r,cleanup:o}=e,s=e.window??10,a=e.depth??50;if(r.length===0)return null;let i=e.all?await ds(t,r,[]):await ku(t,r);if(i.length===0)return null;let c=i.length,f=lc(i,{window:s,depth:a}),d=f.filter(C=>C.delta).length,u=f.map(C=>({hash:C.hash,type:C.type,content:C.content,delta:C.delta,deltaBaseHash:C.deltaBase})),{data:l,entries:m}=await mi(u),h=await bi(l,m),p=l.subarray(l.byteLength-20),g="";for(let C=0;C<20;C++){let P=p[C];g+=(P>>4).toString(16)+(P&15).toString(16)}let w=v(t.gitDir,"objects","pack");await n.mkdir(w,{recursive:!0});let x=`pack-${g}`,b=v(w,`${x}.pack`),y=v(w,`${x}.idx`);await n.writeFile(b,l),await n.writeFile(y,h);let k=new Set(f.map(C=>C.hash));if(o){let C=await n.readdir(w);for(let E of C){if(!E.endsWith(".idx"))continue;let I=E.slice(0,-4);if(I===x)continue;let H=v(w,`${I}.idx`),_=!0;try{let G=await n.readFileBuffer(H),z=new un(G);for(let D of z.allHashes())if(!k.has(D)){_=!1;break}}catch{_=!1}if(_){try{await n.rm(v(w,`${I}.pack`))}catch{}try{await n.rm(H)}catch{}}}let P=v(t.gitDir,"objects"),O;try{O=await n.readdir(P)}catch{O=[]}for(let E of O){if(E==="pack"||E==="info"||E.length!==2)continue;let I=v(P,E),H;try{H=await n.readdir(I)}catch{continue}for(let _ of H){let G=`${E}${_}`;k.has(G)&&await n.rm(v(I,_))}try{(await n.readdir(I)).length===0&&await n.rm(I,{recursive:!0})}catch{}}}return{totalCount:c,deltaCount:d,packHash:g}}function $o(e,t,n=!1){let r=e-t,o=[`Enumerating objects: ${e}, done.`];return n&&o.push(`Counting objects: 100% (${e}/${e}), done.`),o.push("Delta compression using 1 thread.",`Compressing objects: 100% (${r}/${e}), done.`,`Writing objects: 100% (${e}/${e}), done.`,`Total ${e} (delta ${t}), reused 0 (delta 0), pack-reused 0`),o.join(`
334
- `)}function uc(e,t){e.command("repack",{description:"Pack unpacked objects in a repository",options:{all:A().alias("a").describe("Pack all objects, including already-packed"),delete:A().alias("d").describe("After packing, remove redundant packs and loose objects")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await ic(s),i=await Io({gitCtx:s,fs:r.fs,tips:a,cleanup:n.delete,all:n.all});return i?{stdout:"",stderr:`${$o(i.totalCount,i.deltaCount)}
339
+ `:""}async function Ro(e,t){if(!t.newHash)return"";if(t.newFromWorkTree&&e.workTree){let n=H(e.workTree,t.path),r=await tr(e.fs,n);return Io.decode(r)}return ie(e,t.newHash)}async function gu(e,t){if(!t.newHash)return new Uint8Array(0);if(t.newFromWorkTree&&e.workTree){let n=H(e.workTree,t.path);return tr(e.fs,n)}return ot(e,t.newHash)}function oc(e,t){let n=rn(e),r=rn(t),o=it(n,r),s=0,a=0;for(let i of o)i.type==="insert"?s++:i.type==="delete"&&a++;return{ins:s,del:a}}async function ic(e,t){let n=[];for(let r of t){if(r.status==="U"){n.push({path:r.path,sortKey:r.path,insertions:0,deletions:0,isUnmerged:!0});continue}let o=r.status==="R"&&r.oldPath?Ln(r.oldPath,r.path):r.path,s=r.oldHash?await ot(e,r.oldHash):new Uint8Array(0),a=await gu(e,r);if(Yt(s)||Yt(a))n.push({path:o,sortKey:r.path,insertions:0,deletions:0,isBinary:!0,oldSize:s.byteLength,newSize:a.byteLength});else{let i=Io.decode(s),c=Io.decode(a),{ins:f,del:d}=oc(i,c);n.push({path:o,sortKey:r.path,insertions:f,deletions:d})}}return n}function On(e){let t=e,n=!1;t.startsWith("+")&&(n=!0,t=t.slice(1));let r=t.indexOf(":");return r===-1?{force:n,src:t,dst:t}:{force:n,src:t.slice(0,r),dst:t.slice(r+1)}}function wu(e,t){let n=e.indexOf("*");if(n===-1)return e===t;let r=e.slice(0,n),o=e.slice(n+1);return t.startsWith(r)&&t.endsWith(o)&&t.length>=r.length+o.length}function Es(e,t){if(!wu(e.src,t))return null;let n=e.src.indexOf("*"),r=e.dst.indexOf("*");if(n===-1)return e.dst;let o=e.src.slice(0,n),s=e.src.slice(n+1),a=s.length>0?t.length-s.length:t.length,i=t.slice(o.length,a);return r===-1?e.dst:e.dst.slice(0,r)+i+e.dst.slice(r+1)}function ac(e,t){e.command("fetch",{description:"Download objects and refs from another repository",args:[W.string().name("remote").describe("Remote to fetch from").optional(),W.string().name("refspec").describe("Refspec(s) to fetch").optional().variadic()],options:{all:v().describe("Fetch from all remotes"),prune:v().alias("p").describe("Remove stale remote-tracking refs"),tags:v().describe("Also fetch tags")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=n.remote||"origin",i;try{i=await Un(s,a,r.env)}catch(y){let I=y instanceof Error?y.message:"";if(I.startsWith("network"))return T(I);throw y}if(!i)return T(`'${a}' does not appear to be a git repository`);let{transport:c,config:f}=i,d=n.refspec,u;if(d&&d.length>0?u=d.map(On):u=[On(f.fetchRefspec)],t?.hooks){let y=await t.hooks.emitPre("pre-fetch",{remote:a,url:f.url,refspecs:u.map(I=>`${I.src}:${I.dst}`),prune:n.prune,tags:n.tags});if(y)return{stdout:"",stderr:y.message??"",exitCode:1}}let l=await c.advertiseRefs();if(l.length===0)return{stdout:"",stderr:"",exitCode:0};let h=(await le(s)).map(y=>y.hash),p=await F(s,"HEAD");p&&h.push(p);let g=[],w=new Set,x=[];for(let y of l)if(y.name!=="HEAD")for(let I of u){let A=Es(I,y.name);if(A!==null){x.push({remote:y,localRef:A,force:I.force}),w.has(y.hash)||(w.add(y.hash),g.push(y.hash));break}}if(n.tags)for(let y of l)y.name.startsWith("refs/tags/")&&(x.push({remote:y,localRef:y.name,force:!1}),w.has(y.hash)||(w.add(y.hash),g.push(y.hash)));let b=new Set(h),E=g.filter(y=>!b.has(y));E.length>0&&await c.fetch(E,h);let k=await Ot(s,r.env),P=[];P.push(`From ${f.url}
340
+ `);for(let y of x){let I=await F(s,y.localRef);await Y(s,y.localRef,y.remote.hash),await Te(s,y.localRef,{oldHash:I??Z,newHash:y.remote.hash,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:I?"fetch":"fetch: storing head"});let A=xs(y.remote.name),L=xs(y.localRef);if(I){if(I!==y.remote.hash){let D=K(I),z=K(y.remote.hash);P.push(` ${D}..${z} ${A} -> ${L}
341
+ `)}}else{let z=y.remote.name.startsWith("refs/tags/")?" * [new tag]":" * [new branch]";P.push(`${z} ${A} -> ${L}
342
+ `)}}if(!n.tags)for(let y of l){if(!y.name.startsWith("refs/tags/")||w.has(y.hash))continue;let I=await F(s,y.name),A=y.peeledHash??y.hash;!I&&b.has(A)&&(await Y(s,y.name,y.hash),await Te(s,y.name,{oldHash:Z,newHash:y.hash,name:k.name,email:k.email,timestamp:k.timestamp,tz:k.tz,message:"fetch: storing head"}),P.push(` * [new tag] ${xs(y.name)} -> ${xs(y.name)}
343
+ `))}if(n.prune){let y=`refs/remotes/${a}`,I=await le(s,y),A=new Set(l.filter(L=>L.name.startsWith("refs/heads/")).map(L=>L.name.slice(11)));for(let L of I){let D=L.name.slice(y.length+1);A.has(D)||(await ae(s,L.name),P.push(` - [deleted] (none) -> ${a}/${D}
344
+ `))}}let C=l.find(y=>y.name==="HEAD");if(C){let y=H(s.gitDir,"FETCH_HEAD"),I=l.find(L=>L.name.startsWith("refs/heads/")&&L.hash===C.hash),A=I?`branch '${I.name.slice(11)}' of`:"of";await r.fs.writeFile(y,`${C.hash} ${A} ${f.url}
345
+ `)}let O={stdout:"",stderr:P.join(""),exitCode:0};return await t?.hooks?.emitPost("post-fetch",{remote:a,url:f.url,refsUpdated:x.length}),O}})}function xs(e){return e.startsWith("refs/heads/")?e.slice(11):e.startsWith("refs/tags/")?e.slice(10):e.startsWith("refs/remotes/")?e.slice(13):e}async function cc(e){let t=new Set,n=await X(e);n&&t.add(n);let r=await le(e,"refs");for(let i of r)t.add(i.hash);let o=H(e.gitDir,"logs");await e.fs.exists(o)&&await fc(e,o,o,t);let s=await U(e);for(let i of s.entries)t.add(i.hash);for(let i of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let c=await F(e,i);c&&t.add(c)}let a=[];for(let i of t)await Vt(e,i)&&a.push(i);return a}async function fc(e,t,n,r){let o=await e.fs.readdir(t);for(let s of o){let a=H(t,s),i=await e.fs.stat(a);if(i.isDirectory)await fc(e,a,n,r);else if(i.isFile){let c=a.slice(n.length+1),f=await Me(e,c);for(let d of f)d.newHash!==Z&&r.add(d.newHash)}}}var Cs=new Uint32Array([0,2874782929,1454598562,4260027763,104818581,2909197124,1351355959,4225088230,209637162,2804382715,1523426952,4053013081,172075199,2702711918,1559413021,4155209164,419274324,3013880453,1313798134,3843506983,516094401,3046853904,1215402083,3811058866,344150398,3218793903,1110456540,3916008461,314324715,3118826042,1141858121,4015451032,838548648,2594343033,1732793610,3423723995,935615293,2627596268,1635201695,3392046670,1032188802,2531018579,1798740512,3228511985,1002083351,2430804166,1829371317,3327150436,688300796,2187269677,2142620510,3572268943,792315241,2220913080,2039131339,3537049626,628649430,2384582919,1942684788,3633492133,591858243,2283716242,1978950625,3735934768,1677097296,3366964609,893718770,2652677155,1707679429,3465587220,863663975,2552480694,1871230586,3302032043,960225240,2455923465,1773654511,3270403390,1057273933,2489126044,2064377604,3495056341,767069862,2262907511,2100592785,3597481024,730327347,2162056674,2004166702,3693911295,566641036,2325738845,1900695483,3658742634,670639641,2359333576,1376601592,4183093545,79572058,2951190667,1412571757,4285241020,42027983,2849570590,1584630482,4113186307,146858864,2744735649,1481436487,4078262678,251626725,2779131956,1257298860,3785977725,474198542,3071936223,1288682553,3885369576,444388763,2972016970,1183716486,3990331479,272465188,3143944693,1085371155,3957901250,369236657,3176902240,1823819377,3354194592,973483987,2438961922,1787437540,3251868981,1010387014,2539715735,1623951707,3415358858,913891577,2636207144,1727327950,3450690079,809994092,2602447805,1950930981,3742461172,586920327,2309096790,1920450480,3643673441,616879634,2409456323,2016810767,3547309022,780500653,2245839484,2114547866,3578840139,683284792,2212736489,1565424345,4128755208,201134971,2695145386,1534139724,4029196701,230847726,2795225151,1362146803,4201185570,126082129,2899994752,1460654694,4233520823,29146052,2867138325,1169417357,4008333404,318803247,3092855294,1133282072,3906287561,356510394,3194379883,1238182823,3801390966,528368133,3022517972,1341279282,3836475619,423699856,2987954497,256065313,2753203184,1508923011,4071219794,159144116,2720394341,1607414038,4103505351,54390795,2825143514,1435408809,4275514744,84055966,2925208399,1404173884,4175973101,398369141,3169260964,1091422423,3931405318,293717728,3134747185,1194504002,3966442387,465595999,2962872974,1299384317,3861558060,503253450,3064380699,1263296616,3759527097,1052246921,2514597720,1745578539,3276988154,948397084,2480853197,1848905150,3312302447,851889315,2577365106,1685431553,3475771856,888777526,2678071271,1649066644,3373495877,642096605,2367432972,1895232639,3685695662,544930376,2334346905,1992922090,3717211963,708530935,2170742310,2089302869,3620835204,738473314,2271052211,2058837184,3522095121]),bu=new Uint32Array([0,2125799437,1446245579,679924934,121527623,2039184714,1359849868,800622977,243055246,1892260483,1481592389,653946440,155379657,2012727236,1601245954,566506255,486110492,1649169681,1254785495,880779738,466036827,1701972054,1307892880,859962525,310759314,1815146399,1152793433,973282132,364614357,1796125400,1133012510,1027425811,972220984,1195887157,1874927347,292830974,1053603711,1081710450,1761559476,373973945,932073654,1228632251,1639818365,520651888,816844273,1308962300,1719925050,406247735,621518628,1539227433,1933077487,227363810,573948515,1551950446,1946564264,179508901,729228714,1438778791,2101662049,66187628,743012589,1392269536,2054851622,80718891,1944441968,223409277,634790075,1533214902,1960544567,175024442,585661948,1549622769,2107207422,53235443,732600885,1428142648,2057778105,68293556,747947890,1377953663,1864147308,296321377,959403431,1201305002,1747123243,379051046,1041303776,1084500205,1633688546,534068207,928247593,1239863076,1717454501,418080424,812495470,1322816099,1243037256,883039813,472173187,1653729934,1294557967,865878786,454727620,1706014665,1147897030,987669707,307785741,1827491840,1129699713,1038154124,359017802,1808993607,1458457428,677079897,14532511,2120785810,1372591635,795162142,132375256,2035729109,1486025178,640143831,245433617,1880368412,1605151901,555322512,161437782,1999272027,1284643889,841432124,446818554,1679083767,1269580150,890855803,497006013,1663735216,1122936511,1012631218,350048884,1785229945,1171323896,996531189,333647667,1834364734,1349216557,786319648,106470886,2028846571,1465201770,702551143,23511201,2144592044,1578619811,547550126,136587112,1989216101,1495895780,664579817,253393455,1907317282,1969288713,198563332,592642754,1575363279,1918806862,216763203,611147653,1524137864,2065452167,94989450,758102092,1402640449,2082607552,43463117,705815819,1420084486,1771668245,388801304,1068136414,1092573139,1856495186,269680223,949234329,1176570516,1743075739,424679830,836160848,1331948893,1624990940,510543057,921210903,1214099482,1064814657,1103292492,1766079626,401677447,944346374,1190966539,1853514189,282018240,822833871,1337873090,1731757572,428713481,909455240,1216352133,1611062083,515111758,596557149,1564187984,1975339414,185100699,615571482,1510326295,1921193169,204879068,770836435,1397172190,2076308248,91542293,718035604,1417247385,2097131103,38440530,109388409,2016412276,1354159794,772011711,29065022,2131648307,1468566517,691907576,150575351,1984739578,1590324284,545213489,264750512,1903355325,1509175675,658575734,444356453,1690924904,1280287662,855278499,490867234,1677142575,1265762025,902094564,335605227,1790299622,1110645024,1015429421,322875564,1837863073,1158497383,1001940074]),ks=64,yu=4,$o=4096,dc=65536,Eu=127;function xu(e){let t=e.byteLength;if(t===0)return null;let n=(t-1)/16|0;if(n===0)return null;let r=n>>>2;r<16&&(r=16),r=Cu(r);let o=r-1,s=new Uint32Array(r),a=[],i=-1>>>0;for(let l=n*16-16;l>=0;l-=16){let m=0;for(let h=1;h<=16;h++)m=(m<<8|e[l+h])^Cs[m>>>23];if(m=m>>>0,m===i)a[a.length-1].ptr=l+16;else{i=m;let h=m&o;a.push({ptr:l+16,val:m}),s[h]++}}let c=new Map;for(let l of a){let m=l.val&o,h=c.get(m);h||(h=[],c.set(m,h)),h.push(l)}for(let[l,m]of c){if(m.length<=ks)continue;let h=[],p=m.length/ks;for(let g=0;g<ks;g++)h.push(m[Math.floor(g*p)]);c.set(l,h),s[l]=ks}let f=new Uint32Array(r+1),d=[],u=0;for(let l=0;l<r;l++){f[l]=u;let m=c.get(l);if(m){for(let h of m)d.push(h);u+=m.length}}return f[r]=u,{src:e,hashMask:o,buckets:f,entries:d}}function ku(e,t,n){if(!e||t.byteLength===0)return null;let r=e.src.byteLength,o=t.byteLength,s=e.src,a=new Uint8Array(Math.max(o,1024)),i=0;function c(p){for(;i+p>a.length;){let g=new Uint8Array(a.length*2);g.set(a),a=g}}i=uc(a,i,r),i=uc(a,i,o),c(18),i++;let f=0,d=0,u=Math.min(16,o);for(let p=0;p<u;p++)a[i++]=t[p],f=(f<<8|t[p])^Cs[f>>>23],d++;f=f>>>0;let l=u,m=0,h=0;for(;l<o;){if(h<$o){f^=bu[t[l-16]],f=((f<<8|t[l])^Cs[f>>>23])>>>0;let p=f&e.hashMask,g=e.buckets[p],w=e.buckets[p+1];for(let x=g;x<w;x++){let b=e.entries[x];if(b.val!==f)continue;let E=b.ptr,k=s.byteLength-E,P=o-l;if(k>P&&(k=P),k<=h)break;let C=0;for(;C<k&&s[E+C]===t[l+C];)C++;if(C>h&&(h=C,m=E,h>=$o))break}}if(h<yu)c(2),d===0&&i++,a[i++]=t[l++],d++,d===Eu&&(a[i-d-1]=d,d=0),h=0;else{if(d>0){for(;m>0&&s[m-1]===t[l-1];)if(h++,m--,l--,i--,!(--d>0)){i--,d=-1;break}d>0&&(a[i-d-1]=d),d=0}let p=h>dc?h-dc:0;h-=p,c(8);let g=i++,w=128;if(m&255&&(a[i++]=m&255,w|=1),m&65280&&(a[i++]=m>>>8&255,w|=2),m&16711680&&(a[i++]=m>>>16&255,w|=4),m&4278190080&&(a[i++]=m>>>24&255,w|=8),h&255&&(a[i++]=h&255,w|=16),h&65280&&(a[i++]=h>>>8&255,w|=32),a[g]=w,l+=h,m+=h,h=p,m>4294967295&&(h=0),h<$o){f=0;for(let x=-16;x<0;x++)f=(f<<8|t[l+x])^Cs[f>>>23];f=f>>>0}}if(n&&i>n)return null}return d>0&&(a[i-d-1]=d),n&&i>n?null:a.subarray(0,i)}var lc={blob:0,tree:1,commit:2,tag:3};function mc(e,t){let n=t?.window??10,r=t?.depth??50,o=e.slice().sort((f,d)=>{let u=lc[f.type]??99,l=lc[d.type]??99;return u!==l?u-l:d.content.byteLength-f.content.byteLength}),s=new Map,a=[],i=[],c=[];for(let f=0;f<o.length;f++){let d=o[f],u={hash:d.hash,type:d.type,content:d.content,depth:0},l=null,m=null,h=Math.max(0,f-n);for(let p=f-1;p>=h;p--){let g=o[p];if(g.type!==d.type||(s.get(g.hash)?.depth??0)>=r||d.content.byteLength<g.content.byteLength>>>5)continue;let b=i[p-h]??null;if(!b)continue;let E=l?l.byteLength:d.content.byteLength/2|0;if(E<16)continue;let k=ku(b,d.content,E);k&&(!l||k.byteLength<l.byteLength)&&(l=k,m=g.hash)}if(l&&m){u.delta=l,u.deltaBase=m;let p=s.get(m);u.depth=(p?.depth??0)+1}s.set(d.hash,u),a.push(u),i.length>=n&&(i.shift(),c.shift()),i.push(xu(d.content)),c.push(d.hash)}return a}function Cu(e){let t=e;return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t++,t<16?16:t}function uc(e,t,n){let r=n;do{let o=r&127;r>>>=7,r>0&&(o|=128),e[t++]=o}while(r>0);return t}async function Pu(e,t){let n=new Set,r=H(e.gitDir,"objects","pack");try{let s=await e.fs.readdir(r);for(let a of s){if(!a.endsWith(".idx"))continue;let i=await e.fs.readFileBuffer(H(r,a)),c=new hn(i);for(let f of c.allHashes())n.add(f)}}catch{}return n.size===0?ms(e,t,[]):(await ms(e,t,[])).filter(s=>!n.has(s.hash))}async function To(e){let{gitCtx:t,fs:n,tips:r,cleanup:o}=e,s=e.window??10,a=e.depth??50;if(r.length===0)return null;let i=e.all?await ms(t,r,[]):await Pu(t,r);if(i.length===0)return null;let c=i.length,f=mc(i,{window:s,depth:a}),d=f.filter(P=>P.delta).length,u=f.map(P=>({hash:P.hash,type:P.type,content:P.content,delta:P.delta,deltaBaseHash:P.deltaBase})),{data:l,entries:m}=await pi(u),h=await Ei(l,m),p=l.subarray(l.byteLength-20),g="";for(let P=0;P<20;P++){let C=p[P];g+=(C>>4).toString(16)+(C&15).toString(16)}let w=H(t.gitDir,"objects","pack");await n.mkdir(w,{recursive:!0});let x=`pack-${g}`,b=H(w,`${x}.pack`),E=H(w,`${x}.idx`);await n.writeFile(b,l),await n.writeFile(E,h);let k=new Set(f.map(P=>P.hash));if(o){let P=await n.readdir(w);for(let y of P){if(!y.endsWith(".idx"))continue;let I=y.slice(0,-4);if(I===x)continue;let A=H(w,`${I}.idx`),L=!0;try{let D=await n.readFileBuffer(A),z=new hn(D);for(let M of z.allHashes())if(!k.has(M)){L=!1;break}}catch{L=!1}if(L){try{await n.rm(H(w,`${I}.pack`))}catch{}try{await n.rm(A)}catch{}}}let C=H(t.gitDir,"objects"),O;try{O=await n.readdir(C)}catch{O=[]}for(let y of O){if(y==="pack"||y==="info"||y.length!==2)continue;let I=H(C,y),A;try{A=await n.readdir(I)}catch{continue}for(let L of A){let D=`${y}${L}`;k.has(D)&&await n.rm(H(I,L))}try{(await n.readdir(I)).length===0&&await n.rm(I,{recursive:!0})}catch{}}}return{totalCount:c,deltaCount:d,packHash:g}}function Ho(e,t,n=!1){let r=e-t,o=[`Enumerating objects: ${e}, done.`];return n&&o.push(`Counting objects: 100% (${e}/${e}), done.`),o.push("Delta compression using 1 thread.",`Compressing objects: 100% (${r}/${e}), done.`,`Writing objects: 100% (${e}/${e}), done.`,`Total ${e} (delta ${t}), reused 0 (delta 0), pack-reused 0`),o.join(`
346
+ `)}function hc(e,t){e.command("repack",{description:"Pack unpacked objects in a repository",options:{all:v().alias("a").describe("Pack all objects, including already-packed"),delete:v().alias("d").describe("After packing, remove redundant packs and loose objects")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await cc(s),i=await To({gitCtx:s,fs:r.fs,tips:a,cleanup:n.delete,all:n.all});return i?{stdout:"",stderr:`${Ho(i.totalCount,i.deltaCount)}
335
347
  `,exitCode:0}:{stdout:`Nothing new to pack.
336
- `,stderr:"",exitCode:0}}})}function mc(e,t){e.command("gc",{description:"Cleanup unnecessary files and optimize the local repository",options:{aggressive:A().describe("More aggressively optimize the repository")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;await ki(s),await tt(s);let a=await Pu(s);if(a.length>0){let i=n.aggressive?250:10,c=n.aggressive?250:50,f=await Io({gitCtx:s,fs:r.fs,tips:a,window:i,depth:c,cleanup:!0,all:!0});if(await Ou(s.gitDir,r.fs),f)return{stdout:"",stderr:`${$o(f.totalCount,f.deltaCount,!0)}
337
- `,exitCode:0}}return{stdout:"",stderr:"",exitCode:0}}})}var Cu=2160*60*60;async function Pu(e){let t=new Set,n=await X(e);n&&t.add(n);let r=await le(e,"refs");for(let f of r)t.add(f.hash);let s=Math.floor(Date.now()/1e3)-Cu,a=v(e.gitDir,"logs");await e.fs.exists(a)&&await hc(e,a,a,s,t);let i=await U(e);for(let f of i.entries)t.add(f.hash);for(let f of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let d=await F(e,f);d&&t.add(d)}let c=[];for(let f of t)await zt(e,f)&&c.push(f);return c}async function hc(e,t,n,r,o){let s=await e.fs.readdir(t);for(let a of s){let i=v(t,a),c=await e.fs.stat(i);if(c.isDirectory){await hc(e,i,n,r,o);try{(await e.fs.readdir(i)).length===0&&await e.fs.rm(i,{recursive:!0})}catch{}}else if(c.isFile){let f=i.slice(n.length+1),d=await Me(e,f);if(f==="refs/stash"){for(let l of d)l.newHash!==Z&&o.add(l.newHash);continue}let u=d.filter(l=>l.timestamp>=r);await Xt(e,f,u);for(let l of u)l.newHash!==Z&&o.add(l.newHash)}}}async function Ou(e,t){let n=v(e,"objects"),r;try{r=await t.readdir(n)}catch{return}for(let o of r)if(!(o==="pack"||o==="info"||o.length!==2))try{await t.rm(v(n,o),{recursive:!0})}catch{}}function pc(e){e.command("init",{description:"Initialize a new repository",args:[W.string().name("directory").describe("The directory to initialize").optional()],options:{bare:A().describe("Create a bare repository"),initialBranch:te.string().alias("b").describe("Name for the initial branch")},examples:["git init","git init --bare","git init my-project"],handler:async(t,n)=>{let r=t.initialBranch,o=t.directory?ct(n.cwd,t.directory):n.cwd;t.directory&&await n.fs.mkdir(o,{recursive:!0});let{ctx:s,reinit:a}=await vr(n.fs,o,{bare:t.bare,...r?{initialBranch:r}:{}}),i="";a&&r&&(i=`warning: re-init: ignored --initial-branch=${r}
348
+ `,stderr:"",exitCode:0}}})}function pc(e,t){e.command("gc",{description:"Cleanup unnecessary files and optimize the local repository",options:{aggressive:v().describe("More aggressively optimize the repository")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;await Pi(s),await tt(s);let a=await Iu(s);if(a.length>0){let i=n.aggressive?250:10,c=n.aggressive?250:50,f=await To({gitCtx:s,fs:r.fs,tips:a,window:i,depth:c,cleanup:!0,all:!0});if(await Ru(s.gitDir,r.fs),f)return{stdout:"",stderr:`${Ho(f.totalCount,f.deltaCount,!0)}
349
+ `,exitCode:0}}return{stdout:"",stderr:"",exitCode:0}}})}var Ou=2160*60*60;async function Iu(e){let t=new Set,n=await X(e);n&&t.add(n);let r=await le(e,"refs");for(let f of r)t.add(f.hash);let s=Math.floor(Date.now()/1e3)-Ou,a=H(e.gitDir,"logs");await e.fs.exists(a)&&await gc(e,a,a,s,t);let i=await U(e);for(let f of i.entries)t.add(f.hash);for(let f of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let d=await F(e,f);d&&t.add(d)}let c=[];for(let f of t)await Vt(e,f)&&c.push(f);return c}async function gc(e,t,n,r,o){let s=await e.fs.readdir(t);for(let a of s){let i=H(t,a),c=await e.fs.stat(i);if(c.isDirectory){await gc(e,i,n,r,o);try{(await e.fs.readdir(i)).length===0&&await e.fs.rm(i,{recursive:!0})}catch{}}else if(c.isFile){let f=i.slice(n.length+1),d=await Me(e,f);if(f==="refs/stash"){for(let l of d)l.newHash!==Z&&o.add(l.newHash);continue}let u=d.filter(l=>l.timestamp>=r);await Zt(e,f,u);for(let l of u)l.newHash!==Z&&o.add(l.newHash)}}}async function Ru(e,t){let n=H(e,"objects"),r;try{r=await t.readdir(n)}catch{return}for(let o of r)if(!(o==="pack"||o==="info"||o.length!==2))try{await t.rm(H(n,o),{recursive:!0})}catch{}}function wc(e){e.command("init",{description:"Initialize a new repository",args:[W.string().name("directory").describe("The directory to initialize").optional()],options:{bare:v().describe("Create a bare repository"),initialBranch:te.string().alias("b").describe("Name for the initial branch")},examples:["git init","git init --bare","git init my-project"],handler:async(t,n)=>{let r=t.initialBranch,o=t.directory?ft(n.cwd,t.directory):n.cwd;t.directory&&await n.fs.mkdir(o,{recursive:!0});let{ctx:s,reinit:a}=await Dr(n.fs,o,{bare:t.bare,...r?{initialBranch:r}:{}}),i="";a&&r&&(i=`warning: re-init: ignored --initial-branch=${r}
338
350
  `);let c=t.bare?"bare ":"";return{stdout:`${a?"Reinitialized existing":"Initialized empty"} ${c}Git repository in ${s.gitDir}/
339
- `,stderr:i,exitCode:0}}})}function gc(e,t){let{hash:n,commit:r}=t,o="",s=0;for(;s<e.length;){if(e[s]==="%"){let a=e[s+1];if(a===void 0){o+="%",s++;continue}if((a==="a"||a==="c")&&s+2<e.length){let i=e[s+2],c=a==="a"?r.author:r.committer;switch(i){case"n":o+=c.name,s+=3;continue;case"e":case"E":o+=c.email,s+=3;continue;case"t":o+=c.timestamp.toString(),s+=3;continue;case"I":o+=vu(c.timestamp,c.timezone),s+=3;continue;case"i":o+=Su(c.timestamp,c.timezone),s+=3;continue;case"d":o+=vt(c.timestamp,c.timezone),s+=3;continue;case"D":o+=Du(c.timestamp,c.timezone),s+=3;continue}}switch(a){case"H":o+=n,s+=2;continue;case"h":o+=K(n),s+=2;continue;case"T":o+=r.tree,s+=2;continue;case"t":o+=K(r.tree),s+=2;continue;case"P":o+=r.parents.join(" "),s+=2;continue;case"p":o+=r.parents.map(K).join(" "),s+=2;continue;case"s":o+=To(r.message),s+=2;continue;case"b":o+=Ru(r.message),s+=2;continue;case"B":o+=r.message.replace(/\n$/,""),s+=2;continue;case"d":if(t.decorations){let i=t.decorations(n);o+=i?` ${i}`:""}s+=2;continue;case"D":t.decorationsRaw&&(o+=t.decorationsRaw(n)),s+=2;continue;case"n":o+=`
340
- `,s+=2;continue;case"%":o+="%",s+=2;continue;default:o+=`%${a}`,s+=2;continue}}o+=e[s],s++}return o}var To=ue;function Ru(e){let t=e.indexOf(`
351
+ `,stderr:i,exitCode:0}}})}function bc(e,t){let{hash:n,commit:r}=t,o="",s=0;for(;s<e.length;){if(e[s]==="%"){let a=e[s+1];if(a===void 0){o+="%",s++;continue}if((a==="a"||a==="c")&&s+2<e.length){let i=e[s+2],c=a==="a"?r.author:r.committer;switch(i){case"n":o+=c.name,s+=3;continue;case"e":case"E":o+=c.email,s+=3;continue;case"t":o+=c.timestamp.toString(),s+=3;continue;case"I":o+=Du(c.timestamp,c.timezone),s+=3;continue;case"i":o+=Mu(c.timestamp,c.timezone),s+=3;continue;case"d":o+=vt(c.timestamp,c.timezone),s+=3;continue;case"D":o+=ju(c.timestamp,c.timezone),s+=3;continue}}switch(a){case"H":o+=n,s+=2;continue;case"h":o+=K(n),s+=2;continue;case"T":o+=r.tree,s+=2;continue;case"t":o+=K(r.tree),s+=2;continue;case"P":o+=r.parents.join(" "),s+=2;continue;case"p":o+=r.parents.map(K).join(" "),s+=2;continue;case"s":o+=Ao(r.message),s+=2;continue;case"b":o+=$u(r.message),s+=2;continue;case"B":o+=r.message.replace(/\n$/,""),s+=2;continue;case"d":if(t.decorations){let i=t.decorations(n);o+=i?` ${i}`:""}s+=2;continue;case"D":t.decorationsRaw&&(o+=t.decorationsRaw(n)),s+=2;continue;case"n":o+=`
352
+ `,s+=2;continue;case"%":o+="%",s+=2;continue;default:o+=`%${a}`,s+=2;continue}}o+=e[s],s++}return o}var Ao=ue;function $u(e){let t=e.indexOf(`
341
353
 
342
- `);return t===-1?"":e.slice(t+2).replace(/\n$/,"")}function wc(e){return e.startsWith("format:")?{formatStr:e.slice(7),preset:null}:e.startsWith("tformat:")?{formatStr:e.slice(8),preset:null}:["oneline","short","medium","full","fuller"].includes(e)?{formatStr:null,preset:e}:{formatStr:e,preset:null}}function bc(e,t,n,r=!1){let{hash:o,commit:s}=t,a=t.decorations?t.decorations(o):"";switch(e){case"oneline":{let i=r?K(o):o,c=To(s.message);return a?`${i} ${a} ${c}`:`${i} ${c}`}case"short":{let i=[];return n||i.push(""),i.push(a?`commit ${o} ${a}`:`commit ${o}`),s.parents.length>=2&&i.push(`Merge: ${s.parents.map(K).join(" ")}`),i.push(`Author: ${s.author.name} <${s.author.email}>`),i.push(""),i.push(` ${To(s.message)}`),i.join(`
354
+ `);return t===-1?"":e.slice(t+2).replace(/\n$/,"")}function yc(e){return e.startsWith("format:")?{formatStr:e.slice(7),preset:null}:e.startsWith("tformat:")?{formatStr:e.slice(8),preset:null}:["oneline","short","medium","full","fuller"].includes(e)?{formatStr:null,preset:e}:{formatStr:e,preset:null}}function Ec(e,t,n,r=!1){let{hash:o,commit:s}=t,a=t.decorations?t.decorations(o):"";switch(e){case"oneline":{let i=r?K(o):o,c=Ao(s.message);return a?`${i} ${a} ${c}`:`${i} ${c}`}case"short":{let i=[];return n||i.push(""),i.push(a?`commit ${o} ${a}`:`commit ${o}`),s.parents.length>=2&&i.push(`Merge: ${s.parents.map(K).join(" ")}`),i.push(`Author: ${s.author.name} <${s.author.email}>`),i.push(""),i.push(` ${Ao(s.message)}`),i.join(`
343
355
  `)}case"full":{let i=[];n||i.push(""),i.push(a?`commit ${o} ${a}`:`commit ${o}`),s.parents.length>=2&&i.push(`Merge: ${s.parents.map(K).join(" ")}`),i.push(`Author: ${s.author.name} <${s.author.email}>`),i.push(`Commit: ${s.committer.name} <${s.committer.email}>`),i.push("");let c=s.message.replace(/\n$/,"");for(let f of c.split(`
344
356
  `))i.push(` ${f}`);return i.join(`
345
357
  `)}case"fuller":{let i=[];n||i.push(""),i.push(a?`commit ${o} ${a}`:`commit ${o}`),s.parents.length>=2&&i.push(`Merge: ${s.parents.map(K).join(" ")}`),i.push(`Author: ${s.author.name} <${s.author.email}>`),i.push(`AuthorDate: ${vt(s.author.timestamp,s.author.timezone)}`),i.push(`Commit: ${s.committer.name} <${s.committer.email}>`),i.push(`CommitDate: ${vt(s.committer.timestamp,s.committer.timezone)}`),i.push("");let c=s.message.replace(/\n$/,"");for(let f of c.split(`
346
358
  `))i.push(` ${f}`);return i.join(`
347
- `)}default:return Iu(t,n)}}function Iu(e,t){let{hash:n,commit:r}=e,o=e.decorations?e.decorations(n):"",s=[];t||s.push(""),s.push(o?`commit ${n} ${o}`:`commit ${n}`),r.parents.length>=2&&s.push(`Merge: ${r.parents.map(K).join(" ")}`),s.push(`Author: ${r.author.name} <${r.author.email}>`),s.push(`Date: ${vt(r.author.timestamp,r.author.timezone)}`),s.push("");let a=r.message.replace(/\n$/,"");for(let i of a.split(`
359
+ `)}default:return Tu(t,n)}}function Tu(e,t){let{hash:n,commit:r}=e,o=e.decorations?e.decorations(n):"",s=[];t||s.push(""),s.push(o?`commit ${n} ${o}`:`commit ${n}`),r.parents.length>=2&&s.push(`Merge: ${r.parents.map(K).join(" ")}`),s.push(`Author: ${r.author.name} <${r.author.email}>`),s.push(`Date: ${vt(r.author.timestamp,r.author.timezone)}`),s.push("");let a=r.message.replace(/\n$/,"");for(let i of a.split(`
348
360
  `))s.push(` ${i}`);return s.join(`
349
- `)}var $u=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Tu=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Hu(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}function Ho(e,t){let n=Hu(t);return new Date((e+n*60)*1e3)}function Au(e){return`${e.slice(0,3)}:${e.slice(3)}`}function vu(e,t){let n=Ho(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0"),a=String(n.getUTCHours()).padStart(2,"0"),i=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0");return`${r}-${o}-${s}T${a}:${i}:${c}${Au(t)}`}function Su(e,t){let n=Ho(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0"),a=String(n.getUTCHours()).padStart(2,"0"),i=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0");return`${r}-${o}-${s} ${a}:${i}:${c} ${t}`}function Du(e,t){let n=Ho(e,t),r=$u[n.getUTCDay()]?.slice(0,3),o=Tu[n.getUTCMonth()],s=n.getUTCDate(),a=String(n.getUTCHours()).padStart(2,"0"),i=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0"),f=n.getUTCFullYear();return`${r}, ${s} ${o} ${f} ${a}:${i}:${c} ${t}`}function xc(e,t){e.command("log",{description:"Show commit logs",transformArgs:n=>n.map(r=>/^-(\d+)$/.test(r)?`-n${r.slice(1)}`:r),args:[W.string().name("revisions").variadic().optional()],options:{maxCount:te.number().alias("n").describe("Limit the number of commits to output"),oneline:A().describe("Condense each commit to a single line"),all:A().describe("Walk all refs, not just HEAD"),author:te.string().describe("Filter by author (regex or substring)"),grep:te.string().describe("Filter by commit message (regex or substring)"),since:te.string().describe("Show commits after date"),after:te.string().describe("Synonym for --since"),until:te.string().describe("Show commits before date"),before:te.string().describe("Synonym for --until"),decorate:A().describe("Show ref names next to commit hashes"),reverse:A().describe("Output commits in reverse order"),format:te.string().describe("Pretty-print format string"),pretty:te.string().describe("Pretty-print format or preset name")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i,c,f=n.revisions,d=f&&f.length===1?ps(f[0]):null;if(d){let R=async oe=>{let Q=await je(a,oe);if(!Q)return Et(oe);try{return await Re(a,Q)}catch{return Et(oe)}},N=await R(d.left);if(typeof N=="object"&&"exitCode"in N)return N;let q=await R(d.right);if(typeof q=="object"&&"exitCode"in q)return q;let L=N,V=q;if(d.type==="two-dot")i=[V],c=[L];else{i=[L,V];let oe=await ht(a,L,V);c=oe.length>0?oe:void 0}if(n.all){let oe=await le(a);for(let ge of oe)try{let De=await Re(a,ge.hash);i.includes(De)||i.push(De)}catch{}let Q=await X(a);Q&&!i.includes(Q)&&i.push(Q)}}else if(n.all){let R=await le(a),N=new Set;for(let L of R)try{N.add(await Re(a,L.hash))}catch{}let q=await X(a);q&&N.add(q),i=[...N]}else if(f&&f.length>0){let R=[];for(let N of f){let q=await je(a,N);if(!q)return Et(N);try{R.push(await Re(a,q))}catch{return Et(N)}}i=R}else{let R=await Se(a);if(S(R))return R;i=[R]}if(i.length===0)return T("your current branch does not have any commits yet");let u=o.passthrough.length>0?o.passthrough.map(R=>Oe(R,"")):null,l=n.author?yc(n.author):null,m=n.grep?yc(n.grep):null,h=n.since??n.after,p=n.until??n.before,g=h?so(h):null,w=p?so(p):null,x=n.format??n.pretty,b=null,y=null,k=!1;if(n.oneline)y="oneline",k=!0;else if(x!==void 0){let R=wc(x);b=R.formatStr,y=R.preset}let P=n.decorate||b!=null&&(b.includes("%d")||b.includes("%D"))?await Lu(a):null,O=P?R=>Ec(P,R):void 0,E=P?R=>{let N=Ec(P,R);return N.startsWith("(")&&N.endsWith(")")?N.slice(1,-1):N}:void 0,I=n.maxCount,H=n.reverse,_=u?ju(a,i,u,c?await Mu(a,c):void 0):bn(a,i,{exclude:c}),G=[];for await(let R of _){if(I!==void 0&&G.length>=I)break;let{commit:N}=R;if(!(w!==null&&N.committer.timestamp>w)&&!(g!==null&&N.committer.timestamp<=g)){if(l){let q=`${N.author.name} <${N.author.email}>`;if(!l(q))continue}m&&!m(N.message)||G.push(R)}}let z=H?G.reverse():G;if(b!==null){let R=[];for(let N of z){let q={hash:N.hash,commit:N.commit,decorations:O,decorationsRaw:E};R.push(gc(b,q))}return{stdout:R.length>0?`${R.join(`
361
+ `)}var Hu=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Au=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function vu(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}function vo(e,t){let n=vu(t);return new Date((e+n*60)*1e3)}function Su(e){return`${e.slice(0,3)}:${e.slice(3)}`}function Du(e,t){let n=vo(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0"),a=String(n.getUTCHours()).padStart(2,"0"),i=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0");return`${r}-${o}-${s}T${a}:${i}:${c}${Su(t)}`}function Mu(e,t){let n=vo(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0"),a=String(n.getUTCHours()).padStart(2,"0"),i=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0");return`${r}-${o}-${s} ${a}:${i}:${c} ${t}`}function ju(e,t){let n=vo(e,t),r=Hu[n.getUTCDay()]?.slice(0,3),o=Au[n.getUTCMonth()],s=n.getUTCDate(),a=String(n.getUTCHours()).padStart(2,"0"),i=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0"),f=n.getUTCFullYear();return`${r}, ${s} ${o} ${f} ${a}:${i}:${c} ${t}`}function Cc(e,t){e.command("log",{description:"Show commit logs",transformArgs:n=>n.map(r=>/^-(\d+)$/.test(r)?`-n${r.slice(1)}`:r),args:[W.string().name("revisions").variadic().optional()],options:{maxCount:te.number().alias("n").describe("Limit the number of commits to output"),oneline:v().describe("Condense each commit to a single line"),all:v().describe("Walk all refs, not just HEAD"),author:te.string().describe("Filter by author (regex or substring)"),grep:te.string().describe("Filter by commit message (regex or substring)"),since:te.string().describe("Show commits after date"),after:te.string().describe("Synonym for --since"),until:te.string().describe("Show commits before date"),before:te.string().describe("Synonym for --until"),decorate:v().describe("Show ref names next to commit hashes"),reverse:v().describe("Output commits in reverse order"),format:te.string().describe("Pretty-print format string"),pretty:te.string().describe("Pretty-print format or preset name")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i,c,f=n.revisions,d=f&&f.length===1?bs(f[0]):null;if(d){let R=async oe=>{let Q=await je(a,oe);if(!Q)return xt(oe);try{return await Ie(a,Q)}catch{return xt(oe)}},_=await R(d.left);if(typeof _=="object"&&"exitCode"in _)return _;let q=await R(d.right);if(typeof q=="object"&&"exitCode"in q)return q;let N=_,V=q;if(d.type==="two-dot")i=[V],c=[N];else{i=[N,V];let oe=await gt(a,N,V);c=oe.length>0?oe:void 0}if(n.all){let oe=await le(a);for(let ge of oe)try{let De=await Ie(a,ge.hash);i.includes(De)||i.push(De)}catch{}let Q=await X(a);Q&&!i.includes(Q)&&i.push(Q)}}else if(n.all){let R=await le(a),_=new Set;for(let N of R)try{_.add(await Ie(a,N.hash))}catch{}let q=await X(a);q&&_.add(q),i=[..._]}else if(f&&f.length>0){let R=[];for(let _ of f){let q=await je(a,_);if(!q)return xt(_);try{R.push(await Ie(a,q))}catch{return xt(_)}}i=R}else{let R=await Se(a);if(S(R))return R;i=[R]}if(i.length===0)return T("your current branch does not have any commits yet");let u=o.passthrough.length>0?o.passthrough.map(R=>Oe(R,"")):null,l=n.author?xc(n.author):null,m=n.grep?xc(n.grep):null,h=n.since??n.after,p=n.until??n.before,g=h?io(h):null,w=p?io(p):null,x=n.format??n.pretty,b=null,E=null,k=!1;if(n.oneline)E="oneline",k=!0;else if(x!==void 0){let R=yc(x);b=R.formatStr,E=R.preset}let C=n.decorate||b!=null&&(b.includes("%d")||b.includes("%D"))?await Nu(a):null,O=C?R=>kc(C,R):void 0,y=C?R=>{let _=kc(C,R);return _.startsWith("(")&&_.endsWith(")")?_.slice(1,-1):_}:void 0,I=n.maxCount,A=n.reverse,L=u?Gu(a,i,u,c?await Lu(a,c):void 0):En(a,i,{exclude:c}),D=[];for await(let R of L){if(I!==void 0&&D.length>=I)break;let{commit:_}=R;if(!(w!==null&&_.committer.timestamp>w)&&!(g!==null&&_.committer.timestamp<=g)){if(l){let q=`${_.author.name} <${_.author.email}>`;if(!l(q))continue}m&&!m(_.message)||D.push(R)}}let z=A?D.reverse():D;if(b!==null){let R=[];for(let _ of z){let q={hash:_.hash,commit:_.commit,decorations:O,decorationsRaw:y};R.push(bc(b,q))}return{stdout:R.length>0?`${R.join(`
350
362
  `)}
351
- `:"",stderr:"",exitCode:0}}let D=y??"medium",$=[];for(let R=0;R<z.length;R++){let N=z[R],q={hash:N.hash,commit:N.commit,decorations:O,decorationsRaw:E};$.push(bc(D,q,R===0,k))}return{stdout:$.length>0?`${$.join(`
363
+ `:"",stderr:"",exitCode:0}}let M=E??"medium",$=[];for(let R=0;R<z.length;R++){let _=z[R],q={hash:_.hash,commit:_.commit,decorations:O,decorationsRaw:y};$.push(Ec(M,q,R===0,k))}return{stdout:$.length>0?`${$.join(`
352
364
  `)}
353
- `:"",stderr:"",exitCode:0}}})}async function Mu(e,t){let n=new Set;for await(let r of bn(e,t))n.add(r.hash);return n}function yc(e){try{let t=new RegExp(e);return n=>t.test(n)}catch{return t=>t.includes(e)}}async function*ju(e,t,n,r){let o=new Set(r),s=new jn,a=async i=>{if(!o.has(i)){let c=await M(e,i);s.push({hash:i,commit:c})}};for(let i of t)await a(i);for(;s.size>0;){let i=s.pop();if(o.has(i.hash))continue;o.add(i.hash);let{commit:c}=i,f=c.parents;if(f.length===0){(await Ae(e,null,c.tree)).some(l=>me(n,l.path))&&(yield i);continue}if(f.length===1){let u=f[0];if(u){let l=await M(e,u);(await Ae(e,l.tree,c.tree)).some(h=>me(n,h.path))&&(yield i),await a(u)}continue}let d=[];for(let u of f){let l=await M(e,u);(await Ae(e,l.tree,c.tree)).some(h=>me(n,h.path))||d.push(u)}if(d.length>0&&d[0])await a(d[0]);else{yield i;for(let u of f)await a(u)}}}async function Lu(e){let t=await J(e),n=t?.type==="symbolic"?de(t.target):null,r=await X(e),o=new Map,s=(f,d,u)=>{let l=o.get(f);l||(l=[],o.set(f,l)),l.push({label:d,fullRef:u})},a=await le(e,"refs/heads");for(let f of a)s(f.hash,de(f.name),f.name);let i=await le(e,"refs/remotes");for(let f of i)s(f.hash,f.name.replace("refs/remotes/",""),f.name);let c=await le(e,"refs/tags");for(let f of c){let d=f.hash;try{d=await Re(e,f.hash)}catch{}s(d,`tag: ${f.name.replace("refs/tags/","")}`,f.name)}return{headTarget:n,headHash:r,byHash:o}}function Ec(e,t){let n=e.byHash.get(t),r=!e.headTarget&&e.headHash!==null&&e.headHash===t;if((!n||n.length===0)&&!r)return"";let o=[],s=e.headTarget&&n?n.find(i=>i.label===e.headTarget):null;s?o.push(`HEAD -> ${s.label}`):r&&o.push("HEAD");let a=n?n.filter(i=>i!==s):[];a.sort((i,c)=>i.fullRef>c.fullRef?-1:i.fullRef<c.fullRef?1:0);for(let i of a)o.push(i.label);return o.length>0?`(${o.join(", ")})`:""}function Cc(e,t){e.command("ls-files",{description:"Show information about files in the index and the working tree",options:{cached:A().alias("c").describe("Show cached files (default)"),modified:A().alias("m").describe("Show modified files"),deleted:A().alias("d").describe("Show deleted files"),others:A().alias("o").describe("Show other (untracked) files"),unmerged:A().alias("u").describe("Show unmerged files"),stage:A().alias("s").describe("Show staged contents' mode, hash, and stage number"),"exclude-standard":A().describe("Add standard git exclusions (.gitignore, info/exclude, core.excludesFile)"),"nul-terminate":A().alias("z").describe("Use \\0 as line terminator instead of \\n"),"show-tags":A().alias("t").describe("Show status tags")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=Fe(a);if(i)return i;let c=a.workTree,f=n.cached,d=n.modified,u=n.deleted,l=n.others,m=n.unmerged,h=n.stage,p=n["exclude-standard"],g=n["nul-terminate"],w=n["show-tags"];f||d||u||l||m||(f=!0);let b=await U(a),y=g?"\0":`
354
- `,k=o.passthrough.length>0?o.passthrough.map(O=>{let E=r.cwd!==c?Gu(c,r.cwd):"";return Oe(O,E)}):null,C=[];if(f)for(let O of b.entries){if(k&&!me(k,O.path))continue;let E=w?O.stage>0?"M":"H":null;C.push(kc(O,h,E))}if(m&&!f)for(let O of b.entries)O.stage!==0&&(k&&!me(k,O.path)||C.push(kc(O,!0,w?"M":null)));if(d||u){let O=await Nu(a,c,b);for(let{path:E,status:I}of O){if(I==="modified"&&!d||I==="deleted"&&!u||k&&!me(k,E))continue;let H=w?I==="deleted"?"R":"C":null;C.push(H?`${H} ${E}`:E)}}if(l){let O=await _u(a,c,b,p);for(let E of O)k&&!me(k,E)||C.push(w?`? ${E}`:E)}return{stdout:C.length>0?C.join(y)+y:"",stderr:"",exitCode:0}}})}function kc(e,t,n){if(t){let r=e.mode.toString(8).padStart(6,"0");return`${n?`${n} `:""}${r} ${e.hash} ${e.stage} ${e.path}`}return n?`${n} ${e.path}`:e.path}function Gu(e,t){return t===e?"":t.startsWith(`${e}/`)?t.slice(e.length+1):""}async function Nu(e,t,n){let r=[];for(let o of n.entries){if(o.stage!==0)continue;let s=v(t,o.path);if(!await e.fs.exists(s)){r.push({path:o.path,status:"deleted"});continue}let i=await ze(e.fs,s);if(!i.isFile&&!i.isSymbolicLink)continue;await Zt(e.fs,s)!==o.hash&&r.push({path:o.path,status:"modified"})}return r}async function _u(e,t,n,r){let o=new Set(n.entries.map(a=>a.path));return(await _e(e,t,"",{skipIgnore:!r})).filter(a=>!o.has(a))}function Pc(e,t){e.command("merge",{description:"Join two or more development histories together",args:[W.string().name("branch").describe("Branch to merge into the current branch").optional()],options:{abort:A().describe("Abort the current in-progress merge"),continue:A().describe("Continue the merge after conflict resolution"),noFf:A().describe("Create a merge commit even when fast-forward is possible"),ffOnly:A().describe("Refuse to merge unless fast-forward is possible"),squash:A().describe("Apply merge result to worktree/index without creating a merge commit"),edit:A().describe("Edit the merge message (no-op, accepted for compatibility)"),message:te.string().alias("m").describe("Merge commit message")},transformArgs:n=>n.filter(r=>r!=="--ff"),handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort)return Wu(s,r.env);if(n.continue)return Bu(s,r.env,t);let a=n.branch;if(!a)return T("you must specify a branch to merge");let i=await Se(s);if(S(i))return i;let c=await U(s),f=Nt(c,"Merging");if(f)return f;if(await F(s,"MERGE_HEAD"))return T(`You have not concluded your merge (MERGE_HEAD exists).
365
+ `:"",stderr:"",exitCode:0}}})}async function Lu(e,t){let n=new Set;for await(let r of En(e,t))n.add(r.hash);return n}function xc(e){try{let t=new RegExp(e);return n=>t.test(n)}catch{return t=>t.includes(e)}}async function*Gu(e,t,n,r){let o=new Set(r),s=new Nn,a=async i=>{if(!o.has(i)){let c=await j(e,i);s.push({hash:i,commit:c})}};for(let i of t)await a(i);for(;s.size>0;){let i=s.pop();if(o.has(i.hash))continue;o.add(i.hash);let{commit:c}=i,f=c.parents;if(f.length===0){(await Ae(e,null,c.tree)).some(l=>me(n,l.path))&&(yield i);continue}if(f.length===1){let u=f[0];if(u){let l=await j(e,u);(await Ae(e,l.tree,c.tree)).some(h=>me(n,h.path))&&(yield i),await a(u)}continue}let d=[];for(let u of f){let l=await j(e,u);(await Ae(e,l.tree,c.tree)).some(h=>me(n,h.path))||d.push(u)}if(d.length>0&&d[0])await a(d[0]);else{yield i;for(let u of f)await a(u)}}}async function Nu(e){let t=await J(e),n=t?.type==="symbolic"?de(t.target):null,r=await X(e),o=new Map,s=(f,d,u)=>{let l=o.get(f);l||(l=[],o.set(f,l)),l.push({label:d,fullRef:u})},a=await le(e,"refs/heads");for(let f of a)s(f.hash,de(f.name),f.name);let i=await le(e,"refs/remotes");for(let f of i)s(f.hash,f.name.replace("refs/remotes/",""),f.name);let c=await le(e,"refs/tags");for(let f of c){let d=f.hash;try{d=await Ie(e,f.hash)}catch{}s(d,`tag: ${f.name.replace("refs/tags/","")}`,f.name)}return{headTarget:n,headHash:r,byHash:o}}function kc(e,t){let n=e.byHash.get(t),r=!e.headTarget&&e.headHash!==null&&e.headHash===t;if((!n||n.length===0)&&!r)return"";let o=[],s=e.headTarget&&n?n.find(i=>i.label===e.headTarget):null;s?o.push(`HEAD -> ${s.label}`):r&&o.push("HEAD");let a=n?n.filter(i=>i!==s):[];a.sort((i,c)=>i.fullRef>c.fullRef?-1:i.fullRef<c.fullRef?1:0);for(let i of a)o.push(i.label);return o.length>0?`(${o.join(", ")})`:""}function Oc(e,t){e.command("ls-files",{description:"Show information about files in the index and the working tree",options:{cached:v().alias("c").describe("Show cached files (default)"),modified:v().alias("m").describe("Show modified files"),deleted:v().alias("d").describe("Show deleted files"),others:v().alias("o").describe("Show other (untracked) files"),unmerged:v().alias("u").describe("Show unmerged files"),stage:v().alias("s").describe("Show staged contents' mode, hash, and stage number"),"exclude-standard":v().describe("Add standard git exclusions (.gitignore, info/exclude, core.excludesFile)"),"nul-terminate":v().alias("z").describe("Use \\0 as line terminator instead of \\n"),"show-tags":v().alias("t").describe("Show status tags")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=Fe(a);if(i)return i;let c=a.workTree,f=n.cached,d=n.modified,u=n.deleted,l=n.others,m=n.unmerged,h=n.stage,p=n["exclude-standard"],g=n["nul-terminate"],w=n["show-tags"];f||d||u||l||m||(f=!0);let b=await U(a),E=g?"\0":`
366
+ `,k=o.passthrough.length>0?o.passthrough.map(O=>{let y=r.cwd!==c?_u(c,r.cwd):"";return Oe(O,y)}):null,P=[];if(f)for(let O of b.entries){if(k&&!me(k,O.path))continue;let y=w?O.stage>0?"M":"H":null;P.push(Pc(O,h,y))}if(m&&!f)for(let O of b.entries)O.stage!==0&&(k&&!me(k,O.path)||P.push(Pc(O,!0,w?"M":null)));if(d||u){let O=await Fu(a,c,b);for(let{path:y,status:I}of O){if(I==="modified"&&!d||I==="deleted"&&!u||k&&!me(k,y))continue;let A=w?I==="deleted"?"R":"C":null;P.push(A?`${A} ${y}`:y)}}if(l){let O=await Uu(a,c,b,p);for(let y of O)k&&!me(k,y)||P.push(w?`? ${y}`:y)}return{stdout:P.length>0?P.join(E)+E:"",stderr:"",exitCode:0}}})}function Pc(e,t,n){if(t){let r=e.mode.toString(8).padStart(6,"0");return`${n?`${n} `:""}${r} ${e.hash} ${e.stage} ${e.path}`}return n?`${n} ${e.path}`:e.path}function _u(e,t){return t===e?"":t.startsWith(`${e}/`)?t.slice(e.length+1):""}async function Fu(e,t,n){let r=[];for(let o of n.entries){if(o.stage!==0)continue;let s=H(t,o.path);if(!await e.fs.exists(s)){r.push({path:o.path,status:"deleted"});continue}let i=await ze(e.fs,s);if(!i.isFile&&!i.isSymbolicLink)continue;await Jt(e.fs,s)!==o.hash&&r.push({path:o.path,status:"modified"})}return r}async function Uu(e,t,n,r){let o=new Set(n.entries.map(a=>a.path));return(await _e(e,t,"",{skipIgnore:!r})).filter(a=>!o.has(a))}function Ic(e,t){e.command("merge",{description:"Join two or more development histories together",args:[W.string().name("branch").describe("Branch to merge into the current branch").optional()],options:{abort:v().describe("Abort the current in-progress merge"),continue:v().describe("Continue the merge after conflict resolution"),noFf:v().describe("Create a merge commit even when fast-forward is possible"),ffOnly:v().describe("Refuse to merge unless fast-forward is possible"),squash:v().describe("Apply merge result to worktree/index without creating a merge commit"),edit:v().describe("Edit the merge message (no-op, accepted for compatibility)"),message:te.string().alias("m").describe("Merge commit message")},transformArgs:n=>n.filter(r=>r!=="--ff"),handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort)return Ku(s,r.env);if(n.continue)return qu(s,r.env,t);let a=n.branch;if(!a)return T("you must specify a branch to merge");let i=await Se(s);if(S(i))return i;let c=await U(s),f=_t(c,"Merging");if(f)return f;if(await F(s,"MERGE_HEAD"))return T(`You have not concluded your merge (MERGE_HEAD exists).
355
367
  Please, commit your changes before you merge.`);if(await F(s,"CHERRY_PICK_HEAD"))return T(`You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
356
- Please, commit your changes before you merge.`);let l=await je(s,a);if(!l)return j(`merge: ${a} - not something we can merge
357
- `);let m=await Re(s,l),h=await ht(s,i,m),p=h[0]??null;if(h.length===0)return T("refusing to merge unrelated histories");if(p===m)return{stdout:`Already up to date.${n.squash?" (nothing to squash)":""}
358
- `,stderr:"",exitCode:0};if(n.noFf&&n.ffOnly)return T("--no-ff and --ff-only are incompatible");let g=p===i&&!n.noFf;if(n.ffOnly&&!g)return j(`hint: Diverging branches can't be fast-forwarded, you need to either:
368
+ Please, commit your changes before you merge.`);let l=await je(s,a);if(!l)return G(`merge: ${a} - not something we can merge
369
+ `);let m=await Ie(s,l),h=await gt(s,i,m),p=h[0]??null;if(h.length===0)return T("refusing to merge unrelated histories");if(p===m)return{stdout:`Already up to date.${n.squash?" (nothing to squash)":""}
370
+ `,stderr:"",exitCode:0};if(n.noFf&&n.ffOnly)return T("--no-ff and --ff-only are incompatible");let g=p===i&&!n.noFf;if(n.ffOnly&&!g)return G(`hint: Diverging branches can't be fast-forwarded, you need to either:
359
371
  hint:
360
372
  hint: git merge --no-ff
361
373
  hint:
@@ -365,61 +377,61 @@ hint: git rebase
365
377
  hint:
366
378
  hint: Disable this message with "git config set advice.diverging false"
367
379
  fatal: Not possible to fast-forward, aborting.
368
- `,128);if(await F(s,"REVERT_HEAD")&&await pt(s),g&&!n.squash){let b=await J(s),y=await Jr(s,i,m);if(y.exitCode===0&&n.message&&(y.stdout=y.stdout.replace(/^Fast-forward$/m,"Fast-forward (no commit created; -m option ignored)")),y.exitCode===0){let k=b?.type==="symbolic"?b.target:"HEAD";await ee(s,r.env,k,i,m,`merge ${a}: Fast-forward${n.message?" (no commit created; -m option ignored)":""}`,b?.type==="symbolic"),await t?.hooks?.emitPost("post-merge",{headHash:i,theirsHash:m,strategy:"fast-forward",commitHash:null})}return y}let w=n.message,x=w?w.endsWith(`
380
+ `,128);if(await F(s,"REVERT_HEAD")&&await wt(s),g&&!n.squash){let b=await J(s),E=await es(s,i,m);if(E.exitCode===0&&n.message&&(E.stdout=E.stdout.replace(/^Fast-forward$/m,"Fast-forward (no commit created; -m option ignored)")),E.exitCode===0){let k=b?.type==="symbolic"?b.target:"HEAD";await ee(s,r.env,k,i,m,`merge ${a}: Fast-forward${n.message?" (no commit created; -m option ignored)":""}`,b?.type==="symbolic"),await t?.hooks?.emitPost("post-merge",{headHash:i,theirsHash:m,strategy:"fast-forward",commitHash:null})}return E}let w=n.message,x=w?w.endsWith(`
369
381
  `)?w:`${w}
370
- `:void 0;return n.squash?Uu(s,i,m,a,r.env,t,x):Fu(s,i,m,a,r.env,n.noFf,t,x)}})}async function Fu(e,t,n,r,o,s=!1,a,i){let c=await M(e,t),f=await J(e),d=f?.type==="symbolic"?de(f.target):"HEAD",u={a:"HEAD",b:r},l=await fr(e,t,n,u),m=await Wt(e,l,c.tree,{labels:u,errorExitCode:2,operationName:"merge"});if(!m.ok)return m.failureKind==="staged"&&f?.type==="symbolic"&&await ee(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`),m;if(l.conflicts.length>0){await Y(e,"MERGE_HEAD",n),await Y(e,"ORIG_HEAD",t);let C=i??await Ft(e,r,d);if(a?.hooks){let E={message:C,treeHash:m.mergedTreeHash,headHash:t,theirsHash:n},I=await a.hooks.emitPre("merge-msg",E);if(I)return{stdout:"",stderr:I.message??"",exitCode:1};C=E.message}let P=Rt({version:2,entries:l.entries}).sort();return C+=`
382
+ `:void 0;return n.squash?Wu(s,i,m,a,r.env,t,x):Bu(s,i,m,a,r.env,n.noFf,t,x)}})}async function Bu(e,t,n,r,o,s=!1,a,i){let c=await j(e,t),f=await J(e),d=f?.type==="symbolic"?de(f.target):"HEAD",u={a:"HEAD",b:r},l=await lr(e,t,n,u),m=await qt(e,l,c.tree,{labels:u,errorExitCode:2,operationName:"merge"});if(!m.ok)return m.failureKind==="staged"&&f?.type==="symbolic"&&await ee(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`),m;if(l.conflicts.length>0){await Y(e,"MERGE_HEAD",n),await Y(e,"ORIG_HEAD",t);let P=i??await Ut(e,r,d);if(a?.hooks){let y={message:P,treeHash:m.mergedTreeHash,headHash:t,theirsHash:n},I=await a.hooks.emitPre("merge-msg",y);if(I)return{stdout:"",stderr:I.message??"",exitCode:1};P=y.message}let C=It({version:2,entries:l.entries}).sort();return P+=`
371
383
  # Conflicts:
372
- ${P.map(E=>`# ${E}`).join(`
384
+ ${C.map(y=>`# ${y}`).join(`
373
385
  `)}
374
- `,await Ue(e,"MERGE_MSG",C),await Ue(e,"MERGE_MODE",s?"no-ff":""),{stdout:`${[...l.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
386
+ `,await Ue(e,"MERGE_MSG",P),await Ue(e,"MERGE_MODE",s?"no-ff":""),{stdout:`${[...l.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
375
387
  `)}
376
- `,stderr:"",exitCode:1}}let h=m.mergedTreeHash,p=await Ht(e,o);if(S(p))return p;let g=await Le(e,o);if(S(g))return g;let w=i??await Ft(e,r,d);if(a?.hooks){let C={message:w,treeHash:h,headHash:t,theirsHash:n},P=await a.hooks.emitPre("merge-msg",C);if(P)return{stdout:"",stderr:P.message??"",exitCode:1};w=C.message}if(a?.hooks){let C=await a.hooks.emitPre("pre-merge-commit",{mergeMessage:w,treeHash:h,headHash:t,theirsHash:n});if(C)return{stdout:"",stderr:C.message??"",exitCode:1}}let x=await Je(e,h,[t,n],p,g,w),b=f?.type==="symbolic"?f.target:"HEAD";await ee(e,o,b,t,x,`merge ${r}: Merge made by the 'ort' strategy.`,f?.type==="symbolic"),await a?.hooks?.emitPost("post-merge",{headHash:t,theirsHash:n,strategy:"three-way",commitHash:x});let y=await sn(e,c.tree,h);return{stdout:`${l.messages.length>0?`${l.messages.join(`
388
+ `,stderr:"",exitCode:1}}let h=m.mergedTreeHash,p=await Ht(e,o);if(S(p))return p;let g=await Le(e,o);if(S(g))return g;let w=i??await Ut(e,r,d);if(a?.hooks){let P={message:w,treeHash:h,headHash:t,theirsHash:n},C=await a.hooks.emitPre("merge-msg",P);if(C)return{stdout:"",stderr:C.message??"",exitCode:1};w=P.message}if(a?.hooks){let P=await a.hooks.emitPre("pre-merge-commit",{mergeMessage:w,treeHash:h,headHash:t,theirsHash:n});if(P)return{stdout:"",stderr:P.message??"",exitCode:1}}let x=await Je(e,h,[t,n],p,g,w),b=f?.type==="symbolic"?f.target:"HEAD";await ee(e,o,b,t,x,`merge ${r}: Merge made by the 'ort' strategy.`,f?.type==="symbolic"),await a?.hooks?.emitPost("post-merge",{headHash:t,theirsHash:n,strategy:"three-way",commitHash:x});let E=await an(e,c.tree,h);return{stdout:`${l.messages.length>0?`${l.messages.join(`
377
389
  `)}
378
390
  `:""}Merge made by the 'ort' strategy.
379
- ${y}`,stderr:"",exitCode:0}}async function Uu(e,t,n,r,o,s,a){let i=await M(e,t),c=await J(e),f=c?.type==="symbolic"?de(c.target):"HEAD",d={a:"HEAD",b:r},u=await ht(e,t,n),l=u.length>0&&u[0]===t,m=l?`Updating ${K(t)}..${K(n)}
380
- `:"",h=await fr(e,t,n,d),p=await Wt(e,h,i.tree,{labels:d,errorExitCode:l?1:2,operationName:"merge"});if(!p.ok){!l&&p.failureKind==="staged"&&c?.type==="symbolic"&&await ee(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`);let k=p;return m&&(k.stdout=m+k.stdout),k}if(h.conflicts.length>0){await Y(e,"ORIG_HEAD",t);let k=a??await Ft(e,r,f);return k=`Squashed commit of the following:
391
+ ${E}`,stderr:"",exitCode:0}}async function Wu(e,t,n,r,o,s,a){let i=await j(e,t),c=await J(e),f=c?.type==="symbolic"?de(c.target):"HEAD",d={a:"HEAD",b:r},u=await gt(e,t,n),l=u.length>0&&u[0]===t,m=l?`Updating ${K(t)}..${K(n)}
392
+ `:"",h=await lr(e,t,n,d),p=await qt(e,h,i.tree,{labels:d,errorExitCode:l?1:2,operationName:"merge",skipStagedChangeCheck:l});if(!p.ok){!l&&p.failureKind==="staged"&&c?.type==="symbolic"&&await ee(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`);let k=p;return m&&(k.stdout=m+k.stdout),k}if(h.conflicts.length>0){await Y(e,"ORIG_HEAD",t);let k=a??await Ut(e,r,f);return k=`Squashed commit of the following:
381
393
 
382
394
  ${k}`,await Ue(e,"MERGE_MSG",k),await Ue(e,"MERGE_MODE",""),{stdout:`${[...h.messages,"Squash commit -- not updating HEAD","Automatic merge failed; fix conflicts and then commit the result."].join(`
383
395
  `)}
384
- `,stderr:"",exitCode:1}}let g=p.mergedTreeHash,w=await sn(e,i.tree,g),x=h.messages.length>0?`${h.messages.join(`
396
+ `,stderr:"",exitCode:1}}let g=p.mergedTreeHash,w=await an(e,i.tree,g),x=h.messages.length>0?`${h.messages.join(`
385
397
  `)}
386
- `:"",b=a??await Ft(e,r,f);return b=`Squashed commit of the following:
398
+ `:"",b=a??await Ut(e,r,f);return b=`Squashed commit of the following:
387
399
 
388
400
  ${b}`,await Ue(e,"MERGE_MSG",b),{stdout:`${l?`${m}Fast-forward
389
401
  `:""}${x}Squash commit -- not updating HEAD
390
402
  ${l?w:""}`,stderr:l?"":`Automatic merge went well; stopped before committing as requested
391
- `,exitCode:0}}async function Bu(e,t,n){let r=await F(e,"MERGE_HEAD");if(!r)return T("There is no merge in progress (MERGE_HEAD missing).");let o=await U(e),s=Nt(o,"Committing");if(s)return s;let a=await Se(e);if(S(a))return a;let i=await M(e,a),c=await qe(e,"MERGE_MSG");if(c)c=nr(c);else{let k=await J(e),C=k?.type==="symbolic"?de(k.target):"HEAD";c=await Ft(e,"unknown",C)}let f=xe(o),d=await ke(e,f),u=await Ht(e,t);if(S(u))return u;let l=await Le(e,t);if(S(l))return l;let m=mt(c);if(n?.hooks){let k={message:m,treeHash:d,headHash:a,theirsHash:r},C=await n.hooks.emitPre("merge-msg",k);if(C)return{stdout:"",stderr:C.message??"",exitCode:1};m=k.message}if(n?.hooks){let k=await n.hooks.emitPre("pre-merge-commit",{mergeMessage:m,treeHash:d,headHash:a,theirsHash:r});if(k)return{stdout:"",stderr:k.message??"",exitCode:1}}let h=await Je(e,d,[a,r],u,l,m);await sr(e);let p=await J(e),g=ue(m),w=p?.type==="symbolic"?p.target:"HEAD";await ee(e,t,w,a,h,`commit (merge): ${g}`,p?.type==="symbolic"),await n?.hooks?.emitPost("post-merge",{headHash:a,theirsHash:r,strategy:"three-way",commitHash:h});let x=await sn(e,i.tree,d),b=p?.type==="symbolic"?de(p.target):"detached HEAD";return{stdout:`${ut(b,h,c)}
392
- ${x}`,stderr:"",exitCode:0}}async function Wu(e,t){return en(e,t,{operationRef:"MERGE_HEAD",noOpError:T("There is no merge to abort (MERGE_HEAD missing)."),operationName:"merge",clearState:sr})}function Oc(e,t){e.command("mv",{description:"Move or rename a file, directory, or symlink",args:[W.string().name("sources").describe("Source file(s) or directory").optional().variadic()],options:{force:A().alias("f").describe("Force renaming even if target exists"),"dry-run":A().alias("n").describe("Do nothing; only show what would happen"),skip:A().alias("k").describe("Skip move/rename actions that would lead to errors")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c=n.sources;if(c.length<2)return j(`usage: git mv [<options>] <source>... <destination>
393
- `);let f=c[c.length-1],d=c.slice(0,-1),u=ct(r.cwd,f),l=Ke(i,u);if(l.startsWith(".."))return T(`'${f}' is outside repository at '${i}'`);let m=await U(s),h=await r.fs.exists(u),p=h&&(await r.fs.stat(u)).isDirectory;if(d.length>1&&!p)return T(h?`destination '${f}' is not a directory`:`destination directory '${f}' does not exist`);let g=[];for(let w of d){let x=ct(r.cwd,w),b=Ke(i,x);if(b.startsWith("..")){if(n.skip)continue;return T(`'${w}' is outside repository at '${i}'`)}if(!await r.fs.exists(x)){if(n.skip)continue;return T(`bad source, source=${b}, destination=${l}`)}let C=(await r.fs.stat(x)).isDirectory;if(!(C?m.entries.some(_=>_.path===b||_.path.startsWith(`${b}/`)):m.entries.some(_=>_.path===b&&_.stage===0))){let _=!C&&m.entries.some(G=>G.path===b&&G.stage>0);if(n.skip)continue;return T(_?`conflicted, source=${b}, destination=${l}`:`not under version control, source=${b}, destination=${l}`)}let O,E;if(p){let _=Wn(b);O=l===""||l==="."?_:`${l}/${_}`,E=v(u,_)}else O=l,E=u;if(await r.fs.exists(E)&&!n.force)if((await r.fs.stat(E)).isDirectory){let G=Wn(b);O=`${O}/${G}`,E=v(E,G)}else{if(n.skip)continue;return T(`destination exists, source=${b}, destination=${O}`)}if(b===O){if(n.skip)continue;return T(`can not move directory into itself, source=${b}, destination=${O}`)}let H=Pt(E);if(!await r.fs.exists(H)){if(n.skip)continue;return T(`renaming '${b}' failed: No such file or directory`)}if(C){let _=`${b}/`,G=m.entries.filter(z=>z.path.startsWith(_)&&z.stage===0);for(let z of G){let D=z.path.slice(b.length),$=O+D,R=E+D;g.push({srcRel:z.path,dstRel:$,srcAbs:v(i,z.path),dstAbs:R})}}else g.push({srcRel:b,dstRel:O,srcAbs:x,dstAbs:E})}if(g.length===0)return{stdout:"",stderr:"",exitCode:0};if(n["dry-run"])return{stdout:"",stderr:"",exitCode:0};for(let w of g){let x=Pt(w.dstAbs);await r.fs.exists(x)||await r.fs.mkdir(x,{recursive:!0});let b=await r.fs.readFileBuffer(w.srcAbs);await r.fs.writeFile(w.dstAbs,b),await r.fs.rm(w.srcAbs);let y=Dt(m,w.srcRel,0);if(y){m=Ne(m,w.srcRel);let k={...y,path:w.dstRel};m=Xe(m,k)}}for(let w of g)await pn(r.fs,Pt(w.srcAbs),i);return await re(s,m),{stdout:"",stderr:"",exitCode:0}}})}function Rc(e,t){e.command("pull",{description:"Fetch from and integrate with another repository",args:[W.string().name("remote").describe("Remote to pull from").optional(),W.string().name("branch").describe("Remote branch").optional()],options:{rebase:A().alias("r").describe("Rebase instead of merge"),noRebase:A().describe("Merge instead of rebase"),ffOnly:A().describe("Only fast-forward"),noFf:A().describe("Create a merge commit even for fast-forwards")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await Se(s);if(S(a))return a;let i=await U(s);if(dt(i))return j(`error: Pulling is not possible because you have unmerged files.
394
- `,128);let c=n.remote,f=n.branch;if(!c){let ne=await J(s);if(ne?.type==="symbolic"){let Ce=ne.target.startsWith("refs/heads/")?ne.target.slice(11):ne.target,Pn=(await ae(s))[`branch "${Ce}"`];Pn&&(c=Pn.remote||"origin",!f&&Pn.merge&&(f=Pn.merge.startsWith("refs/heads/")?Pn.merge.slice(11):Pn.merge))}}c=c||"origin";let d;try{d=await Nn(s,c,r.env)}catch(ne){let Ce=ne instanceof Error?ne.message:"";if(Ce.startsWith("network"))return T(Ce);throw ne}if(!d)return T(`'${c}' does not appear to be a git repository`);let{transport:u,config:l}=d,m=f??null;if(t?.hooks){let ne=await t.hooks.emitPre("pre-pull",{remote:c,branch:m});if(ne)return{stdout:"",stderr:ne.message??"",exitCode:1}}let h=Cn(l.fetchRefspec),p=await u.advertiseRefs();if(p.length===0)return T("Couldn't find remote ref HEAD");let w=(await le(s)).map(ne=>ne.hash),x=await F(s,"HEAD");x&&w.push(x);let b=[],y=new Set,k=[];for(let ne of p){if(ne.name==="HEAD")continue;let Ce=ws(h,ne.name);Ce!==null&&(k.push({remote:ne,localRef:Ce}),y.has(ne.hash)||(y.add(ne.hash),b.push(ne.hash)))}let C=new Set(w),P=b.filter(ne=>!C.has(ne));P.length>0&&await u.fetch(P,w);let O=await Ot(s,r.env);for(let ne of k){let Ce=await F(s,ne.localRef);await Y(s,ne.localRef,ne.remote.hash),await Te(s,ne.localRef,{oldHash:Ce??Z,newHash:ne.remote.hash,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:Ce?"pull":"pull: storing head"})}let E=null;if(f){let ne=p.find(Ce=>Ce.name===`refs/heads/${f}`);if(ne)E=ne.hash;else return T(`Couldn't find remote ref refs/heads/${f}`)}else{let ne=p.find(Ce=>Ce.name==="HEAD");ne&&(E=ne.hash)}if(E&&await r.fs.writeFile(v(s.gitDir,"FETCH_HEAD"),`${E} ${l.url}
395
- `),!E)return T("Could not determine remote HEAD");let I=E;if(a===I)return await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
396
- `,stderr:"",exitCode:0};let H=await ht(s,a,I),_=H[0]??null;if(H.length===0)return T("refusing to merge unrelated histories");if(_===I)return await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
397
- `,stderr:"",exitCode:0};let G=_===a;if(n.ffOnly&&!G)return T("Not possible to fast-forward, aborting.");if(G&&!n.noFf){let ne=await Jr(s,a,I),Ce=await J(s),ln=Ce?.type==="symbolic"?Ce.target:"HEAD";return await Te(s,ln,{oldHash:a,newHash:I,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:"pull: Fast-forward"}),Ce?.type==="symbolic"&&await Te(s,"HEAD",{oldHash:a,newHash:I,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:"pull: Fast-forward"}),ne.exitCode===0&&(await t?.hooks?.emitPost("post-merge",{headHash:a,theirsHash:I,strategy:"fast-forward",commitHash:null}),await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"fast-forward",commitHash:null})),ne}let z=await J(s),D=z?.type==="symbolic"?de(z.target):"HEAD",$=f||c||"FETCH_HEAD",R={a:"HEAD",b:$},N=await fr(s,a,I,R),q=await M(s,a),L=await Wt(s,N,q.tree,{labels:R,errorExitCode:2,operationName:"merge"});if(!L.ok)return L;if(N.conflicts.length>0){await Y(s,"MERGE_HEAD",I),await Y(s,"ORIG_HEAD",a);let ne=await Ft(s,$,D),Ce=Rt({version:2,entries:N.entries}).sort();return ne+=`
403
+ `,exitCode:0}}async function qu(e,t,n){let r=await F(e,"MERGE_HEAD");if(!r)return T("There is no merge in progress (MERGE_HEAD missing).");let o=await U(e),s=_t(o,"Committing");if(s)return s;let a=await Se(e);if(S(a))return a;let i=await j(e,a),c=await qe(e,"MERGE_MSG");if(c)c=or(c);else{let k=await J(e),P=k?.type==="symbolic"?de(k.target):"HEAD";c=await Ut(e,"unknown",P)}let f=xe(o),d=await ke(e,f),u=await Ht(e,t);if(S(u))return u;let l=await Le(e,t);if(S(l))return l;let m=ht(c);if(n?.hooks){let k={message:m,treeHash:d,headHash:a,theirsHash:r},P=await n.hooks.emitPre("merge-msg",k);if(P)return{stdout:"",stderr:P.message??"",exitCode:1};m=k.message}if(n?.hooks){let k=await n.hooks.emitPre("pre-merge-commit",{mergeMessage:m,treeHash:d,headHash:a,theirsHash:r});if(k)return{stdout:"",stderr:k.message??"",exitCode:1}}let h=await Je(e,d,[a,r],u,l,m);await ar(e);let p=await J(e),g=ue(m),w=p?.type==="symbolic"?p.target:"HEAD";await ee(e,t,w,a,h,`commit (merge): ${g}`,p?.type==="symbolic"),await n?.hooks?.emitPost("post-merge",{headHash:a,theirsHash:r,strategy:"three-way",commitHash:h});let x=await an(e,i.tree,d),b=p?.type==="symbolic"?de(p.target):"detached HEAD";return{stdout:`${mt(b,h,c)}
404
+ ${x}`,stderr:"",exitCode:0}}async function Ku(e,t){return tn(e,t,{operationRef:"MERGE_HEAD",noOpError:T("There is no merge to abort (MERGE_HEAD missing)."),operationName:"merge",clearState:ar})}function Rc(e,t){e.command("mv",{description:"Move or rename a file, directory, or symlink",args:[W.string().name("sources").describe("Source file(s) or directory").optional().variadic()],options:{force:v().alias("f").describe("Force renaming even if target exists"),"dry-run":v().alias("n").describe("Do nothing; only show what would happen"),skip:v().alias("k").describe("Skip move/rename actions that would lead to errors")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c=n.sources;if(c.length<2)return G(`usage: git mv [<options>] <source>... <destination>
405
+ `);let f=c[c.length-1],d=c.slice(0,-1),u=ft(r.cwd,f),l=Ke(i,u);if(l.startsWith(".."))return T(`'${f}' is outside repository at '${i}'`);let m=await U(s),h=await r.fs.exists(u),p=h&&(await r.fs.stat(u)).isDirectory;if(d.length>1&&!p)return T(h?`destination '${f}' is not a directory`:`destination directory '${f}' does not exist`);let g=[];for(let w of d){let x=ft(r.cwd,w),b=Ke(i,x);if(b.startsWith("..")){if(n.skip)continue;return T(`'${w}' is outside repository at '${i}'`)}if(!await r.fs.exists(x)){if(n.skip)continue;return T(`bad source, source=${b}, destination=${l}`)}let P=(await r.fs.stat(x)).isDirectory;if(!(P?m.entries.some(L=>L.path===b||L.path.startsWith(`${b}/`)):m.entries.some(L=>L.path===b&&L.stage===0))){let L=!P&&m.entries.some(D=>D.path===b&&D.stage>0);if(n.skip)continue;return T(L?`conflicted, source=${b}, destination=${l}`:`not under version control, source=${b}, destination=${l}`)}let O,y;if(p){let L=zn(b);O=l===""||l==="."?L:`${l}/${L}`,y=H(u,L)}else O=l,y=u;if(await r.fs.exists(y)&&!n.force)if((await r.fs.stat(y)).isDirectory){let D=zn(b);O=`${O}/${D}`,y=H(y,D)}else{if(n.skip)continue;return T(`destination exists, source=${b}, destination=${O}`)}if(b===O){if(n.skip)continue;return T(`can not move directory into itself, source=${b}, destination=${O}`)}let A=Pt(y);if(!await r.fs.exists(A)){if(n.skip)continue;return T(`renaming '${b}' failed: No such file or directory`)}if(P){let L=`${b}/`,D=m.entries.filter(z=>z.path.startsWith(L)&&z.stage===0);for(let z of D){let M=z.path.slice(b.length),$=O+M,R=y+M;g.push({srcRel:z.path,dstRel:$,srcAbs:H(i,z.path),dstAbs:R})}}else g.push({srcRel:b,dstRel:O,srcAbs:x,dstAbs:y})}if(g.length===0)return{stdout:"",stderr:"",exitCode:0};if(n["dry-run"])return{stdout:"",stderr:"",exitCode:0};for(let w of g){let x=Pt(w.dstAbs);await r.fs.exists(x)||await r.fs.mkdir(x,{recursive:!0});let b=await r.fs.readFileBuffer(w.srcAbs);await r.fs.writeFile(w.dstAbs,b),await r.fs.rm(w.srcAbs);let E=Dt(m,w.srcRel,0);if(E){m=Ne(m,w.srcRel);let k={...E,path:w.dstRel};m=Xe(m,k)}}for(let w of g)await wn(r.fs,Pt(w.srcAbs),i);return await re(s,m),{stdout:"",stderr:"",exitCode:0}}})}function $c(e,t){e.command("pull",{description:"Fetch from and integrate with another repository",args:[W.string().name("remote").describe("Remote to pull from").optional(),W.string().name("branch").describe("Remote branch").optional()],options:{rebase:v().alias("r").describe("Rebase instead of merge"),noRebase:v().describe("Merge instead of rebase"),ffOnly:v().describe("Only fast-forward"),noFf:v().describe("Create a merge commit even for fast-forwards")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=await Se(s);if(S(a))return a;let i=await U(s);if(lt(i))return G(`error: Pulling is not possible because you have unmerged files.
406
+ `,128);let c=n.remote,f=n.branch;if(!c){let ne=await J(s);if(ne?.type==="symbolic"){let Ce=ne.target.startsWith("refs/heads/")?ne.target.slice(11):ne.target,In=(await ce(s))[`branch "${Ce}"`];In&&(c=In.remote||"origin",!f&&In.merge&&(f=In.merge.startsWith("refs/heads/")?In.merge.slice(11):In.merge))}}c=c||"origin";let d;try{d=await Un(s,c,r.env)}catch(ne){let Ce=ne instanceof Error?ne.message:"";if(Ce.startsWith("network"))return T(Ce);throw ne}if(!d)return T(`'${c}' does not appear to be a git repository`);let{transport:u,config:l}=d,m=f??null;if(t?.hooks){let ne=await t.hooks.emitPre("pre-pull",{remote:c,branch:m});if(ne)return{stdout:"",stderr:ne.message??"",exitCode:1}}let h=On(l.fetchRefspec),p=await u.advertiseRefs();if(p.length===0)return T("Couldn't find remote ref HEAD");let w=(await le(s)).map(ne=>ne.hash),x=await F(s,"HEAD");x&&w.push(x);let b=[],E=new Set,k=[];for(let ne of p){if(ne.name==="HEAD")continue;let Ce=Es(h,ne.name);Ce!==null&&(k.push({remote:ne,localRef:Ce}),E.has(ne.hash)||(E.add(ne.hash),b.push(ne.hash)))}let P=new Set(w),C=b.filter(ne=>!P.has(ne));C.length>0&&await u.fetch(C,w);let O=await Ot(s,r.env);for(let ne of k){let Ce=await F(s,ne.localRef);await Y(s,ne.localRef,ne.remote.hash),await Te(s,ne.localRef,{oldHash:Ce??Z,newHash:ne.remote.hash,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:Ce?"pull":"pull: storing head"})}let y=null;if(f){let ne=p.find(Ce=>Ce.name===`refs/heads/${f}`);if(ne)y=ne.hash;else return T(`Couldn't find remote ref refs/heads/${f}`)}else{let ne=p.find(Ce=>Ce.name==="HEAD");ne&&(y=ne.hash)}if(y&&await r.fs.writeFile(H(s.gitDir,"FETCH_HEAD"),`${y} ${l.url}
407
+ `),!y)return T("Could not determine remote HEAD");let I=y;if(a===I)return await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
408
+ `,stderr:"",exitCode:0};let A=await gt(s,a,I),L=A[0]??null;if(A.length===0)return T("refusing to merge unrelated histories");if(L===I)return await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
409
+ `,stderr:"",exitCode:0};let D=L===a;if(n.ffOnly&&!D)return T("Not possible to fast-forward, aborting.");if(D&&!n.noFf){let ne=await es(s,a,I),Ce=await J(s),mn=Ce?.type==="symbolic"?Ce.target:"HEAD";return await Te(s,mn,{oldHash:a,newHash:I,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:"pull: Fast-forward"}),Ce?.type==="symbolic"&&await Te(s,"HEAD",{oldHash:a,newHash:I,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:"pull: Fast-forward"}),ne.exitCode===0&&(await t?.hooks?.emitPost("post-merge",{headHash:a,theirsHash:I,strategy:"fast-forward",commitHash:null}),await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"fast-forward",commitHash:null})),ne}let z=await J(s),M=z?.type==="symbolic"?de(z.target):"HEAD",$=f||c||"FETCH_HEAD",R={a:"HEAD",b:$},_=await lr(s,a,I,R),q=await j(s,a),N=await qt(s,_,q.tree,{labels:R,errorExitCode:2,operationName:"merge"});if(!N.ok)return N;if(_.conflicts.length>0){await Y(s,"MERGE_HEAD",I),await Y(s,"ORIG_HEAD",a);let ne=await Ut(s,$,M),Ce=It({version:2,entries:_.entries}).sort();return ne+=`
398
410
  # Conflicts:
399
- ${Ce.map(ln=>`# ${ln}`).join(`
411
+ ${Ce.map(mn=>`# ${mn}`).join(`
400
412
  `)}
401
- `,await Ue(s,"MERGE_MSG",ne),{stdout:`${[...N.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
413
+ `,await Ue(s,"MERGE_MSG",ne),{stdout:`${[..._.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
402
414
  `)}
403
- `,stderr:"",exitCode:1}}let V=L.mergedTreeHash,oe=await Ht(s,r.env);if(S(oe))return oe;let Q=await Le(s,r.env);if(S(Q))return Q;let ge=await Ft(s,$,D);if(t?.hooks){let ne={message:ge,treeHash:V,headHash:a,theirsHash:I},Ce=await t.hooks.emitPre("merge-msg",ne);if(Ce)return{stdout:"",stderr:Ce.message??"",exitCode:1};ge=ne.message;let ln=await t.hooks.emitPre("pre-merge-commit",{mergeMessage:ge,treeHash:V,headHash:a,theirsHash:I});if(ln)return{stdout:"",stderr:ln.message??"",exitCode:1}}let De=await Je(s,V,[a,I],oe,Q,ge);await t?.hooks?.emitPost("post-merge",{headHash:a,theirsHash:I,strategy:"three-way",commitHash:De}),await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"three-way",commitHash:De});let dn=z?.type==="symbolic"?z.target:"HEAD",Ie="pull: Merge made by the 'ort' strategy.";await Te(s,dn,{oldHash:a,newHash:De,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:Ie}),z?.type==="symbolic"&&await Te(s,"HEAD",{oldHash:a,newHash:De,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:Ie});let wr=await sn(s,q.tree,V);return{stdout:`${N.messages.length>0?`${N.messages.join(`
415
+ `,stderr:"",exitCode:1}}let V=N.mergedTreeHash,oe=await Ht(s,r.env);if(S(oe))return oe;let Q=await Le(s,r.env);if(S(Q))return Q;let ge=await Ut(s,$,M);if(t?.hooks){let ne={message:ge,treeHash:V,headHash:a,theirsHash:I},Ce=await t.hooks.emitPre("merge-msg",ne);if(Ce)return{stdout:"",stderr:Ce.message??"",exitCode:1};ge=ne.message;let mn=await t.hooks.emitPre("pre-merge-commit",{mergeMessage:ge,treeHash:V,headHash:a,theirsHash:I});if(mn)return{stdout:"",stderr:mn.message??"",exitCode:1}}let De=await Je(s,V,[a,I],oe,Q,ge);await t?.hooks?.emitPost("post-merge",{headHash:a,theirsHash:I,strategy:"three-way",commitHash:De}),await t?.hooks?.emitPost("post-pull",{remote:c,branch:m,strategy:"three-way",commitHash:De});let un=z?.type==="symbolic"?z.target:"HEAD",Re="pull: Merge made by the 'ort' strategy.";await Te(s,un,{oldHash:a,newHash:De,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:Re}),z?.type==="symbolic"&&await Te(s,"HEAD",{oldHash:a,newHash:De,name:O.name,email:O.email,timestamp:O.timestamp,tz:O.tz,message:Re});let yr=await an(s,q.tree,V);return{stdout:`${_.messages.length>0?`${_.messages.join(`
404
416
  `)}
405
417
  `:""}Merge made by the 'ort' strategy.
406
- ${wr}`,stderr:"",exitCode:0}}})}function Ic(e,t){e.command("push",{description:"Update remote refs along with associated objects",args:[W.string().name("remote").describe("Remote to push to").optional(),W.string().name("refspec").describe("Refspec(s) to push").optional().variadic()],options:{force:A().alias("f").describe("Force push"),"set-upstream":A().alias("u").describe("Set upstream tracking reference"),all:A().describe("Push all branches"),delete:A().alias("d").describe("Delete remote refs"),tags:A().describe("Push all tags")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=n.remote||"origin",i;try{i=await Nn(s,a,r.env)}catch(b){let y=b instanceof Error?b.message:"";if(y.startsWith("network"))return T(y);throw b}if(!i)return T(`'${a}' does not appear to be a git repository`);let{transport:c,config:f}=i,d=n.force,u=await c.advertiseRefs(),l=new Map;for(let b of u)l.set(b.name,b.hash);let m=[],h=n.refspec;if(n.delete){let b=h&&h.length>0?h:[];if(b.length===0)return T("--delete requires a ref argument");for(let y of b){let k=y.startsWith("refs/")?y:`refs/heads/${y}`,C=l.get(k)??null;if(!C)return j(`error: unable to delete '${y}': remote ref does not exist
407
- `);m.push({name:k,oldHash:C,newHash:Z,ok:d})}}else if(n.all){let b=await le(s,"refs/heads");for(let y of b){let k=y.name,C=l.get(k)??null;m.push({name:k,oldHash:C,newHash:y.hash,ok:d})}}else if(n.tags){let b=await le(s,"refs/tags");for(let y of b){let k=l.get(y.name)??null;k!==y.hash&&m.push({name:y.name,oldHash:k,newHash:y.hash,ok:d})}}else if(h&&h.length>0)for(let b of h){let y=Cn(b),k=await qu(s,y.src);if(!k)return j(`error: src refspec '${y.src}' does not match any
408
- `);let C=y.dst.startsWith("refs/")?y.dst:`refs/heads/${y.dst}`,P=l.get(C)??null;m.push({name:C,oldHash:P,newHash:k,ok:d||y.force})}else{let b=await J(s);if(!b||b.type!=="symbolic")return T("You are not currently on a branch.");let y=b.target,k=await X(s);if(!k)return j(`error: src refspec does not match any
409
- `);let C=l.get(y)??null;m.push({name:y,oldHash:C,newHash:k,ok:d})}if(m.length===0)return{stdout:`Everything up-to-date
410
- `,stderr:"",exitCode:0};if(t?.hooks){let b=await t.hooks.emitPre("pre-push",{remote:a,url:f.url,refs:m.map(y=>({srcRef:y.newHash===Z?null:y.name,srcHash:y.newHash===Z?null:y.newHash,dstRef:y.name,dstHash:y.oldHash,force:!!y.ok,delete:y.newHash===Z}))});if(b)return j(b.message??"")}let p=await c.push(m),g=[];g.push(`To ${f.url}
411
- `);let w=!1;for(let b of p.updates){let y=b.name.startsWith("refs/heads/")?b.name.slice(11):b.name;if(!b.ok)g.push(` ! [rejected] ${y} -> ${y} (${b.error??"failed"})
412
- `),w=!0;else if(!b.oldHash)g.push(` * [new branch] ${y} -> ${y}
413
- `);else if(b.newHash===Z)g.push(` - [deleted] ${y}
414
- `);else{let k=K(b.oldHash),C=K(b.newHash);g.push(` ${k}..${C} ${y} -> ${y}
415
- `)}}if(n["set-upstream"]&&!w){let b=await J(s);if(b?.type==="symbolic"){let y=b.target.startsWith("refs/heads/")?b.target.slice(11):b.target,k=await ae(s);k[`branch "${y}"`]={remote:a,merge:`refs/heads/${y}`},await Ge(s,k),g.push(`branch '${y}' set up to track '${a}/${y}'.
416
- `)}}let x={stdout:"",stderr:g.join(""),exitCode:w?1:0};return w||await t?.hooks?.emitPost("post-push",{remote:a,url:f.url,refs:m.map(b=>({srcRef:b.newHash===Z?null:b.name,srcHash:b.newHash===Z?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===Z}))}),x}})}async function qu(e,t){if(t.startsWith("refs/"))return F(e,t);let n=await F(e,`refs/heads/${t}`);if(n)return n;let r=await F(e,`refs/tags/${t}`);return r||(t==="HEAD"?X(e):null)}async function Ao(e,t){let n=await ce(e,t);if(n.type!=="commit")return null;let r=It(n.content),o=null;if(r.parents.length>0&&r.parents[0]){let f=await ce(e,r.parents[0]);f.type==="commit"&&(o=It(f.content).tree)}let s=await Ae(e,o,r.tree);if(s.length===0)return null;let a=Kt(),i=!1,c=[...s].sort((f,d)=>he(f.path,d.path));for(let f of c){let d="",u="";if(f.oldHash)try{let m=await ce(e,f.oldHash);d=new TextDecoder().decode(m.content)}catch{}if(f.newHash)try{let m=await ce(e,f.newHash);u=new TextDecoder().decode(m.content)}catch{}let l=At({path:f.path,oldContent:d,newContent:u,oldMode:f.oldMode,newMode:f.newMode});if(l)for(let m of l.split(`
418
+ ${yr}`,stderr:"",exitCode:0}}})}function Tc(e,t){e.command("push",{description:"Update remote refs along with associated objects",args:[W.string().name("remote").describe("Remote to push to").optional(),W.string().name("refspec").describe("Refspec(s) to push").optional().variadic()],options:{force:v().alias("f").describe("Force push"),"set-upstream":v().alias("u").describe("Set upstream tracking reference"),all:v().describe("Push all branches"),delete:v().alias("d").describe("Delete remote refs"),tags:v().describe("Push all tags")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=n.remote||"origin",i;try{i=await Un(s,a,r.env)}catch(b){let E=b instanceof Error?b.message:"";if(E.startsWith("network"))return T(E);throw b}if(!i)return T(`'${a}' does not appear to be a git repository`);let{transport:c,config:f}=i,d=n.force,u=await c.advertiseRefs(),l=new Map;for(let b of u)l.set(b.name,b.hash);let m=[],h=n.refspec;if(n.delete){let b=h&&h.length>0?h:[];if(b.length===0)return T("--delete requires a ref argument");for(let E of b){let k=E.startsWith("refs/")?E:`refs/heads/${E}`,P=l.get(k)??null;if(!P)return G(`error: unable to delete '${E}': remote ref does not exist
419
+ `);m.push({name:k,oldHash:P,newHash:Z,ok:d})}}else if(n.all){let b=await le(s,"refs/heads");for(let E of b){let k=E.name,P=l.get(k)??null;m.push({name:k,oldHash:P,newHash:E.hash,ok:d})}}else if(n.tags){let b=await le(s,"refs/tags");for(let E of b){let k=l.get(E.name)??null;k!==E.hash&&m.push({name:E.name,oldHash:k,newHash:E.hash,ok:d})}}else if(h&&h.length>0)for(let b of h){let E=On(b),k=await zu(s,E.src);if(!k)return G(`error: src refspec '${E.src}' does not match any
420
+ `);let P=E.dst.startsWith("refs/")?E.dst:`refs/heads/${E.dst}`,C=l.get(P)??null;m.push({name:P,oldHash:C,newHash:k,ok:d||E.force})}else{let b=await J(s);if(!b||b.type!=="symbolic")return T("You are not currently on a branch.");let E=b.target,k=await X(s);if(!k)return G(`error: src refspec does not match any
421
+ `);let P=l.get(E)??null;m.push({name:E,oldHash:P,newHash:k,ok:d})}if(m.length===0)return{stdout:`Everything up-to-date
422
+ `,stderr:"",exitCode:0};if(t?.hooks){let b=await t.hooks.emitPre("pre-push",{remote:a,url:f.url,refs:m.map(E=>({srcRef:E.newHash===Z?null:E.name,srcHash:E.newHash===Z?null:E.newHash,dstRef:E.name,dstHash:E.oldHash,force:!!E.ok,delete:E.newHash===Z}))});if(b)return G(b.message??"")}let p=await c.push(m),g=[];g.push(`To ${f.url}
423
+ `);let w=!1;for(let b of p.updates){let E=b.name.startsWith("refs/heads/")?b.name.slice(11):b.name;if(!b.ok)g.push(` ! [rejected] ${E} -> ${E} (${b.error??"failed"})
424
+ `),w=!0;else if(!b.oldHash)g.push(` * [new branch] ${E} -> ${E}
425
+ `);else if(b.newHash===Z)g.push(` - [deleted] ${E}
426
+ `);else{let k=K(b.oldHash),P=K(b.newHash);g.push(` ${k}..${P} ${E} -> ${E}
427
+ `)}}if(n["set-upstream"]&&!w){let b=await J(s);if(b?.type==="symbolic"){let E=b.target.startsWith("refs/heads/")?b.target.slice(11):b.target,k=await ce(s);k[`branch "${E}"`]={remote:a,merge:`refs/heads/${E}`},await Ge(s,k),g.push(`branch '${E}' set up to track '${a}/${E}'.
428
+ `)}}let x={stdout:"",stderr:g.join(""),exitCode:w?1:0};return w||await t?.hooks?.emitPost("post-push",{remote:a,url:f.url,refs:m.map(b=>({srcRef:b.newHash===Z?null:b.name,srcHash:b.newHash===Z?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===Z}))}),x}})}async function zu(e,t){if(t.startsWith("refs/"))return F(e,t);let n=await F(e,`refs/heads/${t}`);if(n)return n;let r=await F(e,`refs/tags/${t}`);return r||(t==="HEAD"?X(e):null)}async function So(e,t){let n=await fe(e,t);if(n.type!=="commit")return null;let r=Rt(n.content),o=null;if(r.parents.length>0&&r.parents[0]){let f=await fe(e,r.parents[0]);f.type==="commit"&&(o=Rt(f.content).tree)}let s=await Ae(e,o,r.tree);if(s.length===0)return null;let a=zt(),i=!1,c=[...s].sort((f,d)=>he(f.path,d.path));for(let f of c){let d="",u="";if(f.oldHash)try{let m=await fe(e,f.oldHash);d=new TextDecoder().decode(m.content)}catch{}if(f.newHash)try{let m=await fe(e,f.newHash);u=new TextDecoder().decode(m.content)}catch{}let l=At({path:f.path,oldContent:d,newContent:u,oldMode:f.oldMode,newMode:f.newMode});if(l)for(let m of l.split(`
417
429
  `)){if(!m||m.startsWith("index "))continue;let p=(m.startsWith("@@")?m.replace(/^@@ [^@]* @@/,"@@ @@"):m).replace(/[ \t\r]/g,"");p&&(a.update(p),a.update(`
418
- `),i=!0)}}return i?a.hex():null}async function Ku(e){let t=await J(e);return t?.type==="symbolic"?de(t.target):"detached HEAD"}function $c(e){return e==="HEAD"?`HEAD is up to date.
430
+ `),i=!0)}}return i?a.hex():null}async function Vu(e){let t=await J(e);return t?.type==="symbolic"?de(t.target):"detached HEAD"}function Hc(e){return e==="HEAD"?`HEAD is up to date.
419
431
  `:`Current branch ${e} is up to date.
420
- `}async function zu(e,t,n){if(!e.workTree)return null;let r=await se(e,t),o=new Map(xe(n).map(i=>[i.path,i])),s=new Set(await _e(e,e.workTree,"")),a=[];for(let[i]of r)o.has(i)||s.has(i)&&a.push({path:i,error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN"});if(a.length>0){let i=Gr(a,{errorExitCode:1,operationName:"checkout",actionHint:"switch branches"});return j(`${i.stderr}error: could not detach HEAD
421
- `)}return null}async function Vu(e,t,n,r){if(!e.workTree)return null;let o=await se(e,t),s=new Set(n.entries.map(c=>c.path)),a=new Set(await _e(e,e.workTree,"")),i=[];for(let[c]of o)!s.has(c)&&a.has(c)&&i.push({path:c,error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN"});return i.length>0?{stdout:"",stderr:`${Gr(i,{errorExitCode:128,operationName:"reset",actionHint:"reset"}).stderr}fatal: could not move back to ${r}
422
- `,exitCode:128}:null}async function Tc(e,t,n){if(!e.workTree)return null;let r=new Map(xe(t).map(a=>[a.path,a])),o=new Set(await _e(e,e.workTree,"")),s=[];for(let[a]of n)!r.has(a)&&o.has(a)&&s.push(a);return s.length>0?s:null}function Hc(e,t){return`error: The following untracked working tree files would be overwritten by merge:
432
+ `}async function Yu(e,t,n){if(!e.workTree)return null;let r=await se(e,t),o=new Map(xe(n).map(i=>[i.path,i])),s=new Set(await _e(e,e.workTree,"")),a=[];for(let[i]of r)o.has(i)||s.has(i)&&a.push({path:i,error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN"});if(a.length>0){let i=_r(a,{errorExitCode:1,operationName:"checkout",actionHint:"switch branches"});return G(`${i.stderr}error: could not detach HEAD
433
+ `)}return null}async function Xu(e,t,n,r){if(!e.workTree)return null;let o=await se(e,t),s=new Set(n.entries.map(c=>c.path)),a=new Set(await _e(e,e.workTree,"")),i=[];for(let[c]of o)!s.has(c)&&a.has(c)&&i.push({path:c,error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN"});return i.length>0?{stdout:"",stderr:`${_r(i,{errorExitCode:128,operationName:"reset",actionHint:"reset"}).stderr}fatal: could not move back to ${r}
434
+ `,exitCode:128}:null}async function Ac(e,t,n){if(!e.workTree)return null;let r=new Map(xe(t).map(a=>[a.path,a])),o=new Set(await _e(e,e.workTree,"")),s=[];for(let[a]of n)!r.has(a)&&o.has(a)&&s.push(a);return s.length>0?s:null}function vc(e,t){return`error: The following untracked working tree files would be overwritten by merge:
423
435
  ${e.map(r=>` ${r}`).join(`
424
436
  `)}
425
437
  Please move or remove them before you merge.
@@ -433,7 +445,7 @@ hint: edit the todo list first:
433
445
  hint:
434
446
  hint: git rebase --edit-todo
435
447
  hint: git rebase --continue
436
- `}async function vo(e,t,n,r,o,s){await ee(e,t,"HEAD",n,r,`rebase (start): checkout ${s}`),o!=="detached HEAD"&&(await ee(e,t,o,n,r,`rebase (finish): ${o} onto ${r}`),await ee(e,t,"HEAD",r,r,`rebase (finish): returning to ${o}`))}async function xs(e,t,n,r){let o=await M(e,t),s=await zu(e,o.tree,n);if(s)return s;let a=await yt(e,o.tree,n);return a.success&&(await re(e,{version:2,entries:a.newEntries}),await be(e,a.worktreeOps)),r!=="detached HEAD"?await Y(e,r,t):await Y(e,"HEAD",t),null}function Ac(e,t){e.command("rebase",{description:"Reapply commits on top of another base tip",args:[W.string().name("upstream").describe("Upstream branch to rebase onto").optional()],options:{onto:te.string().describe("Starting point at which to create new commits"),abort:A().describe("Abort the current rebase operation"),continue:A().describe("Continue the rebase after conflict resolution"),skip:A().describe("Skip the current patch and continue")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort)return Zu(s,r.env);if(n.continue)return Ju(s,r.env);if(n.skip)return Qu(s,r.env);let a=n.upstream;if(!a)return T("no upstream configured and no upstream argument given");if(await gt(s))return T(`It seems that there is already a rebase-merge directory, and
448
+ `}async function Do(e,t,n,r,o,s){await ee(e,t,"HEAD",n,r,`rebase (start): checkout ${s}`),o!=="detached HEAD"&&(await ee(e,t,o,n,r,`rebase (finish): ${o} onto ${r}`),await ee(e,t,"HEAD",r,r,`rebase (finish): returning to ${o}`))}async function Ps(e,t,n,r){let o=await j(e,t),s=await Yu(e,o.tree,n);if(s)return s;let a=await Nt(e,o.tree,n);return a.success&&(await re(e,{version:2,entries:a.newEntries}),await be(e,a.worktreeOps)),r!=="detached HEAD"?await Y(e,r,t):await Y(e,"HEAD",t),null}function Sc(e,t){e.command("rebase",{description:"Reapply commits on top of another base tip",args:[W.string().name("upstream").describe("Upstream branch to rebase onto").optional()],options:{onto:te.string().describe("Starting point at which to create new commits"),abort:v().describe("Abort the current rebase operation"),continue:v().describe("Continue the rebase after conflict resolution"),skip:v().describe("Skip the current patch and continue")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort)return Qu(s,r.env);if(n.continue)return em(s,r.env);if(n.skip)return tm(s,r.env);let a=n.upstream;if(!a)return T("no upstream configured and no upstream argument given");if(await bt(s))return T(`It seems that there is already a rebase-merge directory, and
437
449
  I wonder if you are in the middle of another rebase. If that is the
438
450
  case, please try
439
451
  git rebase (--continue | --abort | --skip)
@@ -441,23 +453,23 @@ If that is not the case, please
441
453
  rm -fr ".git/rebase-merge"
442
454
  and run me again. I am stopping in case you still have something
443
455
  valuable there.
444
- `);let i=await Se(s);if(S(i))return i;let c=await J(s),f=c?.type==="symbolic"?c.target:"detached HEAD",d=c?.type==="symbolic"?de(c.target):"HEAD",u=await ye(s,a,`invalid upstream '${a}'`);if(S(u))return u;let l=u.hash,m,h=n.onto;if(h){let R=await ye(s,h,`Does not point to a valid commit: '${h}'`);if(S(R))return R;m=R.hash}else m=l;let p=await U(s),g=Rt(p).sort();if(g.length>0)return{stdout:g.map(R=>`${R}: needs merge
456
+ `);let i=await Se(s);if(S(i))return i;let c=await J(s),f=c?.type==="symbolic"?c.target:"detached HEAD",d=c?.type==="symbolic"?de(c.target):"HEAD",u=await ye(s,a,`invalid upstream '${a}'`);if(S(u))return u;let l=u.hash,m,h=n.onto;if(h){let R=await ye(s,h,`Does not point to a valid commit: '${h}'`);if(S(R))return R;m=R.hash}else m=l;let p=await U(s),g=It(p).sort();if(g.length>0)return{stdout:g.map(R=>`${R}: needs merge
445
457
  `).join(""),stderr:`error: cannot rebase: You have unstaged changes.
446
458
  error: additionally, your index contains uncommitted changes.
447
459
  error: Please commit or stash them.
448
- `,exitCode:1};let w=await M(s,i),x=await se(s,w.tree);if(s.workTree){let R=vn(p,x),q=(await lt(s,p)).some(L=>L.status==="modified"||L.status==="deleted");if(R||q){let L=[];return q&&L.push("error: cannot rebase: You have unstaged changes."),R&&(q?L.push("error: additionally, your index contains uncommitted changes."):L.push("error: cannot rebase: Your index contains uncommitted changes.")),L.push("error: Please commit or stash them."),j(`${L.join(`
460
+ `,exitCode:1};let w=await j(s,i),x=await se(s,w.tree);if(s.workTree){let R=Dn(p,x),q=(await ut(s,p)).some(N=>N.status==="modified"||N.status==="deleted");if(R||q){let N=[];return q&&N.push("error: cannot rebase: You have unstaged changes."),R&&(q?N.push("error: additionally, your index contains uncommitted changes."):N.push("error: cannot rebase: Your index contains uncommitted changes.")),N.push("error: Please commit or stash them."),G(`${N.join(`
449
461
  `)}
450
- `)}}if(t?.hooks){let R=await t.hooks.emitPre("pre-rebase",{upstream:a,branch:c?.type==="symbolic"?de(c.target):null});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let b=await la(s,l,i),y=b.right;if(y.length===0){if(m!==i){let R=await xs(s,m,p,f);return R||(await vo(s,r.env,i,m,f,a),{stdout:"",stderr:`Successfully rebased and updated ${f}.
451
- `,exitCode:0})}return{stdout:$c(d),stderr:"",exitCode:0}}let k=[],C=b.left,P=new Set;for(let R of C){let N=await Ao(s,R.hash);N&&P.add(N)}let O=[];if(P.size>0)for(let R of y){let N=await Ao(s,R.hash);N&&P.has(N)?k.push(`warning: skipped previously applied commit ${K(R.hash)}`):O.push(R)}else O.push(...y);let E="";if(k.length>0&&(E=`${k.join(`
462
+ `)}}if(t?.hooks){let R=await t.hooks.emitPre("pre-rebase",{upstream:a,branch:c?.type==="symbolic"?de(c.target):null});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let b=await ma(s,l,i),E=b.right;if(E.length===0){if(m!==i){let R=await Ps(s,m,p,f);return R||(await Do(s,r.env,i,m,f,a),{stdout:"",stderr:`Successfully rebased and updated ${f}.
463
+ `,exitCode:0})}return{stdout:Hc(d),stderr:"",exitCode:0}}let k=[],P=b.left,C=new Set;for(let R of P){let _=await So(s,R.hash);_&&C.add(_)}let O=[];if(C.size>0)for(let R of E){let _=await So(s,R.hash);_&&C.has(_)?k.push(`warning: skipped previously applied commit ${K(R.hash)}`):O.push(R)}else O.push(...E);let y="";if(k.length>0&&(y=`${k.join(`
452
464
  `)}
453
465
  hint: use --reapply-cherry-picks to include skipped commits
454
466
  hint: Disable this message with "git config set advice.skippedCherryPicks false"
455
- `),O.length===0){if(m!==i){let R=await xs(s,m,p,f);if(R)return R.stderr=E+R.stderr,R;await vo(s,r.env,i,m,f,a)}return{stdout:"",stderr:`${E}Successfully rebased and updated ${f}.
456
- `,exitCode:0}}let I=O.map(R=>({hash:R.hash,subject:ue(R.commit.message)})),H=m,_=0;for(let R of I){let N=await M(s,R.hash);if(N.parents.length>1||N.parents.length===0||N.parents[0]!==H)break;H=R.hash,_++}let G=I.splice(0,_);if(I.length===0){if(H===i)return{stdout:$c(d),stderr:E,exitCode:0};let R=await xs(s,H,p,f);return R?(R.stderr=E+R.stderr,R):(await vo(s,r.env,i,H,f,a),{stdout:"",stderr:`${E}Successfully rebased and updated ${f}.
457
- `,exitCode:0})}let z=await xs(s,H,p,"detached HEAD");if(z)return z.stderr=E+z.stderr,z;await ee(s,r.env,"HEAD",i,H,`rebase (start): checkout ${a}`);let D={headName:f,origHead:i,onto:m,todo:I,done:G,msgnum:_,end:_+I.length};await ao(s,D),await Y(s,"ORIG_HEAD",i);let $=await So(s,r.env);return E&&($.stderr=E+$.stderr),$}})}async function So(e,t){let n=[],r=[];for(;;){let o=await nt(e);if(!o||o.todo.length===0)break;let s=o.todo[0];if(!s)break;n.push(`Rebasing (${o.msgnum+1}/${o.end})\r`),await da(e);let a=await Yu(e,s,t);if(a.conflict){if(a.rescheduleCurrent){let i=await nt(e);i&&(i.todo=[s,...i.todo],await ao(e,i))}return a.stdout&&r.push(a.stdout),n.push(a.stderr),{stdout:r.join(""),stderr:n.join(""),exitCode:1}}a.stdout&&r.push(a.stdout),a.stderr&&n.push(a.stderr)}return Xu(e,n,t)}async function Yu(e,t,n){let r=t.hash,o=await M(e,r),s=o.parents.length>0?o.parents[0]:null,a=s?await M(e,s):null,i=await X(e);if(!i)return{conflict:!0,stdout:"",stderr:`fatal: no HEAD commit during rebase
458
- `};if(s&&s===i){let G=await U(e);if(!a)return{conflict:!0,stdout:"",stderr:`fatal: missing parent commit during rebase
459
- `};let z=await He(e,a.tree),D=await He(e,o.tree),$=new Map(z.map(L=>[L.path,L.hash])),R=new Map;for(let L of D){let V=$.get(L.path);(!V||V!==L.hash)&&R.set(L.path,L.hash)}let N=await Tc(e,G,R);if(N)return await Y(e,"REBASE_HEAD",r),{conflict:!0,stdout:"",stderr:Hc(N,t),rescheduleCurrent:!0};let q=await yt(e,o.tree,G);return q.success&&(await re(e,{version:2,entries:q.newEntries}),await be(e,q.worktreeOps)),await Yt(e,r),await ee(e,n,"HEAD",i,r,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}let c=await M(e,i),f=a?a.tree:null,d=K(r),u=ue(o.message),l={a:"HEAD",b:u?`${d} (${u})`:d},m=await wt(e,f,c.tree,o.tree,l),h=await U(e),[p,g,w]=await Promise.all([He(e,c.tree),f?He(e,f):Promise.resolve([]),He(e,o.tree)]),x=new Set;for(let G of g)x.add(G.path);for(let G of p)x.add(G.path);for(let G of w)x.add(G.path);let b=h.entries.filter(G=>!x.has(G.path)),y=[...m.entries,...b];y.sort((G,z)=>he(G.path,z.path)||G.stage-z.stage);let k={version:2,entries:y},C=y.filter(G=>G.stage===0),P=await ke(e,C),O=new Map(p.map(G=>[G.path,G])),E=new Map;for(let G of C){let z=O.get(G.path);(!z||z.hash!==G.hash)&&E.set(G.path,G.hash)}for(let G of m.conflicts){if(G.reason==="content"||G.reason==="add-add"){E.set(G.path,null);continue}if(G.reason==="delete-modify"){let z=m.entries.filter(R=>R.path===G.path&&R.stage>0),D=z.find(R=>R.stage===2),$=z.find(R=>R.stage===3);$&&!D&&E.set(G.path,$.hash)}}let I=await Tc(e,h,E);if(I)return await Y(e,"REBASE_HEAD",r),{conflict:!0,stdout:"",stderr:Hc(I,t),rescheduleCurrent:!0};if(await re(e,k),e.workTree){let G=await Qt(e,c.tree,m.resultTree,h);G.success&&await be(e,G.worktreeOps)}if(m.conflicts.length>0){await Y(e,"REBASE_HEAD",r),await Ue(e,"MERGE_MSG",o.message),await Ue(e,"rebase-merge/message",o.message);let G=m.messages.join(`
460
- `);return{conflict:!0,stdout:G?`${G}
467
+ `),O.length===0){if(m!==i){let R=await Ps(s,m,p,f);if(R)return R.stderr=y+R.stderr,R;await Do(s,r.env,i,m,f,a)}return{stdout:"",stderr:`${y}Successfully rebased and updated ${f}.
468
+ `,exitCode:0}}let I=O.map(R=>({hash:R.hash,subject:ue(R.commit.message)})),A=m,L=0;for(let R of I){let _=await j(s,R.hash);if(_.parents.length>1||_.parents.length===0||_.parents[0]!==A)break;A=R.hash,L++}let D=I.splice(0,L);if(I.length===0){if(A===i)return{stdout:Hc(d),stderr:y,exitCode:0};let R=await Ps(s,A,p,f);return R?(R.stderr=y+R.stderr,R):(await Do(s,r.env,i,A,f,a),{stdout:"",stderr:`${y}Successfully rebased and updated ${f}.
469
+ `,exitCode:0})}let z=await Ps(s,A,p,"detached HEAD");if(z)return z.stderr=y+z.stderr,z;await ee(s,r.env,"HEAD",i,A,`rebase (start): checkout ${a}`);let M={headName:f,origHead:i,onto:m,todo:I,done:D,msgnum:L,end:L+I.length};await fo(s,M),await Y(s,"ORIG_HEAD",i);let $=await Mo(s,r.env);return y&&($.stderr=y+$.stderr),$}})}async function Mo(e,t){let n=[],r=[];for(;;){let o=await nt(e);if(!o||o.todo.length===0)break;let s=o.todo[0];if(!s)break;n.push(`Rebasing (${o.msgnum+1}/${o.end})\r`),await ua(e);let a=await Zu(e,s,t);if(a.conflict){if(a.rescheduleCurrent){let i=await nt(e);i&&(i.todo=[s,...i.todo],await fo(e,i))}return a.stdout&&r.push(a.stdout),n.push(a.stderr),{stdout:r.join(""),stderr:n.join(""),exitCode:1}}a.stdout&&r.push(a.stdout),a.stderr&&n.push(a.stderr)}return Ju(e,n,t)}async function Zu(e,t,n){let r=t.hash,o=await j(e,r),s=o.parents.length>0?o.parents[0]:null,a=s?await j(e,s):null,i=await X(e);if(!i)return{conflict:!0,stdout:"",stderr:`fatal: no HEAD commit during rebase
470
+ `};if(s&&s===i){let D=await U(e);if(!a)return{conflict:!0,stdout:"",stderr:`fatal: missing parent commit during rebase
471
+ `};let z=await He(e,a.tree),M=await He(e,o.tree),$=new Map(z.map(N=>[N.path,N.hash])),R=new Map;for(let N of M){let V=$.get(N.path);(!V||V!==N.hash)&&R.set(N.path,N.hash)}let _=await Ac(e,D,R);if(_)return await Y(e,"REBASE_HEAD",r),await rs(e,r,o.author),{conflict:!0,stdout:"",stderr:vc(_,t),rescheduleCurrent:!0};let q=await Nt(e,o.tree,D);return q.success&&(await re(e,{version:2,entries:q.newEntries}),await be(e,q.worktreeOps)),await Xt(e,r),await ee(e,n,"HEAD",i,r,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}let c=await j(e,i),f=a?a.tree:null,d=K(r),u=ue(o.message),l={a:"HEAD",b:u?`${d} (${u})`:d},m=await yt(e,f,c.tree,o.tree,l),h=await U(e),[p,g,w]=await Promise.all([He(e,c.tree),f?He(e,f):Promise.resolve([]),He(e,o.tree)]),x=new Set;for(let D of g)x.add(D.path);for(let D of p)x.add(D.path);for(let D of w)x.add(D.path);let b=h.entries.filter(D=>!x.has(D.path)),E=[...m.entries,...b];E.sort((D,z)=>he(D.path,z.path)||D.stage-z.stage);let k={version:2,entries:E},P=E.filter(D=>D.stage===0),C=await ke(e,P),O=new Map(p.map(D=>[D.path,D])),y=new Map;for(let D of P){let z=O.get(D.path);(!z||z.hash!==D.hash)&&y.set(D.path,D.hash)}for(let D of m.conflicts){if(D.reason==="content"||D.reason==="add-add"){y.set(D.path,null);continue}if(D.reason==="delete-modify"){let z=m.entries.filter(R=>R.path===D.path&&R.stage>0),M=z.find(R=>R.stage===2),$=z.find(R=>R.stage===3);$&&!M&&y.set(D.path,$.hash)}}let I=await Ac(e,h,y);if(I)return await Y(e,"REBASE_HEAD",r),await rs(e,r,o.author),{conflict:!0,stdout:"",stderr:vc(I,t),rescheduleCurrent:!0};if(await re(e,k),e.workTree){let D=await en(e,c.tree,m.resultTree,h);D.success&&await be(e,D.worktreeOps)}if(m.conflicts.length>0){await Y(e,"REBASE_HEAD",r),await rs(e,r,o.author),await Ue(e,"MERGE_MSG",o.message),await Ue(e,"rebase-merge/message",o.message);let D=m.messages.join(`
472
+ `);return{conflict:!0,stdout:D?`${D}
461
473
  `:"",stderr:`error: could not apply ${d}... ${t.subject}
462
474
  hint: Resolve all conflicts manually, mark them as resolved with
463
475
  hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
@@ -465,13 +477,13 @@ hint: You can instead skip this commit: run "git rebase --skip".
465
477
  hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
466
478
  hint: Disable this message with "git config set advice.mergeConflict false"
467
479
  Could not apply ${d}... # ${t.subject}
468
- `}}if(P===c.tree)return{conflict:!1,stdout:"",stderr:`dropping ${r} ${t.subject} -- patch contents already upstream
469
- `};let H=await Le(e,n);if(S(H))return{conflict:!0,stdout:"",stderr:H.stderr};let _=await Je(e,P,[i],o.author,H,o.message);return await ee(e,n,"HEAD",i,_,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}async function Xu(e,t,n){let r=await nt(e);if(!r)return T("no rebase in progress");let o=await X(e);if(!o)return T("no HEAD during rebase finish");r.headName!=="detached HEAD"&&(await Y(e,r.headName,o),await $e(e,"HEAD",r.headName),await tt(e),await ee(e,n,r.headName,r.origHead,o,`rebase (finish): ${r.headName} onto ${r.onto}`),await ee(e,n,"HEAD",o,o,`rebase (finish): returning to ${r.headName}`));let a=`Successfully rebased and updated ${r.headName}.
470
- `;return await ie(e,"REBASE_HEAD"),await wn(e),await co(e),{stdout:"",stderr:t.join("")+a,exitCode:0}}async function Zu(e,t){let n=await nt(e);if(!n)return T("no rebase in progress");let r=await X(e),o=n.origHead,s=await M(e,o),a=await U(e),i=await Vu(e,s.tree,a,o);if(i)return i;let c=await yt(e,s.tree,a);c.success&&(await re(e,{version:2,entries:c.newEntries}),await be(e,c.worktreeOps)),n.headName!=="detached HEAD"?(await Y(e,n.headName,o),await $e(e,"HEAD",n.headName),await tt(e)):await Yt(e,o);let f=n.headName==="detached HEAD"?o:n.headName;return await ee(e,t,"HEAD",r,o,`rebase (abort): returning to ${f}`),await ie(e,"REBASE_HEAD"),await wn(e),await co(e),{stdout:"",stderr:"",exitCode:0}}async function Ju(e,t){let n="";if(!await nt(e))return T("no rebase in progress");let o=await U(e);if(dt(o))return j(`error: Committing is not possible because you have unmerged files.
480
+ `}}if(C===c.tree)return{conflict:!1,stdout:"",stderr:`dropping ${r} ${t.subject} -- patch contents already upstream
481
+ `};let A=await Le(e,n);if(S(A))return{conflict:!0,stdout:"",stderr:A.stderr};let L=await Je(e,C,[i],o.author,A,o.message);return await ee(e,n,"HEAD",i,L,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}async function Ju(e,t,n){let r=await nt(e);if(!r)return T("no rebase in progress");let o=await X(e);if(!o)return T("no HEAD during rebase finish");r.headName!=="detached HEAD"&&(await Y(e,r.headName,o),await $e(e,"HEAD",r.headName),await tt(e),await ee(e,n,r.headName,r.origHead,o,`rebase (finish): ${r.headName} onto ${r.onto}`),await ee(e,n,"HEAD",o,o,`rebase (finish): returning to ${r.headName}`));let a=`Successfully rebased and updated ${r.headName}.
482
+ `;return await ae(e,"REBASE_HEAD"),await yn(e),await lo(e),{stdout:"",stderr:t.join("")+a,exitCode:0}}async function Qu(e,t){let n=await nt(e);if(!n)return T("no rebase in progress");let r=await X(e),o=n.origHead,s=await j(e,o),a=await U(e),i=await Xu(e,s.tree,a,o);if(i)return i;let c=await Nt(e,s.tree,a);c.success&&(await re(e,{version:2,entries:c.newEntries}),await be(e,c.worktreeOps)),n.headName!=="detached HEAD"?(await Y(e,n.headName,o),await $e(e,"HEAD",n.headName),await tt(e)):await Xt(e,o);let f=n.headName==="detached HEAD"?o:n.headName;return await ee(e,t,"HEAD",r,o,`rebase (abort): returning to ${f}`),await ae(e,"REBASE_HEAD"),await yn(e),await lo(e),{stdout:"",stderr:"",exitCode:0}}async function em(e,t){let n="";if(!await nt(e))return T("no rebase in progress");let o=await U(e);if(lt(o))return G(`error: Committing is not possible because you have unmerged files.
471
483
  hint: Fix them up in the work tree, and then use 'git add <file>'
472
484
  hint: as appropriate to mark resolution and make a commit.
473
485
  fatal: Exiting because of an unresolved conflict.
474
- `,128);let s=await F(e,"REBASE_HEAD");if(s){let i=await X(e);if(!i)return T("Cannot read HEAD");let c=await M(e,i),f=xe(o),d=await ke(e,f),u=d!==c.tree,l=await qe(e,"rebase-merge/message")!==null;if(u&&!l)return j(`error: you have staged changes in your working tree
486
+ `,128);let s=await F(e,"REBASE_HEAD");if(s){let i=await X(e);if(!i)return T("Cannot read HEAD");let c=await j(e,i),f=xe(o),d=await ke(e,f),u=d!==c.tree,l=await qe(e,"rebase-merge/message")!==null;if(u&&!l)return G(`error: you have staged changes in your working tree
475
487
  If these changes are meant to be squashed into the previous commit, run:
476
488
 
477
489
  git commit --amend
@@ -484,56 +496,56 @@ In both cases, once you're done, continue with:
484
496
 
485
497
  git rebase --continue
486
498
 
487
- `);if(u){let m=await M(e,s),h;h=await qe(e,"rebase-merge/message")??await qe(e,"MERGE_MSG")??void 0,h||(h=m.message);let p=await Le(e,t);if(S(p))return p;let g=mt(h),w=[i],x=await F(e,"MERGE_HEAD");x&&w.push(x);let b=await Je(e,d,w,m.author,p,g);x&&(await ie(e,"MERGE_HEAD"),await et(e,"MERGE_MODE"));let y=ue(g);await ee(e,t,"HEAD",i,b,`rebase (continue): ${y}`);let k=await Ku(e),C=await St(e,c.tree,d,m.author,p,!1);n=`${ut(k,b,g)}
488
- ${C}`}await ie(e,"REBASE_HEAD"),await ie(e,"CHERRY_PICK_HEAD"),await ie(e,"REVERT_HEAD"),await et(e,"MERGE_MSG"),await et(e,"rebase-merge/message")}let a=await So(e,t);return n&&(a.stdout=n+a.stdout),a}async function Qu(e,t){if(!await nt(e))return T("no rebase in progress");let r=await X(e);if(!r)return{stdout:"",stderr:`error: could not determine HEAD revision
499
+ `);if(u){let m=await j(e,s),h;h=await qe(e,"rebase-merge/message")??await qe(e,"MERGE_MSG")??void 0,h||(h=m.message);let p=await Le(e,t);if(S(p))return p;let g=ht(h),w=[i],x=await F(e,"MERGE_HEAD");x&&w.push(x);let b=await Je(e,d,w,m.author,p,g);x&&(await ae(e,"MERGE_HEAD"),await et(e,"MERGE_MODE"));let E=ue(g);await ee(e,t,"HEAD",i,b,`rebase (continue): ${E}`);let k=await Vu(e),P=await St(e,c.tree,d,m.author,p,!1);n=`${mt(k,b,g)}
500
+ ${P}`}await ae(e,"REBASE_HEAD"),await ae(e,"CHERRY_PICK_HEAD"),await ae(e,"REVERT_HEAD"),await et(e,"MERGE_MSG"),await et(e,"rebase-merge/message")}let a=await Mo(e,t);return n&&(a.stdout=n+a.stdout),a}async function tm(e,t){if(!await nt(e))return T("no rebase in progress");let r=await X(e);if(!r)return{stdout:"",stderr:`error: could not determine HEAD revision
489
501
  fatal: could not discard worktree changes
490
- `,exitCode:128};let o=await M(e,r),s=await U(e),a=await yt(e,o.tree,s);return a.success&&(await re(e,{version:2,entries:a.newEntries}),await be(e,a.worktreeOps)),await ie(e,"REBASE_HEAD"),await ie(e,"CHERRY_PICK_HEAD"),await ie(e,"REVERT_HEAD"),await et(e,"MERGE_MSG"),await et(e,"rebase-merge/message"),So(e,t)}function em(e,t,n,r){return`${K(n)} ${e}@{${t}}: ${r}`}async function ks(e,t,n){let r=t==="HEAD"?"HEAD":`refs/heads/${t}`;if(!await F(e,r))return{stdout:"",stderr:`fatal: ambiguous argument '${t}': unknown revision or path not in the working tree.
502
+ `,exitCode:128};let o=await j(e,r),s=await U(e),a=await Nt(e,o.tree,s);return a.success&&(await re(e,{version:2,entries:a.newEntries}),await be(e,a.worktreeOps)),await ae(e,"REBASE_HEAD"),await ae(e,"CHERRY_PICK_HEAD"),await ae(e,"REVERT_HEAD"),await et(e,"MERGE_MSG"),await et(e,"rebase-merge/message"),Mo(e,t)}function nm(e,t,n,r){return`${K(n)} ${e}@{${t}}: ${r}`}async function Os(e,t,n){let r=t==="HEAD"?"HEAD":`refs/heads/${t}`;if(!await F(e,r))return{stdout:"",stderr:`fatal: ambiguous argument '${t}': unknown revision or path not in the working tree.
491
503
  Use '--' to separate paths from revisions, like this:
492
504
  'git <command> [<revision>...] -- [<file>...]'
493
- `,exitCode:128};let s=await Me(e,r),a=[],i=n!==void 0?n:s.length,c=0;for(let d=s.length-1;d>=0&&c<i;d--){let u=s[d];if(!u)continue;let l=s.length-1-d;u.newHash!==Z&&(a.push(em(t,l,u.newHash,u.message)),c++)}return{stdout:a.length>0?`${a.join(`
505
+ `,exitCode:128};let s=await Me(e,r),a=[],i=n!==void 0?n:s.length,c=0;for(let d=s.length-1;d>=0&&c<i;d--){let u=s[d];if(!u)continue;let l=s.length-1-d;u.newHash!==Z&&(a.push(nm(t,l,u.newHash,u.message)),c++)}return{stdout:a.length>0?`${a.join(`
494
506
  `)}
495
- `:"",stderr:"",exitCode:0}}function vc(e,t){return e.command("reflog",{description:"Manage reflog information",args:[W.string().name("args").variadic().optional()],options:{maxCount:te.number().alias("n").describe("Limit the number of entries to output")},handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=s,i=r.args;if(i.length===0)return ks(a,"HEAD",r.maxCount);let c=i[0];if(!c)return ks(a,"HEAD",r.maxCount);if(c==="show"){let f=i[1]??"HEAD";return ks(a,f,r.maxCount)}if(c==="exists"){let f=i[1];if(!f)return{stdout:"",stderr:`fatal: reflog exists requires a ref argument
496
- `,exitCode:128};let d=v(a.gitDir,"logs",f);return{stdout:"",stderr:"",exitCode:await a.fs.exists(d)?0:1}}return ks(a,c,r.maxCount)}})}function tm(e){let t=[];for(let n of Object.keys(e)){let r=n.match(/^remote "(.+)"$/);r?.[1]&&t.push(r[1])}return t.sort()}function Sc(e,t){let n=e.command("remote",{description:"Manage set of tracked repositories",options:{verbose:A().alias("v").describe("Show remote URLs")},handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ae(i),f=tm(c);if(f.length===0)return{stdout:"",stderr:"",exitCode:0};if(s.verbose){let d=[];for(let u of f){let m=c[`remote "${u}"`]?.url??"";d.push(`${u} ${m} (fetch)`),d.push(`${u} ${m} (push)`)}return{stdout:`${d.join(`
507
+ `:"",stderr:"",exitCode:0}}function Dc(e,t){return e.command("reflog",{description:"Manage reflog information",args:[W.string().name("args").variadic().optional()],options:{maxCount:te.number().alias("n").describe("Limit the number of entries to output")},handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=s,i=r.args;if(i.length===0)return Os(a,"HEAD",r.maxCount);let c=i[0];if(!c)return Os(a,"HEAD",r.maxCount);if(c==="show"){let f=i[1]??"HEAD";return Os(a,f,r.maxCount)}if(c==="exists"){let f=i[1];if(!f)return{stdout:"",stderr:`fatal: reflog exists requires a ref argument
508
+ `,exitCode:128};let d=H(a.gitDir,"logs",f);return{stdout:"",stderr:"",exitCode:await a.fs.exists(d)?0:1}}return Os(a,c,r.maxCount)}})}function rm(e){let t=[];for(let n of Object.keys(e)){let r=n.match(/^remote "(.+)"$/);r?.[1]&&t.push(r[1])}return t.sort()}function Mc(e,t){let n=e.command("remote",{description:"Manage set of tracked repositories",options:{verbose:v().alias("v").describe("Show remote URLs")},handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ce(i),f=rm(c);if(f.length===0)return{stdout:"",stderr:"",exitCode:0};if(s.verbose){let d=[];for(let u of f){let m=c[`remote "${u}"`]?.url??"";d.push(`${u} ${m} (fetch)`),d.push(`${u} ${m} (push)`)}return{stdout:`${d.join(`
497
509
  `)}
498
510
  `,stderr:"",exitCode:0}}return{stdout:`${f.join(`
499
511
  `)}
500
- `,stderr:"",exitCode:0}}});n.command("add",{description:"Add a remote named <name> for the repository at <url>",args:[W.string().name("name").describe("Remote name"),W.string().name("url").describe("Remote URL")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ae(i),f=`remote "${s.name}"`;return f in c?j(`error: remote ${s.name} already exists.
501
- `,3):(c[f]={url:s.url,fetch:`+refs/heads/*:refs/remotes/${s.name}/*`},await Ge(i,c),{stdout:"",stderr:"",exitCode:0})}});let r=async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ae(i),f=`remote "${s.name}"`;return f in c?(delete c[f],rm(c,s.name),await Ge(i,c),await sm(i,s.name),{stdout:"",stderr:"",exitCode:0}):j(`error: No such remote: '${s.name}'
502
- `,2)},o=[W.string().name("name").describe("Remote name")];n.command("remove",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rm",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rename",{description:"Rename the remote named <old> to <new>",args:[W.string().name("old").describe("Current remote name"),W.string().name("new").describe("New remote name")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ae(i);return nm(i,c,s.old,s.new)}}),n.command("set-url",{description:"Change the URL for an existing remote",args:[W.string().name("name").describe("Remote name"),W.string().name("url").describe("New remote URL")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ae(i),f=`remote "${s.name}"`;if(!(f in c))return j(`error: No such remote '${s.name}'
503
- `,2);let d=c[f];return d&&(d.url=s.url),await Ge(i,c),{stdout:"",stderr:"",exitCode:0}}}),n.command("get-url",{description:"Retrieve the URL for an existing remote",args:[W.string().name("name").describe("Remote name")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ae(i),f=`remote "${s.name}"`;return f in c?{stdout:`${c[f]?.url??""}
504
- `,stderr:"",exitCode:0}:j(`error: No such remote '${s.name}'
505
- `,2)}})}async function nm(e,t,n,r){let o=`remote "${n}"`;if(!(o in t))return j(`error: No such remote: '${n}'
506
- `,2);let s=`remote "${r}"`;if(s in t)return T(`remote ${r} already exists.`);let a={...t[o]};a.fetch&&(a.fetch=a.fetch.replace(`refs/remotes/${n}/`,`refs/remotes/${r}/`)),t[s]=a,delete t[o];for(let f of Object.keys(t))f.match(/^branch "(.+)"$/)&&t[f]?.remote===n&&(t[f].remote=r);await Ge(e,t);let i=`refs/remotes/${n}`,c=await le(e,i);for(let f of c){let d=f.name.replace(i,`refs/remotes/${r}`),u=await Me(e,f.name);await Y(e,d,f.hash),await ie(e,f.name),u.length>0&&await Xt(e,d,u)}return{stdout:"",stderr:"",exitCode:0}}function rm(e,t){for(let n of Object.keys(e))n.match(/^branch "(.+)"$/)&&e[n]?.remote===t&&(delete e[n].remote,delete e[n].merge,Object.keys(e[n]).length===0&&delete e[n])}async function sm(e,t){let n=`refs/remotes/${t}`,r=await le(e,n);for(let o of r)await ie(e,o.name)}function Mc(e,t){e.command("reset",{description:"Reset current HEAD to the specified state",args:[W.string().name("args").variadic().optional()],options:{soft:A().describe("Only move HEAD"),mixed:A().describe("Move HEAD and reset index (default)"),hard:A().describe("Move HEAD, reset index, and reset working tree")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n.args;if([n.soft,n.mixed,n.hard].filter(Boolean).length>1)return T("--soft, --mixed, and --hard are mutually exclusive");let f=n.soft||n.mixed||n.hard,d=Ze(a,r.cwd);if(o.passthrough.length>0){let m=i.length>0?i[0]:void 0;return Do(a,o.passthrough,d,m,t)}if(!f&&i.length>0){let m=i[0],h=await je(a,m);return i.length===1&&h?Dc(a,m,"mixed",r.env,t):h?Do(a,i.slice(1),d,m,t):Do(a,i,d,void 0,t)}let u=n.soft?"soft":n.hard?"hard":"mixed",l=i.length>0?i[0]:"HEAD";return Dc(a,l,u,r.env,t)}})}async function Do(e,t,n,r,o){if(o?.hooks){let d=await o.hooks.emitPre("pre-reset",{mode:"paths",target:r??null});if(d)return{stdout:"",stderr:d.message??"",exitCode:1}}let s=null;if(r){let d=await je(e,r);if(!d)return Et(r);let u=await Re(e,d);s=(await M(e,u)).tree}else{let d=await X(e);d&&(s=(await M(e,d)).tree)}let a=await se(e,s??null),i=await U(e);if(t.some(Ve)){let d=t.map(l=>Oe(l,n)),u=new Set;for(let[l]of a)u.add(l);for(let l of i.entries)u.add(l.path);for(let l of u){if(!me(d,l))continue;let m=a.get(l);m?i=Xe(i,{path:m.path,mode:parseInt(m.mode,8),hash:m.hash,stage:0,stat:pe()}):i=Ne(i,l)}}else for(let d of t){let u=a.get(d);if(u)i=Xe(i,{path:u.path,mode:parseInt(u.mode,8),hash:u.hash,stage:0,stat:pe()});else if(i.entries.some(m=>m.path===d))i=Ne(i,d);else if(!(e.workTree&&await e.fs.exists(v(e.workTree,d))))return Et(d)}await re(e,i);let f={stdout:await jc(e,i),stderr:"",exitCode:0};return await o?.hooks?.emitPost("post-reset",{mode:"paths",targetHash:null}),f}async function jc(e,t){if(!e.workTree)return"";let n=new Set;for(let a of t.entries)a.stage>0&&n.add(a.path);let o=(await lt(e,t)).filter(a=>a.status==="modified"||a.status==="deleted");if(o.length===0&&n.size===0)return"";let s=["Unstaged changes after reset:"];for(let a of o){let i=a.status==="modified"?"M":"D";s.push(`${i} ${a.path}`)}for(let a of[...n].sort())s.push(`U ${a}`);return s.sort((a,i)=>{if(a==="Unstaged changes after reset:")return-1;if(i==="Unstaged changes after reset:")return 1;let c=a.slice(2),f=i.slice(2);return c<f?-1:c>f?1:0}),`${s.join(`
512
+ `,stderr:"",exitCode:0}}});n.command("add",{description:"Add a remote named <name> for the repository at <url>",args:[W.string().name("name").describe("Remote name"),W.string().name("url").describe("Remote URL")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ce(i),f=`remote "${s.name}"`;return f in c?G(`error: remote ${s.name} already exists.
513
+ `,3):(c[f]={url:s.url,fetch:`+refs/heads/*:refs/remotes/${s.name}/*`},await Ge(i,c),{stdout:"",stderr:"",exitCode:0})}});let r=async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ce(i),f=`remote "${s.name}"`;return f in c?(delete c[f],om(c,s.name),await Ge(i,c),await im(i,s.name),{stdout:"",stderr:"",exitCode:0}):G(`error: No such remote: '${s.name}'
514
+ `,2)},o=[W.string().name("name").describe("Remote name")];n.command("remove",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rm",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rename",{description:"Rename the remote named <old> to <new>",args:[W.string().name("old").describe("Current remote name"),W.string().name("new").describe("New remote name")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ce(i);return sm(i,c,s.old,s.new)}}),n.command("set-url",{description:"Change the URL for an existing remote",args:[W.string().name("name").describe("Remote name"),W.string().name("url").describe("New remote URL")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ce(i),f=`remote "${s.name}"`;if(!(f in c))return G(`error: No such remote '${s.name}'
515
+ `,2);let d=c[f];return d&&(d.url=s.url),await Ge(i,c),{stdout:"",stderr:"",exitCode:0}}}),n.command("get-url",{description:"Retrieve the URL for an existing remote",args:[W.string().name("name").describe("Remote name")],handler:async(s,a)=>{let i=await B(a.fs,a.cwd,t);if(S(i))return i;let c=await ce(i),f=`remote "${s.name}"`;return f in c?{stdout:`${c[f]?.url??""}
516
+ `,stderr:"",exitCode:0}:G(`error: No such remote '${s.name}'
517
+ `,2)}})}async function sm(e,t,n,r){let o=`remote "${n}"`;if(!(o in t))return G(`error: No such remote: '${n}'
518
+ `,2);let s=`remote "${r}"`;if(s in t)return T(`remote ${r} already exists.`);let a={...t[o]};a.fetch&&(a.fetch=a.fetch.replace(`refs/remotes/${n}/`,`refs/remotes/${r}/`)),t[s]=a,delete t[o];for(let f of Object.keys(t))f.match(/^branch "(.+)"$/)&&t[f]?.remote===n&&(t[f].remote=r);await Ge(e,t);let i=`refs/remotes/${n}`,c=await le(e,i);for(let f of c){let d=f.name.replace(i,`refs/remotes/${r}`),u=await Me(e,f.name);await Y(e,d,f.hash),await ae(e,f.name),u.length>0&&await Zt(e,d,u)}return{stdout:"",stderr:"",exitCode:0}}function om(e,t){for(let n of Object.keys(e))n.match(/^branch "(.+)"$/)&&e[n]?.remote===t&&(delete e[n].remote,delete e[n].merge,Object.keys(e[n]).length===0&&delete e[n])}async function im(e,t){let n=`refs/remotes/${t}`,r=await le(e,n);for(let o of r)await ae(e,o.name)}function Lc(e,t){e.command("reset",{description:"Reset current HEAD to the specified state",args:[W.string().name("args").variadic().optional()],options:{soft:v().describe("Only move HEAD"),mixed:v().describe("Move HEAD and reset index (default)"),hard:v().describe("Move HEAD, reset index, and reset working tree")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n.args;if([n.soft,n.mixed,n.hard].filter(Boolean).length>1)return T("--soft, --mixed, and --hard are mutually exclusive");let f=n.soft||n.mixed||n.hard,d=Ze(a,r.cwd);if(o.passthrough.length>0){let m=i.length>0?i[0]:void 0;return jo(a,o.passthrough,d,m,t)}if(!f&&i.length>0){let m=i[0],h=await je(a,m);return i.length===1&&h?jc(a,m,"mixed",r.env,t):h?jo(a,i.slice(1),d,m,t):jo(a,i,d,void 0,t)}let u=n.soft?"soft":n.hard?"hard":"mixed",l=i.length>0?i[0]:"HEAD";return jc(a,l,u,r.env,t)}})}async function jo(e,t,n,r,o){if(o?.hooks){let d=await o.hooks.emitPre("pre-reset",{mode:"paths",target:r??null});if(d)return{stdout:"",stderr:d.message??"",exitCode:1}}let s=null;if(r){let d=await je(e,r);if(!d)return xt(r);let u=await Ie(e,d);s=(await j(e,u)).tree}else{let d=await X(e);d&&(s=(await j(e,d)).tree)}let a=await se(e,s??null),i=await U(e);if(t.some(Ve)){let d=t.map(l=>Oe(l,n)),u=new Set;for(let[l]of a)u.add(l);for(let l of i.entries)u.add(l.path);for(let l of u){if(!me(d,l))continue;let m=a.get(l);m?i=Xe(i,{path:m.path,mode:parseInt(m.mode,8),hash:m.hash,stage:0,stat:pe()}):i=Ne(i,l)}}else for(let d of t){let u=a.get(d);if(u)i=Xe(i,{path:u.path,mode:parseInt(u.mode,8),hash:u.hash,stage:0,stat:pe()});else if(i.entries.some(m=>m.path===d))i=Ne(i,d);else if(!(e.workTree&&await e.fs.exists(H(e.workTree,d))))return xt(d)}await re(e,i);let f={stdout:await Gc(e,i),stderr:"",exitCode:0};return await o?.hooks?.emitPost("post-reset",{mode:"paths",targetHash:null}),f}async function Gc(e,t){if(!e.workTree)return"";let n=new Set;for(let a of t.entries)a.stage>0&&n.add(a.path);let o=(await ut(e,t)).filter(a=>a.status==="modified"||a.status==="deleted");if(o.length===0&&n.size===0)return"";let s=["Unstaged changes after reset:"];for(let a of o){let i=a.status==="modified"?"M":"D";s.push(`${i} ${a.path}`)}for(let a of[...n].sort())s.push(`U ${a}`);return s.sort((a,i)=>{if(a==="Unstaged changes after reset:")return-1;if(i==="Unstaged changes after reset:")return 1;let c=a.slice(2),f=i.slice(2);return c<f?-1:c>f?1:0}),`${s.join(`
507
519
  `)}
508
- `}async function Dc(e,t,n,r,o){if(o?.hooks){let l=await o.hooks.emitPre("pre-reset",{mode:n,target:t});if(l)return{stdout:"",stderr:l.message??"",exitCode:1}}let s=await je(e,t);if(!s)return Et(t);let a=await Re(e,s),i=await M(e,a);if(n==="soft"){let l=await F(e,"MERGE_HEAD"),m=await U(e);if(l||dt(m))return T("Cannot do a soft reset in the middle of a merge.")}let c=await X(e),f=await J(e);f?.type==="symbolic"?await Y(e,f.target,a):await Y(e,"HEAD",a);let d=`reset: moving to ${t}`;if(f?.type==="symbolic"&&c!==a?await ee(e,r,f.target,c,a,d,!0):(f?.type==="symbolic"||c!==a)&&await ee(e,r,"HEAD",c,a,d),await wn(e),n==="mixed"){let l=await He(e,i.tree),m=Or(l.map(p=>({path:p.path,mode:parseInt(p.mode,8),hash:p.hash,stage:0,stat:pe()})));await re(e,m);let h=await jc(e,m);if(h)return await o?.hooks?.emitPost("post-reset",{mode:n,targetHash:a}),{stdout:h,stderr:"",exitCode:0}}if(n==="hard"){let l=Fe(e);if(l)return l;let m=await U(e),h=await yt(e,i.tree,m);await re(e,{version:2,entries:h.newEntries}),await be(e,h.worktreeOps)}let u=n==="hard"?`HEAD is now at ${K(a)} ${ue(i.message)}
509
- `:"";return await o?.hooks?.emitPost("post-reset",{mode:n,targetHash:a}),{stdout:u,stderr:"",exitCode:0}}function Lc(e,t){e.command("restore",{description:"Restore working tree files",args:[W.string().name("pathspec").variadic().optional()],options:{source:te.string().alias("s").describe("Restore from tree-ish"),staged:A().alias("S").describe("Restore the index"),worktree:A().alias("W").describe("Restore the working tree (default)"),ours:A().describe("Checkout our version for unmerged files"),theirs:A().describe("Checkout their version for unmerged files")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=[...n.pathspec??[],...o.passthrough];if(i.length===0)return T("you must specify path(s) to restore");if(n.ours&&n.theirs)return T("--ours and --theirs are incompatible");let c=!!n.staged,f=n.worktree!==void 0?!!n.worktree:!c,d=Ze(a,r.cwd);if(n.ours||n.theirs)return n.source?T("cannot specify both --source and --ours/--theirs"):c?T("cannot use --ours/--theirs with --staged"):ss(a,i,d,n.theirs?3:2,{deleteOnMissing:!0});let u=null;if(n.source){let l=await ye(a,n.source,`could not resolve '${n.source}'`);if(S(l))return l;u=l.commit.tree}else if(c){let l=await X(a);l&&(u=(await M(a,l)).tree)}return c&&f?am(a,i,d,u):c?om(a,i,d,u):u?im(a,i,d,u):rs(a,i,d)}})}async function om(e,t,n,r){let o=await se(e,r),s=await U(e);if(t.some(Ve)){let i=t.map(d=>Oe(d,n)),c=new Set;for(let[d]of o)c.add(d);for(let d of s.entries)c.add(d.path);let f=!1;for(let d of c){if(!me(i,d))continue;f=!0;let u=o.get(d);u?s=Xe(s,{path:u.path,mode:parseInt(u.mode,8),hash:u.hash,stage:0,stat:pe()}):s=Ne(s,d)}if(!f)return j(`error: pathspec '${t[0]}' did not match any file(s) known to git
520
+ `}async function jc(e,t,n,r,o){if(o?.hooks){let l=await o.hooks.emitPre("pre-reset",{mode:n,target:t});if(l)return{stdout:"",stderr:l.message??"",exitCode:1}}let s=await je(e,t);if(!s)return xt(t);let a=await Ie(e,s),i=await j(e,a);if(n==="soft"){let l=await F(e,"MERGE_HEAD"),m=await U(e);if(l||lt(m))return T("Cannot do a soft reset in the middle of a merge.")}let c=await X(e),f=await J(e);f?.type==="symbolic"?await Y(e,f.target,a):await Y(e,"HEAD",a);let d=`reset: moving to ${t}`;if(f?.type==="symbolic"&&c!==a?await ee(e,r,f.target,c,a,d,!0):(f?.type==="symbolic"||c!==a)&&await ee(e,r,"HEAD",c,a,d),await yn(e),n==="mixed"){let l=await He(e,i.tree),m=Rr(l.map(p=>({path:p.path,mode:parseInt(p.mode,8),hash:p.hash,stage:0,stat:pe()})));await re(e,m);let h=await Gc(e,m);if(h)return await o?.hooks?.emitPost("post-reset",{mode:n,targetHash:a}),{stdout:h,stderr:"",exitCode:0}}if(n==="hard"){let l=Fe(e);if(l)return l;let m=await U(e),h=await Nt(e,i.tree,m);await re(e,{version:2,entries:h.newEntries}),await be(e,h.worktreeOps)}let u=n==="hard"?`HEAD is now at ${K(a)} ${ue(i.message)}
521
+ `:"";return await o?.hooks?.emitPost("post-reset",{mode:n,targetHash:a}),{stdout:u,stderr:"",exitCode:0}}function Nc(e,t){e.command("restore",{description:"Restore working tree files",args:[W.string().name("pathspec").variadic().optional()],options:{source:te.string().alias("s").describe("Restore from tree-ish"),staged:v().alias("S").describe("Restore the index"),worktree:v().alias("W").describe("Restore the working tree (default)"),ours:v().describe("Checkout our version for unmerged files"),theirs:v().describe("Checkout their version for unmerged files")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=[...n.pathspec??[],...o.passthrough];if(i.length===0)return T("you must specify path(s) to restore");if(n.ours&&n.theirs)return T("--ours and --theirs are incompatible");let c=!!n.staged,f=n.worktree!==void 0?!!n.worktree:!c,d=Ze(a,r.cwd);if(n.ours||n.theirs)return n.source?T("cannot specify both --source and --ours/--theirs"):c?T("cannot use --ours/--theirs with --staged"):as(a,i,d,n.theirs?3:2,{deleteOnMissing:!0});let u=null;if(n.source){let l=await ye(a,n.source,`could not resolve '${n.source}'`);if(S(l))return l;u=l.commit.tree}else if(c){let l=await X(a);l&&(u=(await j(a,l)).tree)}return c&&f?fm(a,i,d,u):c?am(a,i,d,u):u?cm(a,i,d,u):is(a,i,d)}})}async function am(e,t,n,r){let o=await se(e,r),s=await U(e);if(t.some(Ve)){let i=t.map(d=>Oe(d,n)),c=new Set;for(let[d]of o)c.add(d);for(let d of s.entries)c.add(d.path);let f=!1;for(let d of c){if(!me(i,d))continue;f=!0;let u=o.get(d);u?s=Xe(s,{path:u.path,mode:parseInt(u.mode,8),hash:u.hash,stage:0,stat:pe()}):s=Ne(s,d)}if(!f)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
510
522
  `)}else for(let i of t){let c=o.get(i),f=s.entries.some(d=>d.path===i&&d.stage>0);if(c)s=Xe(s,{path:c.path,mode:parseInt(c.mode,8),hash:c.hash,stage:0,stat:pe()});else{if(f)return{stdout:"",stderr:`error: path '${i}' is unmerged
511
- `,exitCode:1};if(s.entries.some(u=>u.path===i))s=Ne(s,i);else return j(`error: pathspec '${i}' did not match any file(s) known to git
512
- `)}}return await re(e,s),{stdout:"",stderr:"",exitCode:0}}async function im(e,t,n,r){if(!e.workTree)return T("this operation must be run in a work tree");let o=await se(e,r),s=t.some(Ve),a=[],i=await U(e);if(s){let c=t.map(d=>Oe(d,n)),f=new Set;for(let[d]of o)f.add(d);for(let d of i.entries)f.add(d.path);for(let d of f)me(c,d)&&a.push(d);if(a.length===0)return j(`error: pathspec '${t[0]}' did not match any file(s) known to git
523
+ `,exitCode:1};if(s.entries.some(u=>u.path===i))s=Ne(s,i);else return G(`error: pathspec '${i}' did not match any file(s) known to git
524
+ `)}}return await re(e,s),{stdout:"",stderr:"",exitCode:0}}async function cm(e,t,n,r){if(!e.workTree)return T("this operation must be run in a work tree");let o=await se(e,r),s=t.some(Ve),a=[],i=await U(e);if(s){let c=t.map(d=>Oe(d,n)),f=new Set;for(let[d]of o)f.add(d);for(let d of i.entries)f.add(d.path);for(let d of f)me(c,d)&&a.push(d);if(a.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
513
525
  `)}else for(let c of t){let f=o.has(c);if(!f&&i.entries.some(l=>l.path===c&&l.stage!==0))return{stdout:"",stderr:`error: path '${c}' is unmerged
514
- `,exitCode:1};let d=Dt(i,c);if(!f&&!d)return j(`error: pathspec '${c}' did not match any file(s) known to git
515
- `);a.push(c)}for(let c of a){let f=o.get(c);if(f)await ve(e,{path:f.path,hash:f.hash,mode:f.mode});else{let d=`${e.workTree}/${c}`;await e.fs.exists(d)&&await e.fs.rm(d)}}return{stdout:"",stderr:"",exitCode:0}}async function am(e,t,n,r){if(!e.workTree)return T("this operation must be run in a work tree");let o=await se(e,r),s=await U(e),a=t.some(Ve),i=[];if(a){let c=t.map(d=>Oe(d,n)),f=new Set;for(let[d]of o)f.add(d);for(let d of s.entries)f.add(d.path);for(let d of f)me(c,d)&&i.push(d);if(i.length===0)return j(`error: pathspec '${t[0]}' did not match any file(s) known to git
526
+ `,exitCode:1};let d=Dt(i,c);if(!f&&!d)return G(`error: pathspec '${c}' did not match any file(s) known to git
527
+ `);a.push(c)}for(let c of a){let f=o.get(c);if(f)await ve(e,{path:f.path,hash:f.hash,mode:f.mode});else{let d=`${e.workTree}/${c}`;await e.fs.exists(d)&&await e.fs.rm(d)}}return{stdout:"",stderr:"",exitCode:0}}async function fm(e,t,n,r){if(!e.workTree)return T("this operation must be run in a work tree");let o=await se(e,r),s=await U(e),a=t.some(Ve),i=[];if(a){let c=t.map(d=>Oe(d,n)),f=new Set;for(let[d]of o)f.add(d);for(let d of s.entries)f.add(d.path);for(let d of f)me(c,d)&&i.push(d);if(i.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
516
528
  `)}else for(let c of t){if(s.entries.some(l=>l.path===c&&l.stage>0))return{stdout:"",stderr:`error: path '${c}' is unmerged
517
- `,exitCode:1};let d=o.get(c),u=s.entries.some(l=>l.path===c);if(!d&&!u)return j(`error: pathspec '${c}' did not match any file(s) known to git
518
- `);i.push(c)}for(let c of i){let f=o.get(c);if(f)s=Xe(s,{path:f.path,mode:parseInt(f.mode,8),hash:f.hash,stage:0,stat:pe()}),await ve(e,{path:f.path,hash:f.hash,mode:f.mode});else{s=Ne(s,c);let d=`${e.workTree}/${c}`;await e.fs.exists(d)&&await e.fs.rm(d)}}return await re(e,s),{stdout:"",stderr:"",exitCode:0}}function Gc(e,t){e.command("rev-parse",{description:"Pick out and massage parameters",args:[W.string().name("args").describe("Refs or revision expressions to resolve").optional().variadic()],options:{verify:A().describe("Verify that exactly one parameter is provided and resolves to an object"),short:A().describe("Abbreviate object name (default 7 chars)"),"abbrev-ref":A().describe("Output abbreviated ref name instead of object hash"),"symbolic-full-name":A().describe("Output the full symbolic ref name"),"show-toplevel":A().describe("Show the absolute path of the top-level directory"),"git-dir":A().describe("Show the path to the .git directory"),"is-inside-work-tree":A().describe("Output whether cwd is inside the work tree"),"is-bare-repository":A().describe("Output whether the repository is bare"),"show-prefix":A().describe("Show path of cwd relative to top-level directory"),"show-cdup":A().describe("Show relative path from cwd up to top-level directory")},handler:async(n,r)=>{let o=n.args.filter(y=>y!==""),s=n.verify,a=n.short,i=n["abbrev-ref"],c=n["symbolic-full-name"],f=n["show-toplevel"],d=n["git-dir"],u=n["is-inside-work-tree"],l=n["is-bare-repository"],m=n["show-prefix"],h=n["show-cdup"],p=f||d||u||l||m||h,g=await B(r.fs,r.cwd,t);if(S(g))return g;let w=g,x=[];if(f){if(!w.workTree)return T("this operation must be run in a work tree");x.push(w.workTree)}if(d&&x.push(w.gitDir),u&&x.push(w.workTree?"true":"false"),l&&x.push(w.workTree?"false":"true"),m){if(!w.workTree)return T("this operation must be run in a work tree");let y=Ke(w.workTree,r.cwd);x.push(y===""?"":`${y}/`)}if(h){if(!w.workTree)return T("this operation must be run in a work tree");let y=Ke(r.cwd,w.workTree);x.push(y===""?"":`${y}/`)}if(p&&o.length===0)return{stdout:x.map(k=>`${k}
519
- `).join(""),stderr:"",exitCode:0};if(s&&o.length!==1)return T("Needed a single revision");for(let y of o){if(i){let C=await cm(w,y);if(C===null)return Mo(y,s);x.push(C);continue}if(c){let C=await fm(w,y);if(C===null)return Mo(y,s);x.push(C);continue}let k=await je(w,y);if(!k)return Mo(y,s);x.push(a?K(k):k)}return{stdout:x.map(y=>`${y}
520
- `).join(""),stderr:"",exitCode:0}}})}function Mo(e,t){return t?T("Needed a single revision"):Et(e)}async function cm(e,t){if(t==="HEAD"||t==="@"){let r=await J(e);if(!r)return null;if(r.type==="symbolic"){let o=r.target;return o.startsWith("refs/heads/")?o.slice(11):o}return"HEAD"}return await je(e,t)?t:null}async function fm(e,t){if(t==="HEAD"||t==="@"){let r=await J(e);return r?r.type==="symbolic"?r.target:"HEAD":null}if(!await je(e,t))return null;if(t.startsWith("refs/"))return t;for(let r of["refs/heads/","refs/tags/","refs/remotes/"]){let o=`${r}${t}`;if(await F(e,o))return o}return t}function Nc(e,t){e.command("revert",{description:"Revert some existing commits",args:[W.string().name("commit").describe("The commit to revert").optional()],options:{abort:A().describe("Abort the current revert operation"),continue:A().describe("Continue the revert after conflict resolution"),"no-commit":A().alias("n").describe("Apply changes without creating a commit"),"no-edit":A().describe("Do not edit the commit message"),mainline:te.number().alias("m").describe("Select the parent number for reverting merges")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort){if(t?.hooks){let N=await t.hooks.emitPre("pre-revert",{mode:"abort",commit:null});if(N)return{stdout:"",stderr:N.message??"",exitCode:1}}let R=await dm(s,r.env);return R.exitCode===0&&await t?.hooks?.emitPost("post-revert",{mode:"abort",commitHash:null,hadConflicts:!1}),R}if(n.continue){if(t?.hooks){let N=await t.hooks.emitPre("pre-revert",{mode:"continue",commit:null});if(N)return{stdout:"",stderr:N.message??"",exitCode:1}}let R=await lm(s,r.env);return R.exitCode===0&&await t?.hooks?.emitPost("post-revert",{mode:"continue",commitHash:null,hadConflicts:!1}),R}let a=n.commit;if(!a)return T("you must specify a commit to revert");if(t?.hooks){let R=await t.hooks.emitPre("pre-revert",{mode:"revert",commit:a});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let i=await ye(s,a);if(S(i))return i;let c=i.hash,f=i.commit,d=await Se(s);if(S(d))return d;let u=await U(s),l=Nt(u,"Reverting",`fatal: revert failed
521
- `);if(l)return l;let m=await M(s,d);if(s.workTree){let R=await se(s,m.tree);if(vn(u,R))return j(`error: your local changes would be overwritten by revert.
529
+ `,exitCode:1};let d=o.get(c),u=s.entries.some(l=>l.path===c);if(!d&&!u)return G(`error: pathspec '${c}' did not match any file(s) known to git
530
+ `);i.push(c)}for(let c of i){let f=o.get(c);if(f)s=Xe(s,{path:f.path,mode:parseInt(f.mode,8),hash:f.hash,stage:0,stat:pe()}),await ve(e,{path:f.path,hash:f.hash,mode:f.mode});else{s=Ne(s,c);let d=`${e.workTree}/${c}`;await e.fs.exists(d)&&await e.fs.rm(d)}}return await re(e,s),{stdout:"",stderr:"",exitCode:0}}function _c(e,t){e.command("rev-parse",{description:"Pick out and massage parameters",args:[W.string().name("args").describe("Refs or revision expressions to resolve").optional().variadic()],options:{verify:v().describe("Verify that exactly one parameter is provided and resolves to an object"),short:v().describe("Abbreviate object name (default 7 chars)"),"abbrev-ref":v().describe("Output abbreviated ref name instead of object hash"),"symbolic-full-name":v().describe("Output the full symbolic ref name"),"show-toplevel":v().describe("Show the absolute path of the top-level directory"),"git-dir":v().describe("Show the path to the .git directory"),"is-inside-work-tree":v().describe("Output whether cwd is inside the work tree"),"is-bare-repository":v().describe("Output whether the repository is bare"),"show-prefix":v().describe("Show path of cwd relative to top-level directory"),"show-cdup":v().describe("Show relative path from cwd up to top-level directory")},handler:async(n,r)=>{let o=n.args.filter(E=>E!==""),s=n.verify,a=n.short,i=n["abbrev-ref"],c=n["symbolic-full-name"],f=n["show-toplevel"],d=n["git-dir"],u=n["is-inside-work-tree"],l=n["is-bare-repository"],m=n["show-prefix"],h=n["show-cdup"],p=f||d||u||l||m||h,g=await B(r.fs,r.cwd,t);if(S(g))return g;let w=g,x=[];if(f){if(!w.workTree)return T("this operation must be run in a work tree");x.push(w.workTree)}if(d&&x.push(w.gitDir),u&&x.push(w.workTree?"true":"false"),l&&x.push(w.workTree?"false":"true"),m){if(!w.workTree)return T("this operation must be run in a work tree");let E=Ke(w.workTree,r.cwd);x.push(E===""?"":`${E}/`)}if(h){if(!w.workTree)return T("this operation must be run in a work tree");let E=Ke(r.cwd,w.workTree);x.push(E===""?"":`${E}/`)}if(p&&o.length===0)return{stdout:x.map(k=>`${k}
531
+ `).join(""),stderr:"",exitCode:0};if(s&&o.length!==1)return T("Needed a single revision");for(let E of o){if(i){let P=await dm(w,E);if(P===null)return Lo(E,s);x.push(P);continue}if(c){let P=await lm(w,E);if(P===null)return Lo(E,s);x.push(P);continue}let k=await je(w,E);if(!k)return Lo(E,s);x.push(a?K(k):k)}return{stdout:x.map(E=>`${E}
532
+ `).join(""),stderr:"",exitCode:0}}})}function Lo(e,t){return t?T("Needed a single revision"):xt(e)}async function dm(e,t){if(t==="HEAD"||t==="@"){let r=await J(e);if(!r)return null;if(r.type==="symbolic"){let o=r.target;return o.startsWith("refs/heads/")?o.slice(11):o}return"HEAD"}return await je(e,t)?t:null}async function lm(e,t){if(t==="HEAD"||t==="@"){let r=await J(e);return r?r.type==="symbolic"?r.target:"HEAD":null}if(!await je(e,t))return null;if(t.startsWith("refs/"))return t;for(let r of["refs/heads/","refs/tags/","refs/remotes/"]){let o=`${r}${t}`;if(await F(e,o))return o}return t}function Fc(e,t){e.command("revert",{description:"Revert some existing commits",args:[W.string().name("commit").describe("The commit to revert").optional()],options:{abort:v().describe("Abort the current revert operation"),continue:v().describe("Continue the revert after conflict resolution"),"no-commit":v().alias("n").describe("Apply changes without creating a commit"),"no-edit":v().describe("Do not edit the commit message"),mainline:te.number().alias("m").describe("Select the parent number for reverting merges")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.abort){if(t?.hooks){let _=await t.hooks.emitPre("pre-revert",{mode:"abort",commit:null});if(_)return{stdout:"",stderr:_.message??"",exitCode:1}}let R=await um(s,r.env);return R.exitCode===0&&await t?.hooks?.emitPost("post-revert",{mode:"abort",commitHash:null,hadConflicts:!1}),R}if(n.continue){if(t?.hooks){let _=await t.hooks.emitPre("pre-revert",{mode:"continue",commit:null});if(_)return{stdout:"",stderr:_.message??"",exitCode:1}}let R=await mm(s,r.env);return R.exitCode===0&&await t?.hooks?.emitPost("post-revert",{mode:"continue",commitHash:null,hadConflicts:!1}),R}let a=n.commit;if(!a)return T("you must specify a commit to revert");if(t?.hooks){let R=await t.hooks.emitPre("pre-revert",{mode:"revert",commit:a});if(R)return{stdout:"",stderr:R.message??"",exitCode:1}}let i=await ye(s,a);if(S(i))return i;let c=i.hash,f=i.commit,d=await Se(s);if(S(d))return d;let u=await U(s),l=_t(u,"Reverting",`fatal: revert failed
533
+ `);if(l)return l;let m=await j(s,d);if(s.workTree){let R=await se(s,m.tree);if(Dn(u,R))return G(`error: your local changes would be overwritten by revert.
522
534
  hint: commit your changes or stash them to proceed.
523
535
  fatal: revert failed
524
- `,128)}let h=n.mainline,p;if(f.parents.length>1){if(h===void 0)return j(`error: commit ${c} is a merge but no -m option was given.
536
+ `,128)}let h=n.mainline,p;if(f.parents.length>1){if(h===void 0)return G(`error: commit ${c} is a merge but no -m option was given.
525
537
  fatal: revert failed
526
- `,128);if(h<1||h>f.parents.length)return j(`error: commit ${c} does not have parent ${h}
538
+ `,128);if(h<1||h>f.parents.length)return G(`error: commit ${c} does not have parent ${h}
527
539
  fatal: revert failed
528
- `,128);let R=f.parents[h-1];p=(await M(s,R)).tree}else if(f.parents.length===0)p=await ke(s,[]);else{let R=f.parents[0];p=(await M(s,R)).tree}let g=K(c),w=ue(f.message),x=_c(f,c,h),b={a:"HEAD",b:w?`parent of ${g} (${w})`:`parent of ${g}`},y=await wt(s,f.tree,m.tree,p,b);if(y.conflicts.length===0&&y.resultTree===m.tree){let R=y.messages.length>0?`${y.messages.join(`
540
+ `,128);let R=f.parents[h-1];p=(await j(s,R)).tree}else if(f.parents.length===0)p=await ke(s,[]);else{let R=f.parents[0];p=(await j(s,R)).tree}let g=K(c),w=ue(f.message),x=Uc(f,c,h),b={a:"HEAD",b:w?`parent of ${g} (${w})`:`parent of ${g}`},E=await yt(s,f.tree,m.tree,p,b);if(E.conflicts.length===0&&E.resultTree===m.tree){let R=E.messages.length>0?`${E.messages.join(`
529
541
  `)}
530
- `:"",N=await Be(s,{fromCommit:!0}),q=await F(s,"CHERRY_PICK_HEAD");return{stdout:`${R}${N}`,stderr:q?`The previous cherry-pick is now empty, possibly due to conflict resolution.
542
+ `:"",_=await Be(s,{fromCommit:!0}),q=await F(s,"CHERRY_PICK_HEAD");return{stdout:`${R}${_}`,stderr:q?`The previous cherry-pick is now empty, possibly due to conflict resolution.
531
543
  If you wish to commit it anyway, use:
532
544
 
533
545
  git commit --allow-empty
534
546
 
535
547
  Otherwise, please use 'git cherry-pick --skip'
536
- `:"",exitCode:1}}let k=await Wt(s,y,m.tree,{labels:b,errorExitCode:128,operationName:"merge",callerCommand:"revert",skipStagedChangeCheck:!0});if(!k.ok)return k;if(y.conflicts.length>0){await Y(s,"REVERT_HEAD",c),await Y(s,"ORIG_HEAD",d),await Ue(s,"MERGE_MSG",x);let R=y.messages.join(`
548
+ `:"",exitCode:1}}let k=await qt(s,E,m.tree,{labels:b,errorExitCode:128,operationName:"merge",callerCommand:"revert",skipStagedChangeCheck:!0});if(!k.ok)return k;if(E.conflicts.length>0){await Y(s,"REVERT_HEAD",c),await Y(s,"ORIG_HEAD",d),await Ue(s,"MERGE_MSG",x);let R=E.messages.join(`
537
549
  `);return await t?.hooks?.emitPost("post-revert",{mode:"revert",commitHash:null,hadConflicts:!0}),{stdout:R?`${R}
538
550
  `:"",stderr:`error: could not revert ${g}... ${ue(f.message)}
539
551
  hint: After resolving the conflicts, mark them with
@@ -543,105 +555,105 @@ hint: You can instead skip this commit with "git revert --skip".
543
555
  hint: To abort and get back to the state before "git revert",
544
556
  hint: run "git revert --abort".
545
557
  hint: Disable this message with "git config set advice.mergeConflict false"
546
- `,exitCode:1}}if(n["no-commit"])return await Y(s,"REVERT_HEAD",c),await Ue(s,"MERGE_MSG",x),{stdout:"",stderr:"",exitCode:0};let C=k.mergedTreeHash,P=await Ht(s,r.env);if(S(P))return P;let O=await Le(s,r.env);if(S(O))return O;let E=await Je(s,C,[d],P,O,x);await pt(s),await kt(s);let I=await J(s),H=ue(x),_=I?.type==="symbolic"?I.target:"HEAD";await ee(s,r.env,_,d,E,`revert: ${H}`,I?.type==="symbolic");let G=I?.type==="symbolic"?de(I.target):"detached HEAD",z=await St(s,m.tree,C,P,O,P.timestamp!==O.timestamp||P.timezone!==O.timezone),D=ut(G,E,x),$=y.messages.length>0?`${y.messages.join(`
558
+ `,exitCode:1}}if(n["no-commit"])return await Y(s,"REVERT_HEAD",c),await Ue(s,"MERGE_MSG",x),{stdout:"",stderr:"",exitCode:0};let P=k.mergedTreeHash,C=await Ht(s,r.env);if(S(C))return C;let O=await Le(s,r.env);if(S(O))return O;let y=await Je(s,P,[d],C,O,x);await wt(s),await kt(s);let I=await J(s),A=ue(x),L=I?.type==="symbolic"?I.target:"HEAD";await ee(s,r.env,L,d,y,`revert: ${A}`,I?.type==="symbolic");let D=I?.type==="symbolic"?de(I.target):"detached HEAD",z=await St(s,m.tree,P,C,O,C.timestamp!==O.timestamp||C.timezone!==O.timezone),M=mt(D,y,x),$=E.messages.length>0?`${E.messages.join(`
547
559
  `)}
548
- `:"";return await t?.hooks?.emitPost("post-revert",{mode:"revert",commitHash:E,hadConflicts:!1}),{stdout:`${$}${D}
549
- ${z}`,stderr:"",exitCode:0}}})}async function dm(e,t){return await F(e,"REVERT_HEAD")?en(e,t,{operationRef:"REVERT_HEAD",noOpError:j(`error: no cherry-pick or revert in progress
560
+ `:"";return await t?.hooks?.emitPost("post-revert",{mode:"revert",commitHash:y,hadConflicts:!1}),{stdout:`${$}${M}
561
+ ${z}`,stderr:"",exitCode:0}}})}async function um(e,t){return await F(e,"REVERT_HEAD")?tn(e,t,{operationRef:"REVERT_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
550
562
  fatal: revert failed
551
- `,128),operationName:"revert",clearState:pt,origHeadAsTargetRev:!0}):await F(e,"CHERRY_PICK_HEAD")?en(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:j(`error: no cherry-pick or revert in progress
563
+ `,128),operationName:"revert",clearState:wt,origHeadAsTargetRev:!0}):await F(e,"CHERRY_PICK_HEAD")?tn(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
552
564
  fatal: revert failed
553
- `,128),operationName:"revert",clearState:kt,origHeadAsTargetRev:!0}):j(`error: no cherry-pick or revert in progress
565
+ `,128),operationName:"revert",clearState:kt,origHeadAsTargetRev:!0}):G(`error: no cherry-pick or revert in progress
554
566
  fatal: revert failed
555
- `,128)}async function lm(e,t){let n=await F(e,"REVERT_HEAD");if(!n)return j(`error: no cherry-pick or revert in progress
567
+ `,128)}async function mm(e,t){let n=await F(e,"REVERT_HEAD");if(!n)return G(`error: no cherry-pick or revert in progress
556
568
  fatal: revert failed
557
- `,128);let r=await U(e),o=Nt(r,"Committing");if(o)return o;let s=await qe(e,"MERGE_MSG");if(!s){let y=await M(e,n);s=_c(y,n)}let a=xe(r),i=await ke(e,a),c=await Se(e);if(S(c))return c;let f=await M(e,c),d=await Ht(e,t);if(S(d))return d;let u=await Le(e,t);if(S(u))return u;let l=mt(s),m=await Je(e,i,[c],d,u,l);await pt(e),await kt(e);let h=await J(e),p=ue(l),g=h?.type==="symbolic"?h.target:"HEAD";await ee(e,t,g,c,m,`commit: ${p}`,h?.type==="symbolic");let w=h?.type==="symbolic"?de(h.target):"detached HEAD",x=await St(e,f.tree,i,d,u,d.timestamp!==u.timestamp||d.timezone!==u.timezone);return{stdout:`${ut(w,m,s)}
558
- ${x}`,stderr:"",exitCode:0}}function _c(e,t,n){let r=ue(e.message),o='Revert "',i=`${r.startsWith(o)&&r.endsWith('"')?`Reapply "${r.slice(o.length,-1)}"`:`Revert "${r}"`}
569
+ `,128);let r=await U(e),o=_t(r,"Committing");if(o)return o;let s=await qe(e,"MERGE_MSG");if(!s){let E=await j(e,n);s=Uc(E,n)}let a=xe(r),i=await ke(e,a),c=await Se(e);if(S(c))return c;let f=await j(e,c),d=await Ht(e,t);if(S(d))return d;let u=await Le(e,t);if(S(u))return u;let l=ht(s),m=await Je(e,i,[c],d,u,l);await wt(e),await kt(e);let h=await J(e),p=ue(l),g=h?.type==="symbolic"?h.target:"HEAD";await ee(e,t,g,c,m,`commit: ${p}`,h?.type==="symbolic");let w=h?.type==="symbolic"?de(h.target):"detached HEAD",x=await St(e,f.tree,i,d,u,d.timestamp!==u.timestamp||d.timezone!==u.timezone);return{stdout:`${mt(w,m,s)}
570
+ ${x}`,stderr:"",exitCode:0}}function Uc(e,t,n){let r=ue(e.message),o='Revert "',i=`${r.startsWith(o)&&r.endsWith('"')?`Reapply "${r.slice(o.length,-1)}"`:`Revert "${r}"`}
559
571
 
560
572
  This reverts commit ${t}`;if(n!==void 0&&e.parents.length>1&&n>=1){let c=e.parents[n===1?1:0]??e.parents[0];i+=`, reversing
561
573
  changes made to ${c}`}return i+=`.
562
- `,i}function Fc(e,t){e.command("rm",{description:"Remove files from the working tree and from the index",args:[W.string().name("paths").describe("Files to remove").optional().variadic()],options:{cached:A().describe("Only remove from the index"),recursive:A().alias("r").describe("Allow recursive removal when a directory name is given"),force:A().alias("f").describe("Override the up-to-date check"),dryRun:A().alias("n").describe("Don't actually remove any file(s)")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c=n.paths;if(c.length===0)return j("usage: git rm [--cached] [-f] [-r] <file>...");let f=n.cached,d=n.recursive,u=n.force;if(t?.hooks){let w=await t.hooks.emitPre("pre-rm",{paths:c,cached:f,recursive:d,force:u});if(w)return{stdout:"",stderr:w.message??"",exitCode:1}}let l=await U(s),m=[],h=Ze(s,r.cwd);for(let w of c){if(Ve(w)){let k=[Oe(w,h)],C=l.entries.filter(P=>me(k,P.path));if(C.length===0)return T(`pathspec '${w}' did not match any files`);for(let P of C)m.push(P.path);continue}let x=ct(r.cwd,w),b=Ke(i,x);if((b==="."||b==="")&&(b=""),b.startsWith(".."))return T(`'${w}' is outside repository at '${i}'`);if(await r.fs.exists(x)&&!(await ze(r.fs,x)).isSymbolicLink&&(await ze(r.fs,x)).isDirectory){if(!d)return T(`not removing '${b}' recursively without -r`);let k=b===""?"":`${b}/`,C=l.entries.filter(P=>k===""||P.path.startsWith(k));if(C.length===0)return T(`pathspec '${w}' did not match any files`);for(let P of C)m.push(P.path)}else{if(!l.entries.some(C=>C.path===b))return T(`pathspec '${w}' did not match any files`);m.push(b)}}if(!u){let w=await um(s,l,m,f);if(w)return w}if(n.dryRun){let w=m.map(b=>`rm '${b}'`);return{stdout:w.length>0?`${w.join(`
574
+ `,i}function Bc(e,t){e.command("rm",{description:"Remove files from the working tree and from the index",args:[W.string().name("paths").describe("Files to remove").optional().variadic()],options:{cached:v().describe("Only remove from the index"),recursive:v().alias("r").describe("Allow recursive removal when a directory name is given"),force:v().alias("f").describe("Override the up-to-date check"),dryRun:v().alias("n").describe("Don't actually remove any file(s)")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,a=Fe(s);if(a)return a;let i=s.workTree,c=n.paths;if(c.length===0)return G("usage: git rm [--cached] [-f] [-r] <file>...");let f=n.cached,d=n.recursive,u=n.force;if(t?.hooks){let w=await t.hooks.emitPre("pre-rm",{paths:c,cached:f,recursive:d,force:u});if(w)return{stdout:"",stderr:w.message??"",exitCode:1}}let l=await U(s),m=[],h=Ze(s,r.cwd);for(let w of c){if(Ve(w)){let k=[Oe(w,h)],P=l.entries.filter(C=>me(k,C.path));if(P.length===0)return T(`pathspec '${w}' did not match any files`);for(let C of P)m.push(C.path);continue}let x=ft(r.cwd,w),b=Ke(i,x);if((b==="."||b==="")&&(b=""),b.startsWith(".."))return T(`'${w}' is outside repository at '${i}'`);if(await r.fs.exists(x)&&!(await ze(r.fs,x)).isSymbolicLink&&(await ze(r.fs,x)).isDirectory){if(!d)return T(`not removing '${b}' recursively without -r`);let k=b===""?"":`${b}/`,P=l.entries.filter(C=>k===""||C.path.startsWith(k));if(P.length===0)return T(`pathspec '${w}' did not match any files`);for(let C of P)m.push(C.path)}else{if(!l.entries.some(P=>P.path===b))return T(`pathspec '${w}' did not match any files`);m.push(b)}}if(!u){let w=await hm(s,l,m,f);if(w)return w}if(n.dryRun){let w=m.map(b=>`rm '${b}'`);return{stdout:w.length>0?`${w.join(`
563
575
  `)}
564
- `:"",stderr:"",exitCode:0}}let p=[];for(let w of m){if(l=Ne(l,w),!f){let x=v(i,w);await ze(r.fs,x).then(()=>!0).catch(()=>!1)&&await r.fs.rm(x)}p.push(`rm '${w}'`)}await re(s,l);let g=p.length>0?`${p.join(`
576
+ `:"",stderr:"",exitCode:0}}let p=[];for(let w of m){if(l=Ne(l,w),!f){let x=H(i,w);await ze(r.fs,x).then(()=>!0).catch(()=>!1)&&await r.fs.rm(x)}p.push(`rm '${w}'`)}await re(s,l);let g=p.length>0?`${p.join(`
565
577
  `)}
566
- `:"";return await t?.hooks?.emitPost("post-rm",{removedPaths:m,cached:f}),{stdout:g,stderr:"",exitCode:0}}})}async function um(e,t,n,r){let o=await X(e),s=new Map;if(o){let f=await M(e,o),d=await He(e,f.tree);for(let u of d)s.set(u.path,u.hash)}let a=[],i=[],c=[];for(let f of n){let d=t.entries.find(h=>h.path===f&&h.stage===0);if(!d)continue;let l=s.get(f)!==d.hash,m=!1;if(e.workTree){let h=v(e.workTree,f),p=!1;try{await ze(e.fs,h),p=!0}catch{p=!1}p&&(m=await Zt(e.fs,h)!==d.hash)}l&&m?a.push(f):l&&!r?i.push(f):m&&!r&&c.push(f)}if(a.length>0){let f=a.map(u=>` ${u}`).join(`
567
- `),d=a.length===1?"the following file has":"the following files have";return j(`error: ${d} staged content different from both the
578
+ `:"";return await t?.hooks?.emitPost("post-rm",{removedPaths:m,cached:f}),{stdout:g,stderr:"",exitCode:0}}})}async function hm(e,t,n,r){let o=await X(e),s=new Map;if(o){let f=await j(e,o),d=await He(e,f.tree);for(let u of d)s.set(u.path,u.hash)}let a=[],i=[],c=[];for(let f of n){let d=t.entries.find(h=>h.path===f&&h.stage===0);if(!d)continue;let l=s.get(f)!==d.hash,m=!1;if(e.workTree){let h=H(e.workTree,f),p=!1;try{await ze(e.fs,h),p=!0}catch{p=!1}p&&(m=await Jt(e.fs,h)!==d.hash)}l&&m?a.push(f):l&&!r?i.push(f):m&&!r&&c.push(f)}if(a.length>0){let f=a.map(u=>` ${u}`).join(`
579
+ `),d=a.length===1?"the following file has":"the following files have";return G(`error: ${d} staged content different from both the
568
580
  file and the HEAD:
569
581
  ${f}
570
582
  (use -f to force removal)
571
583
  `)}if(i.length>0){let f=i.map(u=>` ${u}`).join(`
572
- `),d=i.length===1?"the following file has":"the following files have";return j(`error: ${d} changes staged in the index:
584
+ `),d=i.length===1?"the following file has":"the following files have";return G(`error: ${d} changes staged in the index:
573
585
  ${f}
574
586
  (use --cached to keep the file, or -f to force removal)
575
587
  `)}if(c.length>0){let f=c.map(u=>` ${u}`).join(`
576
- `),d=c.length===1?"the following file has":"the following files have";return j(`error: ${d} local modifications:
588
+ `),d=c.length===1?"the following file has":"the following files have";return G(`error: ${d} local modifications:
577
589
  ${f}
578
590
  (use --cached to keep the file, or -f to force removal)
579
- `)}return null}var jo=new TextDecoder;function Uc(e,t){e.command("show",{description:"Show various types of objects",args:[W.string().name("object").variadic().optional()],handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,i=n.object[0]??"HEAD",c=$i(i);if(c)return mm(s,c.rev,c.path);if(i==="HEAD"){let u=await Se(s);if(S(u))return u}let f=await An(s,i,`bad object '${i}'`);if(S(f))return f;let d=await ce(s,f);switch(d.type){case"commit":{let u=await M(s,f);return{stdout:await Bc(s,f,u),stderr:"",exitCode:0}}case"tag":{let u=await Ei(s,f);return{stdout:await hm(s,u),stderr:"",exitCode:0}}case"tree":{let u=Jt(d.content);return{stdout:Wc(u),stderr:"",exitCode:0}}case"blob":return{stdout:jo.decode(d.content),stderr:"",exitCode:0}}}})}async function mm(e,t,n){let r=await ye(e,t);if(S(r))return r;let o=r.commit.tree,s=n.replace(/^\//,""),i=(await se(e,o)).get(s);if(!i){let f=`path '${s}' does not exist in '${t}'`;if(e.workTree){let d=v(e.workTree,s);await e.fs.exists(d)&&(f=`path '${s}' exists on disk, but not in '${t}'`)}return T(f)}let c=await ce(e,i.hash);if(c.type==="blob")return{stdout:jo.decode(c.content),stderr:"",exitCode:0};if(c.type==="tree"){let f=Jt(c.content);return{stdout:Wc(f),stderr:"",exitCode:0}}return{stdout:jo.decode(c.content),stderr:"",exitCode:0}}async function Bc(e,t,n){let r=[];if(r.push(`commit ${t}`),n.parents.length>=2){let s=n.parents.map(a=>K(a)).join(" ");r.push(`Merge: ${s}`)}r.push(`Author: ${n.author.name} <${n.author.email}>`),r.push(`Date: ${vt(n.author.timestamp,n.author.timezone)}`),r.push("");let o=n.message.replace(/\n$/,"");for(let s of o.split(`
580
- `))r.push(` ${s}`);if(n.parents.length<=1){let s=n.parents.length===1?(await M(e,n.parents[0])).tree:null,a=await Ae(e,s,n.tree),{remaining:i,renames:c}=await Ye(e,a),f=await wm(e,i,c);f&&(r.push(""),r.push(f.replace(/\n$/,"")))}else{let s=await bm(e,n);s?(r.push(""),r.push(s.replace(/\n$/,""))):r.push("")}return`${r.join(`
591
+ `)}return null}var Go=new TextDecoder;function Wc(e,t){e.command("show",{description:"Show various types of objects",args:[W.string().name("object").variadic().optional()],handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o,i=n.object[0]??"HEAD",c=Hi(i);if(c)return pm(s,c.rev,c.path);if(i==="HEAD"){let u=await Se(s);if(S(u))return u}let f=await Sn(s,i,`bad object '${i}'`);if(S(f))return f;let d=await fe(s,f);switch(d.type){case"commit":{let u=await j(s,f);return{stdout:await qc(s,f,u),stderr:"",exitCode:0}}case"tag":{let u=await ki(s,f);return{stdout:await gm(s,u),stderr:"",exitCode:0}}case"tree":{let u=Qt(d.content);return{stdout:Kc(u),stderr:"",exitCode:0}}case"blob":return{stdout:Go.decode(d.content),stderr:"",exitCode:0}}}})}async function pm(e,t,n){let r=await ye(e,t);if(S(r))return r;let o=r.commit.tree,s=n.replace(/^\//,""),i=(await se(e,o)).get(s);if(!i){let f=`path '${s}' does not exist in '${t}'`;if(e.workTree){let d=H(e.workTree,s);await e.fs.exists(d)&&(f=`path '${s}' exists on disk, but not in '${t}'`)}return T(f)}let c=await fe(e,i.hash);if(c.type==="blob")return{stdout:Go.decode(c.content),stderr:"",exitCode:0};if(c.type==="tree"){let f=Qt(c.content);return{stdout:Kc(f),stderr:"",exitCode:0}}return{stdout:Go.decode(c.content),stderr:"",exitCode:0}}async function qc(e,t,n){let r=[];if(r.push(`commit ${t}`),n.parents.length>=2){let s=n.parents.map(a=>K(a)).join(" ");r.push(`Merge: ${s}`)}r.push(`Author: ${n.author.name} <${n.author.email}>`),r.push(`Date: ${vt(n.author.timestamp,n.author.timezone)}`),r.push("");let o=n.message.replace(/\n$/,"");for(let s of o.split(`
592
+ `))r.push(` ${s}`);if(n.parents.length<=1){let s=n.parents.length===1?(await j(e,n.parents[0])).tree:null,a=await Ae(e,s,n.tree),{remaining:i,renames:c}=await Ye(e,a),f=await ym(e,i,c);f&&(r.push(""),r.push(f.replace(/\n$/,"")))}else{let s=await Em(e,n);s?(r.push(""),r.push(s.replace(/\n$/,""))):r.push("")}return`${r.join(`
581
593
  `)}
582
- `}async function hm(e,t){let n=[];n.push(`tag ${t.name}`),n.push(`Tagger: ${t.tagger.name} <${t.tagger.email}>`),n.push(`Date: ${vt(t.tagger.timestamp,t.tagger.timezone)}`),n.push("");let r=t.message.replace(/\n$/,"");for(let o of r.split(`
583
- `))n.push(` ${o}`);if(t.objectType==="commit"){let o=await M(e,t.object),s=await Bc(e,t.object,o);n.push(""),n.push(s.replace(/\n$/,""))}return`${n.join(`
594
+ `}async function gm(e,t){let n=[];n.push(`tag ${t.name}`),n.push(`Tagger: ${t.tagger.name} <${t.tagger.email}>`),n.push(`Date: ${vt(t.tagger.timestamp,t.tagger.timezone)}`),n.push("");let r=t.message.replace(/\n$/,"");for(let o of r.split(`
595
+ `))n.push(` ${o}`);if(t.objectType==="commit"){let o=await j(e,t.object),s=await qc(e,t.object,o);n.push(""),n.push(s.replace(/\n$/,""))}return`${n.join(`
584
596
  `)}
585
- `}function Wc(e){let t=[];for(let n of e.entries){let r=n.mode==="040000"?"tree":"blob";t.push(`${n.mode} ${r} ${n.hash} ${n.name}`)}return t.length>0?`${t.join(`
597
+ `}function Kc(e){let t=[];for(let n of e.entries){let r=n.mode==="040000"?"tree":"blob";t.push(`${n.mode} ${r} ${n.hash} ${n.name}`)}return t.length>0?`${t.join(`
586
598
  `)}
587
- `:""}async function pm(e,t){let n=t.oldHash?await fe(e,t.oldHash):"",r=t.newHash?await fe(e,t.newHash):"";return At({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash})}async function gm(e,t){let n=t.oldHash?await fe(e,t.oldHash):"",r=t.newHash?await fe(e,t.newHash):"";return At({path:t.oldPath,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash,renameTo:t.newPath,similarity:t.similarity})}async function wm(e,t,n){let r=[];for(let s of t)r.push({type:"diff",entry:s});for(let s of n)r.push({type:"rename",entry:s});r.sort((s,a)=>{let i=s.type==="diff"?s.entry.path:s.entry.newPath,c=a.type==="diff"?a.entry.path:a.entry.newPath;return i<c?-1:i>c?1:0});let o="";for(let s of r)s.type==="rename"?o+=await gm(e,s.entry):o+=await pm(e,s.entry);return o}async function bm(e,t){if(t.parents.length<2)return"";let n=await Promise.all(t.parents.map(async i=>{let c=await M(e,i);return se(e,c.tree)})),r=await se(e,t.tree),o=new Set;for(let i of n)for(let c of i.keys())o.add(c);for(let i of r.keys())o.add(i);let s=[];for(let i of o){let f=r.get(i)?.hash??null;n.every(u=>(u.get(i)?.hash??null)!==f)&&s.push(i)}if(s.sort(),s.length===0)return"";let a="";for(let i of s)a+=await ym(e,i,n,r);return a}async function ym(e,t,n,r){let o=r.get(t),s=n.map(l=>l.get(t)??null),a=o?.hash??null,i=o?.mode??null,c=s.map(l=>l?.hash??null),f=s.map(l=>l?.mode??null),d=await Promise.all(c.map(async l=>l?await fe(e,l):"")),u=a?await fe(e,a):"";return hs({path:t,parentHashes:c,parentModes:f,parentContents:d,resultHash:a,resultMode:i,resultContent:u})}var Ct="refs/stash";function Go(e,t){return he(e.replaceAll("/","\0"),t.replaceAll("/","\0"))}async function qc(e){let t=await Me(e,Ct),n=[];for(let r=t.length-1;r>=0;r--){let o=t[r];o&&n.push({index:t.length-1-r,hash:o.newHash,message:o.message})}return n}async function Fn(e,t){let n=await Me(e,Ct);if(n.length===0)return null;let r=n.length-1-t;return r<0||r>=n.length?null:n[r]?.newHash??null}async function Kc(e,t,n,r){if(!e.workTree)throw new Error("Cannot stash in a bare repository");let o=e.workTree,s=await X(e);if(!s)return null;let a=await M(e,s),i=await U(e),c=xe(i),f=await ke(e,c),d=await Ae(e,a.tree,f),u=new Map(c.map(L=>[L.path,L])),l=await _e(e,o,"",{skipIgnore:!0}),m=!1;for(let L of l){let V=u.get(L);if(!V)continue;let oe=v(o,L),Q=await e.fs.readFileBuffer(oe);if(await st("blob",Q)!==V.hash){m=!0;break}}if(!m)for(let[L]of u){let V=v(o,L);if(!await e.fs.exists(V)){m=!0;break}}let h=[];if(r?.includeUntracked){let L=await _e(e,o,"");for(let V of L)u.has(V)||h.push(V)}if(d.length===0&&!m&&h.length===0)return null;let p=await Cr(e,t),g=await qn(e,t),w=await J(e),x=w?.type==="symbolic"?de(w.target):"(no branch)",b=K(s),y=ue(a.message),k=`index on ${x}: ${b} ${y}
588
- `,C=$t({type:"commit",tree:f,parents:[s],author:p,committer:g,message:k}),P=await we(e,"commit",C),O=await se(e,a.tree),E=[],I=new Set;for(let L of l){let V=u.get(L),oe=O.get(L);if(!V&&!oe)continue;let Q=v(o,L),ge=await e.fs.readFileBuffer(Q),De=await we(e,"blob",ge),dn=V?V.mode:parseInt(oe?.mode??"100644",8);E.push({path:L,mode:dn,hash:De,stage:0,stat:pe()}),I.add(L)}for(let[L,V]of u)I.has(L)||O.has(L)||E.push({path:L,mode:V.mode,hash:V.hash,stage:0,stat:pe()});let H=await ke(e,E),_=null;if(r?.includeUntracked){let L=[];for(let ge of h){let De=v(o,ge),dn=await e.fs.readFileBuffer(De),Ie=await we(e,"blob",dn);L.push({path:ge,mode:33188,hash:Ie,stage:0,stat:pe()})}let V=await ke(e,L),oe=`untracked files on ${x}: ${b} ${y}
589
- `,Q=$t({type:"commit",tree:V,parents:[],author:p,committer:g,message:oe});_=await we(e,"commit",Q)}let G=n?`On ${x}: ${n}`:`WIP on ${x}: ${b} ${y}`,z=[s,P];_&&z.push(_);let D=$t({type:"commit",tree:H,parents:z,author:p,committer:g,message:G}),$=await we(e,"commit",D),R=await Fn(e,0)??Z;await Te(e,Ct,{oldHash:R,newHash:$,name:g.name,email:g.email,timestamp:g.timestamp,tz:g.timezone,message:G.trimEnd()}),await Y(e,Ct,$);let N=await yt(e,a.tree,i);await re(e,{version:2,entries:N.newEntries}),await be(e,N.worktreeOps),(await J(e))?.type==="symbolic"&&await ee(e,t,"HEAD",s,s,"reset: moving to HEAD");for(let L of["CHERRY_PICK_HEAD","MERGE_HEAD","ORIG_HEAD","REVERT_HEAD"])await ie(e,L);for(let L of["MERGE_MSG","MERGE_MODE"]){let V=v(e.gitDir,L);await e.fs.exists(V)&&await e.fs.rm(V)}if(h.length>0)for(let L of h){if(O.has(L))continue;let V=v(o,L);await e.fs.exists(V)&&(await e.fs.rm(V),await pn(e.fs,Pt(V),o))}return $}async function Lo(e,t){let n=e.workTree,r=await M(e,t),o=await He(e,r.tree),s=[];for(let a of o){let i=v(n,a.path);await e.fs.exists(i)?s.push(a.path):await ve(e,a)}return s.length>0?(s.sort(Go),{ok:!1,stdout:"",stderr:`${s.map(a=>`${a} already exists, no checkout`).join(`
599
+ `:""}async function wm(e,t){let n=t.oldHash?await ie(e,t.oldHash):"",r=t.newHash?await ie(e,t.newHash):"";return At({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash})}async function bm(e,t){let n=t.oldHash?await ie(e,t.oldHash):"",r=t.newHash?await ie(e,t.newHash):"";return At({path:t.oldPath,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash,renameTo:t.newPath,similarity:t.similarity})}async function ym(e,t,n){let r=[];for(let s of t)r.push({type:"diff",entry:s});for(let s of n)r.push({type:"rename",entry:s});r.sort((s,a)=>{let i=s.type==="diff"?s.entry.path:s.entry.newPath,c=a.type==="diff"?a.entry.path:a.entry.newPath;return i<c?-1:i>c?1:0});let o="";for(let s of r)s.type==="rename"?o+=await bm(e,s.entry):o+=await wm(e,s.entry);return o}async function Em(e,t){if(t.parents.length<2)return"";let n=await Promise.all(t.parents.map(async i=>{let c=await j(e,i);return se(e,c.tree)})),r=await se(e,t.tree),o=new Set;for(let i of n)for(let c of i.keys())o.add(c);for(let i of r.keys())o.add(i);let s=[];for(let i of o){let f=r.get(i)?.hash??null;n.every(u=>(u.get(i)?.hash??null)!==f)&&s.push(i)}if(s.sort(),s.length===0)return"";let a="";for(let i of s)a+=await xm(e,i,n,r);return a}async function xm(e,t,n,r){let o=r.get(t),s=n.map(l=>l.get(t)??null),a=o?.hash??null,i=o?.mode??null,c=s.map(l=>l?.hash??null),f=s.map(l=>l?.mode??null),d=await Promise.all(c.map(async l=>l?await ie(e,l):"")),u=a?await ie(e,a):"";return ws({path:t,parentHashes:c,parentModes:f,parentContents:d,resultHash:a,resultMode:i,resultContent:u})}var Ct="refs/stash";function _o(e,t){return he(e.replaceAll("/","\0"),t.replaceAll("/","\0"))}async function zc(e){let t=await Me(e,Ct),n=[];for(let r=t.length-1;r>=0;r--){let o=t[r];o&&n.push({index:t.length-1-r,hash:o.newHash,message:o.message})}return n}async function Wn(e,t){let n=await Me(e,Ct);if(n.length===0)return null;let r=n.length-1-t;return r<0||r>=n.length?null:n[r]?.newHash??null}async function Vc(e,t,n,r){if(!e.workTree)throw new Error("Cannot stash in a bare repository");let o=e.workTree,s=await X(e);if(!s)return null;let a=await j(e,s),i=await U(e),c=xe(i),f=await ke(e,c),d=await Ae(e,a.tree,f),u=new Map(c.map(N=>[N.path,N])),l=await _e(e,o,"",{skipIgnore:!0}),m=!1;for(let N of l){let V=u.get(N);if(!V)continue;let oe=H(o,N),Q=await e.fs.readFileBuffer(oe);if(await st("blob",Q)!==V.hash){m=!0;break}}if(!m)for(let[N]of u){let V=H(o,N);if(!await e.fs.exists(V)){m=!0;break}}let h=[];if(r?.includeUntracked){let N=await _e(e,o,"");for(let V of N)u.has(V)||h.push(V)}if(d.length===0&&!m&&h.length===0)return null;let p=await Or(e,t),g=await Vn(e,t),w=await J(e),x=w?.type==="symbolic"?de(w.target):"(no branch)",b=K(s),E=ue(a.message),k=`index on ${x}: ${b} ${E}
600
+ `,P=$t({type:"commit",tree:f,parents:[s],author:p,committer:g,message:k}),C=await we(e,"commit",P),O=await se(e,a.tree),y=[],I=new Set;for(let N of l){let V=u.get(N),oe=O.get(N);if(!V&&!oe)continue;let Q=H(o,N),ge=await e.fs.readFileBuffer(Q),De=await we(e,"blob",ge),un=V?V.mode:parseInt(oe?.mode??"100644",8);y.push({path:N,mode:un,hash:De,stage:0,stat:pe()}),I.add(N)}for(let[N,V]of u)I.has(N)||O.has(N)||y.push({path:N,mode:V.mode,hash:V.hash,stage:0,stat:pe()});let A=await ke(e,y),L=null;if(r?.includeUntracked){let N=[];for(let ge of h){let De=H(o,ge),un=await e.fs.readFileBuffer(De),Re=await we(e,"blob",un);N.push({path:ge,mode:33188,hash:Re,stage:0,stat:pe()})}let V=await ke(e,N),oe=`untracked files on ${x}: ${b} ${E}
601
+ `,Q=$t({type:"commit",tree:V,parents:[],author:p,committer:g,message:oe});L=await we(e,"commit",Q)}let D=n?`On ${x}: ${n}`:`WIP on ${x}: ${b} ${E}`,z=[s,C];L&&z.push(L);let M=$t({type:"commit",tree:A,parents:z,author:p,committer:g,message:D}),$=await we(e,"commit",M),R=await Wn(e,0)??Z;await Te(e,Ct,{oldHash:R,newHash:$,name:g.name,email:g.email,timestamp:g.timestamp,tz:g.timezone,message:D.trimEnd()}),await Y(e,Ct,$);let _=await Nt(e,a.tree,i);await re(e,{version:2,entries:_.newEntries}),await be(e,_.worktreeOps),(await J(e))?.type==="symbolic"&&await ee(e,t,"HEAD",s,s,"reset: moving to HEAD");for(let N of["CHERRY_PICK_HEAD","MERGE_HEAD","ORIG_HEAD","REVERT_HEAD"])await ae(e,N);for(let N of["MERGE_MSG","MERGE_MODE"]){let V=H(e.gitDir,N);await e.fs.exists(V)&&await e.fs.rm(V)}if(h.length>0)for(let N of h){if(O.has(N))continue;let V=H(o,N);await e.fs.exists(V)&&(await e.fs.rm(V),await wn(e.fs,Pt(V),o))}return $}async function No(e,t){let n=e.workTree,r=await j(e,t),o=await He(e,r.tree),s=[];for(let a of o){let i=H(n,a.path);await e.fs.exists(i)?s.push(a.path):await ve(e,a)}return s.length>0?(s.sort(_o),{ok:!1,stdout:"",stderr:`${s.map(a=>`${a} already exists, no checkout`).join(`
590
602
  `)}
591
603
  error: could not restore untracked files from stash
592
- `,exitCode:1}):{ok:!0,hasConflicts:!1,messages:[]}}async function No(e,t=0){if(!e.workTree)return{ok:!1,stdout:"",stderr:`fatal: this operation must be run in a work tree
593
- `,exitCode:128};let n=await Fn(e,t);if(!n)return{ok:!1,stdout:"",stderr:`error: stash@{${t}} is not a valid reference
604
+ `,exitCode:1}):{ok:!0,hasConflicts:!1,messages:[]}}async function Fo(e,t=0){if(!e.workTree)return{ok:!1,stdout:"",stderr:`fatal: this operation must be run in a work tree
605
+ `,exitCode:128};let n=await Wn(e,t);if(!n)return{ok:!1,stdout:"",stderr:`error: stash@{${t}} is not a valid reference
594
606
  `,exitCode:1};if(!await X(e))return{ok:!1,stdout:"",stderr:`error: your current branch does not have any commits yet
595
- `,exitCode:1};let o=await U(e),s=Rt(o).sort();if(s.length>0)return{ok:!1,stdout:`${s.map(O=>`${O}: needs merge`).join(`
607
+ `,exitCode:1};let o=await U(e),s=It(o).sort();if(s.length>0)return{ok:!1,stdout:`${s.map(O=>`${O}: needs merge`).join(`
596
608
  `)}
597
609
  `,stderr:`error: could not write index
598
- `,exitCode:1};let a=await M(e,n),i=a.parents[0];if(!i)return{ok:!1,stdout:"",stderr:`error: invalid stash commit (no parent)
599
- `,exitCode:1};let c=await M(e,i),f=a.parents[2],d=xe(o),u=await ke(e,d),l={a:"Updated upstream",b:"Stashed changes"};if(c.tree===a.tree){if(f){let P=await Lo(e,f);if(!P.ok)return{...P,messages:["Already up to date."]}}return{ok:!0,hasConflicts:!1,messages:["Already up to date."]}}let m=await wt(e,c.tree,u,a.tree,l),h=await se(e,u),p=await se(e,m.resultTree),g=[];for(let[P,O]of p){let E=h.get(P);(!E||E.hash!==O.hash)&&g.push({path:P,type:"checkout",hash:O.hash,mode:parseInt(O.mode,8)})}for(let[P]of h)p.has(P)||g.push({path:P,type:"delete"});let w=new Map(d.map(P=>[P.path,P])),x=[],b=[];for(let P of g){let O=w.get(P.path),E=v(e.workTree,P.path);if(O){if(!await e.fs.exists(E))continue;let I=await e.fs.readFileBuffer(E);await st("blob",I)!==O.hash&&x.push(P.path)}else P.type==="checkout"&&await e.fs.exists(E)&&b.push(P.path)}if(x.length>0||b.length>0){x.sort(Go),b.sort(Go);let P="";if(x.length>0&&(P+=`error: Your local changes to the following files would be overwritten by merge:
610
+ `,exitCode:1};let a=await j(e,n),i=a.parents[0];if(!i)return{ok:!1,stdout:"",stderr:`error: invalid stash commit (no parent)
611
+ `,exitCode:1};let c=await j(e,i),f=a.parents[2],d=xe(o),u=await ke(e,d),l={a:"Updated upstream",b:"Stashed changes"};if(c.tree===a.tree){if(f){let C=await No(e,f);if(!C.ok)return{...C,messages:["Already up to date."]}}return{ok:!0,hasConflicts:!1,messages:["Already up to date."]}}let m=await yt(e,c.tree,u,a.tree,l),h=await se(e,u),p=await se(e,m.resultTree),g=[];for(let[C,O]of p){let y=h.get(C);(!y||y.hash!==O.hash)&&g.push({path:C,type:"checkout",hash:O.hash,mode:parseInt(O.mode,8)})}for(let[C]of h)p.has(C)||g.push({path:C,type:"delete"});let w=new Map(d.map(C=>[C.path,C])),x=[],b=[];for(let C of g){let O=w.get(C.path),y=H(e.workTree,C.path);if(O){if(!await e.fs.exists(y))continue;let I=await e.fs.readFileBuffer(y);await st("blob",I)!==O.hash&&x.push(C.path)}else C.type==="checkout"&&await e.fs.exists(y)&&b.push(C.path)}if(x.length>0||b.length>0){x.sort(_o),b.sort(_o);let C="";if(x.length>0&&(C+=`error: Your local changes to the following files would be overwritten by merge:
600
612
  ${x.map(O=>` ${O}`).join(`
601
613
  `)}
602
614
  Please commit your changes or stash them before you merge.
603
- `),b.length>0&&(P+=`error: The following untracked working tree files would be overwritten by merge:
615
+ `),b.length>0&&(C+=`error: The following untracked working tree files would be overwritten by merge:
604
616
  ${b.map(O=>` ${O}`).join(`
605
617
  `)}
606
618
  Please move or remove them before you merge.
607
- `),P+=`Aborting
608
- `,f){let O=await Lo(e,f);O.ok||(P+=O.stderr)}return{ok:!1,stdout:"",stderr:P,exitCode:1}}await be(e,g);let y=new Set(m.conflicts.map(P=>P.path)),k=new Set;for(let P of m.entries)P.stage>0&&k.add(P.path);let C=y.size>0;if(C){let P=[];for(let[O,E]of p){if(y.has(O)||k.has(O))continue;let I=w.get(O);P.push({path:O,mode:parseInt(E.mode,8),hash:E.hash,stage:0,stat:I?.stat??pe()})}for(let O of m.entries)O.stage>0&&P.push(O);P.sort((O,E)=>he(O.path,E.path)||O.stage-E.stage),await re(e,{version:2,entries:P})}else{let P=[...o.entries],O=new Set(P.map(E=>E.path));for(let[E,I]of p)h.has(E)||O.has(E)||P.push({path:E,mode:parseInt(I.mode,8),hash:I.hash,stage:0,stat:pe()});P.sort((E,I)=>he(E.path,I.path)||E.stage-I.stage),await re(e,{version:2,entries:P})}if(f){let P=await Lo(e,f);if(!P.ok)return{...P,messages:m.messages}}return{ok:!0,hasConflicts:C,messages:m.messages}}async function _o(e,t=0){let n=await Me(e,Ct);if(n.length===0)return`error: stash@{${t}} is not a valid reference`;let r=n.length-1-t;if(r<0||r>=n.length)return`error: stash@{${t}} is not a valid reference`;if(n.splice(r,1),n.length===0)await ie(e,Ct),await Zn(e,Ct);else{await Xt(e,Ct,n);let o=n[n.length-1];o&&await Y(e,Ct,o.newHash)}return null}async function zc(e){await ie(e,Ct),await Zn(e,Ct)}function Cs(e){if(e===void 0)return 0;let t=e.match(/^(?:stash@\{)?(\d+)\}?$/);if(t?.[1]!==void 0)return parseInt(t[1],10);let n=parseInt(e,10);return!Number.isNaN(n)&&n>=0?n:-1}async function Em(e,t){let n=t.oldHash?await fe(e,t.oldHash):"",r=t.newHash?await fe(e,t.newHash):"";return At({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode})}async function cn(e,t,n){return e?.hooks?e.hooks.emitPre("pre-stash",{action:t,ref:n}):null}async function fn(e,t,n){await e?.hooks?.emitPost("post-stash",{action:t,ok:n})}function Yc(e,t){let n=e.command("stash",{description:"Stash the changes in a dirty working directory away",options:{message:te.string().alias("m").describe("Stash message"),"include-untracked":A().alias("u").describe("Also stash untracked files")},transformArgs:r=>{if(r[0]!=="save")return r;let o=r.slice(1),s=[],a=[];for(let i of o)i.startsWith("-")?s.push(i):a.push(i);return a.length>0?[...s,"-m",a.join(" ")]:s},handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"push",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Vc(s,o.env,r.message,r["include-untracked"]);return await fn(t,"push",i.exitCode===0),i}});n.command("push",{description:"Save your local modifications to a new stash entry",options:{message:te.string().alias("m").describe("Stash message"),"include-untracked":A().alias("u").describe("Also stash untracked files")},handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"push",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Vc(s,o.env,r.message,r["include-untracked"]);return await fn(t,"push",i.exitCode===0),i}}),n.command("pop",{description:"Remove a single stash entry and apply it on top of the current working tree",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"pop",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await xm(s,r.stash);return await fn(t,"pop",i.exitCode===0),i}}),n.command("apply",{description:"Apply a stash entry on top of the current working tree",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"apply",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await km(s,r.stash);return await fn(t,"apply",i.exitCode===0),i}}),n.command("list",{description:"List the stash entries that you currently have",handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"list",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Cm(s);return await fn(t,"list",i.exitCode===0),i}}),n.command("drop",{description:"Remove a single stash entry from the list of stash entries",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"drop",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Pm(s,r.stash);return await fn(t,"drop",i.exitCode===0),i}}),n.command("show",{description:"Show the changes recorded in a stash entry as a diff",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"show",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Om(s,r.stash);return await fn(t,"show",i.exitCode===0),i}}),n.command("clear",{description:"Remove all the stash entries",handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await cn(t,"clear",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Rm(s);return await fn(t,"clear",i.exitCode===0),i}})}async function Vc(e,t,n,r){if(!await X(e))return j(`You do not have the initial commit yet
609
- `);let s=await U(e),a=Rt(s).sort();if(a.length>0)return{stdout:`${a.map(d=>`${d}: needs merge`).join(`
619
+ `),C+=`Aborting
620
+ `,f){let O=await No(e,f);O.ok||(C+=O.stderr)}return{ok:!1,stdout:"",stderr:C,exitCode:1}}await be(e,g);let E=new Set(m.conflicts.map(C=>C.path)),k=new Set;for(let C of m.entries)C.stage>0&&k.add(C.path);let P=E.size>0;if(P){let C=[];for(let[O,y]of p){if(E.has(O)||k.has(O))continue;let I=w.get(O);C.push({path:O,mode:parseInt(y.mode,8),hash:y.hash,stage:0,stat:I?.stat??pe()})}for(let O of m.entries)O.stage>0&&C.push(O);C.sort((O,y)=>he(O.path,y.path)||O.stage-y.stage),await re(e,{version:2,entries:C})}else{let C=[...o.entries],O=new Set(C.map(y=>y.path));for(let[y,I]of p)h.has(y)||O.has(y)||C.push({path:y,mode:parseInt(I.mode,8),hash:I.hash,stage:0,stat:pe()});C.sort((y,I)=>he(y.path,I.path)||y.stage-I.stage),await re(e,{version:2,entries:C})}if(f){let C=await No(e,f);if(!C.ok)return{...C,messages:m.messages}}return{ok:!0,hasConflicts:P,messages:m.messages}}async function Uo(e,t=0){let n=await Me(e,Ct);if(n.length===0)return`error: stash@{${t}} is not a valid reference`;let r=n.length-1-t;if(r<0||r>=n.length)return`error: stash@{${t}} is not a valid reference`;if(n.splice(r,1),n.length===0)await ae(e,Ct),await er(e,Ct);else{await Zt(e,Ct,n);let o=n[n.length-1];o&&await Y(e,Ct,o.newHash)}return null}async function Yc(e){await ae(e,Ct),await er(e,Ct)}function Is(e){if(e===void 0)return 0;let t=e.match(/^(?:stash@\{)?(\d+)\}?$/);if(t?.[1]!==void 0)return parseInt(t[1],10);let n=parseInt(e,10);return!Number.isNaN(n)&&n>=0?n:-1}async function km(e,t){let n=t.oldHash?await ie(e,t.oldHash):"",r=t.newHash?await ie(e,t.newHash):"";return At({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode})}async function dn(e,t,n){return e?.hooks?e.hooks.emitPre("pre-stash",{action:t,ref:n}):null}async function ln(e,t,n){await e?.hooks?.emitPost("post-stash",{action:t,ok:n})}function Zc(e,t){let n=e.command("stash",{description:"Stash the changes in a dirty working directory away",options:{message:te.string().alias("m").describe("Stash message"),"include-untracked":v().alias("u").describe("Also stash untracked files")},transformArgs:r=>{if(r[0]!=="save")return r;let o=r.slice(1),s=[],a=[];for(let i of o)i.startsWith("-")?s.push(i):a.push(i);return a.length>0?[...s,"-m",a.join(" ")]:s},handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"push",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Xc(s,o.env,r.message,r["include-untracked"]);return await ln(t,"push",i.exitCode===0),i}});n.command("push",{description:"Save your local modifications to a new stash entry",options:{message:te.string().alias("m").describe("Stash message"),"include-untracked":v().alias("u").describe("Also stash untracked files")},handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"push",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Xc(s,o.env,r.message,r["include-untracked"]);return await ln(t,"push",i.exitCode===0),i}}),n.command("pop",{description:"Remove a single stash entry and apply it on top of the current working tree",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"pop",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Cm(s,r.stash);return await ln(t,"pop",i.exitCode===0),i}}),n.command("apply",{description:"Apply a stash entry on top of the current working tree",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"apply",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Pm(s,r.stash);return await ln(t,"apply",i.exitCode===0),i}}),n.command("list",{description:"List the stash entries that you currently have",handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"list",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Om(s);return await ln(t,"list",i.exitCode===0),i}}),n.command("drop",{description:"Remove a single stash entry from the list of stash entries",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"drop",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Im(s,r.stash);return await ln(t,"drop",i.exitCode===0),i}}),n.command("show",{description:"Show the changes recorded in a stash entry as a diff",args:[W.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"show",r.stash??null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await Rm(s,r.stash);return await ln(t,"show",i.exitCode===0),i}}),n.command("clear",{description:"Remove all the stash entries",handler:async(r,o)=>{let s=await B(o.fs,o.cwd,t);if(S(s))return s;let a=await dn(t,"clear",null);if(a)return{stdout:"",stderr:a.message??"",exitCode:1};let i=await $m(s);return await ln(t,"clear",i.exitCode===0),i}})}async function Xc(e,t,n,r){if(!await X(e))return G(`You do not have the initial commit yet
621
+ `);let s=await U(e),a=It(s).sort();if(a.length>0)return{stdout:`${a.map(d=>`${d}: needs merge`).join(`
610
622
  `)}
611
623
  `,stderr:`error: could not write index
612
- `,exitCode:1};let i;try{i=await Kc(e,t,n,{includeUntracked:r})}catch(d){return T(d.message)}return i?{stdout:`Saved working directory and index state ${(await M(e,i)).message.trim()}
624
+ `,exitCode:1};let i;try{i=await Vc(e,t,n,{includeUntracked:r})}catch(d){return T(d.message)}return i?{stdout:`Saved working directory and index state ${(await j(e,i)).message.trim()}
613
625
  `,stderr:"",exitCode:0}:{stdout:`No local changes to save
614
- `,stderr:"",exitCode:0}}async function xm(e,t){let n=Cs(t);if(n<0)return j(`error: '${t}' is not a valid stash reference`);let r=await Fn(e,n);if(!r)return j(`error: stash@{${n}} is not a valid reference`);let o=await No(e,n);if(!o.ok){let f=o.messages?.length?`${o.messages.join(`
626
+ `,stderr:"",exitCode:0}}async function Cm(e,t){let n=Is(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Wn(e,n);if(!r)return G(`error: stash@{${n}} is not a valid reference`);let o=await Fo(e,n);if(!o.ok){let f=o.messages?.length?`${o.messages.join(`
615
627
  `)}
616
628
  `:"";if(o.stdout)return{stdout:`${f}${o.stdout}The stash entry is kept in case you need it again.
617
629
  `,stderr:o.stderr,exitCode:o.exitCode};let d=await Be(e);return{stdout:`${f}${d}The stash entry is kept in case you need it again.
618
630
  `,stderr:o.stderr,exitCode:o.exitCode}}if(o.hasConflicts){let f=o.messages.length>0?`${o.messages.join(`
619
631
  `)}
620
632
  `:"",d=await Be(e);return{stdout:`${f}${d}The stash entry is kept in case you need it again.
621
- `,stderr:"",exitCode:1}}let s=await _o(e,n);if(s)return j(s);let a=o.messages.length>0?`${o.messages.join(`
633
+ `,stderr:"",exitCode:1}}let s=await Uo(e,n);if(s)return G(s);let a=o.messages.length>0?`${o.messages.join(`
622
634
  `)}
623
635
  `:"",i=t?`stash@{${n}}`:`refs/stash@{${n}}`,c=await Be(e);return{stdout:`${a}${c}Dropped ${i} (${r})
624
- `,stderr:"",exitCode:0}}async function km(e,t){let n=Cs(t);if(n<0)return j(`error: '${t}' is not a valid stash reference`);let r=await No(e,n);if(!r.ok){let i=r.messages?.length?`${r.messages.join(`
636
+ `,stderr:"",exitCode:0}}async function Pm(e,t){let n=Is(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Fo(e,n);if(!r.ok){let i=r.messages?.length?`${r.messages.join(`
625
637
  `)}
626
638
  `:"",c=r.stdout;return c||(c=await Be(e)),{stdout:`${i}${c}`,stderr:r.stderr,exitCode:r.exitCode}}let o=r.messages.length>0?`${r.messages.join(`
627
639
  `)}
628
- `:"",s=await Be(e),a=r.hasConflicts?1:0;return{stdout:`${o}${s}`,stderr:"",exitCode:a}}async function Cm(e){let t=await qc(e);return t.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${t.map(r=>`stash@{${r.index}}: ${r.message}`).join(`
640
+ `:"",s=await Be(e),a=r.hasConflicts?1:0;return{stdout:`${o}${s}`,stderr:"",exitCode:a}}async function Om(e){let t=await zc(e);return t.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${t.map(r=>`stash@{${r.index}}: ${r.message}`).join(`
629
641
  `)}
630
- `,stderr:"",exitCode:0}}async function Pm(e,t){let n=Cs(t);if(n<0)return j(`error: '${t}' is not a valid stash reference`);let r=await Fn(e,n);if(!r)return j(`error: stash@{${n}} is not a valid reference`);let o=await _o(e,n);return o?j(o):{stdout:`Dropped ${t?`stash@{${n}}`:`refs/stash@{${n}}`} (${r})
631
- `,stderr:"",exitCode:0}}async function Om(e,t){let n=Cs(t);if(n<0)return j(`error: '${t}' is not a valid stash reference`);let r=await Fn(e,n);if(!r)return j(`error: stash@{${n}} is not a valid reference`);let o=await M(e,r),s=o.parents[0];if(!s)return j("error: invalid stash commit (no parent)");let a=await M(e,s),i=await Ae(e,a.tree,o.tree),c="";for(let f of i)c+=await Em(e,f);return{stdout:c,stderr:"",exitCode:0}}async function Rm(e){return await zc(e),{stdout:"",stderr:"",exitCode:0}}function Xc(e,t){e.command("status",{description:"Show the working tree status",options:{short:A().alias("s").describe("Give the output in the short-format"),porcelain:A().describe("Give the output in a machine-parseable format"),branch:A().alias("b").describe("Show the branch in short-format output")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(!n.short&&!n.porcelain)return{stdout:await Be(s),stderr:"",exitCode:0};let a=await J(s),i=await X(s),c;a&&a.type==="symbolic"?c=de(a.target):c="HEAD detached";let f=await U(s),d=lo(f),u=await fo(s,i,f,d),l=await lt(s,f),m=[],h=[];for(let x of l)x.status==="untracked"?h.push(x.path):m.push({path:x.path,status:x.status});m.sort((x,b)=>he(x.path,b.path));let p=new Set(f.entries.map(x=>x.path)),g=uo(h,p);return{stdout:Hm(c,u,m,d,g,n.branch),stderr:"",exitCode:0}}})}var Im={"both modified":"UU","both added":"AA","both deleted":"DD","deleted by us":"DU","deleted by them":"UD","added by us":"AU","added by them":"UA",unmerged:"UU"};function $m(e){switch(e){case"new file":return"A";case"modified":return"M";case"deleted":return"D";case"renamed":return"R";default:return" "}}function Tm(e){switch(e){case"modified":return"M";case"deleted":return"D";default:return" "}}function Hm(e,t,n,r,o,s){let a=[];s&&(e==="HEAD detached"?a.push("## HEAD (no branch)"):a.push(`## ${e}`));let i=new Map(r.map(l=>[l.path,l])),c=new Map(t.map(l=>[l.path,l])),f=new Map(n.map(l=>[l.path,l])),d=new Set;for(let l of r)d.add(l.path);for(let l of t)d.add(l.path);for(let l of n)d.add(l.path);let u=[...d].sort();for(let l of u){let m=i.get(l);if(m){let x=Im[m.status]??"UU";a.push(`${x} ${pr(l)}`);continue}let h=c.get(l),p=f.get(l),g=h?$m(h.status):" ",w=p?Tm(p.status):" ";if(h?.status==="renamed"&&h.displayPath){let x=h.displayPath.indexOf(" -> "),b=h.displayPath.slice(0,x),y=h.displayPath.slice(x+4);a.push(`${g}${w} ${pr(b)} -> ${pr(y)}`)}else a.push(`${g}${w} ${pr(l)}`)}for(let l of o)a.push(`?? ${pr(l)}`);return a.length===0?"":`${a.join(`
642
+ `,stderr:"",exitCode:0}}async function Im(e,t){let n=Is(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Wn(e,n);if(!r)return G(`error: stash@{${n}} is not a valid reference`);let o=await Uo(e,n);return o?G(o):{stdout:`Dropped ${t?`stash@{${n}}`:`refs/stash@{${n}}`} (${r})
643
+ `,stderr:"",exitCode:0}}async function Rm(e,t){let n=Is(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Wn(e,n);if(!r)return G(`error: stash@{${n}} is not a valid reference`);let o=await j(e,r),s=o.parents[0];if(!s)return G("error: invalid stash commit (no parent)");let a=await j(e,s),i=await Ae(e,a.tree,o.tree),c="";for(let f of i)c+=await km(e,f);return{stdout:c,stderr:"",exitCode:0}}async function $m(e){return await Yc(e),{stdout:"",stderr:"",exitCode:0}}function Jc(e,t){e.command("status",{description:"Show the working tree status",options:{short:v().alias("s").describe("Give the output in the short-format"),porcelain:v().describe("Give the output in a machine-parseable format"),branch:v().alias("b").describe("Show the branch in short-format output")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(!n.short&&!n.porcelain)return{stdout:await Be(s),stderr:"",exitCode:0};let a=await J(s),i=await X(s),c;a&&a.type==="symbolic"?c=de(a.target):c="HEAD detached";let f=await U(s),d=mo(f),u=await uo(s,i,f,d),l=await ut(s,f),m=[],h=[];for(let x of l)x.status==="untracked"?h.push(x.path):m.push({path:x.path,status:x.status});m.sort((x,b)=>he(x.path,b.path));let p=new Set(f.entries.map(x=>x.path)),g=ho(h,p);return{stdout:vm(c,u,m,d,g,n.branch),stderr:"",exitCode:0}}})}var Tm={"both modified":"UU","both added":"AA","both deleted":"DD","deleted by us":"DU","deleted by them":"UD","added by us":"AU","added by them":"UA",unmerged:"UU"};function Hm(e){switch(e){case"new file":return"A";case"modified":return"M";case"deleted":return"D";case"renamed":return"R";default:return" "}}function Am(e){switch(e){case"modified":return"M";case"deleted":return"D";default:return" "}}function vm(e,t,n,r,o,s){let a=[];s&&(e==="HEAD detached"?a.push("## HEAD (no branch)"):a.push(`## ${e}`));let i=new Map(r.map(l=>[l.path,l])),c=new Map(t.map(l=>[l.path,l])),f=new Map(n.map(l=>[l.path,l])),d=new Set;for(let l of r)d.add(l.path);for(let l of t)d.add(l.path);for(let l of n)d.add(l.path);let u=[...d].sort();for(let l of u){let m=i.get(l);if(m){let x=Tm[m.status]??"UU";a.push(`${x} ${wr(l)}`);continue}let h=c.get(l),p=f.get(l),g=h?Hm(h.status):" ",w=p?Am(p.status):" ";if(h?.status==="renamed"&&h.displayPath){let x=h.displayPath.indexOf(" -> "),b=h.displayPath.slice(0,x),E=h.displayPath.slice(x+4);a.push(`${g}${w} ${wr(b)} -> ${wr(E)}`)}else a.push(`${g}${w} ${wr(l)}`)}for(let l of o)a.push(`?? ${wr(l)}`);return a.length===0?"":`${a.join(`
632
644
  `)}
633
- `}function pr(e){return!/[ \t"\\]/.test(e)&&!/[^\x20-\x7E]/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\n/g,"\\n")}"`}function Am(e,t){return e?.type==="symbolic"?e.target.replace(/^refs\/heads\//,""):t??Z}function Jc(e,t){e.command("switch",{description:"Switch branches",args:[W.string().name("branch-or-start-point").describe("Branch to switch to, or start-point for -c/-C").optional()],options:{create:te.string().alias("c").describe("Create and switch to a new branch"),forceCreate:te.string().alias("C").describe("Create/reset and switch to a branch"),detach:A().alias("d").describe("Detach HEAD at named commit"),orphan:te.string().describe("Create a new orphan branch"),guess:A().default(!0).describe("Guess branch from remote tracking")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n["branch-or-start-point"];if(n.orphan)return n.create||n.forceCreate?T("--orphan and -c/-C are incompatible"):n.detach?T("--orphan and --detach are incompatible"):Mm(a,n.orphan,r.env,t);if(n.detach){if(n.create||n.forceCreate)return T("--detach and -c/-C are incompatible");let d=i??"HEAD",u=await ye(a,d,`invalid reference: ${d}`);return S(u)?u:Dm(a,d,u.hash,r.env,t)}if(n.create||n.forceCreate){let d=n.create||n.forceCreate,u=i??(o.passthrough.length>0?o.passthrough[0]:void 0);return Zc(a,d,!!n.forceCreate,u,r.env,t)}if(!i)return T("missing branch or commit argument");if(i==="-")return vm(a,r.env,t);let c=`refs/heads/${i}`,f=await F(a,c);if(f)return Qc(a,i,c,f,r.env,t);if(n.guess!==!1){let d=await Sm(a,i);if(d)return Zc(a,i,!1,d.startPoint,r.env,t,d.trackingRef)}return T(`invalid reference: ${i}`)}})}async function gr(e){return await qe(e,"CHERRY_PICK_HEAD")?T(`cannot switch branch while cherry-picking
645
+ `}function wr(e){return!/[ \t"\\]/.test(e)&&!/[^\x20-\x7E]/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\n/g,"\\n")}"`}function Sm(e,t){return e?.type==="symbolic"?e.target.replace(/^refs\/heads\//,""):t??Z}function ef(e,t){e.command("switch",{description:"Switch branches",args:[W.string().name("branch-or-start-point").describe("Branch to switch to, or start-point for -c/-C").optional()],options:{create:te.string().alias("c").describe("Create and switch to a new branch"),forceCreate:te.string().alias("C").describe("Create/reset and switch to a branch"),detach:v().alias("d").describe("Detach HEAD at named commit"),orphan:te.string().describe("Create a new orphan branch"),guess:v().default(!0).describe("Guess branch from remote tracking")},handler:async(n,r,o)=>{let s=await B(r.fs,r.cwd,t);if(S(s))return s;let a=s,i=n["branch-or-start-point"];if(n.orphan)return n.create||n.forceCreate?T("--orphan and -c/-C are incompatible"):n.detach?T("--orphan and --detach are incompatible"):Lm(a,n.orphan,r.env,t);if(n.detach){if(n.create||n.forceCreate)return T("--detach and -c/-C are incompatible");let d=i??"HEAD",u=await ye(a,d,`invalid reference: ${d}`);return S(u)?u:jm(a,d,u.hash,r.env,t)}if(n.create||n.forceCreate){let d=n.create||n.forceCreate,u=i??(o.passthrough.length>0?o.passthrough[0]:void 0);return Qc(a,d,!!n.forceCreate,u,r.env,t)}if(!i)return T("missing branch or commit argument");if(i==="-")return Dm(a,r.env,t);let c=`refs/heads/${i}`,f=await F(a,c);if(f)return tf(a,i,c,f,r.env,t);if(n.guess!==!1){let d=await Mm(a,i);if(d)return Qc(a,i,!1,d.startPoint,r.env,t,d.trackingRef)}return T(`invalid reference: ${i}`)}})}async function br(e){return await qe(e,"CHERRY_PICK_HEAD")?T(`cannot switch branch while cherry-picking
634
646
  Consider "git cherry-pick --quit" or "git worktree add".`):await qe(e,"MERGE_HEAD")?T(`cannot switch branch while merging
635
647
  Consider "git merge --quit" or "git worktree add".`):await qe(e,"REVERT_HEAD")?T(`cannot switch branch while reverting
636
- Consider "git revert --quit" or "git worktree add".`):await gt(e)?T(`cannot switch branch while rebasing
637
- Consider "git rebase --quit" or "git worktree add".`):null}async function vm(e,t,n){let r=await gr(e);if(r)return r;let o=await ns(e);return o?Qc(e,o.name,o.refName,o.hash,t,n):T("no previous branch")}async function Sm(e,t){let n=await le(e,"refs/remotes"),r=[];for(let s of n){let a=s.name.replace(/^refs\/remotes\//,"").split("/"),i=a[0];a.length>=2&&i&&a.slice(1).join("/")===t&&r.push({remote:i,ref:s.name})}let o=r.length===1?r[0]:void 0;return o?{startPoint:o.ref,trackingRef:o.ref}:null}async function Zc(e,t,n,r,o,s,a){let i=`refs/heads/${t}`,c=await F(e,i);if(c&&!n)return T(`a branch named '${t}' already exists`);let f;if(r){let E=await ye(e,r,`invalid reference: ${r}`);if(S(E))return E;f=E.hash}else{let E=await X(e);if(!E){let I=await J(e),H=I?.type==="symbolic"?I.target.replace(/^refs\/heads\//,""):"";n&&c&&await ie(e,i),await $e(e,"HEAD",i),await tt(e);let _=await Bt(e);return await ee(e,o,"HEAD",null,Z,`checkout: moving from ${H} to ${t}`),{stdout:"",stderr:`Switched to a new branch '${t}'
638
- ${_}`,exitCode:0}}f=E}let d=await gr(e);if(d)return d;let u=await X(e),l=await U(e);if(r){let E=on(l);if(E)return E}let m=await M(e,f);if(u&&u!==f){let E=await M(e,u);if(E.tree!==m.tree){let I=await Qt(e,E.tree,m.tree,l);if(!I.success)return I.errorOutput??j("error: checkout would overwrite local changes");l={version:2,entries:I.newEntries},await re(e,l),await be(e,I.worktreeOps)}}let h=await J(e),p="";h?.type==="direct"&&u&&(p=await os(e,u,f));let g=Am(h,u);await Y(e,i,f),await $e(e,"HEAD",i),await tt(e);let w=await Bt(e),x=r??"HEAD";n&&c?c!==f&&await ee(e,o,i,c,f,`branch: Reset to ${x}`):await ee(e,o,i,null,f,`branch: Created from ${x}`),await ee(e,o,"HEAD",u,f,`checkout: moving from ${g} to ${t}`);let b=a?.replace(/^refs\/remotes\//,"").split("/");if(b){let E=b[0]??"",I=`refs/heads/${b.slice(1).join("/")}`,H=await ae(e);H[`branch "${t}"`]={...H[`branch "${t}"`],remote:E,merge:I},await Ge(e,H)}await s?.hooks?.emitPost("post-checkout",{prevHead:u,newHead:f,isBranchCheckout:!0});let y=n&&c?`Switched to and reset branch '${t}'
648
+ Consider "git revert --quit" or "git worktree add".`):await bt(e)?T(`cannot switch branch while rebasing
649
+ Consider "git rebase --quit" or "git worktree add".`):null}async function Dm(e,t,n){let r=await br(e);if(r)return r;let o=await os(e);return o?tf(e,o.name,o.refName,o.hash,t,n):T("no previous branch")}async function Mm(e,t){let n=await le(e,"refs/remotes"),r=[];for(let s of n){let a=s.name.replace(/^refs\/remotes\//,"").split("/"),i=a[0];a.length>=2&&i&&a.slice(1).join("/")===t&&r.push({remote:i,ref:s.name})}let o=r.length===1?r[0]:void 0;return o?{startPoint:o.ref,trackingRef:o.ref}:null}async function Qc(e,t,n,r,o,s,a){let i=`refs/heads/${t}`,c=await F(e,i);if(c&&!n)return T(`a branch named '${t}' already exists`);let f;if(r){let y=await ye(e,r,`invalid reference: ${r}`);if(S(y))return y;f=y.hash}else{let y=await X(e);if(!y){let I=await J(e),A=I?.type==="symbolic"?I.target.replace(/^refs\/heads\//,""):"";n&&c&&await ae(e,i),await $e(e,"HEAD",i),await tt(e);let L=await Wt(e);return await ee(e,o,"HEAD",null,Z,`checkout: moving from ${A} to ${t}`),{stdout:"",stderr:`Switched to a new branch '${t}'
650
+ ${L}`,exitCode:0}}f=y}let d=await br(e);if(d)return d;let u=await X(e),l=await U(e);if(r){let y=cn(l);if(y)return y}let m=await j(e,f);if(u&&u!==f){let y=await j(e,u);if(y.tree!==m.tree){let I=await en(e,y.tree,m.tree,l);if(!I.success)return I.errorOutput??G("error: checkout would overwrite local changes");l={version:2,entries:I.newEntries},await re(e,l),await be(e,I.worktreeOps)}}let h=await J(e),p="";h?.type==="direct"&&u&&(p=await cs(e,u,f));let g=Sm(h,u);await Y(e,i,f),await $e(e,"HEAD",i),await tt(e);let w=await Wt(e),x=r??"HEAD";n&&c?c!==f&&await ee(e,o,i,c,f,`branch: Reset to ${x}`):await ee(e,o,i,null,f,`branch: Created from ${x}`),await ee(e,o,"HEAD",u,f,`checkout: moving from ${g} to ${t}`);let b=a?.replace(/^refs\/remotes\//,"").split("/");if(b){let y=b[0]??"",I=`refs/heads/${b.slice(1).join("/")}`,A=await ce(e);A[`branch "${t}"`]={...A[`branch "${t}"`],remote:y,merge:I},await Ge(e,A)}await s?.hooks?.emitPost("post-checkout",{prevHead:u,newHead:f,isBranchCheckout:!0});let E=n&&c?`Switched to and reset branch '${t}'
639
651
  `:`Switched to a new branch '${t}'
640
- `,k=p+y+w;if(b){let E=b.slice(1).join("/");k+=`branch '${t}' set up to track '${b[0]}/${E}'.
641
- `}let C="";r&&(C=await En(e,m.tree,l));let P=await ae(e),O=await Ut(e,P,t);return O&&(C+=yn(O)),{stdout:C,stderr:k,exitCode:0}}async function Qc(e,t,n,r,o,s){let a=await gr(e);return a||is(e,t,n,r,o,s)}async function Dm(e,t,n,r,o){let s=await gr(e);return s||as(e,n,r,o)}async function Mm(e,t,n,r){let o=await gr(e);if(o)return o;let s=`refs/heads/${t}`;if(await F(e,s))return T(`a branch named '${t}' already exists`);let i=await U(e),c=on(i);if(c)return c;let f=await X(e),d=await J(e),u="";if(d?.type==="direct"&&f&&(u=await mo(e,f)),e.workTree){let m=f?(await M(e,f)).tree:null,h=await ke(e,[]),p=await Qt(e,m,h,i);if(!p.success)return p.errorOutput??j("error: checkout would overwrite local changes");await be(e,p.worktreeOps)}await re(e,ni()),await $e(e,"HEAD",s),await tt(e);let l=await Bt(e);return await r?.hooks?.emitPost("post-checkout",{prevHead:f,newHead:Z,isBranchCheckout:!0}),{stdout:"",stderr:`${u}Switched to a new branch '${t}'
642
- ${l}`,exitCode:0}}function tf(e,t){e.command("tag",{description:"Create, list, or delete tags",args:[W.string().name("name").describe("Tag name to create or delete").optional(),W.string().name("commit").describe("Commit to tag (defaults to HEAD)").optional()],options:{annotate:A().alias("a").describe("Make an annotated tag object"),message:te.string().alias("m").describe("Tag message"),delete:A().alias("d").describe("Delete a tag"),force:A().alias("f").describe("Replace an existing tag"),list:te.string().alias("l").describe("List tags matching pattern")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.delete){if(!n.name)return T("tag name required");let a=`refs/tags/${n.name}`,i=await F(s,a);return i?(await ie(s,a),{stdout:`Deleted tag '${n.name}' (was ${K(i)})
643
- `,stderr:"",exitCode:0}):j(`error: tag '${n.name}' not found.
644
- `)}if(n.list!==void 0)return ef(s,n.list||void 0);if(n.name){let a=n.commit,i;if(a){let u=await An(s,a,`Failed to resolve '${a}' as a valid ref.`);if(S(u))return u;i=u}else if(i=await X(s),!i)return T("Failed to resolve 'HEAD' as a valid ref.");let c=`refs/tags/${n.name}`;if(await F(s,c)&&!n.force)return T(`tag '${n.name}' already exists`);if(n.annotate||n.message){if(!n.message)return T("no tag message specified (use -m)");let u=await Le(s,r.env);if(S(u))return u;let l=mt(n.message),m=yi({type:"tag",object:i,objectType:"commit",name:n.name,tagger:u,message:l}),h=await we(s,"tag",m);await Y(s,c,h)}else await Y(s,c,i);return{stdout:"",stderr:"",exitCode:0}}return ef(s)}})}async function ef(e,t){let n=await le(e,"refs/tags");if(n.length===0)return{stdout:"",stderr:"",exitCode:0};let r=n.map(o=>o.name.replace("refs/tags/",""));return t&&(r=r.filter(o=>mn(t,o,0)===0)),r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${r.join(`
645
- `)}
646
- `,stderr:"",exitCode:0}}var jm={init:e=>pc(e),clone:(e,t)=>Wa(e,t),fetch:(e,t)=>oc(e,t),pull:(e,t)=>Rc(e,t),push:(e,t)=>Ic(e,t),add:(e,t)=>Bi(e,t),blame:(e,t)=>ra(e,t),commit:(e,t)=>qa(e,t),status:(e,t)=>Xc(e,t),log:(e,t)=>xc(e,t),branch:(e,t)=>wa(e,t),tag:(e,t)=>tf(e,t),checkout:(e,t)=>ya(e,t),diff:(e,t)=>tc(e,t),reset:(e,t)=>Mc(e,t),merge:(e,t)=>Pc(e,t),"cherry-pick":(e,t)=>Sa(e,t),revert:(e,t)=>Nc(e,t),rebase:(e,t)=>Ac(e,t),mv:(e,t)=>Oc(e,t),rm:(e,t)=>Fc(e,t),remote:(e,t)=>Sc(e,t),config:(e,t)=>Ya(e,t),show:(e,t)=>Uc(e,t),stash:(e,t)=>Yc(e,t),"rev-parse":(e,t)=>Gc(e,t),"ls-files":(e,t)=>Cc(e,t),clean:(e,t)=>Da(e,t),switch:(e,t)=>Jc(e,t),restore:(e,t)=>Lc(e,t),reflog:(e,t)=>vc(e,t),repack:(e,t)=>uc(e,t),gc:(e,t)=>mc(e,t)};function nf(e){let t=Hs("git",{description:"Git command"});for(let n of Object.values(jm))n(t,e);return t}var Ps=class{listeners=new Map;onError=()=>{};on(t,n){let r=t,o=this.listeners.get(r);o||(o=[],this.listeners.set(r,o));let s=n;return o.push(s),()=>{let a=this.listeners.get(r);if(a){let i=a.indexOf(s);i!==-1&&a.splice(i,1)}}}async emitPre(t,n){let r=this.listeners.get(t);if(!r||r.length===0)return null;for(let o of r){let s=await o(n);if(s&&typeof s=="object"&&"abort"in s)return s}return null}async emitPost(t,n){let r=this.listeners.get(t);if(!(!r||r.length===0))for(let o of r)await o(n)}emit(t,n){let r=this.listeners.get(t);if(!(!r||r.length===0))for(let o of r)try{let s=o(n);s&&typeof s=="object"&&"then"in s&&s.catch(this.onError)}catch(s){this.onError(s)}}};var Os=class{name="git";hooks;middlewares=[];extensions;inner;constructor(t){this.hooks=new Ps;let n=t?.network;if(this.extensions={hooks:this.hooks,credentialProvider:t?.credentials,identityOverride:t?.identity,fetchFn:typeof n=="object"?n.fetch:void 0,networkPolicy:n},t?.disabled?.length){let r=new Set(t.disabled);this.use(async(o,s)=>o.command&&r.has(o.command)?{stdout:"",stderr:`git: '${o.command}' is not available in this environment
647
- `,exitCode:1}:s())}this.inner=nf(this.extensions).toCommand()}on(t,n){return this.hooks.on(t,n)}use(t){return this.middlewares.push(t),()=>{let n=this.middlewares.indexOf(t);n!==-1&&this.middlewares.splice(n,1)}}execute=async(t,n)=>{let r={command:t[0],rawArgs:t.slice(1),fs:n.fs,cwd:n.cwd,env:n.env,stdin:n.stdin,exec:n.exec,signal:n.signal};return this.runMiddleware(r,()=>this.inner.execute(t,n))};async runMiddleware(t,n){if(this.middlewares.length===0)return n();let r=0,o=async()=>{if(r>=this.middlewares.length)return n();let s=this.middlewares[r++];return s(t,o)};return o()}};function Lm(e){return new Os(e)}export{Os as Git,Lm as createGit};
652
+ `,k=p+E+w;if(b){let y=b.slice(1).join("/");k+=`branch '${t}' set up to track '${b[0]}/${y}'.
653
+ `}let P="";r&&(P=await kn(e,m.tree,l));let C=await ce(e),O=await Bt(e,C,t);return O&&(P+=xn(O)),{stdout:P,stderr:k,exitCode:0}}async function tf(e,t,n,r,o,s){let a=await br(e);return a||fs(e,t,n,r,o,s)}async function jm(e,t,n,r,o){let s=await br(e);return s||ds(e,n,r,o)}async function Lm(e,t,n,r){let o=await br(e);if(o)return o;let s=`refs/heads/${t}`;if(await F(e,s))return T(`a branch named '${t}' already exists`);let i=await U(e),c=cn(i);if(c)return c;let f=await X(e),d=await J(e),u="";if(d?.type==="direct"&&f&&(u=await po(e,f)),e.workTree){let m=f?(await j(e,f)).tree:null,h=await ke(e,[]),p=await en(e,m,h,i);if(!p.success)return p.errorOutput??G("error: checkout would overwrite local changes");await be(e,p.worktreeOps)}await re(e,si()),await $e(e,"HEAD",s),await tt(e);let l=await Wt(e);return await r?.hooks?.emitPost("post-checkout",{prevHead:f,newHead:Z,isBranchCheckout:!0}),{stdout:"",stderr:`${u}Switched to a new branch '${t}'
654
+ ${l}`,exitCode:0}}function rf(e,t){e.command("tag",{description:"Create, list, or delete tags",args:[W.string().name("name").describe("Tag name to create or delete").optional(),W.string().name("commit").describe("Commit to tag (defaults to HEAD)").optional()],options:{annotate:v().alias("a").describe("Make an annotated tag object"),message:te.string().alias("m").describe("Tag message"),delete:v().alias("d").describe("Delete a tag"),force:v().alias("f").describe("Replace an existing tag"),list:te.string().alias("l").describe("List tags matching pattern")},handler:async(n,r)=>{let o=await B(r.fs,r.cwd,t);if(S(o))return o;let s=o;if(n.delete){if(!n.name)return T("tag name required");let a=`refs/tags/${n.name}`,i=await F(s,a);return i?(await ae(s,a),{stdout:`Deleted tag '${n.name}' (was ${K(i)})
655
+ `,stderr:"",exitCode:0}):G(`error: tag '${n.name}' not found.
656
+ `)}if(n.list!==void 0)return nf(s,n.list||void 0);if(n.name){let a=n.commit,i;if(a){let u=await Sn(s,a,`Failed to resolve '${a}' as a valid ref.`);if(S(u))return u;i=u}else if(i=await X(s),!i)return T("Failed to resolve 'HEAD' as a valid ref.");let c=`refs/tags/${n.name}`;if(await F(s,c)&&!n.force)return T(`tag '${n.name}' already exists`);if(n.annotate||n.message){if(!n.message)return T("no tag message specified (use -m)");let u=await Le(s,r.env);if(S(u))return u;let l=ht(n.message),m=xi({type:"tag",object:i,objectType:"commit",name:n.name,tagger:u,message:l}),h=await we(s,"tag",m);await Y(s,c,h)}else await Y(s,c,i);return{stdout:"",stderr:"",exitCode:0}}return nf(s)}})}async function nf(e,t){let n=await le(e,"refs/tags");if(n.length===0)return{stdout:"",stderr:"",exitCode:0};let r=n.map(o=>o.name.replace("refs/tags/",""));return t&&(r=r.filter(o=>pn(t,o,0)===0)),r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${r.join(`
657
+ `)}
658
+ `,stderr:"",exitCode:0}}var Gm={init:e=>wc(e),clone:(e,t)=>Ka(e,t),fetch:(e,t)=>ac(e,t),pull:(e,t)=>$c(e,t),push:(e,t)=>Tc(e,t),add:(e,t)=>Wi(e,t),blame:(e,t)=>oa(e,t),commit:(e,t)=>za(e,t),status:(e,t)=>Jc(e,t),log:(e,t)=>Cc(e,t),branch:(e,t)=>ya(e,t),tag:(e,t)=>rf(e,t),checkout:(e,t)=>xa(e,t),diff:(e,t)=>rc(e,t),reset:(e,t)=>Lc(e,t),merge:(e,t)=>Ic(e,t),"cherry-pick":(e,t)=>Ma(e,t),revert:(e,t)=>Fc(e,t),rebase:(e,t)=>Sc(e,t),mv:(e,t)=>Rc(e,t),rm:(e,t)=>Bc(e,t),remote:(e,t)=>Mc(e,t),config:(e,t)=>Za(e,t),show:(e,t)=>Wc(e,t),stash:(e,t)=>Zc(e,t),"rev-parse":(e,t)=>_c(e,t),"ls-files":(e,t)=>Oc(e,t),clean:(e,t)=>ja(e,t),switch:(e,t)=>ef(e,t),restore:(e,t)=>Nc(e,t),reflog:(e,t)=>Dc(e,t),repack:(e,t)=>hc(e,t),gc:(e,t)=>pc(e,t)};function sf(e){let t=Ss("git",{description:"Git command"});for(let n of Object.values(Gm))n(t,e);return t}var Rs=class{listeners=new Map;onError=()=>{};on(t,n){let r=t,o=this.listeners.get(r);o||(o=[],this.listeners.set(r,o));let s=n;return o.push(s),()=>{let a=this.listeners.get(r);if(a){let i=a.indexOf(s);i!==-1&&a.splice(i,1)}}}async emitPre(t,n){let r=this.listeners.get(t);if(!r||r.length===0)return null;for(let o of r){let s=await o(n);if(s&&typeof s=="object"&&"abort"in s)return s}return null}async emitPost(t,n){let r=this.listeners.get(t);if(!(!r||r.length===0))for(let o of r)await o(n)}emit(t,n){let r=this.listeners.get(t);if(!(!r||r.length===0))for(let o of r)try{let s=o(n);s&&typeof s=="object"&&"then"in s&&s.catch(this.onError)}catch(s){this.onError(s)}}};var $s=class{name="git";hooks;middlewares=[];extensions;inner;constructor(t){this.hooks=new Rs;let n=t?.network;if(this.extensions={hooks:this.hooks,credentialProvider:t?.credentials,identityOverride:t?.identity,fetchFn:typeof n=="object"?n.fetch:void 0,networkPolicy:n},t?.disabled?.length){let r=new Set(t.disabled);this.use(async(o,s)=>o.command&&r.has(o.command)?{stdout:"",stderr:`git: '${o.command}' is not available in this environment
659
+ `,exitCode:1}:s())}this.inner=sf(this.extensions).toCommand()}on(t,n){return this.hooks.on(t,n)}use(t){return this.middlewares.push(t),()=>{let n=this.middlewares.indexOf(t);n!==-1&&this.middlewares.splice(n,1)}}execute=async(t,n)=>{let r={command:t[0],rawArgs:t.slice(1),fs:n.fs,cwd:n.cwd,env:n.env,stdin:n.stdin,exec:n.exec,signal:n.signal};return this.runMiddleware(r,()=>this.inner.execute(t,n))};async runMiddleware(t,n){if(this.middlewares.length===0)return n();let r=0,o=async()=>{if(r>=this.middlewares.length)return n();let s=this.middlewares[r++];return s(t,o)};return o()}};function Nm(e){return new $s(e)}export{$s as Git,Nm as createGit};