@scolladon/tsgit 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +12 -0
  2. package/dist/cjs/adapters/browser/index.cjs +1 -2
  3. package/dist/cjs/adapters/memory/index.cjs +1 -2
  4. package/dist/cjs/adapters/node/index.cjs +1 -2
  5. package/dist/cjs/chunks/{adapter-detect-D7DFJtuk.cjs → adapter-detect-DW9fsw9d.cjs} +1 -2
  6. package/dist/cjs/chunks/browser-http-transport-DGwW5YL7.cjs +1 -0
  7. package/dist/cjs/chunks/context-BcoAzPuU.cjs +0 -1
  8. package/dist/cjs/chunks/error-CfLWDui_.cjs +1 -0
  9. package/dist/cjs/chunks/index-Cy44GVR6.cjs +1 -0
  10. package/dist/cjs/chunks/inflate-CmCtM4-w.cjs +1 -0
  11. package/dist/cjs/chunks/lru-cache-1OU7JhD8.cjs +0 -1
  12. package/dist/cjs/chunks/memory-http-transport-CGriODcQ.cjs +1 -0
  13. package/dist/cjs/chunks/node-ssh-transport-PFu3ijfp.cjs +1 -0
  14. package/dist/cjs/chunks/{progress-CjhUeyxd.cjs → progress-D8Dqbftk.cjs} +1 -2
  15. package/dist/cjs/chunks/readable-stream-MTA6D0Zh.cjs +0 -1
  16. package/dist/cjs/chunks/{repository-DJNNrfQr.cjs → repository-Ci-BBxk0.cjs} +1 -2
  17. package/dist/cjs/chunks/write-sparse-checkout-C1dsHCAD.cjs +1 -0
  18. package/dist/cjs/commands/index.cjs +1 -2
  19. package/dist/cjs/index.browser.cjs +1 -2
  20. package/dist/cjs/index.cjs +1 -2
  21. package/dist/cjs/index.default.cjs +1 -2
  22. package/dist/cjs/index.node.cjs +1 -2
  23. package/dist/cjs/operators/index.cjs +0 -1
  24. package/dist/cjs/primitives/index.cjs +1 -2
  25. package/dist/cjs/transport/index.cjs +0 -1
  26. package/dist/esm/adapters/browser/index.js +1 -2
  27. package/dist/esm/adapters/memory/index.js +1 -2
  28. package/dist/esm/adapters/node/index.js +1 -2
  29. package/dist/esm/chunks/{adapter-detect-CTTG6hpk.js → adapter-detect-BkCMnjrI.js} +1 -2
  30. package/dist/esm/chunks/browser-http-transport-CSxAte5h.js +1 -0
  31. package/dist/esm/chunks/context-CumKOV7K.js +0 -1
  32. package/dist/esm/chunks/error-BotOd-nD.js +1 -0
  33. package/dist/esm/chunks/index-DsvINN8n.js +1 -0
  34. package/dist/esm/chunks/inflate-BCIXqeeE.js +1 -0
  35. package/dist/esm/chunks/lru-cache-Cy7C7Lx2.js +0 -1
  36. package/dist/esm/chunks/memory-http-transport-caqmMGR1.js +1 -0
  37. package/dist/esm/chunks/node-ssh-transport-BgSv2IhT.js +1 -0
  38. package/dist/esm/chunks/{progress-CLPpgZJ6.js → progress-B_AJnOHx.js} +1 -2
  39. package/dist/esm/chunks/readable-stream-CGuf8k1J.js +0 -1
  40. package/dist/esm/chunks/repository-DyxknzvE.js +1 -0
  41. package/dist/esm/chunks/write-sparse-checkout-BwHbNKNS.js +1 -0
  42. package/dist/esm/commands/index.js +1 -2
  43. package/dist/esm/index.browser.js +1 -2
  44. package/dist/esm/index.default.js +1 -2
  45. package/dist/esm/index.js +1 -2
  46. package/dist/esm/index.node.js +1 -2
  47. package/dist/esm/operators/index.js +0 -1
  48. package/dist/esm/primitives/index.js +1 -2
  49. package/dist/esm/transport/index.js +0 -1
  50. package/dist/types/adapters/browser/index.d.cts +1 -1
  51. package/dist/types/adapters/browser/index.d.ts +1 -1
  52. package/dist/types/adapters/memory/index.d.cts +1 -1
  53. package/dist/types/adapters/memory/index.d.ts +1 -1
  54. package/dist/types/adapters/node/index.d.cts +94 -36
  55. package/dist/types/adapters/node/index.d.ts +94 -36
  56. package/dist/types/chunks/{context-D_A7-uau.d.cts → context-CF1YF2S8.d.cts} +48 -2
  57. package/dist/types/chunks/{context-CNtbFlwI.d.ts → context-sIhhtk2u.d.ts} +48 -2
  58. package/dist/types/chunks/{index-E_KapqW9.d.ts → index-B5Dps3fg.d.ts} +32 -3
  59. package/dist/types/chunks/{index-BJDekgCP.d.ts → index-B_A8VLaf.d.ts} +111 -12
  60. package/dist/types/chunks/{index-wwZiot4c.d.cts → index-Dfh8cvEs.d.cts} +32 -3
  61. package/dist/types/chunks/{index-CMLLVz9B.d.cts → index-Dqxddhav.d.cts} +111 -12
  62. package/dist/types/chunks/{progress-hcn9r2H3.d.ts → progress-BjAKfkam.d.ts} +51 -5
  63. package/dist/types/chunks/{progress-Cp-huK45.d.cts → progress-Ldnfb8st.d.cts} +51 -5
  64. package/dist/types/chunks/{reflog-entry-BGJr9VfU.d.cts → reflog-entry-Cqh3QrPH.d.ts} +12 -3
  65. package/dist/types/chunks/{reflog-entry-DecZqJna.d.ts → reflog-entry-Dy-O27Dd.d.cts} +12 -3
  66. package/dist/types/chunks/{repository-Dxhwpzd6.d.ts → repository-D8QBTkEz.d.ts} +5 -5
  67. package/dist/types/chunks/{repository-DASBgOb9.d.cts → repository-D9YrVhcH.d.cts} +5 -5
  68. package/dist/types/commands/index.d.cts +3 -3
  69. package/dist/types/commands/index.d.ts +3 -3
  70. package/dist/types/index.browser.d.cts +6 -6
  71. package/dist/types/index.browser.d.ts +6 -6
  72. package/dist/types/index.d.cts +8 -8
  73. package/dist/types/index.d.ts +8 -8
  74. package/dist/types/index.default.d.cts +6 -6
  75. package/dist/types/index.default.d.ts +6 -6
  76. package/dist/types/index.node.d.cts +6 -6
  77. package/dist/types/index.node.d.ts +6 -6
  78. package/dist/types/primitives/index.d.cts +3 -3
  79. package/dist/types/primitives/index.d.ts +3 -3
  80. package/package.json +90 -24
  81. package/dist/cjs/adapters/browser/index.cjs.map +0 -1
  82. package/dist/cjs/adapters/memory/index.cjs.map +0 -1
  83. package/dist/cjs/adapters/node/index.cjs.map +0 -1
  84. package/dist/cjs/chunks/adapter-detect-D7DFJtuk.cjs.map +0 -1
  85. package/dist/cjs/chunks/adler32-CrRRuL2P.cjs +0 -2
  86. package/dist/cjs/chunks/adler32-CrRRuL2P.cjs.map +0 -1
  87. package/dist/cjs/chunks/browser-http-transport-nGm6alox.cjs +0 -2
  88. package/dist/cjs/chunks/browser-http-transport-nGm6alox.cjs.map +0 -1
  89. package/dist/cjs/chunks/context-BcoAzPuU.cjs.map +0 -1
  90. package/dist/cjs/chunks/error-CA80UqXF.cjs +0 -2
  91. package/dist/cjs/chunks/error-CA80UqXF.cjs.map +0 -1
  92. package/dist/cjs/chunks/index-01WCH0eg.cjs +0 -2
  93. package/dist/cjs/chunks/index-01WCH0eg.cjs.map +0 -1
  94. package/dist/cjs/chunks/lru-cache-1OU7JhD8.cjs.map +0 -1
  95. package/dist/cjs/chunks/memory-http-transport-7hpDW8o3.cjs +0 -2
  96. package/dist/cjs/chunks/memory-http-transport-7hpDW8o3.cjs.map +0 -1
  97. package/dist/cjs/chunks/node-http-transport-CoqnAvIL.cjs +0 -2
  98. package/dist/cjs/chunks/node-http-transport-CoqnAvIL.cjs.map +0 -1
  99. package/dist/cjs/chunks/progress-CjhUeyxd.cjs.map +0 -1
  100. package/dist/cjs/chunks/readable-stream-MTA6D0Zh.cjs.map +0 -1
  101. package/dist/cjs/chunks/repository-DJNNrfQr.cjs.map +0 -1
  102. package/dist/cjs/chunks/write-sparse-checkout-DzVubBcI.cjs +0 -2
  103. package/dist/cjs/chunks/write-sparse-checkout-DzVubBcI.cjs.map +0 -1
  104. package/dist/cjs/commands/index.cjs.map +0 -1
  105. package/dist/cjs/index.browser.cjs.map +0 -1
  106. package/dist/cjs/index.cjs.map +0 -1
  107. package/dist/cjs/index.default.cjs.map +0 -1
  108. package/dist/cjs/index.node.cjs.map +0 -1
  109. package/dist/cjs/operators/index.cjs.map +0 -1
  110. package/dist/cjs/primitives/index.cjs.map +0 -1
  111. package/dist/cjs/transport/index.cjs.map +0 -1
  112. package/dist/esm/adapters/browser/index.js.map +0 -1
  113. package/dist/esm/adapters/memory/index.js.map +0 -1
  114. package/dist/esm/adapters/node/index.js.map +0 -1
  115. package/dist/esm/chunks/adapter-detect-CTTG6hpk.js.map +0 -1
  116. package/dist/esm/chunks/adler32-BfvKJOAO.js +0 -2
  117. package/dist/esm/chunks/adler32-BfvKJOAO.js.map +0 -1
  118. package/dist/esm/chunks/browser-http-transport-DD0YKmIW.js +0 -2
  119. package/dist/esm/chunks/browser-http-transport-DD0YKmIW.js.map +0 -1
  120. package/dist/esm/chunks/context-CumKOV7K.js.map +0 -1
  121. package/dist/esm/chunks/error-BD0nFV6t.js +0 -2
  122. package/dist/esm/chunks/error-BD0nFV6t.js.map +0 -1
  123. package/dist/esm/chunks/index-BEI7XKaV.js +0 -2
  124. package/dist/esm/chunks/index-BEI7XKaV.js.map +0 -1
  125. package/dist/esm/chunks/lru-cache-Cy7C7Lx2.js.map +0 -1
  126. package/dist/esm/chunks/memory-http-transport-D13LBPvu.js +0 -2
  127. package/dist/esm/chunks/memory-http-transport-D13LBPvu.js.map +0 -1
  128. package/dist/esm/chunks/node-http-transport-doU9Y8WN.js +0 -2
  129. package/dist/esm/chunks/node-http-transport-doU9Y8WN.js.map +0 -1
  130. package/dist/esm/chunks/progress-CLPpgZJ6.js.map +0 -1
  131. package/dist/esm/chunks/readable-stream-CGuf8k1J.js.map +0 -1
  132. package/dist/esm/chunks/repository-dCH3DdLQ.js +0 -2
  133. package/dist/esm/chunks/repository-dCH3DdLQ.js.map +0 -1
  134. package/dist/esm/chunks/write-sparse-checkout-D4tNUXOp.js +0 -2
  135. package/dist/esm/chunks/write-sparse-checkout-D4tNUXOp.js.map +0 -1
  136. package/dist/esm/commands/index.js.map +0 -1
  137. package/dist/esm/index.browser.js.map +0 -1
  138. package/dist/esm/index.default.js.map +0 -1
  139. package/dist/esm/index.js.map +0 -1
  140. package/dist/esm/index.node.js.map +0 -1
  141. package/dist/esm/operators/index.js.map +0 -1
  142. package/dist/esm/primitives/index.js.map +0 -1
  143. package/dist/esm/transport/index.js.map +0 -1
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("./error-CA80UqXF.cjs"),t=require("./write-sparse-checkout-DzVubBcI.cjs"),a=require("../transport/index.cjs"),r=require("./readable-stream-MTA6D0Zh.cjs");const n=e=>{const t=void 0!==e.stage1,a=void 0!==e.stage2,r=void 0!==e.stage3;return t&&a&&r?"both-modified":a&&r?"both-added":t&&a?"deleted-by-them":t&&r?"deleted-by-us":t?"both-deleted":a?"added-by-us":"added-by-them"},i=t=>new e.TsgitError({code:"INVALID_DIFF_INPUT",reason:t}),o=/[ \t\v\f\r]+$/,s=e=>{const t=e.indexOf("\n");return-1===t?e:e.slice(0,t)},c=e=>{const t=[];for(const a of e.split("\n")){const e=a.replace(o,"");if(""!==e)t.push(e);else if(t.length>0)break}return t.join(" ")};function d(e,a,r){return void 0!==a&&void 0!==r?function(e,a,r){if(a.id!==r.id||a.mode!==r.mode)return t.isSameKind(a.mode,r.mode)?{type:"modify",path:e,oldId:r.id,newId:a.id,oldMode:r.mode,newMode:a.mode}:{type:"type-change",path:e,oldId:r.id,newId:a.id,oldMode:r.mode,newMode:a.mode}}(e,a,r):void 0!==a?{type:"add",newPath:(n=a).path,newId:n.id,newMode:n.mode}:function(e,t){return{type:"delete",oldPath:e,oldId:t.id,oldMode:t.mode}}(e,r);var n}function u(a,r){!function(a){if(void 0!==a&&a.entries.size>t.MAX_FLAT_TREE_ENTRIES)throw new e.TsgitError({code:"INVALID_TREE_FOR_DIFF",reason:"FlatTree exceeds MAX_FLAT_TREE_ENTRIES"})}(r);const n=function(e){const t=new Map;for(const a of e.entries)0===a.flags.stage&&t.set(a.path,a);return t}(a),i=function(e,t){const a=new Set;for(const t of e.keys())a.add(t);if(void 0!==t)for(const e of t.entries.keys())a.add(e);return a}(n,r),o=[];for(const e of i){const t=d(e,n.get(e),r?.entries.get(e));void 0!==t&&o.push(t)}return{changes:t.sortByPath(o,t.primaryPath)}}function l(e,t){const a=t.flags.stage;return 1===a?{...e,stage1:t}:2===a?{...e,stage2:t}:{...e,stage3:t}}function f(e){return"distinct-types"===e.type?function(e){const t=[];return void 0!==e.ourId&&void 0!==e.ourMode&&void 0!==e.ourPath&&t.push({id:e.ourId,mode:e.ourMode,stage:2,path:e.ourPath}),void 0!==e.theirId&&void 0!==e.theirMode&&void 0!==e.theirPath&&t.push({id:e.theirId,mode:e.theirMode,stage:3,path:e.theirPath}),void 0!==e.baseId&&void 0!==e.baseMode&&void 0!==e.basePath&&t.push({id:e.baseId,mode:e.baseMode,stage:1,path:e.basePath}),t}(e):function(e){const t=[];return void 0!==e.baseId&&void 0!==e.baseMode&&t.push({id:e.baseId,mode:e.baseMode,stage:1,path:e.path}),void 0!==e.ourId&&void 0!==e.ourMode&&t.push({id:e.ourId,mode:e.ourMode,stage:2,path:e.path}),void 0!==e.theirId&&void 0!==e.theirMode&&t.push({id:e.theirId,mode:e.theirMode,stage:3,path:e.path}),t}(e)}function m(e){if("distinct-types"===e.type){const t=[];return void 0!==e.ourPath&&t.push(e.ourPath),void 0!==e.theirPath&&t.push(e.theirPath),t}return[e.path]}function h(e){return e.flatMap(e=>m(e)).sort(t.comparePaths)}function w(e,a){const r=a(e.mode);return{ctimeSeconds:r.ctimeSeconds,ctimeNanoseconds:r.ctimeNanoseconds,mtimeSeconds:r.mtimeSeconds,mtimeNanoseconds:r.mtimeNanoseconds,dev:r.dev,ino:r.ino,mode:e.mode,uid:r.uid,gid:r.gid,fileSize:r.fileSize,id:e.id,flags:{...t.STAGE0_FLAGS,stage:e.stage},path:e.path}}function p(e,a){const r=new Set;for(const t of e)for(const e of m(t)){if(r.has(e))throw i("duplicate conflict path");r.add(e)}const n=[];for(const t of e)for(const e of f(t))n.push(w(e,a));return n.sort((e,a)=>{const r=t.comparePaths(e.path,a.path);return 0!==r?r:e.flags.stage-a.flags.stage}),n}const g="0000000",y={old:"a/",new:"b/"},v="\",b=(e,a)=>void 0===a?t.isBinary(e):"binary"===a,k=new TextDecoder("utf-8",{fatal:!1});function x(e,t){for(let a=0;a<t.length;a++){const r=t.charCodeAt(a);if(10===r||13===r||0===r)throw i(`${e} contains control character (code ${r}) at index ${a}`)}}function I(e,t){if(x("pathPrefix.old",t.old),x("pathPrefix.new",t.new),"rename"===e.type||"copy"===e.type)return x("oldPath",e.oldPath),void x("newPath",e.newPath);"add"!==e.type?"delete"!==e.type?x("path",e.path):x("oldPath",e.oldPath):x("newPath",e.newPath)}function E(e){return void 0===e||0===e.length?{lines:[],hasTrailingNewline:!0}:{lines:t.splitLines(e).map($),hasTrailingNewline:10===e[e.length-1]}}function $(e){return k.decode(e.subarray(0,e.length>0&&10===e[e.length-1]?e.length-1:e.length))}function T(e){return e.slice(0,7)}function O(e,t,a){return`diff --git ${a.old}${e} ${a.new}${t}`}function R(e,t,a,r){return`@@ -${1===t?`${e}`:`${e},${t}`} +${1===r?`${a}`:`${a},${r}`} @@`}function S(e,t,a){return"common"===e.kind?function(e,t){const a=[];for(let r=e.oursStart;r<e.oursEnd;r++){const n=e.theirsStart+(r-e.oursStart);a.push({kind:"context",oldIndex:r,newIndex:n,text:t[n]})}return a}(e,a):"ours-only"===e.kind?function(e,t){const a=[];for(let r=e.oursStart;r<e.oursEnd;r++)a.push({kind:"delete",oldIndex:r,newIndex:e.theirsStart,text:t[r]});return a}(e,t):function(e,t){const a=[];for(let r=e.theirsStart;r<e.theirsEnd;r++)a.push({kind:"insert",oldIndex:e.oursEnd,newIndex:r,text:t[r]});return a}(e,a)}function D(e,t){const a="insert"!==e.kind&&e.oldIndex===t.lastOldIdx&&t.lastOldIdx===t.oldTotal-1,r="delete"!==e.kind&&e.newIndex===t.lastNewIdx&&t.lastNewIdx===t.newTotal-1;return"context"===e.kind?a&&!t.oldHasTrailingNewline||r&&!t.newHasTrailingNewline:"delete"===e.kind?a&&!t.oldHasTrailingNewline:r&&!t.newHasTrailingNewline}function C(e){return"context"===e?" ":"delete"===e?"-":"+"}function M(e){const t=[];for(const a of e)t.push(`${C(a.kind)}${a.text}`),a.trailingNoNewline&&t.push(v);return t}function A(e,t,a){const r=E(t),n=[];if(n.push(O(e.newPath,e.newPath,a)),n.push(`new file mode ${e.newMode}`),n.push(`index ${g}..${T(e.newId)}`),n.push("--- /dev/null"),n.push(`+++ ${a.new}${e.newPath}`),0===r.lines.length)return n;n.push(R(0,0,1,r.lines.length));for(const e of r.lines)n.push(`+${e}`);return r.hasTrailingNewline||n.push(v),n}function N(e,t,a){const r=E(t),n=[];if(n.push(O(e.oldPath,e.oldPath,a)),n.push(`deleted file mode ${e.oldMode}`),n.push(`index ${T(e.oldId)}..${g}`),n.push(`--- ${a.old}${e.oldPath}`),n.push("+++ /dev/null"),0===r.lines.length)return n;n.push(R(1,r.lines.length,0,0));for(const e of r.lines)n.push(`-${e}`);return r.hasTrailingNewline||n.push(v),n}function P(e){return{path:e.path,oldId:e.oldId,newId:e.newId,oldMode:e.oldMode,newMode:e.newMode}}function L(e){return e.oldMode===e.newMode?[`index ${T(e.oldId)}..${T(e.newId)} ${e.newMode}`]:[`old mode ${e.oldMode}`,`new mode ${e.newMode}`,`index ${T(e.oldId)}..${T(e.newId)}`]}function H(e,t,a,r){return[`Binary files ${0===a.length?"/dev/null":`${t.old}${e.path}`} and ${0===r.length?"/dev/null":`${t.new}${e.path}`} differ`]}function _(e,a,r,n){const i=E(e),o=E(a);return function(e,t,a){if(0===e.length)return[];const r=function(e,t){const a=[];return e.forEach((e,r)=>{if("context"===e.kind)return;const n=a[a.length-1];void 0!==n&&r-n.last<=t?a[a.length-1]={first:n.first,last:r}:a.push({first:r,last:r})}),a}(e,2*t+1);return 0===r.length?[]:r.map(r=>function(e,t,a,r){const n=Math.max(0,e.first-a),i=Math.min(t.length,e.last+a+1),o=t.slice(n,i),s=function(e){let t=0,a=0,r=0,n=0,i=!1,o=!1,s=-1,c=-1;for(const d of e)"insert"!==d.kind&&(i||(t=d.oldIndex+1,i=!0),r++,s=d.oldIndex),"delete"!==d.kind&&(o||(a=d.newIndex+1,o=!0),n++,c=d.newIndex);return 0===r&&(t=e[0].oldIndex),0===n&&(a=e[0].newIndex),{oldStart:t,oldLen:r,newStart:a,newLen:n,lastOldIdx:s,lastNewIdx:c}}(o),c={...r,lastOldIdx:s.lastOldIdx,lastNewIdx:s.lastNewIdx},d=o.map(e=>({kind:e.kind,text:e.text,trailingNoNewline:D(e,c)}));return{oldStart:s.oldStart,oldLen:s.oldLen,newStart:s.newStart,newLen:s.newLen,body:d}}(r,e,t,a))}(function(e,a,r,n,i){const o=t.diffLines(r,n,void 0!==i?.lineKey?{lineKey:i.lineKey}:void 0),s=[];for(const t of o.hunks)for(const r of S(t,e,a))s.push(r);return!0!==i?.ignoreBlankLines?s:function(e,a,r){return e.filter(e=>{if("context"===e.kind)return!0;const n="delete"===e.kind?a.oursLines[e.oldIndex]:a.theirsLines[e.newIndex];return void 0===n||!t.isBlankLine(n,r)})}(s,o,i.lineKey??t.NONE_KEY)}(i.lines,o.lines,e,a,n),r,{oldTotal:i.lines.length,newTotal:o.lines.length,oldHasTrailingNewline:i.hasTrailingNewline,newHasTrailingNewline:o.hasTrailingNewline})}function j(e,t,a,r,n,i){const o=_(a,r,n,i);if(0===o.length&&!0===i?.ignoreBlankLines)return[];const s=[];s.push(`--- ${t.old}${e.path}`),s.push(`+++ ${t.new}${e.path}`);for(const e of o){s.push(R(e.oldStart,e.oldLen,e.newStart,e.newLen));for(const t of M(e.body))s.push(t)}return s}function B(e,a,r,n,i,o){const s=[];if(s.push(O(e.oldPath,e.newPath,n)),e.oldMode!==e.newMode&&(s.push(`old mode ${e.oldMode}`),s.push(`new mode ${e.newMode}`)),s.push(`similarity index ${t.toSimilarityPercent(e.similarity.score)}%`),s.push(`${a} from ${e.oldPath}`),s.push(`${a} to ${e.newPath}`),e.similarity.score===t.MAX_SCORE)return s;const c=function(e,t,a,r,n,i,o){const s=[];if(s.push(function(e){const t=`index ${T(e.oldId)}..${T(e.newId)}`;return e.oldMode===e.newMode?`${t} ${e.newMode}`:t}(e)),b(t,o)||b(a,o))return s.push(`Binary files ${r.old}${e.oldPath} and ${r.new}${e.newPath} differ`),s;const c=_(t,a,n,i);if(0===c.length&&!0===i?.ignoreBlankLines)return s;s.push(`--- ${r.old}${e.oldPath}`),s.push(`+++ ${r.new}${e.newPath}`);for(const e of c){s.push(R(e.oldStart,e.oldLen,e.newStart,e.newLen));for(const t of M(e.body))s.push(t)}return s}(e,r.oldContent??new Uint8Array(0),r.newContent??new Uint8Array(0),n,i,o,r.patchBinaryOverride);return[...s,...c]}function U(e,t){return[O(e.newPath,e.newPath,t),`new file mode ${e.newMode}`,`index ${g}..${T(e.newId)}`,`Binary files /dev/null and ${t.new}${e.newPath} differ`]}function F(e,t){return[O(e.oldPath,e.oldPath,t),`deleted file mode ${e.oldMode}`,`index ${T(e.oldId)}..${g}`,`Binary files ${t.old}${e.oldPath} and /dev/null differ`]}function W(e,a,r,n){const i=e.change,o=e.patchBinaryOverride;if("add"===i.type){const t=e.newContent??new Uint8Array(0);return b(t,o)?U(i,a):A(i,e.newContent,a)}if("delete"===i.type){const t=e.oldContent??new Uint8Array(0);return b(t,o)?F(i,a):N(i,e.oldContent,a)}return"rename"===i.type?function(e,t,a,r,n){return B(e,"rename",t,a,r,n)}(i,e,a,r,n):"copy"===i.type?function(e,t,a,r,n){return B(e,"copy",t,a,r,n)}(i,e,a,r,n):"type-change"===i.type?function(e,t,a,r,n){const i={oldPath:e.path,oldId:e.oldId,oldMode:e.oldMode},o={newPath:e.path,newId:e.newId,newMode:e.newMode};return[...b(t,n)?F(i,r):N(i,t,r),...b(a,n)?U(o,r):A(o,a,r)]}(i,e.oldContent??new Uint8Array(0),e.newContent??new Uint8Array(0),a,o):function(e,a,r,n,i,o,s){return void 0!==e.broken?function(e,a,r,n,i,o,s){const c=e.broken,d=P(e),u=[];u.push(O(d.path,d.path,n)),u.push(`dissimilarity index ${t.toSimilarityPercent(c.score)}%`);const l=`index ${T(d.oldId)}..${T(d.newId)}`;u.push(d.oldMode===d.newMode?`${l} ${d.newMode}`:l);const f=b(a,s)||b(r,s)?H(d,n,a,r):j(d,n,a,r,i,o);for(const e of f)u.push(e);return u}(e,a,r,n,i,o,s):function(e,t,a,r,n,i,o){if(e.oldId!==e.newId&&!b(a,o)&&!b(r,o)){const o=j(e,t,a,r,n,i);if(0===o.length)return[];const s=[];s.push(O(e.path,e.path,t));for(const t of L(e))s.push(t);for(const e of o)s.push(e);return s}const s=[];s.push(O(e.path,e.path,t));for(const t of L(e))s.push(t);if(e.oldId===e.newId)return s;for(const n of H(e,t,a,r))s.push(n);return s}(P(e),n,a,r,i,o,s)}(i,e.oldContent??new Uint8Array(0),e.newContent??new Uint8Array(0),a,r,n,o)}function q(e,t){const a=function(e){if(void 0===e)return 3;if(!Number.isInteger(e)||e<0)throw i(`contextLines must be a non-negative integer; got ${e}`);return e}(t?.contextLines);if(0===e.length)return"";const r=t?.pathPrefix??y;for(const t of e)I(t.change,r);const n=function(e){if(void 0===e)return;const t=e.lineKey,a=e.ignoreBlankLines;return void 0!==t&&!0===a?{lineKey:t,ignoreBlankLines:!0}:void 0!==t?{lineKey:t}:!0===a?{ignoreBlankLines:!0}:void 0}(t),o=[];for(const t of e){const e=W(t,r,a,n);for(const t of e)o.push(t)}return 0===o.length?"":(o.push(""),o.join("\n"))}const z=e=>{const a=e.startsWith("!"),r=a?e.slice(1):e;return t.containsGlob(r)?{pattern:e,body:r,negated:a,isLiteral:!1,compiled:t.compileGlob(r,{anchored:r.includes("/")})}:{pattern:e,body:r,negated:a,isLiteral:!0,compiled:t.compileGlob(r,{anchored:!0,withDirSuffix:!0})}},G=(e,t)=>{let a=!1;for(const r of e)r.compiled.test(t)&&(a=!r.negated);return a},V=t=>new e.TsgitError({code:"INVALID_MERGE_TREE",reason:t}),X=t=>new e.TsgitError({code:"INVALID_MERGE_INPUT",reason:t}),K=268435456,Y=new TextEncoder;function Z(e){let t=0;for(const a of e)t+=a.length;return t}function J(e){if(0===e.length)return new Uint8Array(0);const t=Z(e),a=e[e.length-1],r=0===a.length||10!==a[a.length-1],n=new Uint8Array(t+(r?1:0));let i=0;for(const t of e)n.set(t,i),i+=t.length;return r&&(n[i]=10),n}function Q(e,t,a={}){if("diff3"===a.conflictStyle)throw X("diff3 conflict style requires base lines — not supported in v1");const r=a.labels?.ours??"ours",n=a.labels?.theirs??"theirs";if(Z(e)+Z(t)>K)throw X("conflict output exceeds MAX_CONFLICT_OUTPUT_BYTES");const i=a.markerSize??7,o=Y.encode(`${"<".repeat(i)} ${r}\n`),s=Y.encode(`${"=".repeat(i)}\n`),c=Y.encode(`${">".repeat(i)} ${n}\n`),d=J(e),u=J(t),l=new Uint8Array(o.length+d.length+s.length+u.length+c.length);let f=0;return l.set(o,f),f+=o.length,l.set(d,f),f+=d.length,l.set(s,f),f+=s.length,l.set(u,f),f+=u.length,l.set(c,f),l}const ee="HEAD",te=e=>e.slice(0,7),ae=(e,t)=>`${te(e)} (${t})`,re=e=>`parent of ${e}`,ne=(e,t)=>{const a=ae(e,t);return{ours:ee,theirs:a,base:re(a)}},ie=(e,t)=>{const a=ae(e,t);return{ours:ee,theirs:re(a),base:a}},oe={ours:"Updated upstream",theirs:"Stashed changes",base:"Stash base"},se={ours:"ours",theirs:"theirs",base:""};function ce(e,t){const a=[];let r;const n=()=>{void 0!==r&&(a.push({baseStart:r.baseStart,baseEnd:r.baseEnd,replacement:r.replacement}),r=void 0)};for(const a of e)if("common"!==a.kind)if(void 0===r&&(r={baseStart:a.oursStart,baseEnd:a.oursStart,replacement:[]}),"ours-only"===a.kind)r.baseEnd=Math.max(r.baseEnd,a.oursEnd);else for(let e=a.theirsStart;e<a.theirsEnd;e++)r.replacement.push(t[e]);else n();return n(),a}function de(e,t){return e.baseStart===e.baseEnd?t.baseStart===t.baseEnd?e.baseStart===t.baseStart:e.baseStart>=t.baseStart&&e.baseStart<t.baseEnd:t.baseStart===t.baseEnd?t.baseStart>=e.baseStart&&t.baseStart<e.baseEnd:e.baseStart<t.baseEnd&&t.baseStart<e.baseEnd}function ue(e,t,a,r){const n=[];let i=t;for(const t of r){for(let a=i;a<t.baseStart;a++)n.push(e[a]);for(const e of t.replacement)n.push(e);i=t.baseEnd}for(let t=i;t<a;t++)n.push(e[t]);return n}function le(e,a){const r=Math.min(e.length,a.length);let n=0;for(;n<r&&t.bytesEqual(e[n],a[n]);)n++;let i=0;for(;i<r-n&&t.bytesEqual(e[e.length-1-i],a[a.length-1-i]);)i++;return{prefix:e.slice(0,n),oursMid:e.slice(n,e.length-i),theirsMid:a.slice(n,a.length-i),suffix:e.slice(e.length-i)}}function fe(e){if(!(e.ours.length>0))return"clean-theirs";if(!(e.theirs.length>0))return"clean-ours";const[a]=e.ours,[r]=e.theirs;return 1===e.ours.length&&1===e.theirs.length&&a.baseStart===r.baseStart&&a.baseEnd===r.baseEnd&&function(e,a){if(e.length!==a.length)return!1;for(let r=0;r<e.length;r++)if(!t.bytesEqual(e[r],a[r]))return!1;return!0}(a.replacement,r.replacement)?"clean-twin":"conflict"}function me(e){return{kind:"clean",start:e.start,end:e.end,replacement:e.ours.length>0?e.ours[0].replacement:e.theirs[0].replacement}}function he(e){return e.length>0&&10===e[e.length-1]}function we(e){let t=0;for(let a=0;a<e.length;a++)t+=e[a].length,a<e.length-1&&!he(e[a])&&(t+=1);const a=new Uint8Array(t);let r=0;for(let t=0;t<e.length;t++){const n=e[t];a.set(n,r),r+=n.length,t<e.length-1&&!he(n)&&(a[r]=10,r+=1)}return a}function pe(e,a,r,n){const i=t.diffLines(e,a),o=t.diffLines(e,r),s=i.degraded||o.degraded?[{kind:"conflict",ours:t.splitLines(a),theirs:t.splitLines(r)}]:function(e,t,a){const r=function(e){const t=[];let a=0;for(;a<e.length;){const r=e[a];if("conflict"!==r.classification){t.push(me(r)),a++;continue}let n=r.end;const i=[...r.ours],o=[...r.theirs];let s=a+1;for(;s<e.length;){const t=e[s];if("conflict"!==t.classification||t.start-n>3)break;i.push(...t.ours),o.push(...t.theirs),n=t.end,s++}t.push({kind:"conflict",start:r.start,end:n,ours:i,theirs:o}),a=s}return t}(function(e){const t=[];let a;for(const r of e)void 0!==a&&de(r,{baseStart:a.start,baseEnd:a.end})?a.end=Math.max(a.end,r.baseEnd):(a={start:r.baseStart,end:r.baseEnd,ours:[],theirs:[]},t.push(a)),("ours"===r.side?a.ours:a.theirs).push(r);return t}(function(e,t){const a=[...e.map(e=>({...e,side:"ours"})),...t.map(e=>({...e,side:"theirs"}))];return a.sort((e,t)=>e.baseStart-t.baseStart),a}(t,a)).map(e=>({...e,classification:fe(e)}))),n=[],i=e=>{e.length>0&&n.push({kind:"clean",lines:e})};let o=0;for(const t of r){if(i(e.slice(o,t.start)),"clean"===t.kind)i(t.replacement);else{const a=le(ue(e,t.start,t.end,t.ours),ue(e,t.start,t.end,t.theirs));i(a.prefix),n.push({kind:"conflict",ours:a.oursMid,theirs:a.theirsMid}),i(a.suffix)}o=t.end}return i(e.slice(o)),n}(i.oursLines,ce(i.hunks,i.theirsLines),ce(o.hunks,o.theirsLines));return"union"===n.favor?function(e){const t=[];for(const a of e)"clean"===a.kind?t.push(...a.lines):t.push(...a.ours,...a.theirs);return{status:"clean",bytes:we(t)}}(s):function(e,t){const a=[];let r=!1;for(const n of e)"clean"===n.kind?a.push(...n.lines):(r=!0,a.push(Q(n.ours,n.theirs,t)));const n=function(e){let t=0;for(const a of e)t+=a.length;const a=new Uint8Array(t);let r=0;for(const t of e)a.set(t,r),r+=t.length;return a}(a);return r?{status:"conflict",conflictType:"content",markedBytes:n}:{status:"clean",bytes:n}}(s,n)}const ge=new Uint8Array(0);function ye(e,t){return e.id===t.id&&e.mode===t.mode}function ve(e){return e===t.FILE_MODE.GITLINK}function be(e,a){if(void 0!==e&&e.entries.size>t.MAX_FLAT_TREE_ENTRIES)throw V(`${a} FlatTree exceeds MAX_FLAT_TREE_ENTRIES`)}function ke(e){return{status:"conflict",conflict:e}}function xe(e,t,a,r){return ke({type:"modify-delete",path:e,baseId:t.id,baseMode:t.mode,...void 0===a?{}:{ourId:a.id,ourMode:a.mode},...void 0===r?{}:{theirId:r.id,theirMode:r.mode}})}function Ie(e,t,a,r){return ke({type:"type-change",path:e,baseId:t.id,ourId:a.id,theirId:r.id,baseMode:t.mode,ourMode:a.mode,theirMode:r.mode})}function Ee(e,t,a,r){return void 0===t?{status:"resolved-known",path:e,id:a.id,mode:a.mode}:ye(t,a)?{status:"resolved-deleted",path:e}:"our"===r?xe(e,t,a,void 0):xe(e,t,void 0,a)}function $e(e){return"file"===t.kindOf(e)}function Te(e){return e===t.FILE_MODE.SYMLINK}function Oe(e,t,a,r,n,i){const o=$e(t.mode),s=function(e,t,a){const r=`${t}~${function(e){return e.replace(/\//g,"_")}(a)}`;let n=r,i=0;for(;e.has(n);)n=`${r}_${i}`,i+=1;return e.add(n),n}(n,e,o?r.ours:r.theirs),c=o?s:e,d=o?e:s;if(void 0===i)return ke({type:"distinct-types",path:e,ourId:t.id,ourMode:t.mode,theirId:a.id,theirMode:a.mode,ourPath:c,theirPath:d});const u=$e(i.mode)?s:e;return ke({type:"distinct-types",path:e,baseId:i.id,baseMode:i.mode,basePath:u,ourId:t.id,ourMode:t.mode,theirId:a.id,theirMode:a.mode,ourPath:c,theirPath:d})}function Re(e,t){if(e.length>K)throw X(`contentMerger returned oversize ${t}`)}async function Se(e,t,a,r){const n={path:e,ourId:t.id,theirId:a.id,ourMode:t.mode,theirMode:a.mode},i=await r(n,void 0,ge,ge);return"clean"===i.status?(Re(i.bytes,"clean bytes"),t.mode===a.mode?void 0!==i.id?{tag:"resolved",outcome:{status:"resolved-known",path:e,id:i.id,mode:t.mode}}:{tag:"resolved",outcome:{status:"resolved-merged",path:e,bytes:i.bytes,mode:t.mode}}:{tag:"clean-split",bytes:i.bytes}):(Re(i.markedBytes,"marked bytes"),{tag:"conflict",bytes:i.markedBytes,conflictType:i.conflictType})}function De(e,a,r,n,i,o,s){return void 0===r&&void 0===n?{status:"resolved-deleted",path:e}:void 0===r?Ee(e,a,n,"their"):void 0===n?Ee(e,a,r,"our"):void 0===a?async function(e,t,a,r,n,i){if(ye(t,a))return{status:"resolved-known",path:e,id:t.id,mode:t.mode};const o=$e(t.mode),s=$e(a.mode),c=Te(t.mode),d=Te(a.mode);if(o&&d||c&&s)return Oe(e,t,a,n,i);if(!o||!s)return function(e,t,a){return ke({type:"add-add",path:e,ourId:t.id,theirId:a.id,ourMode:t.mode,theirMode:a.mode})}(e,t,a);const u=await Se(e,t,a,r);return"resolved"===u.tag?u.outcome:ke({type:"add-add",path:e,ourId:t.id,theirId:a.id,ourMode:t.mode,theirMode:a.mode,conflictContent:u.bytes,contentVerdict:"clean-split"===u.tag?"clean":u.conflictType})}(e,r,n,i,o,s):async function(e,a,r,n,i,o,s){const c=ye(a,r),d=ye(a,n);return c&&d?{status:"unchanged",path:e,id:a.id,mode:a.mode}:c?{status:"resolved-known",path:e,id:n.id,mode:n.mode}:d||ye(r,n)?{status:"resolved-known",path:e,id:r.id,mode:r.mode}:function(e,a,r,n,i,o,s){if(ve(r.mode)||ve(n.mode))return ve(r.mode)&&ve(n.mode)&&ve(a.mode)?function(e,t,a,r){return ke({type:"gitlink",path:e,baseId:t.id,ourId:a.id,theirId:r.id,baseMode:t.mode,ourMode:a.mode,theirMode:r.mode})}(e,a,r,n):Ie(e,a,r,n);const c=Te(r.mode),d=Te(n.mode);if(c&&d)return function(e,t,a,r){return ke({type:"content",path:e,baseId:t.id,baseMode:t.mode,ourId:a.id,ourMode:a.mode,theirId:r.id,theirMode:r.mode})}(e,a,r,n);if(c||d)return ve(a.mode)?Ie(e,a,r,n):Oe(e,r,n,o,s,a);if(!t.isSameKind(a.mode,r.mode))return async function(e,t,a,r,n){const i=await Se(e,a,r,n);return"resolved"===i.tag?i.outcome:ke("clean-split"===i.tag?{type:"content",path:e,baseId:t.id,baseMode:t.mode,ourId:a.id,ourMode:a.mode,theirId:r.id,theirMode:r.mode,conflictContent:i.bytes,contentVerdict:"clean"}:{type:i.conflictType,path:e,baseId:t.id,baseMode:t.mode,ourId:a.id,ourMode:a.mode,theirId:r.id,theirMode:r.mode,conflictContent:i.bytes})}(e,a,r,n,i);const u=function(e,t,a){return t.mode===a.mode?t.mode:t.mode===e.mode?a.mode:t.mode}(a,r,n);return async function(e,t,a,r,n,i){const o={path:e,baseId:t.id,ourId:a.id,theirId:r.id,baseMode:t.mode,ourMode:a.mode,theirMode:r.mode},s=await i(o,void 0,ge,ge);return"clean"===s.status?(Re(s.bytes,"clean bytes"),void 0!==s.id?{status:"resolved-known",path:e,id:s.id,mode:n}:{status:"resolved-merged",path:e,bytes:s.bytes,mode:n}):(Re(s.markedBytes,"marked bytes"),ke({type:s.conflictType,path:e,baseId:t.id,ourId:a.id,theirId:r.id,baseMode:t.mode,ourMode:a.mode,theirMode:r.mode,conflictContent:s.markedBytes,mergedMode:n}))}(e,a,r,n,u,i)}(e,a,r,n,i,o,s)}(e,a,r,n,i,o,s)}async function Ce(e,a,r,n,i=se){be(e,"base"),be(a,"ours"),be(r,"theirs");const o=function(e,a,r){const n=new Set;for(const t of[e,a,r])if(void 0!==t)for(const e of t.entries.keys())n.add(e);if(n.size>t.MAX_FLAT_TREE_ENTRIES)throw V("union FlatTree exceeds MAX_FLAT_TREE_ENTRIES");return n}(e,a,r),s=t.sortByPath([...o],e=>e),c=new Set(o),d=[];for(const t of s){const o=De(t,e?.entries.get(t),a?.entries.get(t),r?.entries.get(t),n,i,c),s=o instanceof Promise?await o:o;d.push(s)}const u=function(e){const t=[];for(const a of e)"conflict"===a.status&&t.push(a.conflict);return t}(d);return{outcomes:d,conflicts:u,cleanMerge:0===u.length}}const Me="blob:limit=",Ae="tree:",Ne=/^(\d+)([kmg])?$/i,Pe=/^\d+$/,Le=e=>{if(""===e)throw t.invalidFilterSpec(e,"empty");if("blob:none"===e)return{kind:"blob-none"};if(e.startsWith(Me))return(e=>{const a=e.slice(11).match(Ne);if(null===a)throw t.invalidFilterSpec(e,"bad-blob-limit");const r=Number(a[1])*(e=>{switch(e?.toLowerCase()){case"k":return 1024;case"m":return 1048576;case"g":return 1073741824;default:return 1}})(a[2]);if(!Number.isSafeInteger(r))throw t.invalidFilterSpec(e,"bad-blob-limit");return{kind:"blob-limit",bytes:r}})(e);if(e.startsWith(Ae))return(e=>{const a=e.slice(5);if(!Pe.test(a))throw t.invalidFilterSpec(e,"bad-tree-depth");const r=Number(a);if(!Number.isSafeInteger(r))throw t.invalidFilterSpec(e,"bad-tree-depth");return{kind:"tree-depth",depth:r}})(e);throw t.invalidFilterSpec(e,"unknown-kind")},He=e=>{switch(e.kind){case"blob-none":return"blob:none";case"blob-limit":return`${Me}${e.bytes}`;case"tree-depth":return`${Ae}${e.depth}`}},_e=new TextDecoder("utf-8",{fatal:!1}),je=new TextEncoder,Be=e=>e.endsWith("\n")?e.slice(0,-1):e,Ue=e=>{if(e.startsWith("ok "))return{name:e.slice(3),accepted:!0};if(e.startsWith("ng ")){const a=e.slice(3),r=a.indexOf(" ");if(r<0)throw t.invalidReportStatus(e);return{name:a.slice(0,r),accepted:!1,reason:a.slice(r+1)}}throw t.invalidReportStatus(e)},Fe=async e=>{const a=await(async e=>{const t=[];for await(const a of e){if("data"!==a.kind)return t;t.push(Be(_e.decode(a.payload)))}return t})(e);if(0===a.length)throw t.invalidReportStatus("");const[r,...n]=a,i=(e=>{if("unpack ok"===e)return{ok:!0};if(e.startsWith("unpack "))return{ok:!1,error:e.slice(7)};throw t.invalidReportStatus(e)})(r);return i.ok?{unpackOk:!0,refUpdates:n.map(Ue)}:{unpackOk:!1,unpackError:i.error,refUpdates:[]}},We={second:1,minute:60,hour:3600,day:86400,week:604800,month:2592e3,year:31536e3},qe=/^(\d{4})-(\d{2})-(\d{2})(?: (\d{2}):(\d{2}):(\d{2}))?$/,ze=/^(\d+)[ .]([a-z]+?)s?(?:[ .]ago)?$/;function Ge(e,t){const a=e.trim().toLowerCase();return"now"===a?t:"yesterday"===a?t-86400:function(e){const t=qe.exec(e);if(null===t)return;const[,a,r,n,i,o,s]=t,c=Number(a),d=Number(r),u=Number(n),l=void 0===i?0:Number(i),f=void 0===o?0:Number(o),m=void 0===s?0:Number(s);if(d<1||d>12)return;if(u<1||u>function(e,t){return 2===t&&function(e){return e%4==0&&e%100!=0||e%400==0}(e)?29:Ve[t-1]}(c,d))return;if(l>23)return;if(f>59)return;if(m>59)return;const h=new Date(c,d-1,u,l,f,m);return h.setFullYear(c),Math.floor(h.getTime()/1e3)}(a)??function(e,t){const a=ze.exec(e);if(null===a)return;const[,r,n]=a,i=We[n];return void 0===i?void 0:t-Number(r)*i}(a,t)}const Ve=[31,28,31,30,31,30,31,31,30,31,30,31],Xe=e=>[e,`refs/${e}`,`refs/tags/${e}`,`refs/heads/${e}`,`refs/remotes/${e}`,`refs/remotes/${e}/HEAD`],Ke=e=>`${e.layout.gitDir}/MERGE_HEAD`,Ye=e=>`${e.layout.gitDir}/MERGE_MSG`,Ze=e=>`${e.layout.gitDir}/ORIG_HEAD`,Je=async(e,t)=>{await e.fs.writeUtf8(Ye(e),t)},Qe=async(e,t)=>{await e.fs.writeUtf8(Ze(e),`${t}\n`)},et=async e=>{const a=Ke(e);if(!await e.fs.exists(a))return;const r=(await e.fs.readUtf8(a)).trim();return 0!==r.length?t.ObjectId.from(r):void 0},tt=async e=>{const t=Ye(e);if(await e.fs.exists(t))return e.fs.readUtf8(t)},at=async e=>{for(const t of[Ke(e),Ye(e)])await e.fs.exists(t)&&await e.fs.rm(t)},rt=async e=>{const t=Ye(e);await e.fs.exists(t)&&await e.fs.rm(t)},nt=t.RefName.from("HEAD"),it=async t=>{const a=`${t.layout.gitDir}/HEAD`;if(!await t.fs.exists(a))throw new e.TsgitError({code:"NOT_A_REPOSITORY",path:t.layout.workDir});return t.layout.bare?t.layout.gitDir:t.layout.workDir},ot=["excludesfile","attributesfile"],st=async a=>{const r=await it(a);return await(async a=>{const[r,n]=await Promise.all([t.findFirstValuelessEntry(a,"core",void 0,ot),t.findFirstInvalidCompression(a)]);if(void 0!==r&&(void 0===n||r.line<n.line))throw e.configMissingValue(r.key,r.source,r.line);if(void 0!==n){if("numeric"===n.failure.kind)throw e.configBadNumericValue(n.key,n.source,n.failure.value,n.failure.reason);throw e.configBadZlibLevel(n.failure.level)}})(a),r},ct=async(a,r)=>{if(await(async e=>{const a=await t.readConfig(e);return a.core?.bare??!1})(a))throw(t=>new e.TsgitError({code:"BARE_REPOSITORY",operation:t}))(r)},dt=async a=>{const r=`${a.layout.gitDir}/HEAD`;let n;try{n=await a.fs.readUtf8(r)}catch(a){if(a instanceof e.TsgitError&&"FILE_NOT_FOUND"===a.data.code)throw t.refNotFound(nt);throw a}const i=t.parseLooseRef(n);return"symbolic"===i.type?{kind:"symbolic",target:i.target}:{kind:"direct",id:i.target}},ut=[{file:"MERGE_HEAD",operation:"merge"},{file:"CHERRY_PICK_HEAD",operation:"cherry-pick"},{file:"REVERT_HEAD",operation:"revert"},{file:"REBASE_HEAD",operation:"rebase"}],lt=async(t,a={})=>{const r=a.except,n=e=>Array.isArray(r)?r.includes(e):r===e,i=await Promise.all(ut.map(e=>t.fs.exists(`${t.layout.gitDir}/${e.file}`)));for(let t=0;t<ut.length;t+=1){const a=ut[t];if(void 0!==a&&!n(a.operation)&&!0===i[t])throw e.operationInProgress(a.operation)}},ft=e=>{if("object"!=typeof e)return 7;const t=(e=>{if(!/^[+-]?[0-9]+$/.test(e))return;const t=Number(e);return t>2147483647?void 0:t})(e.set);return void 0!==t&&t>0?t:7},mt=(e,t)=>{switch(e){case"O":return t.O;case"A":return t.A;case"B":return t.B;case"L":return t.L;case"P":return t.P;case"S":return t.S;case"X":return t.X;case"Y":return t.Y;case"%":return"%";default:return`%${e}`}},ht=async(e,a)=>{const r=await t.loadSparseMatcher(e),n=await t.readObject(e,a);if("commit"!==n.type)throw t.unexpectedObjectType("commit",n.type,a);const i=await t.acquireIndexLock(e);try{const a=await t.readIndex(e),o=await t.materializeTree(e,{targetTree:n.data.tree,currentIndex:a,force:!0,forceRewriteAll:!0,...void 0!==r?{sparse:r}:{}});await i.commit(o.newIndexEntries)}finally{await i.release()}},wt=async a=>{if(await st(a),await ct(a,"merge --abort"),void 0===await et(a))throw e.noOperationInProgress("merge");const r=await(async e=>{const a=Ze(e);if(!await e.fs.exists(a))return;const r=(await e.fs.readUtf8(a)).trim();return 0!==r.length?t.ObjectId.from(r):void 0})(a);if(void 0===r)throw e.noOperationInProgress("merge");const n=await dt(a);if("symbolic"!==n.kind)throw e.unsupportedOperation("merge --abort","cannot abort with detached HEAD");return await ht(a,r),await t.updateRef(a,n.target,r,{reflogMessage:"reset: moving to HEAD"}),await at(a),{origHead:r,branch:n.target}},pt=(e,a,r,n)=>({ctimeSeconds:Math.floor(e.ctimeMs/1e3),ctimeNanoseconds:0,mtimeSeconds:Math.floor(e.mtimeMs/1e3),mtimeNanoseconds:0,dev:e.dev,ino:e.ino,mode:a,uid:e.uid,gid:e.gid,fileSize:e.size,id:r,flags:t.STAGE0_FLAGS,path:n}),gt=t.validateWorkingTreePath,yt=(e,a)=>t.joinPath(e.layout.workDir,a),vt=async(t,a)=>{const r=gt(a),n=yt(t,r);let i;try{i=await t.fs.lstat(n)}catch{throw e.checkoutOverwriteDirty({localChanges:[r],untracked:[]})}if(!i.isFile&&!i.isSymbolicLink)throw e.checkoutOverwriteDirty({localChanges:[r],untracked:[]});await t.fs.rm(n)},bt=async(e,t,a)=>{const r=gt(t),n=gt(a);await kt(e,yt(e,r),yt(e,n))},kt=async(t,a,r)=>{const n=await t.fs.lstat(a);if(n.isDirectory&&!n.isSymbolicLink){for(const e of await t.fs.readdir(a))await kt(t,`${a}/${e.name}`,`${r}/${e.name}`);return void await t.fs.rmRecursive(a)}const i=e.dirname(r);""!==i&&await t.fs.mkdir(i),await t.fs.rename(a,r)},xt=new TextEncoder,It=e=>{for(const t of e){const e=t.startsWith("!")?t.slice(1):t;gt(e),Et(t)}const t=(e=>e.map(z))(e),a=t.filter(Ot).map(e=>St(e)),r=t.some(Rt);return{matcher:t,literalMustMatch:a,hasGlob:r}},Et=t=>{if(xt.encode(t).byteLength>256)throw e.invalidOption("paths","pattern exceeds max length 256 bytes");if($t(t)>4)throw e.invalidOption("paths","pattern exceeds max **-token count 4")},$t=e=>{let t=0,a=0;for(;a<e.length;)"*"!==e[a]||"*"!==e[a+1]?a+=1:(t+=1,a+=2);return t},Tt=(t,a)=>{if(0===t.length)return;const r=new Set(a);for(const n of t)if(!r.has(n)&&!a.some(e=>e.startsWith(`${n}/`)))throw e.pathspecNoMatch(n)},Ot=e=>!e.negated&&e.isLiteral,Rt=e=>!e.negated&&!e.isLiteral,St=e=>e.body,Dt=new Set(["FILE_NOT_FOUND","INVALID_INDEX_HEADER","INVALID_INDEX_ENTRY"]),Ct=async(a,r,n)=>{const i=await t.acquireIndexLock(a);try{const t=await Ht(a),o=new Map(t),s=[],c=[];for(const i of r){const r=await _t(a,i,n);if("missing"===r)throw e.pathspecNoMatch(i);const d=t.get(i);o.set(i,r),void 0===d?s.push(i):d.id===r.id&&d.mode===r.mode||c.push(i)}return await i.commit(Array.from(o.values())),{added:s,modified:c,removed:[]}}finally{await i.release()}},Mt=async(e,a)=>{if(0===a.length)return!1;for(const r of a){const a=await e.fs.lstat(t.joinPath(e.layout.workDir,r)).catch(()=>{});if(void 0===a)return!1;if(a.isDirectory&&!a.isSymbolicLink)return!1}return!0},At=async(e,a,r,n)=>{const i=await t.buildRepoIgnorePredicate(e),o=async(e,t)=>!!await i(e,t)||!t&&!G(a,e),s=await t.acquireIndexLock(e);try{const a=await Ht(e),i=new Map(a),c=[],d=[],u=[],l=new Set;for await(const r of t.walkWorkingTree(e,{ignore:o})){const t=await Lt(e,r,a,l,n);void 0!==t&&(c.push(t.path),i.set(t.path,t.entry),"added"===t.kind?d.push(t.path):"modified"===t.kind&&u.push(t.path))}return Tt(r,c),d.sort(),u.sort(),await s.commit(Array.from(i.values())),{added:d,modified:u,removed:[]}}finally{await s.release()}},Nt=async(e,t,a)=>{const r=[];for(const[n,i]of e)t.has(n)||i.flags.skipWorktree||await Pt(n,a)||r.push(n);return r},Pt=async(e,t)=>{if(await t(e,!1))return!0;const a=e.split("/");for(let e=1;e<a.length;e+=1){const r=a.slice(0,e).join("/");if(await t(r,!0))return!0}return!1},Lt=async(a,r,n,i,o)=>{const{path:s,stat:c}=r;if(i.add(s),c.size>t.MAX_WORKING_TREE_BLOB_BYTES)throw e.workingTreeFileTooLarge(s,c.size,t.MAX_WORKING_TREE_BLOB_BYTES);const d=await jt(a,s,c,o),u=n.get(s);return void 0===u?{kind:"added",path:s,entry:d}:u.id!==d.id||u.mode!==d.mode?{kind:"modified",path:s,entry:d}:{kind:"unchanged",path:s,entry:d}},Ht=async a=>{try{const e=await t.readIndex(a),r=new Map;for(const t of e.entries)r.set(t.path,t);return r}catch(t){if(t instanceof e.TsgitError&&Dt.has(t.data.code))return new Map;throw t}},_t=async(e,a,r)=>{const n=await e.fs.lstat(t.joinPath(e.layout.workDir,a)).catch(()=>{});return void 0===n?"missing":jt(e,a,n,r)},jt=async(a,r,n,i)=>{const o=await a.fs.lstat(t.joinPath(a.layout.workDir,r));if(o.isSymbolicLink!==n.isSymbolicLink||o.isDirectory!==n.isDirectory||o.isFile!==n.isFile)throw e.operationAborted();if(o.size>t.MAX_WORKING_TREE_BLOB_BYTES)throw e.workingTreeFileTooLarge(r,o.size,t.MAX_WORKING_TREE_BLOB_BYTES);const s=t.deriveWorkingMode(o),c=await Ut(a,r,o),d=await Bt(a,r,c,o.isSymbolicLink,i),u=await t.writeObject(a,{type:"blob",id:"",content:d});return pt(o,s,u,r)},Bt=async(a,r,n,i,o)=>{if(void 0===o||void 0===a.command||i)return n;const s=await t.resolveFilterDriver(a,o,r);if("external"!==s.kind||void 0===s.clean)return n;const c=await t.runFilterDriver(a,a.command,s.clean,n);if(c.ok)return c.bytes;if(s.required)throw e.cleanFilterFailed(r,s.name,c.exitCode);return n},Ut=async(a,r,n)=>{if(n.isSymbolicLink){const n=(new TextEncoder).encode(await a.fs.readlink(t.joinPath(a.layout.workDir,r)));if(n.byteLength>t.MAX_WORKING_TREE_BLOB_BYTES)throw e.workingTreeFileTooLarge(r,n.byteLength,t.MAX_WORKING_TREE_BLOB_BYTES);return n}return(async(e,t)=>{const a=gt(t);return e.fs.read(yt(e,a))})(a,r)},Ft=async(e,a,r)=>{let n=a;for(let a=0;a<5;a+=1){const a=await t.readObject(e,n);if(a.type===r)return n;if("tag"!==a.type){if("tree"===r&&"commit"===a.type)return a.data.tree;throw t.objectNotFound(n)}n=a.data.object}throw t.objectNotFound(n)},Wt=async(a,r,n,i)=>{const o=n.split("/"),s=o.length-1;let c=r;for(let r=0;r<s;r+=1){const s=qt(c,o[r],i,n),d=await t.readObject(a,s.id);if("tree"!==d.type)throw e.pathNotInTree(i,n);c=d}return qt(c,o[s],i,n)},qt=(t,a,r,n)=>{const i=t.entries.find(e=>e.name===a);if(void 0===i)throw e.pathNotInTree(r,n);return i},zt=/^[0-9a-f]{40}$/,Gt=/^[0-9a-f]{4,39}$/,Vt=/^[0-9a-f]{38}$/,Xt=async(e,a)=>{const r=t.objectsDir(t.commonGitDir(e),a.slice(0,2));if(!await e.fs.exists(r))return[];const n=a.slice(2),i=[];for(const t of await e.fs.readdir(r))t.isFile&&Vt.test(t.name)&&t.name.startsWith(n)&&i.push(a.slice(0,2)+t.name);return i},Kt=async(e,a)=>{const r=await t.getPackRegistry(e).all(),n=[];for(const e of r)for(const r of t.findByPrefix(e.index,a))n.push(r);return n},Yt=async(t,a)=>{if(zt.test(a))return a;if(!Gt.test(a))return;const[r,n]=await Promise.all([Xt(t,a),Kt(t,a)]),i=[...new Set([...r,...n])];if(0!==i.length){if(1===i.length)return i[0];throw e.ambiguousOidPrefix(a,i.slice(0,16))}},Zt=new Set(["commit","tree","blob","tag"]),Jt=/^:(\d):(.+)$/,Qt=/^[0-9a-f]{1,3}$/,ea=t=>{throw e.revparseUnresolved(t)},ta=e=>{if(""===e&&ea(e),e.startsWith(":"))return ra(e);const t=aa(e);return-1!==t?{kind:"tree-path",rev:e.slice(0,t),path:e.slice(t+1)}:e.includes("@{")?oa(e):na(e)},aa=e=>{let t=!1;for(let a=0;a<e.length;a+=1)if(t||"@"!==e[a]||"{"!==e[a+1]){if(t&&"}"===e[a])t=!1;else if(!t&&":"===e[a])return a}else t=!0,a+=1;return-1},ra=e=>{const t=Jt.exec(e);null===t&&ea(e);const a=t[2],r=Number(t[1]);return r>3&&ea(e),{kind:"index-stage",stage:r,path:a}},na=e=>{const t=sa(e),a=-1===t?e:e.slice(0,t);return""===a&&ea(e),Qt.test(a)&&-1===t&&ea(e),{kind:"ref-or-hex",base:a,operations:-1===t?[]:ca(e,t)}},ia=/^\d+$/,oa=e=>{const t=e.indexOf("@{"),a=e.indexOf("}",t+2),r=e.slice(0,t),n=e.slice(t+2,a);return""===n&&ea(e),{kind:"ref-or-hex",base:r,reflog:ia.test(n)?{kind:"index",n:Number(n)}:{kind:"date",raw:n},operations:ca(e.slice(a+1),0)}},sa=e=>{for(let t=0;t<e.length;t+=1){const a=e[t];if("~"===a||"^"===a)return t}return-1},ca=(e,t)=>{const a=[];let r=t;for(;r<e.length;){const t=e[r];if("~"===t){const t=da(e,r);a.push(t.op),r=t.next}else if("^"===t){const t=ua(e,r);a.push(t.op),r=t.next}else ea(e)}return a},da=(e,t)=>{let a=t+1;for(;a<e.length&&la(e.charCodeAt(a));)a+=1;return a===t+1&&ea(e),{op:{kind:"ancestor",n:Number(e.slice(t+1,a))},next:a}},ua=(e,t)=>{if("{"===e[t+1]){const a=e.indexOf("}",t+2);-1===a&&ea(e);const r=e.slice(t+2,a);return Zt.has(r)||ea(e),{op:{kind:"peel",target:r},next:a+1}}let a=t+1;for(;a<e.length&&la(e.charCodeAt(a));)a+=1;const r=e.slice(t+1,a);return{op:{kind:"parent",n:""===r?1:Number(r)},next:a}},la=e=>e>=48&&e<=57,fa=async(e,t)=>{await st(e);const a=ta(t);return ma(e,a,t)},ma=async(e,t,a)=>{if("index-stage"===t.kind)return Ea(e,t);if("tree-path"===t.kind)return $a(e,t.rev,t.path);const r=Math.floor(Date.now()/1e3);let n=void 0!==t.reflog?await wa(e,t.base,t.reflog,r,a):await ha(e,t.base);for(const a of t.operations)n=await xa(e,n,a);return n},ha=async(e,a)=>{if(/^[0-9a-f]{40}$/.test(a))return t.ObjectId.from(a);for(const r of Xe(a))try{return await t.resolveRef(e,r)}catch{}const r=await Yt(e,a);if(void 0!==r)return r;throw t.objectNotFound(a)},wa=async(a,r,n,i,o)=>{const s=""===r?await pa(a):await ga(a,r),c=await t.readReflog(a,s);if(0===c.length)throw e.revparseUnresolved(o);return"index"===n.kind?ba(c,n.n,s):ka(c,n.raw,i,o)},pa=async e=>{const a=await t.getRefStore(e).resolveDirect("HEAD");return"symbolic"===a.kind?a.target:"HEAD"},ga=async(e,a)=>{const r=ya(a),n=Xe(r);for(const a of n)if(await t.reflogExists(e,a))return a;for(const t of n)if(await va(e,t))return t;return r},ya=a=>{try{return t.validateRefName(a)}catch{throw e.revparseUnresolved(a)}},va=async(e,a)=>{try{return await t.resolveRef(e,a),!0}catch{return!1}},ba=(e,a,r)=>{const n=e[e.length-1-a];if(void 0===n)throw t.reflogEntryOutOfRange(r,a,e.length);return n.newId},ka=(t,a,r,n)=>{const i=Ge(a,r);if(void 0===i)throw e.revparseUnresolved(n);for(let e=t.length-1;e>=0;e-=1){const a=t[e];if(a.identity.timestamp<=i)return a.newId}return t[0].oldId},xa=async(e,t,a)=>{if("parent"===a.kind)return Ia(e,t,a.n);if("ancestor"===a.kind){let r=t;for(let t=0;t<a.n;t+=1)r=await Ia(e,r,1);return r}return Ft(e,t,a.target)},Ia=async(e,a,r)=>{const n=await t.readObject(e,a);if("commit"!==n.type)throw t.objectNotFound(a);const i=n.data.parents[r-1];if(void 0===i)throw t.objectNotFound(a);return i},Ea=async(e,a)=>{const r=await t.readIndex(e);for(const e of r.entries)if(e.path===a.path&&e.flags.stage===a.stage)return e.id;throw t.objectNotFound(`${a.stage}:${a.path}`)},$a=async(e,a,r)=>{const n=await ma(e,ta(a),a),i=await Ft(e,n,"tree");if(""===r)return i;const o=await t.readTree(e,i);return(await Wt(e,o,r,a)).id};async function*Ta(e,a){for await(const r of t.walkTree(e,a,{maxEntries:Number.MAX_SAFE_INTEGER,maxDepth:Number.MAX_SAFE_INTEGER})){const{path:a,id:n,mode:i}=r;if(i===t.FILE_MODE.DIRECTORY||i===t.FILE_MODE.GITLINK)yield{path:a,mode:i,oid:n};else{const r=await t.readBlob(e,n);yield{path:a,mode:i,oid:n,content:r.content}}}}const Oa=(e,t)=>{const a=Ra(t),r=[],n=[];for(const t of e)Sa(t,a,r,n);return{passed:r,kept:n}},Ra=e=>{const t=new Map;for(const a of e.hunks){if("common"!==a.kind)continue;const e=a.theirsEnd-a.theirsStart;for(let r=0;r<e;r+=1)t.set(a.theirsStart+r,a.oursStart+r)}return t},Sa=(e,t,a,r)=>{const n=e.sourceStart+e.count;let i=e.sourceStart;for(;i<n;){const o=e.finalStart+(i-e.sourceStart),s=t.get(i);if(void 0===s){let e=i+1;for(;e<n&&!t.has(e);)e+=1;r.push({finalStart:o,count:e-i,sourceStart:i}),i=e}else{let e=i+1,r=s+1;for(;e<n&&t.get(e)===r;)e+=1,r+=1;a.push({finalStart:o,count:e-i,sourceStart:s}),i=e}}},Da=async(e,a)=>{if(/^[0-9a-f]{40}$/.test(a))return a;for(const r of Xe(a))try{return await t.resolveRef(e,r,{peel:!0})}catch{}const r=await Yt(e,a);if(void 0!==r)return r;throw t.refNotFound(a)},Ca=async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);return r.data},Ma=async(e,t)=>(await Ca(e,t)).tree,Aa=async(t,a)=>{const r=await dt(t);if("symbolic"!==r.kind)throw e.unsupportedOperation(a,"cannot run with detached HEAD");return r.target},Na=new TextEncoder,Pa="HEAD",La=async(a,r)=>{const n=t.joinPath(a.layout.workDir,r),i=await a.fs.lstat(n).catch(()=>{});if(void 0===i)throw e.worktreeFileAbsent(r);return i.isSymbolicLink?Na.encode(await a.fs.readlink(n)):a.fs.read(n)},Ha=(e,a,r,n,i)=>{const o=t.splitLines(r);for(const t of n)for(const r of Fa(t.count))e.finalized.push({committed:!1,...Ua(t,r,o,a,i)})},_a=(t,a)=>{if(void 0===a)return t;const{start:r,end:n}=a;if(!Number.isInteger(r)||!Number.isInteger(n))throw e.invalidOption("-L","line numbers must be integers");if(r<1)throw e.invalidOption("-L",`invalid line number: ${r}`);if(r>t.length)throw e.invalidOption("-L",`file has only ${t.length} lines`);if(n<r)throw e.invalidOption("-L",`range end ${n} precedes start ${r}`);const i=Math.min(n,t.length);return t.filter(e=>e.finalLine>=r&&e.finalLine<=i)},ja=async(e,a)=>{const r=await Ca(e.ctx,a.commit),n=t.splitLines(a.blob);let i,o=a.entries;for(const n of r.parents){const s=await Wa(e.ctx,n,r.tree,a.path);if(void 0===s)continue;i??={commit:n,path:s.sourcePath};const{passed:c,kept:d}=Oa(o,t.diffLines(s.blob,a.blob));za(e,n,s.sourcePath,s.date,s.blob,c),o=d}Ba(e,a,r,n,o,i)},Ba=(e,t,a,r,n,i)=>{const o=0===a.parents.length,c=s(a.message);for(const s of n)for(const n of Fa(s.count))e.finalized.push({committed:!0,commit:t.commit,author:a.author,committer:a.committer,summary:c,boundary:o,...Ua(s,n,r,t.path,i)})},Ua=(e,t,a,r,n)=>({finalLine:e.finalStart+t+1,sourceLine:e.sourceStart+t+1,sourcePath:r,...void 0!==n?{previous:n}:{},content:a[e.sourceStart+t]}),Fa=e=>Array.from({length:e},(e,t)=>t),Wa=async(e,a,r,n)=>{const i=await Ca(e,a),o=i.committer.timestamp,s=await Ga(e,i.tree,n);if(void 0!==s)return{blob:s,sourcePath:n,date:o};const c=await qa(e,i.tree,r,n);return void 0!==c?{blob:(await t.readBlob(e,c.blobId)).content,sourcePath:c.sourcePath,date:o}:void 0},qa=async(e,a,r,n)=>{const i=await t.diffTrees(e,a,r,{recursive:!0,detectRenames:!0});for(const e of i.changes)if("rename"===e.type&&e.newPath===n)return{sourcePath:e.oldPath,blobId:e.oldId}},za=(e,a,r,n,i,o)=>{0!==o.length&&t.enqueue(e.queue,{oid:a,date:n,value:{commit:a,path:r,blob:i,entries:o}})},Ga=async(e,a,r)=>{const n=(await t.flattenTree(e,a)).entries.get(r);if(void 0!==n)return(await t.readBlob(e,n.id)).content},Va=new TextEncoder,Xa=async(e,a,r)=>{const n=t.validateRefName(a),i=t.validateRefName(r),o=t.looseRefPath(e.layout.gitDir,n),s=Va.encode(t.serializeSymbolicRef(i));await t.atomicWriteRef(e,n,o,s)},Ka="refs/heads/",Ya=async e=>{await st(e);const a=`${e.layout.gitDir}/refs/heads`;if(!await e.fs.exists(a))return{branches:[]};const r=await dt(e),n="symbolic"===r.kind&&r.target.startsWith(Ka)?r.target:void 0,i=await e.fs.readdir(a),o=[];for(const a of i){if(!a.isFile)continue;const r=`${Ka}${a.name}`,i=await t.resolveRef(e,r);o.push({name:r,id:i,current:r===n})}return o.sort((e,t)=>Za(e.name,t.name)),{branches:o}},Za=(e,t)=>e<t?-1:e>t?1:0,Ja=async(a,r)=>{await st(a);const n=t.validateRefName(`${Ka}${r.name}`),i=r.startPoint??"HEAD",o=await tr(a,i),s=`branch: Created from ${i}`;try{await t.updateRef(a,n,o,!0===r.force?{reflogMessage:s}:{expected:"absent",reflogMessage:s})}catch(t){if(t instanceof e.TsgitError&&"REF_UPDATE_CONFLICT"===t.data.code)throw e.branchExists(n);throw t}return{name:n,id:o}},Qa=async(a,r)=>{await st(a);const n=t.validateRefName(`${Ka}${r.name}`),i=await dt(a);if("symbolic"===i.kind&&i.target===n)throw e.cannotDeleteCheckedOutBranch(n);if(!await a.fs.exists(`${a.layout.gitDir}/${n}`))throw e.branchNotFound(n);return await t.updateRef(a,n,t.ZERO_OID,{delete:!0}),{name:n}},er=async(a,r)=>{await st(a);const n=t.validateRefName(`${Ka}${r.from}`),i=t.validateRefName(`${Ka}${r.to}`),o=await t.resolveRef(a,n),s=`branch: renamed ${n} to ${i}`,c=await t.readReflog(a,n);try{await t.updateRef(a,i,o,!0===r.force?{reflogMessage:s}:{expected:"absent",reflogMessage:s})}catch(t){if(t instanceof e.TsgitError&&"REF_UPDATE_CONFLICT"===t.data.code)throw e.branchExists(i);throw t}c.length>0&&await t.writeReflog(a,i,[...c,...await t.readReflog(a,i)]),await t.updateRef(a,n,t.ZERO_OID,{delete:!0});const d=await dt(a);return"symbolic"===d.kind&&d.target===n&&await Xa(a,"HEAD",i),{from:n,to:i}},tr=async(a,r)=>{if(/^[0-9a-f]{40}$/.test(r))return r;const n="HEAD"===r?["HEAD"]:[`${Ka}${r}`,r];for(const e of n)try{return await t.resolveRef(a,e)}catch{}throw e.branchNotFound(r)},ar="# v2 git bundle",rr="# v3 git bundle",nr=/^[0-9a-f]{40}$/,ir=e=>nr.test(e),or=(a,r)=>{const n=a.slice(1),i=n.indexOf(" "),o=-1===i?n:n.slice(0,i),s=-1===i?"":n.slice(i+1);if(!ir(o))throw e.bundleBadHeader(r,"malformed-header");return{oid:t.ObjectId.from(o),comment:s}},sr=(a,r)=>{const n=a.indexOf(" ");if(-1===n)throw e.bundleBadHeader(r,"malformed-header");const i=a.slice(0,n),o=a.slice(n+1);if(!ir(i))throw e.bundleBadHeader(r,"malformed-header");return{oid:t.ObjectId.from(i),name:t.RefName.from(o)}},cr=(t,a)=>{const r=(e=>{for(let t=0;t<e.length-1;t++)if(10===e[t]&&10===e[t+1])return t+2;return-1})(t);if(-1===r)return((t,a)=>{const r=t.subarray(0,Math.min(t.length,64)),n=(new TextDecoder).decode(r);if(n.split("\n")[0]===rr)throw e.bundleUnsupportedVersion(a,3);if(!n.startsWith(ar)&&!n.startsWith(rr))throw e.bundleBadHeader(a,"not-a-bundle");throw e.bundleBadHeader(a,"malformed-header")})(t,a);const{version:n,hashAlgorithm:i,prerequisites:o,refs:s}=((t,a,r)=>{const n=(new TextDecoder).decode(t.subarray(0,a)).split("\n").filter(e=>e.length>0),[i,...o]=n;if(void 0===i)throw e.bundleBadHeader(r,"not-a-bundle");const{version:s,hashAlgorithm:c}=((t,a)=>{if(t===rr)throw e.bundleUnsupportedVersion(a,3);if(t!==ar)throw e.bundleBadHeader(a,"not-a-bundle");return{version:2,hashAlgorithm:"sha1"}})(i,r),d=[],u=[];for(const t of o)if(t.startsWith("-"))d.push(or(t,r));else{if(t.startsWith("@"))throw e.bundleBadHeader(r,"malformed-header");u.push(sr(t,r))}return{version:s,hashAlgorithm:c,prerequisites:d,refs:u}})(t,r,a);return{version:n,hashAlgorithm:i,prerequisites:o,refs:s,packOffset:r}},dr=e=>`-${e.oid} ${e.comment}\n`,ur=e=>`${e.oid} ${e.name}\n`,lr=async(a,r,n,i,o=0)=>{if(i.has(r))return;if(i.add(r),o>1024)throw t.treeDepthExceeded(o);if(a.signal?.aborted)throw e.operationAborted();n.add(r);const s=await t.readObject(a,r);if("tree"===s.type)for(const e of s.entries)t.isGitlink(e.mode)||(t.isDirectory(e.mode)?await lr(a,e.id,n,i,o+1):n.add(e.id))},fr=async(a,r,n,i,o,s=0)=>{if(o.has(r))return;if(o.add(r),s>1024)throw t.treeDepthExceeded(s);if(a.signal?.aborted)throw e.operationAborted();n.has(r)||t.tryEmit(i,r);const c=await t.readObject(a,r);if("tree"===c.type)for(const e of c.entries)t.isGitlink(e.mode)||(t.isDirectory(e.mode)?await fr(a,e.id,n,i,o,s+1):n.has(e.id)||t.tryEmit(i,e.id))},mr=["refs/","refs/tags/","refs/heads/","refs/remotes/"],hr=(e,t)=>{const a=t;if(a.includes(e))return e;for(const t of mr){const r=`${t}${e}`;if(a.includes(r))return r}},wr=async(e,a,r)=>{const n=await t.resolveRef(e,a);r.refs.push({name:a,oid:n}),r.wants.push(n)},pr=(e,t)=>t.filter(t=>t.startsWith(e)).sort(),gr=async(e,t,a,r)=>{const n=await fa(e,t),i=hr(t,a);void 0!==i&&r.refs.push({name:i,oid:n}),r.wants.push(n)},yr=async(e,t,a)=>{const r=await fa(e,t);a.haves.push(await Ft(e,r,"commit"))},vr=async(e,t,a,r)=>{const[n,i]=t,o=await fa(e,n);r.haves.push(await Ft(e,o,"commit"));const s=await fa(e,i),c=hr(i,a);void 0!==c&&r.refs.push({name:c,oid:s}),r.wants.push(s)},br=async(e,a,r,n)=>{const[i,o]=a,s=await fa(e,i),c=hr(i,r);void 0!==c&&n.refs.push({name:c,oid:s}),n.wants.push(s);const d=await fa(e,o),u=hr(o,r);void 0!==u&&n.refs.push({name:u,oid:d}),n.wants.push(d);const l=await t.mergeBase(e,[await Ft(e,s,"commit"),await Ft(e,d,"commit")],{all:!0});n.haves.push(...l)},kr=async(a,r)=>{await it(a);const n=await t.enumerateRefs(a),i={refs:[],wants:[],haves:[]};await(async(e,t,a,r)=>{if(!0===t.branches)for(const t of pr("refs/heads/",a))await wr(e,t,r);if(!0===t.tags)for(const t of pr("refs/tags/",a))await wr(e,t,r);if(!0===t.all){for(const t of pr("refs/",a))await wr(e,t,r);await wr(e,"HEAD",r)}})(a,r,n,i),await(async(e,t,a,r)=>{for(const n of t)"tip"in n?await gr(e,n.tip,a,r):"exclude"in n?await yr(e,n.exclude,r):"range"in n?await vr(e,n.range,a,r):await br(e,n.symmetricRange,a,r)})(a,r.revs??[],n,i);const o=(e=>{const t=new Set;return e.filter(e=>!t.has(e.name)&&(t.add(e.name),!0))})(i.refs);if(i.refs.splice(0,i.refs.length,...o),0===i.refs.length)throw e.bundleEmpty("no-refs");const s=await(async(e,a)=>{if(0===a.wants.length)return{objects:[],boundary:[]};const r={emitted:new Set,boundary:new Set,cap:a.maxObjects??t.MAX_PUSH_OBJECTS},n=new Set,i=await(async(e,a,r)=>{const n=new Set,i=new Set;if(0===a.length)return{commits:n,objects:i};for await(const o of t.walkCommits(e,{from:a,ignoreMissing:!0}))n.add(o.id),i.add(o.id),await lr(e,o.data.tree,i,r);return{commits:n,objects:i}})(e,a.haves,n),o=[];for(const n of a.wants)o.push(await t.resolveTagChain(e,n,e=>{t.tryEmit(r,e)}));return await(async(e,a,r,n,i)=>{for await(const o of t.walkCommits(e,{from:a,until:[...r.commits],ignoreMissing:!0})){t.tryEmit(n,o.id),await fr(e,o.data.tree,r.objects,n,i);for(const e of o.data.parents)r.commits.has(e)&&n.boundary.add(e)}})(e,o,i,r,n),{objects:[...r.emitted],boundary:[...r.boundary]}})(a,{wants:i.wants,haves:i.haves});if(0===s.objects.length)throw e.bundleEmpty("no-objects");const d=await(async(a,r)=>Promise.all([...r].sort().map(async r=>{const n=((t,a)=>{if("commit"!==t.type)throw e.bundlePrerequisiteNotCommit(a,t.type);return t})(await t.readObject(a,r),r);return{oid:r,comment:c(n.data.message)}})))(a,s.boundary),u=await t.buildPack(a,{oids:s.objects}),l=(e=>{const t=(a=e.prerequisites,[...a].sort((e,t)=>e.oid.localeCompare(t.oid)));var a;const r=["# v2 git bundle\n"];for(const e of t)r.push(dr(e));for(const t of e.refs)r.push(ur(t));return r.push("\n"),(new TextEncoder).encode(r.join(""))})({prerequisites:d,refs:i.refs});return{version:2,bytes:((e,t)=>{const a=new Uint8Array(e.length+t.length);return a.set(e,0),a.set(t,e.length),a})(l,u.bytes),refs:i.refs,prerequisites:d,objectCount:u.objectCount,packSha:u.sha}},xr=async(e,t)=>{const a=await Ir(e,t),r=cr(a,t);return{header:r,packBytes:a.subarray(r.packOffset)}},Ir=async(t,a)=>{try{return await t.fs.read(a)}catch(r){if(!(r instanceof e.TsgitError))throw r;if("FILE_NOT_FOUND"===r.data.code||"PERMISSION_DENIED"===r.data.code)throw await Er(t,a);throw r}},Er=async(t,a)=>{try{if((await t.fs.stat(a)).isDirectory)return e.bundleBadHeader(a,"not-a-bundle")}catch{}return e.bundleReadFailed(a)},$r=async(e,t)=>{const{header:a}=await xr(e,t.path),r=Tr(a.refs,t.names);return{version:a.version,refs:r}},Tr=(e,t)=>{if(void 0===t)return e;const a=new Set(t);return e.filter(e=>a.has(e.name))},Or=async(e,a)=>{const{header:r,packBytes:n}=await xr(e,a.path),i=await Dr(e,r.prerequisites);if(i.length>0)return Rr(r,i);await t.verifyPackTrailer(n,e);const o=r.prerequisites.length>0?Sr(e):void 0;return await t.walkPackEntries(e,n,o),Rr(r,[])},Rr=(e,t)=>({version:e.version,hashAlgorithm:e.hashAlgorithm,refs:e.refs,prerequisites:e.prerequisites,missingPrerequisites:t,prerequisitesPresent:0===t.length,recordsCompleteHistory:0===e.prerequisites.length}),Sr=a=>{const r=new Map;return async n=>{if(r.has(n))return r.get(n);const i=await(async(a,r)=>{try{const e=await t.readObject(a,r),n=t.serializeObject(e,a.hashConfig),{contentOffset:i}=t.parseHeader(n);return{type:e.type,content:n.subarray(i)}}catch(t){if(t instanceof e.TsgitError&&"OBJECT_NOT_FOUND"===t.data.code)return;throw t}})(a,n);return r.set(n,i),i}},Dr=async(e,t)=>{const a=[];for(const r of t)await Cr(e,r.oid)&&a.push(r.oid);return a},Cr=async(a,r)=>{try{return await t.readObject(a,r),!1}catch(t){if(t instanceof e.TsgitError&&"OBJECT_NOT_FOUND"===t.data.code)return!0;throw t}},Mr=e=>"string"==typeof e?t.ObjectId.from(e):e,Ar="refs/heads/",Nr="checkout:materialize",Pr=async(e,a)=>{if("HEAD"===a){const a=await t.resolveRef(e,"HEAD");return(await t.readTree(e,a)).id}return(await t.readTree(e,a)).id},Lr=async(a,r)=>{await st(a),await ct(a,"checkout"),await lt(a);const n=(e=>"rev"in e&&void 0!==e.rev)(r),i=(e=>"paths"in e&&void 0!==e.paths)(r);if(n&&i)throw e.invalidOption("paths","cannot be combined with rev");if(!n&&!i)throw e.invalidOption("rev","either rev or paths must be provided");a.progress.start(Nr);try{return i?await(async(a,r)=>{if(0===r.paths.length)throw e.invalidOption("paths","must not be empty");const n=r.source??"index",{matcher:i,literalMustMatch:o}=It(r.paths),s=(await(async(e,a)=>{if("index"===a)return(await t.readIndex(e)).entries.map(e=>e.path);const r=await Pr(e,a),n=[];for await(const a of t.walkTree(e,r))a.mode!==t.FILE_MODE.DIRECTORY&&n.push(a.path);return n})(a,n)).filter(e=>G(i,e));Tt(o,s);const c=new Set(s);if(0===c.size)return{branch:void 0,id:await t.resolveRef(a,"HEAD"),detached:!1,changedPaths:0};const d="index"===n?await(async(e,a)=>{const r=await t.readIndex(e),n=await t.synthesizeTreeFromIndex(e,r.entries);return t.materializeTree(e,{targetTree:n,currentIndex:r,force:!0,forceRewriteAll:!0,paths:a})})(a,c):await(async(e,a,r)=>{const n=await t.acquireIndexLock(e);try{const i=await t.readIndex(e),o=await t.materializeTree(e,{targetTree:a,currentIndex:i,force:!0,forceRewriteAll:!0,paths:r});return await n.commit(o.newIndexEntries),o}finally{await n.release()}})(a,await Pr(a,n),c),u=await t.resolveRef(a,"HEAD");return await t.runInformationalHook(a,"post-checkout",{args:[u,u,"0"]}),{branch:void 0,id:u,detached:!1,changedPaths:d.written+d.deleted}})(a,r):await(async(a,r)=>{const n=!0===r.detach||/^[0-9a-f]{40}$/.test(r.rev),i=await dt(a),o=await t.resolveRef(a,"HEAD");let s,c;if(n)c=await(async(e,a)=>/^[0-9a-f]{40}$/.test(a)?a:t.resolveRef(e,a))(a,r.rev);else{if(s=t.validateRefName(`${Ar}${r.rev}`),!await a.fs.exists(`${a.layout.gitDir}/${s}`))throw e.branchNotFound(s);c=await t.resolveRef(a,s)}const d=await t.readTree(a,c),u=await t.loadSparseMatcher(a),l=await t.acquireIndexLock(a);let f;try{const e=await t.readIndex(a);f=await t.materializeTree(a,{targetTree:d.id,currentIndex:e,force:r.force??!1,...void 0!==u?{sparse:u}:{}}),await l.commit(f.newIndexEntries)}finally{await l.release()}const m=(e=>{if("symbolic"!==e.kind)return e.id.slice(0,7);if(e.target.startsWith(Ar))return e.target.slice(11);const t=e.target.lastIndexOf("/");return-1===t?e.target:e.target.slice(t+1)})(i);return n?(await a.fs.writeUtf8(`${a.layout.gitDir}/HEAD`,`${c}\n`),await t.recordRefUpdate(a,"HEAD",o,c,`checkout: moving from ${m} to ${c.slice(0,7)}`)):(await Xa(a,"HEAD",s),await t.recordRefUpdate(a,"HEAD",o,c,`checkout: moving from ${m} to ${r.rev}`)),await t.runInformationalHook(a,"post-checkout",{args:[o,c,"1"]}),{branch:n?void 0:s,id:c,detached:n,changedPaths:f.written+f.deleted}})(a,r)}finally{a.progress.end(Nr)}},Hr={kind:"text"},_r={kind:"union"},jr={kind:"binary"},Br=(e,a)=>!1===a?Promise.resolve(jr):!0===a||"unspecified"===a?Promise.resolve(Hr):(async(e,a)=>{if("text"===a)return Hr;if("binary"===a)return jr;if("union"===a)return _r;const r=(await t.readConfig(e)).merge?.get(a);return void 0===r?.driver?Hr:void 0===r.name?{kind:"external",command:r.driver}:{kind:"external",command:r.driver,name:r.name}})(e,a.set),Ur=new Uint8Array(0),Fr=(a,r=se)=>{let n,i;return async o=>{await(i??=t.findFirstValuelessInSection(a,"merge",["driver","name"]).then(t=>{if(void 0!==t)throw e.configMissingValue(t.key,t.source,t.line)}));const[s,c,d]=await Promise.all([t.readBlob(a,o.ourId,{maxBytes:K}),t.readBlob(a,o.theirId,{maxBytes:K}),void 0!==o.baseId?t.readBlob(a,o.baseId,{maxBytes:K}):Promise.resolve(void 0)]),{driver:u,markerSize:l}=await(async(e,a,r)=>{const{sources:n,macros:i}=await a.sourcesForPath(r);return{driver:await Br(e,t.resolveAttribute(n,r,"merge",i)),markerSize:ft(t.resolveAttribute(n,r,"conflict-marker-size",i))}})(a,await(n??=t.buildAttributeProvider(a)),o.path);return"binary"===u.kind?{status:"conflict",conflictType:"binary",markedBytes:s.content}:"external"===u.kind&&void 0!==a.command?(async(e,t,a)=>{const{gitDir:r,workDir:n}=e.layout,i=`${r}/MERGE_DRIVER_O`,o=`${r}/MERGE_DRIVER_A`,s=`${r}/MERGE_DRIVER_B`;await Promise.all([e.fs.write(i,a.base??Ur),e.fs.write(o,a.ours),e.fs.write(s,a.theirs)]);try{const c=((e,t)=>{let a="",r=0;for(;r<e.length;){const n=e[r];if("%"!==n){a+=n,r+=1;continue}const i=e[r+1];void 0!==i?(a+=mt(i,t),r+=2):(a+="%",r+=1)}return a})(a.command,{O:i,A:o,B:s,L:String(a.markerSize),P:a.path,S:a.labels.base,X:a.labels.ours,Y:a.labels.theirs}),{exitCode:d}=await t.run({command:c,cwd:n,env:{GIT_DIR:r},...void 0!==e.signal?{signal:e.signal}:{}}),u=await e.fs.read(o);return 0===d?{status:"clean",bytes:u}:{status:"conflict",conflictType:"content",markedBytes:u}}finally{await Promise.all([e.fs.rm(i),e.fs.rm(o),e.fs.rm(s)])}})(a,a.command,{command:u.command,base:d?.content,ours:s.content,theirs:c.content,path:o.path,markerSize:l,labels:r}):function(e,a,r,n={}){return t.isBinary(a)||t.isBinary(r)||void 0!==e&&t.isBinary(e)?{status:"conflict",conflictType:"binary",markedBytes:a}:void 0===e?t.bytesEqual(a,r)?{status:"clean",bytes:a}:pe(new Uint8Array(0),a,r,n):t.bytesEqual(a,e)?{status:"clean",bytes:r}:t.bytesEqual(r,e)||t.bytesEqual(a,r)?{status:"clean",bytes:a}:pe(e,a,r,n)}(d?.content,s.content,c.content,{favor:"union"===u.kind?"union":"none",markerSize:l,labels:{ours:r.ours,theirs:r.theirs}})}},Wr=(e,t)=>{if("unchanged"===e.status)return!1;if("resolved-known"===e.status){const a=t.get(e.path);return void 0===a||a.id!==e.id||a.mode!==e.mode}return"resolved-merged"===e.status||"resolved-deleted"===e.status&&t.has(e.path)},qr=(e,t,a)=>{const r=new Set;for(const t of e)"conflict"!==t.status&&Wr(t,a)&&r.add(t.path);for(const e of t)for(const t of m(e))r.add(t);return r},zr=async(e,a)=>{try{return await e.fs.lstat(t.joinPath(e.layout.workDir,a)),!0}catch{return!1}},Gr=async(e,a,r)=>{const n=(e=>{const t=new Map;for(const a of e.entries)0===a.flags.stage&&t.set(a.path,a);return t})(r),i=await t.maybeBuildAttributeProvider(e),o=[],s=[];for(const r of a){const a=n.get(r);void 0!==a?t.isWorkingTreeModified(await t.compareWorkingTreeEntry(e,a,i))&&o.push(r):await zr(e,r)&&s.push(r)}return{localChanges:[...o].sort(t.comparePaths),untracked:[...s].sort(t.comparePaths)}},Vr=e=>({ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:e,uid:0,gid:0,fileSize:0}),Xr=(e,a,r)=>({...Vr(r),id:a,flags:t.STAGE0_FLAGS,path:e}),Kr=async(e,a)=>{const{ourPath:r,theirPath:n,ourId:i,ourMode:o,theirId:s,theirMode:c}=a;if(void 0!==r&&void 0!==i&&void 0!==o){const a=await t.readBlob(e,i,{maxBytes:K});await t.writeWorkingTreeEntry(e,r,a.content,o)}if(void 0!==n&&void 0!==s&&void 0!==c){const a=await t.readBlob(e,s,{maxBytes:K});await t.writeWorkingTreeEntry(e,n,a.content,c)}},Yr=new Set(["rename-rename","gitlink"]),Zr=async(e,a)=>{const r=[];for(const n of a)if("resolved-deleted"!==n.status&&"conflict"!==n.status){if("resolved-merged"===n.status){const a=await t.writeObject(e,{type:"blob",content:n.bytes,id:""});r.push(Xr(n.path,a,n.mode));continue}r.push(Xr(n.path,n.id,n.mode))}return t.synthesizeTreeFromIndex(e,r)},Jr=async(e,a)=>{const r=a.mergedMode??a.ourMode??a.theirMode;if(void 0===r)return;const n=await(async(e,a)=>{if(void 0!==a.conflictContent)return a.conflictContent;if("modify-delete"===a.type){const r=a.ourId??a.theirId;return void 0!==r?(await t.readBlob(e,r,{maxBytes:K})).content:void 0}return void 0!==a.ourId?(await t.readBlob(e,a.ourId,{maxBytes:K})).content:void 0})(e,a);void 0!==n&&await t.writeWorkingTreeEntry(e,a.path,n,r)},Qr=(e,t)=>{const a=[];for(const t of e)"unchanged"!==t.status&&"resolved-known"!==t.status||a.push(Xr(t.path,t.id,t.mode));const r=[...a,...p(t,Vr)];return r.sort((e,t)=>e.path<t.path?-1:e.path>t.path?1:e.flags.stage-t.flags.stage),r},en=async(a,r)=>{const[n,i,o]=await Promise.all([void 0!==r.baseTree?t.flattenTree(a,r.baseTree):Promise.resolve(void 0),t.flattenTree(a,r.oursTree),t.flattenTree(a,r.theirsTree)]),s=await Ce(n,i,o,Fr(a,r.labels),r.labels);s.cleanMerge||(t=>{for(const a of t)if(Yr.has(a.type))throw e.unsupportedOperation("apply-merge",`conflict type '${a.type}' not supported (path=${a.path})`)})(s.conflicts);const c=qr(s.outcomes,s.conflicts,i.entries),d=await Gr(a,c,r.currentIndex);if(d.localChanges.length>0||d.untracked.length>0)return{kind:"would-overwrite",localChanges:d.localChanges,untracked:d.untracked};if(s.cleanMerge){const e=await Zr(a,s.outcomes);return{kind:"clean",mergedTree:e,result:await t.materializeTree(a,{targetTree:e,currentIndex:r.currentIndex,force:!0})}}return await(async(e,a,r,n)=>{for(const r of a)if("conflict"!==r.status&&n.has(r.path))if("resolved-deleted"!==r.status)if("resolved-merged"!==r.status){if("resolved-known"===r.status){const a=await t.streamBlob(e,r.id);await t.writeWorkingTreeFileStream(e,r.path,a)}}else await t.writeWorkingTreeFile(e,r.path,r.bytes);else await t.removeWorkingTreeFile(e,r.path);for(const t of r)"distinct-types"!==t.type?await Jr(e,t):await Kr(e,t)})(a,s.outcomes,s.conflicts,c),{kind:"conflict",conflicts:s.conflicts,indexEntries:Qr(s.outcomes,s.conflicts)}},tn=/^(pick|revert) (\S+) (.*)$/,an=async(e,a)=>{if(!await e.fs.exists(a))return;const r=(await e.fs.readUtf8(a)).trim();return 0!==r.length?t.ObjectId.from(r):void 0},rn=e=>`${e.layout.gitDir}/sequencer`,nn=e=>`${rn(e)}/head`,on=e=>`${rn(e)}/todo`,sn=e=>`${rn(e)}/opts`,cn=(e,t)=>e.fs.writeUtf8(nn(e),`${t}\n`),dn=e=>an(e,nn(e)),un=(e,t)=>e.fs.writeUtf8((e=>`${rn(e)}/abort-safety`)(e),`${t}\n`),ln=(e,t)=>e.fs.writeUtf8(on(e),(e=>e.map(e=>`${e.command} ${e.oid} ${e.subject}\n`).join(""))(t)),fn=async t=>{const a=on(t);if(!await t.fs.exists(a))return;const r=(t=>{const a=[];for(const r of t.split("\n")){if(""===r||r.startsWith("#"))continue;const t=tn.exec(r);if(null===t)throw e.invalidSequencerTodo(r);a.push({command:t[1],oid:t[2],subject:t[3]})}return a})(await t.fs.readUtf8(a)),n=[];for(const a of r){const r=await Yt(t,a.oid);if(void 0===r)throw e.invalidSequencerTodo(`cannot resolve commit ${a.oid}`);n.push({command:a.command,oid:r,subject:a.subject})}return n},mn=async(e,t)=>{(t.noCommit||t.recordOrigin||t.allowEmpty)&&await e.fs.writeUtf8(sn(e),(e=>{let t="[options]\n";return e.noCommit&&(t+="\tno-commit = true\n"),e.recordOrigin&&(t+="\trecord-origin = true\n"),e.allowEmpty&&(t+="\tallow-empty = true\n"),t})(t))},hn=(e,t)=>e.some(e=>"options"===e.section.toLowerCase()&&e.entries.some(e=>e.key.toLowerCase()===t&&null!==e.value&&"true"===e.value.toLowerCase())),wn=async e=>{const t=rn(e);await e.fs.exists(t)&&await e.fs.rmRecursive(t)},pn=async(e,a)=>{await ht(e,a.target),await t.updateRef(e,a.branch,a.target,{reflogMessage:`reset: moving to ${a.target}`}),await a.clearHead(e),await rt(e),await wn(e)},gn=e=>`${e.layout.gitDir}/CHERRY_PICK_HEAD`,yn=e=>an(e,gn(e)),vn=async e=>{const t=gn(e);await e.fs.exists(t)&&await e.fs.rm(t)},bn=(e,t)=>`${e.replace(/\s+$/,"")}\n\n# Conflicts:\n${t.map(e=>`#\t${e}\n`).join("")}`,kn=async(e,a,r)=>{const n=await t.flattenTree(e,r),i=new Set(a.map(e=>e.path)),o=[];for(const e of a){const t=n.entries.get(e.path);void 0!==t&&t.id===e.id&&t.mode===e.mode||o.push(e.path)}for(const e of n.entries.keys())i.has(e)||o.push(e);return o},xn=async(e,a)=>{const r=await t.maybeBuildAttributeProvider(e),n=[];for(const i of a)i.flags.skipWorktree||"unchanged"!==await t.compareWorkingTreeEntry(e,i,r)&&n.push(i.path);return n},In=async(a,r)=>{const{stage0:n,unmerged:i}=(e=>{const t=[],a=[];for(const r of e)0===r.flags.stage?t.push(r):a.push(r.path);return{stage0:t,unmerged:a}})((await t.readIndex(a)).entries),o=new Set([...i,...await kn(a,n,r),...await xn(a,n)]);if(o.size>0)throw e.workingTreeDirty({localChanges:[...o].sort(t.comparePaths),untracked:[]})},En=t=>{if(void 0!==t.explicit)return t.explicit;if(void 0!==t.configUser)return t.configUser;throw e.authorUnconfigured()},$n=t=>{if(void 0!==t.explicit)return t.explicit;if(void 0!==t.author)return t.author;if(void 0!==t.configUser)return t.configUser;throw e.authorUnconfigured()},Tn=(t,a)=>{const r=(e=>{const t=[];for(const a of e.split("\n")){const e=a.replace(o,"");(""!==e||0!==t.length&&""!==t[t.length-1])&&t.push(e)}return""===t[t.length-1]&&t.pop(),0===t.length?"":`${t.join("\n")}\n`})(t);if(""===r&&!a.allowEmpty)throw e.emptyCommitMessage();return r},On=e=>e.split("\n").filter(e=>!e.startsWith("#")).join("\n"),Rn=async e=>{const a=(await t.readConfig(e)).user;void 0===a&&await t.assertNoValuelessConfig(e,"user",void 0,["name","email"]);const r=void 0!==a?{name:a.name,email:a.email,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:"+0000"}:void 0;return $n(void 0!==r?{configUser:r}:{})},Sn=e=>e.parents.length>=2,Dn=e=>e.map(e=>({path:e.path,type:e.type})),Cn=/^(.+)\.\.(.+)$/,Mn=async(e,a,r)=>{const n=new Set;for await(const r of t.walkCommits(e,{from:[a]}))n.add(r.id);const i=[];for await(const a of t.walkCommits(e,{from:[r],until:[...n]}))i.push(a.id);return i.reverse()},An=async(e,t,a,r,n)=>{await cn(e,t.sequenceHead),await ln(e,await(async(e,t)=>{const a=[];for(const r of t){const t=await Ca(e,r);a.push({command:"pick",oid:r,subject:s(t.message)})}return a})(e,a)),await un(e,r),await mn(e,{recordOrigin:n.recordOrigin,allowEmpty:n.allowEmpty,noCommit:!1})},Nn=async(t,a,r,n,i,o)=>{let s=n;const c=[];for(let n=0;n<a.length;n+=1){const d=a[n],u=await Ca(t,d);if(Sn(u))throw o.multiPick&&await An(t,o,a.slice(n),s,i),e.cherryPickMergeNoMainline(d);const l=await Ln(t,d,u,r,s,i);if("committed"===l.kind){c.push({source:d,created:l.id}),s=l.id;continue}await Hn(t,d,u,"conflict"===l.kind?l.conflicts:void 0,i),o.multiPick&&await An(t,o,a.slice(n),s,i);const f=a.length-(n+1);return"conflict"===l.kind?{kind:"conflict",commit:d,conflicts:Dn(l.conflicts),remaining:f}:{kind:"empty",commit:d,remaining:f}}return await wn(t),{kind:"picked",commits:c}},Pn=(e,t,a)=>a?((e,t)=>`${e.replace(/\s+$/,"")}\n\n(cherry picked from commit ${t})`)(e,t):e,Ln=async(a,r,n,i,o,c)=>{const d=n.parents[0],u=void 0!==d?await Ma(a,d):void 0,l=await Ma(a,o),f=await t.acquireIndexLock(a);try{const d=await t.readIndex(a),m=await en(a,{baseTree:u,oursTree:l,theirsTree:n.tree,currentIndex:d,labels:ne(r,s(n.message))});if("would-overwrite"===m.kind)throw e.workingTreeDirty({localChanges:m.localChanges,untracked:m.untracked});if("conflict"===m.kind)return await f.commit(m.indexEntries),{kind:"conflict",conflicts:m.conflicts};if(m.mergedTree===l&&!c.allowEmpty)return{kind:"empty"};await f.commit(m.result.newIndexEntries);const h=await(async(e,a,r,n,i,o)=>{const s=await Rn(e);return t.createCommit(e,{tree:i,parents:[n],author:r.author,committer:s,message:Tn(Pn(r.message,a,o.recordOrigin),{allowEmpty:!1}),extraHeaders:[]})})(a,r,n,o,m.mergedTree,c);return await t.updateRef(a,i,h,{expected:o,reflogMessage:`cherry-pick: ${s(n.message)}`}),{kind:"committed",id:h}}finally{await f.release()}},Hn=async(e,t,a,r,n)=>{await(async(e,t)=>{await e.fs.writeUtf8(gn(e),`${t}\n`)})(e,t);const i=Pn(a.message,t,n.recordOrigin),o=void 0!==r&&r.length>0?bn(i,h(r)):i;await Je(e,o)},_n=async(a,r)=>{await st(a),await ct(a,"cherry-pick"),await lt(a);const n=await dt(a);if("symbolic"!==n.kind)throw e.unsupportedOperation("cherry-pick","cannot cherry-pick with detached HEAD");const i=await(async(a,r)=>{try{return await t.resolveRef(a,r)}catch(t){if(t instanceof e.TsgitError&&"REF_NOT_FOUND"===t.data.code)throw e.noInitialCommit();throw t}})(a,n.target),o=await(async(t,a)=>{const r=[];for(const n of a){if(n.includes("...")||n.includes("^"))throw e.invalidOption("commits",`unsupported revision form '${n}' (use a commit-ish or A..B)`);const a=Cn.exec(n);if(null===a){r.push(await Da(t,n));continue}const i=await fa(t,a[1]),o=await fa(t,a[2]);r.push(...await Mn(t,i,o))}return r})(a,r.commits);return await In(a,await Ma(a,i)),!0===r.noCommit?(async(a,r)=>{const n=await t.acquireIndexLock(a);try{let i=await t.readIndex(a);for(let o=0;o<r.length;o+=1){const c=r[o],d=await Ca(a,c);if(Sn(d))throw e.cherryPickMergeNoMainline(c);const u=d.parents[0],l=void 0!==u?await Ma(a,u):void 0,f=await t.synthesizeTreeFromIndex(a,i.entries),m=await en(a,{baseTree:l,oursTree:f,theirsTree:d.tree,currentIndex:i,labels:ne(c,s(d.message))});if("would-overwrite"===m.kind)throw e.workingTreeDirty({localChanges:m.localChanges,untracked:m.untracked});if("conflict"===m.kind)return await n.commit(m.indexEntries),{kind:"conflict",commit:c,conflicts:Dn(m.conflicts),remaining:r.length-(o+1)};i={...i,entries:m.result.newIndexEntries}}return await n.commit(i.entries),{kind:"no-commit",sources:r}}finally{await n.release()}})(a,o):Nn(a,o,n.target,i,{recordOrigin:r.recordOrigin??!1,allowEmpty:r.allowEmpty??!1},{multiPick:o.length>1,sequenceHead:i})},jn=async(e,a)=>{if(void 0!==await dn(e)){const a=await(async e=>{const a=sn(e);if(!await e.fs.exists(a))return{recordOrigin:!1,allowEmpty:!1,noCommit:!1};const r=t.parseIniSections(await e.fs.readUtf8(a),a);return{noCommit:hn(r,"no-commit"),recordOrigin:hn(r,"record-origin"),allowEmpty:hn(r,"allow-empty")}})(e);return{recordOrigin:a.recordOrigin,allowEmpty:a.allowEmpty}}return{recordOrigin:!1,allowEmpty:a.allowEmpty??!1}},Bn=async(a,r={})=>{await st(a),await ct(a,"cherry-pick --continue");const n=await yn(a),i=await fn(a);if(void 0===n&&(void 0===i||0===i.length))throw e.noOperationInProgress("cherry-pick");const o=await dt(a);if("symbolic"!==o.kind)throw e.unsupportedOperation("cherry-pick --continue","cannot continue with detached HEAD");const c=await jn(a,r);let d=await t.resolveRef(a,o.target);const u=[];if(void 0!==n){const r=void 0!==i?i.length-1:0,l=await(async(a,r,n,i,o)=>{const c=await t.readIndex(a);(t=>{const a=new Set;for(const e of t)0!==e.flags.stage&&a.add(e.path);if(a.size>0)throw e.mergeHasConflicts(a.size,[...a])})(c.entries);const d=await t.synthesizeTreeFromIndex(a,c.entries);if(d===await Ma(a,i)&&!o.allowEmpty)return{empty:!0};const u=await(async(e,a,r,n,i)=>{const o=await Ca(e,a),c=await Rn(e),d=Tn(On(await tt(e)??""),{allowEmpty:!1}),u=await t.createCommit(e,{tree:i,parents:[r],author:o.author,committer:c,message:d,extraHeaders:[]});return await t.updateRef(e,n,u,{expected:r,reflogMessage:`commit (cherry-pick): ${s(d)}`}),u})(a,r,i,n,d);return await vn(a),await rt(a),{created:u}})(a,n,o.target,d,c);if("empty"in l)return{kind:"empty",commit:n,remaining:r};u.push({source:n,created:l.created}),d=l.created}const l=(i??[]).slice(void 0!==n?1:0).map(e=>e.oid);if(0===l.length)return await wn(a),{kind:"picked",commits:u};const f=await dn(a)??d,m=await Nn(a,l,o.target,d,c,{multiPick:!0,sequenceHead:f});return"picked"===m.kind?{kind:"picked",commits:[...u,...m.commits]}:m},Un=async(a,r={})=>{await st(a),await ct(a,"cherry-pick --skip");const n=await yn(a),i=await fn(a);if(void 0===n&&(void 0===i||0===i.length))throw e.noOperationInProgress("cherry-pick");const o=await Aa(a,"cherry-pick --skip"),s=await t.resolveRef(a,o),c=await jn(a,r);await ht(a,s),await vn(a),await rt(a);const d=(i??[]).slice(1).map(e=>e.oid);if(0===d.length)return await wn(a),{kind:"picked",commits:[]};const u=await dn(a)??s;return Nn(a,d,o,s,c,{multiPick:!0,sequenceHead:u})},Fn=async a=>{await st(a),await ct(a,"cherry-pick --abort");const r=await yn(a),n=await dn(a);if(void 0===r&&void 0===n)throw e.noOperationInProgress("cherry-pick");const i=await Aa(a,"cherry-pick --abort"),o=n??await t.resolveRef(a,i);return await pn(a,{branch:i,target:o,clearHead:vn}),{head:o,branch:i}},Wn=async(e,a)=>{const r=t.validateRefName(a.initialBranch),n=e.layout.gitDir;try{await e.fs.mkdir(n),await e.fs.writeUtf8(`${n}/HEAD`,`ref: refs/heads/${r}\n`),await e.fs.writeUtf8(`${n}/config`,(i=a.bare,`[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = ${i?"true":"false"}\n`)),await e.fs.mkdir(`${n}/refs/heads`),await e.fs.mkdir(`${n}/refs/tags`),await e.fs.mkdir(`${n}/objects/info`),await e.fs.mkdir(`${n}/objects/pack`),await e.fs.writeUtf8(`${n}/info/exclude`,"# git ls-files --others --exclude-from=.git/info/exclude\n# Lines that start with '#' are comments.\n# For a project mostly in C, the following would be a good set of\n# exclude patterns (uncomment them if you want to use them):\n# *.[oa]\n# *~\n"),await e.fs.writeUtf8(`${n}/description`,"Unnamed repository; edit this file 'description' to name the repository.\n")}catch(t){throw await e.fs.rmRecursive(n).catch(()=>{}),t}var i;return{gitDir:n,initialBranch:r,bare:a.bare}},qn={attempts:3,backoff:"exponential",baseMs:250,maxDelayMs:5e3},zn=(e,t={})=>{const r=void 0!==t.logger?Gn(t.logger):void 0;let n=e.transport;return n=a.withRetry(t.retry??qn)(n),void 0!==t.auth&&(n=a.withAuth(t.auth)(n)),void 0!==r&&(n=a.withLogging({logger:r})(n)),n},Gn=e=>({log:t=>e.log(Vn(t))}),Vn=e=>"request"===e.kind||"response"===e.kind?{...e,url:Kn(e.url),headers:Xn(e.headers)}:{...e,url:Kn(e.url),errorMessage:Kn(e.errorMessage)},Xn=e=>{const t={};for(const[a,r]of Object.entries(e))t[a]=Kn(r);return t},Kn=e=>{let t="";for(let a=0;a<e.length;a+=1){const r=e.charCodeAt(a);t+=9===r||10===r?e[a]:r<32||r>126?`\\x${r.toString(16).padStart(2,"0").toUpperCase()}`:e[a]}return t},Yn={"git-upload-pack":"application/x-git-upload-pack-advertisement","git-receive-pack":"application/x-git-receive-pack-advertisement"},Zn=async(a,n,i,o)=>{const s=t.buildDiscoveryUrl(i,o),c=await n.request({url:s,method:"GET",headers:{accept:Yn[o]},...void 0!==a.signal?{signal:a.signal}:{}});if(200!==c.statusCode)throw e.httpError(c.statusCode,`${o} discovery returned ${c.statusCode}`);const d=t.decodePktStream(r.readableStreamToAsyncIterable(c.body));return t.parseAdvertisedRefs(d,o)},Jn=async(e,t,a)=>Zn(e,t,a,"git-upload-pack"),Qn=e=>{const a=t.CLIENT_CAPABILITIES_FETCH.filter(e=>"multi_ack_detailed"!==e&&"thin-pack"!==e&&"no-progress"!==e&&e!==t.AGENT);return[...t.negotiateCapabilities(e,a),t.AGENT]},ei=e=>{const t=new Set,a=[];for(const r of e)t.has(r.id)||(t.add(r.id),a.push(r.id));return a},ti=e=>e.includes("filter"),ai="clone:discover",ri=async(t,a)=>{if(await t.fs.exists(`${t.layout.gitDir}/HEAD`))throw e.targetDirectoryNotEmpty(t.layout.workDir);if(""===a.url)throw e.remoteAdvertisesNoRefs();const r=void 0!==a.filter?He(Le(a.filter)):void 0;t.progress.start(ai);try{const e=await Wn(t,{initialBranch:a.initialBranch??"main",bare:a.bare??!1});try{return await ni(t,a,e.gitDir,r)}catch(e){throw await t.fs.rmRecursive(t.layout.gitDir).catch(()=>{}),e}}finally{t.progress.end(ai)}},ni=async(a,r,n,i)=>{const o=zn(a,{...void 0!==a.config?.auth?{auth:a.config.auth}:{}}),s=await Jn(a,o,r.url);if(0===s.refs.length)throw e.remoteAdvertisesNoRefs();if(void 0!==i&&!ti(s.capabilities))throw t.remoteFilterUnsupported();const c=Qn(s.capabilities),d=ei(s.refs),u=await t.fetchPack(a,o,{wants:d,haves:[],capabilities:c,url:r.url,progressOp:"clone:write-objects",...void 0!==r.depth?{depth:r.depth}:{},...void 0!==i?{filter:i,promisor:!0}:{}});u.shallow.length>0&&await t.updateShallow(a,{shallow:u.shallow,unshallow:u.unshallow});const l=await oi(a,s,r.url),f=await di(a,s,r.url);return await ii(a,r.url,ci(s),i),{path:n,head:f,fetchedRefs:l}},ii=async(e,a,r,n)=>{await t.updateConfigEntries(e,[{section:"remote",subsection:"origin",key:"url",value:a},{section:"remote",subsection:"origin",key:"fetch",value:"+refs/heads/*:refs/remotes/origin/*"},...void 0!==r?[{section:"branch",subsection:r,key:"remote",value:"origin"},{section:"branch",subsection:r,key:"merge",value:`refs/heads/${r}`}]:[],...void 0!==n?[{section:"core",key:"repositoryformatversion",value:"1"},{section:"remote",subsection:"origin",key:"promisor",value:"true"},{section:"remote",subsection:"origin",key:"partialclonefilter",value:n},{section:"extensions",key:"partialClone",value:"origin"}]:[]])},oi=async(e,t,a)=>{const r=ci(t),n=[];for(const i of t.refs)if("HEAD"!==i.name){if(i.name.startsWith("refs/heads/")){const t=i.name.slice(11),o=`refs/remotes/origin/${t}`;if(await si(e,o,i.id,a),n.push({name:o,id:i.id}),void 0!==r&&t===r){const t=i.name;await si(e,t,i.id,a),n.push({name:t,id:i.id})}continue}if(i.name.startsWith("refs/tags/")){const t=i.name;await si(e,t,i.id,a),n.push({name:t,id:i.id});continue}e.logger?.debug?.("clone: skipping unsupported ref namespace",{name:i.name})}return n},si=async(e,a,r,n)=>{const i=`${e.layout.gitDir}/${a}`;await e.fs.writeUtf8(i,`${r}\n`),await t.recordRefUpdate(e,a,t.ZERO_OID,r,`clone: from ${n}`)},ci=e=>{const t=e.capabilities.find(e=>e.startsWith("symref=HEAD:refs/heads/"));if(void 0!==t)return t.slice(23)},di=async(e,t,a)=>{const r=ci(t),n=t.head?.id;if(void 0!==r){const t=`refs/heads/${r}`;return await e.fs.writeUtf8(`${e.layout.gitDir}/HEAD`,`ref: ${t}\n`),await ui(e,n,a),t}if(void 0!==t.head)return await e.fs.writeUtf8(`${e.layout.gitDir}/HEAD`,`${t.head.id}\n`),void await ui(e,n,a)},ui=async(e,a,r)=>{void 0!==a&&await t.recordRefUpdate(e,"HEAD",t.ZERO_OID,a,`clone: from ${r}`)},li=e=>`${e.layout.gitDir}/REVERT_HEAD`,fi=e=>an(e,li(e)),mi=async e=>{const t=li(e);await e.fs.exists(t)&&await e.fs.rm(t)},hi=(e,t)=>{return`Revert ${a=s(e.message),`"${a.replace(/([\\"])/g,"\\$1")}"`}\n\nThis reverts commit ${t}.\n`;var a},wi=async(a,r)=>{await st(a),await ct(a,"commit");const n=await gi(a),{mergeHead:i,cherryPickHead:o,revertHead:s}=n,c=yi(n);await lt(a,void 0!==c?{except:c}:{});const d=r.noVerify??!1;await(async(e,a)=>{a||await t.runHook(e,"pre-commit")})(a,d);const u=void 0!==i||void 0!==o||void 0!==s,l=u?"merge":"message",f=await bi(a,r,u),m=await t.readConfig(a),h=Ei(m.user);void 0===r.author&&void 0===h&&await t.assertNoValuelessConfig(a,"user",void 0,["name","email"]);const w=En($i(r.author,h)),p=$n(Ti(r.committer,w,h)),g=await t.readIndex(a);Ii(g.entries);const y=await Si(a,g.entries),v=await dt(a),b="symbolic"===v.kind?await Oi(a,v.target):v.id,k=xi(b,i);if(!r.allowEmpty&&void 0!==b&&void 0===i&&await Ri(a,b)===y)throw e.nothingToCommit();const x=await(async(e,a,r)=>{if(void 0===e.hooks)return a;const n=`${e.layout.gitDir}/COMMIT_EDITMSG`;await e.fs.writeUtf8(n,a),await t.runHook(e,"prepare-commit-msg",{args:[n,r.source]}),r.noVerify||await t.runHook(e,"commit-msg",{args:[n]});const i=await e.fs.readUtf8(n);return Tn(i,{allowEmpty:r.allowEmptyMessage})})(a,f,{noVerify:d,allowEmptyMessage:r.allowEmptyMessage??!1,source:l}),I={tree:y,parents:k,author:w,committer:p,message:x,extraHeaders:[]},E=await t.createCommit(a,I),$="symbolic"===v.kind?v.target:void 0,T=ki(x,b,i,o);return await pi(a,{branch:$,id:E,parentId:b,reflogMessage:T}),await vi(a,n),await t.runInformationalHook(a,"post-commit"),{id:E,tree:y,branch:$,parents:k}},pi=async(e,a)=>{const{branch:r,id:n,parentId:i,reflogMessage:o}=a;void 0===r?(await e.fs.writeUtf8(`${e.layout.gitDir}/HEAD`,`${n}\n`),await t.recordRefUpdate(e,"HEAD",i??t.ZERO_OID,n,o)):await t.updateRef(e,r,n,void 0!==i?{expected:i,reflogMessage:o}:{reflogMessage:o})},gi=async e=>({mergeHead:await et(e),cherryPickHead:await yn(e),revertHead:await fi(e)}),yi=e=>void 0!==e.mergeHead?"merge":void 0!==e.cherryPickHead?"cherry-pick":void 0!==e.revertHead?"revert":void 0,vi=async(e,t)=>{if(void 0===t.mergeHead)return void 0!==t.cherryPickHead?(await vn(e),void await rt(e)):void(void 0!==t.revertHead&&(await mi(e),await rt(e)));await at(e)},bi=async(e,t,a)=>{if(t.message.length>0||!a)return Tn(t.message,{allowEmpty:t.allowEmptyMessage??!1});const r=await tt(e);return Tn(On(r??""),{allowEmpty:t.allowEmptyMessage??!1})},ki=(e,t,a,r)=>{const n=s(e);return void 0===t?`commit (initial): ${n}`:void 0!==a?`commit (merge): ${n}`:void 0!==r?`commit (cherry-pick): ${n}`:`commit: ${n}`},xi=(e,t)=>{const a=[];return void 0!==e&&a.push(e),void 0!==t&&a.push(t),a},Ii=t=>{const a=new Set;for(const e of t)0!==e.flags.stage&&a.add(e.path);if(a.size>0)throw e.mergeHasConflicts(a.size,[...a])},Ei=e=>{if(void 0!==e)return{name:e.name,email:e.email,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:"+0000"}},$i=(e,t)=>{const a={};return void 0!==e&&(a.explicit=e),void 0!==t&&(a.configUser=t),a},Ti=(e,t,a)=>{const r={};return void 0!==e&&(r.explicit=e),void 0!==t&&(r.author=t),void 0!==a&&(r.configUser=a),r},Oi=async(e,a)=>{try{return await t.resolveRef(e,a)}catch{return}},Ri=async(e,a)=>{const r=await t.readObject(e,a);return"commit"!==r.type?t.ZERO_OID:r.data.tree},Si=async(e,t)=>{const a={files:new Map,subdirs:new Map};for(const e of t)Di(a,e.path.split("/"),e);return Ci(e,a)},Di=(e,t,a)=>{if(1===t.length)return void e.files.set(t[0],{id:a.id,mode:a.mode});const[r,...n]=t,i=r;let o=e.subdirs.get(i);void 0===o&&(o={files:new Map,subdirs:new Map},e.subdirs.set(i,o)),Di(o,n,a)},Ci=async(e,a)=>{const r=[];for(const[e,t]of a.files)r.push({mode:t.mode,name:e,id:t.id});const n=await Promise.all(Array.from(a.subdirs).map(async([t,a])=>({name:t,id:await Ci(e,a)})));for(const{name:e,id:t}of n)r.push({mode:"40000",name:e,id:t});return t.writeTree(e,r)},Mi=e=>e,Ai=async(e,a)=>(await it(e),void 0===a.scope?await t.getConfigValue({ctx:e,key:a.key}):await t.getConfigValue({ctx:e,key:a.key,scope:a.scope})),Ni=async(e,a)=>(await it(e),void 0===a.scope?await t.getAllConfigValues({ctx:e,key:a.key}):await t.getAllConfigValues({ctx:e,key:a.key,scope:a.scope})),Pi=async(e,a)=>{await it(e);const r=void 0===a.scope?await t.readConfigSections({ctx:e}):await t.readConfigSections({ctx:e,scope:a.scope}),n=[];for(const{scope:e,section:i}of r)for(const r of i.entries){const o=t.qualifyKey(i,r.key);a.keyPattern.test(o)&&(void 0===a.valuePattern||a.valuePattern.test(r.value??""))&&n.push({key:Mi(o),value:r.value,scope:e})}return{entries:n}},Li=async(e,a)=>{await it(e);const r=void 0===a?.scope?await t.readConfigSections({ctx:e}):await t.readConfigSections({ctx:e,scope:a.scope}),n=[];for(const{scope:e,section:a}of r)for(const r of a.entries){const i=t.qualifyKey(a,r.key);n.push({key:Mi(i),value:r.value,scope:e})}return{entries:n}},Hi=async(a,r)=>{await it(a);const n=r.scope??"local",i=await t.getAllConfigValues({ctx:a,key:r.key,scope:n});if(i.values.length>1)throw e.configMultipleValues(r.key,i.values.length,"overwrite",n);return await t.setConfigEntry({ctx:a,key:r.key,value:r.value,scope:n}),{key:r.key,value:r.value,scope:n}},_i=async(a,r)=>{await it(a);const n=r.scope??"local",i=await t.getAllConfigValues({ctx:a,key:r.key,scope:n});if(0===i.values.length)return{key:r.key,scope:n,removed:!1};if(i.values.length>1)throw e.configMultipleValues(r.key,i.values.length,"remove",n);const[o]=i.values;return await t.unsetConfigEntry({ctx:a,key:r.key,scope:n}),{key:r.key,scope:n,removed:!0,previousValue:o.value}},ji=async(e,a)=>{await it(e);const r=a.scope??"local",n=await t.getAllConfigValues({ctx:e,key:a.key,scope:r});return 0===n.values.length?{key:a.key,scope:r,removed:0}:(await t.unsetAllConfigEntries({ctx:e,key:a.key,scope:r}),{key:a.key,scope:r,removed:n.values.length})},Bi=async(e,a)=>{await it(e);const r=a.scope??"local";return await t.renameConfigSection({ctx:e,oldName:a.oldName,newName:a.newName,scope:r}),{oldName:a.oldName,newName:a.newName,scope:r}},Ui=async(e,a)=>{await it(e);const r=a.scope??"local";return await t.removeConfigSection({ctx:e,sectionName:a.name,scope:r}),{name:a.name,scope:r}},Fi=async(t,a={})=>{if(await st(t),await ct(t,"merge --continue"),void 0===await et(t))throw e.noOperationInProgress("merge");return wi(t,Wi(a))},Wi=e=>({message:e.message??"",...void 0!==e.author&&{author:e.author},...void 0!==e.committer&&{committer:e.committer},...void 0!==e.noVerify&&{noVerify:e.noVerify}}),qi=(e,t)=>e.depth!==t.depth?e.depth-t.depth:e.foundOrder-t.foundOrder,zi=e=>t.compileGlob(e,{anchored:!0}),Gi=(e,t)=>t?e.startsWith("refs/")?e.slice(5):e:e.startsWith("refs/tags/")?e.slice(10):e,Vi=(e,t)=>t.priority>e.priority||2===t.priority&&t.taggerDate>e.taggerDate,Xi=async(e,a)=>{let r=await t.readObject(e,a),n=!1,i=0;for(let a=0;"tag"===r.type;a+=1){if(t.exceedsMaxPeelDepth(a))return;n||(i=r.data.tagger?.timestamp??0),n=!0,r=await t.readObject(e,r.data.object)}if("commit"===r.type)return{commit:r,viaTag:n,taggerDate:i}},Ki=["candidates","exactMatch","firstParent","dirty","broken"],Yi=e=>void 0===e?[]:"string"==typeof e?[e]:e,Zi=t=>{if(void 0!==t.candidates&&(!Number.isInteger(t.candidates)||t.candidates<0))throw e.invalidOption("candidates",`expected a non-negative integer, got ${t.candidates}`);return!0===t.exactMatch?0:t.candidates??10},Ji=(e,t)=>(e=>{const t=[...e].map(e=>"*"===e?".*":"?"===e?".":e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("");return new RegExp(`^${t}$`)})(e).test(t),Qi=e=>({...e,generation:e.generation+1,distance:e.distance+1}),eo=(e,t)=>({...e,steps:[...to(e),{kind:"parent",number:t}],generation:0,distance:e.distance+65535}),to=e=>e.generation>0?[...e.steps,{kind:"ancestor",count:e.generation}]:e.steps,ao=e=>void 0===e?[]:"string"==typeof e?[e]:e,ro=async(e,t)=>Ft(e,await fa(e,t),"commit"),no=async(e,t)=>Ft(e,await fa(e,t),"tree"),io=async(e,a,r={})=>{await st(e);const n=await ro(e,a??"HEAD"),i=(e=>({qualifies:t=>"HEAD"!==t&&!(e.tags&&!t.startsWith("refs/tags/"))&&(t=>0===e.refs.length||e.refs.some(e=>Ji(e,t)))(t)&&!(t=>e.exclude.some(e=>Ji(e,t)))(t)}))((e=>({tags:!0===e.tags,refs:ao(e.refs),exclude:ao(e.exclude)}))(r)),o=[...await t.enumerateRefs(e)].filter(e=>i.qualifies(e)).sort(),s=new Map;for(const t of o)await oo(e,t,s);const c=s.get(n);return void 0===c?{oid:n,ref:void 0,tagDeref:!1,steps:[]}:{oid:n,ref:c.ref,tagDeref:c.tagDeref,steps:to(c)}},oo=async(e,t,a)=>{const r=await so(e,t,a);if(void 0===r)return;const n=[r];for(;n.length>0;){const t=n.pop(),r=a.get(t.id),i=await co(e,t,r,a);for(let e=i.length-1;e>=0;e-=1)n.push(i[e])}},so=async(e,a,r)=>{const n=await t.getRefStore(e).resolveDirect(a);if("direct"!==n.kind)return;const i=await Xi(e,n.id);if(void 0===i)return;const o={ref:a,tagDeref:i.viaTag,fromTag:a.startsWith("refs/tags/"),taggerDate:i.viaTag?i.taggerDate:i.commit.data.committer.timestamp,generation:0,distance:0,steps:[]};return uo(r,i.commit.id,o)?i.commit:void 0},co=async(e,a,r,n)=>{const i=[],o=a.data.parents;for(let a=0;a<o.length;a+=1){const s=o[a],c=0===a?Qi(r):eo(r,a+1);if(!uo(n,s,c))continue;const d=await t.readObject(e,s);"commit"===d.type&&i.push(d)}return i},uo=(e,t,a)=>{const r=e.get(t);return!(void 0!==r&&!((e,t)=>e.fromTag!==t.fromTag?t.fromTag:e.distance!==t.distance?e.distance>t.distance:e.taggerDate>t.taggerDate)(r,a)||(e.set(t,a),0))},lo="status:scan",fo=async e=>{await st(e);const a=await dt(e),r="symbolic"===a.kind?a.target:void 0,n="direct"===a.kind,i=await t.readIndex(e),o=function(e){const t=[],a=new Map;for(const r of e.entries)if(0===r.flags.stage)t.push(r);else{const e=a.get(r.path)??{};a.set(r.path,l(e,r))}return{staged:t,unmerged:a}}(i),s=new Map(o.staged.map(e=>[e.path,e])),c=new Set(o.unmerged.keys());for(const e of s.keys())c.add(e);e.progress.start(lo);try{const a=((e,t)=>{let a=0,r=0;return{tick:()=>{a+=1;const n=Math.floor(a/100);n>r&&(r=n,e.update(t,a))}}})(e.progress,lo),d=await t.maybeBuildAttributeProvider(e),u=await mo(e,o.staged,a,d),l=await ho(e,c),f=await t.readHeadTree(e),m=wo(i,f,o.unmerged),h=po(m,u,f,s),w=await ko(e,o.unmerged);return{branch:r,detached:n,changes:h,untracked:l,unmerged:w,clean:0===h.length&&0===l.length&&0===w.length}}finally{e.progress.end(lo)}},mo=async(e,a,r,n)=>{const i=new Map;return await Promise.all(a.map(async a=>{a.flags.skipWorktree||i.set(a.path,await t.compareWorkingTreeDelta(e,a,n)),r.tick()})),i},ho=async(e,a)=>{const r=await t.buildRepoIgnorePredicate(e),n=[];for await(const{path:i}of t.walkWorkingTree(e,{ignore:r}))a.has(i)||n.push(i);return n.sort(t.comparePaths)},wo=(e,a,r)=>{const n=new Map;for(const i of u(e,a).changes){const e=t.primaryPath(i);r.has(e)||n.set(e,yo(i))}return n},po=(e,a,r,n)=>{const i=new Set(e.keys());for(const[e,t]of a)void 0!==vo(t.status)&&i.add(e);return[...i].map(t=>go(t,e.get(t),a.get(t),r,n.get(t))).sort((e,a)=>t.comparePaths(e.path,a.path))},go=(e,t,a,r,n)=>{const i=r?.entries.get(e),o=void 0===a?void 0:vo(a.status);return{path:e,...void 0!==t&&{staged:t},...void 0!==o&&{unstaged:o},...void 0!==i&&{head:{id:i.id,mode:i.mode}},...void 0!==n&&{index:{id:n.id,mode:n.mode}},...void 0!==a?.worktreeMode&&{worktree:{mode:a.worktreeMode}}}},yo=e=>"add"===e.type?"added":"delete"===e.type?"deleted":"type-change"===e.type?"type-changed":"modify"===e.type&&e.oldId===e.newId?"mode-changed":"modified",vo=e=>"absent"===e?"deleted":"type-changed"===e?"type-changed":"mode-changed"===e?"mode-changed":"modified"===e?"modified":void 0,bo=e=>({id:e.id,mode:e.mode}),ko=(e,t)=>Promise.all([...t].map(async([t,a])=>{const r=await xo(e,t);return{kind:n(a),path:t,...a.stage1&&{base:bo(a.stage1)},...a.stage2&&{ours:bo(a.stage2)},...a.stage3&&{theirs:bo(a.stage3)},...void 0!==r&&{worktree:{mode:r}}}})),xo=async(e,a)=>{const r=await e.fs.lstat(t.joinPath(e.layout.workDir,a)).catch(()=>{});return void 0===r?void 0:t.deriveWorkingMode(r)},Io="refs/tags/",Eo=(e,a,r,n,i)=>({tag:t.RefName.from(i?`refs/${e}`:`${Io}${e}`),name:e,distance:a,oid:r,exact:0===a,dirty:n}),$o=(e,t)=>({tag:void 0,name:"",distance:0,oid:e,exact:!1,dirty:t}),To=(e,t,a)=>({name:t,priority:e.startsWith(Io)?a.viaTag?2:1:0,taggerDate:a.taggerDate}),Oo=e=>[...e].sort(qi)[0],Ro=(e,t,a,r)=>{So([a],e.get(t.id)),Do(e,t,r)},So=(e,t)=>{for(const a of e)void 0!==t&&t.has(a.foundOrder)||(a.depth+=1)},Do=(e,a,r)=>{const n=e.get(a.id);if(void 0!==n)for(const i of t.selectParents(a,r)){const t=Co(e,i);for(const e of n)t.add(e)}},Co=(e,t)=>{let a=e.get(t);return void 0===a&&(a=new Set,e.set(t,a)),a},Mo="fetch:negotiate",Ao=async(a,r={})=>{await st(a);const n=r.remote??"origin",{url:i,filter:o}=await No(a,n);a.progress.start(Mo);try{const s=zn(a,void 0!==a.config?.auth?{auth:a.config.auth}:{}),c=await Jn(a,s,i);if(0===c.refs.length)throw e.remoteAdvertisesNoRefs();if(void 0!==o&&!ti(c.capabilities))throw t.remoteFilterUnsupported();const d=Qn(c.capabilities),u=ei(c.refs),l=await Po(a,n),f=await t.fetchPack(a,s,{wants:u,haves:l,capabilities:d,url:i,progressOp:"fetch:write-objects",...void 0!==r.depth?{depth:r.depth}:{},...void 0!==o?{filter:o,promisor:!0}:{}});(f.shallow.length>0||f.unshallow.length>0)&&await t.updateShallow(a,{shallow:f.shallow,unshallow:f.unshallow});return{remote:n,url:i,updatedRefs:await Bo(a,n,c),prunedRefs:!0===r.prune?await qo(a,n,c):[],shallow:f.shallow,unshallow:f.unshallow}}finally{a.progress.end(Mo)}},No=async(a,r)=>{const n=await t.readConfig(a),i=n.remote?.get(r);if(void 0===i?.url||""===i.url)throw await t.assertNoValuelessConfig(a,"remote",r,["url"]),e.remoteNotConfigured(r);const o=void 0!==i.partialCloneFilter?He(Le(i.partialCloneFilter)):void 0;return{url:i.url,filter:o}},Po=async(e,a)=>{const r=await Lo(e,a);if(0===r.length)return[];const n=new Set,i=[];for(const e of r)if(!n.has(e)&&(n.add(e),i.push(e),i.length>=t.MAX_HAVES))return i;const o=r.slice(0,t.MAX_WALK_SEEDS);for await(const a of t.walkCommits(e,{from:o,ignoreMissing:!0,verifyHash:!1}))if(!n.has(a.id)&&(n.add(a.id),i.push(a.id),i.length>=t.MAX_HAVES))break;return i},Lo=async(e,a)=>{const r=[],n=[`refs/remotes/${a}`,"refs/tags"];for(const t of n){const a=`${e.layout.gitDir}/${t}`;await e.fs.exists(a)&&await Ho(e,a,r)}const i=`refs/remotes/${a}/`,o=await t.getRefStore(e).getPackedRefs();for(const e of o.entries)(e.name.startsWith(i)||e.name.startsWith("refs/tags/"))&&r.push(e.id);return r},Ho=async(e,t,a)=>{const r=await e.fs.readdir(t);for(const n of r){const r=`${t}/${n.name}`;if(n.isDirectory){await Ho(e,r,a);continue}const i=(await e.fs.readUtf8(r)).trim();jo(i)&&a.push(i)}},_o=/^[0-9a-f]{40}([0-9a-f]{24})?$/i,jo=e=>_o.test(e),Bo=async(e,a,r)=>{const n=[];for(const i of r.refs){const r=Uo(a,i);if(void 0===r)continue;const o=await Wo(e,r);o!==i.id?(await t.updateRef(e,r,i.id,{reflogMessage:`fetch ${a}: storing head`}),n.push({name:r,oldId:o,newId:i.id})):n.push({name:r,oldId:o,newId:i.id})}return n},Uo=(e,t)=>{if("HEAD"!==t.name&&Fo(t.name)){if(t.name.startsWith("refs/heads/")){const a=`refs/remotes/${e}/${t.name.slice(11)}`;if(!Fo(a))return;return a}return t.name.startsWith("refs/tags/")?t.name:void 0}},Fo=e=>{try{return t.validateRefName(e),!0}catch{return!1}},Wo=async(e,a)=>{t.validateRefName(a);const r=`${e.layout.gitDir}/${a}`;if(!await e.fs.exists(r))return;const n=(await e.fs.readUtf8(r)).trim();return jo(n)?n:void 0},qo=async(e,t,a)=>{const r=new Set(a.refs.filter(e=>e.name.startsWith("refs/heads/")).map(e=>e.name.slice(11))),n=`${e.layout.gitDir}/refs/remotes/${t}`;if(!await e.fs.exists(n))return[];const i=[];return await zo(e,n,"",r,t,i),i},zo=async(e,a,r,n,i,o)=>{const s=await e.fs.readdir(a);for(const c of s){const s=`${a}/${c.name}`,d=""===r?c.name:`${r}/${c.name}`;if(c.isDirectory){await zo(e,s,d,n,i,o);continue}if(n.has(d))continue;const u=`refs/remotes/${i}/${d}`;if(!Fo(u)){e.logger?.warn?.("fetch.prune: skipping unsafe ref name",{name:u});continue}const l=u;try{await t.updateRef(e,l,t.ZERO_OID,{delete:!0})}catch(t){if(Go(t)){e.logger?.warn?.("fetch.prune: skipping packed-only ref",{name:l});continue}throw t}o.push(l)}},Go=t=>t instanceof e.TsgitError&&"UNSUPPORTED_OPERATION"===t.data.code&&"delete-packed-ref"===t.data.operation,Vo=async(e,a,r)=>!!await e.fs.exists(t.looseObjectPath(e.layout.gitDir,r))||void 0!==await a.lookup(r),Xo=async(a,r)=>{await st(a);const n=await t.readConfig(a),i=n.extensions?.partialClone;if(void 0===i)return{kind:"no-promisor"};const o=n.remote?.get(i)?.url;if(void 0===o||""===o)throw e.remoteNotConfigured(i);const s=await(async(e,a)=>{const r=t.createPackRegistry(e),n=new Set,i=[];for(const t of a)n.has(t)||(n.add(t),await Vo(e,r,t)||i.push(t));return i})(a,r);if(0===s.length)return{kind:"fetched",remote:i,requested:r.length,fetched:0};const c=zn(a,void 0!==a.config?.auth?{auth:a.config.auth}:{}),d=await Jn(a,c,o),u=Qn(d.capabilities);try{await t.fetchPack(a,c,{wants:s,haves:[],capabilities:u,url:o,progressOp:"fetch-missing:write-objects",promisor:!0})}catch(t){if(!(t=>t instanceof e.TsgitError&&"FILE_EXISTS"===t.data.code)(t))throw t}return{kind:"fetched",remote:i,requested:r.length,fetched:s.length}},Ko="badFilemode",Yo="badTree",Zo="badTreeSha1",Jo="duplicateEntries",Qo="emptyName",es="fullPathname",ts="hasDot",as="hasDotdot",rs="hasDotgit",ns="largePathname",is="nullSha1",os="treeNotSorted",ss="zeroPaddedFilemode",cs="gitattributesBlob",ds="gitattributesSymlink",us="gitignoreSymlink",ls="gitmodulesBlob",fs="gitmodulesSymlink",ms="mailmapSymlink",hs="badDate",ws="badDateOverflow",ps="badObjectSha1",gs="badParentSha1",ys="badTimezone",vs="missingAuthor",bs="missingCommitter",ks="missingEmail",xs="missingNameBeforeEmail",Is="missingSpaceBeforeDate",Es="missingSpaceBeforeEmail",$s="missingTree",Ts="multipleAuthors",Os="nulInCommit",Rs="nulInHeader",Ss="zeroPaddedDate",Ds="badTagName",Cs="missingObject",Ms="missingTag",As="missingTagEntry",Ns="missingTaggerEntry",Ps="missingType",Ls="missingTypeEntry",Hs="gitmodulesLarge",_s="gitmodulesName",js="gitmodulesParse",Bs="gitmodulesUrl",Us="gitattributesLarge",Fs="gitattributesLineLength",Ws=new Map([[Ko,"info"],[Yo,"error"],[Zo,"error"],[Jo,"error"],[Qo,"warning"],[es,"warning"],[ts,"warning"],[as,"warning"],[rs,"warning"],[ns,"warning"],[is,"warning"],[os,"error"],[ss,"warning"],[cs,"error"],[ds,"info"],[us,"info"],[ls,"error"],[fs,"error"],[ms,"info"],[hs,"error"],[ws,"error"],["badEmail","error"],["badName","error"],[ps,"error"],[gs,"error"],[ys,"error"],["badType","error"],[vs,"error"],[bs,"error"],[ks,"error"],[xs,"error"],[Is,"error"],[Es,"error"],[$s,"error"],[Ts,"error"],[Os,"warning"],[Rs,"error"],["unknownType","error"],["unterminatedHeader","error"],[Ss,"error"],["badGpgsig","error"],[Ds,"info"],[Cs,"error"],[Ms,"error"],[As,"error"],[Ns,"info"],[Ps,"error"],[Ls,"error"],[Hs,"error"],["gitmodulesMissing","error"],[_s,"error"],[js,"info"],["gitmodulesPath","error"],["gitmodulesUpdate","error"],[Bs,"error"],[Us,"error"],[Fs,"error"],["gitattributesMissing","error"]]),qs=new Set([Qo,es,ts,as,rs,ns,Os,is,ss]);function zs(e,t){const a=Ws.get(e)??"error";return t&&"warning"===a&&qs.has(e)?"error":a}const Gs=new TextDecoder,Vs=new TextEncoder;function Xs(e,t,a,r){if(""===e||e.startsWith("#")||e.startsWith(";"))return r;if(e.startsWith("[")){const a=e.indexOf("]");if(-1===a)return!0;const n=e.slice(1,a),i='submodule "';return n.startsWith(i)&&n.endsWith('"')&&t.push(n.slice(i.length,-1)),r}const n=e.indexOf("=");if(-1!==n){const t=e.slice(0,n).trim(),r=e.slice(n+1).trim();"url"===t&&a.push(r)}return r}const Ks=e=>e.startsWith("-");function Ys(e,a,r){return".gitmodules"===r?function(e,a){const r=[];if(e.length>104857600)return r.push({msgId:Hs,severity:zs(Hs,a)}),r;const n=Gs.decode(e),{names:i,urls:o,parseError:s}=function(e){const t=[],a=[];let r=!1;for(const n of e.split("\n"))r=Xs(n.trim(),t,a,r);return{names:t,urls:a,parseError:r}}(n);s&&r.push({msgId:js,severity:zs(js,a)});for(const e of o)Ks(e)&&r.push({msgId:Bs,severity:zs(Bs,a)});for(const e of i)t.isUnsafeSubmoduleName(e)&&r.push({msgId:_s,severity:zs(_s,a)});return r}(e,a):".gitattributes"===r?function(e,t){const a=[];if(e.length>104857600)return a.push({msgId:Us,severity:zs(Us,t)}),a;const r=Gs.decode(e);for(const e of r.split("\n"))if(Vs.encode(e).length>2048)return a.push({msgId:Fs,severity:zs(Fs,t)}),a;return a}(e,a):[]}const Zs=new TextDecoder,Js=/^[0-9a-f]{40}$/,Qs=/^[0-9a-f]{64}$/,ec=/^[+-]\d{4}$/;function tc(e){return Js.test(e)||Qs.test(e)}function ac(e,t){const a=[],r=e.indexOf("<");if(-1===r)return a.push({msgId:ks,severity:zs(ks,t)}),a;const n=e.slice(0,r);n.endsWith(" ")||a.push({msgId:Es,severity:zs(Es,t)}),""===n.trimEnd()&&a.push({msgId:xs,severity:zs(xs,t)});const i=e.indexOf(">",r);if(-1===i)return a.push({msgId:ks,severity:zs(ks,t)}),a;const o=e.slice(i+1);if(!o.startsWith(" "))return a.push({msgId:Is,severity:zs(Is,t)}),a;const[s="",c=""]=o.trim().split(/\s+/),d=function(e,t){return e.startsWith("0")&&e.length>1?{msgId:Ss,severity:zs(Ss,t)}:/^\d+$/.test(e)?function(e){return e.length>19||!(e.length<19)&&e>"9223372036854775807"}(e)?{msgId:ws,severity:zs(ws,t)}:void 0:{msgId:hs,severity:zs(hs,t)}}(s,t);return void 0!==d?(a.push(d),a):(""===c||function(e){if(!ec.test(e))return!1;const t=Number.parseInt(e.slice(1,3),10),a=Number.parseInt(e.slice(3,5),10);return t<24&&a<60}(c)||a.push({msgId:ys,severity:zs(ys,t)}),a)}const rc=new TextDecoder,nc=/^[0-9a-f]{40}$/,ic=/^[0-9a-f]{64}$/,oc=new Set(["blob","tree","commit","tag"]);function sc(e,t,a){const r=[],n=e[t];if(void 0===n||!n.startsWith("tag "))return r.push({msgId:Ms,severity:zs(Ms,a)}),r;const i=n.slice(4);if(""===i)return r.push({msgId:As,severity:zs(As,a)}),r;(i.includes("\0")||i.includes("\n"))&&r.push({msgId:Ds,severity:zs(Ds,a)});const o=e[t+1];if(void 0===o||!o.startsWith("tagger "))return r.push({msgId:Ns,severity:zs(Ns,a)}),r;for(const e of function(e,t){const a=e.indexOf("<");if(-1===a)return[];if(!e.slice(0,a).endsWith(" "))return[{msgId:Es,severity:zs(Es,t)}];const r=e.indexOf(">",a);if(-1===r)return[];const n=e.slice(r+1);if(!n.startsWith(" "))return[];const[i=""]=n.trim().split(/\s+/);return/^\d+$/.test(i)&&function(e){return e.length>19||!(e.length<19)&&e>"9223372036854775807"}(i)?[{msgId:ws,severity:zs(ws,t)}]:[]}(o.slice(7),a))r.push(e);return r}const cc=new TextDecoder,dc=new TextEncoder,uc=new Set(["100644","100755","120000","40000","160000"]);function lc(e){const t="40000"===e.mode||"040000"===e.mode,a=dc.encode(e.name);if(!t)return a;const r=new Uint8Array(a.length+1);return r.set(a),r[a.length]=47,r}function fc(e,a,r,n){const i=[],{mode:o,name:s,sha:c}=e;o.startsWith("0")&&i.push({msgId:ss,severity:zs(ss,n)});const d=o.startsWith("0")?o.slice(1):o;uc.has(d)||i.push({msgId:Ko,severity:zs(Ko,n)}),function(e){for(const t of e)if(0!==t)return!1;return!0}(c)&&i.push({msgId:is,severity:zs(is,n)});for(const e of function(e,t){const a=[];return""===e?(a.push({msgId:Qo,severity:zs(Qo,t)}),a):("."===e&&a.push({msgId:ts,severity:zs(ts,t)}),".."===e&&a.push({msgId:as,severity:zs(as,t)}),".git"===e&&a.push({msgId:rs,severity:zs(rs,t)}),e.includes("/")&&a.push({msgId:es,severity:zs(es,t)}),dc.encode(e).length>4096&&a.push({msgId:ns,severity:zs(ns,t)}),a)}(s,n))i.push(e);r.has(s)&&i.push({msgId:Jo,severity:zs(Jo,n)}),void 0!==a&&t.compareBytes(lc(a),lc(e))>0&&i.push({msgId:os,severity:zs(os,n)});for(const e of function(e,t,a){const r=[],n="120000"===e,i="100644"===e||"100755"===e;return".gitmodules"===t&&(n?r.push({msgId:fs,severity:zs(fs,a)}):i||r.push({msgId:ls,severity:zs(ls,a)})),".gitattributes"===t&&(n?r.push({msgId:ds,severity:zs(ds,a)}):i||r.push({msgId:cs,severity:zs(cs,a)})),".gitignore"===t&&n&&r.push({msgId:us,severity:zs(us,a)}),".mailmap"===t&&n&&r.push({msgId:ms,severity:zs(ms,a)}),r}(o,s,n))i.push(e);return i}function mc(e){const{rawBody:a,kind:r,strict:n,fileName:i}=e;switch(r){case"tree":return function(e,a){const{entries:r,badTree:n}=function(e){const a=[];let r=0;for(;r<e.length;){const n=t.indexOf(e,32,r);if(-1===n||n===r)return{entries:a,badTree:!0};const i=t.indexOf(e,0,n+1);if(-1===i)return{entries:a,badTree:!0};const o=i+1+20;if(o>e.length)return{entries:a,badTree:!0};const s=e.subarray(r,n),c=e.subarray(n+1,i),d=e.subarray(i+1,o),u=cc.decode(s),l=cc.decode(c);a.push({mode:u,name:l,sha:d,offset:r}),r=o}return{entries:a,badTree:!1}}(e);if(n)return[{msgId:Yo,severity:zs(Yo,a)}];const i=[],o=new Set;let s;for(const e of r){for(const t of fc(e,s,o,a))i.push(t);o.add(e.name),s=e}return i}(a,n);case"commit":return function(e,t){const a=Zs.decode(e),{headerText:r,messageBody:n,lines:i}=function(e){const t=e.indexOf("\n\n"),a=-1===t?e:e.slice(0,t);return{headerText:a,messageBody:-1===t?"":e.slice(t+2),lines:a.split("\n")}}(a);if(r.includes("\0"))return[{msgId:Rs,severity:zs(Rs,t)}];const{findings:o,nextIdx:s}=function(e,t){const a=[],r=e[0];if(void 0===r||!r.startsWith("tree "))return a.push({msgId:$s,severity:zs($s,t)}),{findings:a,nextIdx:-1};tc(r.slice(5))||a.push({msgId:Zo,severity:zs(Zo,t)});let n=1;for(;n<e.length;){const r=e[n];if(void 0===r||!r.startsWith("parent "))break;tc(r.slice(7))||a.push({msgId:gs,severity:zs(gs,t)}),n++}return{findings:a,nextIdx:n}}(i,t);if(-1===s)return o;const c=[...o];for(const e of function(e,t,a){const r=[];let n=t;const i=e[n];if(void 0===i||!i.startsWith("author "))return r.push({msgId:vs,severity:zs(vs,a)}),r;for(const e of ac(i.slice(7),a))r.push(e);for(n++;n<e.length&&e[n]?.startsWith("author ");)r.push({msgId:Ts,severity:zs(Ts,a)}),n++;for(;n<e.length&&!e[n]?.startsWith("committer ");)n++;const o=e[n];if(void 0===o||!o.startsWith("committer "))return r.push({msgId:bs,severity:zs(bs,a)}),r;for(const e of ac(o.slice(10),a))r.push(e);return r}(i,s,t))c.push(e);return n.includes("\0")&&c.push({msgId:Os,severity:zs(Os,t)}),c}(a,n);case"tag":return function(e,t){const a=rc.decode(e),r=a.indexOf("\n\n"),n=(-1!==r?a:a.slice(0,r)).split("\n"),{findings:i,nextIdx:o}=function(e,t){const a=[];if(!e[0]?.startsWith("object "))return{findings:[{msgId:Cs,severity:zs(Cs,t)}],nextIdx:-1};var r;if(r=e[0].slice(7),nc.test(r)||ic.test(r)||a.push({msgId:ps,severity:zs(ps,t)}),!e[1]?.startsWith("type "))return a.push({msgId:Ps,severity:zs(Ps,t)}),{findings:a,nextIdx:-1};const n=e[1].slice(5);return""!==n&&oc.has(n)?{findings:a,nextIdx:2}:(a.push({msgId:Ls,severity:zs(Ls,t)}),{findings:a,nextIdx:-1})}(n,t);return-1===o?i:[...i,...sc(n,o,t)]}(a,n);case"blob":return Ys(a,n,i)}}const hc=new Set([".gitmodules",".gitattributes"]);async function wc(a,r,n,i){const o=[];let s=0;const c=await async function(a,r){const n=await t.looseCompressedBytes(a,r);if(void 0!==n){let r;try{r=await a.compressor.inflate(n)}catch{return{ok:!1,msgId:"unterminatedHeader"}}try{const{type:e,contentOffset:a}=t.parseHeader(r);return{ok:!0,kind:e,rawBody:r.subarray(a),hashBytes:r}}catch(t){return{ok:!1,msgId:(t instanceof e.TsgitError&&"INVALID_OBJECT_HEADER"===t.data.code?t.data.reason:"").startsWith("unknown object type")?"unknownType":"unterminatedHeader"}}}try{const e=await t.readObject(a,r,{verifyHash:!1}),n=t.serializeObject(e,a.hashConfig),{contentOffset:i}=t.parseHeader(n);return{ok:!0,kind:e.type,rawBody:n.subarray(i),hashBytes:n}}catch{return{ok:!1,msgId:"badType"}}}(a,r);if(!c.ok)return o.push({type:"bad-object",id:r,objectType:"unknown",msgId:c.msgId,severity:"error"}),{findings:o,exitBit:1};const{kind:d,rawBody:u,hashBytes:l}=c,f="blob"===d?i.get(r):void 0,m=mc(void 0!==f?{rawBody:u,kind:d,strict:n,fileName:f}:{rawBody:u,kind:d,strict:n});for(const{msgId:e,severity:t}of m)o.push({type:"bad-object",id:r,objectType:d,msgId:e,severity:t}),"error"===t&&(s|=1);try{const e=await a.hash.hashHex(l);e!==r&&(o.push({type:"hash-mismatch",id:r,actual:e}),s|=1)}catch{}return{findings:o,exitBit:s}}function pc(e,a){if("commit"===e.type){a.add(e.data.tree);for(const t of e.data.parents)a.add(t)}else if("tree"===e.type)for(const r of e.entries)r.mode!==t.FILE_MODE.GITLINK&&a.add(r.id);else"tag"===e.type&&a.add(e.data.object)}function gc(e,t){e.universe.has(t)?e.reached.has(t)||e.worklist.push(t):e.missingIds.add(t)}function yc(e,a,r){e.reached.add(a),"commit"===r.type&&function(e,t,a){const{tree:r,parents:n}=a.data;e.universe.has(r)?gc(e,r):(e.missingIds.add(r),e.brokenEdges.push({fromId:t,fromType:"commit",toId:r,toType:"tree"}));for(const a of n)e.universe.has(a)?gc(e,a):(e.missingIds.add(a),e.brokenEdges.push({fromId:t,fromType:"commit",toId:a,toType:"commit"}));0===n.length&&e.rootCommits.push(t)}(e,a,r),"tree"===r.type&&function(e,a,r){for(const n of r.entries){if(n.mode===t.FILE_MODE.GITLINK)continue;const r=n.mode===t.FILE_MODE.DIRECTORY?"tree":"blob";e.universe.has(n.id)?gc(e,n.id):(e.missingIds.add(n.id),e.brokenEdges.push({fromId:a,fromType:"tree",toId:n.id,toType:r}))}}(e,a,r),"tag"===r.type&&function(e,t,a){const{object:r,objectType:n,tagName:i}=a.data;e.universe.has(r)?(gc(e,r),e.tagRefs.push({tagId:t,tagName:i,targetId:r,targetType:n})):(e.missingIds.add(r),e.brokenEdges.push({fromId:t,fromType:"tag",toId:r,toType:n}))}(e,a,r)}function vc(e,t,a,r){for(const n of e){const e=r.get(n);null!=e&&a.push({type:t,id:n,objectType:e.type})}}function bc(e,t){const a=t.get(e);return null!=a?a.type:"unknown"}const kc=/^[0-9a-f]{40}$|^[0-9a-f]{64}$/;function xc(e,a,r,n){const i=a.replace(/[\r\n]+$/,"");if(i.startsWith("ref: "))return{findings:[],exitBit:0};if(!kc.test(i)){const a=[];let r=2;return n&&(a.push({type:"bad-ref",ref:e,msgId:"badRefContent",severity:"error"}),r|=8),a.push({type:"bad-ref",ref:e,msgId:"badRefOid",severity:"error",target:t.ZERO_OID}),{findings:a,exitBit:r}}const o=i;return r.has(o)?{findings:[],exitBit:0}:{findings:[{type:"bad-ref",ref:e,msgId:"badRefOid",severity:"error",target:o}],exitBit:2}}function Ic(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||95===e}function Ec(t,a){const r=a?.wholeWord??!1,n=a?.invert??!1,i=t.map(t=>{if(t instanceof RegExp){if(t.flags.includes("u"))throw e.invalidOption("pattern","unicode flag unsupported over byte content");const a=t.flags.replace("y","")+(t.flags.includes("g")?"":"g");return{type:"regex",clone:new RegExp(t.source,a)}}return{type:"fixed",needle:(new TextEncoder).encode(t.fixed)}});return{matchLine(e){const t=function(e){return 10===e[e.length-1]?e.subarray(0,e.length-1):e}(e),a=i.map(e=>{const a="regex"===e.type?function(e,t){const a=function(e){let t="";for(const a of e)t+=String.fromCharCode(a);return t}(e),r=[];t.lastIndex=0;let n=t.exec(a);for(;null!==n;)r.push({start:n.index,end:n.index+n[0].length}),0===n[0].length&&t.lastIndex++,n=t.exec(a);return r}(t,e.clone):function(e,t){if(0===t.length)return[];const a=[];let r=0;e:for(;r<=e.length-t.length;){for(let a=0;a<t.length;a++)if(e[r+a]!==t[a]){r++;continue e}a.push({start:r,end:r+t.length}),r+=t.length}return a}(t,e.needle);return r?function(e,t){return e.filter(e=>{const a=t[e.start-1],r=t[e.end],n=0===e.start||void 0===a||!Ic(a),i=e.end>=t.length||void 0===r||!Ic(r);return n&&i})}(a,t):a}),o=function(e){const t=new Set,a=[];for(const r of e)for(const e of r){const r=`${e.start}:${e.end}`;t.has(r)||(t.add(r),a.push(e))}return a.sort((e,t)=>e.start-t.start||e.end-t.end)}(a);return n?{returned:0===o.length,spans:[]}:{returned:o.length>0,spans:o}}}}const $c=e=>e===t.FILE_MODE.REGULAR||e===t.FILE_MODE.EXECUTABLE;const Tc=async(e,a,r={})=>{const n=await Oc(e,a,r);return"fast-forward"!==n.kind&&"merge"!==n.kind||await t.runInformationalHook(e,"post-merge",{args:["0"]}),n},Oc=async(a,r,n)=>{await st(a),await ct(a,"merge"),await lt(a);const i=await dt(a);if("symbolic"!==i.kind)throw e.unsupportedOperation("merge","cannot merge with detached HEAD");const o=await t.resolveRef(a,i.target),s=await Da(a,r.rev);if(o===s)return{kind:"up-to-date",id:o};const[c]=await t.mergeBase(a,[o,s]);if(c===s)return{kind:"up-to-date",id:o};if(c===o&&"never"!==r.fastForward)return Cc(a,await Zc(a,s),async()=>(await t.updateRef(a,i.target,s,{expected:o,reflogMessage:`${n.reflogAction??`merge ${r.rev}`}: Fast-forward`}),{kind:"fast-forward",id:s,branch:i.target}));if("only"===r.fastForward)throw e.nonFastForward(i.target,o,s);return Dc(a,r,n,i.target,o,s,c)},Rc="merge:write-files",Sc=new Set(["rename-rename","gitlink"]),Dc=async(e,t,a,r,n,i,o)=>{e.progress.start(Rc);try{const s=await Ac(e,n,i,o,t.rev);return"conflict"===s.kind?Lc(e,t,s,n,i):Mc(e,t,a,r,n,i,s.tree)}finally{e.progress.end(Rc)}},Cc=async(a,r,n)=>{const i=await t.acquireIndexLock(a);try{const o=await(async(a,r)=>{const n=await t.readIndex(a);try{return(await t.materializeTree(a,{targetTree:r,currentIndex:n,force:!1})).newIndexEntries}catch(t){throw(t=>t instanceof e.TsgitError&&"CHECKOUT_OVERWRITE_DIRTY"===t.data.code?e.workingTreeDirty({localChanges:t.data.localChanges,untracked:t.data.untracked}):t)(t)}})(a,r);return await i.commit(o),await n()}finally{await i.release()}},Mc=async(e,a,r,n,i,o,s)=>{const c=await Kc(e,a),d=Yc(a,c),u=Tn(a.message??`Merge ${a.rev}`,{allowEmpty:!1}),l={tree:s,parents:[i,o],author:c,committer:d,message:u,extraHeaders:[]};return Cc(e,s,async()=>{const s=await t.createCommit(e,l);return await t.updateRef(e,n,s,{expected:i,reflogMessage:`${r.reflogAction??`merge ${a.rev}`}: Merge made by the 'tsgit' strategy.`}),{kind:"merge",id:s,branch:n,parents:[i,o]}})},Ac=async(e,a,r,n,i)=>{const o=await Zc(e,a),s=await Zc(e,r),c=void 0!==n?await Zc(e,n):void 0,[d,u,l]=await Promise.all([t.flattenTree(e,o),t.flattenTree(e,s),void 0!==c?t.flattenTree(e,c):Promise.resolve(void 0)]),f=((e,t)=>({ours:ee,theirs:e,base:void 0!==t?te(t):""}))(i,n),m=Fr(e,f),h=await Ce(l,d,u,m,f);return h.cleanMerge?{kind:"clean",tree:await Nc(e,h.outcomes)}:{kind:"conflict",outcomes:h.outcomes,conflicts:h.conflicts,ours:d.entries}},Nc=async(e,a)=>{const r=await(async(e,a)=>{const r=[];for(const n of a)if("resolved-deleted"!==n.status&&"conflict"!==n.status){if("resolved-merged"===n.status){const a=await t.writeObject(e,{type:"blob",content:n.bytes,id:""});r.push({path:n.path,id:a,mode:n.mode});continue}r.push({path:n.path,id:n.id,mode:n.mode})}return r})(e,a);return Pc(e,r)},Pc=async(e,a,r=0)=>{if(r>4096)throw t.treeDepthExceeded(r);const{files:n,subdirs:i}=(e=>{const t=[],a=new Map;for(const r of e){const e=r.path.indexOf("/");if(-1===e){t.push(r);continue}const n=r.path.slice(0,e),i={path:r.path.slice(e+1),id:r.id,mode:r.mode},o=a.get(n);void 0===o?a.set(n,[i]):o.push(i)}return{files:t,subdirs:a}})(a),o=await Promise.all(Array.from(i,async([a,n])=>({name:a,id:await Pc(e,n,r+1),mode:t.FILE_MODE.DIRECTORY}))),s=n.map(e=>({name:e.path,id:e.id,mode:e.mode}));return t.writeTree(e,[...s,...o])},Lc=async(a,r,n,i,o)=>{Hc(n.conflicts);const s=await t.readIndex(a),c=qr(n.outcomes,n.conflicts,n.ours),{localChanges:d,untracked:u}=await Gr(a,c,s);if(d.length>0||u.length>0)throw e.workingTreeDirty({localChanges:d,untracked:u});const l=await t.loadSparseMatcher(a),f=await t.acquireIndexLock(a);try{await jc(a,n.outcomes,n.conflicts,c,l),await Qe(a,i),await(async(e,t)=>{await e.fs.writeUtf8(Ke(e),`${t}\n`)})(a,o);const e=Tn(r.message??`Merge ${r.rev}`,{allowEmpty:!1});await Je(a,e);const t=Xc(n.outcomes,n.conflicts,l);await f.commit(t)}finally{await f.release()}return{kind:"conflict",conflicts:n.conflicts.map(e=>({path:e.path,type:e.type})),mergeHead:o,origHead:i}},Hc=t=>{for(const a of t)if(Sc.has(a.type))throw e.unsupportedOperation("merge",`conflict type '${a.type}' not supported in v1 (path=${a.path})`)},_c=(e,t)=>void 0!==e&&!e(t),jc=async(e,t,a,r,n)=>{const i=t.filter(e=>"conflict"!==e.status&&r.has(e.path));await Bc(i,32,t=>Uc(e,t,n)),await Bc(a,32,t=>Fc(e,t))},Bc=async(e,a,r)=>{await t.boundedMap(e,a,r)},Uc=async(e,a,r)=>{if("unchanged"===a.status||"resolved-known"===a.status){if(_c(r,a.path))return;const n=await t.streamBlob(e,a.id);return void await t.writeWorkingTreeFileStream(e,a.path,n)}"resolved-merged"!==a.status?"resolved-deleted"===a.status&&await t.removeWorkingTreeFile(e,a.path):await t.writeWorkingTreeFile(e,a.path,a.bytes)},Fc=async(e,a)=>{if("distinct-types"===a.type)return void await Kr(e,a);const r=a.mergedMode??a.ourMode??a.theirMode;if(void 0===r)return;const n=await Gc(e,a);void 0!==n&&await t.writeWorkingTreeEntry(e,a.path,n,r)},Wc={maxBytes:K},qc=(e,a)=>{if(void 0!==a.ourId)return t.readBlob(e,a.ourId,Wc).then(e=>e.content)},zc=async(e,t)=>void 0!==t.conflictContent?t.conflictContent:qc(e,t),Gc=async(e,a)=>{if("content"===a.type)return zc(e,a);if("add-add"===a.type)return zc(e,a);if("binary"===a.type)return qc(e,a);if("type-change"===a.type)return qc(e,a);if("modify-delete"===a.type){const r=a.ourId??a.theirId;if(void 0===r)return;return(await t.readBlob(e,r,Wc)).content}},Vc=e=>({ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:e,uid:0,gid:0,fileSize:0}),Xc=(e,a,r)=>{const n=[];for(const a of e)"unchanged"!==a.status&&"resolved-known"!==a.status||n.push(_c(r,a.path)?t.skipWorktreeEntry({path:a.path,id:a.id,mode:a.mode}):{...Vc(a.mode),id:a.id,flags:t.STAGE0_FLAGS,path:a.path});const i=p(a,Vc),o=[...n,...i];return o.sort((e,t)=>e.path<t.path?-1:e.path>t.path?1:e.flags.stage-t.flags.stage),o},Kc=async(e,a)=>{const r=await t.readConfig(e),n=r.user?{name:r.user.name,email:r.user.email,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:"+0000"}:void 0,i={};return void 0!==a.author&&(i.explicit=a.author),void 0!==n&&(i.configUser=n),En(i)},Yc=(e,t)=>{const a={author:t};return void 0!==e.committer&&(a.explicit=e.committer),$n(a)},Zc=async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);return r.data.tree},Jc=async(e,a,r,n,i=0)=>{const o=t.nibbleAt(a,i),s=e.slots[o];return"subtree"===s.kind?(async(e,a,r,n,i,o,s)=>{if(!n.startsWith(r.prefix)){const o=t.placeLeaf(t.placeLeaf(t.createEmptyTrie(),r,s+1),{kind:"note",key:n,val:i},s+1);return t.setSlot(e,a,t.internalSlot(o))}const c=t.setSlot(e,a,t.chainGap(await t.unpackSubtree(r,o),r.prefix,s));return Jc(c,n,i,o,s)})(e,o,s,a,r,n,i):"internal"===s.kind?t.setSlot(e,o,t.internalSlot(await Jc(s.node,a,r,n,i+1))):t.placeLeaf(e,{kind:"note",key:a,val:r},i)},Qc=async(e,a,r,n=0)=>{const i=t.nibbleAt(a,n),o=e.slots[i];if("empty"!==o.kind){if("note"===o.kind)return o.key===a?o.val:void 0;if("internal"===o.kind)return Qc(o.node,a,r,n+1);if(a.startsWith(o.prefix))return Qc(await t.unpackSubtree(o,r),a,r,o.prefix.length)}},ed=async(e,a,r,n=0)=>{const i=t.nibbleAt(a,n),o=e.slots[i];if("empty"===o.kind)return e;if("note"===o.kind)return o.key===a?t.setSlot(e,i,t.EMPTY_SLOT):e;if("internal"===o.kind)return t.setSlot(e,i,(e=>{if(e.preserved.length>0)return t.internalSlot(e);const a=e.slots.filter(e=>"empty"!==e.kind);if(0===a.length)return t.EMPTY_SLOT;const r=a[0];return 1===a.length&&"internal"!==r.kind?r:t.internalSlot(e)})(await ed(o.node,a,r,n+1)));if(!a.startsWith(o.prefix))return e;const s=t.setSlot(e,i,t.chainGap(await t.unpackSubtree(o,r),o.prefix,n));return ed(s,a,r,n)},td=/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/,ad=/^[0-9a-f]{40}$/,rd=async(e,a)=>ad.test(a)?a:t.resolveRef(e,a),nd=async(a,r)=>{await st(a);const n=await rd(a,r.object),i=await t.resolveNotesRef(a,r.ref),{trie:o,read:s,notesCommitOid:c}=await t.loadNotesTree(a,i);if(void 0!==await Qc(o,n,s)&&!0!==r.force)throw e.notesAlreadyExist(n);const d=await t.writeObject(a,{type:"blob",id:"",content:r.content}),u=await Jc(o,n,d,s),l=await Rn(a),f=await t.writeNotesTree(a,{trie:u,read:s,prevCommitOid:c,message:"Notes added by 'git notes add'\n",author:l});return await t.updateRef(a,i,f,{reflogMessage:"notes: Notes added by 'git notes add'"}),{notesCommit:f,note:d}},id=async(e,a)=>{await st(e);const r=await rd(e,a.object),n=await t.resolveNotesRef(e,a.ref),{trie:i,read:o}=await t.loadNotesTree(e,n),s=await Qc(i,r,o);return void 0===s?null:{object:r,note:s,content:(await t.readBlob(e,s)).content}},od=async(e,a)=>{await st(e);const r=await t.resolveNotesRef(e,a?.ref),{notesTreeOid:n}=await t.loadNotesTree(e,r);if(void 0===n)return[];const i=[];for await(const a of t.walkTree(e,n)){if(a.mode!==t.FILE_MODE.REGULAR)continue;const e=a.path.split("/").join("");td.test(e)&&i.push({object:t.ObjectId.from(e),note:a.id})}return i.sort((e,t)=>e.object<t.object?-1:1)},sd=async(a,r)=>{await st(a);const n=await rd(a,r.object),i=await t.resolveNotesRef(a,r.ref),{trie:o,read:s,notesCommitOid:c}=await t.loadNotesTree(a,i);if(void 0===c)throw e.notesObjectHasNone(n);if(void 0===await Qc(o,n,s))throw e.notesObjectHasNone(n);const d=await ed(o,n,s),u=await Rn(a),l=await t.writeNotesTree(a,{trie:d,read:s,prevCommitOid:c,message:"Notes removed by 'git notes remove'\n",author:u});return await t.updateRef(a,i,l,{reflogMessage:"notes: Notes removed by 'git notes remove'"}),{notesCommit:l}},cd=e=>`'${e.replaceAll("'","'\\''")}'`,dd=(e,a)=>{const r=`${a}=`,n=e.find(e=>e.startsWith(r));if(void 0===n)throw t.invalidIdentity(a,"missing author-script key");const i=n.slice(r.length);if(i.length<2||!i.startsWith("'")||!i.endsWith("'"))throw t.invalidIdentity(n,"author-script value is not single-quoted");return(e=>e.slice(1,-1).replaceAll("'\\''","'"))(i)},ud=e=>e.replace(/\n+$/,""),ld=(e,t)=>{return 0===t?`# This is the 1st commit message:\n\n${ud(e.message)}\n`:!0===e.skip?`\n# The commit message #${t+1} will be skipped:\n\n${a=e.message,ud(a).split("\n").map(e=>""===e?"#":`# ${e}`).join("\n")}\n`:`\n# This is the commit message #${t+1}:\n\n${ud(e.message)}\n`;var a},fd=e=>{const t=e.length;let a=`# This is a combination of ${t} ${1===t?"commit":"commits"}.\n`;for(let r=0;r<t;r+=1)a+=ld(e[r],r);return a},md=/^(pick|reword|edit|squash|fixup|drop) (\S+) # (.*)$/,hd=e=>e.map(e=>`${e.action} ${e.oid} # ${e.subject}\n`).join(""),wd=t=>{const a=[];for(const r of t.split("\n")){if(""===r||r.startsWith("#"))continue;const t=md.exec(r);if(null===t)throw e.invalidSequencerTodo(r);a.push({action:t[1],oid:t[2],subject:t[3]})}return a},pd=new TextEncoder,gd=new Uint8Array,yd=async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);return r.data},vd=async(e,a)=>{const r=await yd(e,a),n=r.parents[0],i=void 0!==n?(await yd(e,n)).tree:void 0,o=await t.diffTrees(e,i,r.tree,{recursive:!0}),s=await t.materialisePatchFiles(e,o.changes),c=q(s,{contextLines:3,pathPrefix:{old:"a/",new:"b/"}}),d=s.filter(e=>t.isBinary(e.oldContent??gd)||t.isBinary(e.newContent??gd)).map(e=>{return`${"oldId"in(t=e.change)?t.oldId:""}${"newId"in t&&void 0!==t.newId?t.newId:""}`;var t}).join("");return e.hash.hashHex(pd.encode(c.split("\n").filter(e=>!e.startsWith("@@ ")&&!e.startsWith("index ")).map(e=>e.replace(/\s/g,"")).join("")+d))},bd=e=>`${e.layout.gitDir}/rebase-merge`,kd=(e,t)=>`${bd(e)}/${t}`,xd=e=>`${e.layout.gitDir}/REBASE_HEAD`,Id=e=>e.map(([e,t])=>`${e} ${t}\n`).join(""),Ed=async(e,t)=>{const a=[...t.done,...t.remaining],r=(t,a)=>e.fs.writeUtf8(kd(e,t),a);var n;await r("head-name",`${t.headName}\n`),await r("onto",`${t.onto}\n`),await r("orig-head",`${t.origHead}\n`),await r("git-rebase-todo",hd(t.remaining)),void 0!==t.backupHeader&&await r("git-rebase-todo.backup",((e,t)=>{const a=e.length,r=`# Rebase ${t.shortUpstream}..${t.shortOrigHead} onto ${t.shortOnto} (${a} ${1===a?"command":"commands"})\n`;return`${hd(e)}\n${r}#\n# Commands:\n# p, pick <commit> = use commit\n# r, reword <commit> = use commit, but edit the commit message\n# e, edit <commit> = use commit, but stop for amending\n# s, squash <commit> = use commit, but meld into previous commit\n# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous\n# commit's log message, unless -C is used, in which case\n# keep only this commit's message; -c is same as -C but\n# opens the editor\n# x, exec <command> = run command (the rest of the line) using shell\n# b, break = stop here (continue rebase later with 'git rebase --continue')\n# d, drop <commit> = remove commit\n# l, label <label> = label current HEAD with a name\n# t, reset <label> = reset HEAD to a label\n# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n# create a merge commit using the original merge commit's\n# message (or the oneline, if no original merge commit was\n# specified); use -c <commit> to reword the commit message\n# u, update-ref <ref> = track a placeholder for the <ref> to be updated\n# to this position in the new commits. The <ref> is\n# updated at the end of the rebase\n#\n# These lines can be re-ordered; they are executed from top to bottom.\n#\n# If you remove a line here THAT COMMIT WILL BE LOST.\n#\n# However, if you remove everything, the rebase will be aborted.\n#\n`})(a,t.backupHeader)),await r("done",hd(t.done)),await r("message",t.message),await r("author-script",(n=t.stoppedAuthor,`GIT_AUTHOR_NAME=${cd(n.name)}\nGIT_AUTHOR_EMAIL=${cd(n.email)}\nGIT_AUTHOR_DATE=${cd(`@${n.timestamp} ${n.timezoneOffset}`)}\n`)),await r("end",`${a.length}\n`),await r("msgnum",`${t.done.length}\n`),await r("interactive",""),await r("rewritten-list",Id(t.rewritten)),await r("patch",t.patch),await r("drop_redundant_commits",""),await r("no-reschedule-failed-exec",""),await r("stopped-sha",`${t.stoppedSha}\n`),void 0!==t.amend&&await r("amend",`${t.amend}\n`),void 0!==t.currentFixups&&await r("current-fixups",t.currentFixups.map(e=>`${e.action} ${e.oid}\n`).join("")),void 0!==t.rewrittenPending&&await r("rewritten-pending",t.rewrittenPending.map(e=>`${e}\n`).join("")),void 0!==t.messageSquash&&await r("message-squash",t.messageSquash),await e.fs.writeUtf8(xd(e),`${t.stoppedSha}\n`)},$d=e=>an(e,xd(e)),Td=async(t,a)=>{const r=[];for(const n of a){const a=await Yt(t,n.oid);if(void 0===a)throw e.invalidSequencerTodo(`cannot resolve commit ${n.oid}`);r.push({action:n.action,oid:a,subject:n.subject})}return r},Od=async e=>{if(!await(e=>e.fs.exists(bd(e)))(e))return;const a=(await e.fs.readUtf8(kd(e,"head-name"))).trimEnd(),r=await an(e,kd(e,"onto")),n=await an(e,kd(e,"orig-head")),i=await Td(e,wd(await e.fs.readUtf8(kd(e,"done")))),o=await Td(e,wd(await e.fs.readUtf8(kd(e,"git-rebase-todo")))),s=(e=>{const a=e.split("\n"),r=dd(a,"GIT_AUTHOR_NAME"),n=dd(a,"GIT_AUTHOR_EMAIL"),i=dd(a,"GIT_AUTHOR_DATE");if(!i.startsWith("@"))throw t.invalidIdentity(i,"author-script date lacks the `@` prefix");const[o,s]=i.slice(1).split(" "),c=Number(o);if(!Number.isSafeInteger(c))throw t.invalidIdentity(i,"invalid author-script timestamp");if(void 0===s||!/^[+-]\d{4}$/.test(s))throw t.invalidIdentity(i,"invalid author-script timezone offset");return{name:r,email:n,timestamp:c,timezoneOffset:s}})(await e.fs.readUtf8(kd(e,"author-script"))),c=await e.fs.readUtf8(kd(e,"message")),d=await an(e,kd(e,"amend")),u=await Rd(e),l=await Sd(e);return{headName:a,onto:r,origHead:n,done:i,remaining:o,stoppedSha:await $d(e),author:s,message:c,...void 0!==d?{amend:d}:{},...void 0!==u?{currentFixups:u}:{},...void 0!==l?{rewrittenPending:l}:{}}},Rd=async e=>{const t=kd(e,"current-fixups");if(!await e.fs.exists(t))return;const a=[];for(const r of(await e.fs.readUtf8(t)).split("\n")){const[e,t]=r.split(" ");"squash"!==e&&"fixup"!==e||void 0===t||a.push({action:e,oid:t})}return a},Sd=async e=>{const t=kd(e,"rewritten-pending");if(!await e.fs.exists(t))return;const a=[];for(const r of(await e.fs.readUtf8(t)).split("\n"))""!==r&&a.push(r);return a},Dd=async e=>{const t=kd(e,"rewritten-list");if(!await e.fs.exists(t))return[];const a=[];for(const r of(await e.fs.readUtf8(t)).split("\n")){if(""===r)continue;const[e,t]=r.split(" ");void 0!==e&&void 0!==t&&a.push([e,t])}return a},Cd=async e=>{await e.fs.exists(bd(e))&&await e.fs.rmRecursive(bd(e)),await e.fs.exists(xd(e))&&await e.fs.rm(xd(e))},Md="HEAD",Ad=e=>e.slice(0,7),Nd=async(e,a,r)=>{const n=new Set;if(void 0!==a)for await(const r of t.walkCommits(e,{from:[a]}))n.add(r.id);const i=[];for await(const a of t.walkCommits(e,{from:[r],until:[...n]}))i.push(a.id);return i.reverse()},Pd=async(a,r,n,i)=>{const o=n.parents[0],c=void 0!==o?await Ma(a,o):void 0,d=await Ma(a,i),u=await t.acquireIndexLock(a);try{const i=await t.readIndex(a),o=await en(a,{baseTree:c,oursTree:d,theirsTree:n.tree,currentIndex:i,labels:ne(r,s(n.message))});if("would-overwrite"===o.kind)throw e.workingTreeDirty({localChanges:o.localChanges,untracked:o.untracked});return"conflict"===o.kind?(await u.commit(o.indexEntries),{kind:"conflict",conflicts:o.conflicts}):(await u.commit(o.result.newIndexEntries),{kind:"clean",mergedTree:o.mergedTree,oursTree:d})}finally{await u.release()}},Ld=async(e,a,r,n)=>{const i=await Pd(e,a,r,n);if("conflict"===i.kind)return{kind:"conflict",conflicts:i.conflicts};if(i.mergedTree===i.oursTree)return{kind:"empty"};const o=await Rn(e),c=await t.createCommit(e,{tree:i.mergedTree,parents:[n],author:r.author,committer:o,message:r.message,extraHeaders:[]});return await t.updateRef(e,Md,c,{expected:n,reflogMessage:`rebase (pick): ${s(r.message)}`}),{kind:"committed",id:c}},Hd=async(e,a)=>{const r=a.parents[0],n=void 0!==r?await Ma(e,r):void 0,i=await t.diffTrees(e,n,a.tree,{recursive:!0});return q(await t.materialisePatchFiles(e,i.changes),{contextLines:3,pathPrefix:{old:"a/",new:"b/"}})},_d=async(e,t,a,r,n,i)=>{const o={headName:t.branch??"detached HEAD",onto:t.onto,origHead:t.origHead,done:[...t.doneBefore,...t.todo.slice(0,a+1)],remaining:t.todo.slice(a+1),stoppedSha:t.todo[a].oid,stoppedAuthor:r.author,message:bn(r.message,h(n)),rewritten:i,patch:await Hd(e,r),...void 0!==t.backupHeader?{backupHeader:t.backupHeader}:{}};await Ed(e,o)},jd=async(e,a,r,n,i)=>{void 0!==a&&(await t.updateRef(e,a,n,{expected:r,reflogMessage:`rebase (finish): ${a} onto ${i}`}),await Xa(e,Md,a),await t.recordRefUpdate(e,Md,n,n,`rebase (finish): returning to ${a}`))},Bd=(e,a)=>t.runHook(e,"pre-rebase",{args:[a]}),Ud=async(e,a)=>{0!==a.length&&await t.runInformationalHook(e,"post-rewrite",{args:["rebase"],stdin:Id(a)})},Fd=async(e,t,a,r)=>{let n=a;const i=[...r.applied],o=[...r.rewritten];for(let a=0;a<t.todo.length;a+=1){const r=t.todo[a].oid,s=await Ca(e,r),c=await Ld(e,r,s,n);if("committed"!==c.kind){if("empty"!==c.kind)return await _d(e,t,a,s,c.conflicts,o),{kind:"conflict",commit:r,conflicts:c.conflicts.map(e=>({path:e.path,type:e.type})),remaining:t.todo.length-(a+1)}}else i.push({source:r,created:c.id}),o.push([r,c.id]),n=c.id}return await jd(e,t.branch,t.origHead,n,t.onto),await Ud(e,o),await Cd(e),{kind:"rebased",commits:i}},Wd=async(a,r)=>{await st(a),await ct(a,"rebase"),await lt(a);const n=await dt(a),i="symbolic"===n.kind?await(async(a,r)=>{try{return await t.resolveRef(a,r)}catch(t){if(t instanceof e.TsgitError&&"REF_NOT_FOUND"===t.data.code)throw e.noInitialCommit();throw t}})(a,n.target):n.id,o="symbolic"===n.kind?n.target:void 0,c=await Da(a,r.upstream),d=void 0!==r.onto?await Da(a,r.onto):c,u=r.onto??r.upstream;await In(a,await Ma(a,i));const[l]=await t.mergeBase(a,[c,i]);if(void 0!==r.interactive)return await Bd(a,r.upstream),ru(a,{instructions:r.interactive,branch:o,headCommit:i,upstream:c,onto:d,ontoName:u,base:l});if(d===l)return{kind:"up-to-date"};await Bd(a,r.upstream);const f=await Nd(a,l,i),m=await(async(e,t,a,r)=>{const n=await Nd(e,a,r),i=new Set;for(const t of n)i.add(await vd(e,t));const o=[];for(const a of t)i.has(await vd(e,a))||o.push(a);return o})(a,f,l,c),h=await(async(e,t)=>{const a=[];for(const r of t)a.push({action:"pick",oid:r,subject:s((await Ca(e,r)).message)});return a})(a,m);await Qe(a,i),await(async(e,a,r,n)=>{await t.getRefStore(e).writeLoose(Md,r),await t.recordRefUpdate(e,Md,a,r,`rebase (start): checkout ${n}`),await ht(e,r)})(a,i,d,u);const w={branch:o,onto:d,origHead:i,doneBefore:[],todo:h,backupHeader:{shortUpstream:Ad(c),shortOrigHead:Ad(i),shortOnto:Ad(d)}};return Fd(a,w,d,{applied:[],rewritten:[]})},qd=e=>"detached HEAD"===e?void 0:e,zd=t=>{const a=new Set;for(const e of t)0!==e.flags.stage&&a.add(e.path);if(a.size>0)throw e.mergeHasConflicts(a.size,[...a])},Gd=async a=>{await st(a),await ct(a,"rebase --continue");const r=await Od(a);if(void 0===r)throw e.noOperationInProgress("rebase");if(nu(r))return iu(a,r);const n=await t.readIndex(a);zd(n.entries);const i=r.done[r.done.length-1],o=await t.resolveRef(a,Md),c=await t.synthesizeTreeFromIndex(a,n.entries),d=await Rn(a),u=Tn(On(r.message),{allowEmpty:!1}),l=await t.createCommit(a,{tree:c,parents:[o],author:r.author,committer:d,message:u,extraHeaders:[]});await t.updateRef(a,Md,l,{expected:o,reflogMessage:`rebase (continue): ${s(u)}`});const f=[...await Dd(a),[i.oid,l]],m={branch:qd(r.headName),onto:r.onto,origHead:r.origHead,doneBefore:r.done,todo:r.remaining};return Fd(a,m,l,{applied:[{source:i.oid,created:l}],rewritten:f})},Vd=async a=>{await st(a),await ct(a,"rebase --skip");const r=await Od(a);if(void 0===r)throw e.noOperationInProgress("rebase");if(nu(r))return ou(a,r);const n=await t.resolveRef(a,Md);await ht(a,n);const i={branch:qd(r.headName),onto:r.onto,origHead:r.origHead,doneBefore:r.done,todo:r.remaining};return Fd(a,i,n,{applied:[],rewritten:await Dd(a)})},Xd=async a=>{await st(a),await ct(a,"rebase --abort");const r=await Od(a);if(void 0===r)throw e.noOperationInProgress("rebase");const n=qd(r.headName),i=await t.resolveRef(a,Md);return await ht(a,r.origHead),void 0!==n?(await Xa(a,Md,n),await t.recordRefUpdate(a,Md,i,r.origHead,`rebase (abort): returning to ${n}`)):(await t.getRefStore(a).writeLoose(Md,r.origHead),await t.recordRefUpdate(a,Md,i,r.origHead,`rebase (abort): returning to ${r.origHead}`)),await Cd(a),{head:r.origHead,headName:r.headName}},Kd=async(e,a)=>{const r=await Rn(e),n=await t.createCommit(e,{tree:a.tree,parents:[a.parent],author:a.author,committer:r,message:a.message,extraHeaders:[]});return await t.updateRef(e,Md,n,{expected:a.expected,reflogMessage:a.reflog}),n},Yd=async(e,a,r,n,i)=>{if(r.parents[0]===n)return await(async(e,a)=>{const r=await t.resolveRef(e,Md);await t.getRefStore(e).writeLoose(Md,a),await t.recordRefUpdate(e,Md,r,a,"rebase: fast-forward"),await ht(e,a)})(e,a.oid),{kind:"committed",created:a.oid};const o=await Pd(e,a.oid,r,n);return"conflict"===o.kind?{kind:"conflict",conflicts:o.conflicts}:{kind:"committed",created:await Kd(e,{tree:o.mergedTree,parent:n,expected:n,author:r.author,message:r.message,reflog:i})}},Zd=(e,t,a,r)=>"reword"===t.action?(async(e,t,a,r)=>{const n=Tn(t.message??a.message,{allowEmpty:!1}),i=await Yd(e,t,a,r,`rebase (reword): ${s(a.message)}`);if("conflict"===i.kind)return{kind:"conflict",conflicts:i.conflicts};const o=await Ca(e,i.created);return{kind:"advanced",created:await Kd(e,{tree:o.tree,parent:o.parents[0],expected:i.created,author:o.author,message:n,reflog:`rebase (reword): ${s(n)}`})}})(e,t,a,r):"edit"===t.action?(async(e,t,a,r)=>{const n=await Yd(e,t,a,r,`rebase (edit): ${s(a.message)}`);return"conflict"===n.kind?{kind:"conflict",conflicts:n.conflicts}:{kind:"edit-stop",created:n.created}})(e,t,a,r):(async(e,t,a,r)=>{const n=await Yd(e,t,a,r,`rebase (pick): ${s(a.message)}`);return"conflict"===n.kind?{kind:"conflict",conflicts:n.conflicts}:{kind:"advanced",created:n.created}})(e,t,a,r),Jd=async(e,t,a,r)=>{await Ed(e,{headName:t.branch??"detached HEAD",onto:t.onto,origHead:t.origHead,done:[...t.doneBefore,...t.todo.slice(0,a+1)],remaining:t.todo.slice(a+1),stoppedSha:r.stoppedSha,stoppedAuthor:r.author,message:r.message,rewritten:r.rewritten,patch:r.patch,...void 0!==t.backupHeader?{backupHeader:t.backupHeader}:{},...void 0!==r.amend?{amend:r.amend}:{},...void 0!==r.currentFixups?{currentFixups:r.currentFixups}:{},...void 0!==r.rewrittenPending?{rewrittenPending:r.rewrittenPending}:{},...void 0!==r.messageSquash?{messageSquash:r.messageSquash}:{}})},Qd=(e,t)=>{const a=e[t+1];return void 0!==a&&("squash"===a.action||"fixup"===a.action)},eu=(e,t,a)=>({kind:"conflict",commit:e,conflicts:t.map(e=>({path:e.path,type:e.type})),remaining:a}),tu=async(e,t,a,r,n,i)=>{const o=await Ca(e,r),c=await Pd(e,t.oid,a,r);if("conflict"===c.kind)return{kind:"conflict",conflicts:c.conflicts};n.members.push({message:a.message,skip:"fixup"===t.action}),n.fixups.push({action:t.action,oid:t.oid}),n.pending.push(t.oid),"squash"===t.action&&void 0!==t.message&&(n.inline=t.message);const d=fd([{message:n.baseMessage},...n.members]),u=i?Tn(n.inline??On(d),{allowEmpty:!1}):d;return{kind:"committed",created:await Kd(e,{tree:c.mergedTree,parent:o.parents[0],expected:r,author:o.author,message:u,reflog:`rebase (${t.action}): ${s(u)}`}),message:u}},au=async(e,t,a,r)=>{let n=a;const i=[...r.applied],o=[...r.rewritten],s={baseMessage:(await Ca(e,a)).message,members:[],fixups:[],pending:[a],inline:void 0};for(let a=0;a<t.todo.length;a+=1){const r=t.todo[a];if("drop"===r.action)continue;const c=await Ca(e,r.oid),d=await Hd(e,c);if("squash"===r.action||"fixup"===r.action){const u=await tu(e,r,c,n,s,!Qd(t.todo,a));if("conflict"===u.kind){const n=fd([{message:s.baseMessage},...s.members,{message:c.message,skip:"fixup"===r.action}]);return await Jd(e,t,a,{stoppedSha:r.oid,author:c.author,message:bn(n,h(u.conflicts)),patch:d,rewritten:o,currentFixups:[...s.fixups,{action:r.action,oid:r.oid}],rewrittenPending:[...s.pending],messageSquash:n}),eu(r.oid,u.conflicts,t.todo.length-(a+1))}i.push({source:r.oid,created:u.created}),o.push([r.oid,u.created]),n=u.created;continue}const u=await Zd(e,r,c,n);if("conflict"===u.kind)return await Jd(e,t,a,{stoppedSha:r.oid,author:c.author,message:bn(c.message,h(u.conflicts)),patch:d,rewritten:o}),eu(r.oid,u.conflicts,t.todo.length-(a+1));if("edit-stop"===u.kind)return await Jd(e,t,a,{stoppedSha:u.created,author:c.author,message:c.message,patch:d,rewritten:o,amend:u.created}),{kind:"stopped",commit:r.oid,remaining:t.todo.length-(a+1)};i.push({source:r.oid,created:u.created}),o.push([r.oid,u.created]),n=u.created,s.baseMessage=(await Ca(e,u.created)).message,s.members=[],s.fixups=[],s.pending=[u.created],s.inline=void 0}return await jd(e,t.branch,t.origHead,n,t.onto),await Ud(e,o),await Cd(e),{kind:"rebased",commits:i}},ru=async(a,r)=>{const n=await(async(t,a,r,n)=>{if(a.every(e=>"drop"===e.action))throw e.invalidOption("interactive","nothing to do (every instruction drops a commit)");const i=a.find(e=>"drop"!==e.action);if("squash"===i?.action||"fixup"===i?.action)throw e.invalidOption("interactive",`cannot '${i.action}' without a previous commit`);const o=new Set(await Nd(t,r,n)),c=[];for(const r of a){if("reword"===r.action&&void 0===r.message)throw e.invalidOption("interactive","reword requires a message (no editor in a library)");if(("reword"===r.action||"squash"===r.action)&&void 0!==r.message&&""===Tn(r.message,{allowEmpty:!0}))throw e.invalidOption("interactive",`${r.action} message must not be empty`);const a=await Da(t,r.oid);if(!o.has(a))throw e.invalidOption("interactive",`commit ${a} is not in the list of commits to be rebased`);const n=s((await Ca(t,a)).message);c.push({action:r.action,oid:a,subject:n,...void 0!==r.message?{message:r.message}:{}})}return c})(a,r.instructions,r.base,r.headCommit),i=await(async(e,t,a)=>{let r=a,n=0;for(;n<t.length&&"pick"===t[n].action&&(await Ca(e,t[n].oid)).parents[0]===r;)r=t[n].oid,n+=1;return n})(a,n,r.onto),o=i>0?n[i-1].oid:r.onto;await Qe(a,r.headCommit),await(async(e,a,r,n)=>{await t.getRefStore(e).writeLoose(Md,n),await t.recordRefUpdate(e,Md,a,n,`rebase (start): checkout ${r}`),await ht(e,n)})(a,r.headCommit,r.ontoName,o);const c=n.slice(0,i),d={branch:r.branch,onto:r.onto,origHead:r.headCommit,doneBefore:c,todo:n.slice(i),backupHeader:{shortUpstream:Ad(r.upstream),shortOrigHead:Ad(r.headCommit),shortOnto:Ad(r.onto)}},u={applied:c.map(e=>({source:e.oid,created:e.oid})),rewritten:[]};return au(a,d,o,u)},nu=e=>[...e.done,...e.remaining].some(e=>"pick"!==e.action),iu=async(e,a)=>{const r={branch:qd(a.headName),onto:a.onto,origHead:a.origHead,doneBefore:a.done,todo:a.remaining},n=[...await Dd(e)],i=await t.readIndex(e);zd(i.entries);const o=await t.synthesizeTreeFromIndex(e,i.entries),c=await t.resolveRef(e,Md),d=a.done[a.done.length-1].oid;let u;if(void 0!==a.currentFixups){const t=await Ca(e,c),r=Tn(On(a.message),{allowEmpty:!1});u=await Kd(e,{tree:o,parent:t.parents[0],expected:c,author:t.author,message:r,reflog:`rebase (continue): ${s(r)}`}),n.push([d,u])}else if(void 0!==a.amend){const t=await Ca(e,a.amend);o===t.tree?u=c:(u=await Kd(e,{tree:o,parent:t.parents[0],expected:c,author:a.author,message:t.message,reflog:`rebase (continue): ${s(t.message)}`}),n.push([d,u]))}else{const t=Tn(On(a.message),{allowEmpty:!1});u=await Kd(e,{tree:o,parent:c,expected:c,author:a.author,message:t,reflog:`rebase (continue): ${s(t)}`}),n.push([d,u])}return au(e,r,u,{applied:[],rewritten:n})},ou=async(e,a)=>{const r=await t.resolveRef(e,Md),n=void 0!==a.amend?(await Ca(e,a.amend)).parents[0]:r;await t.getRefStore(e).writeLoose(Md,n),await ht(e,n);const i={branch:qd(a.headName),onto:a.onto,origHead:a.origHead,doneBefore:a.done,todo:a.remaining};return au(e,i,n,{applied:[],rewritten:await Dd(e)})},su=e=>"HEAD"===e||e.includes("/")?e:`refs/heads/${e}`,cu=e=>{if(""===e)throw t.refspecInvalid(e,"refspec must not be empty");let a=e,r="normal";if(a.startsWith("+")&&(r="force",a=a.slice(1)),""===a)throw t.refspecInvalid(e,"refspec must not be empty after force prefix");const n=du(a,":");if(n>1)throw t.refspecInvalid(e,"refspec must contain at most one colon");if(0===n){const e=su(a);return{force:r,src:e,dst:e,isDelete:!1}}const i=a.indexOf(":"),o=a.slice(0,i),s=a.slice(i+1);if(""===s)throw t.refspecInvalid(e,"destination must not be empty");const c=su(s);if("HEAD"===c)throw t.refspecInvalid(e,"destination must not be HEAD");return""===o?{force:r,src:"",dst:c,isDelete:!0}:{force:r,src:su(o),dst:c,isDelete:!1}},du=(e,t)=>{let a=0;for(let r=0;r<e.length;r+=1)e[r]===t&&(a+=1);return a},uu=/[\n\r\t\0"\\\]/]/,lu=t=>{if(""===t)throw e.remoteNameInvalid(t,"name must not be empty");if(uu.test(t))throw e.remoteNameInvalid(t,"name must not contain a newline, tab, NUL, slash, bracket, quote, or backslash");return t},fu=(e,t)=>{if(void 0===e.branch)return[];const a=[];for(const[r,n]of e.branch)n.remote===t&&a.push({branch:r,ref:`refs/heads/${r}`,merge:n.merge});return a},mu=/[\n\r\0]/,hu=t=>{if(mu.test(t))throw e.invalidOption("remote.url","url must not contain a newline or NUL")},wu=(e,t)=>({name:e,url:t?.url??"",pushUrl:t?.pushUrl,fetchRefspecs:t?.fetch??[]}),pu=async e=>{await it(e);const a=await t.readConfig(e);if(void 0===a.remote)return{remotes:[]};const r=[];for(const[e,t]of a.remote)r.push(wu(e,t));return r.sort((e,t)=>e.name<t.name?-1:1),{remotes:r}},gu=async(a,r)=>{await it(a),lu(r.name),hu(r.url);const n=await t.readConfig(a);if(!0===n.remote?.has(r.name))throw e.remoteExists(r.name);const i=r.fetch??`+refs/heads/*:refs/remotes/${r.name}/*`;cu(i);const o=[{kind:"set",section:"remote",subsection:r.name,key:"url",value:r.url},{kind:"set",section:"remote",subsection:r.name,key:"fetch",value:i}];return await t.updateConfigOperations(a,o),{remote:{name:r.name,url:r.url,pushUrl:void 0,fetchRefspecs:[i]}}},yu=async(e,a)=>{const r=`refs/remotes/${a}/`;return(await t.enumerateRefs(e)).filter(e=>e.startsWith(r))},vu=async(a,r)=>{await it(a),lu(r.name);const n=await t.readConfig(a);if(!0!==n.remote?.has(r.name))throw e.remoteNotConfigured(r.name);const i=await yu(a,r.name),o=fu(n,r.name);for(const e of i)await t.updateRef(a,e,t.ZERO_OID,{delete:!0});const s=[{kind:"removeSection",section:"remote",subsection:r.name}];for(const e of o)s.push({kind:"removeEntry",section:"branch",subsection:e.branch,key:"remote"},{kind:"removeEntry",section:"branch",subsection:e.branch,key:"merge"});return await t.updateConfigOperations(a,s),{name:r.name,removedTrackingRefs:i,clearedBranches:o.map(e=>e.ref)}},bu=async(a,r,n,i)=>{const o=t.getRefStore(a),s=await o.resolveDirect(r);if("direct"===s.kind){if(!await o.isLoose(r))throw e.unsupportedOperation("rename-packed-tracking-ref",`cannot rename packed-only ref ${r} — run \`git pack-refs --unpack\` and retry`);await t.updateRef(a,n,s.id,{expected:"absent",reflogMessage:i}),await t.updateRef(a,r,t.ZERO_OID,{delete:!0})}},ku=async(a,r)=>{if(await it(a),lu(r.from),lu(r.to),r.from===r.to)throw e.invalidOption("remote.rename","from and to must differ");const n=await t.readConfig(a),i=n.remote?.get(r.from);if(void 0===i)throw e.remoteNotConfigured(r.from);if(!0===n.remote?.has(r.to))throw e.remoteExists(r.to);const o=await yu(a,r.from),s=fu(n,r.from),c=`remote: renamed ${r.from} to ${r.to}`,d=[];for(const e of o){const t=e.slice(`refs/remotes/${r.from}/`.length),n=`refs/remotes/${r.to}/${t}`;await bu(a,e,n,c),d.push(n)}const u=((e,t,a)=>{const r=`+refs/heads/*:refs/remotes/${t}/*`,n=`+refs/heads/*:refs/remotes/${a}/*`;return e.map(e=>e===r?n:e)})(i.fetch??[],r.from,r.to),l=[{kind:"renameSection",section:"remote",from:r.from,to:r.to}];if(u.length>0){l.push({kind:"removeEntry",section:"remote",subsection:r.to,key:"fetch"});for(const e of u)l.push({kind:"appendEntry",section:"remote",subsection:r.to,key:"fetch",value:e})}for(const e of s)l.push({kind:"set",section:"branch",subsection:e.branch,key:"remote",value:r.to});return await t.updateConfigOperations(a,l),{from:r.from,to:r.to,movedTrackingRefs:d,rewrittenBranches:s.map(e=>e.ref)}},xu=async(a,r)=>{await it(a),lu(r.name),hu(r.url);const n=await t.readConfig(a);if(!0!==n.remote?.has(r.name))throw e.remoteNotConfigured(r.name);const i=!0===r.push?"pushurl":"url";await t.updateConfigOperations(a,[{kind:"set",section:"remote",subsection:r.name,key:i,value:r.url}]);const o=(await t.readConfig(a)).remote?.get(r.name);return{remote:wu(r.name,o)}},Iu=async(a,r)=>{await it(a),lu(r.name);const n=await t.readConfig(a),i=n.remote?.get(r.name);if(void 0===i)throw e.remoteNotConfigured(r.name);const o=await yu(a,r.name),s=t.getRefStore(a),c=new Map;for(const e of o){const t=await s.resolveDirect(e);"direct"===t.kind&&c.set(e,t.id)}const d=fu(n,r.name);return{remote:{...wu(r.name,i),trackingRefs:c,trackedBy:d.map(e=>({branch:e.ref,merge:e.merge}))}}},Eu=e=>e.parents.length>=2,$u=e=>e.map(e=>({path:e.path,type:e.type})),Tu=e=>t.writeTree(e,[]),Ou=async(a,r,n,i,o)=>{const c=n.parents[0],d=void 0!==c?await Ma(a,c):await Tu(a),u=await Ma(a,o),l=await t.acquireIndexLock(a);try{const c=await t.readIndex(a),f=await en(a,{baseTree:n.tree,oursTree:u,theirsTree:d,currentIndex:c,labels:ie(r,s(n.message))});if("would-overwrite"===f.kind)throw e.workingTreeDirty({localChanges:f.localChanges,untracked:f.untracked});if("conflict"===f.kind)return await l.commit(f.indexEntries),{kind:"conflict",conflicts:f.conflicts};if(f.mergedTree===u)return{kind:"empty"};await l.commit(f.result.newIndexEntries);const{id:m,subject:h}=await(async(e,a,r,n,i)=>{const o=await Rn(e),c=Tn(hi(r,a),{allowEmpty:!1});return{id:await t.createCommit(e,{tree:i,parents:[n],author:o,committer:o,message:c,extraHeaders:[]}),subject:s(c)}})(a,r,n,o,f.mergedTree);return await t.updateRef(a,i,m,{expected:o,reflogMessage:`revert: ${h}`}),{kind:"committed",id:m}}finally{await l.release()}},Ru=async(e,t,a,r)=>{await cn(e,t.sequenceHead),await ln(e,await(async(e,t)=>{const a=[];for(const r of t){const t=await Ca(e,r);a.push({command:"revert",oid:r,subject:s(t.message)})}return a})(e,a)),await un(e,r),await mn(e,{recordOrigin:!1,allowEmpty:!1,noCommit:!1})},Su=async(e,t,a)=>{"conflict"===t.kind&&await(async(e,t,a,r)=>{await(async(e,t)=>{await e.fs.writeUtf8(li(e),`${t}\n`)})(e,t),await Je(e,bn(hi(a,t),h(r)))})(e,a.source,a.cData,t.conflicts),a.seq.multiPick&&await Ru(e,a.seq,a.remaining,a.currentHead);const r=a.remaining.length-1;return"conflict"===t.kind?{kind:"conflict",commit:a.source,conflicts:$u(t.conflicts),remaining:r}:{kind:"empty",commit:a.source,remaining:r}},Du=async(t,a,r,n,i)=>{let o=n;const s=[];for(let n=0;n<a.length;n+=1){const c=a[n],d=await Ca(t,c);if(Eu(d))throw i.multiPick&&await Ru(t,i,a.slice(n),o),e.revertMergeNoMainline(c);const u=await Ou(t,c,d,r,o);if("committed"!==u.kind){if("empty"!==u.kind||"drop"!==i.onEmpty||0!==n)return Su(t,u,{seq:i,source:c,cData:d,remaining:a.slice(n),currentHead:o})}else s.push({source:c,created:u.id}),o=u.id}return await wn(t),{kind:"reverted",commits:s}},Cu=/^(.+)\.\.(.+)$/,Mu=async(e,a,r)=>{const n=new Set;for await(const r of t.walkCommits(e,{from:[a]}))n.add(r.id);const i=[];for await(const a of t.walkCommits(e,{from:[r],until:[...n]}))i.push(a.id);return i},Au=async(a,r)=>{await st(a),await ct(a,"revert"),await lt(a);const n=await dt(a);if("symbolic"!==n.kind)throw e.unsupportedOperation("revert","cannot revert with detached HEAD");const i=await(async(a,r)=>{try{return await t.resolveRef(a,r)}catch(t){if(t instanceof e.TsgitError&&"REF_NOT_FOUND"===t.data.code)throw e.noInitialCommit();throw t}})(a,n.target),o=await(async(t,a)=>{const r=[];for(const n of a){if(n.includes("...")||n.includes("^"))throw e.invalidOption("commits",`unsupported revision form '${n}' (use a commit-ish or A..B)`);const a=Cu.exec(n);if(null===a){r.push(await Da(t,n));continue}const i=await fa(t,a[1]),o=await fa(t,a[2]);r.push(...await Mu(t,i,o))}return r})(a,r.commits);return await In(a,await Ma(a,i)),!0===r.noCommit?(async(a,r)=>{const n=await t.acquireIndexLock(a);try{let i=await t.readIndex(a);for(let o=0;o<r.length;o+=1){const c=r[o],d=await Ca(a,c);if(Eu(d))throw e.revertMergeNoMainline(c);const u=d.parents[0],l=void 0!==u?await Ma(a,u):await Tu(a),f=await t.synthesizeTreeFromIndex(a,i.entries),m=await en(a,{baseTree:d.tree,oursTree:f,theirsTree:l,currentIndex:i,labels:ie(c,s(d.message))});if("would-overwrite"===m.kind)throw e.workingTreeDirty({localChanges:m.localChanges,untracked:m.untracked});if("conflict"===m.kind)return await n.commit(m.indexEntries),{kind:"conflict",commit:c,conflicts:$u(m.conflicts),remaining:r.length-(o+1)};i={...i,entries:m.result.newIndexEntries}}return await n.commit(i.entries),{kind:"no-commit",sources:r}}finally{await n.release()}})(a,o):Du(a,o,n.target,i,{multiPick:o.length>1,sequenceHead:i,onEmpty:"stop"})},Nu=async a=>{await st(a),await ct(a,"revert --continue");const r=await fi(a),n=await fn(a);if(void 0===r&&(void 0===n||0===n.length))throw e.noOperationInProgress("revert");const i=await dt(a);if("symbolic"!==i.kind)throw e.unsupportedOperation("revert --continue","cannot continue with detached HEAD");let o=await t.resolveRef(a,i.target);const c=[];if(void 0!==r){const d=void 0!==n?n.length-1:0,u=await(async(a,r,n)=>{const i=await t.readIndex(a);(t=>{const a=new Set;for(const e of t)0!==e.flags.stage&&a.add(e.path);if(a.size>0)throw e.mergeHasConflicts(a.size,[...a])})(i.entries);const o=await t.synthesizeTreeFromIndex(a,i.entries);if(o===await Ma(a,n))return{empty:!0};const c=await(async(e,a,r,n)=>{const i=await Rn(e),o=Tn(On(await tt(e)??""),{allowEmpty:!1}),c=await t.createCommit(e,{tree:n,parents:[a],author:i,committer:i,message:o,extraHeaders:[]});return await t.updateRef(e,r,c,{expected:a,reflogMessage:`commit: ${s(o)}`}),c})(a,n,r,o);return await mi(a),await rt(a),{created:c}})(a,i.target,o);if("empty"in u)return{kind:"empty",commit:r,remaining:d};c.push({source:r,created:u.created}),o=u.created}const d=(n??[]).slice(void 0!==r?1:0).map(e=>e.oid),u=await dn(a)??o,l=void 0===r?"drop":"stop",f=await Du(a,d,i.target,o,{multiPick:!0,sequenceHead:u,onEmpty:l});return"reverted"===f.kind?{kind:"reverted",commits:[...c,...f.commits]}:f},Pu=async a=>{await st(a),await ct(a,"revert --skip");const r=await fi(a),n=await fn(a);if(void 0===r&&(void 0===n||0===n.length))throw e.noOperationInProgress("revert");const i=await Aa(a,"revert --skip"),o=await t.resolveRef(a,i);await ht(a,o),await mi(a),await rt(a);const s=(n??[]).slice(1).map(e=>e.oid),c=await dn(a)??o;return Du(a,s,i,o,{multiPick:!0,sequenceHead:c,onEmpty:"stop"})},Lu=async a=>{await st(a),await ct(a,"revert --abort");const r=await fi(a),n=await dn(a);if(void 0===r&&void 0===n)throw e.noOperationInProgress("revert");const i=await Aa(a,"revert --abort"),o=n??await t.resolveRef(a,i);return await pn(a,{branch:i,target:o,clearHead:mi}),{head:o,branch:i}},Hu=(e,t)=>void 0===e||e(t),_u=e=>({kind:"delete",path:e.path,mode:e.mode,id:void 0,previousId:e.id,previousMode:e.mode}),ju=e=>({kind:"add",path:e.path,mode:e.mode,id:e.id,previousId:void 0,previousMode:void 0}),Bu=e=>({kind:"noop",path:e.path,mode:e.mode,id:e.id,previousId:e.id,previousMode:e.mode}),Uu={ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,fileSize:0},Fu=e=>({...Uu,mode:e.mode,id:e.id,flags:{...t.STAGE0_FLAGS,skipWorktree:!0},path:e.path}),Wu=e=>e.flags.skipWorktree?{...e,flags:{...e.flags,skipWorktree:!1}}:e,qu=async(e,a)=>{const r=e.layout.workDir,n=await t.acquireIndexLock(e);try{const i=(await t.readIndex(e)).entries.filter(e=>0===e.flags.stage),o=await(async(e,a,r,n)=>{const i=[],o=[],s=[];for(const c of r){if(Hu(n.matcher,c.path)){i.push(c);continue}const r=t.joinPath(a,c.path),d=await e.fs.exists(r);d&&await t.isWorkingTreeDirty(e,r,c.id)&&!0!==n.force?s.push(c):o.push({entry:c,present:d})}return{included:i,removable:o,retained:s}})(e,r,i,a),s=await(async(e,a,r)=>{const n=[];for(const{entry:e,present:t}of r.removable)n.push(t?_u(e):Bu(e));for(const i of r.included){const r=await e.fs.exists(t.joinPath(a,i.path));n.push(r?Bu(i):ju(i))}const i={add:0,update:0,delete:0,noop:0};for(const e of n)i[e.kind]+=1;return{entries:n,stats:i}})(e,r,o),c=await t.applyChangeset(e,{changeset:s,force:!0,workdir:r}),d=((e,t)=>{const a=new Map;for(const e of t)a.set(e.path,e);const r=[];for(const t of e.included)r.push(a.get(t.path)??Wu(t));for(const{entry:t}of e.removable)r.push(Fu(t));for(const t of e.retained)r.push(Wu(t));return r})(o,c.writtenEntries);return await n.commit(d),{materialized:c.written,removed:c.deleted,retained:o.retained.map(e=>e.path)}}finally{await n.release()}},zu=async e=>{await st(e),await ct(e,"sparse-checkout"),await lt(e)},Gu=async e=>{await zu(e);const a=await t.readConfig(e);if(!0!==a.core?.sparseCheckout)return{cone:!1,patterns:[]};const r=!0===a.core.sparseCheckoutCone,n=await t.readSparsePatternText(e)??"";return"cone"===(i=t.parseSparseCheckout(n,r).spec).mode?{cone:!0,patterns:[...i.recursive].sort()}:{cone:!1,patterns:i.rules.map(e=>e.source)};var i},Vu=(e,t)=>void 0===t?{matcher:e}:{matcher:e,force:t},Xu=async(e,a,r,n)=>{const i=await qu(e,Vu(t.buildSparseMatcher(a),n));return await t.writeSparsePatternText(e,r),await t.updateCoreConfig(e,{sparseCheckout:"true",sparseCheckoutCone:"cone"===a.mode?"true":"false"}),tl("cone"===a.mode,i)},Ku=async(a,r)=>{if(await zu(a),0===r.patterns.length)throw e.invalidOption("patterns","set requires at least one pattern");const n=await t.readConfig(a),i=r.cone??n.core?.sparseCheckoutCone??!0,{spec:o,text:s}=Qu(i,r.patterns);return Xu(a,o,s,r.force)},Yu=async(a,r)=>{if(await zu(a),0===r.patterns.length)throw e.invalidOption("patterns","add requires at least one pattern");const n=await t.readConfig(a);if(!0!==n.core?.sparseCheckout)throw e.invalidOption("action","add requires sparse checkout to be enabled");const i=!0===n.core.sparseCheckoutCone,o=await t.readSparsePatternText(a)??"",{spec:s,text:c}=el(i,o,r.patterns);return Xu(a,s,c,r.force)},Zu=async(a,r)=>{await zu(a);const n=await t.loadSparseMatcher(a);if(void 0===n)throw e.invalidOption("action","reapply requires sparse checkout to be enabled");const i=await t.readConfig(a),o=await qu(a,Vu(n,r?.force));return tl(!0===i.core?.sparseCheckoutCone,o)},Ju=async(e,a)=>{await zu(e);const r=await qu(e,Vu(void 0,a?.force));return await t.updateCoreConfig(e,{sparseCheckout:"false"}),tl(!1,r)},Qu=(e,a)=>{if(e){const e=t.buildConeSpec(a);return{spec:e,text:t.serializeCone(e)}}const r=a.join("\n");return{spec:t.parseSparseCheckout(r,!1).spec,text:r}},el=(e,a,r)=>{if(e){const e=t.parseSparseCheckout(a,!0).spec,n="cone"===e.mode?[...e.recursive,...r]:r,i=t.buildConeSpec(n);return{spec:i,text:t.serializeCone(i)}}const n=(""===a?r:[a,...r]).join("\n");return{spec:t.parseSparseCheckout(n,!1).spec,text:n}},tl=(e,t)=>({cone:e,materialized:t.materialized,removed:t.removed,retained:t.retained}),al="refs/stash",rl=new TextEncoder,nl=(e,a)=>t.atomicWriteRef(e,al,t.looseRefPath(e.layout.gitDir,al),rl.encode(`${a}\n`)),il=async e=>{const a=await t.readReflog(e,al),r=a.length-1;return a.map((e,t)=>{const n=a[r-t];return{index:t,selector:`stash@{${t}}`,stash:n.newId,message:n.message}})},ol=async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);return r.data.tree},sl=async(e,a,r)=>{const n=t.joinPath(e.layout.workDir,a),i=r.isSymbolicLink?(new TextEncoder).encode(await e.fs.readlink(n)):await e.fs.read(n);return{id:await t.hashBlob(e,i,{write:!0}),mode:t.deriveWorkingMode(r)}},cl=async(a,r={})=>{await st(a),await ct(a,"stash"),await lt(a);const n=await dt(a),i=await(async(a,r)=>{const n=await(async(a,r)=>{if("direct"===r.kind)return r.id;try{return await t.resolveRef(a,r.target)}catch(t){if(t instanceof e.TsgitError&&"REF_NOT_FOUND"===t.data.code)throw e.noInitialCommit();throw t}})(a,r),i=await t.readObject(a,n);if("commit"!==i.type)throw t.unexpectedObjectType("commit",i.type,n);return{b:n,bTree:i.data.tree,branchRef:"symbolic"===r.kind?r.target:void 0,subject:s(i.data.message)}})(a,n),o=await t.acquireIndexLock(a);try{const e=await t.readIndex(a),n=await t.synthesizeTreeFromIndex(a,e.entries),s=await(async(e,a)=>{const r=[];let n=!1;const i=await t.maybeBuildAttributeProvider(e);for(const o of a.entries){if(0!==o.flags.stage)continue;if(o.flags.skipWorktree){r.push(o);continue}const a=await t.compareWorkingTreeEntry(e,o,i);if("absent"===a){n=!0;continue}if("unchanged"===a){r.push(o);continue}n=!0;const s=await e.fs.lstat(t.joinPath(e.layout.workDir,o.path)),{id:c,mode:d}=await sl(e,o.path,s);r.push(Xr(o.path,c,d))}return{entries:r,dirty:n}})(a,e),c=r.includeUntracked?await(async(e,a)=>{const r=new Set(a.entries.map(e=>e.path)),n=await t.buildRepoIgnorePredicate(e),i=[],o=[];for await(const{path:a,stat:s}of t.walkWorkingTree(e,{ignore:n})){if(r.has(a))continue;const{id:t,mode:n}=await sl(e,a,s);o.push(Xr(a,t,n)),i.push(a)}return{paths:i,entries:o}})(a,e):{paths:[],entries:[]};if(!(n!==i.bTree||s.dirty||c.paths.length>0))return{kind:"no-local-changes"};const d=await dl(a,{base:i,iTree:n,working:s,untracked:c,opts:r});return await(async(e,a,r)=>{const n=await(async e=>{const a=await t.getRefStore(e).resolveDirect(al);return"direct"===a.kind?a.id:t.ZERO_OID})(e);await nl(e,a);const i=await t.resolveReflogIdentity(e);await t.appendReflog(e,al,{oldId:n,newId:a,identity:i,message:t.sanitizeReflogMessage(r)})})(a,d.stash,d.message),await fl(a,o,{base:i,iTree:n,untracked:c,opts:r}),{kind:"saved",stash:d.stash,message:d.message}}finally{await o.release()}},dl=async(e,a)=>{const{base:r,iTree:n,working:i,untracked:o,opts:s}=a,c=await t.resolveReflogIdentity(e),d=(u=r.branchRef,u?.startsWith("refs/heads/")?u.slice(11):"(no branch)");var u;const l=te(r.b),f=r.subject,m=void 0!==s.message?((e,t)=>`On ${e}: ${t}`)(d,s.message):((e,t,a)=>`WIP on ${e}: ${t} ${a}`)(d,l,f),h=(a,r,n)=>t.createCommit(e,{tree:a,parents:r,author:c,committer:c,message:n,extraHeaders:[]}),w=await h(n,[r.b],((e,t,a)=>`index on ${e}: ${t} ${a}`)(d,l,f)),p=await t.synthesizeTreeFromIndex(e,i.entries);if(0===o.paths.length)return{stash:await h(p,[r.b,w],m),message:m};const g=await t.synthesizeTreeFromIndex(e,o.entries),y=await h(g,[],((e,t,a)=>`untracked files on ${e}: ${t} ${a}`)(d,l,f));return{stash:await h(p,[r.b,w,y],m),message:m}},ul=async e=>(await st(e),{entries:await il(e)}),ll=async(a,r={})=>(await st(a),await ct(a,"stash drop"),(async(a,r)=>{const n=await t.readReflog(a,al),i=n.length-1-r,o=n[i];if(void 0===o)throw e.stashNotFound(r,n.length);const s=n[i+1],c=n.filter((e,t)=>t!==i).map(e=>e===s?{...e,oldId:o.oldId}:e);if(0===c.length)return await t.getRefStore(a).removeLoose(al),await t.deleteReflog(a,al),{dropped:o.newId,remaining:0};const d=c[c.length-1];return await nl(a,d.newId),await t.writeReflog(a,al,c),{dropped:o.newId,remaining:c.length}})(a,r.index??0)),fl=async(e,a,r)=>{const{base:n,iTree:i,untracked:o,opts:s}=r,c=await t.readIndex(e),d=!0===s.keepIndex?i:n.bTree,u=await t.materializeTree(e,{targetTree:d,currentIndex:c,force:!0,forceRewriteAll:!0});if(await a.commit(u.newIndexEntries),!0===s.includeUntracked)for(const a of o.paths)await t.removeWorkingTreeFile(e,a)},ml=async(a,r={})=>{await st(a),await ct(a,"stash apply"),await lt(a);const n=await(async(a,r)=>{const n=await t.readReflog(a,al),i=n[n.length-1-r];if(void 0===i)throw e.stashNotFound(r,n.length);return i.newId})(a,r.index??0),i=await(async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);const[n,i,o]=r.data.parents;if(void 0===n||void 0===i)throw t.invalidCommit("ref does not point at a stash commit");return{base:n,indexParent:i,untrackedParent:o,wTree:r.data.tree}})(a,n),o=await ol(a,i.base),s=void 0!==i.untrackedParent?await ol(a,i.untrackedParent):void 0,c=await t.acquireIndexLock(a);try{const d=await t.readIndex(a),u=await t.synthesizeTreeFromIndex(a,d.entries);if(void 0!==s){const r=await(async(e,a)=>{const r=await t.flattenTree(e,a),n=[];for(const a of r.entries.keys())await e.fs.exists(t.joinPath(e.layout.workDir,a))&&n.push(a);return n})(a,s);if(r.length>0)throw e.stashApplyWouldOverwrite(r)}const l=await en(a,{baseTree:o,oursTree:u,theirsTree:i.wTree,currentIndex:d,labels:oe});if("would-overwrite"===l.kind)throw e.stashApplyWouldOverwrite([...l.localChanges,...l.untracked]);return"conflict"===l.kind?(await c.commit(l.indexEntries),{kind:"conflict",conflicts:l.conflicts.map(e=>({path:e.path,type:e.type}))}):(!0===r.restoreIndex&&await(async(e,a,r)=>{const n=await ol(e,r.indexParent),i=await(async(e,a)=>{const[r,n,i]=await Promise.all([void 0!==a.baseTree?t.flattenTree(e,a.baseTree):Promise.resolve(void 0),t.flattenTree(e,a.oursTree),t.flattenTree(e,a.theirsTree)]),o=await Ce(r,n,i,Fr(e,a.labels),a.labels);return o.cleanMerge?{kind:"clean",mergedTree:await Zr(e,o.outcomes)}:{kind:"conflict",conflicts:o.conflicts}})(e,{baseTree:r.bTree,oursTree:r.cTree,theirsTree:n,labels:oe});if("clean"!==i.kind)return;const o=await t.buildIndexFromTree(e,{targetTree:i.mergedTree,currentIndex:r.currentIndex});await a.commit(o)})(a,c,{bTree:o,cTree:u,indexParent:i.indexParent,currentIndex:d}),void 0!==s&&await(async(e,a)=>{const r=await t.flattenTree(e,a);for(const[a,n]of r.entries){const r=await t.streamBlob(e,n.id);await t.writeWorkingTreeFileStream(e,a,r)}})(a,s),{kind:"applied",stash:n})}finally{await c.release()}},hl=async(e,t={})=>{const a=await ml(e,t);if("conflict"===a.kind)return a;const r=await ll(e,{index:t.index??0});return{kind:"applied",stash:a.stash,dropped:r.dropped}},wl=e=>e.split("/").length,pl=(e,t)=>`${"../".repeat(2+wl(e))}${t}`,gl="./",yl="../",vl=e=>e.startsWith("/"),bl=e=>{const t=e.indexOf(":"),a=e.indexOf("/");return t<0||a>=0&&a<t},kl=(t,a)=>{const r=t.lastIndexOf("/");if(r>=0)return{base:t.slice(0,r),colonSep:!1};const n=t.lastIndexOf(":");if(n>=0)return{base:t.slice(0,n),colonSep:!0};if(a||"."===t)throw new e.TsgitError({code:"RELATIVE_URL_UNRESOLVABLE",url:t});return{base:".",colonSep:!1}},xl=(e,t)=>t.startsWith(gl)||t.startsWith(yl)?((e,t)=>{if(!bl(t)||vl(t))return t;let a=e.endsWith("/")?e.slice(0,-1):e;const r=bl(a)&&!vl(a);r&&(a=(e=>e.startsWith(gl)||e.startsWith(yl)?e:`${gl}${e}`)(a));let n=t,i=!1;for(;n.length>0;)if(n.startsWith(yl)){n=n.slice(3);const e=kl(a,r);a=e.base,i=i||e.colonSep}else{if(!n.startsWith(gl))break;n=n.slice(2)}const o=`${a}${i?":":"/"}${n}`,s=n.endsWith("/")?o.slice(0,-1):o;return s.startsWith(gl)?s.slice(2):s})(e,t):t,Il=new Set(["checkout","rebase","merge","none"]),El=e=>Il.has(e)?e:void 0,$l=".gitmodules",Tl="refs/heads/",Ol="HEAD",Rl=e=>void 0!==e.path&&!t.isUnsafeSubmoduleName(e.path),Sl=async a=>{const r=t.joinPath(a.layout.workDir,$l);if(!await a.fs.exists(r))return[];const n=await a.fs.stat(r);if(n.size>t.MAX_GITMODULES_BYTES)throw e.workingTreeFileTooLarge(r,n.size,t.MAX_GITMODULES_BYTES);return t.parseGitmodules(await a.fs.readUtf8(r))},Dl=t=>{const a=new Map;for(const r of t){if(void 0===r.update)continue;const t=El(r.update);if(void 0===t)throw e.invalidOption(`submodule.${r.name}.update`,`invalid value '${r.update}'`);a.set(r.name,t)}return a},Cl=(t,a)=>{const r=t.filter(Rl);if(void 0===a)return r;const n=r.filter(e=>a.includes(e.path)),i=new Set(n.map(e=>e.path));for(const t of a)if(!i.has(t))throw e.pathspecNoMatch(t);return n},Ml=async(e,a)=>{const r=await t.getRefStore(e).resolveDirect(Ol),n="symbolic"===r.kind&&r.target.startsWith(Tl)?r.target.slice(11):void 0,i=(void 0!==n?a.branch?.get(n)?.remote:void 0)??"origin";return a.remote?.get(i)?.url??e.layout.workDir},Al=(e,t,a)=>{const r=(t,a)=>({kind:"set",section:"submodule",subsection:e,key:t,value:a}),n=[r("active","true"),r("url",t)];return void 0!==a&&n.push(r("update",a)),n},Nl=async(e,a={})=>{await st(e);const r=await Sl(e),n=Dl(r),i=Cl(r,a.paths),o=await t.readConfig(e),s=await Ml(e,o),c=[],d=[];for(const e of i){if(void 0===e.url)continue;const t=e.path,a=n.get(e.name),r=o.submodule?.get(e.name)?.url;if(void 0!==r){c.push({name:e.name,path:t,url:r,registered:!1,...void 0!==a?{update:a}:{}});continue}const i=xl(s,e.url);d.push(...Al(e.name,i,a)),c.push({name:e.name,path:t,url:i,registered:!0,...void 0!==a?{update:a}:{}})}return d.length>0&&await t.updateConfigOperations(e,d),{entries:c}},Pl=async(e,a,r,n)=>{const i=await t.deriveSubmoduleContext(e,a,r);return void 0!==i&&(await t.updateConfigOperations(i,[{kind:"set",section:"remote",subsection:"origin",key:"url",value:n}]),!0)},Ll=async(e,a,r,n)=>{await st(e);const i=Cl(await Sl(e),a.paths),o=await t.readConfig(e),s=await Ml(e,o),c=[],d=[];for(const t of i){if(void 0===t.url)continue;if(void 0===o.submodule?.get(t.name)?.url)continue;const a=t.path,r=xl(s,t.url);d.push({kind:"set",section:"submodule",subsection:t.name,key:"url",value:r});const n=await Pl(e,t.name,a,r);c.push({name:t.name,path:a,url:r,syncedRemote:n})}if(d.length>0&&await t.updateConfigOperations(e,d),!0===a.recursive&&r<t.MAX_SUBMODULE_DEPTH)for(const o of i){const i=`${e.layout.gitDir}/modules/${o.name}`,s=await t.deriveSubmoduleContext(e,o.name,o.path,n);void 0!==s&&await Ll(s,a,r+1,new Set([...n,i]))}return{entries:c}},Hl=(e,t={})=>Ll(e,t,0,new Set),_l=async(a,r,n)=>{const i=await t.deriveSubmoduleContext(a,r,n);if(void 0!==i&&!(await fo(i)).clean)throw(t=>new e.TsgitError({code:"SUBMODULE_HAS_MODIFICATIONS",path:t}))(n)},jl=async(e,a)=>{const r=t.joinPath(e.layout.workDir,a);return!!await e.fs.exists(r)&&0!==(await e.fs.readdir(r)).length&&(await e.fs.rmRecursive(r),await e.fs.mkdir(r),!0)},Bl=async(a,r={})=>{if(await st(a),(void 0===r.paths||0===r.paths.length)&&!0!==r.all)throw e.invalidOption("submodule.deinit","use 'all: true' to deinitialise every submodule");const n=await Sl(a),i=!0===r.all?n.filter(Rl):Cl(n,r.paths),o=await t.readConfig(a),s=[];for(const e of i){const n=e.path;!0!==r.force&&await _l(a,e.name,n);const i=await jl(a,n);!0===o.submodule?.has(e.name)&&await t.updateConfigOperations(a,[{kind:"removeSection",section:"submodule",subsection:e.name}]),s.push({name:e.name,path:n,url:e.url??"",cleared:i})}return{entries:s}},Ul=async(e,a={})=>{await st(e);const r=(e=>t.looksLikeObjectId(e)?t.ObjectId.from(e):t.validateRefName(e))(a.ref??"HEAD"),n=!0===a.recursive,i=[];for await(const o of t.walkSubmodules(e,{ref:r,recursive:n,...void 0!==a.maxDepth?{maxDepth:a.maxDepth}:{}}))i.push(o);return{entries:i}},Fl=(e,t,a)=>({kind:"set",section:"submodule",subsection:e,key:t,value:a}),Wl=async(e,a,r,n,i)=>{await ri(a,{url:r}),await t.updateConfigOperations(a,[{kind:"set",section:"core",key:"worktree",value:pl(n,i)}]),await e.fs.writeUtf8(t.joinPath(e.layout.workDir,`${i}/.git`),`${((e,t)=>`gitdir: ${"../".repeat(wl(t))}.git/modules/${e}`)(n,i)}\n`)},ql=async(a,r)=>{await st(a),await ct(a,"submodule add");const n=r.name??r.path;((a,r,n)=>{if(""===n)throw e.invalidOption("submodule.add","url must not be empty");if(""===r)throw e.invalidOption("submodule.add","path must not be empty");if(t.isUnsafeSubmoduleName(a))throw e.invalidOption("submodule.add.name",`unsafe name '${a}'`);if(t.isUnsafeSubmoduleName(r))throw e.invalidOption("submodule.add.path",`unsafe path '${r}'`)})(n,r.path,r.url),void 0!==r.branch&&t.validateRefName(`${Tl}${r.branch}`),await(async(a,r)=>{if((await t.readIndex(a)).entries.some(e=>e.path===r))throw(t=>new e.TsgitError({code:"SUBMODULE_PATH_EXISTS",path:t}))(r)})(a,r.path);const i=await t.readConfig(a),o=await Ml(a,i),s=xl(o,r.url),c=t.deriveSubmoduleCloneContext(a,n,r.path);await Wl(a,c,s,n,r.path),void 0!==r.branch?await(async(e,a)=>{const r=await t.resolveRef(e,`refs/remotes/origin/${a}`),n=`${Tl}${a}`;await e.fs.writeUtf8(`${e.layout.gitDir}/${n}`,`${r}\n`),await t.recordRefUpdate(e,n,t.ZERO_OID,r,`branch: Created from origin/${a}`),await t.updateConfigOperations(e,[{kind:"set",section:"branch",subsection:a,key:"remote",value:"origin"},{kind:"set",section:"branch",subsection:a,key:"merge",value:n}]),await Lr(e,{rev:a})})(c,r.branch):await t.materializeWorktreeFromHead(c);const d="symbolic"===(f=await t.getRefStore(c).resolveDirect(Ol)).kind&&!0===f.target?.startsWith(Tl)?f.target.slice(11):"",u=await t.resolveRef(c,Ol),l=await(async(e,a,r,n,i)=>{const o=t.joinPath(e.layout.workDir,$l),s=await e.fs.exists(o)?await e.fs.readUtf8(o):"",c=[Fl(a,"path",r),Fl(a,"url",n)];void 0!==i&&c.push(Fl(a,"branch",i));let d=s;for(const e of c)d=t.applyConfigOpInText(d,e);return await e.fs.writeUtf8(o,d),(new TextEncoder).encode(d)})(a,n,r.path,r.url,r.branch);var f;return await(async(e,a,r,n)=>{const i=await t.writeObject(e,{type:"blob",id:"",content:n}),o=await t.acquireIndexLock(e);try{const n=await t.readIndex(e),s=new Map(n.entries.map(e=>[e.path,e])),c=await e.fs.lstat(t.joinPath(e.layout.workDir,a));s.set(a,pt(c,t.FILE_MODE.GITLINK,r,a));const d=await e.fs.lstat(t.joinPath(e.layout.workDir,$l));s.set($l,pt(d,t.FILE_MODE.REGULAR,i,$l)),await o.commit([...s.values()])}finally{await o.release()}})(a,r.path,u,l),await t.updateConfigOperations(a,[Fl(n,"url",s),Fl(n,"active","true")]),{name:n,path:r.path,url:s,id:u,branch:d}},zl=(e,a)=>e.entries.find(e=>e.path===a&&e.mode===t.FILE_MODE.GITLINK)?.id,Gl=(t,a,r,n)=>{if(void 0!==t.mode)return t.mode;const i=a.submodule?.get(n)?.update,o=void 0===i?void 0:El(i);if(void 0!==i&&void 0===o)throw e.invalidOption(`submodule.${n}.update`,`invalid value '${i}'`);return o??r??"checkout"},Vl=async(e,a,r)=>{if("checkout"===r){const r=await t.getRefStore(e).resolveDirect(Ol);return("direct"!==r.kind||r.id!==a)&&(await Lr(e,{rev:a,detach:!0}),!0)}const n=await t.resolveRef(e,Ol);return"rebase"===r?await Wd(e,{upstream:a}):await Tc(e,{rev:a}),await t.resolveRef(e,Ol)!==n},Xl=async(e,a={})=>{await st(e),await ct(e,"submodule update");const r=await Sl(e),n=Cl(r,a.paths),i=Dl(r),o=await t.readIndex(e);let s=await t.readConfig(e);const c=[];for(const r of n){const n=zl(o,r.path);if(void 0===n)continue;if(await t.assertNoValuelessConfig(e,"submodule",r.name,["update"]),void 0===s.submodule?.get(r.name)?.url){if(await t.assertNoValuelessConfig(e,"submodule",r.name,["url"]),!0!==a.init)continue;await Nl(e,{paths:[r.path]}),s=await t.readConfig(e)}const d=Gl(a,s,i.get(r.name),r.name);if("none"===d){c.push({name:r.name,path:r.path,id:n,mode:d,cloned:!1,changed:!1});continue}const u=s.submodule?.get(r.name)?.url??r.url??"",l=t.deriveSubmoduleCloneContext(e,r.name,r.path),f=!await e.fs.exists(`${l.layout.gitDir}/HEAD`);f&&(await Wl(e,l,u,r.name,r.path),await t.materializeWorktreeFromHead(l)),await t.readObject(l,n);const m=await Vl(l,n,d);c.push({name:r.name,path:r.path,id:n,mode:d,cloned:f,changed:m})}return{entries:c}},Kl="refs/tags/",Yl=async e=>{await st(e);const a=`${e.layout.gitDir}/refs/tags`;if(!await e.fs.exists(a))return{tags:[]};const r=await e.fs.readdir(a),n=[];for(const a of r){if(!a.isFile)continue;const r=`${Kl}${a.name}`,i=await t.resolveRef(e,r);n.push({name:r,id:i})}return n.sort((e,t)=>e.name<t.name?-1:1),{tags:n}},Zl=async(a,r)=>{await st(a);const n=t.validateRefName(`${Kl}${r.name}`),i=void 0!==r.target?r.target:await Ql(a),o=/^[0-9a-f]{40}$/.test(i)?i:await t.resolveRef(a,i),s=`tag: ${r.name}`;try{await t.updateRef(a,n,o,!0===r.force?{reflogMessage:s}:{expected:"absent",reflogMessage:s})}catch(t){if(t instanceof e.TsgitError&&"REF_UPDATE_CONFLICT"===t.data.code)throw e.tagExists(n);throw t}return{name:n,id:o}},Jl=async(a,r)=>{await st(a);const n=t.validateRefName(`${Kl}${r.name}`);if(!await a.fs.exists(`${a.layout.gitDir}/${n}`))throw e.tagNotFound(n);return await t.updateRef(a,n,t.ZERO_OID,{delete:!0}),{name:n}},Ql=async e=>{const a=await dt(e);return"direct"===a.kind?a.id:t.resolveRef(e,a.target)},ef=e=>`${e}/.git`,tf=t=>new e.TsgitError({code:"WORKTREE_PATH_EXISTS",path:t}),af=e=>{const t=e.split("/").filter(e=>""!==e);return t[t.length-1]??""},rf=(e,t)=>{const a=t.startsWith("/")?t:`${e}/${t}`,r=[];for(const e of a.split("/"))""!==e&&"."!==e&&(".."!==e?r.push(e):r.pop());return`/${r.join("/")}`},nf=(e,t)=>e.worktreeFs?.(t)??e.fs,of=(e,a,r)=>{const n=t.commonGitDir(e),i=`${n}/worktrees/${a}`,{promisor:o,hooks:s,command:c,...d}=e;return Object.freeze({...d,fs:nf(e,r),layout:Object.freeze({workDir:r,gitDir:i,commonDir:n,bare:!1,...void 0!==e.layout.homeDir?{homeDir:e.layout.homeDir}:{}}),cwd:r})},sf=async(e,a)=>{const r=t.parseLooseRef(a);if("direct"===r.type)return{head:r.target,detached:!0};const n=await t.getRefStore(e).resolveDirect(r.target);return{branch:r.target,detached:!1,..."direct"===n.kind?{head:n.id}:{}}},cf=async(e,t,a)=>{const r=(await e.fs.readUtf8(`${a}/gitdir`)).trim(),n=r.endsWith("/.git")?r.slice(0,-5):r,i=await sf(e,await e.fs.readUtf8(`${a}/HEAD`)),o=await(async(e,t)=>{if(await e.fs.exists(`${t}/locked`))return{reason:(await e.fs.readUtf8(`${t}/locked`)).trim()}})(e,a),s=nf(e,n),c=await s.exists(r)?void 0:{reason:"gitdir file points to non-existent location"};return{id:t,path:n,bare:!1,main:!1,...i,...void 0!==o?{locked:o}:{},...void 0!==c?{prunable:c}:{}}},df=(e,t)=>e.path<t.path?-1:e.path>t.path?1:0,uf=async e=>{const a=await(async e=>{const a=e.layout.workDir;if(e.layout.bare)return{path:a,detached:!1,bare:!0,main:!0};const r=await e.fs.readUtf8(`${t.commonGitDir(e)}/HEAD`);return{path:a,bare:!1,main:!0,...await sf(e,r)}})(e),r=`${t.commonGitDir(e)}/worktrees`;if(!await e.fs.exists(r))return[a];const n=[];for(const t of await e.fs.readdir(r))t.isDirectory&&n.push(await cf(e,t.name,`${r}/${t.name}`));return n.sort(df),[a,...n]},lf="HEAD",ff="refs/heads/",mf=async e=>(await st(e),{entries:await uf(e)}),hf=async(e,t)=>{const a=nf(e,t);if(await a.exists(t)&&(await a.readdir(t)).length>0)throw tf(t)},wf=async(a,r)=>{if(await st(a),""===r.path)throw tf("");const n=rf(a.cwd,r.path);if(""===(i=af(n))||"."===i||".."===i||i.includes("/")||i.includes("\\")||(e=>{for(const t of e)if(t.charCodeAt(0)<=31)return!0;return!1})(i))throw e.invalidOption("worktree add",`invalid worktree path '${r.path}'`);var i;await hf(a,n);const o=await ro(a,r.commitish??"HEAD"),s=await t.readTree(a,o),c=await(async(e,a,r)=>{if(void 0!==a.branch)return{kind:"create",branchRef:`${ff}${a.branch}`,name:a.branch};if(!0===a.detach)return{kind:"detached"};if(void 0!==a.commitish){const r=`${ff}${a.commitish}`;return"direct"===(await t.getRefStore(e).resolveDirect(r)).kind?{kind:"checkout",branchRef:r}:{kind:"detached"}}const n=af(r);return{kind:"create",branchRef:`${ff}${n}`,name:n}})(a,r,n);"checkout"===c.kind&&await(async(t,a,r)=>{if(r)return;const n=(await uf(t)).find(e=>e.branch===a);if(void 0!==n)throw new e.TsgitError({code:"BRANCH_CHECKED_OUT",branch:a,path:n.path})})(a,c.branchRef,!0===r.force),"create"===c.kind&&await Ja(a,{name:c.name,startPoint:r.commitish??"HEAD",force:!0===r.force});const d="detached"===c.kind?{kind:"detached",oid:o}:{kind:"branch",ref:c.branchRef},u=await(async(e,a)=>{const r=`${t.commonGitDir(e)}/worktrees`,n=await e.fs.exists(r)?(await e.fs.readdir(r)).filter(e=>e.isDirectory).map(e=>e.name):[];return((e,t)=>{let a=e,r=0;for(;t.has(a);)r+=1,a=`${e}${r}`;return a})(af(a),new Set(n))})(a,n);await(async(e,a,r,n,i)=>{const o=`${t.commonGitDir(e)}/worktrees/${a}`;var s;return await e.fs.writeUtf8(`${o}/commondir`,"../..\n"),await e.fs.writeUtf8(`${o}/gitdir`,`${ef(r)}\n`),await e.fs.writeUtf8(`${o}/HEAD`,`${(e=>"branch"===e.kind?`ref: ${e.ref}`:e.oid)(n)}\n`),await e.fs.writeUtf8(`${o}/ORIG_HEAD`,`${i}\n`),await nf(e,r).writeUtf8(`${r}/.git`,(s=o,`gitdir: ${s}\n`)),o})(a,u,n,d,o);const l=of(a,u,n);return await(async(e,a)=>{const r=await t.acquireIndexLock(e);try{const n=await t.readIndex(e),i=await t.materializeTree(e,{targetTree:a,currentIndex:n});await r.commit(i.newIndexEntries)}finally{await r.release()}})(l,s.id),await(async(e,a,r)=>{await t.recordRefUpdate(e,lf,t.ZERO_OID,r,""),"detached"!==a.kind&&await t.recordRefUpdate(e,lf,r,r,"reset: moving to HEAD")})(l,c,o),{path:n,id:u,head:o,detached:"detached"===c.kind,..."detached"!==c.kind?{branch:c.branchRef}:{}}},pf=async(t,a,r)=>{const n=(await uf(t)).find(e=>e.path===a);if(void 0===n)throw new e.TsgitError({code:"NOT_A_WORKTREE",path:a});if(n.main||void 0===n.id)throw e.invalidOption(`worktree ${r}`,"cannot operate on the main working tree");return n},gf=(t,a)=>{if(void 0!==t.locked&&!a)throw new e.TsgitError({code:"WORKTREE_LOCKED",path:t.path,reason:t.locked.reason})},yf=async(e,a,r,n={})=>{await st(e);const i=rf(e.cwd,a),o=rf(e.cwd,r),s=await pf(e,i,"move");gf(s,!0===n.force),await hf(e,o),await nf(e,[i,o]).rename(i,o);const c=`${t.commonGitDir(e)}/worktrees/${s.id}`;return await e.fs.writeUtf8(`${c}/gitdir`,`${ef(o)}\n`),{from:i,to:o,id:s.id}},vf=async(a,r,n={})=>{await st(a);const i=rf(a.cwd,r),o=await pf(a,i,"remove");if(gf(o,!0===n.force),!0!==n.force){const t=of(a,o.id,i);if(!(await fo(t)).clean)throw(t=>new e.TsgitError({code:"WORKTREE_DIRTY",path:t}))(i)}return await nf(a,i).rmRecursive(i),await a.fs.rmRecursive(`${t.commonGitDir(a)}/worktrees/${o.id}`),{path:i,id:o.id}},bf=(e,t)=>!(void 0!==t.minParents&&e<t.minParents||void 0!==t.maxParents&&e>t.maxParents),kf=async(t,a,r,n,i)=>{const o=xf(a,r);if("untracked"===o.kind)return{skip:"source-not-tracked"};if(!await If(t,r,o.kind))return{skip:"bad-source"};if(n===r||n.startsWith(`${r}/`))return{skip:"into-self"};const s=e.dirname(n);if(""!==s&&!await Rf(t,s))throw e.mvDestinationDirectoryMissing(r,n);return await Ef(t,a,n,o.kind,!0===i.force)?{kind:o.kind,entries:o.entries}:{skip:"destination-exists"}},xf=(e,t)=>{const a=e.get(t);if(void 0!==a)return{kind:"file",entries:[a]};const r=`${t}/`,n=Array.from(e.values()).filter(e=>e.path.startsWith(r));return n.length>0?{kind:"directory",entries:n}:{kind:"untracked"}},If=async(e,t,a)=>{const r=await Of(e,t);return void 0!==r&&("directory"===a?r.isDirectory&&!r.isSymbolicLink:r.isFile||r.isSymbolicLink)},Ef=async(e,t,a,r,n)=>!(t.has(a)||void 0!==await Of(e,a))||"file"===r&&n,$f=(e,t,a)=>`${a}${e.path.slice(t.length)}`,Tf=(t,a,r)=>{switch(t){case"source-not-tracked":return e.mvSourceNotTracked(a,r);case"bad-source":return e.mvBadSource(a,r);case"destination-exists":return e.mvDestinationExists(a,r);case"into-self":return e.mvIntoSelf(a,r)}},Of=async(e,a)=>e.fs.lstat(((e,a)=>t.joinPath(e.layout.workDir,a))(e,a)).catch(()=>{}),Rf=async(e,t)=>{const a=await Of(e,t);return!0===a?.isDirectory&&!0!==a.isSymbolicLink},Sf="refs/heads/",Df="push:enumerate-objects",Cf="push:upload",Mf=t.ObjectId.from("0".repeat(40)),Af="refs/heads/",Nf=new Set(["side-band-64k","side-band"]),Pf=e=>`${e.parsed.isDelete?"(delete)":e.parsed.src} ${e.localOid} ${e.parsed.dst} ${e.remoteOid}\n`,Lf=/^[A-Za-z0-9._-]+$/,Hf=e=>{const t=new Map;for(const a of e)t.set(a.name,a.id);return t},_f=async(a,r,n,i,o)=>{const s=n.get(r.dst)??Mf;if(r.isDelete){if(s===Mf)throw e.invalidOption("refspecs",`delete target ${r.dst} is not advertised`);return{parsed:r,localOid:Mf,remoteOid:s}}const c=await t.resolveRef(a,r.src);return await jf(a,r,c,s,i,o),{parsed:r,localOid:c,remoteOid:s}},jf=async(t,a,r,n,i,o)=>{const s=await Bf(t,a,i,o);if(void 0===s){if("force"!==a.force&&!0!==o.force&&n!==Mf&&!await Uf(t,n,r))throw e.nonFastForward(a.dst,r,n)}else if(s!==n)throw e.pushRejected(a.dst,"lease-mismatch",Ff())},Bf=async(a,r,n,i)=>{if(void 0===i.forceWithLease)return;if("auto"!==i.forceWithLease)return i.forceWithLease;if(!r.dst.startsWith(Af))throw e.invalidOption("forceWithLease","lease-on-non-branch");const o=r.dst.slice(11);return t.resolveRef(a,`refs/remotes/${n}/${o}`)},Uf=async(e,a,r)=>{for await(const n of t.walkCommits(e,{from:[r],ignoreMissing:!0}))if(n.id===a)return!0;return!1},Ff=()=>({unpackOk:!0,refUpdates:[]}),Wf=async(a,r,n,i,o,s)=>{const c=o.filter(e=>!e.parsed.isDelete).map(e=>e.localOid),d=i.refs.map(e=>e.id),u=await qf(a,c,d),l=await t.buildPack(a,{oids:u}),f=(e=>{const a=t.CLIENT_CAPABILITIES_PUSH.filter(e=>e!==t.AGENT);return[...t.negotiateCapabilities(e,a),t.AGENT]})(i.capabilities),m=(e=>{if(0===e.updates.length)throw t.emptyReceiveUpdates();const a=e.updates.map((t,a)=>((e,t)=>{const a=0===t.length?"":`\0${t.join(" ")}`;return je.encode(`${e.oldId} ${e.newId} ${e.name}${a}\n`)})(t,0===a?e.capabilities:[])),r=t.encodePktStream(a),n=new Uint8Array(r.byteLength+e.packfile.byteLength);return n.set(r,0),n.set(e.packfile,r.byteLength),n})({updates:o.map(zf),capabilities:f,packfile:l.bytes}),h=await Gf(a,r,n,m),w=await Xf(a,h,f);if(!w.unpackOk)throw e.pushRejected(o[0]?.parsed.dst,w.unpackError??"unpack failed",w);return await Yf(a,o,w.refUpdates,s)},qf=async(e,a,r)=>{if(0===a.length)return[];const n=[];for await(const i of t.enumeratePushObjects(e,{wants:a,haves:r}))n.push(i);return n},zf=e=>({name:e.parsed.dst,oldId:e.remoteOid,newId:e.localOid}),Gf=async(t,a,r,n)=>{t.progress.start(Cf);try{const i=Vf(r),o=await a.request({url:i,method:"POST",headers:{"content-type":"application/x-git-receive-pack-request",accept:"application/x-git-receive-pack-result"},body:n,...void 0!==t.signal?{signal:t.signal}:{}});if(200!==o.statusCode)throw e.httpError(o.statusCode,`git-receive-pack returned ${o.statusCode}`);return o}finally{t.progress.end(Cf)}},Vf=e=>{let a;try{a=new URL(e)}catch{throw t.invalidBaseUrl("invalid URL")}if(""!==a.hash)throw t.invalidBaseUrl("fragment must not be set");const r=a.pathname.endsWith("/")?a.pathname.slice(0,-1):a.pathname;return`${a.protocol}//${a.host}${r}/git-receive-pack${a.search}`},Xf=async(a,n,i)=>{const o=r.readableStreamToAsyncIterable(n.body),s=t.decodePktStream(o);if(Kf(i)){const r=t.parseSideBand(s,{onProgress:t=>a.progress.update(Cf,0,void 0,e.sanitize(t))});return Fe(t.decodePktStream(r))}return Fe(s)},Kf=e=>e.some(e=>Nf.has(e)),Yf=async(e,t,a,r)=>{const n=new Map;for(const e of a)n.set(e.name,e);const i=[];for(const a of t){const t=n.get(a.parsed.dst),o=!0===t?.accepted;o&&await Zf(e,a,r),i.push({name:a.parsed.dst,oldId:a.remoteOid,newId:a.localOid,status:o?"ok":"rejected",...void 0!==t?.reason?{reason:t.reason}:{}})}return i},Zf=async(e,a,r)=>{if(!a.parsed.dst.startsWith(Af))return;if(a.parsed.isDelete)return;const n=`refs/remotes/${r}/${a.parsed.dst.slice(11)}`;Jf(n)&&await t.updateRef(e,n,a.localOid,{reflogMessage:"update by push"})},Jf=e=>{try{return t.validateRefName(e),!0}catch{return!1}},Qf=new TextEncoder,em=65536,tm=e=>0|e,am=(e,t,a)=>e.cost[t+e.columnCount*a],rm=(e,t,a)=>{const r=0===a?1:0;let n=tm(am(e,r,t)-e.v[r]);for(let r=1;r<e.columnCount;r++){const i=tm(am(e,r,t)-e.v[r]);r!==a&&n>i&&(n=i)}e.v[a]=tm(e.v[a]-n)},nm=(e,t,a,r,n)=>{const i=((e,t)=>{let a=0,r=tm(am(e,a,t)-e.v[a]),n=-1,i=em;for(let o=1;o<e.columnCount;o++){const s=tm(am(e,o,t)-e.v[o]);i>s&&(r<s?(i=s,n=o):(i=r,r=s,n=a,a=o))}return n<0&&(n=a,i=r),{j1:a,u1:r,j2:n,u2:i}})(e,a);let o=i.j1,s=e.columnToRow[o],c=r,d=n;return i.u1<i.u2?e.v[o]=tm(e.v[o]-(i.u2-i.u1)):s>=0&&(o=i.j2,s=e.columnToRow[o]),s>=0&&(i.u1<i.u2?t[--c]=s:t[d++]=s),e.rowToColumn[a]=o,e.columnToRow[o]=a,{k:c,freeCount:d}},im=(e,t,a,r)=>{let n=t[a[r.up++]],i=-1;for(let o=r.up;o<e.columnCount;o++){const e=a[o];i=e;const s=t[e];s<=n&&(s<n&&(r.up=r.low,n=s),a[o]=a[r.up],a[r.up++]=e)}return{min:n,lastJ:i}},om=(e,t,a)=>{for(let r=a.low;r<a.up;r++)if(-1===e.columnToRow[t[r]])return!0;return!1},sm=(e,t,a,r,n,i)=>{do{const o=r[n.low++],s=e.columnToRow[o],c=tm(am(e,o,s)-e.v[o]-i);for(let o=n.up;o<e.columnCount;o++){const d=r[o],u=tm(am(e,d,s)-e.v[d]-c);if(u<t[d]&&(t[d]=u,a[d]=s,u===i)){if(-1===e.columnToRow[d])return d;r[o]=r[n.up],r[n.up++]=d}}}while(n.low!==n.up);return-1},cm=(e,t)=>{const a=new Array(e.columnCount),r=new Array(e.columnCount),n=new Array(e.columnCount);for(let i=0;i<e.columnCount;i++)a[i]=tm(am(e,i,t)-e.v[i]),r[i]=t,n[i]=i;const i=((e,t,a,r)=>{const n={low:0,up:0};for(;;){const i=n.low,{min:o,lastJ:s}=im(e,t,r,n);if(om(e,r,n))return{j:s,last:i,min:o};const c=sm(e,t,a,r,n,o);if(c>=0)return{j:c,last:i,min:o}}})(e,a,r,n);for(let t=0;t<i.last;t++){const r=n[t];e.v[r]=tm(e.v[r]+(a[r]-i.min))}let o,s=i.j;do{o=r[s],e.columnToRow[s]=o;const t=e.rowToColumn[o];e.rowToColumn[o]=s,s=t}while(t!==o)},dm=(e,t,a)=>e<0?Math.trunc(t*a/100):em,um=(e,t,a,r,n)=>{return a===n?0:a<0&&r<0?(i=t.diff,_(Qf.encode(e.diff),Qf.encode(i),3).reduce((e,t)=>e+1+t.body.length,0)):em;var i},lm=(e,t,a)=>{const r=e.length,n=t.length,i=new Array(r).fill(-1),o=new Array(n).fill(-1),{exactOld:s,exactNew:c}=((e,t)=>{const a=new Array(e.length).fill(-1),r=new Array(t.length).fill(-1),n=new Map;return e.forEach((e,t)=>{const a=n.get(e.diff);a?a.push(t):n.set(e.diff,[t])}),t.forEach((e,t)=>{const i=n.get(e.diff),o=i?.pop();void 0!==o&&(a[o]=t,r[t]=o)}),{exactOld:a,exactNew:r}})(e,t),d=r+n,u=((e,t,a,r,n)=>{const i=e.length,o=t.length,s=i+o,c=new Array(s*s).fill(0);for(let d=0;d<i;d++){for(let n=0;n<o;n++)c[d+s*n]=um(e[d],t[n],a[d],r[n],n);const i=dm(a[d],e[d].diffsize,n);for(let e=o;e<s;e++)c[d+s*e]=i}for(let e=0;e<o;e++){const a=dm(r[e],t[e].diffsize,n);for(let t=i;t<s;t++)c[t+s*e]=a}return c})(e,t,s,c,a),{columnToRow:l}=((e,t)=>{const a=new Array(e),r=new Array(e);if(e<2)return a.fill(0),r.fill(0),{columnToRow:a,rowToColumn:r};a.fill(-1),r.fill(-1);const n={columnCount:e,rowCount:e,cost:t,v:new Array(e).fill(0),columnToRow:a,rowToColumn:r};(e=>{for(let t=e.columnCount-1;t>=0;t--){let a=0;for(let r=1;r<e.rowCount;r++)am(e,t,a)>am(e,t,r)&&(a=r);e.v[t]=am(e,t,a),-1===e.rowToColumn[a]?(e.rowToColumn[a]=t,e.columnToRow[t]=a):(e.rowToColumn[a]>=0&&(e.rowToColumn[a]=-2-e.rowToColumn[a]),e.columnToRow[t]=-1)}})(n);const i=new Array(e);let o=((e,t)=>{let a=0;for(let r=0;r<e.rowCount;r++){const n=e.rowToColumn[r];-1===n?t[a++]=r:n<-1?e.rowToColumn[r]=-2-n:rm(e,r,n)}return a})(n,i);if(0===o)return{columnToRow:a,rowToColumn:r};o=((e,t,a)=>{let r=a;for(let a=0;a<2;a++){let a=0;const n=r;for(r=0;a<n;){const n=t[a++],i=nm(e,t,n,a,r);a=i.k,r=i.freeCount}}return r})(n,i,o);for(let e=0;e<o;e++)cm(n,i[e]);return{columnToRow:a,rowToColumn:r}})(d,u);for(let e=0;e<r;e++){const t=l[e];t>=0&&t<n&&(i[e]=t,o[t]=e)}return{old:e.map((e,t)=>({patch:e,matching:i[t]})),new:t.map((e,t)=>({patch:e,matching:o[t]}))}},fm=new TextEncoder,mm=(e,t)=>({position:t+1,id:e.id}),hm=(e,t)=>({status:"only-old",old:mm(e.patch,t),subject:e.patch.subject}),wm=(e,t)=>({status:"only-new",new:mm(e.patch,t),subject:e.patch.subject}),pm=(e,a,r,n)=>{const i=e.patch.patch!==a.patch.patch;return{status:i?"changed":"unchanged",old:mm(e.patch,r),new:mm(a.patch,n),subject:e.patch.subject,...i?{diffOfDiffs:t.diffLines(fm.encode(e.patch.patch),fm.encode(a.patch.patch))}:{}}},gm=new TextDecoder("utf-8",{fatal:!1}),ym=e=>32===e||e>=9&&e<=13,vm=e=>{if(0===e.length||!((t=e[0])>=65&&t<=90||t>=97&&t<=122||95===t||36===t))return;var t;let a=Math.min(e.length,80);for(;a>0&&ym(e[a-1]);)a--;return gm.decode(e.subarray(0,a))},bm=(e,t,a)=>{const r=t>a?-1:1;for(let n=t;n!==a&&n>=0&&n<e.length;n+=r){const t=vm(e[n]);if(void 0!==t)return{index:n,heading:t}}},km=new Uint8Array,xm=e=>"add"===e.type?`${e.newPath} (new)`:"delete"===e.type?`${e.oldPath} (deleted)`:"rename"===e.type||"copy"===e.type?`${e.oldPath} => ${e.newPath}`:e.oldMode===e.newMode?e.path:`${e.path} (mode change ${e.oldMode} => ${e.newMode})`,Im=e=>"delete"===e.type?e.oldPath:"add"===e.type||"rename"===e.type||"copy"===e.type?e.newPath:e.path,Em=e=>{const t=`${a=e.kind,"context"===a?" ":"delete"===a?"-":"+"}${e.text}`;var a;return e.trailingNoNewline?[t," \"]:[t]},$m=e=>e.oldLen>0?e.oldStart-1:e.oldStart,Tm=e=>{const a=e.oldContent??km,r=e.newContent??km;return t.isBinary(a)||t.isBinary(r)?{lines:[Om(e,a,r)],count:1}:((e,a,r)=>{const n=t.splitLines(e),i=[];let o=-1,s="";for(const e of a){const t=$m(e),a=bm(n,t-1,o);o=t-1,void 0!==a&&(s=a.heading),i.push(""===s?"@@":`@@ ${r}: ${s}`);for(const t of e.body)for(const e of Em(t))i.push(e)}return{lines:i,count:i.length}})(a,_(a,r,3),Im(e.change))},Om=(e,t,a)=>` Binary files ${0===t.length?"/dev/null":Im(e.change)} and ${0===a.length?"/dev/null":Im(e.change)} differ`,Rm=e=>{const t=(e=>{var t;return` ## Metadata ##\nAuthor: ${e.authorName} <${e.authorEmail}>\n\n ## Commit message ##\n`+(t=e.message,""===t?[]:(t.endsWith("\n")?t.slice(0,-1):t).split("\n").map(e=>` ${e}`.replace(/[\t\n\v\f\r ]+$/u,""))).map(e=>`${e}\n`).join("")})(e);let a=t,r=0;for(const t of e.files){const e=` ## ${xm(t.change)} ##`,{lines:n,count:i}=Tm(t);a+=`\n${e}\n${n.map(e=>`${e}\n`).join("")}`,r+=1+i}return{id:e.id,subject:e.subject,patch:a,diff:a.slice(e.files.length>0?t.length+1:0),diffsize:r}},Sm=async(e,a)=>{const r=a.data.parents[0],n=void 0!==r?await(async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);return r.data.tree})(e,r):void 0,i=await t.diffTrees(e,n,a.data.tree,{recursive:!0,detectRenames:!0}),o=await t.materialisePatchFiles(e,i.changes);return{id:a.id,authorName:a.data.author.name,authorEmail:a.data.author.email,subject:c(a.data.message),message:a.data.message,files:o}},Dm=async(e,a)=>{const r=await ro(e,a.base),n=await ro(e,a.tip),i=[];for await(const a of t.walkCommitsByDate(e,{from:[n],until:[r]}))a.data.parents.length<=1&&i.push(a);return i.reverse(),(async(e,t)=>{const a=new Array(t.length);let r=0;const n=Math.min(16,t.length);return await Promise.all(Array.from({length:n},()=>(async()=>{for(;r<t.length;){const n=r++;a[n]=await Sm(e,t[n])}})())),a})(e,i)},Cm=e=>t.validateRefName(e),Mm=(e,t,a)=>{const r=e[t],n=e[t+1];return e.filter((e,a)=>a!==t).map(e=>a&&e===n?{...e,oldId:r.oldId}:e)},Am=(t,a)=>{const r=Ge(t,a);if(void 0===r)throw e.revparseUnresolved(t);return r},Nm=(e,t,a,r)=>{const n=t.has(e.newId)?a:r;return e.identity.timestamp>=n},Pm=async e=>{const a=await Lm(e),r=new Set;if(0===a.length)return r;for await(const n of t.walkCommits(e,{from:a,ignoreMissing:!0}))r.add(n.id);return r},Lm=async e=>{const a=new Set;for(const r of await t.enumerateRefs(e)){const t=await Hm(e,r);void 0!==t&&a.add(t)}return[...a]},Hm=async(a,r)=>{try{return await t.resolveRef(a,r)}catch(t){if(t instanceof e.TsgitError)return;throw t}},_m=(e,t)=>{const a=e.get(t.path);return void 0===a||a.id!==t.id||a.mode!==t.mode},jm=async e=>(await t.readHeadTree(e))?.entries??new Map,Bm=/^[ \t\n\v\f\r]+/,Um=e=>{const t=c(e).replace(Bm,"");return(t.startsWith("[PATCH")?Fm(t):t).replace(Bm,"")},Fm=e=>e.slice(e.indexOf("]")+1),Wm=new TextEncoder,qm=async(e,a,r,n=!1)=>{const i=void 0!==a?await Ma(e,a):void 0;return t.diffTrees(e,i,r,{recursive:!0,detectRenames:!0,...n?{withStat:!0}:{}})},zm=async(e,a,r)=>Gm(e,await t.readObject(e,await fa(e,a)),r);async function Gm(e,a,r){switch(a.type){case"blob":return{kind:"blob",id:a.id,content:a.content};case"tree":return function(e){const t=e.entries.map(e=>({name:e.name,mode:e.mode,id:e.id}));return{kind:"tree",id:e.id,entries:t}}(a);case"commit":return async function(e,t,a){const{parents:r,tree:n}=t.data;if(r.length>=2){const i=[];for(const t of r)i.push(await qm(e,t,n,a));return{kind:"commit",id:t.id,commit:t.data,perParent:i}}const i=await qm(e,r[0],n,a);return{kind:"commit",id:t.id,commit:t.data,patch:i}}(e,a,r);case"tag":return async function(e,a,r){const n=await Gm(e,await t.readObject(e,a.data.object),r);return{kind:"tag",id:a.id,tag:a.data,target:n}}(e,a,r)}}exports.add=async(a,r,n={})=>{await st(a),await ct(a,"add"),await lt(a,{except:["merge","cherry-pick","revert","rebase"]});const i=await t.maybeBuildAttributeProvider(a);if(!0===n.all){if(0!==r.length)throw e.invalidOption("all","pathspec must be empty when all=true");return(async(e,a,r)=>{const n=await t.buildRepoIgnorePredicate(e),i=await t.acquireIndexLock(e);try{const a=await Ht(e),o=new Map(a),s=new Set,c=[],d=[];for await(const i of t.walkWorkingTree(e,{ignore:n})){const t=await Lt(e,i,a,s,r);void 0!==t&&(o.set(t.path,t.entry),"added"===t.kind?c.push(t.path):"modified"===t.kind&&d.push(t.path))}const u=await Nt(a,s,n);for(const e of u)o.delete(e);return c.sort(),d.sort(),u.sort(),await i.commit(Array.from(o.values())),{added:c,modified:d,removed:u}}finally{await i.release()}})(a,0,i)}if(0===r.length)throw e.emptyPathspec();return(async(e,t,a)=>{const{matcher:r,literalMustMatch:n,hasGlob:i}=It(t);return!i&&await Mt(e,n)?Ct(e,n,a):At(e,r,n,a)})(a,r,i)},exports.archive=async function(e,a){await it(e);const r=await fa(e,a.treeish),n=await async function(e,a){const r=await t.readObject(e,a);if("commit"===r.type)return{tree:r.data.tree,commit:a,commitTime:r.data.committer.timestamp};if("tag"===r.type){const r=await Ft(e,a,"commit"),n=await t.readObject(e,r);if("commit"!==n.type)throw t.unexpectedObjectType("commit",n.type,r);return{tree:n.data.tree,commit:r,commitTime:n.data.committer.timestamp}}if("tree"===r.type)return{tree:a};throw t.unexpectedObjectType("tree",r.type,a)}(e,r),{tree:i}=n;if("commit"in n){const{commit:t,commitTime:a}=n;return{tree:i,commit:t,commitTime:a,entries:Ta(e,i)}}return{tree:i,entries:Ta(e,i)}},exports.bindBranchNamespace=(e,t)=>Object.freeze({list:()=>(t(),Ya(e)),create:a=>(t(),Ja(e,a)),delete:a=>(t(),Qa(e,a)),rename:a=>(t(),er(e,a))}),exports.bindBundleNamespace=(e,t)=>Object.freeze({create:a=>(t(),kr(e,a)),verify:a=>(t(),Or(e,a)),listHeads:a=>(t(),$r(e,a))}),exports.bindCherryPickNamespace=(e,t)=>Object.freeze({run:a=>(t(),_n(e,a)),continue:a=>(t(),Bn(e,a)),skip:a=>(t(),Un(e,a)),abort:()=>(t(),Fn(e))}),exports.bindConfigNamespace=(e,t)=>Object.freeze({get:a=>(t(),Ai(e,a)),getAll:a=>(t(),Ni(e,a)),getRegexp:a=>(t(),Pi(e,a)),list:a=>(t(),Li(e,a)),set:a=>(t(),Hi(e,a)),unset:a=>(t(),_i(e,a)),unsetAll:a=>(t(),ji(e,a)),renameSection:a=>(t(),Bi(e,a)),removeSection:a=>(t(),Ui(e,a))}),exports.bindMergeNamespace=(e,t)=>Object.freeze({run:a=>(t(),Tc(e,a)),continue:a=>(t(),Fi(e,a)),abort:()=>(t(),wt(e))}),exports.bindNotesNamespace=(e,t)=>Object.freeze({add:a=>(t(),nd(e,a)),read:a=>(t(),id(e,a)),list:a=>(t(),od(e,a)),remove:a=>(t(),sd(e,a))}),exports.bindRebaseNamespace=(e,t)=>Object.freeze({run:a=>(t(),Wd(e,a)),continue:()=>(t(),Gd(e)),skip:()=>(t(),Vd(e)),abort:()=>(t(),Xd(e))}),exports.bindRemoteNamespace=(e,t)=>Object.freeze({list:()=>(t(),pu(e)),add:a=>(t(),gu(e,a)),remove:a=>(t(),vu(e,a)),rename:a=>(t(),ku(e,a)),setUrl:a=>(t(),xu(e,a)),show:a=>(t(),Iu(e,a))}),exports.bindRevertNamespace=(e,t)=>Object.freeze({run:a=>(t(),Au(e,a)),continue:()=>(t(),Nu(e)),skip:()=>(t(),Pu(e)),abort:()=>(t(),Lu(e))}),exports.bindSparseCheckoutNamespace=(e,t)=>Object.freeze({list:()=>(t(),Gu(e)),set:a=>(t(),Ku(e,a)),add:a=>(t(),Yu(e,a)),reapply:a=>(t(),Zu(e,a)),disable:a=>(t(),Ju(e,a))}),exports.bindStashNamespace=(e,t)=>Object.freeze({push:a=>(t(),cl(e,a)),list:()=>(t(),ul(e)),apply:a=>(t(),ml(e,a)),pop:a=>(t(),hl(e,a)),drop:a=>(t(),ll(e,a))}),exports.bindSubmoduleNamespace=(e,t)=>Object.freeze({list:a=>(t(),Ul(e,a)),add:a=>(t(),ql(e,a)),init:a=>(t(),Nl(e,a)),update:a=>(t(),Xl(e,a)),sync:a=>(t(),Hl(e,a)),deinit:a=>(t(),Bl(e,a))}),exports.bindTagNamespace=(e,t)=>Object.freeze({list:()=>(t(),Yl(e)),create:a=>(t(),Zl(e,a)),delete:a=>(t(),Jl(e,a))}),exports.bindWorktreeNamespace=(e,t)=>Object.freeze({list:()=>(t(),mf(e)),add:a=>(t(),wf(e,a)),move:(a,r,n)=>(t(),yf(e,a,r,n)),remove:(a,r)=>(t(),vf(e,a,r))}),exports.blame=async(a,r,n={})=>{await st(a);const i=t.FilePath.from(r),o={ctx:a,queue:[],finalized:[]};if(!0===n.worktree){if(void 0!==n.rev)throw e.invalidOption("worktree","cannot combine with a revision");await(async(a,r)=>{t.validateWorkingTreePath(r);const n=await Da(a.ctx,Pa),i=await Ca(a.ctx,n),o=await La(a.ctx,r),s=t.splitLines(o).length;if(0===s)return;const c=[{finalStart:0,count:s,sourceStart:0}],d=await Ga(a.ctx,i.tree,r);if(void 0!==d){const{passed:e,kept:s}=Oa(c,t.diffLines(d,o));return za(a,n,r,i.committer.timestamp,d,e),void Ha(a,r,o,s,{commit:n,path:r})}if(!(await t.readIndex(a.ctx)).entries.some(e=>e.path===r))throw e.pathNotInTree(Pa,r);Ha(a,r,o,c,void 0)})(o,i)}else{const r=n.rev??Pa;await(async(a,r,n,i)=>{const o=await Ca(a.ctx,r),s=await Ga(a.ctx,o.tree,n);if(void 0===s)throw e.pathNotInTree(i,n);const c=t.splitLines(s).length;0!==c&&za(a,r,n,o.committer.timestamp,s,[{finalStart:0,count:c,sourceStart:0}])})(o,await Da(a,r),i,r)}await(async e=>{for(;e.queue.length>0;){const{value:t}=e.queue.shift();await ja(e,t)}})(o);const s=[...o.finalized].sort((e,t)=>e.finalLine-t.finalLine);return{path:i,lines:_a(s,n.range)}},exports.branchCreate=Ja,exports.branchDelete=Qa,exports.branchList=Ya,exports.branchRename=er,exports.bundleCreate=kr,exports.bundleListHeads=$r,exports.bundleVerify=Or,exports.catFile=async(e,a)=>{await st(e);const r=a.ids.map(Mr),n=void 0===a.maxBytes?void 0:{maxBytes:a.maxBytes},i=[];for await(const a of t.catFileBatch(e,r,n))i.push(a);return{kind:"batch",entries:i}},exports.checkout=Lr,exports.cherryPickAbort=Fn,exports.cherryPickContinue=Bn,exports.cherryPickRun=_n,exports.cherryPickSkip=Un,exports.clone=ri,exports.commit=wi,exports.configGet=Ai,exports.configGetAll=Ni,exports.configGetRegexp=Pi,exports.configList=Li,exports.configRemoveSection=Ui,exports.configRenameSection=Bi,exports.configSet=Hi,exports.configUnset=_i,exports.configUnsetAll=ji,exports.createPromisorRemote=e=>({fetch:async t=>{const a=await Xo(e,t);return"no-promisor"===a.kind?{attempted:!1,requested:t.length,fetched:0}:{attempted:!0,requested:a.requested,fetched:a.fetched}}}),exports.describe=async function(a,r,n={}){if(await st(a),!0===n.contains)return(async(t,a,r)=>{const n=!r.all,i=e=>n?e.map(e=>`${Io}${e}`):[],o=await io(t,a,{tags:n,refs:i(r.include),exclude:i(r.exclude)});if(void 0===o.ref&&!r.always)throw e.cannotDescribe(o.oid);return o})(a,r,(t=>{for(const a of Ki)if(void 0!==t[a])throw e.invalidOption(a,`option ${a} cannot be combined with contains`);return{all:!0===t.all,include:Yi(t.match),exclude:Yi(t.exclude),always:!0===t.always}})(n));const i=((t,a)=>{const r=!0===t.dirty,n=!0===t.broken;if((r||n)&&a)throw e.invalidOption("dirty","option dirty and commit-ishes cannot be used together");return{tags:!0===t.tags,all:!0===t.all,maxCandidates:Zi(t),always:!0===t.always,firstParent:!0===t.firstParent,include:Yi(t.match),exclude:Yi(t.exclude),dirty:r,broken:n}})(n,void 0!==r),o=await Da(a,r??"HEAD"),s=await(async(e,t)=>{if(!t.dirty&&!t.broken)return!1;try{const t=await fo(e);return t.changes.length>0||t.unmerged.length>0}catch(e){if(t.broken)return!0;throw e}})(a,i),c=await(async(e,a)=>{const r=[...await t.enumerateRefs(e)].filter(e=>"HEAD"!==e&&(a.all||e.startsWith(Io))).sort(),n=((e,t)=>{const a=e.map(zi),r=t.map(zi);return{matches:e=>!(0!==a.length&&!a.some(t=>t.test(e))||r.some(t=>t.test(e)))}})(a.include,a.exclude),i=t.getRefStore(e),o=new Map;for(const t of r){const r=await i.resolveDirect(t);if("direct"!==r.kind)continue;const s=await Xi(e,r.id);if(void 0===s)continue;const c=Gi(t,a.all);if(!n.matches(c))continue;const d=To(t,c,s),u=o.get(s.commit.id);(void 0===u||Vi(u,d))&&o.set(s.commit.id,d)}return o})(a,i),d=(e=>e.all?0:e.tags?1:2)(i),u=c.get(o);if(void 0!==u&&u.priority>=d)return Eo(u.name,0,o,s,i.all);if(0===i.maxCandidates){if(i.always)return $o(o,s);throw e.noExactMatch(o)}const{best:l,sawUnannotated:f}=await(async(e,a,r,n,i)=>{const o=r.size,s=new Map,c=[];let d,u=0,l=!1;for await(const f of t.commitDateWalk(e,{from:[a],firstParent:n.firstParent})){if(void 0!==d){Ro(s,f,d,n.firstParent);continue}if(c.length===n.maxCandidates||c.length===o){if(d=Oo(c),void 0===d)break;Ro(s,f,d,n.firstParent);continue}const e=f.id;u+=1;const t=r.get(e);if(void 0!==t&&t.priority>=i){const a=c.length;c.push({name:t.name,commitOid:e,depth:u-1,foundOrder:a}),Co(s,e).add(a)}else void 0!==t&&(l=!0);So(c,s.get(e)),Do(s,f,n.firstParent)}return{best:d??Oo(c),sawUnannotated:l}})(a,o,c,i,d);if(void 0!==l)return Eo(l.name,l.depth,o,s,i.all);if(i.always)return $o(o,s);if(0===c.size)throw e.noNames(o);throw f?e.noAnnotatedNames(o):e.noReachableNames(o)},exports.diff=async function(e,a={}){await st(e);const r=await no(e,a.from??"HEAD"),n=void 0!==a.to?await no(e,a.to):void 0,i=function(e,t){const a=e.detectRenames??t?.detectRenames,r=e.ignoreWhitespace??t?.ignoreWhitespace;return{...!0===a?{detectRenames:!0}:{},...void 0!==e.renameOptions?{renameOptions:e.renameOptions}:{},...!0===e.recursive?{recursive:!0}:{},...!0===e.withStat?{withStat:!0}:{},...void 0!==r?{ignoreWhitespace:r}:{},...!0===(e.ignoreCrAtEol??t?.ignoreCrAtEol)?{ignoreCrAtEol:!0}:{},...!0===(e.ignoreBlankLines??t?.ignoreBlankLines)?{ignoreBlankLines:!0}:{}}}(a,e.config);return t.diffTrees(e,r,n,i)},exports.fetch=Ao,exports.fetchMissing=async(t,a)=>{const r=await Xo(t,a.oids);if("no-promisor"===r.kind)throw e.noPromisorRemote();return{remote:r.remote,requested:r.requested,fetched:r.fetched}},exports.fsck=async function(e,a={}){await it(e);const r=await t.enumerateObjects(e,{includePacks:!1!==a.full}),n=new Set(r),i=await async function(e,a){const r=new Map;for(const n of a)try{r.set(n,await t.readObject(e,n,{verifyHash:!1}))}catch{r.set(n,null)}return r}(e,n),o=!0===a.connectivityOnly?new Map:function(e,t){const a=new Map;for(const r of e){const e=t.get(r);if(null!=e&&"tree"===e.type)for(const t of e.entries)hc.has(t.name)&&a.set(t.id,t.name)}return a}(n,i),s=!0===a.connectivityOnly?{findings:[],exitBit:0}:await async function(e,t,a,r){const n=[];let i=0;for(const o of t){const{findings:t,exitBit:s}=await wc(e,o,a,r);n.push(...t),i|=s}return{findings:n,exitBit:i}}(e,n,!0===a.strict,o),c=await async function(e,a,r){const n=[];let i=0;const o=t.getRefStore(e),s=await t.enumerateRefs(e);for(const e of s){const t=await o.readLooseRaw(e);if(void 0!==t){const{findings:o,exitBit:s}=xc(e,t,a,r);n.push(...o),i|=s;continue}const s=await o.getPackedRefs();for(const t of s.entries)if(t.name===e){a.has(t.id)||(n.push({type:"bad-ref",ref:e,msgId:"badRefOid",severity:"error",target:t.id}),i|=2);break}}return{findings:n,exitBit:i}}(e,n,!1!==a.checkReferences),d=await async function(e,a,r){const n=new Set;return await async function(e,a,r){const n=await t.enumerateRefs(e);for(const i of n)try{const n=await t.resolveRef(e,i,{peel:!1});r.has(n)&&a.add(n)}catch{}}(e,n,r),!1!==a.reflogRoots&&await async function(e,a){const r=await t.listReflogs(e);await Promise.all(r.map(async r=>{try{const n=await t.readReflog(e,r);for(const e of n)e.oldId!==t.ZERO_OID&&a.add(e.oldId),e.newId!==t.ZERO_OID&&a.add(e.newId)}catch{}}))}(e,n),!1!==a.indexRoot&&await async function(e,a){try{const r=await t.readIndex(e);for(const e of r.entries)0===e.flags.stage&&a.add(e.id)}catch{}}(e,n),n}(e,a,n),u=function(e,t){const a=new Set;for(const r of e){const e=t.get(r);null!=e&&pc(e,a)}return a}(n,i),{reached:l,missingIds:f,brokenEdges:m,rootCommits:h,tagRefs:w}=function(e,t,a){const r={universe:e,reached:new Set,missingIds:new Set,brokenEdges:[],rootCommits:[],tagRefs:[],worklist:[...t]};for(;r.worklist.length>0;){const t=r.worklist.pop();if(void 0===t||r.reached.has(t))continue;if(!e.has(t)){r.missingIds.add(t);continue}const n=a.get(t);null==n?r.reached.add(t):yc(r,t,n)}return{reached:r.reached,missingIds:r.missingIds,brokenEdges:r.brokenEdges,rootCommits:r.rootCommits,tagRefs:r.tagRefs}}(n,d,i),{unreachable:p,dangling:g}=function(e,t,a){const r=[],n=[];for(const i of e)t.has(i)||(r.push(i),a.has(i)||n.push(i));return{unreachable:r,dangling:n}}(n,l,u),y=[...s.findings,...c.findings],v=new Map;for(const e of m)v.has(e.toId)||v.set(e.toId,e.toType);for(const e of f){const t=v.get(e)??bc(e,i);y.push({type:"missing",id:e,objectType:t})}for(const e of m)y.push({type:"broken-link",...e});vc(p,"unreachable",y,i),vc(g,"dangling",y,i);for(const e of h)y.push({type:"root",id:e});for(const{tagId:e,tagName:t,targetId:a,targetType:r}of w)y.push({type:"tagged",id:a,objectType:r,tagName:t,tag:e});return{findings:y,exitCode:s.exitBit|(f.size>0||m.length>0?2:0)|c.exitBit}},exports.grep=async function(a,r){if(0===r.patterns.length)throw e.invalidOption("patterns","at least one pattern required");const n=Ec(r.patterns,{...!0===r.wholeWord?{wholeWord:!0}:{},...!0===r.invert?{invert:!0}:{}}),i=Ec(r.patterns,{...!0===r.wholeWord?{wholeWord:!0}:{}}),o=void 0!==r.paths&&r.paths.length>0?It(r.paths):void 0,s=await async function(e,a){const{target:r}=a;if(void 0===r)return(async e=>{const a=await t.readIndex(e),r=[];for(const n of a.entries){if(0!==n.flags.stage)continue;if(!$c(n.mode))continue;const a=t.joinPath(e.layout.workDir,n.path),i=await e.fs.lstat(a).catch(()=>{});void 0===i||i.isDirectory||i.isSymbolicLink||r.push({path:n.path,load:()=>e.fs.read(a)})}return r})(e);if("index"===r)return(async e=>(await t.readIndex(e)).entries.filter(e=>0===e.flags.stage&&$c(e.mode)).map(a=>({path:a.path,load:async()=>(await t.readBlob(e,a.id)).content})))(e);const n=await no(e,r.treeish),i=[];for await(const{path:a,id:r,mode:o}of t.walkTree(e,n,{recursive:!0})){if(!$c(o))continue;const n=r;i.push({path:a,load:async()=>(await t.readBlob(e,n)).content})}return i}(a,r),c=void 0!==o?s.filter(({path:e})=>G(o.matcher,e)):s;return{paths:(await t.boundedMap(c,t.MAX_CONCURRENT_BLOB_LOADS,async e=>function(e,a,r,n){if(t.isBinary(n)){if(!a.matchLine(n.subarray(0,t.MAX_LINE_BYTES)).returned)return;return{path:r,hits:[],binaryMatch:!0}}const i=t.splitLines(n),o=[];if(i.forEach((t,a)=>{const r=e.matchLine(t);r.returned&&o.push({lineNumber:a+1,line:t,spans:r.spans})}),0!==o.length)return{path:r,hits:o,binaryMatch:!1}}(n,i,e.path,await e.load()))).filter(e=>void 0!==e)}},exports.init=async(t,a={})=>{const r=a.initialBranch??"main",n=a.bare??!1;if(await t.fs.exists(`${t.layout.gitDir}/HEAD`))throw new e.TsgitError({code:"ALREADY_INITIALIZED",path:t.layout.gitDir});const i=await Wn(t,{initialBranch:r,bare:n});return{path:i.gitDir,initialBranch:i.initialBranch,bare:i.bare}},exports.log=async(e,a={})=>{await st(e);const r=await ro(e,a.rev??"HEAD"),n=await Promise.all((a.excluding??[]).map(t=>ro(e,t))),i=a.before,o="first-parent"===a.order?t.walkCommits(e,{from:[r],until:n,order:"first-parent"}):t.walkCommitsByDate(e,{from:[r],until:n}),s=[];let c=0;for await(const e of o)if(!(void 0!==i&&e.data.committer.timestamp>=i.getTime()/1e3)&&bf(e.data.parents.length,a)&&(s.push({id:e.id,tree:e.data.tree,parents:e.data.parents,author:e.data.author,committer:e.data.committer,message:e.data.message}),c+=1,void 0!==a.limit&&c>=a.limit))break;return s},exports.matchesPathspec=G,exports.mergeAbort=wt,exports.mergeContinue=Fi,exports.mergeRun=Tc,exports.mv=async(a,r,n,i={})=>{await st(a),await ct(a,"mv"),await lt(a);const o=r.map(e=>gt(e)),[s]=o;if(void 0===s)throw e.emptyPathspec();(t=>{for(const a of t)for(const r of t)if(r!==a&&r.startsWith(`${a}/`))throw e.mvOverlappingSources(r,a)})(o);const c=gt((u=n).endsWith("/")?u.slice(0,-1):u),d=await t.acquireIndexLock(a);var u;try{const r=await(async a=>{const r=await t.readIndex(a).catch(t=>{if(t instanceof e.TsgitError&&("FILE_NOT_FOUND"===(a=t.data.code)||"INVALID_INDEX_HEADER"===a||"INVALID_INDEX_ENTRY"===a))return{entries:[]};var a;throw t}),n=new Map;for(const e of r.entries)n.set(e.path,e);return n})(a),u=await(async(t,a,r,n)=>{const i=await Of(t,n);if(!0===i?.isDirectory&&!0!==i.isSymbolicLink)return{kind:"into-dir",destDir:n};if(r.endsWith("/"))throw e.mvDestinationDirectoryMissing(a,r);return{kind:"rename",target:n}})(a,s,n,c);if("rename"===u.kind&&o.length>1)throw e.mvDestinationNotDirectory(s,u.target);const{planned:l,skipped:f}=await(async(a,r,n,i,o)=>{const s=[],c=[];for(const d of n){const n="rename"===i.kind?i.target:t.joinPathSegment(i.destDir,e.basename(d)),u=await kf(a,r,d,n,o);if("skip"in u){if(!0===o.skipErrors){c.push({source:d,reason:u.skip});continue}throw Tf(u.skip,d,n)}s.push({source:d,target:n,entries:u.entries})}return{planned:s,skipped:c}})(a,r,o,u,i);(t=>{const a=new Set;for(const r of t){if(a.has(r.target))throw e.mvMultipleSourcesSameTarget(r.source,r.target);a.add(r.target)}})(l);const m=(e=>{const t=[];for(const a of e)for(const e of a.entries)t.push({from:e.path,to:$f(e,a.source,a.target)});return t.sort((e,t)=>e.from<t.from?-1:e.from>t.from?1:0)})(l);if(!0===i.dryRun)return{moved:m,skipped:f};((e,t)=>{for(const a of t)for(const t of a.entries){const r=$f(t,a.source,a.target);e.delete(t.path),e.set(r,{...t,path:r})}})(r,l);for(const e of l)await bt(a,e.source,e.target);return await d.commit(Array.from(r.values())),{moved:m,skipped:f}}finally{await d.release()}},exports.nameRev=io,exports.notesAdd=nd,exports.notesList=od,exports.notesRead=id,exports.notesRemove=sd,exports.pull=async(a,r={})=>{await st(a),await ct(a,"pull"),await lt(a);const n=await dt(a),i="symbolic"===n.kind?(o=n.target).startsWith(Sf)?o.slice(11):o:void 0;var o;const s="symbolic"===n.kind?n.target:t.RefName.from("HEAD"),{remote:c,branch:d}=await(async(a,r,n,i)=>{const o=await t.readConfig(a);void 0!==r&&await t.assertNoValuelessConfig(a,"branch",r,["remote","merge"]);const s=void 0!==r?o.branch?.get(r):void 0,c=n.remote??s?.remote??"origin",d=n.ref??(e=>{if(void 0!==e)return e.startsWith(Sf)?e.slice(11):e})(s?.merge);if(void 0===d)throw e.noUpstreamConfigured(i);return{remote:c,branch:d}})(a,i,r,s),u=await Ao(a,{remote:c,...void 0!==r.prune?{prune:r.prune}:{},...void 0!==r.depth?{depth:r.depth}:{}}),l=await t.resolveRef(a,`refs/remotes/${c}/${d}`);return{fetch:u,merge:await Tc(a,{rev:l,message:r.message??`Merge branch '${d}' of ${u.url}`,...void 0!==r.fastForward?{fastForward:r.fastForward}:{},...void 0!==r.author?{author:r.author}:{},...void 0!==r.committer?{committer:r.committer}:{}},{reflogAction:"pull"})}},exports.push=async(a,r={})=>{await st(a),a.progress.start(Df);try{const n=r.remote??"origin",i=await(async(a,r)=>{if(!Lf.test(r))throw e.invalidOption("remote",`invalid remote name: ${r}`);const n=await t.readConfig(a);await t.assertNoValuelessConfig(a,"remote",r,["pushurl","url"]);const i=n.remote?.get(r),o=i?.pushUrl??i?.url;if(void 0===o)throw e.remoteNotConfigured(r);return o})(a,n),o=await(async(t,a)=>{if(void 0!==a&&a.length>0)return a.map(cu);const r=await dt(t);if("symbolic"!==r.kind)throw e.invalidOption("refspecs","no-default-refspec (HEAD is detached)");const n=r.target;return[cu(`${n}:${n}`)]})(a,r.refspecs),s=zn(a,void 0!==a.config?.auth?{auth:a.config.auth}:{}),c=await(async(e,t,a)=>Zn(e,t,a,"git-receive-pack"))(a,s,i),d=(await(async(e,t,a,r,n)=>{const i=Hf(a.refs),o=[];for(const a of t)o.push(await _f(e,a,i,r,n));return o})(a,o,c,n,r)).filter(e=>e.localOid!==e.remoteOid);return 0===d.length?{remote:n,url:i,pushedRefs:[]}:(await(async(e,a,r,n,i)=>{if(a)return;const o=i.map(Pf).join("");await t.runHook(e,"pre-push",{args:[r,n],stdin:o})})(a,r.noVerify??!1,n,i,d),{remote:n,url:i,pushedRefs:await Wf(a,s,i,c,d,n)})}finally{a.progress.end(Df)}},exports.rangeDiff=async(t,a)=>{await st(t);const r=(t=>{if(void 0===t)return 60;if(!Number.isInteger(t)||t<0)throw e.invalidOption("creationFactor",`must be a non-negative integer; got ${t}`);return t})(a.creationFactor);return((e,t,a)=>{const r=e.map(Rm),n=t.map(Rm),{old:i,new:o}=lm(r,n,a);return((e,t)=>{const a=[],r=new Array(e.length).fill(!1);let n=0,i=0;for(;n<e.length||i<t.length;){for(;n<e.length&&r[n];)n++;if(n<e.length&&e[n].matching<0)a.push(hm(e[n],n)),n++;else{for(;i<t.length&&t[i].matching<0;)a.push(wm(t[i],i)),i++;if(i<t.length){const n=t[i].matching;a.push(pm(e[n],t[i],n,i)),r[n]=!0,i++}}}return a})(i,o)})(await Dm(t,a.old),await Dm(t,a.new),r)},exports.readFileAt=async(e,a,r,n)=>{await st(e);const i=await fa(e,a),o=await t.readTree(e,i),s=await Wt(e,o,r,a),c=await t.readBlob(e,s.id,n);return{id:s.id,mode:s.mode,content:c.content}},exports.rebaseAbort=Xd,exports.rebaseContinue=Gd,exports.rebaseRun=Wd,exports.rebaseSkip=Vd,exports.reflog=async(e,a={})=>(await st(e),"exists"===a.action?(async(e,a)=>({kind:"exists",exists:await t.reflogExists(e,Cm(a))}))(e,a.ref):"delete"===a.action?(async(e,a)=>{const r=Cm(a.ref);if(!await t.reflogExists(e,r))throw t.reflogNotFound(r);const n=await t.readReflog(e,r);if(!Number.isInteger(a.index)||a.index<0)throw t.reflogEntryOutOfRange(r,a.index,n.length);const i=n.length-1-a.index;if(i<0)throw t.reflogEntryOutOfRange(r,a.index,n.length);const o=n[i],s=Mm(n,i,!0===a.rewrite);return await t.writeReflog(e,r,s),{kind:"delete",removed:o}})(e,a):"expire"===a.action?(async(e,a)=>{const r=Math.floor(Date.now()/1e3),n=Am(a.expire??"90.days.ago",r),i=Am(a.expireUnreachable??"30.days.ago",r),o=await Pm(e),s=!0===a.all?await t.listReflogs(e):[Cm(a.ref??"HEAD")];let c=0,d=0;for(const a of s){const r=await t.readReflog(e,a),s=r.filter(e=>Nm(e,o,n,i));c+=r.length-s.length,d+=s.length,s.length!==r.length&&await t.writeReflog(e,a,s)}return{kind:"expire",removed:c,kept:d}})(e,a):(async(e,a)=>{const r=Cm(a),n=await t.readReflog(e,r),i=n.length-1,o=n.map((e,t)=>({index:t,selector:`${r}@{${t}}`,entry:n[i-t]}));return{kind:"show",ref:r,entries:o}})(e,a.ref??"HEAD")),exports.remoteAdd=gu,exports.remoteList=pu,exports.remoteRemove=vu,exports.remoteRename=ku,exports.remoteSetUrl=xu,exports.remoteShow=Iu,exports.reset=async(a,r)=>{await st(a),"hard"===r.mode&&await ct(a,"reset --hard"),await lt(a);const n=await(async(a,r)=>{if(/^[0-9a-f]{40}$/.test(r))return r;const n="HEAD"===r?["HEAD"]:[r,`refs/heads/${r}`,`refs/tags/${r}`];for(const e of n)try{return await t.resolveRef(a,e)}catch{}throw e.revparseUnresolved(r)})(a,r.rev);"mixed"===r.mode?await(async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);const n=await t.loadSparseMatcher(e),i=await t.acquireIndexLock(e);try{const a=await t.readIndex(e),o=await t.buildIndexFromTree(e,{targetTree:r.data.tree,currentIndex:a,...void 0!==n?{sparse:n}:{}});await i.commit(o)}finally{await i.release()}})(a,n):"hard"===r.mode&&await(async(e,a)=>{const r=await t.readObject(e,a);if("commit"!==r.type)throw t.unexpectedObjectType("commit",r.type,a);const n=await t.loadSparseMatcher(e),i=await t.acquireIndexLock(e);try{const a=await t.readIndex(e),o=await t.materializeTree(e,{targetTree:r.data.tree,currentIndex:a,force:!0,forceRewriteAll:!0,...void 0!==n?{sparse:n}:{}});(o.written>0||o.deleted>0||void 0!==n)&&await i.commit(o.newIndexEntries)}finally{await i.release()}})(a,n);const i=await dt(a),o="symbolic"===i.kind?i.target:void 0;return await t.updateRef(a,o??"HEAD",n,{reflogMessage:`reset: moving to ${r.rev}`}),{mode:r.mode,id:n,branch:o}},exports.revParse=fa,exports.revertAbort=Lu,exports.revertContinue=Nu,exports.revertRun=Au,exports.revertSkip=Pu,exports.rm=async(a,r,n={})=>{if(await st(a),await ct(a,"rm"),await lt(a),0===r.length)throw e.emptyPathspec();const{matcher:i,literalMustMatch:o}=It(r),s=await t.acquireIndexLock(a);try{const r=await t.readIndex(a).catch(t=>{if(t instanceof e.TsgitError&&("FILE_NOT_FOUND"===(a=t.data.code)||"INVALID_INDEX_HEADER"===a||"INVALID_INDEX_ENTRY"===a))return{entries:[]};var a;throw t}),c=new Map;for(const e of r.entries)c.set(e.path,e);const d=[],u=[];for(const[e,t]of c)G(i,e)&&(d.push(e),u.push(t));Tt(o,d),!0!==n.force&&await(async(a,r,n)=>{const i=await jm(a),{both:o,stagedOnly:s,localOnly:c}=await(async(e,a,r,n)=>{const i=await t.maybeBuildAttributeProvider(e),o=[],s=[],c=[];for(const d of a){const a=await t.compareWorkingTreeEntry(e,d,i);if("absent"===a)continue;const u=t.isWorkingTreeModified(a),l=_m(r,d);l&&u?o.push(d.path):l&&!n?s.push(d.path):u&&!n&&c.push(d.path)}return{both:o,stagedOnly:s,localOnly:c}})(a,r,i,n);if(o.length>0)throw e.rmStagedAndLocalChanges(o);if(s.length>0)throw e.rmStagedChanges(s);if(c.length>0)throw e.rmLocalModifications(c)})(a,u,!0===n.cached);for(const e of d)c.delete(e);if(!n.cached)for(const t of d)await vt(a,t).catch(t=>{if(!(t instanceof e.TsgitError&&"FILE_NOT_FOUND"===t.data.code))throw t});return await s.commit(Array.from(c.values())),{removed:d}}finally{await s.release()}},exports.shortlog=async(e,a={})=>{await st(e);const r=await ro(e,a.rev??"HEAD"),n=await Promise.all((a.excluding??[]).map(t=>ro(e,t))),i="committer"===a.by,o=[];for await(const a of t.walkCommitsByDate(e,{from:[r],until:n})){const e=i?a.data.committer:a.data.author;o.push({name:e.name,email:e.email,id:a.id,subject:Um(a.data.message)})}return(e=>{const a=new Map;for(const{name:t,email:r,id:n,subject:i}of e){const e={id:n,email:r,subject:i},o=a.get(t);void 0===o?a.set(t,[e]):o.push(e)}return[...a.entries()].map(([e,t])=>({name:e,commits:[...t].reverse()})).sort((e,a)=>t.compareBytes(Wm.encode(e.name),Wm.encode(a.name)))})(o)},exports.show=async function(e,t="HEAD",a={}){await st(e);const r=!0===a.withStat;if("string"==typeof t)return zm(e,t,r);const n=[];for(const a of t)n.push(await zm(e,a,r));return n},exports.sparseCheckoutAdd=Yu,exports.sparseCheckoutDisable=Ju,exports.sparseCheckoutList=Gu,exports.sparseCheckoutReapply=Zu,exports.sparseCheckoutSet=Ku,exports.stashApply=ml,exports.stashDrop=ll,exports.stashList=ul,exports.stashPop=hl,exports.stashPush=cl,exports.status=fo,exports.submoduleAdd=ql,exports.submoduleDeinit=Bl,exports.submoduleInit=Nl,exports.submoduleList=Ul,exports.submoduleSync=Hl,exports.submoduleUpdate=Xl,exports.tagCreate=Zl,exports.tagDelete=Jl,exports.tagList=Yl,exports.whatchanged=async(e,a={})=>{await st(e);const r=await ro(e,a.rev??"HEAD"),n=await Promise.all((a.excluding??[]).map(t=>ro(e,t))),i=a.before,o="first-parent"===a.order?t.walkCommits(e,{from:[r],until:n,order:"first-parent"}):t.walkCommitsByDate(e,{from:[r],until:n}),s=[];let c=0;for await(const t of o){if(t.data.parents.length>=2)continue;if(void 0!==i&&t.data.committer.timestamp>=i.getTime()/1e3)continue;const r=await qm(e,t.data.parents[0],t.data.tree);if(s.push({id:t.id,tree:t.data.tree,parents:t.data.parents,author:t.data.author,committer:t.data.committer,message:t.data.message,changes:r}),c+=1,void 0!==a.limit&&c>=a.limit)break}return s},exports.worktreeAdd=wf,exports.worktreeList=mf,exports.worktreeMove=yf,exports.worktreeRemove=vf;
2
- //# sourceMappingURL=index-01WCH0eg.cjs.map