trident-git 0.2.2 → 0.4.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 (230) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +11 -10
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +3 -3
  6. package/.next/required-server-files.json +3 -3
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_global-error/page.js +3 -3
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +2 -2
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/_not-found.html +1 -1
  22. package/.next/server/app/_not-found.rsc +3 -3
  23. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  24. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  26. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  28. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  29. package/.next/server/app/api/credentials/route.js +1 -1
  30. package/.next/server/app/api/credentials/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/custom-scripts/route.js +2 -2
  32. package/.next/server/app/api/custom-scripts/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/fs/route.js +1 -1
  34. package/.next/server/app/api/fs/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/git/action/route.js +1 -1
  36. package/.next/server/app/api/git/action/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/git/branches/route.js +1 -1
  38. package/.next/server/app/api/git/branches/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/git/diff/route.js +1 -1
  40. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/git/log/route.js +1 -1
  42. package/.next/server/app/api/git/log/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/git/status/route.js +1 -1
  44. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/repos/clone/route.js +1 -0
  46. package/.next/server/app/api/repos/clone/route.js.nft.json +1 -0
  47. package/.next/server/app/api/repos/clone/route_client-reference-manifest.js +1 -0
  48. package/.next/server/app/api/repos/route.js +1 -1
  49. package/.next/server/app/api/repos/route.js.nft.json +1 -1
  50. package/.next/server/app/api/repos/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/settings/route.js +1 -1
  52. package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/credentials/page.js +2 -4
  54. package/.next/server/app/credentials/page.js.nft.json +1 -1
  55. package/.next/server/app/credentials/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/credentials.html +1 -1
  57. package/.next/server/app/credentials.rsc +4 -4
  58. package/.next/server/app/credentials.segments/_full.segment.rsc +4 -4
  59. package/.next/server/app/credentials.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/credentials.segments/_index.segment.rsc +3 -3
  61. package/.next/server/app/credentials.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/credentials.segments/credentials/__PAGE__.segment.rsc +2 -2
  63. package/.next/server/app/credentials.segments/credentials.segment.rsc +1 -1
  64. package/.next/server/app/icon.png/route.js +1 -1
  65. package/.next/server/app/index.html +1 -1
  66. package/.next/server/app/index.rsc +14 -13
  67. package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -5
  68. package/.next/server/app/index.segments/_full.segment.rsc +14 -13
  69. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  70. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  71. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  72. package/.next/server/app/page.js +4 -2
  73. package/.next/server/app/page.js.nft.json +1 -1
  74. package/.next/server/app/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/workspace/changes/page.js +3 -3
  76. package/.next/server/app/workspace/changes/page.js.nft.json +1 -1
  77. package/.next/server/app/workspace/changes/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/workspace/changes.html +1 -1
  79. package/.next/server/app/workspace/changes.rsc +6 -6
  80. package/.next/server/app/workspace/changes.segments/_full.segment.rsc +6 -6
  81. package/.next/server/app/workspace/changes.segments/_head.segment.rsc +1 -1
  82. package/.next/server/app/workspace/changes.segments/_index.segment.rsc +3 -3
  83. package/.next/server/app/workspace/changes.segments/_tree.segment.rsc +2 -2
  84. package/.next/server/app/workspace/changes.segments/workspace/changes/__PAGE__.segment.rsc +2 -2
  85. package/.next/server/app/workspace/changes.segments/workspace/changes.segment.rsc +1 -1
  86. package/.next/server/app/workspace/changes.segments/workspace.segment.rsc +3 -3
  87. package/.next/server/app/workspace/custom-scripts/page.js +2 -2
  88. package/.next/server/app/workspace/custom-scripts/page.js.nft.json +1 -1
  89. package/.next/server/app/workspace/custom-scripts/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app/workspace/custom-scripts.html +1 -1
  91. package/.next/server/app/workspace/custom-scripts.rsc +6 -6
  92. package/.next/server/app/workspace/custom-scripts.segments/_full.segment.rsc +6 -6
  93. package/.next/server/app/workspace/custom-scripts.segments/_head.segment.rsc +1 -1
  94. package/.next/server/app/workspace/custom-scripts.segments/_index.segment.rsc +3 -3
  95. package/.next/server/app/workspace/custom-scripts.segments/_tree.segment.rsc +2 -2
  96. package/.next/server/app/workspace/custom-scripts.segments/workspace/custom-scripts/__PAGE__.segment.rsc +2 -2
  97. package/.next/server/app/workspace/custom-scripts.segments/workspace/custom-scripts.segment.rsc +1 -1
  98. package/.next/server/app/workspace/custom-scripts.segments/workspace.segment.rsc +3 -3
  99. package/.next/server/app/workspace/history/page.js +2 -2
  100. package/.next/server/app/workspace/history/page.js.nft.json +1 -1
  101. package/.next/server/app/workspace/history/page_client-reference-manifest.js +1 -1
  102. package/.next/server/app/workspace/history.html +1 -1
  103. package/.next/server/app/workspace/history.rsc +6 -6
  104. package/.next/server/app/workspace/history.segments/_full.segment.rsc +6 -6
  105. package/.next/server/app/workspace/history.segments/_head.segment.rsc +1 -1
  106. package/.next/server/app/workspace/history.segments/_index.segment.rsc +3 -3
  107. package/.next/server/app/workspace/history.segments/_tree.segment.rsc +2 -2
  108. package/.next/server/app/workspace/history.segments/workspace/history/__PAGE__.segment.rsc +2 -2
  109. package/.next/server/app/workspace/history.segments/workspace/history.segment.rsc +1 -1
  110. package/.next/server/app/workspace/history.segments/workspace.segment.rsc +3 -3
  111. package/.next/server/app/workspace/page.js +2 -2
  112. package/.next/server/app/workspace/page.js.nft.json +1 -1
  113. package/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  114. package/.next/server/app/workspace/settings/page.js +2 -2
  115. package/.next/server/app/workspace/settings/page.js.nft.json +1 -1
  116. package/.next/server/app/workspace/settings/page_client-reference-manifest.js +1 -1
  117. package/.next/server/app/workspace/settings.html +1 -1
  118. package/.next/server/app/workspace/settings.rsc +6 -6
  119. package/.next/server/app/workspace/settings.segments/_full.segment.rsc +6 -6
  120. package/.next/server/app/workspace/settings.segments/_head.segment.rsc +1 -1
  121. package/.next/server/app/workspace/settings.segments/_index.segment.rsc +3 -3
  122. package/.next/server/app/workspace/settings.segments/_tree.segment.rsc +2 -2
  123. package/.next/server/app/workspace/settings.segments/workspace/settings/__PAGE__.segment.rsc +2 -2
  124. package/.next/server/app/workspace/settings.segments/workspace/settings.segment.rsc +1 -1
  125. package/.next/server/app/workspace/settings.segments/workspace.segment.rsc +3 -3
  126. package/.next/server/app/workspace/stashes/page.js +2 -2
  127. package/.next/server/app/workspace/stashes/page.js.nft.json +1 -1
  128. package/.next/server/app/workspace/stashes/page_client-reference-manifest.js +1 -1
  129. package/.next/server/app/workspace/stashes.html +1 -1
  130. package/.next/server/app/workspace/stashes.rsc +6 -6
  131. package/.next/server/app/workspace/stashes.segments/_full.segment.rsc +6 -6
  132. package/.next/server/app/workspace/stashes.segments/_head.segment.rsc +1 -1
  133. package/.next/server/app/workspace/stashes.segments/_index.segment.rsc +3 -3
  134. package/.next/server/app/workspace/stashes.segments/_tree.segment.rsc +2 -2
  135. package/.next/server/app/workspace/stashes.segments/workspace/stashes/__PAGE__.segment.rsc +2 -2
  136. package/.next/server/app/workspace/stashes.segments/workspace/stashes.segment.rsc +1 -1
  137. package/.next/server/app/workspace/stashes.segments/workspace.segment.rsc +3 -3
  138. package/.next/server/app/workspace.html +1 -1
  139. package/.next/server/app/workspace.rsc +6 -6
  140. package/.next/server/app/workspace.segments/_full.segment.rsc +6 -6
  141. package/.next/server/app/workspace.segments/_head.segment.rsc +1 -1
  142. package/.next/server/app/workspace.segments/_index.segment.rsc +3 -3
  143. package/.next/server/app/workspace.segments/_tree.segment.rsc +2 -2
  144. package/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +2 -2
  145. package/.next/server/app/workspace.segments/workspace.segment.rsc +3 -3
  146. package/.next/server/app-paths-manifest.json +11 -10
  147. package/.next/server/chunks/386.js +1 -0
  148. package/.next/server/chunks/392.js +1 -1
  149. package/.next/server/chunks/455.js +3 -0
  150. package/.next/server/chunks/471.js +5 -5
  151. package/.next/server/chunks/557.js +1 -1
  152. package/.next/server/chunks/739.js +6 -4
  153. package/.next/server/chunks/781.js +1 -1
  154. package/.next/server/chunks/946.js +1 -0
  155. package/.next/server/middleware-build-manifest.js +1 -1
  156. package/.next/server/next-font-manifest.js +1 -1
  157. package/.next/server/next-font-manifest.json +1 -1
  158. package/.next/server/pages/404.html +1 -1
  159. package/.next/server/pages/500.html +2 -2
  160. package/.next/server/server-reference-manifest.json +1 -1
  161. package/.next/static/IsI_X7X1cKXUpjpCKYBiv/_buildManifest.js +1 -0
  162. package/.next/static/chunks/{131-6237c77d708182b1.js → 131-4e059eb668f6734a.js} +1 -1
  163. package/.next/static/chunks/147-64f7ae9eceb783be.js +8 -0
  164. package/.next/static/chunks/26-71a5a763fed8540a.js +1 -0
  165. package/.next/static/chunks/{772-b39107b40c31b6b6.js → 437-856aae031cb5746d.js} +3 -3
  166. package/.next/static/chunks/app/_global-error/page-10b66af9ca2c453f.js +1 -0
  167. package/.next/static/chunks/app/_not-found/{page-5bea07380837254f.js → page-57dae00b22f032ec.js} +1 -1
  168. package/.next/static/chunks/app/api/credentials/route-10b66af9ca2c453f.js +1 -0
  169. package/.next/static/chunks/app/api/custom-scripts/route-10b66af9ca2c453f.js +1 -0
  170. package/.next/static/chunks/app/api/fs/route-10b66af9ca2c453f.js +1 -0
  171. package/.next/static/chunks/app/api/git/action/route-10b66af9ca2c453f.js +1 -0
  172. package/.next/static/chunks/app/api/git/branches/route-10b66af9ca2c453f.js +1 -0
  173. package/.next/static/chunks/app/api/git/diff/route-10b66af9ca2c453f.js +1 -0
  174. package/.next/static/chunks/app/api/git/log/route-10b66af9ca2c453f.js +1 -0
  175. package/.next/static/chunks/app/api/git/status/route-10b66af9ca2c453f.js +1 -0
  176. package/.next/static/chunks/app/api/repos/clone/route-10b66af9ca2c453f.js +1 -0
  177. package/.next/static/chunks/app/api/repos/route-10b66af9ca2c453f.js +1 -0
  178. package/.next/static/chunks/app/api/settings/route-10b66af9ca2c453f.js +1 -0
  179. package/.next/static/chunks/app/credentials/page-98f6c498c4356393.js +1 -0
  180. package/.next/static/chunks/app/layout-dda593914e513c38.js +1 -0
  181. package/.next/static/chunks/app/page-b6a88311748e2958.js +1 -0
  182. package/.next/static/chunks/app/workspace/changes/page-332cb9b7837d465b.js +3 -0
  183. package/.next/static/chunks/app/workspace/custom-scripts/page-8948e627574c391b.js +1 -0
  184. package/.next/static/chunks/app/workspace/history/page-89bfc9747faed53b.js +1 -0
  185. package/.next/static/chunks/app/workspace/layout-75643230bfa68574.js +1 -0
  186. package/.next/static/chunks/app/workspace/{history/page-b7017fea285c804c.js → page-2b043ff528917d81.js} +1 -1
  187. package/.next/static/chunks/app/workspace/settings/page-b42cabafb9d3c3fe.js +1 -0
  188. package/.next/static/chunks/app/workspace/stashes/page-be8d99eec6bfb023.js +1 -0
  189. package/.next/static/chunks/{main-app-221e1b945693a142.js → main-app-9697367bdd1cd307.js} +1 -1
  190. package/.next/static/chunks/next/dist/client/components/builtin/app-error-10b66af9ca2c453f.js +1 -0
  191. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-10b66af9ca2c453f.js +1 -0
  192. package/.next/static/chunks/next/dist/client/components/builtin/global-error-24e6fb8a3a0a87ef.js +1 -0
  193. package/.next/static/chunks/next/dist/client/components/builtin/not-found-10b66af9ca2c453f.js +1 -0
  194. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-10b66af9ca2c453f.js +1 -0
  195. package/.next/static/css/c4117eb58c7d0642.css +1 -0
  196. package/README.md +1 -1
  197. package/package.json +1 -1
  198. package/public/github.png +0 -0
  199. package/.next/server/chunks/170.js +0 -1
  200. package/.next/server/chunks/356.js +0 -1
  201. package/.next/static/VTWJwhFJd5VcC6GP5bbli/_buildManifest.js +0 -1
  202. package/.next/static/chunks/147-d4cb3e03218d75df.js +0 -6
  203. package/.next/static/chunks/26-d93e82c9c09ff972.js +0 -1
  204. package/.next/static/chunks/app/_global-error/page-9eb8a19109bbd711.js +0 -1
  205. package/.next/static/chunks/app/api/credentials/route-9eb8a19109bbd711.js +0 -1
  206. package/.next/static/chunks/app/api/custom-scripts/route-9eb8a19109bbd711.js +0 -1
  207. package/.next/static/chunks/app/api/fs/route-9eb8a19109bbd711.js +0 -1
  208. package/.next/static/chunks/app/api/git/action/route-9eb8a19109bbd711.js +0 -1
  209. package/.next/static/chunks/app/api/git/branches/route-9eb8a19109bbd711.js +0 -1
  210. package/.next/static/chunks/app/api/git/diff/route-9eb8a19109bbd711.js +0 -1
  211. package/.next/static/chunks/app/api/git/log/route-9eb8a19109bbd711.js +0 -1
  212. package/.next/static/chunks/app/api/git/status/route-9eb8a19109bbd711.js +0 -1
  213. package/.next/static/chunks/app/api/repos/route-9eb8a19109bbd711.js +0 -1
  214. package/.next/static/chunks/app/api/settings/route-9eb8a19109bbd711.js +0 -1
  215. package/.next/static/chunks/app/credentials/page-23c1807ad9f68a40.js +0 -1
  216. package/.next/static/chunks/app/layout-a06241c385e50ae0.js +0 -1
  217. package/.next/static/chunks/app/page-c8404790f5191fd7.js +0 -1
  218. package/.next/static/chunks/app/workspace/changes/page-8cca17f80e66f534.js +0 -3
  219. package/.next/static/chunks/app/workspace/custom-scripts/page-ee24b9dd7779244f.js +0 -1
  220. package/.next/static/chunks/app/workspace/layout-cb86c00fdcd8db08.js +0 -1
  221. package/.next/static/chunks/app/workspace/page-21211acc90c08509.js +0 -1
  222. package/.next/static/chunks/app/workspace/settings/page-7ccb58ece31492e9.js +0 -1
  223. package/.next/static/chunks/app/workspace/stashes/page-0e1b8304c4b0f4f3.js +0 -1
  224. package/.next/static/chunks/next/dist/client/components/builtin/app-error-9eb8a19109bbd711.js +0 -1
  225. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-9eb8a19109bbd711.js +0 -1
  226. package/.next/static/chunks/next/dist/client/components/builtin/global-error-f2a2c324f3740ed8.js +0 -1
  227. package/.next/static/chunks/next/dist/client/components/builtin/not-found-9eb8a19109bbd711.js +0 -1
  228. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9eb8a19109bbd711.js +0 -1
  229. package/.next/static/css/c56c0e57397a3a60.css +0 -1
  230. /package/.next/static/{VTWJwhFJd5VcC6GP5bbli → IsI_X7X1cKXUpjpCKYBiv}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- exports.id=557,exports.ids=[557],exports.modules={6487:()=>{},8335:()=>{},9617:(a,b,c)=>{"use strict";c.d(b,{Y:()=>l});var d=c(3680),e=c(1421),f=c(7975),g=c(1455),h=c(6760),i=c(8161);let j=(0,f.promisify)(e.execFile),k={};class l{constructor(a){this.repoPath=a}get git(){var a=this.repoPath;if(!k[a]){let b=(0,d.Lp)({baseDir:a,binary:"git",maxConcurrentProcesses:6,trimmed:!1});b.env({...process.env,GIT_TERMINAL_PROMPT:"0",GIT_SSH_COMMAND:"ssh -o BatchMode=yes -o StrictHostKeyChecking=no"}),k[a]=b}return k[a]}async cleanupLockFile(){let a=(0,h.join)(this.repoPath,".git","index.lock");try{return await (0,g.unlink)(a),!0}catch(a){return!1}}async getStatus(){return await this.git.status()}async getLog(a=100){let b=await this.git.log({"--all":null,"--decorate":"short","--max-count":a,format:{hash:"%h",parents:"%p",date:"%ai",message:"%s",refs:"%d",author_name:"%an",author_email:"%ae",body:"%b"}}),c=b.all.map(a=>({...a,parents:a.parents?a.parents.split(" ").filter(Boolean):[]}));return{all:c,total:b.total,latest:c[0]||null}}async getLatestCommitMessage(a){return(await this.git.raw(["show","-s","--format=%B",a])).trimEnd()}async fetch(){await this.git.raw(["fetch","--prune"])}async fetchRemote(a){await this.git.raw(["fetch","--prune",a])}async fetchAllRemotes(){await this.git.raw(["fetch","--all","--prune"])}async addRemote(a,b){let c=a.trim(),d=b.trim();if(!c)throw Error("Remote name is required");if(!d)throw Error("Remote URL is required");await this.git.raw(["remote","add",c,d]),await this.git.raw(["fetch","--prune",c])}async renameRemote(a,b){let c=a.trim(),d=b.trim();if(!c)throw Error("Old remote name is required");if(!d)throw Error("New remote name is required");c!==d&&await this.git.raw(["remote","rename",c,d])}async deleteRemote(a){let b=a.trim();if(!b)throw Error("Remote name is required to delete remote");await this.git.raw(["remote","remove",b])}async pull(){await this.git.pull()}async push(a={}){let{credentials:b}=a;if(b){let a=(await this.git.branchLocal()).current,c=await this.getTrackingBranch(a);if(!c)throw Error(`No upstream configured for branch '${a}'. Cannot push with credentials.`);await this.pushToRemote(a,c.remote,c.branch,{credentials:b})}else await this.git.push()}async commit(a,b){b&&b.length>0&&await this.git.add(b),await this.git.commit(a)}async stage(a){await this.git.add(a)}async unstage(a){await this.git.reset(["HEAD",...a])}async discardUnstagedChanges(a={}){let{includeUntracked:b=!0}=a;await this.git.raw(["checkout","--","."]),b&&await this.git.raw(["clean","-fd"])}async getFileContent(a,b="HEAD"){try{return await this.git.show([`${b}:${a}`])}catch(a){return console.error(a),""}}async getBlobFromRef(a){try{let{stdout:b}=await j("git",["show",a],{cwd:this.repoPath,encoding:"buffer",maxBuffer:0x3200000});return Buffer.isBuffer(b)?b:Buffer.from(b)}catch{return null}}async getFileContentBuffer(a,b="HEAD"){return this.getBlobFromRef(`${b}:${a}`)}async getDiff(a){return await this.git.diff(["HEAD","--",a])}async getBranches(){let a="";try{a=(await this.git.revparse(["--abbrev-ref","HEAD"])).trim()}catch(a){console.warn("Failed to get current branch:",a)}let b="";try{b=await this.git.raw(["for-each-ref","--format=%(refname)|%(objectname:short)|%(upstream:short)|%(upstream:track)","refs/heads","refs/remotes"])}catch(a){throw console.error("Failed to get refs:",a),a}let c=[],d={},e={},f={};for(let a of b.trim().split("\n")){if(!a)continue;let[b,g,h,i]=a.split("|");if(b.startsWith("refs/heads/")){let a=b.slice(11);if(c.push(a),d[a]=g,h){let b=0,c=0;if(i){let a=i.match(/ahead (\d+)/);a&&(b=parseInt(a[1],10));let d=i.match(/behind (\d+)/);d&&(c=parseInt(d[1],10))}f[a]={upstream:h,ahead:b,behind:c}}}else if(b.startsWith("refs/remotes/")){let a=b.slice(13),c=a.indexOf("/");if(c>0){let b=a.slice(0,c),f=a.slice(c+1);if("HEAD"===f||f.startsWith("HEAD "))continue;e[b]||(e[b]=[]),e[b].push(f),d[`remotes/${a}`]=g}}}let g=await this.git.getRemotes(!0),h={};for(let a of g)h[a.name]=a.refs.fetch||a.refs.push,e[a.name]||(e[a.name]=[]);return{branches:c,current:a,branchCommits:d,remotes:e,remoteUrls:h,trackingInfo:f}}async checkout(a){await this.git.checkout(a)}async checkoutRemoteToLocal(a,b){try{await this.git.revparse(["--verify",`refs/${a}`])}catch{throw Error(`Remote branch '${a}' does not exist`)}try{throw await this.git.revparse(["--verify",`refs/heads/${b}`]),Error(`Local branch '${b}' already exists`)}catch(a){if(a.message.includes("already exists"))throw a}let c=a.replace(/^remotes\//,""),d=c.indexOf("/");if(d<=0)throw Error(`Invalid remote branch format: ${a}`);let e=c.slice(0,d),f=c.slice(d+1);await this.git.checkout(["-b",b,"--track",`${e}/${f}`])}async createBranch(a,b){if(!b)return void await this.git.checkoutLocalBranch(a);let c=b.startsWith("remotes/")?b.replace(/^remotes\//,""):b;await this.git.checkout(["-b",a,c])}async createTag(a,b,c={}){let{pushToRemote:d=!1,remote:e,credentials:f}=c,g=a.trim(),h=b.trim();if(!g)throw Error("Tag name is required");if(!h)throw Error("Commit hash is required");if(await this.git.raw(["tag",g,h]),!d)return;let i=await this.git.getRemotes();if(0===i.length)throw Error("No remotes configured for this repository");let j=e?.trim()||"";if(!j){let a=(await this.git.branchLocal()).current;if(a){let b=await this.getTrackingBranch(a);b?.remote&&(j=b.remote)}}j&&i.some(a=>a.name===j)||(j=i.some(a=>"origin"===a.name)?"origin":i[0].name);let k=j;if(f){let a=await this.getRemoteUrl(j);if(a)try{let b=new URL(a);b.username=f.username,b.password=f.token,k=b.toString()}catch(a){console.warn("[createTag] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[createTag] Could not resolve URL for remote '${j}', falling back to remote name`)}await this.git.push([k,`refs/tags/${g}`])}async deleteBranch(a){await this.git.deleteLocalBranch(a,!0)}async deleteRemoteBranch(a,b,c){let d=a;if(c){let b=await this.getRemoteUrl(a);if(b)try{let a=new URL(b);a.username=c.username,a.password=c.token,d=a.toString()}catch(a){console.warn("[deleteRemoteBranch] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[deleteRemoteBranch] Could not resolve URL for remote '${a}', falling back to remote name`)}try{await this.git.push([d,"--delete",b])}catch(c){if((c?.message||"").includes("remote ref does not exist"))console.debug(`[deleteRemoteBranch] Remote branch ${b} does not exist on remote ${a}, ignoring error.`);else throw c}try{await this.git.branch(["-r","-D",`${a}/${b}`])}catch(c){console.debug(`[deleteRemoteBranch] Could not delete local remote-tracking branch ${a}/${b}:`,c)}}async deleteTag(a){await this.git.raw(["tag","-d",a])}async deleteRemoteTag(a,b,c){let d=a;if(c){let b=await this.getRemoteUrl(a);if(b)try{let a=new URL(b);a.username=c.username,a.password=c.token,d=a.toString()}catch(a){console.warn("[deleteRemoteTag] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[deleteRemoteTag] Could not resolve URL for remote '${a}', falling back to remote name`)}await this.git.push([d,"--delete",`refs/tags/${b}`])}async renameBranch(a,b,c={}){let{renameTrackingRemote:d=!1,credentials:e}=c,f=d?await this.getTrackingBranch(a):null;if(await this.git.branch(["-m",a,b]),d&&f){await this.renameRemoteBranch(f.remote,f.branch,b,e);try{await this.git.branch(["--set-upstream-to",`${f.remote}/${b}`,b])}catch(a){console.debug(`[renameBranch] Could not set upstream for ${b} to ${f.remote}/${b}:`,a)}}}async renameRemoteBranch(a,b,c,d){if(b===c)return;let e=a;if(d){let b=await this.getRemoteUrl(a);if(b)try{let a=new URL(b);a.username=d.username,a.password=d.token,e=a.toString()}catch(a){console.warn("[renameRemoteBranch] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[renameRemoteBranch] Could not resolve URL for remote '${a}', falling back to remote name`)}let f=`refs/remotes/${a}/${b}`;await this.git.push([e,`${f}:refs/heads/${c}`]),await this.git.push([e,"--delete",b]);let g=`refs/remotes/${a}/${c}`;try{let a=(await this.git.revparse([f])).trim();await this.git.raw(["update-ref",g,a])}catch(a){console.debug(`[renameRemoteBranch] Could not update local tracking ref ${g}:`,a)}try{await this.git.branch(["-r","-D",`${a}/${b}`])}catch(c){console.debug(`[renameRemoteBranch] Could not delete old local remote-tracking branch ${a}/${b}:`,c)}}async reset(a,b="hard"){await this.git.reset([`--${b}`,a])}async revert(a){await this.git.raw(["revert","--no-edit",a])}async cherryPick(a){await this.git.raw(["cherry-pick",a])}async cherryPickMultiple(a){0!==a.length&&await this.git.raw(["cherry-pick",...a])}async abortCherryPick(){await this.git.raw(["cherry-pick","--abort"])}async rebase(a,b=!0){if(b){let b=(await this.git.status()).files.length>0;b&&await this.git.stash(["push","-m","auto-stash before rebase"]);try{await this.git.rebase([a]),b&&await this.git.stash(["pop"])}catch(a){if(b)try{await this.git.stash(["pop"])}catch{}throw a}}else await this.git.reset(["--hard","HEAD"]),await this.git.rebase([a])}async reword(a,b,c){let d=(await this.git.branchLocal()).current,e=c||d,f=e!==d,g=(await this.git.status()).files.length>0;g&&await this.git.stash(["push","-m","auto-stash before reword"]),f&&await this.git.checkout(e);try{let c=await this.git.revparse(["HEAD"]),h=await this.git.revparse([a]);if(c.trim()!==h.trim())throw Error(`Commit ${a} is not the latest commit on branch ${e}. Only the latest commit can be reworded.`);if(await this.git.raw(["commit","--amend","-m",b]),f&&await this.git.checkout(d),g)try{await this.git.stash(["pop"])}catch{console.warn("Failed to pop stash after reword")}}catch(a){if(f)try{await this.git.checkout(d)}catch{}if(g)try{await this.git.stash(["pop"])}catch{}throw a}}async getCommitDiff(a){return{files:(await this.git.raw(["diff-tree","-m","--first-parent","--no-commit-id","--name-status","-r",a])).trim().split("\n").filter(Boolean).map(a=>{let[b,...c]=a.split(" ");return{path:c.join(" "),status:b,additions:0,deletions:0}}),diff:await this.git.raw(["show","-m","--first-parent","--format=",a])}}async getCommitFileDiff(a,b){let c="",d="";try{c=await this.git.show([`${a}^:${b}`])}catch{c=""}try{d=await this.git.show([`${a}:${b}`])}catch{d=""}return{before:c,after:d,diff:await this.getCommitFilePatch(a,b)}}async getCommitFilePatch(a,b){try{return await this.git.raw(["show","--format=",a,"--",b])}catch(a){return console.warn("Failed to get commit file diff:",a),""}}async willMergeHaveConflicts(a,b){let c=await this.git.branchLocal(),d=b||c.current;if(!d)throw Error("Could not determine target branch for merge conflict check");if(a===d)return!1;await this.git.revparse(["--verify",a]),await this.git.revparse(["--verify",d]);try{return await this.git.raw(["merge-tree","--write-tree",d,a]),!1}catch(b){let a=`${b.message??""}
1
+ exports.id=557,exports.ids=[557],exports.modules={6487:()=>{},8335:()=>{},9617:(a,b,c)=>{"use strict";c.d(b,{Y:()=>m});var d=c(3680),e=c(1421),f=c(7975),g=c(1455),h=c(6760),i=c(8161);let j=(0,f.promisify)(e.execFile),k={};function l(a){if(!k[a]){let b=(0,d.Lp)({baseDir:a,binary:"git",maxConcurrentProcesses:6,trimmed:!1});b.env({...process.env,GIT_TERMINAL_PROMPT:"0",GIT_SSH_COMMAND:"ssh -o BatchMode=yes -o StrictHostKeyChecking=no"}),k[a]=b}return k[a]}class m{constructor(a){this.repoPath=a}get git(){return l(this.repoPath)}static async cloneRepository(a,b,c={}){let e=a.trim(),f=b.trim();if(!e)throw Error("Repository URL is required");if(!f)throw Error("Destination path is required");let g=(0,d.Lp)({binary:"git",maxConcurrentProcesses:2,trimmed:!1});g.env({...process.env,GIT_TERMINAL_PROMPT:"0",GIT_SSH_COMMAND:"ssh -o BatchMode=yes -o StrictHostKeyChecking=no"});let h=c.credentials?function(a,b){let c=function(a){if(a.startsWith("http://")||a.startsWith("https://"))return a;let b=a.match(/^git@([^:]+):(.+)$/);return b?`https://${b[1]}/${b[2]}`:null}(a);if(!c)return a;let d=new URL(c);return d.username=b.username,d.password=b.token,d.toString()}(e,c.credentials):e;if(await g.clone(h,f),h!==e){let a=l(f);await a.raw(["remote","set-url","origin",e])}}static async initializeRepository(a){let b=a.trim();if(!b)throw Error("Path is required");let c=(0,d.Lp)({baseDir:b,binary:"git",maxConcurrentProcesses:2,trimmed:!1});await c.init()}async cleanupLockFile(){let a=(0,h.join)(this.repoPath,".git","index.lock");try{return await (0,g.unlink)(a),!0}catch(a){return!1}}async getStatus(){return await this.git.status()}async getLog(a=100){let b=await this.git.log({"--all":null,"--decorate":"short","--max-count":a,format:{hash:"%h",parents:"%p",date:"%ai",message:"%s",refs:"%d",author_name:"%an",author_email:"%ae",body:"%b"}}),c=b.all.map(a=>({...a,parents:a.parents?a.parents.split(" ").filter(Boolean):[]}));return{all:c,total:b.total,latest:c[0]||null}}async getLatestCommitMessage(a){return(await this.git.raw(["show","-s","--format=%B",a])).trimEnd()}async fetch(){await this.git.raw(["fetch","--prune"])}async fetchRemote(a){await this.git.raw(["fetch","--prune",a])}async fetchAllRemotes(){await this.git.raw(["fetch","--all","--prune"])}async addRemote(a,b){let c=a.trim(),d=b.trim();if(!c)throw Error("Remote name is required");if(!d)throw Error("Remote URL is required");await this.git.raw(["remote","add",c,d]),await this.git.raw(["fetch","--prune",c])}async renameRemote(a,b){let c=a.trim(),d=b.trim();if(!c)throw Error("Old remote name is required");if(!d)throw Error("New remote name is required");c!==d&&await this.git.raw(["remote","rename",c,d])}async deleteRemote(a){let b=a.trim();if(!b)throw Error("Remote name is required to delete remote");await this.git.raw(["remote","remove",b])}async pull(){await this.git.pull()}async push(a={}){let{credentials:b}=a;if(b){let a=(await this.git.branchLocal()).current,c=await this.getTrackingBranch(a);if(!c)throw Error(`No upstream configured for branch '${a}'. Cannot push with credentials.`);await this.pushToRemote(a,c.remote,c.branch,{credentials:b})}else await this.git.push()}async hasHeadCommit(){try{return await this.git.revparse(["--verify","HEAD"]),!0}catch{return!1}}async validateBranchName(a){await this.git.raw(["check-ref-format","--branch",a])}async ensureInitialBranchForFirstCommit(a){if(!a||await this.hasHeadCommit())return;let b=a.trim();if(!b)throw Error("Initial branch name is required for first commit");await this.validateBranchName(b),await this.git.raw(["symbolic-ref","HEAD",`refs/heads/${b}`])}async commit(a,b,c={}){await this.ensureInitialBranchForFirstCommit(c.initialBranch),b&&b.length>0&&await this.git.add(b),await this.git.commit(a)}async stage(a){await this.git.add(a)}async unstage(a){await this.git.reset(["HEAD",...a])}async discardUnstagedChanges(a={}){let{includeUntracked:b=!0}=a;await this.git.raw(["checkout","--","."]),b&&await this.git.raw(["clean","-fd"])}async getFileContent(a,b="HEAD"){if("HEAD"===b&&!await this.hasHeadCommit())return"";try{return await this.git.show([`${b}:${a}`])}catch(a){return console.error(a),""}}async getBlobFromRef(a){try{let{stdout:b}=await j("git",["show",a],{cwd:this.repoPath,encoding:"buffer",maxBuffer:0x3200000});return Buffer.isBuffer(b)?b:Buffer.from(b)}catch{return null}}async getFileContentBuffer(a,b="HEAD"){return"HEAD"!==b||await this.hasHeadCommit()?this.getBlobFromRef(`${b}:${a}`):null}async getDiff(a){if(!await this.hasHeadCommit()){let[b,c]=await Promise.all([this.git.diff(["--cached","--",a]),this.git.diff(["--",a])]);return[b,c].filter(Boolean).join("\n")}return await this.git.diff(["HEAD","--",a])}async getBranches(){let a="";try{a=(await this.git.revparse(["--abbrev-ref","HEAD"])).trim()}catch(a){console.warn("Failed to get current branch:",a)}let b="";try{b=await this.git.raw(["for-each-ref","--format=%(refname)|%(objectname:short)|%(upstream:short)|%(upstream:track)","refs/heads","refs/remotes"])}catch(a){throw console.error("Failed to get refs:",a),a}let c=[],d={},e={},f={};for(let a of b.trim().split("\n")){if(!a)continue;let[b,g,h,i]=a.split("|");if(b.startsWith("refs/heads/")){let a=b.slice(11);if(c.push(a),d[a]=g,h){let b=0,c=0;if(i){let a=i.match(/ahead (\d+)/);a&&(b=parseInt(a[1],10));let d=i.match(/behind (\d+)/);d&&(c=parseInt(d[1],10))}f[a]={upstream:h,ahead:b,behind:c}}}else if(b.startsWith("refs/remotes/")){let a=b.slice(13),c=a.indexOf("/");if(c>0){let b=a.slice(0,c),f=a.slice(c+1);if("HEAD"===f||f.startsWith("HEAD "))continue;e[b]||(e[b]=[]),e[b].push(f),d[`remotes/${a}`]=g}}}let g=await this.git.getRemotes(!0),h={};for(let a of g)h[a.name]=a.refs.fetch||a.refs.push,e[a.name]||(e[a.name]=[]);return{branches:c,current:a,branchCommits:d,remotes:e,remoteUrls:h,trackingInfo:f}}async checkout(a){await this.git.checkout(a)}async checkoutRemoteToLocal(a,b){try{await this.git.revparse(["--verify",`refs/${a}`])}catch{throw Error(`Remote branch '${a}' does not exist`)}try{throw await this.git.revparse(["--verify",`refs/heads/${b}`]),Error(`Local branch '${b}' already exists`)}catch(a){if(a.message.includes("already exists"))throw a}let c=a.replace(/^remotes\//,""),d=c.indexOf("/");if(d<=0)throw Error(`Invalid remote branch format: ${a}`);let e=c.slice(0,d),f=c.slice(d+1);await this.git.checkout(["-b",b,"--track",`${e}/${f}`])}async createBranch(a,b){if(!b)return void await this.git.checkoutLocalBranch(a);let c=b.startsWith("remotes/")?b.replace(/^remotes\//,""):b;await this.git.checkout(["-b",a,c])}async createTag(a,b,c={}){let{pushToRemote:d=!1,remote:e,credentials:f}=c,g=a.trim(),h=b.trim();if(!g)throw Error("Tag name is required");if(!h)throw Error("Commit hash is required");if(await this.git.raw(["tag",g,h]),!d)return;let i=await this.git.getRemotes();if(0===i.length)throw Error("No remotes configured for this repository");let j=e?.trim()||"";if(!j){let a=(await this.git.branchLocal()).current;if(a){let b=await this.getTrackingBranch(a);b?.remote&&(j=b.remote)}}j&&i.some(a=>a.name===j)||(j=i.some(a=>"origin"===a.name)?"origin":i[0].name);let k=j;if(f){let a=await this.getRemoteUrl(j);if(a)try{let b=new URL(a);b.username=f.username,b.password=f.token,k=b.toString()}catch(a){console.warn("[createTag] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[createTag] Could not resolve URL for remote '${j}', falling back to remote name`)}await this.git.push([k,`refs/tags/${g}`])}async deleteBranch(a){await this.git.deleteLocalBranch(a,!0)}async deleteRemoteBranch(a,b,c){let d=a;if(c){let b=await this.getRemoteUrl(a);if(b)try{let a=new URL(b);a.username=c.username,a.password=c.token,d=a.toString()}catch(a){console.warn("[deleteRemoteBranch] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[deleteRemoteBranch] Could not resolve URL for remote '${a}', falling back to remote name`)}try{await this.git.push([d,"--delete",b])}catch(c){if((c?.message||"").includes("remote ref does not exist"))console.debug(`[deleteRemoteBranch] Remote branch ${b} does not exist on remote ${a}, ignoring error.`);else throw c}try{await this.git.branch(["-r","-D",`${a}/${b}`])}catch(c){console.debug(`[deleteRemoteBranch] Could not delete local remote-tracking branch ${a}/${b}:`,c)}}async deleteTag(a){await this.git.raw(["tag","-d",a])}async deleteRemoteTag(a,b,c){let d=a;if(c){let b=await this.getRemoteUrl(a);if(b)try{let a=new URL(b);a.username=c.username,a.password=c.token,d=a.toString()}catch(a){console.warn("[deleteRemoteTag] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[deleteRemoteTag] Could not resolve URL for remote '${a}', falling back to remote name`)}await this.git.push([d,"--delete",`refs/tags/${b}`])}async renameBranch(a,b,c={}){let{renameTrackingRemote:d=!1,credentials:e}=c,f=d?await this.getTrackingBranch(a):null;if(await this.git.branch(["-m",a,b]),d&&f){await this.renameRemoteBranch(f.remote,f.branch,b,e);try{await this.git.branch(["--set-upstream-to",`${f.remote}/${b}`,b])}catch(a){console.debug(`[renameBranch] Could not set upstream for ${b} to ${f.remote}/${b}:`,a)}}}async renameRemoteBranch(a,b,c,d){if(b===c)return;let e=a;if(d){let b=await this.getRemoteUrl(a);if(b)try{let a=new URL(b);a.username=d.username,a.password=d.token,e=a.toString()}catch(a){console.warn("[renameRemoteBranch] Failed to construct authenticated URL, falling back to remote name",a)}else console.warn(`[renameRemoteBranch] Could not resolve URL for remote '${a}', falling back to remote name`)}let f=`refs/remotes/${a}/${b}`;await this.git.push([e,`${f}:refs/heads/${c}`]),await this.git.push([e,"--delete",b]);let g=`refs/remotes/${a}/${c}`;try{let a=(await this.git.revparse([f])).trim();await this.git.raw(["update-ref",g,a])}catch(a){console.debug(`[renameRemoteBranch] Could not update local tracking ref ${g}:`,a)}try{await this.git.branch(["-r","-D",`${a}/${b}`])}catch(c){console.debug(`[renameRemoteBranch] Could not delete old local remote-tracking branch ${a}/${b}:`,c)}}async reset(a,b="hard"){await this.git.reset([`--${b}`,a])}async revert(a){await this.git.raw(["revert","--no-edit",a])}async cherryPick(a){await this.git.raw(["cherry-pick",a])}async cherryPickMultiple(a){0!==a.length&&await this.git.raw(["cherry-pick",...a])}async abortCherryPick(){await this.git.raw(["cherry-pick","--abort"])}async rebase(a,b=!0){if(b){let b=(await this.git.status()).files.length>0;b&&await this.git.stash(["push","-m","auto-stash before rebase"]);try{await this.git.rebase([a]),b&&await this.git.stash(["pop"])}catch(a){if(b)try{await this.git.stash(["pop"])}catch{}throw a}}else await this.git.reset(["--hard","HEAD"]),await this.git.rebase([a])}async reword(a,b,c){let d=(await this.git.branchLocal()).current,e=c||d,f=e!==d,g=(await this.git.status()).files.length>0;g&&await this.git.stash(["push","-m","auto-stash before reword"]),f&&await this.git.checkout(e);try{let c=await this.git.revparse(["HEAD"]),h=await this.git.revparse([a]);if(c.trim()!==h.trim())throw Error(`Commit ${a} is not the latest commit on branch ${e}. Only the latest commit can be reworded.`);if(await this.git.raw(["commit","--amend","-m",b]),f&&await this.git.checkout(d),g)try{await this.git.stash(["pop"])}catch{console.warn("Failed to pop stash after reword")}}catch(a){if(f)try{await this.git.checkout(d)}catch{}if(g)try{await this.git.stash(["pop"])}catch{}throw a}}async getCommitDiff(a){return{files:(await this.git.raw(["diff-tree","-m","--first-parent","--no-commit-id","--name-status","-r",a])).trim().split("\n").filter(Boolean).map(a=>{let[b,...c]=a.split(" ");return{path:c.join(" "),status:b,additions:0,deletions:0}}),diff:await this.git.raw(["show","-m","--first-parent","--format=",a])}}async getCommitFileDiff(a,b){let c="",d="";try{c=await this.git.show([`${a}^:${b}`])}catch{c=""}try{d=await this.git.show([`${a}:${b}`])}catch{d=""}return{before:c,after:d,diff:await this.getCommitFilePatch(a,b)}}async getCommitFilePatch(a,b){try{return await this.git.raw(["show","--format=",a,"--",b])}catch(a){return console.warn("Failed to get commit file diff:",a),""}}async willMergeHaveConflicts(a,b){let c=await this.git.branchLocal(),d=b||c.current;if(!d)throw Error("Could not determine target branch for merge conflict check");if(a===d)return!1;await this.git.revparse(["--verify",a]),await this.git.revparse(["--verify",d]);try{return await this.git.raw(["merge-tree","--write-tree",d,a]),!1}catch(b){let a=`${b.message??""}
2
2
  ${b.stdout??""}
3
3
  ${b.stderr??""}`.toLowerCase();if(a.includes("conflict"))return!0;if(!(a.includes("unknown option")||a.includes("usage: git merge-tree")))throw b}let e=(await this.git.raw(["merge-base",d,a])).trim(),f=await this.git.raw(["merge-tree",e,d,a]),g=f.toLowerCase();return f.includes("<<<<<<<")||g.includes("changed in both")||g.includes("added in both")||g.includes("removed in both")||g.includes("conflict")}async willRebaseHaveConflicts(a,b){let c=await this.git.branchLocal(),e=b||c.current;if(!e)throw Error("Could not determine source branch for rebase conflict check");if(e===a)return!1;await this.git.revparse(["--verify",e]),await this.git.revparse(["--verify",a]);let f=await (0,g.mkdtemp)((0,h.join)((0,i.tmpdir)(),"git-web-rebase-check-")),j=!1;try{await this.git.raw(["worktree","add","--detach",f,e]),j=!0;let b=(0,d.Lp)({baseDir:f,binary:"git",maxConcurrentProcesses:2,trimmed:!1});return b.env({...process.env,GIT_TERMINAL_PROMPT:"0",GIT_SSH_COMMAND:"ssh -o BatchMode=yes -o StrictHostKeyChecking=no"}),await b.rebase([a]),!1}catch(b){let a=`${b.message??""}
4
4
  ${b.stdout??""}