gitx.do 0.0.3 → 0.1.1

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 (231) hide show
  1. package/README.md +319 -92
  2. package/dist/cli/commands/add.d.ts +176 -0
  3. package/dist/cli/commands/add.d.ts.map +1 -0
  4. package/dist/cli/commands/add.js +979 -0
  5. package/dist/cli/commands/add.js.map +1 -0
  6. package/dist/cli/commands/blame.d.ts +1 -1
  7. package/dist/cli/commands/blame.d.ts.map +1 -1
  8. package/dist/cli/commands/blame.js +1 -1
  9. package/dist/cli/commands/blame.js.map +1 -1
  10. package/dist/cli/commands/branch.d.ts +1 -1
  11. package/dist/cli/commands/branch.d.ts.map +1 -1
  12. package/dist/cli/commands/branch.js +2 -2
  13. package/dist/cli/commands/branch.js.map +1 -1
  14. package/dist/cli/commands/checkout.d.ts +73 -0
  15. package/dist/cli/commands/checkout.d.ts.map +1 -0
  16. package/dist/cli/commands/checkout.js +725 -0
  17. package/dist/cli/commands/checkout.js.map +1 -0
  18. package/dist/cli/commands/commit.d.ts.map +1 -1
  19. package/dist/cli/commands/commit.js +22 -2
  20. package/dist/cli/commands/commit.js.map +1 -1
  21. package/dist/cli/commands/diff.d.ts +4 -4
  22. package/dist/cli/commands/diff.d.ts.map +1 -1
  23. package/dist/cli/commands/diff.js +9 -8
  24. package/dist/cli/commands/diff.js.map +1 -1
  25. package/dist/cli/commands/log.d.ts +1 -1
  26. package/dist/cli/commands/log.d.ts.map +1 -1
  27. package/dist/cli/commands/log.js +1 -1
  28. package/dist/cli/commands/log.js.map +1 -1
  29. package/dist/cli/commands/merge.d.ts +106 -0
  30. package/dist/cli/commands/merge.d.ts.map +1 -0
  31. package/dist/cli/commands/merge.js +852 -0
  32. package/dist/cli/commands/merge.js.map +1 -0
  33. package/dist/cli/commands/review.d.ts +1 -1
  34. package/dist/cli/commands/review.d.ts.map +1 -1
  35. package/dist/cli/commands/review.js +26 -1
  36. package/dist/cli/commands/review.js.map +1 -1
  37. package/dist/cli/commands/stash.d.ts +157 -0
  38. package/dist/cli/commands/stash.d.ts.map +1 -0
  39. package/dist/cli/commands/stash.js +655 -0
  40. package/dist/cli/commands/stash.js.map +1 -0
  41. package/dist/cli/commands/status.d.ts.map +1 -1
  42. package/dist/cli/commands/status.js +1 -2
  43. package/dist/cli/commands/status.js.map +1 -1
  44. package/dist/cli/commands/web.d.ts.map +1 -1
  45. package/dist/cli/commands/web.js +3 -2
  46. package/dist/cli/commands/web.js.map +1 -1
  47. package/dist/cli/fs-adapter.d.ts.map +1 -1
  48. package/dist/cli/fs-adapter.js +3 -5
  49. package/dist/cli/fs-adapter.js.map +1 -1
  50. package/dist/cli/fsx-cli-adapter.d.ts +359 -0
  51. package/dist/cli/fsx-cli-adapter.d.ts.map +1 -0
  52. package/dist/cli/fsx-cli-adapter.js +619 -0
  53. package/dist/cli/fsx-cli-adapter.js.map +1 -0
  54. package/dist/cli/index.d.ts.map +1 -1
  55. package/dist/cli/index.js +68 -12
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/ui/components/DiffView.d.ts +7 -2
  58. package/dist/cli/ui/components/DiffView.d.ts.map +1 -1
  59. package/dist/cli/ui/components/DiffView.js.map +1 -1
  60. package/dist/cli/ui/components/ErrorDisplay.d.ts +6 -2
  61. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +1 -1
  62. package/dist/cli/ui/components/ErrorDisplay.js.map +1 -1
  63. package/dist/cli/ui/components/FuzzySearch.d.ts +8 -2
  64. package/dist/cli/ui/components/FuzzySearch.d.ts.map +1 -1
  65. package/dist/cli/ui/components/FuzzySearch.js.map +1 -1
  66. package/dist/cli/ui/components/LoadingSpinner.d.ts +6 -2
  67. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +1 -1
  68. package/dist/cli/ui/components/LoadingSpinner.js.map +1 -1
  69. package/dist/cli/ui/components/NavigationList.d.ts +7 -2
  70. package/dist/cli/ui/components/NavigationList.d.ts.map +1 -1
  71. package/dist/cli/ui/components/NavigationList.js.map +1 -1
  72. package/dist/cli/ui/components/ScrollableContent.d.ts +7 -2
  73. package/dist/cli/ui/components/ScrollableContent.d.ts.map +1 -1
  74. package/dist/cli/ui/components/ScrollableContent.js.map +1 -1
  75. package/dist/cli/ui/terminal-ui.d.ts +42 -9
  76. package/dist/cli/ui/terminal-ui.d.ts.map +1 -1
  77. package/dist/cli/ui/terminal-ui.js.map +1 -1
  78. package/dist/do/BashModule.d.ts +871 -0
  79. package/dist/do/BashModule.d.ts.map +1 -0
  80. package/dist/do/BashModule.js +1143 -0
  81. package/dist/do/BashModule.js.map +1 -0
  82. package/dist/do/FsModule.d.ts +612 -0
  83. package/dist/do/FsModule.d.ts.map +1 -0
  84. package/dist/do/FsModule.js +1120 -0
  85. package/dist/do/FsModule.js.map +1 -0
  86. package/dist/do/GitModule.d.ts +635 -0
  87. package/dist/do/GitModule.d.ts.map +1 -0
  88. package/dist/do/GitModule.js +784 -0
  89. package/dist/do/GitModule.js.map +1 -0
  90. package/dist/do/GitRepoDO.d.ts +281 -0
  91. package/dist/do/GitRepoDO.d.ts.map +1 -0
  92. package/dist/do/GitRepoDO.js +479 -0
  93. package/dist/do/GitRepoDO.js.map +1 -0
  94. package/dist/do/bash-ast.d.ts +246 -0
  95. package/dist/do/bash-ast.d.ts.map +1 -0
  96. package/dist/do/bash-ast.js +888 -0
  97. package/dist/do/bash-ast.js.map +1 -0
  98. package/dist/do/container-executor.d.ts +491 -0
  99. package/dist/do/container-executor.d.ts.map +1 -0
  100. package/dist/do/container-executor.js +731 -0
  101. package/dist/do/container-executor.js.map +1 -0
  102. package/dist/do/index.d.ts +53 -0
  103. package/dist/do/index.d.ts.map +1 -0
  104. package/dist/do/index.js +91 -0
  105. package/dist/do/index.js.map +1 -0
  106. package/dist/do/tiered-storage.d.ts +403 -0
  107. package/dist/do/tiered-storage.d.ts.map +1 -0
  108. package/dist/do/tiered-storage.js +689 -0
  109. package/dist/do/tiered-storage.js.map +1 -0
  110. package/dist/do/withBash.d.ts +231 -0
  111. package/dist/do/withBash.d.ts.map +1 -0
  112. package/dist/do/withBash.js +244 -0
  113. package/dist/do/withBash.js.map +1 -0
  114. package/dist/do/withFs.d.ts +237 -0
  115. package/dist/do/withFs.d.ts.map +1 -0
  116. package/dist/do/withFs.js +387 -0
  117. package/dist/do/withFs.js.map +1 -0
  118. package/dist/do/withGit.d.ts +180 -0
  119. package/dist/do/withGit.d.ts.map +1 -0
  120. package/dist/do/withGit.js +271 -0
  121. package/dist/do/withGit.js.map +1 -0
  122. package/dist/durable-object/object-store.d.ts +157 -15
  123. package/dist/durable-object/object-store.d.ts.map +1 -1
  124. package/dist/durable-object/object-store.js +435 -47
  125. package/dist/durable-object/object-store.js.map +1 -1
  126. package/dist/durable-object/schema.d.ts +12 -1
  127. package/dist/durable-object/schema.d.ts.map +1 -1
  128. package/dist/durable-object/schema.js +87 -2
  129. package/dist/durable-object/schema.js.map +1 -1
  130. package/dist/index.d.ts +84 -1
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +34 -0
  133. package/dist/index.js.map +1 -1
  134. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +22 -0
  135. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +1 -0
  136. package/dist/mcp/sandbox/miniflare-evaluator.js +140 -0
  137. package/dist/mcp/sandbox/miniflare-evaluator.js.map +1 -0
  138. package/dist/mcp/sandbox/object-store-proxy.d.ts +32 -0
  139. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +1 -0
  140. package/dist/mcp/sandbox/object-store-proxy.js +30 -0
  141. package/dist/mcp/sandbox/object-store-proxy.js.map +1 -0
  142. package/dist/mcp/sandbox/template.d.ts +17 -0
  143. package/dist/mcp/sandbox/template.d.ts.map +1 -0
  144. package/dist/mcp/sandbox/template.js +71 -0
  145. package/dist/mcp/sandbox/template.js.map +1 -0
  146. package/dist/mcp/sandbox.d.ts.map +1 -1
  147. package/dist/mcp/sandbox.js +16 -4
  148. package/dist/mcp/sandbox.js.map +1 -1
  149. package/dist/mcp/tools/do.d.ts +32 -0
  150. package/dist/mcp/tools/do.d.ts.map +1 -0
  151. package/dist/mcp/tools/do.js +117 -0
  152. package/dist/mcp/tools/do.js.map +1 -0
  153. package/dist/mcp/tools.d.ts.map +1 -1
  154. package/dist/mcp/tools.js +1258 -22
  155. package/dist/mcp/tools.js.map +1 -1
  156. package/dist/pack/delta.d.ts +8 -0
  157. package/dist/pack/delta.d.ts.map +1 -1
  158. package/dist/pack/delta.js +241 -30
  159. package/dist/pack/delta.js.map +1 -1
  160. package/dist/refs/branch.d.ts +38 -25
  161. package/dist/refs/branch.d.ts.map +1 -1
  162. package/dist/refs/branch.js +421 -94
  163. package/dist/refs/branch.js.map +1 -1
  164. package/dist/refs/storage.d.ts +77 -5
  165. package/dist/refs/storage.d.ts.map +1 -1
  166. package/dist/refs/storage.js +193 -43
  167. package/dist/refs/storage.js.map +1 -1
  168. package/dist/refs/tag.d.ts +44 -24
  169. package/dist/refs/tag.d.ts.map +1 -1
  170. package/dist/refs/tag.js +411 -70
  171. package/dist/refs/tag.js.map +1 -1
  172. package/dist/storage/backend.d.ts +425 -0
  173. package/dist/storage/backend.d.ts.map +1 -0
  174. package/dist/storage/backend.js +41 -0
  175. package/dist/storage/backend.js.map +1 -0
  176. package/dist/storage/fsx-adapter.d.ts +204 -0
  177. package/dist/storage/fsx-adapter.d.ts.map +1 -0
  178. package/dist/storage/fsx-adapter.js +518 -0
  179. package/dist/storage/fsx-adapter.js.map +1 -0
  180. package/dist/storage/r2-pack.d.ts.map +1 -1
  181. package/dist/storage/r2-pack.js +4 -1
  182. package/dist/storage/r2-pack.js.map +1 -1
  183. package/dist/tiered/cdc-pipeline.js +3 -3
  184. package/dist/tiered/cdc-pipeline.js.map +1 -1
  185. package/dist/tiered/migration.d.ts.map +1 -1
  186. package/dist/tiered/migration.js +4 -1
  187. package/dist/tiered/migration.js.map +1 -1
  188. package/dist/types/capability.d.ts +1385 -0
  189. package/dist/types/capability.d.ts.map +1 -0
  190. package/dist/types/capability.js +36 -0
  191. package/dist/types/capability.js.map +1 -0
  192. package/dist/types/index.d.ts +13 -0
  193. package/dist/types/index.d.ts.map +1 -0
  194. package/dist/types/index.js +18 -0
  195. package/dist/types/index.js.map +1 -0
  196. package/dist/types/interfaces.d.ts +673 -0
  197. package/dist/types/interfaces.d.ts.map +1 -0
  198. package/dist/types/interfaces.js +26 -0
  199. package/dist/types/interfaces.js.map +1 -0
  200. package/dist/types/objects.d.ts +182 -0
  201. package/dist/types/objects.d.ts.map +1 -1
  202. package/dist/types/objects.js +249 -4
  203. package/dist/types/objects.js.map +1 -1
  204. package/dist/types/storage.d.ts +114 -0
  205. package/dist/types/storage.d.ts.map +1 -1
  206. package/dist/types/storage.js +160 -1
  207. package/dist/types/storage.js.map +1 -1
  208. package/dist/types/worker-loader.d.ts +60 -0
  209. package/dist/types/worker-loader.d.ts.map +1 -0
  210. package/dist/types/worker-loader.js +62 -0
  211. package/dist/types/worker-loader.js.map +1 -0
  212. package/dist/utils/hash.d.ts +126 -80
  213. package/dist/utils/hash.d.ts.map +1 -1
  214. package/dist/utils/hash.js +191 -100
  215. package/dist/utils/hash.js.map +1 -1
  216. package/dist/utils/sha1.d.ts +206 -0
  217. package/dist/utils/sha1.d.ts.map +1 -1
  218. package/dist/utils/sha1.js +405 -0
  219. package/dist/utils/sha1.js.map +1 -1
  220. package/dist/wire/path-security.d.ts +157 -0
  221. package/dist/wire/path-security.d.ts.map +1 -0
  222. package/dist/wire/path-security.js +307 -0
  223. package/dist/wire/path-security.js.map +1 -0
  224. package/dist/wire/receive-pack.d.ts +7 -0
  225. package/dist/wire/receive-pack.d.ts.map +1 -1
  226. package/dist/wire/receive-pack.js +29 -1
  227. package/dist/wire/receive-pack.js.map +1 -1
  228. package/dist/wire/upload-pack.d.ts.map +1 -1
  229. package/dist/wire/upload-pack.js +4 -1
  230. package/dist/wire/upload-pack.js.map +1 -1
  231. package/package.json +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,425 @@
