git-chopstick-core 0.1.1 → 0.1.3

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 (461) hide show
  1. package/README.md +324 -32
  2. package/dist/git/add.d.ts +9 -0
  3. package/dist/git/add.js +11 -0
  4. package/dist/git/add.js.map +1 -0
  5. package/dist/git/apply.d.ts +33 -0
  6. package/dist/git/apply.js +103 -0
  7. package/dist/git/apply.js.map +1 -0
  8. package/dist/git/authentication.d.ts +5 -0
  9. package/dist/git/authentication.js +19 -0
  10. package/dist/git/authentication.js.map +1 -0
  11. package/dist/git/branch.d.ts +43 -0
  12. package/dist/git/branch.js +150 -0
  13. package/dist/git/branch.js.map +1 -0
  14. package/dist/git/checkout-index.d.ts +19 -0
  15. package/{src/git/checkout-index.ts → dist/git/checkout-index.js} +11 -22
  16. package/dist/git/checkout-index.js.map +1 -0
  17. package/dist/git/checkout.d.ts +46 -0
  18. package/dist/git/checkout.js +126 -0
  19. package/dist/git/checkout.js.map +1 -0
  20. package/dist/git/cherry-pick.d.ts +82 -0
  21. package/dist/git/cherry-pick.js +371 -0
  22. package/dist/git/cherry-pick.js.map +1 -0
  23. package/dist/git/clean.d.ts +5 -0
  24. package/dist/git/clean.js +8 -0
  25. package/dist/git/clean.js.map +1 -0
  26. package/dist/git/clone.d.ts +22 -0
  27. package/dist/git/clone.js +58 -0
  28. package/dist/git/clone.js.map +1 -0
  29. package/dist/git/coerce-to-buffer.d.ts +1 -0
  30. package/dist/git/coerce-to-buffer.js +2 -0
  31. package/dist/git/coerce-to-buffer.js.map +1 -0
  32. package/dist/git/coerce-to-string.d.ts +1 -0
  33. package/dist/git/coerce-to-string.js +2 -0
  34. package/dist/git/coerce-to-string.js.map +1 -0
  35. package/dist/git/commit.d.ts +25 -0
  36. package/dist/git/commit.js +99 -0
  37. package/dist/git/commit.js.map +1 -0
  38. package/dist/git/config.d.ts +98 -0
  39. package/dist/git/config.js +249 -0
  40. package/dist/git/config.js.map +1 -0
  41. package/dist/git/core.d.ts +167 -0
  42. package/dist/git/core.js +368 -0
  43. package/dist/git/core.js.map +1 -0
  44. package/dist/git/create-tail-stream.d.ts +4 -0
  45. package/dist/git/create-tail-stream.js +30 -0
  46. package/dist/git/create-tail-stream.js.map +1 -0
  47. package/dist/git/credential.d.ts +5 -0
  48. package/dist/git/credential.js +64 -0
  49. package/dist/git/credential.js.map +1 -0
  50. package/dist/git/description.d.ts +5 -0
  51. package/dist/git/description.js +24 -0
  52. package/dist/git/description.js.map +1 -0
  53. package/dist/git/diff-check.d.ts +7 -0
  54. package/dist/git/diff-check.js +17 -0
  55. package/dist/git/diff-check.js.map +1 -0
  56. package/dist/git/diff-index.d.ts +31 -0
  57. package/dist/git/diff-index.js +76 -0
  58. package/dist/git/diff-index.js.map +1 -0
  59. package/dist/git/diff.d.ts +81 -0
  60. package/dist/git/diff.js +611 -0
  61. package/dist/git/diff.js.map +1 -0
  62. package/dist/git/environment.d.ts +51 -0
  63. package/dist/git/environment.js +97 -0
  64. package/dist/git/environment.js.map +1 -0
  65. package/dist/git/exec.d.ts +109 -0
  66. package/dist/git/exec.js +224 -0
  67. package/dist/git/exec.js.map +1 -0
  68. package/dist/git/fetch.d.ts +25 -0
  69. package/dist/git/fetch.js +100 -0
  70. package/dist/git/fetch.js.map +1 -0
  71. package/dist/git/for-each-ref.d.ts +13 -0
  72. package/dist/git/for-each-ref.js +114 -0
  73. package/dist/git/for-each-ref.js.map +1 -0
  74. package/dist/git/format-patch.d.ts +10 -0
  75. package/dist/git/format-patch.js +16 -0
  76. package/dist/git/format-patch.js.map +1 -0
  77. package/dist/git/git-delimiter-parser.d.ts +38 -0
  78. package/dist/git/git-delimiter-parser.js +79 -0
  79. package/dist/git/git-delimiter-parser.js.map +1 -0
  80. package/dist/git/gitignore.d.ts +26 -0
  81. package/dist/git/gitignore.js +124 -0
  82. package/dist/git/gitignore.js.map +1 -0
  83. package/dist/git/index.d.ts +46 -0
  84. package/dist/git/index.js +47 -0
  85. package/dist/git/index.js.map +1 -0
  86. package/dist/git/init.d.ts +2 -0
  87. package/dist/git/init.js +7 -0
  88. package/dist/git/init.js.map +1 -0
  89. package/{src/git/interpret-trailers.ts → dist/git/interpret-trailers.d.ts} +9 -97
  90. package/dist/git/interpret-trailers.js +130 -0
  91. package/dist/git/interpret-trailers.js.map +1 -0
  92. package/dist/git/lfs.d.ts +25 -0
  93. package/dist/git/lfs.js +73 -0
  94. package/dist/git/lfs.js.map +1 -0
  95. package/dist/git/log.d.ts +56 -0
  96. package/dist/git/log.js +258 -0
  97. package/dist/git/log.js.map +1 -0
  98. package/dist/git/merge-tree.d.ts +13 -0
  99. package/dist/git/merge-tree.js +24 -0
  100. package/dist/git/merge-tree.js.map +1 -0
  101. package/dist/git/merge.d.ts +50 -0
  102. package/dist/git/merge.js +111 -0
  103. package/dist/git/merge.js.map +1 -0
  104. package/dist/git/multi-operation-terminal-output.d.ts +20 -0
  105. package/dist/git/multi-operation-terminal-output.js +56 -0
  106. package/dist/git/multi-operation-terminal-output.js.map +1 -0
  107. package/dist/git/pull.d.ts +24 -0
  108. package/dist/git/pull.js +91 -0
  109. package/dist/git/pull.js.map +1 -0
  110. package/{src/git/push-terminal-chunk.ts → dist/git/push-terminal-chunk.d.ts} +1 -23
  111. package/dist/git/push-terminal-chunk.js +36 -0
  112. package/dist/git/push-terminal-chunk.js.map +1 -0
  113. package/dist/git/push.d.ts +42 -0
  114. package/dist/git/push.js +80 -0
  115. package/dist/git/push.js.map +1 -0
  116. package/dist/git/rebase.d.ts +119 -0
  117. package/dist/git/rebase.js +415 -0
  118. package/dist/git/rebase.js.map +1 -0
  119. package/dist/git/reflog.d.ts +14 -0
  120. package/dist/git/reflog.js +88 -0
  121. package/dist/git/reflog.js.map +1 -0
  122. package/dist/git/refs.d.ts +26 -0
  123. package/dist/git/refs.js +53 -0
  124. package/dist/git/refs.js.map +1 -0
  125. package/dist/git/remote.d.ts +31 -0
  126. package/dist/git/remote.js +81 -0
  127. package/dist/git/remote.js.map +1 -0
  128. package/dist/git/reorder.d.ts +23 -0
  129. package/dist/git/reorder.js +111 -0
  130. package/dist/git/reorder.js.map +1 -0
  131. package/dist/git/reset.d.ts +41 -0
  132. package/dist/git/reset.js +86 -0
  133. package/dist/git/reset.js.map +1 -0
  134. package/dist/git/rev-list.d.ts +67 -0
  135. package/dist/git/rev-list.js +157 -0
  136. package/dist/git/rev-list.js.map +1 -0
  137. package/dist/git/rev-parse.d.ts +24 -0
  138. package/dist/git/rev-parse.js +65 -0
  139. package/dist/git/rev-parse.js.map +1 -0
  140. package/dist/git/revert.d.ts +12 -0
  141. package/dist/git/revert.js +30 -0
  142. package/dist/git/revert.js.map +1 -0
  143. package/dist/git/rm.d.ts +12 -0
  144. package/dist/git/rm.js +22 -0
  145. package/dist/git/rm.js.map +1 -0
  146. package/dist/git/show.d.ts +42 -0
  147. package/{src/git/show.ts → dist/git/show.js} +17 -46
  148. package/dist/git/show.js.map +1 -0
  149. package/dist/git/spawn.d.ts +18 -0
  150. package/dist/git/spawn.js +16 -0
  151. package/dist/git/spawn.js.map +1 -0
  152. package/dist/git/squash.d.ts +28 -0
  153. package/dist/git/squash.js +127 -0
  154. package/dist/git/squash.js.map +1 -0
  155. package/dist/git/stage.d.ts +21 -0
  156. package/dist/git/stage.js +72 -0
  157. package/dist/git/stage.js.map +1 -0
  158. package/dist/git/stash.d.ts +53 -0
  159. package/dist/git/stash.js +204 -0
  160. package/dist/git/stash.js.map +1 -0
  161. package/dist/git/status.d.ts +39 -0
  162. package/dist/git/status.js +293 -0
  163. package/dist/git/status.js.map +1 -0
  164. package/dist/git/submodule.d.ts +20 -0
  165. package/dist/git/submodule.js +153 -0
  166. package/dist/git/submodule.js.map +1 -0
  167. package/dist/git/tag.d.ts +32 -0
  168. package/dist/git/tag.js +101 -0
  169. package/dist/git/tag.js.map +1 -0
  170. package/dist/git/update-index.d.ts +11 -0
  171. package/dist/git/update-index.js +99 -0
  172. package/dist/git/update-index.js.map +1 -0
  173. package/dist/git/update-ref.d.ts +23 -0
  174. package/{src/git/update-ref.ts → dist/git/update-ref.js} +10 -28
  175. package/dist/git/update-ref.js.map +1 -0
  176. package/dist/git/var.d.ts +18 -0
  177. package/{src/git/var.ts → dist/git/var.js} +16 -25
  178. package/dist/git/var.js.map +1 -0
  179. package/dist/git/worktree-include.d.ts +42 -0
  180. package/dist/git/worktree-include.js +109 -0
  181. package/dist/git/worktree-include.js.map +1 -0
  182. package/dist/git/worktree.d.ts +25 -0
  183. package/dist/git/worktree.js +139 -0
  184. package/dist/git/worktree.js.map +1 -0
  185. package/dist/index.d.ts +4 -0
  186. package/dist/index.js +7 -0
  187. package/dist/index.js.map +1 -0
  188. package/dist/lib/api.d.ts +2 -0
  189. package/dist/lib/api.js +7 -0
  190. package/dist/lib/api.js.map +1 -0
  191. package/dist/lib/diff-parser.d.ts +20 -0
  192. package/dist/lib/diff-parser.js +184 -0
  193. package/dist/lib/diff-parser.js.map +1 -0
  194. package/dist/lib/directory-exists.d.ts +1 -0
  195. package/dist/lib/directory-exists.js +11 -0
  196. package/dist/lib/directory-exists.js.map +1 -0
  197. package/dist/lib/errno-exception.d.ts +6 -0
  198. package/dist/lib/errno-exception.js +6 -0
  199. package/dist/lib/errno-exception.js.map +1 -0
  200. package/dist/lib/fatal-error.d.ts +4 -0
  201. package/dist/lib/fatal-error.js +18 -0
  202. package/dist/lib/fatal-error.js.map +1 -0
  203. package/dist/lib/feature-flag.d.ts +14 -0
  204. package/dist/lib/feature-flag.js +25 -0
  205. package/dist/lib/feature-flag.js.map +1 -0
  206. package/dist/lib/file-system.d.ts +1 -0
  207. package/dist/lib/file-system.js +7 -0
  208. package/dist/lib/file-system.js.map +1 -0
  209. package/dist/lib/get-old-path.d.ts +2 -0
  210. package/dist/lib/get-old-path.js +9 -0
  211. package/dist/lib/get-old-path.js.map +1 -0
  212. package/dist/lib/git/environment.d.ts +3 -0
  213. package/dist/lib/git/environment.js +7 -0
  214. package/dist/lib/git/environment.js.map +1 -0
  215. package/dist/lib/git-perf.d.ts +1 -0
  216. package/dist/lib/git-perf.js +4 -0
  217. package/dist/lib/git-perf.js.map +1 -0
  218. package/dist/lib/helpers/default-branch.d.ts +1 -0
  219. package/dist/lib/helpers/default-branch.js +4 -0
  220. package/dist/lib/helpers/default-branch.js.map +1 -0
  221. package/dist/lib/helpers/path.d.ts +1 -0
  222. package/dist/lib/helpers/path.js +5 -0
  223. package/dist/lib/helpers/path.js.map +1 -0
  224. package/dist/lib/hooks/with-hooks-env.d.ts +3 -0
  225. package/dist/lib/hooks/with-hooks-env.js +4 -0
  226. package/dist/lib/hooks/with-hooks-env.js.map +1 -0
  227. package/dist/lib/merge.d.ts +1 -0
  228. package/dist/lib/merge.js +4 -0
  229. package/dist/lib/merge.js.map +1 -0
  230. package/dist/lib/noop.d.ts +1 -0
  231. package/dist/lib/noop.js +2 -0
  232. package/dist/lib/noop.js.map +1 -0
  233. package/dist/lib/patch-formatter.d.ts +5 -0
  234. package/dist/lib/patch-formatter.js +7 -0
  235. package/dist/lib/patch-formatter.js.map +1 -0
  236. package/dist/lib/path-exists.d.ts +1 -0
  237. package/dist/lib/path-exists.js +3 -0
  238. package/dist/lib/path-exists.js.map +1 -0
  239. package/dist/lib/progress/from-process.d.ts +2 -0
  240. package/dist/lib/progress/from-process.js +4 -0
  241. package/dist/lib/progress/from-process.js.map +1 -0
  242. package/dist/lib/progress/index.d.ts +49 -0
  243. package/dist/lib/progress/index.js +32 -0
  244. package/dist/lib/progress/index.js.map +1 -0
  245. package/dist/lib/progress/revert.d.ts +8 -0
  246. package/dist/lib/progress/revert.js +15 -0
  247. package/dist/lib/progress/revert.js.map +1 -0
  248. package/dist/lib/rebase.d.ts +1 -0
  249. package/dist/lib/rebase.js +4 -0
  250. package/dist/lib/rebase.js.map +1 -0
  251. package/dist/lib/remove-remote-prefix.d.ts +1 -0
  252. package/dist/lib/remove-remote-prefix.js +5 -0
  253. package/dist/lib/remove-remote-prefix.js.map +1 -0
  254. package/dist/lib/resolve-git-proxy.d.ts +1 -0
  255. package/dist/lib/resolve-git-proxy.js +4 -0
  256. package/dist/lib/resolve-git-proxy.js.map +1 -0
  257. package/dist/lib/round.d.ts +1 -0
  258. package/dist/lib/round.js +5 -0
  259. package/dist/lib/round.js.map +1 -0
  260. package/dist/lib/split-buffer.d.ts +1 -0
  261. package/dist/lib/split-buffer.js +15 -0
  262. package/dist/lib/split-buffer.js.map +1 -0
  263. package/dist/lib/status-parser.d.ts +19 -0
  264. package/dist/lib/status-parser.js +125 -0
  265. package/dist/lib/status-parser.js.map +1 -0
  266. package/dist/lib/stores/helpers/find-default-remote.d.ts +1 -0
  267. package/dist/lib/stores/helpers/find-default-remote.js +4 -0
  268. package/dist/lib/stores/helpers/find-default-remote.js.map +1 -0
  269. package/dist/lib/trampoline/trampoline-environment.d.ts +1 -0
  270. package/dist/lib/trampoline/trampoline-environment.js +4 -0
  271. package/dist/lib/trampoline/trampoline-environment.js.map +1 -0
  272. package/dist/models/branch.d.ts +44 -0
  273. package/dist/models/branch.js +59 -0
  274. package/dist/models/branch.js.map +1 -0
  275. package/dist/models/cherry-pick.d.ts +11 -0
  276. package/dist/models/cherry-pick.js +2 -0
  277. package/dist/models/cherry-pick.js.map +1 -0
  278. package/dist/models/clone-options.d.ts +6 -0
  279. package/dist/models/clone-options.js +2 -0
  280. package/dist/models/clone-options.js.map +1 -0
  281. package/dist/models/commit-identity.d.ts +9 -0
  282. package/dist/models/commit-identity.js +34 -0
  283. package/dist/models/commit-identity.js.map +1 -0
  284. package/dist/models/commit.d.ts +30 -0
  285. package/dist/models/commit.js +32 -0
  286. package/dist/models/commit.js.map +1 -0
  287. package/dist/models/computed-action.d.ts +6 -0
  288. package/dist/models/computed-action.js +8 -0
  289. package/dist/models/computed-action.js.map +1 -0
  290. package/dist/models/diff/diff-data.d.ts +53 -0
  291. package/dist/models/diff/diff-data.js +19 -0
  292. package/dist/models/diff/diff-data.js.map +1 -0
  293. package/dist/models/diff/diff-line.d.ts +18 -0
  294. package/dist/models/diff/diff-line.js +33 -0
  295. package/dist/models/diff/diff-line.js.map +1 -0
  296. package/dist/models/diff/diff-selection.d.ts +22 -0
  297. package/dist/models/diff/diff-selection.js +127 -0
  298. package/dist/models/diff/diff-selection.js.map +1 -0
  299. package/dist/models/diff/image-diff.d.ts +6 -0
  300. package/dist/models/diff/image-diff.js +8 -0
  301. package/dist/models/diff/image-diff.js.map +1 -0
  302. package/dist/models/diff/image.d.ts +7 -0
  303. package/dist/models/diff/image.js +13 -0
  304. package/dist/models/diff/image.js.map +1 -0
  305. package/dist/models/diff/index.d.ts +6 -0
  306. package/dist/models/diff/index.js +7 -0
  307. package/dist/models/diff/index.js.map +1 -0
  308. package/dist/models/diff/raw-diff.d.ts +32 -0
  309. package/dist/models/diff/raw-diff.js +38 -0
  310. package/dist/models/diff/raw-diff.js.map +1 -0
  311. package/dist/models/git-author.d.ts +7 -0
  312. package/dist/models/git-author.js +18 -0
  313. package/dist/models/git-author.js.map +1 -0
  314. package/dist/models/index.d.ts +21 -0
  315. package/dist/models/index.js +20 -0
  316. package/dist/models/index.js.map +1 -0
  317. package/dist/models/manual-conflict-resolution.d.ts +4 -0
  318. package/dist/models/manual-conflict-resolution.js +6 -0
  319. package/dist/models/manual-conflict-resolution.js.map +1 -0
  320. package/dist/models/merge.d.ts +6 -0
  321. package/dist/models/merge.js +2 -0
  322. package/dist/models/merge.js.map +1 -0
  323. package/dist/models/multi-commit-operation.d.ts +6 -0
  324. package/dist/models/multi-commit-operation.js +8 -0
  325. package/dist/models/multi-commit-operation.js.map +1 -0
  326. package/dist/models/progress.d.ts +41 -0
  327. package/dist/models/progress.js +7 -0
  328. package/dist/models/progress.js.map +1 -0
  329. package/dist/models/rebase.d.ts +17 -0
  330. package/dist/models/rebase.js +8 -0
  331. package/dist/models/rebase.js.map +1 -0
  332. package/dist/models/remote.d.ts +5 -0
  333. package/dist/models/remote.js +8 -0
  334. package/dist/models/remote.js.map +1 -0
  335. package/dist/models/repository.d.ts +7 -0
  336. package/dist/models/repository.js +15 -0
  337. package/dist/models/repository.js.map +1 -0
  338. package/dist/models/stash-entry.d.ts +20 -0
  339. package/dist/models/stash-entry.js +7 -0
  340. package/dist/models/stash-entry.js.map +1 -0
  341. package/dist/models/status.d.ts +166 -0
  342. package/dist/models/status.js +135 -0
  343. package/dist/models/status.js.map +1 -0
  344. package/dist/models/submodule.d.ts +12 -0
  345. package/dist/models/submodule.js +2 -0
  346. package/dist/models/submodule.js.map +1 -0
  347. package/dist/models/worktree.d.ts +10 -0
  348. package/dist/models/worktree.js +2 -0
  349. package/dist/models/worktree.js.map +1 -0
  350. package/package.json +44 -5
  351. package/examples/get-status.ts +0 -84
  352. package/src/git/add.ts +0 -16
  353. package/src/git/apply.ts +0 -154
  354. package/src/git/authentication.ts +0 -19
  355. package/src/git/branch.ts +0 -206
  356. package/src/git/checkout.ts +0 -235
  357. package/src/git/cherry-pick.ts +0 -504
  358. package/src/git/clean.ts +0 -9
  359. package/src/git/clone.ts +0 -86
  360. package/src/git/coerce-to-buffer.ts +0 -4
  361. package/src/git/coerce-to-string.ts +0 -4
  362. package/src/git/commit.ts +0 -136
  363. package/src/git/config.ts +0 -392
  364. package/src/git/core.ts +0 -625
  365. package/src/git/create-tail-stream.ts +0 -36
  366. package/src/git/credential.ts +0 -83
  367. package/src/git/description.ts +0 -33
  368. package/src/git/diff-check.ts +0 -27
  369. package/src/git/diff-index.ts +0 -116
  370. package/src/git/diff.ts +0 -880
  371. package/src/git/environment.ts +0 -116
  372. package/src/git/exec.ts +0 -285
  373. package/src/git/fetch.ts +0 -141
  374. package/src/git/for-each-ref.ts +0 -160
  375. package/src/git/format-patch.ts +0 -17
  376. package/src/git/git-delimiter-parser.ts +0 -95
  377. package/src/git/gitignore.ts +0 -157
  378. package/src/git/index.ts +0 -36
  379. package/src/git/init.ts +0 -11
  380. package/src/git/lfs.ts +0 -100
  381. package/src/git/log.ts +0 -376
  382. package/src/git/merge-tree.ts +0 -42
  383. package/src/git/merge.ts +0 -154
  384. package/src/git/multi-operation-terminal-output.ts +0 -68
  385. package/src/git/pull.ts +0 -130
  386. package/src/git/push.ts +0 -119
  387. package/src/git/rebase.ts +0 -627
  388. package/src/git/reflog.ts +0 -127
  389. package/src/git/refs.ts +0 -63
  390. package/src/git/remote.ts +0 -143
  391. package/src/git/reorder.ts +0 -153
  392. package/src/git/reset.ts +0 -101
  393. package/src/git/rev-list.ts +0 -201
  394. package/src/git/rev-parse.ts +0 -92
  395. package/src/git/revert.ts +0 -55
  396. package/src/git/rm.ts +0 -31
  397. package/src/git/spawn.ts +0 -38
  398. package/src/git/squash.ts +0 -173
  399. package/src/git/stage.ts +0 -97
  400. package/src/git/stash.ts +0 -302
  401. package/src/git/status.ts +0 -502
  402. package/src/git/submodule.ts +0 -212
  403. package/src/git/tag.ts +0 -134
  404. package/src/git/update-index.ts +0 -169
  405. package/src/git/worktree-include.ts +0 -146
  406. package/src/git/worktree.ts +0 -219
  407. package/src/index.ts +0 -23
  408. package/src/lib/api.ts +0 -7
  409. package/src/lib/diff-parser.ts +0 -249
  410. package/src/lib/directory-exists.ts +0 -10
  411. package/src/lib/errno-exception.ts +0 -12
  412. package/src/lib/fatal-error.ts +0 -23
  413. package/src/lib/feature-flag.ts +0 -29
  414. package/src/lib/file-system.ts +0 -7
  415. package/src/lib/get-old-path.ts +0 -11
  416. package/src/lib/git/environment.ts +0 -14
  417. package/src/lib/git-perf.ts +0 -3
  418. package/src/lib/helpers/default-branch.ts +0 -3
  419. package/src/lib/helpers/path.ts +0 -5
  420. package/src/lib/hooks/with-hooks-env.ts +0 -7
  421. package/src/lib/merge.ts +0 -3
  422. package/src/lib/noop.ts +0 -1
  423. package/src/lib/patch-formatter.ts +0 -18
  424. package/src/lib/path-exists.ts +0 -7
  425. package/src/lib/progress/from-process.ts +0 -10
  426. package/src/lib/progress/index.ts +0 -43
  427. package/src/lib/progress/revert.ts +0 -17
  428. package/src/lib/rebase.ts +0 -3
  429. package/src/lib/remove-remote-prefix.ts +0 -4
  430. package/src/lib/resolve-git-proxy.ts +0 -3
  431. package/src/lib/round.ts +0 -4
  432. package/src/lib/split-buffer.ts +0 -14
  433. package/src/lib/status-parser.ts +0 -188
  434. package/src/lib/stores/helpers/find-default-remote.ts +0 -3
  435. package/src/lib/trampoline/trampoline-environment.ts +0 -8
  436. package/src/models/branch.ts +0 -78
  437. package/src/models/cherry-pick.ts +0 -12
  438. package/src/models/clone-options.ts +0 -6
  439. package/src/models/commit-identity.ts +0 -35
  440. package/src/models/commit.ts +0 -44
  441. package/src/models/computed-action.ts +0 -6
  442. package/src/models/diff/diff-data.ts +0 -78
  443. package/src/models/diff/diff-line.ts +0 -36
  444. package/src/models/diff/diff-selection.ts +0 -165
  445. package/src/models/diff/image-diff.ts +0 -6
  446. package/src/models/diff/image.ts +0 -8
  447. package/src/models/diff/index.ts +0 -6
  448. package/src/models/diff/raw-diff.ts +0 -41
  449. package/src/models/git-author.ts +0 -16
  450. package/src/models/manual-conflict-resolution.ts +0 -4
  451. package/src/models/merge.ts +0 -6
  452. package/src/models/multi-commit-operation.ts +0 -6
  453. package/src/models/progress.ts +0 -67
  454. package/src/models/rebase.ts +0 -20
  455. package/src/models/remote.ts +0 -10
  456. package/src/models/repository.ts +0 -16
  457. package/src/models/stash-entry.ts +0 -25
  458. package/src/models/status.ts +0 -275
  459. package/src/models/submodule.ts +0 -13
  460. package/src/models/worktree.ts +0 -11
  461. package/tsconfig.json +0 -17
