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.
- package/README.md +319 -92
- package/dist/cli/commands/add.d.ts +176 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +979 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/blame.d.ts +1 -1
- package/dist/cli/commands/blame.d.ts.map +1 -1
- package/dist/cli/commands/blame.js +1 -1
- package/dist/cli/commands/blame.js.map +1 -1
- package/dist/cli/commands/branch.d.ts +1 -1
- package/dist/cli/commands/branch.d.ts.map +1 -1
- package/dist/cli/commands/branch.js +2 -2
- package/dist/cli/commands/branch.js.map +1 -1
- package/dist/cli/commands/checkout.d.ts +73 -0
- package/dist/cli/commands/checkout.d.ts.map +1 -0
- package/dist/cli/commands/checkout.js +725 -0
- package/dist/cli/commands/checkout.js.map +1 -0
- package/dist/cli/commands/commit.d.ts.map +1 -1
- package/dist/cli/commands/commit.js +22 -2
- package/dist/cli/commands/commit.js.map +1 -1
- package/dist/cli/commands/diff.d.ts +4 -4
- package/dist/cli/commands/diff.d.ts.map +1 -1
- package/dist/cli/commands/diff.js +9 -8
- package/dist/cli/commands/diff.js.map +1 -1
- package/dist/cli/commands/log.d.ts +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +1 -1
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/merge.d.ts +106 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +852 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/review.d.ts +1 -1
- package/dist/cli/commands/review.d.ts.map +1 -1
- package/dist/cli/commands/review.js +26 -1
- package/dist/cli/commands/review.js.map +1 -1
- package/dist/cli/commands/stash.d.ts +157 -0
- package/dist/cli/commands/stash.d.ts.map +1 -0
- package/dist/cli/commands/stash.js +655 -0
- package/dist/cli/commands/stash.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +1 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/web.d.ts.map +1 -1
- package/dist/cli/commands/web.js +3 -2
- package/dist/cli/commands/web.js.map +1 -1
- package/dist/cli/fs-adapter.d.ts.map +1 -1
- package/dist/cli/fs-adapter.js +3 -5
- package/dist/cli/fs-adapter.js.map +1 -1
- package/dist/cli/fsx-cli-adapter.d.ts +359 -0
- package/dist/cli/fsx-cli-adapter.d.ts.map +1 -0
- package/dist/cli/fsx-cli-adapter.js +619 -0
- package/dist/cli/fsx-cli-adapter.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +68 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui/components/DiffView.d.ts +7 -2
- package/dist/cli/ui/components/DiffView.d.ts.map +1 -1
- package/dist/cli/ui/components/DiffView.js.map +1 -1
- package/dist/cli/ui/components/ErrorDisplay.d.ts +6 -2
- package/dist/cli/ui/components/ErrorDisplay.d.ts.map +1 -1
- package/dist/cli/ui/components/ErrorDisplay.js.map +1 -1
- package/dist/cli/ui/components/FuzzySearch.d.ts +8 -2
- package/dist/cli/ui/components/FuzzySearch.d.ts.map +1 -1
- package/dist/cli/ui/components/FuzzySearch.js.map +1 -1
- package/dist/cli/ui/components/LoadingSpinner.d.ts +6 -2
- package/dist/cli/ui/components/LoadingSpinner.d.ts.map +1 -1
- package/dist/cli/ui/components/LoadingSpinner.js.map +1 -1
- package/dist/cli/ui/components/NavigationList.d.ts +7 -2
- package/dist/cli/ui/components/NavigationList.d.ts.map +1 -1
- package/dist/cli/ui/components/NavigationList.js.map +1 -1
- package/dist/cli/ui/components/ScrollableContent.d.ts +7 -2
- package/dist/cli/ui/components/ScrollableContent.d.ts.map +1 -1
- package/dist/cli/ui/components/ScrollableContent.js.map +1 -1
- package/dist/cli/ui/terminal-ui.d.ts +42 -9
- package/dist/cli/ui/terminal-ui.d.ts.map +1 -1
- package/dist/cli/ui/terminal-ui.js.map +1 -1
- package/dist/do/BashModule.d.ts +871 -0
- package/dist/do/BashModule.d.ts.map +1 -0
- package/dist/do/BashModule.js +1143 -0
- package/dist/do/BashModule.js.map +1 -0
- package/dist/do/FsModule.d.ts +612 -0
- package/dist/do/FsModule.d.ts.map +1 -0
- package/dist/do/FsModule.js +1120 -0
- package/dist/do/FsModule.js.map +1 -0
- package/dist/do/GitModule.d.ts +635 -0
- package/dist/do/GitModule.d.ts.map +1 -0
- package/dist/do/GitModule.js +784 -0
- package/dist/do/GitModule.js.map +1 -0
- package/dist/do/GitRepoDO.d.ts +281 -0
- package/dist/do/GitRepoDO.d.ts.map +1 -0
- package/dist/do/GitRepoDO.js +479 -0
- package/dist/do/GitRepoDO.js.map +1 -0
- package/dist/do/bash-ast.d.ts +246 -0
- package/dist/do/bash-ast.d.ts.map +1 -0
- package/dist/do/bash-ast.js +888 -0
- package/dist/do/bash-ast.js.map +1 -0
- package/dist/do/container-executor.d.ts +491 -0
- package/dist/do/container-executor.d.ts.map +1 -0
- package/dist/do/container-executor.js +731 -0
- package/dist/do/container-executor.js.map +1 -0
- package/dist/do/index.d.ts +53 -0
- package/dist/do/index.d.ts.map +1 -0
- package/dist/do/index.js +91 -0
- package/dist/do/index.js.map +1 -0
- package/dist/do/tiered-storage.d.ts +403 -0
- package/dist/do/tiered-storage.d.ts.map +1 -0
- package/dist/do/tiered-storage.js +689 -0
- package/dist/do/tiered-storage.js.map +1 -0
- package/dist/do/withBash.d.ts +231 -0
- package/dist/do/withBash.d.ts.map +1 -0
- package/dist/do/withBash.js +244 -0
- package/dist/do/withBash.js.map +1 -0
- package/dist/do/withFs.d.ts +237 -0
- package/dist/do/withFs.d.ts.map +1 -0
- package/dist/do/withFs.js +387 -0
- package/dist/do/withFs.js.map +1 -0
- package/dist/do/withGit.d.ts +180 -0
- package/dist/do/withGit.d.ts.map +1 -0
- package/dist/do/withGit.js +271 -0
- package/dist/do/withGit.js.map +1 -0
- package/dist/durable-object/object-store.d.ts +157 -15
- package/dist/durable-object/object-store.d.ts.map +1 -1
- package/dist/durable-object/object-store.js +435 -47
- package/dist/durable-object/object-store.js.map +1 -1
- package/dist/durable-object/schema.d.ts +12 -1
- package/dist/durable-object/schema.d.ts.map +1 -1
- package/dist/durable-object/schema.js +87 -2
- package/dist/durable-object/schema.js.map +1 -1
- package/dist/index.d.ts +84 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/sandbox/miniflare-evaluator.d.ts +22 -0
- package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +1 -0
- package/dist/mcp/sandbox/miniflare-evaluator.js +140 -0
- package/dist/mcp/sandbox/miniflare-evaluator.js.map +1 -0
- package/dist/mcp/sandbox/object-store-proxy.d.ts +32 -0
- package/dist/mcp/sandbox/object-store-proxy.d.ts.map +1 -0
- package/dist/mcp/sandbox/object-store-proxy.js +30 -0
- package/dist/mcp/sandbox/object-store-proxy.js.map +1 -0
- package/dist/mcp/sandbox/template.d.ts +17 -0
- package/dist/mcp/sandbox/template.d.ts.map +1 -0
- package/dist/mcp/sandbox/template.js +71 -0
- package/dist/mcp/sandbox/template.js.map +1 -0
- package/dist/mcp/sandbox.d.ts.map +1 -1
- package/dist/mcp/sandbox.js +16 -4
- package/dist/mcp/sandbox.js.map +1 -1
- package/dist/mcp/tools/do.d.ts +32 -0
- package/dist/mcp/tools/do.d.ts.map +1 -0
- package/dist/mcp/tools/do.js +117 -0
- package/dist/mcp/tools/do.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1258 -22
- package/dist/mcp/tools.js.map +1 -1
- package/dist/pack/delta.d.ts +8 -0
- package/dist/pack/delta.d.ts.map +1 -1
- package/dist/pack/delta.js +241 -30
- package/dist/pack/delta.js.map +1 -1
- package/dist/refs/branch.d.ts +38 -25
- package/dist/refs/branch.d.ts.map +1 -1
- package/dist/refs/branch.js +421 -94
- package/dist/refs/branch.js.map +1 -1
- package/dist/refs/storage.d.ts +77 -5
- package/dist/refs/storage.d.ts.map +1 -1
- package/dist/refs/storage.js +193 -43
- package/dist/refs/storage.js.map +1 -1
- package/dist/refs/tag.d.ts +44 -24
- package/dist/refs/tag.d.ts.map +1 -1
- package/dist/refs/tag.js +411 -70
- package/dist/refs/tag.js.map +1 -1
- package/dist/storage/backend.d.ts +425 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +41 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/fsx-adapter.d.ts +204 -0
- package/dist/storage/fsx-adapter.d.ts.map +1 -0
- package/dist/storage/fsx-adapter.js +518 -0
- package/dist/storage/fsx-adapter.js.map +1 -0
- package/dist/storage/r2-pack.d.ts.map +1 -1
- package/dist/storage/r2-pack.js +4 -1
- package/dist/storage/r2-pack.js.map +1 -1
- package/dist/tiered/cdc-pipeline.js +3 -3
- package/dist/tiered/cdc-pipeline.js.map +1 -1
- package/dist/tiered/migration.d.ts.map +1 -1
- package/dist/tiered/migration.js +4 -1
- package/dist/tiered/migration.js.map +1 -1
- package/dist/types/capability.d.ts +1385 -0
- package/dist/types/capability.d.ts.map +1 -0
- package/dist/types/capability.js +36 -0
- package/dist/types/capability.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/interfaces.d.ts +673 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/interfaces.js +26 -0
- package/dist/types/interfaces.js.map +1 -0
- package/dist/types/objects.d.ts +182 -0
- package/dist/types/objects.d.ts.map +1 -1
- package/dist/types/objects.js +249 -4
- package/dist/types/objects.js.map +1 -1
- package/dist/types/storage.d.ts +114 -0
- package/dist/types/storage.d.ts.map +1 -1
- package/dist/types/storage.js +160 -1
- package/dist/types/storage.js.map +1 -1
- package/dist/types/worker-loader.d.ts +60 -0
- package/dist/types/worker-loader.d.ts.map +1 -0
- package/dist/types/worker-loader.js +62 -0
- package/dist/types/worker-loader.js.map +1 -0
- package/dist/utils/hash.d.ts +126 -80
- package/dist/utils/hash.d.ts.map +1 -1
- package/dist/utils/hash.js +191 -100
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/sha1.d.ts +206 -0
- package/dist/utils/sha1.d.ts.map +1 -1
- package/dist/utils/sha1.js +405 -0
- package/dist/utils/sha1.js.map +1 -1
- package/dist/wire/path-security.d.ts +157 -0
- package/dist/wire/path-security.d.ts.map +1 -0
- package/dist/wire/path-security.js +307 -0
- package/dist/wire/path-security.js.map +1 -0
- package/dist/wire/receive-pack.d.ts +7 -0
- package/dist/wire/receive-pack.d.ts.map +1 -1
- package/dist/wire/receive-pack.js +29 -1
- package/dist/wire/receive-pack.js.map +1 -1
- package/dist/wire/upload-pack.d.ts.map +1 -1
- package/dist/wire/upload-pack.js +4 -1
- package/dist/wire/upload-pack.js.map +1 -1
- package/package.json +10 -1
package/dist/refs/tag.js.map
CHANGED
|
@@ -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"}
|