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/branch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/refs/branch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/refs/branch.ts"],"names":[],"mappings":"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"}
|
package/dist/refs/storage.d.ts
CHANGED
|
@@ -11,15 +11,22 @@
|
|
|
11
11
|
* - **Loose refs**: Individual ref files in .git/refs/
|
|
12
12
|
* - **Packed refs**: Consolidated refs in .git/packed-refs for efficiency
|
|
13
13
|
*
|
|
14
|
+
* **Backend Support**:
|
|
15
|
+
* - `RefStorageBackend`: Full-featured backend with locking and packed refs
|
|
16
|
+
* - `StorageBackend`: Simpler backend interface (optional, from storage/backend.ts)
|
|
17
|
+
*
|
|
14
18
|
* @module refs/storage
|
|
15
19
|
*
|
|
16
20
|
* @example
|
|
17
21
|
* ```typescript
|
|
18
22
|
* import { RefStorage, isValidRefName, isValidSha } from './refs/storage'
|
|
19
23
|
*
|
|
20
|
-
* // Create storage with
|
|
24
|
+
* // Create storage with RefStorageBackend (full features)
|
|
21
25
|
* const storage = new RefStorage(backend)
|
|
22
26
|
*
|
|
27
|
+
* // Or create with StorageBackend (simpler, optional)
|
|
28
|
+
* const storage = new RefStorage({ storageBackend: myStorageBackend })
|
|
29
|
+
*
|
|
23
30
|
* // Resolve HEAD to get current commit
|
|
24
31
|
* const resolved = await storage.resolveRef('HEAD')
|
|
25
32
|
* console.log(`Current commit: ${resolved.sha}`)
|
|
@@ -31,6 +38,7 @@
|
|
|
31
38
|
* const branches = await storage.listBranches()
|
|
32
39
|
* ```
|
|
33
40
|
*/
|
|
41
|
+
import type { StorageBackend } from '../storage/backend';
|
|
34
42
|
/**
|
|
35
43
|
* Type discriminator for reference types.
|
|
36
44
|
*
|
|
@@ -265,6 +273,26 @@ export interface RefStorageBackend {
|
|
|
265
273
|
*/
|
|
266
274
|
writePackedRefs(refs: Map<string, string>): Promise<void>;
|
|
267
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* Options for creating a RefStorage instance.
|
|
278
|
+
*
|
|
279
|
+
* @description
|
|
280
|
+
* Supports two modes of operation:
|
|
281
|
+
* 1. Pass a RefStorageBackend directly for full features (locking, packed refs)
|
|
282
|
+
* 2. Pass options object with storageBackend for simpler StorageBackend integration
|
|
283
|
+
*
|
|
284
|
+
* When using StorageBackend:
|
|
285
|
+
* - Locking operations become no-ops (always succeed)
|
|
286
|
+
* - Packed refs operations are not available
|
|
287
|
+
* - Basic ref operations delegate to StorageBackend methods
|
|
288
|
+
*/
|
|
289
|
+
export interface RefStorageOptions {
|
|
290
|
+
/**
|
|
291
|
+
* Optional StorageBackend for simpler ref operations.
|
|
292
|
+
* When provided, ref operations delegate to this backend.
|
|
293
|
+
*/
|
|
294
|
+
storageBackend?: StorageBackend;
|
|
295
|
+
}
|
|
268
296
|
/**
|
|
269
297
|
* Validate a ref name according to Git rules.
|
|
270
298
|
*
|
|
@@ -408,10 +436,18 @@ export declare function serializePackedRefs(refs: Map<string, string>): string;
|
|
|
408
436
|
* Provides a high-level API for managing Git references. Handles ref
|
|
409
437
|
* resolution, updates with locking, symbolic refs, and packed refs.
|
|
410
438
|
*
|
|
439
|
+
* Supports two backend modes:
|
|
440
|
+
* 1. RefStorageBackend - Full features including locking and packed refs
|
|
441
|
+
* 2. StorageBackend - Simpler interface with basic ref operations
|
|
442
|
+
*
|
|
411
443
|
* @example
|
|
412
444
|
* ```typescript
|
|
445
|
+
* // With RefStorageBackend (full features)
|
|
413
446
|
* const storage = new RefStorage(myBackend)
|
|
414
447
|
*
|
|
448
|
+
* // With StorageBackend (simpler)
|
|
449
|
+
* const storage = new RefStorage({ storageBackend: myStorageBackend })
|
|
450
|
+
*
|
|
415
451
|
* // Get current branch
|
|
416
452
|
* const head = await storage.getHead()
|
|
417
453
|
* if (head.type === 'symbolic') {
|
|
@@ -427,13 +463,43 @@ export declare function serializePackedRefs(refs: Map<string, string>): string;
|
|
|
427
463
|
* ```
|
|
428
464
|
*/
|
|
429
465
|
export declare class RefStorage {
|
|
430
|
-
private backend
|
|
466
|
+
private backend?;
|
|
467
|
+
private storageBackend?;
|
|
431
468
|
/**
|
|
432
469
|
* Create a new RefStorage instance.
|
|
433
470
|
*
|
|
434
|
-
* @param
|
|
471
|
+
* @param backendOrOptions - Either a RefStorageBackend directly, or options with storageBackend
|
|
472
|
+
*
|
|
473
|
+
* @example
|
|
474
|
+
* ```typescript
|
|
475
|
+
* // Direct backend
|
|
476
|
+
* const storage = new RefStorage(myRefStorageBackend)
|
|
477
|
+
*
|
|
478
|
+
* // Options with StorageBackend
|
|
479
|
+
* const storage = new RefStorage({ storageBackend: myStorageBackend })
|
|
480
|
+
* ```
|
|
435
481
|
*/
|
|
436
|
-
constructor(
|
|
482
|
+
constructor(backendOrOptions: RefStorageBackend | RefStorageOptions);
|
|
483
|
+
/**
|
|
484
|
+
* Internal helper to get a lock (or no-op lock for StorageBackend).
|
|
485
|
+
*
|
|
486
|
+
* @description
|
|
487
|
+
* When using StorageBackend, returns a no-op lock since StorageBackend
|
|
488
|
+
* doesn't support locking. Callers should still use try/finally to release.
|
|
489
|
+
*/
|
|
490
|
+
private getLock;
|
|
491
|
+
/**
|
|
492
|
+
* Internal helper to write a ref.
|
|
493
|
+
*/
|
|
494
|
+
private writeRef;
|
|
495
|
+
/**
|
|
496
|
+
* Internal helper to delete a ref.
|
|
497
|
+
*/
|
|
498
|
+
private removeRef;
|
|
499
|
+
/**
|
|
500
|
+
* Internal helper to list refs.
|
|
501
|
+
*/
|
|
502
|
+
private getAllRefs;
|
|
437
503
|
/**
|
|
438
504
|
* Get a ref by name.
|
|
439
505
|
*
|
|
@@ -443,7 +509,7 @@ export declare class RefStorage {
|
|
|
443
509
|
*
|
|
444
510
|
* @param name - Full ref name
|
|
445
511
|
* @returns The ref or null if not found
|
|
446
|
-
* @throws Error if backend
|
|
512
|
+
* @throws Error if no backend is configured
|
|
447
513
|
*
|
|
448
514
|
* @example
|
|
449
515
|
* ```typescript
|
|
@@ -515,6 +581,7 @@ export declare class RefStorage {
|
|
|
515
581
|
*
|
|
516
582
|
* @description
|
|
517
583
|
* Removes a ref from storage. HEAD cannot be deleted.
|
|
584
|
+
* Uses locking for atomic compare-and-swap operations when oldValue is specified.
|
|
518
585
|
*
|
|
519
586
|
* @param name - Full ref name to delete
|
|
520
587
|
* @param options - Delete options (oldValue for CAS)
|
|
@@ -614,6 +681,7 @@ export declare class RefStorage {
|
|
|
614
681
|
*
|
|
615
682
|
* @description
|
|
616
683
|
* Sets HEAD to point to a branch (symbolic) or commit (detached).
|
|
684
|
+
* Uses locking to ensure atomic updates to HEAD.
|
|
617
685
|
*
|
|
618
686
|
* @param target - Branch ref name (symbolic) or SHA (detached)
|
|
619
687
|
* @param symbolic - If true, create symbolic ref; if false, direct ref
|
|
@@ -652,6 +720,7 @@ export declare class RefStorage {
|
|
|
652
720
|
* @description
|
|
653
721
|
* Creates a ref that points to another ref name (not a SHA).
|
|
654
722
|
* Used primarily for HEAD pointing to a branch.
|
|
723
|
+
* Uses locking to ensure atomic creation.
|
|
655
724
|
*
|
|
656
725
|
* @param name - Name for the new symbolic ref
|
|
657
726
|
* @param target - Target ref name (not SHA)
|
|
@@ -697,6 +766,9 @@ export declare class RefStorage {
|
|
|
697
766
|
* This improves performance for repositories with many refs.
|
|
698
767
|
* HEAD and symbolic refs are not packed.
|
|
699
768
|
*
|
|
769
|
+
* Uses a transactional approach by acquiring locks on all refs being packed
|
|
770
|
+
* to ensure consistency during the packing operation.
|
|
771
|
+
*
|
|
700
772
|
* @example
|
|
701
773
|
* ```typescript
|
|
702
774
|
* // After creating many branches/tags
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/refs/storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/refs/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/refs/storage.js
CHANGED
|
@@ -11,15 +11,22 @@
|
|
|
11
11
|
* - **Loose refs**: Individual ref files in .git/refs/
|
|
12
12
|
* - **Packed refs**: Consolidated refs in .git/packed-refs for efficiency
|
|
13
13
|
*
|
|
14
|
+
* **Backend Support**:
|
|
15
|
+
* - `RefStorageBackend`: Full-featured backend with locking and packed refs
|
|
16
|
+
* - `StorageBackend`: Simpler backend interface (optional, from storage/backend.ts)
|
|
17
|
+
*
|
|
14
18
|
* @module refs/storage
|
|
15
19
|
*
|
|
16
20
|
* @example
|
|
17
21
|
* ```typescript
|
|
18
22
|
* import { RefStorage, isValidRefName, isValidSha } from './refs/storage'
|
|
19
23
|
*
|
|
20
|
-
* // Create storage with
|
|
24
|
+
* // Create storage with RefStorageBackend (full features)
|
|
21
25
|
* const storage = new RefStorage(backend)
|
|
22
26
|
*
|
|
27
|
+
* // Or create with StorageBackend (simpler, optional)
|
|
28
|
+
* const storage = new RefStorage({ storageBackend: myStorageBackend })
|
|
29
|
+
*
|
|
23
30
|
* // Resolve HEAD to get current commit
|
|
24
31
|
* const resolved = await storage.resolveRef('HEAD')
|
|
25
32
|
* console.log(`Current commit: ${resolved.sha}`)
|
|
@@ -328,10 +335,18 @@ export function serializePackedRefs(refs) {
|
|
|
328
335
|
* Provides a high-level API for managing Git references. Handles ref
|
|
329
336
|
* resolution, updates with locking, symbolic refs, and packed refs.
|
|
330
337
|
*
|
|
338
|
+
* Supports two backend modes:
|
|
339
|
+
* 1. RefStorageBackend - Full features including locking and packed refs
|
|
340
|
+
* 2. StorageBackend - Simpler interface with basic ref operations
|
|
341
|
+
*
|
|
331
342
|
* @example
|
|
332
343
|
* ```typescript
|
|
344
|
+
* // With RefStorageBackend (full features)
|
|
333
345
|
* const storage = new RefStorage(myBackend)
|
|
334
346
|
*
|
|
347
|
+
* // With StorageBackend (simpler)
|
|
348
|
+
* const storage = new RefStorage({ storageBackend: myStorageBackend })
|
|
349
|
+
*
|
|
335
350
|
* // Get current branch
|
|
336
351
|
* const head = await storage.getHead()
|
|
337
352
|
* if (head.type === 'symbolic') {
|
|
@@ -348,13 +363,90 @@ export function serializePackedRefs(refs) {
|
|
|
348
363
|
*/
|
|
349
364
|
export class RefStorage {
|
|
350
365
|
backend;
|
|
366
|
+
storageBackend;
|
|
351
367
|
/**
|
|
352
368
|
* Create a new RefStorage instance.
|
|
353
369
|
*
|
|
354
|
-
* @param
|
|
370
|
+
* @param backendOrOptions - Either a RefStorageBackend directly, or options with storageBackend
|
|
371
|
+
*
|
|
372
|
+
* @example
|
|
373
|
+
* ```typescript
|
|
374
|
+
* // Direct backend
|
|
375
|
+
* const storage = new RefStorage(myRefStorageBackend)
|
|
376
|
+
*
|
|
377
|
+
* // Options with StorageBackend
|
|
378
|
+
* const storage = new RefStorage({ storageBackend: myStorageBackend })
|
|
379
|
+
* ```
|
|
355
380
|
*/
|
|
356
|
-
constructor(
|
|
357
|
-
|
|
381
|
+
constructor(backendOrOptions) {
|
|
382
|
+
// Type guard: RefStorageOptions has storageBackend, RefStorageBackend has readRef
|
|
383
|
+
if ('storageBackend' in backendOrOptions && !('readRef' in backendOrOptions)) {
|
|
384
|
+
// Options object with StorageBackend
|
|
385
|
+
this.storageBackend = backendOrOptions.storageBackend;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
// Direct RefStorageBackend
|
|
389
|
+
this.backend = backendOrOptions;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Internal helper to get a lock (or no-op lock for StorageBackend).
|
|
394
|
+
*
|
|
395
|
+
* @description
|
|
396
|
+
* When using StorageBackend, returns a no-op lock since StorageBackend
|
|
397
|
+
* doesn't support locking. Callers should still use try/finally to release.
|
|
398
|
+
*/
|
|
399
|
+
async getLock(name, _timeout) {
|
|
400
|
+
if (this.storageBackend) {
|
|
401
|
+
// No-op lock for StorageBackend
|
|
402
|
+
return {
|
|
403
|
+
refName: name,
|
|
404
|
+
release: async () => { },
|
|
405
|
+
isHeld: () => true
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
if (!this.backend) {
|
|
409
|
+
throw new Error('No backend configured');
|
|
410
|
+
}
|
|
411
|
+
return this.backend.acquireLock(name, _timeout);
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Internal helper to write a ref.
|
|
415
|
+
*/
|
|
416
|
+
async writeRef(ref) {
|
|
417
|
+
if (this.storageBackend) {
|
|
418
|
+
await this.storageBackend.setRef(ref.name, ref);
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
if (!this.backend) {
|
|
422
|
+
throw new Error('No backend configured');
|
|
423
|
+
}
|
|
424
|
+
await this.backend.writeRef(ref);
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Internal helper to delete a ref.
|
|
428
|
+
*/
|
|
429
|
+
async removeRef(name) {
|
|
430
|
+
if (this.storageBackend) {
|
|
431
|
+
await this.storageBackend.deleteRef(name);
|
|
432
|
+
return true;
|
|
433
|
+
}
|
|
434
|
+
if (!this.backend) {
|
|
435
|
+
throw new Error('No backend configured');
|
|
436
|
+
}
|
|
437
|
+
return this.backend.deleteRef(name);
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Internal helper to list refs.
|
|
441
|
+
*/
|
|
442
|
+
async getAllRefs(pattern) {
|
|
443
|
+
if (this.storageBackend) {
|
|
444
|
+
return this.storageBackend.listRefs(pattern);
|
|
445
|
+
}
|
|
446
|
+
if (!this.backend) {
|
|
447
|
+
throw new Error('No backend configured');
|
|
448
|
+
}
|
|
449
|
+
return this.backend.listRefs(pattern);
|
|
358
450
|
}
|
|
359
451
|
/**
|
|
360
452
|
* Get a ref by name.
|
|
@@ -365,7 +457,7 @@ export class RefStorage {
|
|
|
365
457
|
*
|
|
366
458
|
* @param name - Full ref name
|
|
367
459
|
* @returns The ref or null if not found
|
|
368
|
-
* @throws Error if backend
|
|
460
|
+
* @throws Error if no backend is configured
|
|
369
461
|
*
|
|
370
462
|
* @example
|
|
371
463
|
* ```typescript
|
|
@@ -376,8 +468,13 @@ export class RefStorage {
|
|
|
376
468
|
* ```
|
|
377
469
|
*/
|
|
378
470
|
async getRef(name) {
|
|
379
|
-
if
|
|
380
|
-
|
|
471
|
+
// Use StorageBackend if available
|
|
472
|
+
if (this.storageBackend) {
|
|
473
|
+
return this.storageBackend.getRef(name);
|
|
474
|
+
}
|
|
475
|
+
// Fall back to RefStorageBackend
|
|
476
|
+
if (!this.backend?.readRef) {
|
|
477
|
+
throw new Error('No backend configured or backend does not support readRef');
|
|
381
478
|
}
|
|
382
479
|
return this.backend.readRef(name);
|
|
383
480
|
}
|
|
@@ -477,7 +574,7 @@ export class RefStorage {
|
|
|
477
574
|
}
|
|
478
575
|
// Use provided lock or acquire a new one
|
|
479
576
|
const externalLock = options?.lock;
|
|
480
|
-
const lock = externalLock ?? await this.
|
|
577
|
+
const lock = externalLock ?? await this.getLock(name);
|
|
481
578
|
try {
|
|
482
579
|
const existingRef = await this.getRef(name);
|
|
483
580
|
// Handle oldValue check (CAS - compare and swap)
|
|
@@ -504,7 +601,7 @@ export class RefStorage {
|
|
|
504
601
|
target,
|
|
505
602
|
type: 'direct'
|
|
506
603
|
};
|
|
507
|
-
await this.
|
|
604
|
+
await this.writeRef(ref);
|
|
508
605
|
return ref;
|
|
509
606
|
}
|
|
510
607
|
finally {
|
|
@@ -519,6 +616,7 @@ export class RefStorage {
|
|
|
519
616
|
*
|
|
520
617
|
* @description
|
|
521
618
|
* Removes a ref from storage. HEAD cannot be deleted.
|
|
619
|
+
* Uses locking for atomic compare-and-swap operations when oldValue is specified.
|
|
522
620
|
*
|
|
523
621
|
* @param name - Full ref name to delete
|
|
524
622
|
* @param options - Delete options (oldValue for CAS)
|
|
@@ -544,17 +642,24 @@ export class RefStorage {
|
|
|
544
642
|
if (!isValidRefName(name)) {
|
|
545
643
|
throw new RefError(`Invalid ref name: ${name}`, 'INVALID_NAME', name);
|
|
546
644
|
}
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
645
|
+
// Acquire lock for atomic operation
|
|
646
|
+
const lock = await this.getLock(name);
|
|
647
|
+
try {
|
|
648
|
+
const existingRef = await this.getRef(name);
|
|
649
|
+
// Check oldValue if provided (compare-and-swap pattern)
|
|
650
|
+
if (options?.oldValue !== undefined && options.oldValue !== null) {
|
|
651
|
+
if (!existingRef || existingRef.target !== options.oldValue) {
|
|
652
|
+
throw new RefError(`Ref value mismatch: ${name}`, 'CONFLICT', name);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
if (!existingRef) {
|
|
656
|
+
return false;
|
|
552
657
|
}
|
|
658
|
+
return this.removeRef(name);
|
|
553
659
|
}
|
|
554
|
-
|
|
555
|
-
|
|
660
|
+
finally {
|
|
661
|
+
await lock.release();
|
|
556
662
|
}
|
|
557
|
-
return this.backend.deleteRef(name);
|
|
558
663
|
}
|
|
559
664
|
/**
|
|
560
665
|
* List refs matching a pattern.
|
|
@@ -579,7 +684,7 @@ export class RefStorage {
|
|
|
579
684
|
* ```
|
|
580
685
|
*/
|
|
581
686
|
async listRefs(options) {
|
|
582
|
-
let refs = await this.
|
|
687
|
+
let refs = await this.getAllRefs(options?.pattern);
|
|
583
688
|
// Filter out HEAD unless explicitly requested
|
|
584
689
|
if (!options?.includeHead) {
|
|
585
690
|
refs = refs.filter(r => r.name !== 'HEAD');
|
|
@@ -670,6 +775,7 @@ export class RefStorage {
|
|
|
670
775
|
*
|
|
671
776
|
* @description
|
|
672
777
|
* Sets HEAD to point to a branch (symbolic) or commit (detached).
|
|
778
|
+
* Uses locking to ensure atomic updates to HEAD.
|
|
673
779
|
*
|
|
674
780
|
* @param target - Branch ref name (symbolic) or SHA (detached)
|
|
675
781
|
* @param symbolic - If true, create symbolic ref; if false, direct ref
|
|
@@ -685,13 +791,20 @@ export class RefStorage {
|
|
|
685
791
|
* ```
|
|
686
792
|
*/
|
|
687
793
|
async updateHead(target, symbolic) {
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
794
|
+
// Acquire lock for atomic HEAD update
|
|
795
|
+
const lock = await this.getLock('HEAD');
|
|
796
|
+
try {
|
|
797
|
+
const ref = {
|
|
798
|
+
name: 'HEAD',
|
|
799
|
+
target,
|
|
800
|
+
type: symbolic ? 'symbolic' : 'direct'
|
|
801
|
+
};
|
|
802
|
+
await this.writeRef(ref);
|
|
803
|
+
return ref;
|
|
804
|
+
}
|
|
805
|
+
finally {
|
|
806
|
+
await lock.release();
|
|
807
|
+
}
|
|
695
808
|
}
|
|
696
809
|
/**
|
|
697
810
|
* Check if HEAD is detached.
|
|
@@ -719,6 +832,7 @@ export class RefStorage {
|
|
|
719
832
|
* @description
|
|
720
833
|
* Creates a ref that points to another ref name (not a SHA).
|
|
721
834
|
* Used primarily for HEAD pointing to a branch.
|
|
835
|
+
* Uses locking to ensure atomic creation.
|
|
722
836
|
*
|
|
723
837
|
* @param name - Name for the new symbolic ref
|
|
724
838
|
* @param target - Target ref name (not SHA)
|
|
@@ -741,13 +855,20 @@ export class RefStorage {
|
|
|
741
855
|
if (name === target) {
|
|
742
856
|
throw new RefError(`Symbolic ref cannot point to itself: ${name}`, 'CIRCULAR_REF', name);
|
|
743
857
|
}
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
858
|
+
// Acquire lock for atomic symbolic ref creation
|
|
859
|
+
const lock = await this.getLock(name);
|
|
860
|
+
try {
|
|
861
|
+
const ref = {
|
|
862
|
+
name,
|
|
863
|
+
target,
|
|
864
|
+
type: 'symbolic'
|
|
865
|
+
};
|
|
866
|
+
await this.writeRef(ref);
|
|
867
|
+
return ref;
|
|
868
|
+
}
|
|
869
|
+
finally {
|
|
870
|
+
await lock.release();
|
|
871
|
+
}
|
|
751
872
|
}
|
|
752
873
|
/**
|
|
753
874
|
* Acquire a lock for updating a ref.
|
|
@@ -772,7 +893,7 @@ export class RefStorage {
|
|
|
772
893
|
* ```
|
|
773
894
|
*/
|
|
774
895
|
async acquireLock(name, timeout) {
|
|
775
|
-
return this.
|
|
896
|
+
return this.getLock(name, timeout);
|
|
776
897
|
}
|
|
777
898
|
/**
|
|
778
899
|
* Pack loose refs into packed-refs file.
|
|
@@ -782,6 +903,9 @@ export class RefStorage {
|
|
|
782
903
|
* This improves performance for repositories with many refs.
|
|
783
904
|
* HEAD and symbolic refs are not packed.
|
|
784
905
|
*
|
|
906
|
+
* Uses a transactional approach by acquiring locks on all refs being packed
|
|
907
|
+
* to ensure consistency during the packing operation.
|
|
908
|
+
*
|
|
785
909
|
* @example
|
|
786
910
|
* ```typescript
|
|
787
911
|
* // After creating many branches/tags
|
|
@@ -789,20 +913,46 @@ export class RefStorage {
|
|
|
789
913
|
* ```
|
|
790
914
|
*/
|
|
791
915
|
async packRefs() {
|
|
792
|
-
|
|
916
|
+
// StorageBackend doesn't support packed refs - no-op
|
|
917
|
+
if (this.storageBackend) {
|
|
918
|
+
return;
|
|
919
|
+
}
|
|
920
|
+
if (!this.backend) {
|
|
921
|
+
throw new Error('No backend configured');
|
|
922
|
+
}
|
|
923
|
+
const allRefs = await this.getAllRefs();
|
|
793
924
|
const packed = new Map();
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
925
|
+
const locks = [];
|
|
926
|
+
// Filter refs that can be packed (not HEAD, not symbolic)
|
|
927
|
+
const packableRefs = allRefs.filter(ref => {
|
|
928
|
+
if (ref.name === 'HEAD')
|
|
929
|
+
return false;
|
|
930
|
+
if (ref.type === 'symbolic')
|
|
931
|
+
return false;
|
|
932
|
+
return true;
|
|
933
|
+
});
|
|
934
|
+
// Acquire locks on all refs being packed for transactional consistency
|
|
935
|
+
try {
|
|
936
|
+
for (const ref of packableRefs) {
|
|
937
|
+
const lock = await this.getLock(ref.name);
|
|
938
|
+
locks.push(lock);
|
|
798
939
|
}
|
|
799
|
-
//
|
|
800
|
-
|
|
801
|
-
|
|
940
|
+
// Re-read refs while holding locks to ensure consistency
|
|
941
|
+
for (const ref of packableRefs) {
|
|
942
|
+
const currentRef = await this.getRef(ref.name);
|
|
943
|
+
if (currentRef && currentRef.type === 'direct') {
|
|
944
|
+
packed.set(currentRef.name, currentRef.target);
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
// Write packed refs atomically
|
|
948
|
+
await this.backend.writePackedRefs(packed);
|
|
949
|
+
}
|
|
950
|
+
finally {
|
|
951
|
+
// Release all locks
|
|
952
|
+
for (const lock of locks) {
|
|
953
|
+
await lock.release();
|
|
802
954
|
}
|
|
803
|
-
packed.set(ref.name, ref.target);
|
|
804
955
|
}
|
|
805
|
-
await this.backend.writePackedRefs(packed);
|
|
806
956
|
}
|
|
807
957
|
}
|
|
808
958
|
// ============================================================================
|