1
+ /**
2
+ * @fileoverview Storage Backend Interface for Git Operations
3
+ *
4
+ * This module defines the `StorageBackend` interface that abstracts over different
5
+ * storage implementations. It provides a unified API for:
6
+ * - Content-addressable storage (CAS) for Git objects (blobs, trees, commits, tags)
7
+ * - Reference management (branches, tags, HEAD)
8
+ * - Raw file operations (for index, config, and other Git files)
9
+ * - Directory operations
10
+ *
11
+ * **Implementations**:
12
+ * - `FSStorageBackend` - Uses Node.js `fs/promises` for CLI usage
13
+ * - `DOStorageBackend` - Uses SQLite in Durable Objects for cloud deployment
14
+ *
15
+ * @module storage/backend
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { StorageBackend } from './storage/backend'
20
+ *
21
+ * async function createCommit(backend: StorageBackend) {
22
+ * // Store a blob
23
+ * const blobSha = await backend.putObject('blob', content)
24
+ *
25
+ * // Store a tree referencing the blob
26
+ * const treeSha = await backend.putObject('tree', treeContent)
27
+ *
28
+ * // Store the commit
29
+ * const commitSha = await backend.putObject('commit', commitContent)
30
+ *
31
+ * // Update the branch ref
32
+ * await backend.setRef('refs/heads/main', {
33
+ * name: 'refs/heads/main',
34
+ * target: commitSha,
35
+ * type: 'direct'
36
+ * })
37
+ * }
38
+ * ```
39
+ */
40
+ import type { ObjectType } from '../types/objects';
41
+ import type { Ref } from '../refs/storage';
42
+ export type { ObjectType };
43
+ /**
44
+ * The four Git object types.
45
+ *
46
+ * @description
47
+ * - `blob`: Raw file content
48
+ * - `tree`: Directory listing (contains references to blobs and other trees)
49
+ * - `commit`: A snapshot pointing to a tree with metadata (author, message, parents)
50
+ * - `tag`: An annotated tag pointing to another object with metadata
51
+ */
52
+ export type ObjectTypeValue = 'blob' | 'tree' | 'commit' | 'tag';
53
+ /**
54
+ * Result of retrieving a Git object from storage.
55
+ *
56
+ * @description
57
+ * Contains the object type and raw binary content (without Git header).
58
+ * The content is the object data only - the header is reconstructed when needed.
59
+ */
60
+ export interface StoredObjectResult {
61
+ /** The type of Git object */
62
+ type: ObjectType;
63
+ /** Raw binary content of the object (excluding Git header) */
64
+ content: Uint8Array;
65
+ }
66
+ /**
67
+ * Storage backend interface for Git operations.
68
+ *
69
+ * @description
70
+ * This interface abstracts over different storage implementations to provide
71
+ * a unified API for Git operations. Implementations must handle:
72
+ *
73
+ * 1. **Content-Addressable Storage (CAS)**: Objects are stored by their SHA-1 hash.
74
+ * The hash is computed from the Git object format: "{type} {size}\0{content}".
75
+ * Implementations should compute and verify hashes.
76
+ *
77
+ * 2. **Reference Storage**: Refs can be direct (pointing to a SHA) or symbolic
78
+ * (pointing to another ref). Implementations must handle both.
79
+ *
80
+ * 3. **Raw File Operations**: For Git files that aren't objects (index, config, etc.),
81
+ * standard file operations are needed.
82
+ *
83
+ * 4. **Directory Operations**: For managing the repository structure.
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * // Using the backend for basic operations
88
+ * const backend: StorageBackend = createBackend()
89
+ *
90
+ * // Store an object
91
+ * const content = new TextEncoder().encode('Hello, World!')
92
+ * const sha = await backend.putObject('blob', content)
93
+ *
94
+ * // Retrieve it
95
+ * const obj = await backend.getObject(sha)
96
+ * if (obj) {
97
+ * console.log(`Type: ${obj.type}, Size: ${obj.content.length}`)
98
+ * }
99
+ *
100
+ * // Work with refs
101
+ * const head = await backend.getRef('HEAD')
102
+ * if (head?.type === 'symbolic') {
103
+ * console.log(`On branch: ${head.target}`)
104
+ * }
105
+ * ```
106
+ */
107
+ export interface StorageBackend {
108
+ /**
109
+ * Store a Git object and return its SHA-1 hash.
110
+ *
111
+ * @description
112
+ * Computes the SHA-1 hash of the object in Git format (type + size + content),
113
+ * stores the object, and returns the hash. If an object with the same SHA
114
+ * already exists, this operation is idempotent (no error, returns same SHA).
115
+ *
116
+ * The SHA is computed from: "{type} {size}\0{content}"
117
+ *
118
+ * @param type - Object type: 'blob', 'tree', 'commit', or 'tag'
119
+ * @param content - Raw object content (without Git header)
120
+ * @returns 40-character lowercase hexadecimal SHA-1 hash
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // Store a blob
125
+ * const content = new TextEncoder().encode('file content')
126
+ * const sha = await backend.putObject('blob', content)
127
+ * console.log(`Stored as: ${sha}`)
128
+ *
129
+ * // Store a tree (content must be properly formatted)
130
+ * const treeSha = await backend.putObject('tree', treeContent)
131
+ * ```
132
+ */
133
+ putObject(type: ObjectType, content: Uint8Array): Promise<string>;
134
+ /**
135
+ * Retrieve a Git object by its SHA-1 hash.
136
+ *
137
+ * @description
138
+ * Fetches an object from storage and returns its type and content.
139
+ * Returns null if the object doesn't exist. The content returned is
140
+ * the raw object data WITHOUT the Git header.
141
+ *
142
+ * @param sha - 40-character SHA-1 hash (case-insensitive)
143
+ * @returns Object with type and content, or null if not found
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * const obj = await backend.getObject(sha)
148
+ * if (obj) {
149
+ * if (obj.type === 'blob') {
150
+ * const text = new TextDecoder().decode(obj.content)
151
+ * console.log(text)
152
+ * }
153
+ * }
154
+ * ```
155
+ */
156
+ getObject(sha: string): Promise<StoredObjectResult | null>;
157
+ /**
158
+ * Check if a Git object exists in storage.
159
+ *
160
+ * @description
161
+ * Efficiently checks for object existence without fetching the full content.
162
+ * This is useful for connectivity checks and optimizing transfers.
163
+ *
164
+ * @param sha - 40-character SHA-1 hash (case-insensitive)
165
+ * @returns True if the object exists, false otherwise
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * if (await backend.hasObject(sha)) {
170
+ * console.log('Object exists')
171
+ * } else {
172
+ * console.log('Need to fetch object')
173
+ * }
174
+ * ```
175
+ */
176
+ hasObject(sha: string): Promise<boolean>;
177
+ /**
178
+ * Delete a Git object from storage.
179
+ *
180
+ * @description
181
+ * Removes an object from storage. This operation should be used with caution
182
+ * as deleting objects that are still referenced by other objects (e.g., blobs
183
+ * referenced by trees) will corrupt the repository.
184
+ *
185
+ * Note: Most Git operations don't delete objects directly. Use garbage
186
+ * collection instead for safe cleanup of unreferenced objects.
187
+ *
188
+ * @param sha - 40-character SHA-1 hash (case-insensitive)
189
+ * @returns Resolves when deletion is complete (no error if object didn't exist)
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * // Only delete if you're sure nothing references this object
194
+ * await backend.deleteObject(sha)
195
+ * ```
196
+ */
197
+ deleteObject(sha: string): Promise<void>;
198
+ /**
199
+ * Get a reference by name.
200
+ *
201
+ * @description
202
+ * Retrieves a Git reference (branch, tag, HEAD, etc.) by its full name.
203
+ * Returns null if the reference doesn't exist. Does NOT follow symbolic refs -
204
+ * use the RefStorage class for ref resolution.
205
+ *
206
+ * @param name - Full ref name (e.g., 'HEAD', 'refs/heads/main', 'refs/tags/v1.0.0')
207
+ * @returns The reference or null if not found
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * const head = await backend.getRef('HEAD')
212
+ * if (head?.type === 'symbolic') {
213
+ * console.log(`On branch: ${head.target}`)
214
+ * } else if (head?.type === 'direct') {
215
+ * console.log(`Detached at: ${head.target}`)
216
+ * }
217
+ * ```
218
+ */
219
+ getRef(name: string): Promise<Ref | null>;
220
+ /**
221
+ * Create or update a reference.
222
+ *
223
+ * @description
224
+ * Sets a reference to point to a target (SHA for direct refs, ref name for symbolic).
225
+ * Creates the ref if it doesn't exist, updates it if it does.
226
+ *
227
+ * Note: This is a low-level operation. For atomic updates with compare-and-swap,
228
+ * use the RefStorage class instead.
229
+ *
230
+ * @param name - Full ref name (e.g., 'HEAD', 'refs/heads/main')
231
+ * @param ref - The reference object with name, target, and type
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * // Create/update a branch
236
+ * await backend.setRef('refs/heads/feature', {
237
+ * name: 'refs/heads/feature',
238
+ * target: commitSha,
239
+ * type: 'direct'
240
+ * })
241
+ *
242
+ * // Update HEAD to point to a branch
243
+ * await backend.setRef('HEAD', {
244
+ * name: 'HEAD',
245
+ * target: 'refs/heads/main',
246
+ * type: 'symbolic'
247
+ * })
248
+ * ```
249
+ */
250
+ setRef(name: string, ref: Ref): Promise<void>;
251
+ /**
252
+ * Delete a reference.
253
+ *
254
+ * @description
255
+ * Removes a reference from storage. Note that HEAD cannot be deleted.
256
+ * No error is thrown if the ref doesn't exist.
257
+ *
258
+ * @param name - Full ref name to delete
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * // Delete a branch
263
+ * await backend.deleteRef('refs/heads/old-feature')
264
+ *
265
+ * // Delete a tag
266
+ * await backend.deleteRef('refs/tags/old-release')
267
+ * ```
268
+ */
269
+ deleteRef(name: string): Promise<void>;
270
+ /**
271
+ * List references matching an optional prefix.
272
+ *
273
+ * @description
274
+ * Returns all references, optionally filtered by a prefix.
275
+ * Does not include symbolic refs in the results by default.
276
+ *
277
+ * @param prefix - Optional prefix to filter refs (e.g., 'refs/heads/', 'refs/tags/')
278
+ * @returns Array of matching references
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * // List all branches
283
+ * const branches = await backend.listRefs('refs/heads/')
284
+ *
285
+ * // List all tags
286
+ * const tags = await backend.listRefs('refs/tags/')
287
+ *
288
+ * // List all refs
289
+ * const all = await backend.listRefs()
290
+ * ```
291
+ */
292
+ listRefs(prefix?: string): Promise<Ref[]>;
293
+ /**
294
+ * Read a raw file from the repository.
295
+ *
296
+ * @description
297
+ * Reads a file that isn't a Git object (e.g., index, config, hooks).
298
+ * Paths are relative to the Git directory (.git/).
299
+ * Returns null if the file doesn't exist.
300
+ *
301
+ * @param path - Path relative to Git directory (e.g., 'index', 'config', 'hooks/pre-commit')
302
+ * @returns File contents as Uint8Array, or null if not found
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * // Read the index file
307
+ * const indexData = await backend.readFile('index')
308
+ *
309
+ * // Read config
310
+ * const config = await backend.readFile('config')
311
+ * if (config) {
312
+ * const text = new TextDecoder().decode(config)
313
+ * console.log(text)
314
+ * }
315
+ * ```
316
+ */
317
+ readFile(path: string): Promise<Uint8Array | null>;
318
+ /**
319
+ * Write a raw file to the repository.
320
+ *
321
+ * @description
322
+ * Writes a file that isn't a Git object (e.g., index, config).
323
+ * Paths are relative to the Git directory (.git/).
324
+ * Creates parent directories if they don't exist.
325
+ * Overwrites existing files.
326
+ *
327
+ * @param path - Path relative to Git directory
328
+ * @param content - File contents as Uint8Array
329
+ *
330
+ * @example
331
+ * ```typescript
332
+ * // Write config
333
+ * const config = new TextEncoder().encode('[core]\n\trepositoryformatversion = 0\n')
334
+ * await backend.writeFile('config', config)
335
+ *
336
+ * // Write index
337
+ * await backend.writeFile('index', indexData)
338
+ * ```
339
+ */
340
+ writeFile(path: string, content: Uint8Array): Promise<void>;
341
+ /**
342
+ * Delete a raw file from the repository.
343
+ *
344
+ * @description
345
+ * Removes a file from the Git directory. No error if file doesn't exist.
346
+ *
347
+ * @param path - Path relative to Git directory
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * // Remove index.lock after crash
352
+ * await backend.deleteFile('index.lock')
353
+ * ```
354
+ */
355
+ deleteFile(path: string): Promise<void>;
356
+ /**
357
+ * Check if a file or directory exists.
358
+ *
359
+ * @description
360
+ * Checks for the existence of a file or directory at the given path.
361
+ * Paths are relative to the Git directory.
362
+ *
363
+ * @param path - Path relative to Git directory
364
+ * @returns True if the path exists (file or directory), false otherwise
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * if (await backend.exists('index.lock')) {
369
+ * throw new Error('Another git process is running')
370
+ * }
371
+ *
372
+ * if (!await backend.exists('objects')) {
373
+ * console.log('Not a valid git repository')
374
+ * }
375
+ * ```
376
+ */
377
+ exists(path: string): Promise<boolean>;
378
+ /**
379
+ * List contents of a directory.
380
+ *
381
+ * @description
382
+ * Returns the names of files and directories within the specified directory.
383
+ * Paths are relative to the Git directory. Returns an empty array if the
384
+ * directory doesn't exist.
385
+ *
386
+ * @param path - Path relative to Git directory
387
+ * @returns Array of file and directory names (not full paths)
388
+ *
389
+ * @example
390
+ * ```typescript
391
+ * // List pack files
392
+ * const packDir = await backend.readdir('objects/pack')
393
+ * const packs = packDir.filter(f => f.endsWith('.pack'))
394
+ *
395
+ * // List loose object prefixes
396
+ * const objectDirs = await backend.readdir('objects')
397
+ * ```
398
+ */
399
+ readdir(path: string): Promise<string[]>;
400
+ /**
401
+ * Create a directory.
402
+ *
403
+ * @description
404
+ * Creates a directory at the specified path. If `recursive` is true,
405
+ * creates parent directories as needed. No error if directory already exists.
406
+ *
407
+ * @param path - Path relative to Git directory
408
+ * @param options - Options for directory creation
409
+ * @param options.recursive - If true, create parent directories as needed
410
+ *
411
+ * @example
412
+ * ```typescript
413
+ * // Create objects directory structure
414
+ * await backend.mkdir('objects/pack', { recursive: true })
415
+ *
416
+ * // Create refs structure
417
+ * await backend.mkdir('refs/heads', { recursive: true })
418
+ * await backend.mkdir('refs/tags', { recursive: true })
419
+ * ```
420
+ */
421
+ mkdir(path: string, options?: {
422
+ recursive?: boolean;
423
+ }): Promise<void>;
424
+ }
425
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/storage/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAG1C,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,IAAI,EAAE,UAAU,CAAA;IAChB,8DAA8D;IAC9D,OAAO,EAAE,UAAU,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,cAAc;IAK7B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEjE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IAE1D;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAMxC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7C;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAMzC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IAElD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3D;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAMtC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAExC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @fileoverview Storage Backend Interface for Git Operations
3
+ *
4
+ * This module defines the `StorageBackend` interface that abstracts over different
5
+ * storage implementations. It provides a unified API for:
6
+ * - Content-addressable storage (CAS) for Git objects (blobs, trees, commits, tags)
7
+ * - Reference management (branches, tags, HEAD)
8
+ * - Raw file operations (for index, config, and other Git files)
9
+ * - Directory operations
10
+ *
11
+ * **Implementations**:
12
+ * - `FSStorageBackend` - Uses Node.js `fs/promises` for CLI usage
13
+ * - `DOStorageBackend` - Uses SQLite in Durable Objects for cloud deployment
14
+ *
15
+ * @module storage/backend
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { StorageBackend } from './storage/backend'
20
+ *
21
+ * async function createCommit(backend: StorageBackend) {
22
+ * // Store a blob
23
+ * const blobSha = await backend.putObject('blob', content)
24
+ *
25
+ * // Store a tree referencing the blob
26
+ * const treeSha = await backend.putObject('tree', treeContent)
27
+ *
28
+ * // Store the commit
29
+ * const commitSha = await backend.putObject('commit', commitContent)
30
+ *
31
+ * // Update the branch ref
32
+ * await backend.setRef('refs/heads/main', {
33
+ * name: 'refs/heads/main',
34
+ * target: commitSha,
35
+ * type: 'direct'
36
+ * })
37
+ * }
38
+ * ```
39
+ */
40
+ export {};
41
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/storage/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG"}