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 +0,0 @@
1
- {"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../src/storage/lru-cache.ts"],"names":[],"mappings":"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"}
@@ -1,585 +0,0 @@
1
- /**
2
- * @fileoverview Object Location Index Module
3
- *
4
- * This module tracks the storage location of Git objects across multiple storage tiers.
5
- * It provides a unified index for locating objects regardless of which tier contains
6
- * the actual data.
7
- *
8
- * ## Storage Tiers
9
- *
10
- * - **Hot**: SQLite (local Durable Object storage for frequently accessed objects)
11
- * - **R2**: Packed in R2 object storage (for larger objects or archives)
12
- * - **Parquet**: Columnar format for cold storage analytics
13
- *
14
- * ## Features
15
- *
16
- * - O(1) object location lookup by SHA
17
- * - Batch lookup for multiple objects
18
- * - Tier-based statistics and querying
19
- * - Object tracking during tier migrations
20
- *
21
- * @module storage/object-index
22
- *
23
- * @example
24
- * ```typescript
25
- * // Initialize the index with Durable Object storage
26
- * const index = new ObjectIndex(storage);
27
- *
28
- * // Record an object location
29
- * await index.recordLocation({
30
- * sha: 'abc123...def456',
31
- * tier: 'hot',
32
- * size: 1024,
33
- * type: 'blob'
34
- * });
35
- *
36
- * // Look up an object
37
- * const location = await index.lookupLocation('abc123...def456');
38
- * if (location) {
39
- * console.log(`Object is in ${location.tier} tier`);
40
- * }
41
- * ```
42
- */
43
- import { DurableObjectStorage } from '../durable-object/schema';
44
- /**
45
- * Storage tiers for object location.
46
- *
47
- * @description
48
- * Represents the different storage tiers in the tiered storage architecture:
49
- * - `hot`: Fast, local SQLite storage in Durable Objects for frequently accessed data
50
- * - `r2`: R2 object storage for packed objects and archives
51
- * - `parquet`: Columnar Parquet format for cold storage and analytics
52
- */
53
- export type StorageTier = 'hot' | 'r2' | 'parquet';
54
- /**
55
- * Represents the location of a git object in the tiered storage system.
56
- *
57
- * @description
58
- * Contains all metadata needed to locate and retrieve an object from any storage tier.
59
- * The `packId` and `offset` fields are only applicable for `r2` and `parquet` tiers
60
- * where objects are stored in packed format.
61
- *
62
- * @example
63
- * ```typescript
64
- * // Hot tier object (stored directly in SQLite)
65
- * const hotLocation: ObjectLocation = {
66
- * tier: 'hot',
67
- * packId: null,
68
- * offset: null,
69
- * size: 512,
70
- * sha: 'abc123...',
71
- * type: 'blob'
72
- * };
73
- *
74
- * // R2 tier object (stored in a packfile)
75
- * const r2Location: ObjectLocation = {
76
- * tier: 'r2',
77
- * packId: 'pack-xyz789',
78
- * offset: 1024,
79
- * size: 2048,
80
- * sha: 'def456...',
81
- * type: 'tree'
82
- * };
83
- * ```
84
- */
85
- export interface ObjectLocation {
86
- /** The storage tier where the object is located */
87
- tier: StorageTier;
88
- /**
89
- * Pack file ID (for R2 or Parquet tiers).
90
- * Null for hot tier where objects are stored individually.
91
- */
92
- packId: string | null;
93
- /**
94
- * Byte offset within the pack file (for R2 or Parquet tiers).
95
- * Null for hot tier.
96
- */
97
- offset: number | null;
98
- /** Size of the object in bytes */
99
- size: number;
100
- /** The object's 40-character SHA-1 hash */
101
- sha: string;
102
- /** Object type (blob, tree, commit, tag) */
103
- type?: string;
104
- /** Timestamp when location was last updated (milliseconds since epoch) */
105
- updatedAt?: number;
106
- }
107
- /**
108
- * Statistics about objects in each storage tier.
109
- *
110
- * @description
111
- * Provides aggregated statistics about the distribution of objects
112
- * across storage tiers, useful for monitoring and capacity planning.
113
- *
114
- * @example
115
- * ```typescript
116
- * const stats = await index.getStats();
117
- * console.log(`Total objects: ${stats.totalObjects}`);
118
- * console.log(`Hot tier: ${stats.hotCount} objects (${stats.hotSize} bytes)`);
119
- * console.log(`R2 tier: ${stats.r2Count} objects (${stats.r2Size} bytes)`);
120
- * ```
121
- */
122
- export interface ObjectIndexStats {
123
- /** Total number of indexed objects across all tiers */
124
- totalObjects: number;
125
- /** Number of objects in hot tier */
126
- hotCount: number;
127
- /** Number of objects in R2 tier */
128
- r2Count: number;
129
- /** Number of objects in Parquet tier */
130
- parquetCount: number;
131
- /** Total size of objects in hot tier (bytes) */
132
- hotSize: number;
133
- /** Total size of objects in R2 tier (bytes) */
134
- r2Size: number;
135
- /** Total size of objects in Parquet tier (bytes) */
136
- parquetSize: number;
137
- }
138
- /**
139
- * Result of a batch lookup operation.
140
- *
141
- * @description
142
- * Contains both found objects and a list of SHAs that were not found,
143
- * allowing callers to handle missing objects appropriately.
144
- *
145
- * @example
146
- * ```typescript
147
- * const result = await index.batchLookup(['sha1', 'sha2', 'sha3']);
148
- *
149
- * for (const [sha, location] of result.found) {
150
- * console.log(`${sha} is in ${location.tier}`);
151
- * }
152
- *
153
- * if (result.missing.length > 0) {
154
- * console.log(`Missing: ${result.missing.join(', ')}`);
155
- * }
156
- * ```
157
- */
158
- export interface BatchLookupResult {
159
- /** Map of SHA to location for found objects */
160
- found: Map<string, ObjectLocation>;
161
- /** Array of SHAs that were not found in the index */
162
- missing: string[];
163
- }
164
- /**
165
- * Options for recording an object location.
166
- *
167
- * @description
168
- * Specifies the parameters needed to record where an object is stored.
169
- * The `packId` and `offset` are required for r2/parquet tiers but optional
170
- * for hot tier.
171
- *
172
- * @example
173
- * ```typescript
174
- * // Record a hot tier object
175
- * await index.recordLocation({
176
- * sha: 'abc123...',
177
- * tier: 'hot',
178
- * size: 1024,
179
- * type: 'blob'
180
- * });
181
- *
182
- * // Record an R2 tier object
183
- * await index.recordLocation({
184
- * sha: 'def456...',
185
- * tier: 'r2',
186
- * packId: 'pack-001',
187
- * offset: 2048,
188
- * size: 512,
189
- * type: 'tree'
190
- * });
191
- * ```
192
- */
193
- export interface RecordLocationOptions {
194
- /** The object's 40-character SHA-1 hash */
195
- sha: string;
196
- /** Storage tier where the object is stored */
197
- tier: StorageTier;
198
- /** Pack ID (required for r2/parquet tiers, optional for hot) */
199
- packId?: string;
200
- /** Byte offset in pack file (for r2/parquet tiers) */
201
- offset?: number;
202
- /** Size of the object in bytes */
203
- size: number;
204
- /** Object type (blob, tree, commit, tag) */
205
- type?: string;
206
- }
207
- /**
208
- * Object Index class for managing object locations across storage tiers.
209
- *
210
- * @description
211
- * Provides a centralized index for tracking where Git objects are stored
212
- * in the tiered storage system. Uses SQLite (via Durable Object storage)
213
- * for persistent, consistent storage of location metadata.
214
- *
215
- * ## Key Features
216
- *
217
- * - **Fast Lookups**: O(1) lookup by SHA using indexed SQLite queries
218
- * - **Batch Operations**: Efficient bulk lookup for multiple objects
219
- * - **Tier Tracking**: Query objects by storage tier
220
- * - **Statistics**: Aggregate stats for monitoring and capacity planning
221
- *
222
- * ## Thread Safety
223
- *
224
- * The underlying Durable Object storage provides transactional guarantees,
225
- * ensuring consistency even with concurrent access.
226
- *
227
- * @example
228
- * ```typescript
229
- * const index = new ObjectIndex(storage);
230
- *
231
- * // Record locations
232
- * await index.recordLocation({
233
- * sha: 'abc123...',
234
- * tier: 'hot',
235
- * size: 1024,
236
- * type: 'blob'
237
- * });
238
- *
239
- * // Look up a single object
240
- * const location = await index.lookupLocation('abc123...');
241
- *
242
- * // Batch lookup
243
- * const result = await index.batchLookup(['sha1', 'sha2', 'sha3']);
244
- *
245
- * // Get objects by tier
246
- * const hotObjects = await index.getObjectsByTier('hot');
247
- *
248
- * // Get statistics
249
- * const stats = await index.getStats();
250
- * ```
251
- */
252
- export declare class ObjectIndex {
253
- private _storage;
254
- /**
255
- * Creates a new ObjectIndex instance.
256
- *
257
- * @description
258
- * Initializes the index with a Durable Object storage instance.
259
- * The storage should have the object_index table already created
260
- * by the schema migration.
261
- *
262
- * @param storage - Durable Object storage instance with SQL support
263
- *
264
- * @example
265
- * ```typescript
266
- * // In a Durable Object class
267
- * constructor(state: DurableObjectState) {
268
- * this.index = new ObjectIndex(state.storage);
269
- * }
270
- * ```
271
- */
272
- constructor(storage: DurableObjectStorage);
273
- /**
274
- * Records the location of an object in the index.
275
- *
276
- * @description
277
- * Inserts or updates the location record for an object. If the object
278
- * already exists in the index, its location is updated (upsert behavior).
279
- *
280
- * @param options - Location recording options including SHA, tier, size, etc.
281
- *
282
- * @throws {Error} If SHA format is invalid
283
- *
284
- * @example
285
- * ```typescript
286
- * // Record a new object in hot tier
287
- * await index.recordLocation({
288
- * sha: 'abc123def456789012345678901234567890abcd',
289
- * tier: 'hot',
290
- * size: 1024,
291
- * type: 'blob'
292
- * });
293
- *
294
- * // Record an object in R2 pack
295
- * await index.recordLocation({
296
- * sha: 'def456789012345678901234567890abcdef12',
297
- * tier: 'r2',
298
- * packId: 'pack-abc123',
299
- * offset: 4096,
300
- * size: 2048,
301
- * type: 'tree'
302
- * });
303
- * ```
304
- */
305
- recordLocation(options: RecordLocationOptions): Promise<void>;
306
- /**
307
- * Looks up the location of an object by SHA.
308
- *
309
- * @description
310
- * Retrieves the storage location for a single object. Returns null if
311
- * the object is not found in the index.
312
- *
313
- * @param sha - The 40-character SHA-1 hash of the object
314
- *
315
- * @returns The object location or null if not found
316
- *
317
- * @example
318
- * ```typescript
319
- * const location = await index.lookupLocation('abc123...');
320
- * if (location) {
321
- * console.log(`Object is in ${location.tier} tier`);
322
- * if (location.packId) {
323
- * console.log(`Pack: ${location.packId}, Offset: ${location.offset}`);
324
- * }
325
- * } else {
326
- * console.log('Object not found');
327
- * }
328
- * ```
329
- */
330
- lookupLocation(sha: string): Promise<ObjectLocation | null>;
331
- /**
332
- * Performs batch lookup of multiple objects.
333
- *
334
- * @description
335
- * Efficiently looks up locations for multiple objects in a single query.
336
- * Returns both found locations and a list of missing SHAs.
337
- *
338
- * This is more efficient than multiple single lookups when you need
339
- * to find several objects.
340
- *
341
- * @param shas - Array of SHA-1 hashes to look up
342
- *
343
- * @returns Result containing found locations and missing SHAs
344
- *
345
- * @example
346
- * ```typescript
347
- * const shas = ['sha1...', 'sha2...', 'sha3...'];
348
- * const result = await index.batchLookup(shas);
349
- *
350
- * console.log(`Found ${result.found.size} objects`);
351
- * console.log(`Missing ${result.missing.length} objects`);
352
- *
353
- * for (const [sha, location] of result.found) {
354
- * console.log(`${sha}: ${location.tier}`);
355
- * }
356
- * ```
357
- */
358
- batchLookup(shas: string[]): Promise<BatchLookupResult>;
359
- /**
360
- * Updates the location of an object (e.g., when moving between tiers).
361
- *
362
- * @description
363
- * Updates the tier, packId, and offset for an existing object.
364
- * Use this when migrating objects between storage tiers.
365
- *
366
- * Note: This only updates existing records. If the object doesn't exist,
367
- * no action is taken. Use `recordLocation` for upsert behavior.
368
- *
369
- * @param sha - The object's SHA-1 hash
370
- * @param newTier - The new storage tier
371
- * @param packId - Pack ID for r2/parquet tiers (optional)
372
- * @param offset - Byte offset in pack file (optional)
373
- *
374
- * @example
375
- * ```typescript
376
- * // Migrate object from hot to R2
377
- * await index.updateLocation(
378
- * 'abc123...',
379
- * 'r2',
380
- * 'pack-new123',
381
- * 1024
382
- * );
383
- *
384
- * // Migrate object to hot tier
385
- * await index.updateLocation('abc123...', 'hot');
386
- * ```
387
- */
388
- updateLocation(sha: string, newTier: StorageTier, packId?: string, offset?: number): Promise<void>;
389
- /**
390
- * Gets statistics about object distribution across tiers.
391
- *
392
- * @description
393
- * Returns aggregated statistics including object counts and total sizes
394
- * for each storage tier. Useful for monitoring storage usage and
395
- * capacity planning.
396
- *
397
- * @returns Statistics about objects in each tier
398
- *
399
- * @example
400
- * ```typescript
401
- * const stats = await index.getStats();
402
- *
403
- * console.log(`Total objects: ${stats.totalObjects}`);
404
- * console.log('Hot tier:');
405
- * console.log(` Count: ${stats.hotCount}`);
406
- * console.log(` Size: ${(stats.hotSize / 1024 / 1024).toFixed(2)} MB`);
407
- * console.log('R2 tier:');
408
- * console.log(` Count: ${stats.r2Count}`);
409
- * console.log(` Size: ${(stats.r2Size / 1024 / 1024).toFixed(2)} MB`);
410
- * ```
411
- */
412
- getStats(): Promise<ObjectIndexStats>;
413
- /**
414
- * Checks if an object exists in the index.
415
- *
416
- * @description
417
- * Returns true if the object is tracked in the index, regardless of
418
- * which tier it's stored in.
419
- *
420
- * @param sha - The object's SHA-1 hash
421
- *
422
- * @returns true if the object exists in the index
423
- *
424
- * @example
425
- * ```typescript
426
- * if (await index.exists('abc123...')) {
427
- * console.log('Object is tracked');
428
- * } else {
429
- * console.log('Object is not in the index');
430
- * }
431
- * ```
432
- */
433
- exists(sha: string): Promise<boolean>;
434
- /**
435
- * Deletes an object from the index.
436
- *
437
- * @description
438
- * Removes the location record for an object. This does NOT delete
439
- * the actual object data from storage - only the index entry.
440
- *
441
- * @param sha - The object's SHA-1 hash
442
- *
443
- * @returns true if the object was deleted, false if it didn't exist
444
- *
445
- * @example
446
- * ```typescript
447
- * if (await index.deleteLocation('abc123...')) {
448
- * console.log('Location record deleted');
449
- * } else {
450
- * console.log('Object was not in the index');
451
- * }
452
- * ```
453
- */
454
- deleteLocation(sha: string): Promise<boolean>;
455
- /**
456
- * Gets all objects in a specific tier.
457
- *
458
- * @description
459
- * Returns all objects currently stored in the specified tier.
460
- * Useful for migration planning or tier-specific operations.
461
- *
462
- * @param tier - The storage tier to query ('hot', 'r2', or 'parquet')
463
- *
464
- * @returns Array of object locations in the specified tier
465
- *
466
- * @example
467
- * ```typescript
468
- * // Get all hot tier objects
469
- * const hotObjects = await index.getObjectsByTier('hot');
470
- * console.log(`Hot tier has ${hotObjects.length} objects`);
471
- *
472
- * // Calculate total size
473
- * const totalSize = hotObjects.reduce((sum, obj) => sum + obj.size, 0);
474
- * console.log(`Total hot tier size: ${totalSize} bytes`);
475
- * ```
476
- */
477
- getObjectsByTier(tier: StorageTier): Promise<ObjectLocation[]>;
478
- /**
479
- * Gets all objects in a specific pack.
480
- *
481
- * @description
482
- * Returns all objects stored in a particular packfile, sorted by offset.
483
- * Useful for pack operations like repacking or verification.
484
- *
485
- * @param packId - The pack file identifier
486
- *
487
- * @returns Array of object locations in the pack, sorted by offset
488
- *
489
- * @example
490
- * ```typescript
491
- * const packObjects = await index.getObjectsByPack('pack-abc123');
492
- * console.log(`Pack contains ${packObjects.length} objects`);
493
- *
494
- * // Objects are sorted by offset for sequential reading
495
- * for (const obj of packObjects) {
496
- * console.log(` ${obj.sha}: offset=${obj.offset}, size=${obj.size}`);
497
- * }
498
- * ```
499
- */
500
- getObjectsByPack(packId: string): Promise<ObjectLocation[]>;
501
- }
502
- /**
503
- * Records the location of an object (standalone function).
504
- *
505
- * @description
506
- * Standalone function that creates a temporary ObjectIndex instance
507
- * to record an object's location. Useful when you don't need to
508
- * maintain an ObjectIndex instance.
509
- *
510
- * @param storage - Durable Object storage instance
511
- * @param options - Location recording options
512
- *
513
- * @throws {Error} If SHA format is invalid
514
- *
515
- * @example
516
- * ```typescript
517
- * await recordLocation(storage, {
518
- * sha: 'abc123...',
519
- * tier: 'hot',
520
- * size: 1024,
521
- * type: 'blob'
522
- * });
523
- * ```
524
- */
525
- export declare function recordLocation(storage: DurableObjectStorage, options: RecordLocationOptions): Promise<void>;
526
- /**
527
- * Looks up the location of an object by SHA (standalone function).
528
- *
529
- * @description
530
- * Standalone function for single object lookup. Creates a temporary
531
- * ObjectIndex instance internally.
532
- *
533
- * @param storage - Durable Object storage instance
534
- * @param sha - The object's SHA-1 hash
535
- *
536
- * @returns Object location or null if not found
537
- *
538
- * @example
539
- * ```typescript
540
- * const location = await lookupLocation(storage, 'abc123...');
541
- * if (location) {
542
- * console.log(`Found in ${location.tier}`);
543
- * }
544
- * ```
545
- */
546
- export declare function lookupLocation(storage: DurableObjectStorage, sha: string): Promise<ObjectLocation | null>;
547
- /**
548
- * Performs batch lookup of multiple objects (standalone function).
549
- *
550
- * @description
551
- * Standalone function for batch object lookup. More efficient than
552
- * multiple single lookups when querying several objects.
553
- *
554
- * @param storage - Durable Object storage instance
555
- * @param shas - Array of SHA-1 hashes to look up
556
- *
557
- * @returns Result containing found locations and missing SHAs
558
- *
559
- * @example
560
- * ```typescript
561
- * const result = await batchLookup(storage, ['sha1...', 'sha2...']);
562
- * console.log(`Found: ${result.found.size}, Missing: ${result.missing.length}`);
563
- * ```
564
- */
565
- export declare function batchLookup(storage: DurableObjectStorage, shas: string[]): Promise<BatchLookupResult>;
566
- /**
567
- * Gets statistics about object distribution (standalone function).
568
- *
569
- * @description
570
- * Standalone function for retrieving object distribution statistics
571
- * across storage tiers.
572
- *
573
- * @param storage - Durable Object storage instance
574
- *
575
- * @returns Statistics about objects in each tier
576
- *
577
- * @example
578
- * ```typescript
579
- * const stats = await getStats(storage);
580
- * console.log(`Total: ${stats.totalObjects} objects`);
581
- * console.log(`Hot: ${stats.hotCount}, R2: ${stats.r2Count}`);
582
- * ```
583
- */
584
- export declare function getStats(storage: DurableObjectStorage): Promise<ObjectIndexStats>;
585
- //# sourceMappingURL=object-index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-index.d.ts","sourceRoot":"","sources":["../../src/storage/object-index.ts"],"names":[],"mappings":"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"}