gitx.do 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 (356) hide show
  1. package/README.md +40 -353
  2. package/dist/do/logger.d.ts +50 -0
  3. package/dist/do/logger.d.ts.map +1 -0
  4. package/dist/do/logger.js +122 -0
  5. package/dist/do/logger.js.map +1 -0
  6. package/dist/{durable-object → do}/schema.d.ts +3 -3
  7. package/dist/do/schema.d.ts.map +1 -0
  8. package/dist/{durable-object → do}/schema.js +4 -3
  9. package/dist/do/schema.js.map +1 -0
  10. package/dist/do/types.d.ts +267 -0
  11. package/dist/do/types.d.ts.map +1 -0
  12. package/dist/do/types.js +62 -0
  13. package/dist/do/types.js.map +1 -0
  14. package/dist/index.d.ts +14 -469
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +31 -483
  17. package/dist/index.js.map +1 -1
  18. package/package.json +13 -21
  19. package/dist/cli/commands/add.d.ts +0 -176
  20. package/dist/cli/commands/add.d.ts.map +0 -1
  21. package/dist/cli/commands/add.js +0 -979
  22. package/dist/cli/commands/add.js.map +0 -1
  23. package/dist/cli/commands/blame.d.ts +0 -259
  24. package/dist/cli/commands/blame.d.ts.map +0 -1
  25. package/dist/cli/commands/blame.js +0 -609
  26. package/dist/cli/commands/blame.js.map +0 -1
  27. package/dist/cli/commands/branch.d.ts +0 -249
  28. package/dist/cli/commands/branch.d.ts.map +0 -1
  29. package/dist/cli/commands/branch.js +0 -693
  30. package/dist/cli/commands/branch.js.map +0 -1
  31. package/dist/cli/commands/checkout.d.ts +0 -73
  32. package/dist/cli/commands/checkout.d.ts.map +0 -1
  33. package/dist/cli/commands/checkout.js +0 -725
  34. package/dist/cli/commands/checkout.js.map +0 -1
  35. package/dist/cli/commands/commit.d.ts +0 -182
  36. package/dist/cli/commands/commit.d.ts.map +0 -1
  37. package/dist/cli/commands/commit.js +0 -457
  38. package/dist/cli/commands/commit.js.map +0 -1
  39. package/dist/cli/commands/diff.d.ts +0 -464
  40. package/dist/cli/commands/diff.d.ts.map +0 -1
  41. package/dist/cli/commands/diff.js +0 -959
  42. package/dist/cli/commands/diff.js.map +0 -1
  43. package/dist/cli/commands/log.d.ts +0 -239
  44. package/dist/cli/commands/log.d.ts.map +0 -1
  45. package/dist/cli/commands/log.js +0 -535
  46. package/dist/cli/commands/log.js.map +0 -1
  47. package/dist/cli/commands/merge.d.ts +0 -106
  48. package/dist/cli/commands/merge.d.ts.map +0 -1
  49. package/dist/cli/commands/merge.js +0 -852
  50. package/dist/cli/commands/merge.js.map +0 -1
  51. package/dist/cli/commands/review.d.ts +0 -457
  52. package/dist/cli/commands/review.d.ts.map +0 -1
  53. package/dist/cli/commands/review.js +0 -558
  54. package/dist/cli/commands/review.js.map +0 -1
  55. package/dist/cli/commands/stash.d.ts +0 -157
  56. package/dist/cli/commands/stash.d.ts.map +0 -1
  57. package/dist/cli/commands/stash.js +0 -655
  58. package/dist/cli/commands/stash.js.map +0 -1
  59. package/dist/cli/commands/status.d.ts +0 -269
  60. package/dist/cli/commands/status.d.ts.map +0 -1
  61. package/dist/cli/commands/status.js +0 -492
  62. package/dist/cli/commands/status.js.map +0 -1
  63. package/dist/cli/commands/web.d.ts +0 -199
  64. package/dist/cli/commands/web.d.ts.map +0 -1
  65. package/dist/cli/commands/web.js +0 -697
  66. package/dist/cli/commands/web.js.map +0 -1
  67. package/dist/cli/fs-adapter.d.ts +0 -656
  68. package/dist/cli/fs-adapter.d.ts.map +0 -1
  69. package/dist/cli/fs-adapter.js +0 -1177
  70. package/dist/cli/fs-adapter.js.map +0 -1
  71. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  72. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  73. package/dist/cli/fsx-cli-adapter.js +0 -619
  74. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  75. package/dist/cli/index.d.ts +0 -387
  76. package/dist/cli/index.d.ts.map +0 -1
  77. package/dist/cli/index.js +0 -579
  78. package/dist/cli/index.js.map +0 -1
  79. package/dist/cli/ui/components/DiffView.d.ts +0 -12
  80. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  81. package/dist/cli/ui/components/DiffView.js +0 -11
  82. package/dist/cli/ui/components/DiffView.js.map +0 -1
  83. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -10
  84. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  85. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  86. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  87. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -15
  88. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  89. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  90. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  91. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -10
  92. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  93. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  94. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  95. package/dist/cli/ui/components/NavigationList.d.ts +0 -14
  96. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  97. package/dist/cli/ui/components/NavigationList.js +0 -11
  98. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  99. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -13
  100. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  101. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  102. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  103. package/dist/cli/ui/components/index.d.ts +0 -7
  104. package/dist/cli/ui/components/index.d.ts.map +0 -1
  105. package/dist/cli/ui/components/index.js +0 -9
  106. package/dist/cli/ui/components/index.js.map +0 -1
  107. package/dist/cli/ui/terminal-ui.d.ts +0 -85
  108. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  109. package/dist/cli/ui/terminal-ui.js +0 -121
  110. package/dist/cli/ui/terminal-ui.js.map +0 -1
  111. package/dist/do/BashModule.d.ts +0 -871
  112. package/dist/do/BashModule.d.ts.map +0 -1
  113. package/dist/do/BashModule.js +0 -1143
  114. package/dist/do/BashModule.js.map +0 -1
  115. package/dist/do/FsModule.d.ts +0 -612
  116. package/dist/do/FsModule.d.ts.map +0 -1
  117. package/dist/do/FsModule.js +0 -1120
  118. package/dist/do/FsModule.js.map +0 -1
  119. package/dist/do/GitModule.d.ts +0 -635
  120. package/dist/do/GitModule.d.ts.map +0 -1
  121. package/dist/do/GitModule.js +0 -784
  122. package/dist/do/GitModule.js.map +0 -1
  123. package/dist/do/GitRepoDO.d.ts +0 -281
  124. package/dist/do/GitRepoDO.d.ts.map +0 -1
  125. package/dist/do/GitRepoDO.js +0 -479
  126. package/dist/do/GitRepoDO.js.map +0 -1
  127. package/dist/do/bash-ast.d.ts +0 -246
  128. package/dist/do/bash-ast.d.ts.map +0 -1
  129. package/dist/do/bash-ast.js +0 -888
  130. package/dist/do/bash-ast.js.map +0 -1
  131. package/dist/do/container-executor.d.ts +0 -491
  132. package/dist/do/container-executor.d.ts.map +0 -1
  133. package/dist/do/container-executor.js +0 -731
  134. package/dist/do/container-executor.js.map +0 -1
  135. package/dist/do/index.d.ts +0 -53
  136. package/dist/do/index.d.ts.map +0 -1
  137. package/dist/do/index.js +0 -91
  138. package/dist/do/index.js.map +0 -1
  139. package/dist/do/tiered-storage.d.ts +0 -403
  140. package/dist/do/tiered-storage.d.ts.map +0 -1
  141. package/dist/do/tiered-storage.js +0 -689
  142. package/dist/do/tiered-storage.js.map +0 -1
  143. package/dist/do/withBash.d.ts +0 -231
  144. package/dist/do/withBash.d.ts.map +0 -1
  145. package/dist/do/withBash.js +0 -244
  146. package/dist/do/withBash.js.map +0 -1
  147. package/dist/do/withFs.d.ts +0 -237
  148. package/dist/do/withFs.d.ts.map +0 -1
  149. package/dist/do/withFs.js +0 -387
  150. package/dist/do/withFs.js.map +0 -1
  151. package/dist/do/withGit.d.ts +0 -180
  152. package/dist/do/withGit.d.ts.map +0 -1
  153. package/dist/do/withGit.js +0 -271
  154. package/dist/do/withGit.js.map +0 -1
  155. package/dist/durable-object/object-store.d.ts +0 -633
  156. package/dist/durable-object/object-store.d.ts.map +0 -1
  157. package/dist/durable-object/object-store.js +0 -1164
  158. package/dist/durable-object/object-store.js.map +0 -1
  159. package/dist/durable-object/schema.d.ts.map +0 -1
  160. package/dist/durable-object/schema.js.map +0 -1
  161. package/dist/durable-object/wal.d.ts +0 -416
  162. package/dist/durable-object/wal.d.ts.map +0 -1
  163. package/dist/durable-object/wal.js +0 -445
  164. package/dist/durable-object/wal.js.map +0 -1
  165. package/dist/mcp/adapter.d.ts +0 -772
  166. package/dist/mcp/adapter.d.ts.map +0 -1
  167. package/dist/mcp/adapter.js +0 -895
  168. package/dist/mcp/adapter.js.map +0 -1
  169. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  170. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  171. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  172. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  173. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  174. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  175. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  176. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  177. package/dist/mcp/sandbox/template.d.ts +0 -17
  178. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  179. package/dist/mcp/sandbox/template.js +0 -71
  180. package/dist/mcp/sandbox/template.js.map +0 -1
  181. package/dist/mcp/sandbox.d.ts +0 -764
  182. package/dist/mcp/sandbox.d.ts.map +0 -1
  183. package/dist/mcp/sandbox.js +0 -1362
  184. package/dist/mcp/sandbox.js.map +0 -1
  185. package/dist/mcp/sdk-adapter.d.ts +0 -835
  186. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  187. package/dist/mcp/sdk-adapter.js +0 -974
  188. package/dist/mcp/sdk-adapter.js.map +0 -1
  189. package/dist/mcp/tools/do.d.ts +0 -32
  190. package/dist/mcp/tools/do.d.ts.map +0 -1
  191. package/dist/mcp/tools/do.js +0 -117
  192. package/dist/mcp/tools/do.js.map +0 -1
  193. package/dist/mcp/tools.d.ts +0 -548
  194. package/dist/mcp/tools.d.ts.map +0 -1
  195. package/dist/mcp/tools.js +0 -3170
  196. package/dist/mcp/tools.js.map +0 -1
  197. package/dist/ops/blame.d.ts +0 -551
  198. package/dist/ops/blame.d.ts.map +0 -1
  199. package/dist/ops/blame.js +0 -1037
  200. package/dist/ops/blame.js.map +0 -1
  201. package/dist/ops/branch.d.ts +0 -766
  202. package/dist/ops/branch.d.ts.map +0 -1
  203. package/dist/ops/branch.js +0 -950
  204. package/dist/ops/branch.js.map +0 -1
  205. package/dist/ops/commit-traversal.d.ts +0 -349
  206. package/dist/ops/commit-traversal.d.ts.map +0 -1
  207. package/dist/ops/commit-traversal.js +0 -821
  208. package/dist/ops/commit-traversal.js.map +0 -1
  209. package/dist/ops/commit.d.ts +0 -555
  210. package/dist/ops/commit.d.ts.map +0 -1
  211. package/dist/ops/commit.js +0 -826
  212. package/dist/ops/commit.js.map +0 -1
  213. package/dist/ops/merge-base.d.ts +0 -397
  214. package/dist/ops/merge-base.d.ts.map +0 -1
  215. package/dist/ops/merge-base.js +0 -691
  216. package/dist/ops/merge-base.js.map +0 -1
  217. package/dist/ops/merge.d.ts +0 -855
  218. package/dist/ops/merge.d.ts.map +0 -1
  219. package/dist/ops/merge.js +0 -1551
  220. package/dist/ops/merge.js.map +0 -1
  221. package/dist/ops/tag.d.ts +0 -247
  222. package/dist/ops/tag.d.ts.map +0 -1
  223. package/dist/ops/tag.js +0 -649
  224. package/dist/ops/tag.js.map +0 -1
  225. package/dist/ops/tree-builder.d.ts +0 -178
  226. package/dist/ops/tree-builder.d.ts.map +0 -1
  227. package/dist/ops/tree-builder.js +0 -271
  228. package/dist/ops/tree-builder.js.map +0 -1
  229. package/dist/ops/tree-diff.d.ts +0 -291
  230. package/dist/ops/tree-diff.d.ts.map +0 -1
  231. package/dist/ops/tree-diff.js +0 -705
  232. package/dist/ops/tree-diff.js.map +0 -1
  233. package/dist/pack/delta.d.ts +0 -248
  234. package/dist/pack/delta.d.ts.map +0 -1
  235. package/dist/pack/delta.js +0 -740
  236. package/dist/pack/delta.js.map +0 -1
  237. package/dist/pack/format.d.ts +0 -446
  238. package/dist/pack/format.d.ts.map +0 -1
  239. package/dist/pack/format.js +0 -572
  240. package/dist/pack/format.js.map +0 -1
  241. package/dist/pack/full-generation.d.ts +0 -612
  242. package/dist/pack/full-generation.d.ts.map +0 -1
  243. package/dist/pack/full-generation.js +0 -1378
  244. package/dist/pack/full-generation.js.map +0 -1
  245. package/dist/pack/generation.d.ts +0 -441
  246. package/dist/pack/generation.d.ts.map +0 -1
  247. package/dist/pack/generation.js +0 -707
  248. package/dist/pack/generation.js.map +0 -1
  249. package/dist/pack/index.d.ts +0 -502
  250. package/dist/pack/index.d.ts.map +0 -1
  251. package/dist/pack/index.js +0 -833
  252. package/dist/pack/index.js.map +0 -1
  253. package/dist/refs/branch.d.ts +0 -683
  254. package/dist/refs/branch.d.ts.map +0 -1
  255. package/dist/refs/branch.js +0 -881
  256. package/dist/refs/branch.js.map +0 -1
  257. package/dist/refs/storage.d.ts +0 -833
  258. package/dist/refs/storage.d.ts.map +0 -1
  259. package/dist/refs/storage.js +0 -1023
  260. package/dist/refs/storage.js.map +0 -1
  261. package/dist/refs/tag.d.ts +0 -860
  262. package/dist/refs/tag.d.ts.map +0 -1
  263. package/dist/refs/tag.js +0 -996
  264. package/dist/refs/tag.js.map +0 -1
  265. package/dist/storage/backend.d.ts +0 -425
  266. package/dist/storage/backend.d.ts.map +0 -1
  267. package/dist/storage/backend.js +0 -41
  268. package/dist/storage/backend.js.map +0 -1
  269. package/dist/storage/fsx-adapter.d.ts +0 -204
  270. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  271. package/dist/storage/fsx-adapter.js +0 -518
  272. package/dist/storage/fsx-adapter.js.map +0 -1
  273. package/dist/storage/lru-cache.d.ts +0 -691
  274. package/dist/storage/lru-cache.d.ts.map +0 -1
  275. package/dist/storage/lru-cache.js +0 -813
  276. package/dist/storage/lru-cache.js.map +0 -1
  277. package/dist/storage/object-index.d.ts +0 -585
  278. package/dist/storage/object-index.d.ts.map +0 -1
  279. package/dist/storage/object-index.js +0 -532
  280. package/dist/storage/object-index.js.map +0 -1
  281. package/dist/storage/r2-pack.d.ts +0 -1257
  282. package/dist/storage/r2-pack.d.ts.map +0 -1
  283. package/dist/storage/r2-pack.js +0 -1773
  284. package/dist/storage/r2-pack.js.map +0 -1
  285. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  286. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  287. package/dist/tiered/cdc-pipeline.js +0 -1880
  288. package/dist/tiered/cdc-pipeline.js.map +0 -1
  289. package/dist/tiered/migration.d.ts +0 -1104
  290. package/dist/tiered/migration.d.ts.map +0 -1
  291. package/dist/tiered/migration.js +0 -1217
  292. package/dist/tiered/migration.js.map +0 -1
  293. package/dist/tiered/parquet-writer.d.ts +0 -1145
  294. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  295. package/dist/tiered/parquet-writer.js +0 -1183
  296. package/dist/tiered/parquet-writer.js.map +0 -1
  297. package/dist/tiered/read-path.d.ts +0 -835
  298. package/dist/tiered/read-path.d.ts.map +0 -1
  299. package/dist/tiered/read-path.js +0 -487
  300. package/dist/tiered/read-path.js.map +0 -1
  301. package/dist/types/capability.d.ts +0 -1385
  302. package/dist/types/capability.d.ts.map +0 -1
  303. package/dist/types/capability.js +0 -36
  304. package/dist/types/capability.js.map +0 -1
  305. package/dist/types/index.d.ts +0 -13
  306. package/dist/types/index.d.ts.map +0 -1
  307. package/dist/types/index.js +0 -18
  308. package/dist/types/index.js.map +0 -1
  309. package/dist/types/interfaces.d.ts +0 -673
  310. package/dist/types/interfaces.d.ts.map +0 -1
  311. package/dist/types/interfaces.js +0 -26
  312. package/dist/types/interfaces.js.map +0 -1
  313. package/dist/types/objects.d.ts +0 -692
  314. package/dist/types/objects.d.ts.map +0 -1
  315. package/dist/types/objects.js +0 -837
  316. package/dist/types/objects.js.map +0 -1
  317. package/dist/types/storage.d.ts +0 -603
  318. package/dist/types/storage.d.ts.map +0 -1
  319. package/dist/types/storage.js +0 -191
  320. package/dist/types/storage.js.map +0 -1
  321. package/dist/types/worker-loader.d.ts +0 -60
  322. package/dist/types/worker-loader.d.ts.map +0 -1
  323. package/dist/types/worker-loader.js +0 -62
  324. package/dist/types/worker-loader.js.map +0 -1
  325. package/dist/utils/hash.d.ts +0 -198
  326. package/dist/utils/hash.d.ts.map +0 -1
  327. package/dist/utils/hash.js +0 -272
  328. package/dist/utils/hash.js.map +0 -1
  329. package/dist/utils/sha1.d.ts +0 -325
  330. package/dist/utils/sha1.d.ts.map +0 -1
  331. package/dist/utils/sha1.js +0 -635
  332. package/dist/utils/sha1.js.map +0 -1
  333. package/dist/wire/capabilities.d.ts +0 -1044
  334. package/dist/wire/capabilities.d.ts.map +0 -1
  335. package/dist/wire/capabilities.js +0 -941
  336. package/dist/wire/capabilities.js.map +0 -1
  337. package/dist/wire/path-security.d.ts +0 -157
  338. package/dist/wire/path-security.d.ts.map +0 -1
  339. package/dist/wire/path-security.js +0 -307
  340. package/dist/wire/path-security.js.map +0 -1
  341. package/dist/wire/pkt-line.d.ts +0 -345
  342. package/dist/wire/pkt-line.d.ts.map +0 -1
  343. package/dist/wire/pkt-line.js +0 -381
  344. package/dist/wire/pkt-line.js.map +0 -1
  345. package/dist/wire/receive-pack.d.ts +0 -1059
  346. package/dist/wire/receive-pack.d.ts.map +0 -1
  347. package/dist/wire/receive-pack.js +0 -1414
  348. package/dist/wire/receive-pack.js.map +0 -1
  349. package/dist/wire/smart-http.d.ts +0 -799
  350. package/dist/wire/smart-http.d.ts.map +0 -1
  351. package/dist/wire/smart-http.js +0 -945
  352. package/dist/wire/smart-http.js.map +0 -1
  353. package/dist/wire/upload-pack.d.ts +0 -727
  354. package/dist/wire/upload-pack.d.ts.map +0 -1
  355. package/dist/wire/upload-pack.js +0 -1141
  356. package/dist/wire/upload-pack.js.map +0 -1
