git-chopstick-core 0.1.1 → 0.1.2

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 (426) 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/dist/git/checkout-index.js +29 -0
  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/dist/git/interpret-trailers.d.ts +88 -0
  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/dist/git/push-terminal-chunk.d.ts +19 -0
  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/dist/git/show.js +59 -0
  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/dist/git/update-ref.js +32 -0
  175. package/dist/git/update-ref.js.map +1 -0
  176. package/dist/git/var.d.ts +18 -0
  177. package/dist/git/var.js +33 -0
  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 +137 -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 +13 -4
  351. package/src/git/add.ts +3 -3
  352. package/src/git/apply.ts +8 -8
  353. package/src/git/authentication.ts +3 -2
  354. package/src/git/branch.ts +10 -10
  355. package/src/git/checkout-index.ts +2 -2
  356. package/src/git/checkout.ts +12 -12
  357. package/src/git/cherry-pick.ts +16 -16
  358. package/src/git/clean.ts +2 -2
  359. package/src/git/clone.ts +6 -6
  360. package/src/git/commit.ts +7 -7
  361. package/src/git/config.ts +2 -2
  362. package/src/git/core.ts +8 -8
  363. package/src/git/credential.ts +1 -1
  364. package/src/git/diff-check.ts +1 -1
  365. package/src/git/diff-index.ts +2 -2
  366. package/src/git/diff.ts +18 -18
  367. package/src/git/environment.ts +5 -5
  368. package/src/git/fetch.ts +7 -7
  369. package/src/git/for-each-ref.ts +5 -5
  370. package/src/git/format-patch.ts +3 -3
  371. package/src/git/git-delimiter-parser.ts +1 -1
  372. package/src/git/gitignore.ts +2 -2
  373. package/src/git/index.ts +46 -36
  374. package/src/git/init.ts +2 -2
  375. package/src/git/interpret-trailers.ts +3 -3
  376. package/src/git/lfs.ts +2 -2
  377. package/src/git/log.ts +8 -8
  378. package/src/git/merge-tree.ts +5 -5
  379. package/src/git/merge.ts +5 -5
  380. package/src/git/multi-operation-terminal-output.ts +3 -3
  381. package/src/git/pull.ts +7 -7
  382. package/src/git/push-terminal-chunk.ts +1 -1
  383. package/src/git/push.ts +7 -7
  384. package/src/git/rebase.ts +16 -16
  385. package/src/git/reflog.ts +2 -2
  386. package/src/git/refs.ts +2 -2
  387. package/src/git/remote.ts +6 -6
  388. package/src/git/reorder.ts +7 -7
  389. package/src/git/reset.ts +3 -3
  390. package/src/git/rev-list.ts +5 -5
  391. package/src/git/rev-parse.ts +2 -2
  392. package/src/git/revert.ts +8 -8
  393. package/src/git/rm.ts +3 -3
  394. package/src/git/show.ts +4 -4
  395. package/src/git/spawn.ts +3 -3
  396. package/src/git/squash.ts +7 -7
  397. package/src/git/stage.ts +7 -7
  398. package/src/git/stash.ts +10 -10
  399. package/src/git/status.ts +13 -13
  400. package/src/git/submodule.ts +9 -9
  401. package/src/git/tag.ts +4 -4
  402. package/src/git/update-index.ts +5 -5
  403. package/src/git/update-ref.ts +2 -2
  404. package/src/git/var.ts +3 -3
  405. package/src/git/worktree-include.ts +3 -3
  406. package/src/git/worktree.ts +4 -4
  407. package/src/index.ts +9 -21
  408. package/src/lib/diff-parser.ts +2 -2
  409. package/src/lib/get-old-path.ts +1 -1
  410. package/src/lib/git/environment.ts +1 -1
  411. package/src/lib/patch-formatter.ts +3 -3
  412. package/src/lib/progress/from-process.ts +1 -1
  413. package/src/lib/progress/index.ts +1 -1
  414. package/src/lib/status-parser.ts +2 -2
  415. package/src/models/branch.ts +1 -1
  416. package/src/models/cherry-pick.ts +2 -2
  417. package/src/models/commit.ts +1 -1
  418. package/src/models/diff/diff-data.ts +3 -3
  419. package/src/models/diff/index.ts +6 -6
  420. package/src/models/diff/raw-diff.ts +1 -1
  421. package/src/models/index.ts +36 -0
  422. package/src/models/rebase.ts +2 -2
  423. package/src/models/stash-entry.ts +1 -1
  424. package/src/models/status.ts +1 -1
  425. package/examples/get-status.ts +0 -84
  426. package/tsconfig.json +0 -17