@@ -0,0 +1,135 @@
1
+ import { DiffSelectionType } from './diff/index.js';
2
+ export var GitStatusEntry;
3
+ (function (GitStatusEntry) {
4
+ GitStatusEntry["Modified"] = "M";
5
+ GitStatusEntry["Added"] = "A";
6
+ GitStatusEntry["Deleted"] = "D";
7
+ GitStatusEntry["Renamed"] = "R";
8
+ GitStatusEntry["Copied"] = "C";
9
+ GitStatusEntry["Unchanged"] = ".";
10
+ GitStatusEntry["Untracked"] = "?";
11
+ GitStatusEntry["Ignored"] = "!";
12
+ GitStatusEntry["UpdatedButUnmerged"] = "U";
13
+ })(GitStatusEntry || (GitStatusEntry = {}));
14
+ export var AppFileStatusKind;
15
+ (function (AppFileStatusKind) {
16
+ AppFileStatusKind["New"] = "New";
17
+ AppFileStatusKind["Modified"] = "Modified";
18
+ AppFileStatusKind["Deleted"] = "Deleted";
19
+ AppFileStatusKind["Copied"] = "Copied";
20
+ AppFileStatusKind["Renamed"] = "Renamed";
21
+ AppFileStatusKind["Conflicted"] = "Conflicted";
22
+ AppFileStatusKind["Untracked"] = "Untracked";
23
+ })(AppFileStatusKind || (AppFileStatusKind = {}));
24
+ export function isConflictedFileStatus(appFileStatus) {
25
+ return appFileStatus.kind === AppFileStatusKind.Conflicted;
26
+ }
27
+ export function isConflictWithMarkers(conflictedFileStatus) {
28
+ return 'conflictMarkerCount' in conflictedFileStatus;
29
+ }
30
+ export var UnmergedEntrySummary;
31
+ (function (UnmergedEntrySummary) {
32
+ UnmergedEntrySummary["AddedByUs"] = "added-by-us";
33
+ UnmergedEntrySummary["DeletedByUs"] = "deleted-by-us";
34
+ UnmergedEntrySummary["AddedByThem"] = "added-by-them";
35
+ UnmergedEntrySummary["DeletedByThem"] = "deleted-by-them";
36
+ UnmergedEntrySummary["BothDeleted"] = "both-deleted";
37
+ UnmergedEntrySummary["BothAdded"] = "both-added";
38
+ UnmergedEntrySummary["BothModified"] = "both-modified";
39
+ })(UnmergedEntrySummary || (UnmergedEntrySummary = {}));
40
+ export class FileChange {
41
+ path;
42
+ status;
43
+ id;
44
+ constructor(path, status) {
45
+ this.path = path;
46
+ this.status = status;
47
+ if (status.kind === AppFileStatusKind.Renamed ||
48
+ status.kind === AppFileStatusKind.Copied) {
49
+ this.id = `${status.kind}+${path}+${status.oldPath}`;
50
+ }
51
+ else {
52
+ this.id = `${status.kind}+${path}`;
53
+ }
54
+ }
55
+ isDeleted() {
56
+ return this.status.kind === AppFileStatusKind.Deleted;
57
+ }
58
+ isNew() {
59
+ return this.status.kind === AppFileStatusKind.New;
60
+ }
61
+ isModified() {
62
+ return this.status.kind === AppFileStatusKind.Modified;
63
+ }
64
+ isUntracked() {
65
+ return this.status.kind === AppFileStatusKind.Untracked;
66
+ }
67
+ }
68
+ export class WorkingDirectoryFileChange extends FileChange {
69
+ selection;
70
+ constructor(path, status, selection) {
71
+ super(path, status);
72
+ this.selection = selection;
73
+ }
74
+ withIncludeAll(include) {
75
+ const newSelection = include
76
+ ? this.selection.withSelectAll()
77
+ : this.selection.withSelectNone();
78
+ return this.withSelection(newSelection);
79
+ }
80
+ withSelection(selection) {
81
+ return new WorkingDirectoryFileChange(this.path, this.status, selection);
82
+ }
83
+ isIncludedInCommit() {
84
+ return this.selection.getSelectionType() === DiffSelectionType.All;
85
+ }
86
+ isExcludedFromCommit() {
87
+ return this.selection.getSelectionType() === DiffSelectionType.None;
88
+ }
89
+ }
90
+ export class CommittedFileChange extends FileChange {
91
+ commitish;
92
+ parentCommitish;
93
+ constructor(path, status, commitish, parentCommitish) {
94
+ super(path, status);
95
+ this.commitish = commitish;
96
+ this.parentCommitish = parentCommitish;
97
+ }
98
+ }
99
+ export class WorkingDirectoryStatus {
100
+ files;
101
+ includeAll;
102
+ static fromFiles(files) {
103
+ return new WorkingDirectoryStatus(files, getIncludeAllState(files));
104
+ }
105
+ fileIxById = new Map();
106
+ constructor(files, includeAll = true) {
107
+ this.files = files;
108
+ this.includeAll = includeAll;
109
+ files.forEach((f, ix) => this.fileIxById.set(f.id, ix));
110
+ }
111
+ withIncludeAllFiles(includeAll) {
112
+ const newFiles = this.files.map(f => f.withIncludeAll(includeAll));
113
+ return new WorkingDirectoryStatus(newFiles, includeAll);
114
+ }
115
+ findFileWithID(id) {
116
+ const ix = this.fileIxById.get(id);
117
+ return ix !== undefined ? this.files[ix] || null : null;
118
+ }
119
+ findFileIndexByID(id) {
120
+ const ix = this.fileIxById.get(id);
121
+ return ix !== undefined ? ix : -1;
122
+ }
123
+ }
124
+ function getIncludeAllState(files) {
125
+ if (!files.length)
126
+ return true;
127
+ const allSelected = files.every(f => f.selection.getSelectionType() === DiffSelectionType.All);
128
+ const noneSelected = files.every(f => f.selection.getSelectionType() === DiffSelectionType.None);
129
+ if (allSelected)
130
+ return true;
131
+ if (noneSelected)
132
+ return false;
133
+ return null;
134
+ }
135
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/models/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type SubmoduleEntry = {
2
+ readonly path: string;
3
+ readonly url: string;
4
+ readonly describe?: string;
5
+ readonly sha: string;
6
+ readonly status: SubmoduleStatus;
7
+ };
8
+ export type SubmoduleStatus = {
9
+ readonly commitChanged: boolean;
10
+ readonly modifiedChanges: boolean;
11
+ readonly untrackedChanges: boolean;
12
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=submodule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submodule.js","sourceRoot":"","sources":["../../src/models/submodule.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export type WorktreeType = 'main' | 'linked';
2
+ export type WorktreeEntry = {
3
+ readonly path: string;
4
+ readonly head: string;
5
+ readonly branch: string | null;
6
+ readonly isDetached: boolean;
7
+ readonly type: WorktreeType;
8
+ readonly isLocked: boolean;
9
+ readonly isPrunable: boolean;
10
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/models/worktree.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,23 +1,62 @@
1
1
  {
2
2
  "name": "git-chopstick-core",
3
- "version": "0.1.1",
4
-
3
+ "version": "0.1.3",
5
4
  "type": "module",
6
- "main": "./src/index.ts",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
- "import": "./src/index.ts"
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ },
12
+ "./git": {
13
+ "import": "./dist/git/index.js",
14
+ "types": "./dist/git/index.d.ts"
15
+ },
16
+ "./models": {
17
+ "import": "./dist/models/index.js",
18
+ "types": "./dist/models/index.d.ts"
19
+ },
20
+ "./models/diff": {
21
+ "import": "./dist/models/diff/index.js",
22
+ "types": "./dist/models/diff/index.d.ts"
23
+ },
24
+ "./lib/progress": {
25
+ "import": "./dist/lib/progress/index.js",
26
+ "types": "./dist/lib/progress/index.d.ts"
27
+ },
28
+ "./*": {
29
+ "import": "./dist/*.js",
30
+ "types": "./dist/*.d.ts"
10
31
  }
11
32
  },
33
+ "files": [
34
+ "dist"
35
+ ],
12
36
  "description": "Git backend library extracted from GitHub Desktop",
13
37
  "scripts": {
14
- "typecheck": "tsc --noEmit"
38
+ "clean": "rm -rf dist",
39
+ "build": "npm run clean && tsc",
40
+ "typecheck": "tsc --noEmit",
41
+ "prepublishOnly": "npm run build"
15
42
  },
16
43
  "dependencies": {
17
44
  "byline": "^5.0.0",
18
45
  "ignore": "^7.0.5",
19
46
  "memoize-one": "^6.0.0"
20
47
  },
48
+ "peerDependencies": {
49
+ "@types/byline": "*",
50
+ "@types/node": ">=20.0.0"
51
+ },
52
+ "peerDependenciesMeta": {
53
+ "@types/byline": {
54
+ "optional": true
55
+ },
56
+ "@types/node": {
57
+ "optional": true
58
+ }
59
+ },
21
60
  "devDependencies": {
22
61
  "@types/byline": "^4.2.36",
23
62
  "@types/node": "^22.19.20",
@@ -1,84 +0,0 @@
1
- /**
2
- * Example: Open a repo and show its current status.
3
- *
4
- * Usage:
5
- * bun examples/get-status.ts /path/to/some/repo
6
- */
7
-
8
- import { Repository } from '../src/models/repository'
9
- import { getStatus } from '../src/git/status'
10
-
11
- async function main() {
12
- const repoPath = process.argv[2]
13
- if (!repoPath) {
14
- console.error('Usage: bun examples/get-status.ts <path-to-repo>')
15
- process.exit(1)
16
- }
17
-
18
- const repo = new Repository(repoPath, 1)
19
-
20
- console.log(`\n📂 Repository: ${repo.name}`)
21
- console.log(` Path: ${repo.path}\n`)
22
-
23
- const status = await getStatus(repo)
24
-
25
- if (!status) {
26
- console.log('❌ Could not read repository status (not a git repo?)')
27
- process.exit(1)
28
- }
29
-
30
- // Branch info
31
- console.log(`🌿 Branch: ${status.currentBranch ?? '(detached HEAD)'}`)
32
- if (status.currentUpstreamBranch) {
33
- console.log(` Upstream: ${status.currentUpstreamBranch}`)
34
- }
35
- if (status.branchAheadBehind) {
36
- const { ahead, behind } = status.branchAheadBehind
37
- console.log(` Ahead: ${ahead} | Behind: ${behind}`)
38
- }
39
- console.log(` Tip: ${status.currentTip?.slice(0, 7) ?? 'N/A'}`)
40
-
41
- // Conflicted files
42
- if (status.doConflictedFilesExist) {
43
- console.log(`\n⚠️ Conflicts detected!`)
44
- }
45
-
46
- // Working directory changes
47
- const files = status.workingDirectory.files
48
- console.log(`\n📝 Changed files: ${files.length}`)
49
-
50
- // Group by status kind
51
- const byKind = new Map<string, string[]>()
52
- for (const file of files) {
53
- const kind = file.status.kind
54
- const list = byKind.get(kind) ?? []
55
- list.push(file.status.kind === 'Renamed' || file.status.kind === 'Copied'
56
- ? `${file.path} (was: ${file.status.oldPath})`
57
- : file.path)
58
- byKind.set(kind, list)
59
- }
60
-
61
- for (const [kind, paths] of byKind) {
62
- console.log(` ${kind}:`)
63
- for (const p of paths) {
64
- console.log(` - ${p}`)
65
- }
66
- }
67
-
68
- // Merge/rebase state
69
- if (status.mergeHeadFound) {
70
- console.log(`\n🔀 Merge in progress`)
71
- }
72
- if (status.rebaseInternalState) {
73
- console.log(`\n🔄 Rebase in progress`)
74
- console.log(` Target: ${status.rebaseInternalState.targetBranch}`)
75
- }
76
- if (status.isCherryPickingHeadFound) {
77
- console.log(`\n🍒 Cherry-pick in progress`)
78
- }
79
- }
80
-
81
- main().catch(err => {
82
- console.error('Error:', err)
83
- process.exit(1)
84
- })
package/src/git/add.ts DELETED
@@ -1,16 +0,0 @@
1
- import { git } from './core'
2
- import { Repository } from '../models/repository'
3
- import { WorkingDirectoryFileChange } from '../models/status'
4
-
5
- /**
6
- * Add a conflicted file to the index.
7
- *
8
- * Typically done after having resolved conflicts either manually
9
- * or through checkout --theirs/--ours.
10
- */
11
- export async function addConflictedFile(
12
- repository: Repository,
13
- file: WorkingDirectoryFileChange
14
- ) {
15
- await git(['add', '--', file.path], repository.path, 'addConflictedFile')
16
- }
package/src/git/apply.ts DELETED
@@ -1,154 +0,0 @@
1
- import { GitError as DugiteError } from './exec'
2
- import { git } from './core'
3
- import {
4
- WorkingDirectoryFileChange,
5
- AppFileStatusKind,
6
- } from '../models/status'
7
- import { DiffType, ITextDiff, DiffSelection } from '../models/diff'
8
- import { Repository } from '../models/repository'
9
- import { getWorkingDirectoryDiff } from './diff'
10
- import { formatPatch, formatPatchToDiscardChanges } from '../lib/patch-formatter'
11
- import { assertNever } from '../lib/fatal-error'
12
-
13
- export async function applyPatchToIndex(
14
- repository: Repository,
15
- file: WorkingDirectoryFileChange
16
- ): Promise<void> {
17
- // If the file was a rename we have to recreate that rename since we've
18
- // just blown away the index. Think of this block of weird looking commands
19
- // as running `git mv`.
20
- if (file.status.kind === AppFileStatusKind.Renamed) {
21
- // Make sure the index knows of the removed file. We could use
22
- // update-index --force-remove here but we're not since it's
23
- // possible that someone staged a rename and then recreated the
24
- // original file and we don't have any guarantees for in which order
25
- // partial stages vs full-file stages happen. By using git add the
26
- // worst that could happen is that we re-stage a file already staged
27
- // by updateIndex.
28
- await git(
29
- ['add', '--update', '--', file.status.oldPath],
30
- repository.path,
31
- 'applyPatchToIndex'
32
- )
33
-
34
- // Figure out the blob oid of the removed file
35
- // <mode> SP <type> SP <object> TAB <file>
36
- const oldFile = await git(
37
- ['ls-tree', 'HEAD', '--', file.status.oldPath],
38
- repository.path,
39
- 'applyPatchToIndex'
40
- )
41
-
42
- const [info] = oldFile.stdout.split('\t', 1)
43
- const [mode, , oid] = info.split(' ', 3)
44
-
45
- // Add the old file blob to the index under the new name
46
- await git(
47
- ['update-index', '--add', '--cacheinfo', mode, oid, file.path],
48
- repository.path,
49
- 'applyPatchToIndex'
50
- )
51
- }
52
-
53
- const applyArgs: string[] = [
54
- 'apply',
55
- '--cached',
56
- '--unidiff-zero',
57
- '--whitespace=nowarn',
58
- '-',
59
- ]
60
-
61
- const diff = await getWorkingDirectoryDiff(repository, file)
62
-
63
- if (diff.kind !== DiffType.Text && diff.kind !== DiffType.LargeText) {
64
- const { kind } = diff
65
- switch (diff.kind) {
66
- case DiffType.Binary:
67
- case DiffType.Submodule:
68
- case DiffType.Image:
69
- throw new Error(
70
- `Can't create partial commit in binary file: ${file.path}`
71
- )
72
- case DiffType.Unrenderable:
73
- throw new Error(
74
- `File diff is too large to generate a partial commit: ${file.path}`
75
- )
76
- default:
77
- assertNever(diff, `Unknown diff kind: ${kind}`)
78
- }
79
- }
80
-
81
- const patch = await formatPatch(repository, file, file.selection)
82
- await git(applyArgs, repository.path, 'applyPatchToIndex', { stdin: patch })
83
-
84
- return Promise.resolve()
85
- }
86
-
87
- /**
88
- * Test a patch to see if it will apply cleanly.
89
- *
90
- * @param workTree work tree (which should be checked out to a specific commit)
91
- * @param patch a Git patch (or patch series) to try applying
92
- * @returns whether the patch applies cleanly
93
- *
94
- * See `formatPatch` to generate a patch series from existing Git commits
95
- */
96
- export async function checkPatch(
97
- workTree: { path: string },
98
- patch: string
99
- ): Promise<boolean> {
100
- const result = await git(
101
- ['apply', '--check', '-'],
102
- workTree.path,
103
- 'checkPatch',
104
- {
105
- stdin: patch,
106
- encoding: 'utf8' as any,
107
- expectedErrors: new Set<DugiteError>([DugiteError.PatchDoesNotApply]),
108
- }
109
- )
110
-
111
- if (result.gitError === DugiteError.PatchDoesNotApply) {
112
- // other errors will be thrown if encountered, so this is fine for now
113
- return false
114
- }
115
-
116
- return true
117
- }
118
-
119
- /**
120
- * Discards the local changes for the specified file based on the passed diff
121
- * and a selection of lines from it.
122
- *
123
- * When passed an empty selection, this method won't do anything. When passed a
124
- * full selection, all changes from the file will be discarded.
125
- *
126
- * @param repository The repository in which to update the working directory
127
- * with information from the index
128
- *
129
- * @param filePath The relative path in the working directory of the file to use
130
- *
131
- * @param diff The diff containing the file local changes
132
- *
133
- * @param selection The selection of changes from the diff to discard
134
- */
135
- export async function discardChangesFromSelection(
136
- repository: Repository,
137
- filePath: string,
138
- diff: ITextDiff,
139
- selection: DiffSelection
140
- ) {
141
- const file = new WorkingDirectoryFileChange(filePath, { kind: AppFileStatusKind.Modified }, selection)
142
- const patch = await formatPatchToDiscardChanges(repository, file)
143
-
144
- if (patch === null || patch === '') {
145
- // When the patch is null we don't need to apply it since it will be a noop.
146
- return
147
- }
148
-
149
- const args = ['apply', '--unidiff-zero', '--whitespace=nowarn', '-']
150
-
151
- await git(args, repository.path, 'discardChangesFromSelection', {
152
- stdin: patch,
153
- })
154
- }
@@ -1,19 +0,0 @@
1
- import { GitError as DugiteError } from './exec'
2
-
3
- /** Get the environment for authenticating remote operations. */
4
- export function envForAuthentication(): Record<string, string | undefined> {
5
- return {
6
- // supported since Git 2.3, this is used to ensure we never interactively prompt
7
- // for credentials - even as a fallback
8
- GIT_TERMINAL_PROMPT: '0',
9
- GIT_TRACE: localStorage.getItem('git-trace') || '0',
10
- }
11
- }
12
-
13
- /** The set of errors which fit under the "authentication failed" umbrella. */
14
- export const AuthenticationErrors: ReadonlySet<DugiteError> = new Set([
15
- DugiteError.HTTPSAuthenticationFailed,
16
- DugiteError.SSHAuthenticationFailed,
17
- DugiteError.HTTPSRepositoryNotFound,
18
- DugiteError.SSHRepositoryNotFound,
19
- ])