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,572 +0,0 @@
1
- /**
2
- * @fileoverview Git Packfile Format Implementation
3
- *
4
- * This module implements the Git packfile format specification, providing utilities
5
- * for creating, parsing, and manipulating Git packfiles. Packfiles are Git's primary
6
- * mechanism for efficient storage and network transfer of repository objects.
7
- *
8
- * ## Packfile Structure
9
- *
10
- * A packfile consists of:
11
- * - **Header (12 bytes)**:
12
- * - 4 bytes: "PACK" signature
13
- * - 4 bytes: version number (network byte order, big-endian) - currently version 2
14
- * - 4 bytes: number of objects (network byte order)
15
- * - **Object entries (variable length)**:
16
- * - Each object has a variable-length header followed by zlib-compressed data
17
- * - **Trailer (20 bytes)**:
18
- * - SHA-1 checksum of all preceding content
19
- *
20
- * ## Object Header Encoding
21
- *
22
- * The object header uses a variable-length encoding:
23
- * - First byte: (MSB) continuation bit | 3-bit type | 4-bit size LSB
24
- * - Subsequent bytes: (MSB) continuation bit | 7-bit size continuation
25
- *
26
- * ## Supported Object Types
27
- *
28
- * | Type Code | Name | Description |
29
- * |-----------|-----------|------------------------------------------------|
30
- * | 1 | commit | A commit object |
31
- * | 2 | tree | A tree object (directory listing) |
32
- * | 3 | blob | A blob object (file content) |
33
- * | 4 | tag | An annotated tag object |
34
- * | 6 | ofs_delta | Delta referencing base by offset |
35
- * | 7 | ref_delta | Delta referencing base by SHA-1 |
36
- *
37
- * @module pack/format
38
- * @see {@link https://git-scm.com/docs/pack-format} Git Pack Format Documentation
39
- *
40
- * @example
41
- * // Creating a simple packfile
42
- * import { createPackfile, PackableObject } from './format';
43
- *
44
- * const objects: PackableObject[] = [
45
- * { type: 'blob', data: new TextEncoder().encode('Hello, World!') }
46
- * ];
47
- *
48
- * const packfile = createPackfile(objects);
49
- * // packfile is now a Uint8Array containing the complete packfile
50
- */
51
- import pako from 'pako';
52
- import { sha1 } from '../utils/sha1';
53
- /**
54
- * The 4-byte ASCII signature that identifies a valid packfile.
55
- * Every packfile must begin with these bytes: 0x50 0x41 0x43 0x4b ("PACK").
56
- *
57
- * @constant {string}
58
- * @example
59
- * // Validate packfile signature
60
- * const signature = String.fromCharCode(...packData.slice(0, 4));
61
- * if (signature !== PACK_SIGNATURE) {
62
- * throw new Error('Invalid packfile');
63
- * }
64
- */
65
- export const PACK_SIGNATURE = 'PACK';
66
- /**
67
- * The packfile version number supported by this implementation.
68
- * Currently, only version 2 is widely used and supported.
69
- *
70
- * @constant {number}
71
- */
72
- export const PACK_VERSION = 2;
73
- /**
74
- * Enumeration of Git pack object types.
75
- *
76
- * These values are used in the packfile header to identify the type of each object.
77
- * Note that types 0 and 5 are reserved/unused in the Git pack format.
78
- *
79
- * @description Represents the different types of objects that can be stored in a Git packfile.
80
- * Delta types (OFS_DELTA and REF_DELTA) are used for efficient storage by referencing
81
- * a base object and storing only the differences.
82
- *
83
- * @enum {number}
84
- *
85
- * @example
86
- * // Check if an object is a delta type
87
- * function isDelta(type: PackObjectType): boolean {
88
- * return type === PackObjectType.OBJ_OFS_DELTA || type === PackObjectType.OBJ_REF_DELTA;
89
- * }
90
- */
91
- export var PackObjectType;
92
- (function (PackObjectType) {
93
- /** A commit object containing tree reference, parent commits, author, and message */
94
- PackObjectType[PackObjectType["OBJ_COMMIT"] = 1] = "OBJ_COMMIT";
95
- /** A tree object representing a directory structure */
96
- PackObjectType[PackObjectType["OBJ_TREE"] = 2] = "OBJ_TREE";
97
- /** A blob object containing file content */
98
- PackObjectType[PackObjectType["OBJ_BLOB"] = 3] = "OBJ_BLOB";
99
- /** An annotated tag object */
100
- PackObjectType[PackObjectType["OBJ_TAG"] = 4] = "OBJ_TAG";
101
- /** An offset delta - references base object by byte offset within the packfile */
102
- PackObjectType[PackObjectType["OBJ_OFS_DELTA"] = 6] = "OBJ_OFS_DELTA";
103
- /** A reference delta - references base object by its SHA-1 hash */
104
- PackObjectType[PackObjectType["OBJ_REF_DELTA"] = 7] = "OBJ_REF_DELTA";
105
- })(PackObjectType || (PackObjectType = {}));
106
- /**
107
- * Converts a PackObjectType enum value to its string representation.
108
- *
109
- * @description Converts numeric pack object types to their human-readable string names.
110
- * This is useful for logging, debugging, and when interfacing with Git's loose object format.
111
- *
112
- * @param {PackObjectType} type - The numeric pack object type to convert
113
- * @returns {string} The string name of the object type ('commit', 'tree', 'blob', 'tag', 'ofs_delta', or 'ref_delta')
114
- * @throws {Error} If the type is not a valid PackObjectType value
115
- *
116
- * @example
117
- * // Convert type for display
118
- * const type = PackObjectType.OBJ_BLOB;
119
- * console.log(`Object type: ${packObjectTypeToString(type)}`); // "Object type: blob"
120
- *
121
- * @example
122
- * // Use in error messages
123
- * function validateObject(type: PackObjectType, data: Uint8Array) {
124
- * if (data.length === 0) {
125
- * throw new Error(`Empty ${packObjectTypeToString(type)} object`);
126
- * }
127
- * }
128
- */
129
- export function packObjectTypeToString(type) {
130
- switch (type) {
131
- case PackObjectType.OBJ_COMMIT:
132
- return 'commit';
133
- case PackObjectType.OBJ_TREE:
134
- return 'tree';
135
- case PackObjectType.OBJ_BLOB:
136
- return 'blob';
137
- case PackObjectType.OBJ_TAG:
138
- return 'tag';
139
- case PackObjectType.OBJ_OFS_DELTA:
140
- return 'ofs_delta';
141
- case PackObjectType.OBJ_REF_DELTA:
142
- return 'ref_delta';
143
- default:
144
- throw new Error(`Invalid pack object type: ${type}`);
145
- }
146
- }
147
- /**
148
- * Converts a string object type name to its PackObjectType enum value.
149
- *
150
- * @description Parses a string object type name and returns the corresponding enum value.
151
- * This is useful when reading Git loose objects or configuration files that use string type names.
152
- * Note: Delta types ('ofs_delta', 'ref_delta') are not supported as they are not valid
153
- * standalone object types.
154
- *
155
- * @param {string} str - The string type name ('commit', 'tree', 'blob', or 'tag')
156
- * @returns {PackObjectType} The corresponding PackObjectType enum value
157
- * @throws {Error} If the string does not match a valid base object type
158
- *
159
- * @example
160
- * // Parse type from Git object
161
- * const typeStr = 'blob';
162
- * const type = stringToPackObjectType(typeStr);
163
- * // type === PackObjectType.OBJ_BLOB
164
- *
165
- * @example
166
- * // Error handling for invalid types
167
- * try {
168
- * const type = stringToPackObjectType('invalid');
169
- * } catch (e) {
170
- * console.error('Unknown object type');
171
- * }
172
- */
173
- export function stringToPackObjectType(str) {
174
- switch (str) {
175
- case 'commit':
176
- return PackObjectType.OBJ_COMMIT;
177
- case 'tree':
178
- return PackObjectType.OBJ_TREE;
179
- case 'blob':
180
- return PackObjectType.OBJ_BLOB;
181
- case 'tag':
182
- return PackObjectType.OBJ_TAG;
183
- default:
184
- throw new Error(`Invalid object type string: ${str}`);
185
- }
186
- }
187
- /**
188
- * Encodes a non-negative integer using variable-length integer encoding.
189
- *
190
- * @description Uses Git's varint encoding scheme where each byte encodes 7 bits of the value,
191
- * with the MSB (most significant bit) serving as a continuation flag. If the MSB is set (1),
192
- * more bytes follow; if clear (0), this is the last byte.
193
- *
194
- * The encoding is little-endian: least significant bits come first. This allows efficient
195
- * encoding of small values (1 byte for values 0-127) while supporting arbitrarily large values.
196
- *
197
- * @param {number} value - A non-negative integer to encode (must be >= 0)
198
- * @returns {Uint8Array} The variable-length encoded bytes
199
- *
200
- * @example
201
- * // Encode small value (fits in 1 byte)
202
- * const encoded = encodeVarint(100);
203
- * // encoded = Uint8Array [100] (0x64, no continuation bit)
204
- *
205
- * @example
206
- * // Encode larger value (requires multiple bytes)
207
- * const encoded = encodeVarint(300);
208
- * // encoded = Uint8Array [172, 2] (0xAC with continuation, 0x02)
209
- * // 300 = 0b100101100 = (0101100 | continuation) + (10)
210
- */
211
- export function encodeVarint(value) {
212
- const bytes = [];
213
- // Encode value in 7-bit chunks with continuation bit
214
- do {
215
- let byte = value & 0x7f;
216
- value >>>= 7;
217
- if (value > 0) {
218
- byte |= 0x80; // Set continuation bit
219
- }
220
- bytes.push(byte);
221
- } while (value > 0);
222
- return new Uint8Array(bytes);
223
- }
224
- /**
225
- * Decodes a variable-length integer from a byte buffer.
226
- *
227
- * @description Reads and decodes a varint starting at the specified offset. The encoding uses
228
- * 7 bits per byte for the value, with the MSB as a continuation flag. This is the inverse
229
- * operation of {@link encodeVarint}.
230
- *
231
- * **Important Notes:**
232
- * - Maximum supported varint length is 10 bytes (enough for 64-bit values)
233
- * - Throws if data ends unexpectedly before varint is complete
234
- * - Throws if varint exceeds maximum length (likely corrupted data)
235
- *
236
- * @param {Uint8Array} data - The byte buffer containing the encoded varint
237
- * @param {number} offset - The starting position in the buffer
238
- * @returns {{ value: number; bytesRead: number }} Object containing the decoded value and number of bytes consumed
239
- * @throws {Error} If unexpected end of data or varint exceeds maximum length
240
- *
241
- * @example
242
- * // Decode a varint from a buffer
243
- * const buffer = new Uint8Array([172, 2, 0, 0]); // 300 encoded + extra bytes
244
- * const { value, bytesRead } = decodeVarint(buffer, 0);
245
- * // value === 300, bytesRead === 2
246
- *
247
- * @example
248
- * // Decode multiple varints
249
- * const buffer = new Uint8Array([100, 172, 2]);
250
- * let offset = 0;
251
- * const first = decodeVarint(buffer, offset); // value: 100, bytesRead: 1
252
- * offset += first.bytesRead;
253
- * const second = decodeVarint(buffer, offset); // value: 300, bytesRead: 2
254
- */
255
- export function decodeVarint(data, offset) {
256
- let value = 0;
257
- let shift = 0;
258
- let bytesRead = 0;
259
- // Maximum bytes for a 64-bit varint is 10 (ceil(64/7))
260
- // For JavaScript's safe integer range, 8 bytes is sufficient
261
- const MAX_VARINT_BYTES = 10;
262
- while (true) {
263
- if (offset + bytesRead >= data.length) {
264
- throw new Error(`Varint decoding failed: unexpected end of data at offset ${offset + bytesRead}`);
265
- }
266
- if (bytesRead >= MAX_VARINT_BYTES) {
267
- throw new Error(`Varint decoding failed: exceeded maximum length of ${MAX_VARINT_BYTES} bytes (possible infinite loop or corrupted data)`);
268
- }
269
- const byte = data[offset + bytesRead];
270
- bytesRead++;
271
- value |= (byte & 0x7f) << shift;
272
- if ((byte & 0x80) === 0) {
273
- break;
274
- }
275
- shift += 7;
276
- }
277
- return { value, bytesRead };
278
- }
279
- /**
280
- * Encodes object type and uncompressed size into a pack object header.
281
- *
282
- * @description Creates the variable-length header that precedes each object in a packfile.
283
- * The header encodes both the object type (3 bits) and the uncompressed data size.
284
- *
285
- * **Header Format:**
286
- * - First byte: `[continuation][type:3][size:4]` - MSB is continuation flag, then 3-bit type, then 4 LSBs of size
287
- * - Subsequent bytes: `[continuation][size:7]` - MSB is continuation flag, then 7 bits of size
288
- *
289
- * This encoding allows:
290
- * - Sizes 0-15: 1 byte
291
- * - Sizes 16-2047: 2 bytes
292
- * - Larger sizes: additional bytes as needed
293
- *
294
- * @param {PackObjectType} type - The object type (1-4 for base types, 6-7 for deltas)
295
- * @param {number} size - The uncompressed object size in bytes
296
- * @returns {Uint8Array} The encoded header bytes
297
- *
298
- * @example
299
- * // Encode a small blob object
300
- * const header = encodeTypeAndSize(PackObjectType.OBJ_BLOB, 10);
301
- * // header[0] = (3 << 4) | 10 = 0x3A (type=blob, size=10, no continuation)
302
- *
303
- * @example
304
- * // Encode a larger object (size requires continuation)
305
- * const header = encodeTypeAndSize(PackObjectType.OBJ_COMMIT, 256);
306
- * // First byte has type and low 4 bits of size, with continuation
307
- * // Second byte has remaining size bits
308
- */
309
- export function encodeTypeAndSize(type, size) {
310
- const bytes = [];
311
- // First byte: continuation bit (if needed) | type (3 bits) | size low 4 bits
312
- let firstByte = (type << 4) | (size & 0x0f);
313
- size >>>= 4;
314
- if (size > 0) {
315
- firstByte |= 0x80; // Set continuation bit
316
- }
317
- bytes.push(firstByte);
318
- // Subsequent bytes: continuation bit | 7 bits of size
319
- while (size > 0) {
320
- let byte = size & 0x7f;
321
- size >>>= 7;
322
- if (size > 0) {
323
- byte |= 0x80;
324
- }
325
- bytes.push(byte);
326
- }
327
- return new Uint8Array(bytes);
328
- }
329
- /**
330
- * Decodes object type and size from a pack object header.
331
- *
332
- * @description Parses the variable-length header at the beginning of each packed object.
333
- * This is the inverse operation of {@link encodeTypeAndSize}.
334
- *
335
- * **Decoding Process:**
336
- * 1. Read first byte to get type (bits 4-6) and initial size (bits 0-3)
337
- * 2. If MSB is set, read continuation bytes (7 bits each) for remaining size
338
- * 3. Return the decoded type, size, and total bytes consumed
339
- *
340
- * **Important Notes:**
341
- * - Maximum header length is 10 bytes (prevents infinite loops on corrupted data)
342
- * - Throws if offset is beyond data bounds
343
- * - Throws if data ends before header is complete
344
- *
345
- * @param {Uint8Array} data - The packfile data buffer
346
- * @param {number} offset - Starting offset of the object header
347
- * @returns {{ type: PackObjectType; size: number; bytesRead: number }} Decoded type, uncompressed size, and bytes consumed
348
- * @throws {Error} If offset is out of bounds or header data is truncated/corrupted
349
- *
350
- * @example
351
- * // Decode an object header
352
- * const packData = getPackfileData();
353
- * let offset = 12; // Skip 12-byte pack header
354
- *
355
- * const { type, size, bytesRead } = decodeTypeAndSize(packData, offset);
356
- * console.log(`Object type: ${packObjectTypeToString(type)}, size: ${size}`);
357
- * offset += bytesRead; // Move to start of compressed data
358
- */
359
- export function decodeTypeAndSize(data, offset) {
360
- // Maximum bytes for type+size header (first byte + continuation bytes)
361
- // Similar to varint, limit to prevent infinite loops
362
- const MAX_HEADER_BYTES = 10;
363
- if (offset >= data.length) {
364
- throw new Error(`decodeTypeAndSize failed: offset ${offset} is beyond data length ${data.length}`);
365
- }
366
- let bytesRead = 0;
367
- const firstByte = data[offset + bytesRead];
368
- bytesRead++;
369
- // Extract type (bits 4-6 of first byte)
370
- const type = ((firstByte >> 4) & 0x07);
371
- // Extract initial size (low 4 bits)
372
- let size = firstByte & 0x0f;
373
- let shift = 4;
374
- // Read continuation bytes if MSB is set
375
- if (firstByte & 0x80) {
376
- while (true) {
377
- if (offset + bytesRead >= data.length) {
378
- throw new Error(`decodeTypeAndSize failed: unexpected end of data at offset ${offset + bytesRead}`);
379
- }
380
- if (bytesRead >= MAX_HEADER_BYTES) {
381
- throw new Error(`decodeTypeAndSize failed: exceeded maximum header length of ${MAX_HEADER_BYTES} bytes (possible infinite loop or corrupted data)`);
382
- }
383
- const byte = data[offset + bytesRead];
384
- bytesRead++;
385
- size |= (byte & 0x7f) << shift;
386
- shift += 7;
387
- if ((byte & 0x80) === 0) {
388
- break;
389
- }
390
- }
391
- }
392
- return { type, size, bytesRead };
393
- }
394
- /**
395
- * Parses and validates the 12-byte header of a Git packfile.
396
- *
397
- * @description Reads the first 12 bytes of a packfile and validates:
398
- * 1. The signature is "PACK"
399
- * 2. The version is 2 (only supported version)
400
- * 3. Extracts the object count
401
- *
402
- * This should be called first when processing a packfile to understand
403
- * its structure and validate basic integrity.
404
- *
405
- * @param {Uint8Array} data - The packfile data (at least 12 bytes)
406
- * @returns {PackHeader} Parsed header with signature, version, and object count
407
- * @throws {Error} If data is too short (< 12 bytes)
408
- * @throws {Error} If signature is not "PACK"
409
- * @throws {Error} If version is not 2
410
- *
411
- * @example
412
- * // Parse a packfile header
413
- * const packData = await readPackfile('objects/pack/pack-abc123.pack');
414
- * const header = parsePackHeader(packData);
415
- *
416
- * console.log(`Packfile version: ${header.version}`);
417
- * console.log(`Contains ${header.objectCount} objects`);
418
- *
419
- * @example
420
- * // Error handling for invalid packfile
421
- * try {
422
- * const header = parsePackHeader(suspectData);
423
- * } catch (e) {
424
- * console.error('Not a valid packfile:', e.message);
425
- * }
426
- */
427
- export function parsePackHeader(data) {
428
- if (data.length < 12) {
429
- throw new Error('Packfile header too short: expected at least 12 bytes');
430
- }
431
- // Read signature (4 bytes)
432
- const signature = String.fromCharCode(data[0], data[1], data[2], data[3]);
433
- if (signature !== PACK_SIGNATURE) {
434
- throw new Error(`Invalid pack signature: expected "${PACK_SIGNATURE}", got "${signature}"`);
435
- }
436
- // Read version (4 bytes, big-endian)
437
- const version = (data[4] << 24) | (data[5] << 16) | (data[6] << 8) | data[7];
438
- if (version !== 2) {
439
- throw new Error(`Unsupported pack version: ${version} (only version 2 is supported)`);
440
- }
441
- // Read object count (4 bytes, big-endian)
442
- const objectCount = (data[8] << 24) | (data[9] << 16) | (data[10] << 8) | data[11];
443
- return { signature, version, objectCount };
444
- }
445
- /**
446
- * Parses an individual pack object header at the specified offset.
447
- *
448
- * @description Extracts the object type and uncompressed size from the header
449
- * at the given offset. This is useful for scanning/indexing packfiles.
450
- *
451
- * **Important Notes:**
452
- * - This only parses the header, not the compressed data following it
453
- * - For delta objects, you'll need additional parsing (base offset/SHA)
454
- * - Use `headerSize` to calculate where the compressed data begins
455
- *
456
- * @param {Uint8Array} data - The packfile data buffer
457
- * @param {number} offset - Byte offset where the object header starts
458
- * @returns {ParsedPackObject} Object containing type, size, and header size
459
- * @throws {Error} If offset is out of bounds or header is malformed
460
- *
461
- * @example
462
- * // Scan through all objects in a packfile
463
- * const header = parsePackHeader(packData);
464
- * let offset = 12; // After pack header
465
- *
466
- * for (let i = 0; i < header.objectCount; i++) {
467
- * const obj = parsePackObject(packData, offset);
468
- * console.log(`Object ${i}: type=${obj.type}, size=${obj.size}`);
469
- * // Skip header + compressed data (need to decompress to find boundary)
470
- * offset += obj.headerSize;
471
- * // ... decompress and skip compressed data ...
472
- * }
473
- */
474
- export function parsePackObject(data, offset) {
475
- const { type, size, bytesRead } = decodeTypeAndSize(data, offset);
476
- return {
477
- type,
478
- size,
479
- headerSize: bytesRead
480
- };
481
- }
482
- /**
483
- * Creates a complete packfile from an array of objects.
484
- *
485
- * @description Generates a valid Git packfile containing the specified objects.
486
- * The resulting packfile includes:
487
- * - 12-byte header (signature, version, object count)
488
- * - Each object (header + zlib-compressed data)
489
- * - 20-byte SHA-1 checksum trailer
490
- *
491
- * **Process:**
492
- * 1. Creates the pack header with signature "PACK", version 2, and object count
493
- * 2. For each object, encodes type/size header and compresses data with zlib
494
- * 3. Appends SHA-1 checksum of the entire pack content
495
- *
496
- * **Important Notes:**
497
- * - Objects are packed in the order provided (no reordering for delta compression)
498
- * - This function creates full objects only (no delta compression)
499
- * - For delta compression, use the generation module functions
500
- *
501
- * @param {PackableObject[]} objects - Array of objects to include in the packfile
502
- * @returns {Uint8Array} Complete packfile as binary data
503
- *
504
- * @example
505
- * // Create a packfile with a single blob
506
- * const objects: PackableObject[] = [
507
- * { type: 'blob', data: new TextEncoder().encode('Hello, World!') }
508
- * ];
509
- * const packfile = createPackfile(objects);
510
- * // Write packfile to disk or send over network
511
- *
512
- * @example
513
- * // Create a packfile with multiple objects
514
- * const objects: PackableObject[] = [
515
- * { type: 'blob', data: fileContent1 },
516
- * { type: 'blob', data: fileContent2 },
517
- * { type: 'tree', data: treeData },
518
- * { type: 'commit', data: commitData }
519
- * ];
520
- * const packfile = createPackfile(objects);
521
- */
522
- export function createPackfile(objects) {
523
- const parts = [];
524
- // Create header
525
- const header = new Uint8Array(12);
526
- // Signature: "PACK"
527
- header[0] = 0x50; // P
528
- header[1] = 0x41; // A
529
- header[2] = 0x43; // C
530
- header[3] = 0x4b; // K
531
- // Version: 2 (big-endian)
532
- header[4] = 0;
533
- header[5] = 0;
534
- header[6] = 0;
535
- header[7] = 2;
536
- // Object count (big-endian)
537
- const count = objects.length;
538
- header[8] = (count >> 24) & 0xff;
539
- header[9] = (count >> 16) & 0xff;
540
- header[10] = (count >> 8) & 0xff;
541
- header[11] = count & 0xff;
542
- parts.push(header);
543
- // Add each object
544
- for (const obj of objects) {
545
- const type = stringToPackObjectType(obj.type);
546
- const typeAndSize = encodeTypeAndSize(type, obj.data.length);
547
- // Compress the data using zlib deflate
548
- const compressed = pako.deflate(obj.data);
549
- parts.push(typeAndSize);
550
- parts.push(compressed);
551
- }
552
- // Calculate total length
553
- let totalLength = 0;
554
- for (const part of parts) {
555
- totalLength += part.length;
556
- }
557
- // Combine all parts
558
- const packData = new Uint8Array(totalLength);
559
- let offset = 0;
560
- for (const part of parts) {
561
- packData.set(part, offset);
562
- offset += part.length;
563
- }
564
- // Calculate SHA-1 checksum of the pack data
565
- const checksum = sha1(packData);
566
- // Create final packfile with checksum
567
- const finalPack = new Uint8Array(packData.length + 20);
568
- finalPack.set(packData, 0);
569
- finalPack.set(checksum, packData.length);
570
- return finalPack;
571
- }
572
- //# sourceMappingURL=format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/pack/format.ts"],"names":[],"mappings":"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"}