@@ -0,0 +1,109 @@
1
+ import * as Fs from 'fs';
2
+ import * as Path from 'path';
3
+ import { readFile, copyFile, mkdir } from 'fs/promises';
4
+ import ignore from 'ignore';
5
+ import { git } from './core.js';
6
+ import { addWorktree, getMainWorktreePath } from './worktree.js';
7
+ const WorktreeIncludeFile = '.worktreeinclude';
8
+ /**
9
+ * Reads the patterns from the `.worktreeinclude` file at the root of the
10
+ * given repository path.
11
+ *
12
+ * The file uses `.gitignore` syntax. Blank lines and lines starting with `#`
13
+ * are ignored.
14
+ *
15
+ * Returns an empty array if the file does not exist.
16
+ */
17
+ export async function readWorktreeIncludePatterns(repositoryPath) {
18
+ const filePath = Path.join(repositoryPath, WorktreeIncludeFile);
19
+ let contents;
20
+ try {
21
+ contents = await readFile(filePath, 'utf8');
22
+ }
23
+ catch {
24
+ return [];
25
+ }
26
+ return contents
27
+ .split('\n')
28
+ .map(line => line.trim())
29
+ .filter(line => line.length > 0 && !line.startsWith('#'));
30
+ }
31
+ /**
32
+ * Returns the list of gitignored files in `repositoryPath` that match any of
33
+ * the given patterns.
34
+ *
35
+ * Only files that are both gitignored **and** matched by a `.worktreeinclude`
36
+ * pattern are returned — tracked files are never included.
37
+ */
38
+ export async function getIgnoredFilesMatchingPatterns(repository, patterns) {
39
+ if (patterns.length === 0) {
40
+ return [];
41
+ }
42
+ const result = await git(['ls-files', '--others', '--ignored', '--exclude-standard', '-z'], repository.path, 'getIgnoredFiles');
43
+ // Files are NUL-separated; filter out empty entries from the split
44
+ const ignoredFiles = result.stdout.split('\0').filter(f => f.length > 0);
45
+ const ig = ignore().add(patterns);
46
+ return ignoredFiles.filter(f => ig.ignores(f));
47
+ }
48
+ /**
49
+ * Copies each file in `files` (relative paths) from `sourcePath` to
50
+ * `destinationPath`, preserving the directory structure.
51
+ *
52
+ * Files that cannot be copied (e.g. because they no longer exist at the
53
+ * source) are skipped silently — a failure to copy a single file never
54
+ * prevents the others from being copied.
55
+ */
56
+ export async function copyWorktreeIncludeFiles(sourcePath, destinationPath, files) {
57
+ for (const file of files) {
58
+ const src = Path.join(sourcePath, file);
59
+ const dest = Path.join(destinationPath, file);
60
+ // Guard against path traversal: the resolved destination must be
61
+ // inside the worktree directory.
62
+ const resolvedDest = Path.resolve(dest);
63
+ const resolvedWorktreeRoot = Path.resolve(destinationPath);
64
+ if (!resolvedDest.startsWith(resolvedWorktreeRoot + Path.sep)) {
65
+ continue;
66
+ }
67
+ try {
68
+ // eslint-disable-next-line no-sync
69
+ if (!Fs.existsSync(src)) {
70
+ continue;
71
+ }
72
+ await mkdir(Path.dirname(dest), { recursive: true });
73
+ await copyFile(src, dest);
74
+ }
75
+ catch (e) {
76
+ console.warn(`[worktree-include] Failed to copy '${file}' to worktree`, e instanceof Error ? e : undefined);
77
+ }
78
+ }
79
+ }
80
+ /**
81
+ * Creates a new git worktree and then copies any gitignored files listed in
82
+ * the `.worktreeinclude` file from the main worktree into the newly created
83
+ * worktree.
84
+ *
85
+ * The copy step is best-effort: failures are logged but do not prevent the
86
+ * worktree from being used.
87
+ *
88
+ * @param repository The repository to create the worktree in.
89
+ * @param path The absolute path where the new worktree should be created.
90
+ * @param options Options forwarded to `addWorktree`.
91
+ */
92
+ export async function addWorktreeWithIncludes(repository, path, options = {}) {
93
+ await addWorktree(repository, path, options);
94
+ try {
95
+ const mainPath = (await getMainWorktreePath(repository)) ?? repository.path;
96
+ const patterns = await readWorktreeIncludePatterns(mainPath);
97
+ if (patterns.length === 0) {
98
+ return;
99
+ }
100
+ const files = await getIgnoredFilesMatchingPatterns(repository, patterns);
101
+ if (files.length > 0) {
102
+ await copyWorktreeIncludeFiles(mainPath, path, files);
103
+ }
104
+ }
105
+ catch (e) {
106
+ console.warn('[worktree-include] Failed to process .worktreeinclude; worktree was still created', e instanceof Error ? e : undefined);
107
+ }
108
+ }
109
+ //# sourceMappingURL=worktree-include.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-include.js","sourceRoot":"","sources":["../../src/git/worktree-include.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { Repository } from '../models/repository.js';
2
+ import type { WorktreeEntry } from '../models/worktree.js';
3
+ /**
4
+ * Get the set of canonical branch refs (e.g. `refs/heads/feature`)
5
+ * checked out in any worktree (main or linked).
6
+ */
7
+ export declare function getWorktreeCheckedOutBranches(repository: Repository): Promise<ReadonlySet<string>>;
8
+ export interface IWorktreePathInfo {
9
+ readonly isLinkedWorktree: boolean;
10
+ readonly mainWorktreePath: string | null;
11
+ }
12
+ export declare function parseWorktreePorcelainOutput(stdout: string): ReadonlyArray<WorktreeEntry>;
13
+ export declare function listWorktrees(repository: Repository): Promise<ReadonlyArray<WorktreeEntry>>;
14
+ export declare function addWorktree(repository: Repository, path: string, options?: {
15
+ readonly branch?: string;
16
+ readonly createBranch?: string;
17
+ readonly detach?: boolean;
18
+ readonly commitish?: string;
19
+ }): Promise<void>;
20
+ export declare function removeWorktree(repository: Repository, path: string): Promise<void>;
21
+ export declare function pruneWorktrees(repository: Repository): Promise<void>;
22
+ export declare function moveWorktree(repository: Repository, oldPath: string, newPath: string): Promise<void>;
23
+ export declare function isLinkedWorktree(repository: Repository): Promise<boolean>;
24
+ export declare function getMainWorktreePath(repository: Repository): Promise<string | null>;
25
+ export declare function getWorktreePathInfoSync(repositoryPath: string): IWorktreePathInfo | null;
@@ -0,0 +1,139 @@
1
+ import { git } from './core.js';
2
+ import * as Path from 'path';
3
+ import * as Fs from 'fs';
4
+ import { normalizePath } from '../lib/helpers/path.js';
5
+ /**
6
+ * Get the set of canonical branch refs (e.g. `refs/heads/feature`)
7
+ * checked out in any worktree (main or linked).
8
+ */
9
+ export async function getWorktreeCheckedOutBranches(repository) {
10
+ const result = await git(['worktree', 'list', '--porcelain', '-z'], repository.path, 'getWorktreeCheckedOutBranches');
11
+ const branches = new Set();
12
+ // With -z, lines are NUL-terminated and blocks are separated by
13
+ // double NUL (i.e. an empty string between two NUL terminators).
14
+ const blocks = result.stdout.split('\0\0');
15
+ for (const block of blocks) {
16
+ for (const line of block.split('\0')) {
17
+ if (line.startsWith('branch ')) {
18
+ branches.add(line.substring('branch '.length));
19
+ }
20
+ }
21
+ }
22
+ return branches;
23
+ }
24
+ function getDotGitPath(repositoryPath) {
25
+ return Path.join(repositoryPath, '.git');
26
+ }
27
+ export function parseWorktreePorcelainOutput(stdout) {
28
+ if (stdout.trim().length === 0) {
29
+ return [];
30
+ }
31
+ const blocks = stdout.trim().split('\n\n');
32
+ const entries = [];
33
+ for (let i = 0; i < blocks.length; i++) {
34
+ const lines = blocks[i].split('\n');
35
+ let path = '';
36
+ let head = '';
37
+ let branch = null;
38
+ let isDetached = false;
39
+ let isLocked = false;
40
+ let isPrunable = false;
41
+ for (const line of lines) {
42
+ if (line.startsWith('worktree ')) {
43
+ path = line.substring('worktree '.length);
44
+ }
45
+ else if (line.startsWith('HEAD ')) {
46
+ head = line.substring('HEAD '.length);
47
+ }
48
+ else if (line.startsWith('branch ')) {
49
+ branch = line.substring('branch '.length);
50
+ }
51
+ else if (line === 'detached') {
52
+ isDetached = true;
53
+ }
54
+ else if (line === 'locked' || line.startsWith('locked ')) {
55
+ isLocked = true;
56
+ }
57
+ else if (line === 'prunable' || line.startsWith('prunable ')) {
58
+ isPrunable = true;
59
+ }
60
+ }
61
+ const type = i === 0 ? 'main' : 'linked';
62
+ entries.push({ path, head, branch, isDetached, type, isLocked, isPrunable });
63
+ }
64
+ return entries;
65
+ }
66
+ export async function listWorktrees(repository) {
67
+ const result = await git(['worktree', 'list', '--porcelain'], repository.path, 'listWorktrees');
68
+ return parseWorktreePorcelainOutput(result.stdout);
69
+ }
70
+ export async function addWorktree(repository, path, options = {}) {
71
+ const args = ['worktree', 'add'];
72
+ if (options.detach) {
73
+ args.push('--detach');
74
+ }
75
+ if (options.createBranch) {
76
+ args.push('-b', options.createBranch);
77
+ }
78
+ args.push(path);
79
+ if (options.branch) {
80
+ args.push(options.branch);
81
+ }
82
+ else if (options.commitish) {
83
+ args.push(options.commitish);
84
+ }
85
+ await git(args, repository.path, 'addWorktree');
86
+ }
87
+ export async function removeWorktree(repository, path) {
88
+ const args = ['worktree', 'remove', '--force', path];
89
+ await git(args, repository.path, 'removeWorktree');
90
+ }
91
+ export async function pruneWorktrees(repository) {
92
+ await git(['worktree', 'prune'], repository.path, 'pruneWorktrees');
93
+ }
94
+ export async function moveWorktree(repository, oldPath, newPath) {
95
+ await git(['worktree', 'move', oldPath, newPath], repository.path, 'moveWorktree');
96
+ }
97
+ export async function isLinkedWorktree(repository) {
98
+ const worktrees = await listWorktrees(repository);
99
+ const repoPath = normalizePath(repository.path);
100
+ return worktrees.some(wt => wt.type === 'linked' && normalizePath(wt.path) === repoPath);
101
+ }
102
+ export async function getMainWorktreePath(repository) {
103
+ const worktrees = await listWorktrees(repository);
104
+ const main = worktrees.find(wt => wt.type === 'main');
105
+ return main?.path ?? null;
106
+ }
107
+ export function getWorktreePathInfoSync(repositoryPath) {
108
+ try {
109
+ const dotGit = getDotGitPath(repositoryPath);
110
+ // eslint-disable-next-line no-sync
111
+ const stats = Fs.statSync(dotGit);
112
+ if (stats.isDirectory()) {
113
+ return { isLinkedWorktree: false, mainWorktreePath: repositoryPath };
114
+ }
115
+ if (!stats.isFile()) {
116
+ return null;
117
+ }
118
+ // eslint-disable-next-line no-sync
119
+ const contents = Fs.readFileSync(dotGit, 'utf8').trim();
120
+ if (!contents.startsWith('gitdir: ')) {
121
+ return null;
122
+ }
123
+ const gitDirPath = Path.resolve(repositoryPath, contents.substring('gitdir: '.length));
124
+ // eslint-disable-next-line no-sync
125
+ const commondir = Fs.readFileSync(Path.join(gitDirPath, 'commondir'), 'utf8').trim();
126
+ if (commondir.length === 0) {
127
+ return null;
128
+ }
129
+ const commonGitDir = Path.resolve(gitDirPath, commondir);
130
+ return {
131
+ isLinkedWorktree: true,
132
+ mainWorktreePath: Path.dirname(commonGitDir),
133
+ };
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ }
139
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/git/worktree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './git/index.js';
2
+ export { GitError as GitErrorCodes, type IGitSpawnOptions } from './git/exec.js';
3
+ export * from './models/index.js';
4
+ export type { ITrailer } from './models/commit.js';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ // ── All git operations ──
2
+ export * from './git/index.js';
3
+ // ── Git error codes enum (renamed to avoid conflict with GitError class from core.js) ──
4
+ export { GitError as GitErrorCodes } from './git/exec.js';
5
+ // ── All domain models ──
6
+ export * from './models/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,cAAc,gBAAgB,CAAA;AAE9B,0FAA0F;AAC1F,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAyB,MAAM,eAAe,CAAA;AAEhF,0BAA0B;AAC1B,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function getHTMLURL(): string;
2
+ export declare function isTrustedRemoteHost(_url: string): boolean;
@@ -0,0 +1,7 @@
1
+ export function getHTMLURL() {
2
+ return 'https://github.com';
3
+ }
4
+ export function isTrustedRemoteHost(_url) {
5
+ return true;
6
+ }
7
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU;IACxB,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { IRawDiff } from '../models/diff/index.js';
2
+ export declare const HiddenBidiCharsRegex: RegExp;
3
+ export declare class DiffParser {
4
+ private ls;
5
+ private le;
6
+ private text;
7
+ constructor();
8
+ private reset;
9
+ private nextLine;
10
+ private readLine;
11
+ private lineStartsWith;
12
+ private lineEndsWith;
13
+ private peek;
14
+ private parseDiffHeader;
15
+ private numberFromGroup;
16
+ private parseHunkHeader;
17
+ private parseLinePrefix;
18
+ private parseHunk;
19
+ parse(text: string): IRawDiff;
20
+ }
@@ -0,0 +1,184 @@
1
+ import { DiffHunk, DiffHunkHeader, DiffLine, DiffLineType, DiffHunkExpansionType, } from '../models/diff/index.js';
2
+ import { assertNever } from './fatal-error.js';
3
+ const diffHeaderRe = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;
4
+ export const HiddenBidiCharsRegex = /[\u202A-\u202E]|[\u2066-\u2069]/;
5
+ const DiffPrefixAdd = '+';
6
+ const DiffPrefixDelete = '-';
7
+ const DiffPrefixContext = ' ';
8
+ const DiffPrefixNoNewline = '\\';
9
+ const DiffLinePrefixChars = new Set([
10
+ DiffPrefixAdd,
11
+ DiffPrefixDelete,
12
+ DiffPrefixContext,
13
+ DiffPrefixNoNewline,
14
+ ]);
15
+ function getLargestLineNumber(hunks) {
16
+ let largest = 0;
17
+ for (const hunk of hunks) {
18
+ for (const line of hunk.lines) {
19
+ if (line.originalLineNumber !== null && line.originalLineNumber > largest) {
20
+ largest = line.originalLineNumber;
21
+ }
22
+ }
23
+ }
24
+ return largest;
25
+ }
26
+ function getHunkHeaderExpansionType(_hunkIndex, _header, _previousHunk) {
27
+ return DiffHunkExpansionType.None;
28
+ }
29
+ export class DiffParser {
30
+ ls;
31
+ le;
32
+ text;
33
+ constructor() {
34
+ this.reset();
35
+ }
36
+ reset() {
37
+ this.ls = 0;
38
+ this.le = -1;
39
+ this.text = '';
40
+ }
41
+ nextLine() {
42
+ this.ls = this.le + 1;
43
+ if (this.ls >= this.text.length)
44
+ return false;
45
+ this.le = this.text.indexOf('\n', this.ls);
46
+ if (this.le === -1)
47
+ this.le = this.text.length;
48
+ return this.ls !== this.le;
49
+ }
50
+ readLine() {
51
+ return this.nextLine() ? this.text.substring(this.ls, this.le) : null;
52
+ }
53
+ lineStartsWith(searchString) {
54
+ return this.text.startsWith(searchString, this.ls);
55
+ }
56
+ lineEndsWith(searchString) {
57
+ return this.text.endsWith(searchString, this.le);
58
+ }
59
+ peek() {
60
+ const p = this.le + 1;
61
+ return p < this.text.length ? this.text[p] : null;
62
+ }
63
+ parseDiffHeader() {
64
+ while (this.nextLine()) {
65
+ if (this.lineStartsWith('Binary files ') && this.lineEndsWith('differ')) {
66
+ return { isBinary: true };
67
+ }
68
+ if (this.lineStartsWith('+++')) {
69
+ return { isBinary: false };
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+ numberFromGroup(m, group, defaultValue = null) {
75
+ const str = m[group];
76
+ if (!str) {
77
+ if (defaultValue === null) {
78
+ throw new Error(`Group ${group} missing from regexp match and no defaultValue was provided`);
79
+ }
80
+ return defaultValue;
81
+ }
82
+ const num = parseInt(str, 10);
83
+ if (isNaN(num)) {
84
+ throw new Error(`Could not parse capture group ${group} into number: ${str}`);
85
+ }
86
+ return num;
87
+ }
88
+ parseHunkHeader(line) {
89
+ const m = diffHeaderRe.exec(line);
90
+ if (!m)
91
+ throw new Error('Invalid hunk header format');
92
+ const oldStartLine = this.numberFromGroup(m, 1);
93
+ const oldLineCount = this.numberFromGroup(m, 2, 1);
94
+ const newStartLine = this.numberFromGroup(m, 3);
95
+ const newLineCount = this.numberFromGroup(m, 4, 1);
96
+ return new DiffHunkHeader(oldStartLine, oldLineCount, newStartLine, newLineCount);
97
+ }
98
+ parseLinePrefix(c) {
99
+ if (c && c.length && DiffLinePrefixChars.has(c[0])) {
100
+ return c[0];
101
+ }
102
+ return null;
103
+ }
104
+ parseHunk(linesConsumed, _hunkIndex, _previousHunk) {
105
+ const headerLine = this.readLine();
106
+ if (!headerLine)
107
+ throw new Error('Expected hunk header but reached end of diff');
108
+ const header = this.parseHunkHeader(headerLine);
109
+ const lines = new Array();
110
+ lines.push(new DiffLine(headerLine, DiffLineType.Hunk, 1, null, null));
111
+ let rollingDiffBeforeCounter = header.oldStartLine;
112
+ let rollingDiffAfterCounter = header.newStartLine;
113
+ let diffLineNumber = linesConsumed;
114
+ let c;
115
+ while ((c = this.parseLinePrefix(this.peek()))) {
116
+ const line = this.readLine();
117
+ if (!line)
118
+ throw new Error('Expected unified diff line but reached end of diff');
119
+ if (c === DiffPrefixNoNewline) {
120
+ if (line.length < 12) {
121
+ throw new Error(`Expected "no newline at end of file" marker to be at least 12 bytes long`);
122
+ }
123
+ const previousLineIndex = lines.length - 1;
124
+ lines[previousLineIndex] = lines[previousLineIndex].withNoTrailingNewLine(true);
125
+ continue;
126
+ }
127
+ diffLineNumber++;
128
+ let diffLine;
129
+ if (c === DiffPrefixAdd) {
130
+ diffLine = new DiffLine(line, DiffLineType.Add, diffLineNumber, null, rollingDiffAfterCounter++);
131
+ }
132
+ else if (c === DiffPrefixDelete) {
133
+ diffLine = new DiffLine(line, DiffLineType.Delete, diffLineNumber, rollingDiffBeforeCounter++, null);
134
+ }
135
+ else if (c === DiffPrefixContext) {
136
+ diffLine = new DiffLine(line, DiffLineType.Context, diffLineNumber, rollingDiffBeforeCounter++, rollingDiffAfterCounter++);
137
+ }
138
+ else {
139
+ return assertNever(c, `Unknown DiffLinePrefix: ${c}`);
140
+ }
141
+ lines.push(diffLine);
142
+ }
143
+ if (lines.length === 1) {
144
+ throw new Error('Malformed diff, empty hunk');
145
+ }
146
+ return new DiffHunk(header, lines, linesConsumed, linesConsumed + lines.length - 1, getHunkHeaderExpansionType(_hunkIndex, header, _previousHunk));
147
+ }
148
+ parse(text) {
149
+ this.text = text;
150
+ try {
151
+ const headerInfo = this.parseDiffHeader();
152
+ const headerEnd = this.le;
153
+ const header = this.text.substring(0, headerEnd);
154
+ if (!headerInfo) {
155
+ return { header, contents: '', hunks: [], isBinary: false, maxLineNumber: 0, hasHiddenBidiChars: false };
156
+ }
157
+ if (headerInfo.isBinary) {
158
+ return { header, contents: '', hunks: [], isBinary: true, maxLineNumber: 0, hasHiddenBidiChars: false };
159
+ }
160
+ const hunks = new Array();
161
+ let linesConsumed = 0;
162
+ do {
163
+ const hunk = this.parseHunk(linesConsumed, hunks.length, null);
164
+ hunks.push(hunk);
165
+ linesConsumed += hunk.lines.length;
166
+ } while (this.peek());
167
+ const contents = this.text
168
+ .substring(headerEnd + 1, this.le)
169
+ .replace(/\n\/g, '');
170
+ return {
171
+ header,
172
+ contents,
173
+ hunks,
174
+ isBinary: headerInfo.isBinary,
175
+ maxLineNumber: getLargestLineNumber(hunks),
176
+ hasHiddenBidiChars: HiddenBidiCharsRegex.test(text),
177
+ };
178
+ }
179
+ finally {
180
+ this.reset();
181
+ }
182
+ }
183
+ }
184
+ //# sourceMappingURL=diff-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-parser.js","sourceRoot":"","sources":["../../src/lib/diff-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const directoryExists: (path: string) => Promise<boolean>;
@@ -0,0 +1,11 @@
1
+ import { stat } from 'fs/promises';
2
+ export const directoryExists = async (path) => {
3
+ try {
4
+ const s = await stat(path);
5
+ return s.isDirectory();
6
+ }
7
+ catch {
8
+ return false;
9
+ }
10
+ };
11
+ //# sourceMappingURL=directory-exists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-exists.js","sourceRoot":"","sources":["../../src/lib/directory-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ interface IErrnoException extends Error {
2
+ readonly code: string;
3
+ readonly syscall: string;
4
+ }
5
+ export declare function isErrnoException(err: any): err is IErrnoException;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ export function isErrnoException(err) {
2
+ return (err instanceof Error &&
3
+ typeof err.code === 'string' &&
4
+ typeof err.syscall === 'string');
5
+ }
6
+ //# sourceMappingURL=errno-exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errno-exception.js","sourceRoot":"","sources":["../../src/lib/errno-exception.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IACvC,OAAO,CACL,GAAG,YAAY,KAAK;QACpB,OAAQ,GAAW,CAAC,IAAI,KAAK,QAAQ;QACrC,OAAQ,GAAW,CAAC,OAAO,KAAK,QAAQ,CACzC,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function fatalError(msg: string): never;
2
+ export declare function assertNever(x: never, message: string): never;
3
+ export declare function forceUnwrap<T>(message: string, x: T | null | undefined): T;
4
+ export declare function assertNonNullable<T>(x: T, message: string): asserts x is NonNullable<T>;
@@ -0,0 +1,18 @@
1
+ export function fatalError(msg) {
2
+ throw new Error(msg);
3
+ }
4
+ export function assertNever(x, message) {
5
+ throw new Error(message);
6
+ }
7
+ export function forceUnwrap(message, x) {
8
+ if (x == null) {
9
+ return fatalError(message);
10
+ }
11
+ return x;
12
+ }
13
+ export function assertNonNullable(x, message) {
14
+ if (x == null) {
15
+ return fatalError(message);
16
+ }
17
+ }
18
+ //# sourceMappingURL=fatal-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fatal-error.js","sourceRoot":"","sources":["../../src/lib/fatal-error.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAQ,EAAE,OAAe;IACnD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,OAAe,EAAE,CAAuB;IACrE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,CAAI,EACJ,OAAe;IAEf,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare function enableImagePreviewsForDDSFiles(): boolean;
2
+ export declare function enableReadmeOverwriteWarning(): boolean;
3
+ export declare function enableWSLDetection(): boolean;
4
+ export declare function enablePreviousTagSuggestions(): boolean;
5
+ export declare function enablePullRequestQuickView(): boolean;
6
+ export declare const enableCustomIntegration: () => boolean;
7
+ export declare const enableResizingToolbarButtons: () => boolean;
8
+ export declare const enableHooksEnvironment: () => boolean;
9
+ export declare const enableHooksByDefault: () => boolean;
10
+ export declare const enableFormattingPreferences: () => boolean;
11
+ export declare const enableCopilotConflictResolution: () => boolean;
12
+ export declare const enableTestMenuItems: () => boolean;
13
+ export declare const enableCommitMessageGeneration: () => boolean;
14
+ export declare const enableCopilotSdkCommitMessageGeneration: () => boolean;