@@ -1,655 +0,0 @@
1
- /**
2
- * @fileoverview gitx stash command
3
- *
4
- * This module implements the `gitx stash` command which temporarily stores
5
- * modified working directory contents. Features include:
6
- * - stash push - save changes to a new stash
7
- * - stash list - list all stashes
8
- * - stash apply - apply a stash without removing it
9
- * - stash pop - apply and remove a stash
10
- * - stash drop - remove a stash
11
- * - stash show - show stash contents
12
- * - stash clear - remove all stashes
13
- *
14
- * @module cli/commands/stash
15
- */
16
- import * as fs from 'fs/promises';
17
- import * as path from 'path';
18
- // ============================================================================
19
- // Helper Functions
20
- // ============================================================================
21
- /**
22
- * Find the .git directory from a given path
23
- */
24
- async function findGitDir(cwd) {
25
- const gitDir = path.join(cwd, '.git');
26
- try {
27
- const stat = await fs.stat(gitDir);
28
- if (stat.isDirectory()) {
29
- return gitDir;
30
- }
31
- }
32
- catch {
33
- // Not found
34
- }
35
- throw new Error('not a git repository (or any of the parent directories): .git');
36
- }
37
- /**
38
- * Get the current branch name
39
- */
40
- async function getCurrentBranch(gitDir) {
41
- try {
42
- const headContent = await fs.readFile(path.join(gitDir, 'HEAD'), 'utf8');
43
- const match = headContent.match(/^ref: refs\/heads\/(.+)\n?$/);
44
- if (match) {
45
- return match[1];
46
- }
47
- return 'HEAD';
48
- }
49
- catch {
50
- return 'HEAD';
51
- }
52
- }
53
- /**
54
- * Parse a stash reference like 'stash@{0}' or just '0' into an index
55
- */
56
- function parseStashRef(ref) {
57
- if (ref.startsWith('stash@{') && ref.endsWith('}')) {
58
- const indexStr = ref.slice(7, -1);
59
- const index = parseInt(indexStr, 10);
60
- if (isNaN(index) || index < 0) {
61
- throw new Error(`invalid stash reference: ${ref}`);
62
- }
63
- return index;
64
- }
65
- // Try to parse as a number
66
- const index = parseInt(ref, 10);
67
- if (isNaN(index) || index < 0) {
68
- throw new Error(`invalid stash reference: ${ref}`);
69
- }
70
- return index;
71
- }
72
- /**
73
- * Format a stash index as a reference
74
- */
75
- function formatStashRef(index) {
76
- return `stash@{${index}}`;
77
- }
78
- /**
79
- * Read the stash reflog to get all stash entries
80
- */
81
- async function readStashReflog(gitDir) {
82
- const reflogPath = path.join(gitDir, 'logs', 'refs', 'stash');
83
- try {
84
- const content = await fs.readFile(reflogPath, 'utf8');
85
- const lines = content.trim().split('\n').filter(line => line.length > 0);
86
- return lines.map(line => {
87
- // Format: sha sha message (for reflog)
88
- // Or: sha sha WIP on branch: message
89
- const parts = line.split(' ');
90
- const sha = parts[0] || parts[1] || '';
91
- const message = parts.slice(2).join(' ');
92
- return { sha, message };
93
- });
94
- }
95
- catch {
96
- return [];
97
- }
98
- }
99
- /**
100
- * Write the stash reflog
101
- */
102
- async function writeStashReflog(gitDir, entries) {
103
- const reflogPath = path.join(gitDir, 'logs', 'refs', 'stash');
104
- await fs.mkdir(path.dirname(reflogPath), { recursive: true });
105
- if (entries.length === 0) {
106
- try {
107
- await fs.unlink(reflogPath);
108
- }
109
- catch {
110
- // Ignore if doesn't exist
111
- }
112
- return;
113
- }
114
- const content = entries.map(e => `${e.sha} ${e.sha} ${e.message}`).join('\n') + '\n';
115
- await fs.writeFile(reflogPath, content);
116
- }
117
- /**
118
- * Read mock stash data (for testing)
119
- */
120
- async function readMockStashData(gitDir, index) {
121
- const stashDataDir = path.join(gitDir, 'mock-stash-data', `stash@{${index}}`);
122
- try {
123
- const files = [];
124
- const entries = await fs.readdir(stashDataDir);
125
- let message = '';
126
- let sha = '';
127
- for (const entry of entries) {
128
- if (entry === 'message') {
129
- message = await fs.readFile(path.join(stashDataDir, entry), 'utf8');
130
- }
131
- else if (entry === 'sha') {
132
- sha = await fs.readFile(path.join(stashDataDir, entry), 'utf8');
133
- }
134
- else if (entry !== 'timestamp') {
135
- const content = await fs.readFile(path.join(stashDataDir, entry), 'utf8');
136
- // Convert underscore-separated path back to slashes
137
- files.push({ path: entry.replace(/_/g, '/'), content });
138
- }
139
- }
140
- return { files, message, sha: sha.trim() };
141
- }
142
- catch {
143
- return null;
144
- }
145
- }
146
- /**
147
- * Write mock stash data (for testing)
148
- */
149
- async function writeMockStashData(gitDir, index, data) {
150
- const stashDataDir = path.join(gitDir, 'mock-stash-data', `stash@{${index}}`);
151
- await fs.mkdir(stashDataDir, { recursive: true });
152
- await fs.writeFile(path.join(stashDataDir, 'message'), data.message);
153
- await fs.writeFile(path.join(stashDataDir, 'sha'), data.sha);
154
- await fs.writeFile(path.join(stashDataDir, 'timestamp'), Date.now().toString());
155
- for (const file of data.files) {
156
- await fs.writeFile(path.join(stashDataDir, file.path.replace(/\//g, '_')), file.content);
157
- }
158
- }
159
- /**
160
- * Delete mock stash data
161
- */
162
- async function deleteMockStashData(gitDir, index) {
163
- const stashDataDir = path.join(gitDir, 'mock-stash-data', `stash@{${index}}`);
164
- try {
165
- await fs.rm(stashDataDir, { recursive: true, force: true });
166
- }
167
- catch {
168
- // Ignore
169
- }
170
- }
171
- /**
172
- * Get modified/staged files in working directory
173
- */
174
- async function getWorkingDirChanges(cwd, gitDir) {
175
- const changes = [];
176
- // Read files in the working directory (excluding .git)
177
- async function scanDir(dir, relativePath = '') {
178
- const entries = await fs.readdir(dir, { withFileTypes: true });
179
- for (const entry of entries) {
180
- if (entry.name === '.git')
181
- continue;
182
- const fullPath = path.join(dir, entry.name);
183
- const relPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
184
- if (entry.isDirectory()) {
185
- await scanDir(fullPath, relPath);
186
- }
187
- else if (entry.isFile()) {
188
- const content = await fs.readFile(fullPath, 'utf8');
189
- // Check if staged
190
- const stagedPath = path.join(gitDir, 'mock-staged');
191
- let staged = false;
192
- try {
193
- const stagedFiles = await fs.readFile(stagedPath, 'utf8');
194
- staged = stagedFiles.split('\n').includes(relPath);
195
- }
196
- catch {
197
- // No staged files
198
- }
199
- changes.push({ path: relPath, content, staged });
200
- }
201
- }
202
- }
203
- await scanDir(cwd);
204
- return changes;
205
- }
206
- /**
207
- * Generate a random SHA for mock stashes
208
- */
209
- function generateSha() {
210
- const hex = '0123456789abcdef';
211
- let sha = '';
212
- for (let i = 0; i < 40; i++) {
213
- sha += hex[Math.floor(Math.random() * 16)];
214
- }
215
- return sha;
216
- }
217
- /**
218
- * Rename stash directories after drop/pop
219
- */
220
- async function renumberStashes(gitDir, droppedIndex, totalCount) {
221
- const mockDataDir = path.join(gitDir, 'mock-stash-data');
222
- // Shift all stashes after the dropped one
223
- for (let i = droppedIndex + 1; i < totalCount; i++) {
224
- const oldDir = path.join(mockDataDir, `stash@{${i}}`);
225
- const newDir = path.join(mockDataDir, `stash@{${i - 1}}`);
226
- try {
227
- await fs.rename(oldDir, newDir);
228
- }
229
- catch {
230
- // Directory might not exist
231
- }
232
- }
233
- }
234
- // ============================================================================
235
- // Exported Functions
236
- // ============================================================================
237
- /**
238
- * Get the count of stash entries.
239
- */
240
- export async function getStashCount(cwd) {
241
- const gitDir = await findGitDir(cwd);
242
- // Check for mock stash count file first (for testing)
243
- const mockCountPath = path.join(gitDir, 'mock-stash-count');
244
- try {
245
- const count = await fs.readFile(mockCountPath, 'utf8');
246
- return parseInt(count.trim(), 10);
247
- }
248
- catch {
249
- // No mock count, check reflog
250
- }
251
- // Check the stash reflog
252
- const entries = await readStashReflog(gitDir);
253
- return entries.length;
254
- }
255
- /**
256
- * Update the mock stash count
257
- */
258
- async function updateStashCount(gitDir, count) {
259
- const mockCountPath = path.join(gitDir, 'mock-stash-count');
260
- if (count > 0) {
261
- await fs.writeFile(mockCountPath, count.toString());
262
- }
263
- else {
264
- try {
265
- await fs.unlink(mockCountPath);
266
- }
267
- catch {
268
- // Ignore
269
- }
270
- }
271
- // Also update refs/stash
272
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
273
- if (count === 0) {
274
- try {
275
- await fs.unlink(stashRefPath);
276
- }
277
- catch {
278
- // Ignore
279
- }
280
- }
281
- }
282
- /**
283
- * List all stash entries.
284
- */
285
- export async function stashList(cwd) {
286
- const gitDir = await findGitDir(cwd);
287
- const branch = await getCurrentBranch(gitDir);
288
- const count = await getStashCount(cwd);
289
- if (count === 0) {
290
- return [];
291
- }
292
- const entries = [];
293
- // Read reflog for messages and SHAs
294
- const reflogEntries = await readStashReflog(gitDir);
295
- for (let i = 0; i < count; i++) {
296
- const reflogEntry = reflogEntries[i];
297
- const mockData = await readMockStashData(gitDir, i);
298
- const sha = mockData?.sha || reflogEntry?.sha || generateSha();
299
- const message = reflogEntry?.message || mockData?.message || `WIP on ${branch}`;
300
- entries.push({
301
- ref: formatStashRef(i),
302
- index: i,
303
- branch,
304
- message,
305
- sha,
306
- shortSha: sha.substring(0, 7),
307
- date: new Date(),
308
- files: mockData?.files.map(f => f.path) || []
309
- });
310
- }
311
- return entries;
312
- }
313
- /**
314
- * Push changes to a new stash entry.
315
- */
316
- export async function stashPush(cwd, options) {
317
- const gitDir = await findGitDir(cwd);
318
- const branch = await getCurrentBranch(gitDir);
319
- // Get working directory changes
320
- const changes = await getWorkingDirChanges(cwd, gitDir);
321
- if (changes.length === 0) {
322
- throw new Error('Nothing to stash - working tree clean');
323
- }
324
- // Get current stash count
325
- const currentCount = await getStashCount(cwd);
326
- // Shift existing stashes (they all move up by one)
327
- for (let i = currentCount - 1; i >= 0; i--) {
328
- const oldData = await readMockStashData(gitDir, i);
329
- if (oldData) {
330
- await writeMockStashData(gitDir, i + 1, oldData);
331
- }
332
- // Also rename the mock data directory
333
- const mockDataDir = path.join(gitDir, 'mock-stash-data');
334
- const oldDir = path.join(mockDataDir, `stash@{${i}}`);
335
- const newDir = path.join(mockDataDir, `stash@{${i + 1}}`);
336
- try {
337
- // Read all files and rewrite to new location
338
- const entries = await fs.readdir(oldDir);
339
- await fs.mkdir(newDir, { recursive: true });
340
- for (const entry of entries) {
341
- const content = await fs.readFile(path.join(oldDir, entry), 'utf8');
342
- await fs.writeFile(path.join(newDir, entry), content);
343
- }
344
- }
345
- catch {
346
- // Ignore
347
- }
348
- }
349
- // Create the new stash at index 0
350
- const sha = generateSha();
351
- const message = options?.message
352
- ? `On ${branch}: ${options.message}`
353
- : `WIP on ${branch}`;
354
- await writeMockStashData(gitDir, 0, {
355
- files: changes.map(c => ({ path: c.path, content: c.content })),
356
- message,
357
- sha
358
- });
359
- // Update reflog
360
- const reflogEntries = await readStashReflog(gitDir);
361
- reflogEntries.unshift({ sha, message });
362
- await writeStashReflog(gitDir, reflogEntries);
363
- // Update stash count
364
- const newCount = currentCount + 1;
365
- await updateStashCount(gitDir, newCount);
366
- // Write refs/stash
367
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
368
- await fs.mkdir(path.dirname(stashRefPath), { recursive: true });
369
- await fs.writeFile(stashRefPath, sha + '\n');
370
- return {
371
- success: true,
372
- stashRef: formatStashRef(0),
373
- message
374
- };
375
- }
376
- /**
377
- * Apply a stash entry without removing it.
378
- */
379
- export async function stashApply(cwd, options) {
380
- const gitDir = await findGitDir(cwd);
381
- const count = await getStashCount(cwd);
382
- if (count === 0) {
383
- throw new Error('No stash entries');
384
- }
385
- // Determine which stash to apply
386
- let index = 0;
387
- if (options?.ref) {
388
- index = parseStashRef(options.ref);
389
- }
390
- if (index >= count) {
391
- throw new Error(`stash@{${index}} does not exist`);
392
- }
393
- // Read stash data
394
- const stashData = await readMockStashData(gitDir, index);
395
- if (!stashData) {
396
- throw new Error(`stash@{${index}} does not exist`);
397
- }
398
- // Apply the stash files to working directory
399
- for (const file of stashData.files) {
400
- const filePath = path.join(cwd, file.path);
401
- await fs.mkdir(path.dirname(filePath), { recursive: true });
402
- await fs.writeFile(filePath, file.content);
403
- }
404
- return {
405
- success: true,
406
- appliedRef: formatStashRef(index)
407
- };
408
- }
409
- /**
410
- * Apply and remove a stash entry.
411
- */
412
- export async function stashPop(cwd, options) {
413
- const gitDir = await findGitDir(cwd);
414
- const count = await getStashCount(cwd);
415
- if (count === 0) {
416
- throw new Error('No stash entries');
417
- }
418
- // Determine which stash to pop
419
- let index = 0;
420
- if (options?.ref) {
421
- index = parseStashRef(options.ref);
422
- }
423
- if (index >= count) {
424
- throw new Error(`stash@{${index}} does not exist`);
425
- }
426
- // Apply the stash first
427
- const applyResult = await stashApply(cwd, { ref: formatStashRef(index), index: options?.index });
428
- if (!applyResult.success) {
429
- return applyResult;
430
- }
431
- // Remove the stash
432
- await deleteMockStashData(gitDir, index);
433
- // Renumber remaining stashes
434
- await renumberStashes(gitDir, index, count);
435
- // Update reflog
436
- const reflogEntries = await readStashReflog(gitDir);
437
- reflogEntries.splice(index, 1);
438
- await writeStashReflog(gitDir, reflogEntries);
439
- // Update count
440
- await updateStashCount(gitDir, count - 1);
441
- // Update refs/stash to point to new top stash
442
- if (count - 1 > 0) {
443
- const newTopData = await readMockStashData(gitDir, 0);
444
- if (newTopData) {
445
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
446
- await fs.writeFile(stashRefPath, newTopData.sha + '\n');
447
- }
448
- }
449
- return {
450
- success: true,
451
- appliedRef: formatStashRef(index)
452
- };
453
- }
454
- /**
455
- * Remove a specific stash entry.
456
- */
457
- export async function stashDrop(cwd, ref) {
458
- const gitDir = await findGitDir(cwd);
459
- const count = await getStashCount(cwd);
460
- if (count === 0) {
461
- throw new Error('No stash entries');
462
- }
463
- // Determine which stash to drop
464
- let index = 0;
465
- if (ref) {
466
- index = parseStashRef(ref);
467
- }
468
- if (index >= count) {
469
- throw new Error(`stash@{${index}} does not exist`);
470
- }
471
- // Get the SHA before deleting
472
- const stashData = await readMockStashData(gitDir, index);
473
- const sha = stashData?.sha || '';
474
- // Delete the stash
475
- await deleteMockStashData(gitDir, index);
476
- // Renumber remaining stashes
477
- await renumberStashes(gitDir, index, count);
478
- // Update reflog
479
- const reflogEntries = await readStashReflog(gitDir);
480
- reflogEntries.splice(index, 1);
481
- await writeStashReflog(gitDir, reflogEntries);
482
- // Update count
483
- await updateStashCount(gitDir, count - 1);
484
- // Update refs/stash
485
- if (count - 1 > 0) {
486
- const newTopData = await readMockStashData(gitDir, 0);
487
- if (newTopData) {
488
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
489
- await fs.writeFile(stashRefPath, newTopData.sha + '\n');
490
- }
491
- }
492
- return {
493
- success: true,
494
- droppedRef: formatStashRef(index),
495
- droppedSha: sha
496
- };
497
- }
498
- /**
499
- * Show the contents of a stash entry.
500
- */
501
- export async function stashShow(cwd, ref) {
502
- const gitDir = await findGitDir(cwd);
503
- const count = await getStashCount(cwd);
504
- if (count === 0) {
505
- throw new Error('No stash entries');
506
- }
507
- // Determine which stash to show
508
- let index = 0;
509
- if (ref) {
510
- index = parseStashRef(ref);
511
- }
512
- if (index >= count) {
513
- throw new Error(`stash@{${index}} does not exist`);
514
- }
515
- // Get stash data
516
- const stashData = await readMockStashData(gitDir, index);
517
- if (!stashData) {
518
- throw new Error(`stash@{${index}} does not exist`);
519
- }
520
- return {
521
- files: stashData.files.map(f => ({ path: f.path }))
522
- };
523
- }
524
- /**
525
- * Remove all stash entries.
526
- */
527
- export async function stashClear(cwd) {
528
- const gitDir = await findGitDir(cwd);
529
- const count = await getStashCount(cwd);
530
- // Delete all stash data
531
- for (let i = 0; i < count; i++) {
532
- await deleteMockStashData(gitDir, i);
533
- }
534
- // Clear reflog
535
- await writeStashReflog(gitDir, []);
536
- // Clear count
537
- await updateStashCount(gitDir, 0);
538
- // Delete refs/stash
539
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
540
- try {
541
- await fs.unlink(stashRefPath);
542
- }
543
- catch {
544
- // Ignore
545
- }
546
- }
547
- /**
548
- * Command handler for `gitx stash`.
549
- */
550
- export async function stashCommand(context) {
551
- const { cwd, args, options, stdout, stderr } = context;
552
- // Parse subcommand
553
- const subcommand = args[0] || 'push';
554
- // Handle --help
555
- if (options.help || options.h) {
556
- stdout(`gitx stash - Stash changes in a dirty working directory
557
-
558
- Usage: gitx stash [push [-m <message>]] [-u|--include-untracked]
559
- gitx stash list
560
- gitx stash show [<stash>]
561
- gitx stash apply [--index] [<stash>]
562
- gitx stash pop [--index] [<stash>]
563
- gitx stash drop [<stash>]
564
- gitx stash clear
565
-
566
- Subcommands:
567
- push Save local modifications to a new stash (default)
568
- list List all stashes
569
- show Show the changes recorded in a stash
570
- apply Apply a stash to the working directory
571
- pop Apply and remove a stash
572
- drop Remove a single stash
573
- clear Remove all stashes`);
574
- return;
575
- }
576
- try {
577
- switch (subcommand) {
578
- case 'push': {
579
- const message = options.m || options.message;
580
- const result = await stashPush(cwd, {
581
- message,
582
- includeUntracked: options.u || options.includeUntracked,
583
- keepIndex: options.keepIndex,
584
- all: options.all || options.a
585
- });
586
- stdout(`Saved working directory and index state ${result.message}`);
587
- break;
588
- }
589
- case 'list': {
590
- const entries = await stashList(cwd);
591
- for (const entry of entries) {
592
- stdout(`${entry.ref}: ${entry.message}`);
593
- }
594
- break;
595
- }
596
- case 'show': {
597
- const ref = args[1];
598
- const result = await stashShow(cwd, ref);
599
- for (const file of result.files) {
600
- stdout(` ${file.path}`);
601
- }
602
- break;
603
- }
604
- case 'apply': {
605
- const ref = args[1];
606
- const result = await stashApply(cwd, { ref, index: options.index });
607
- if (result.success) {
608
- stdout(`Applied ${result.appliedRef}`);
609
- }
610
- break;
611
- }
612
- case 'pop': {
613
- const ref = args[1];
614
- const result = await stashPop(cwd, { ref, index: options.index });
615
- if (result.success) {
616
- stdout(`Dropped ${result.appliedRef}`);
617
- }
618
- break;
619
- }
620
- case 'drop': {
621
- const ref = args[1];
622
- const result = await stashDrop(cwd, ref);
623
- stdout(`Dropped ${result.droppedRef} (${result.droppedSha.substring(0, 7)})`);
624
- break;
625
- }
626
- case 'clear': {
627
- await stashClear(cwd);
628
- break;
629
- }
630
- default: {
631
- // Check if it might be an option like -m
632
- if (subcommand.startsWith('-')) {
633
- // Treat as push with options
634
- const message = options.m || options.message;
635
- const result = await stashPush(cwd, {
636
- message,
637
- includeUntracked: options.u || options.includeUntracked,
638
- keepIndex: options.keepIndex,
639
- all: options.all || options.a
640
- });
641
- stdout(`Saved working directory and index state ${result.message}`);
642
- }
643
- else {
644
- throw new Error(`Unknown stash subcommand: ${subcommand}`);
645
- }
646
- }
647
- }
648
- }
649
- catch (error) {
650
- const err = error instanceof Error ? error : new Error(String(error));
651
- stderr(err.message);
652
- throw err;
653
- }
654
- }
655
- //# sourceMappingURL=stash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stash.js","sourceRoot":"","sources":["../../../src/cli/commands/stash.ts"],"names":[],"mappings":"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"}