gitx.do 0.0.1 → 0.0.3
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/dist/cli/commands/blame.d.ts +259 -0
- package/dist/cli/commands/blame.d.ts.map +1 -0
- package/dist/cli/commands/blame.js +609 -0
- package/dist/cli/commands/blame.js.map +1 -0
- package/dist/cli/commands/branch.d.ts +249 -0
- package/dist/cli/commands/branch.d.ts.map +1 -0
- package/dist/cli/commands/branch.js +693 -0
- package/dist/cli/commands/branch.js.map +1 -0
- package/dist/cli/commands/commit.d.ts +182 -0
- package/dist/cli/commands/commit.d.ts.map +1 -0
- package/dist/cli/commands/commit.js +437 -0
- package/dist/cli/commands/commit.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +464 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +958 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/log.d.ts +239 -0
- package/dist/cli/commands/log.d.ts.map +1 -0
- package/dist/cli/commands/log.js +535 -0
- package/dist/cli/commands/log.js.map +1 -0
- package/dist/cli/commands/review.d.ts +457 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +533 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/status.d.ts +269 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +493 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/web.d.ts +199 -0
- package/dist/cli/commands/web.d.ts.map +1 -0
- package/dist/cli/commands/web.js +696 -0
- package/dist/cli/commands/web.js.map +1 -0
- package/dist/cli/fs-adapter.d.ts +656 -0
- package/dist/cli/fs-adapter.d.ts.map +1 -0
- package/dist/cli/fs-adapter.js +1179 -0
- package/dist/cli/fs-adapter.js.map +1 -0
- package/dist/cli/index.d.ts +387 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +523 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/components/DiffView.d.ts +7 -0
- package/dist/cli/ui/components/DiffView.d.ts.map +1 -0
- package/dist/cli/ui/components/DiffView.js +11 -0
- package/dist/cli/ui/components/DiffView.js.map +1 -0
- package/dist/cli/ui/components/ErrorDisplay.d.ts +6 -0
- package/dist/cli/ui/components/ErrorDisplay.d.ts.map +1 -0
- package/dist/cli/ui/components/ErrorDisplay.js +11 -0
- package/dist/cli/ui/components/ErrorDisplay.js.map +1 -0
- package/dist/cli/ui/components/FuzzySearch.d.ts +9 -0
- package/dist/cli/ui/components/FuzzySearch.d.ts.map +1 -0
- package/dist/cli/ui/components/FuzzySearch.js +12 -0
- package/dist/cli/ui/components/FuzzySearch.js.map +1 -0
- package/dist/cli/ui/components/LoadingSpinner.d.ts +6 -0
- package/dist/cli/ui/components/LoadingSpinner.d.ts.map +1 -0
- package/dist/cli/ui/components/LoadingSpinner.js +10 -0
- package/dist/cli/ui/components/LoadingSpinner.js.map +1 -0
- package/dist/cli/ui/components/NavigationList.d.ts +9 -0
- package/dist/cli/ui/components/NavigationList.d.ts.map +1 -0
- package/dist/cli/ui/components/NavigationList.js +11 -0
- package/dist/cli/ui/components/NavigationList.js.map +1 -0
- package/dist/cli/ui/components/ScrollableContent.d.ts +8 -0
- package/dist/cli/ui/components/ScrollableContent.d.ts.map +1 -0
- package/dist/cli/ui/components/ScrollableContent.js +11 -0
- package/dist/cli/ui/components/ScrollableContent.js.map +1 -0
- package/dist/cli/ui/components/index.d.ts +7 -0
- package/dist/cli/ui/components/index.d.ts.map +1 -0
- package/dist/cli/ui/components/index.js +9 -0
- package/dist/cli/ui/components/index.js.map +1 -0
- package/dist/cli/ui/terminal-ui.d.ts +52 -0
- package/dist/cli/ui/terminal-ui.d.ts.map +1 -0
- package/dist/cli/ui/terminal-ui.js +121 -0
- package/dist/cli/ui/terminal-ui.js.map +1 -0
- package/dist/durable-object/object-store.d.ts +401 -23
- package/dist/durable-object/object-store.d.ts.map +1 -1
- package/dist/durable-object/object-store.js +414 -25
- package/dist/durable-object/object-store.js.map +1 -1
- package/dist/durable-object/schema.d.ts +188 -0
- package/dist/durable-object/schema.d.ts.map +1 -1
- package/dist/durable-object/schema.js +160 -0
- package/dist/durable-object/schema.js.map +1 -1
- package/dist/durable-object/wal.d.ts +336 -31
- package/dist/durable-object/wal.d.ts.map +1 -1
- package/dist/durable-object/wal.js +272 -27
- package/dist/durable-object/wal.js.map +1 -1
- package/dist/index.d.ts +379 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +379 -7
- package/dist/index.js.map +1 -1
- package/dist/mcp/adapter.d.ts +579 -38
- package/dist/mcp/adapter.d.ts.map +1 -1
- package/dist/mcp/adapter.js +426 -33
- package/dist/mcp/adapter.js.map +1 -1
- package/dist/mcp/sandbox.d.ts +532 -29
- package/dist/mcp/sandbox.d.ts.map +1 -1
- package/dist/mcp/sandbox.js +389 -22
- package/dist/mcp/sandbox.js.map +1 -1
- package/dist/mcp/sdk-adapter.d.ts +478 -56
- package/dist/mcp/sdk-adapter.d.ts.map +1 -1
- package/dist/mcp/sdk-adapter.js +346 -44
- package/dist/mcp/sdk-adapter.js.map +1 -1
- package/dist/mcp/tools.d.ts +445 -30
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +363 -33
- package/dist/mcp/tools.js.map +1 -1
- package/dist/ops/blame.d.ts +424 -21
- package/dist/ops/blame.d.ts.map +1 -1
- package/dist/ops/blame.js +303 -20
- package/dist/ops/blame.js.map +1 -1
- package/dist/ops/branch.d.ts +583 -32
- package/dist/ops/branch.d.ts.map +1 -1
- package/dist/ops/branch.js +365 -23
- package/dist/ops/branch.js.map +1 -1
- package/dist/ops/commit-traversal.d.ts +164 -24
- package/dist/ops/commit-traversal.d.ts.map +1 -1
- package/dist/ops/commit-traversal.js +68 -2
- package/dist/ops/commit-traversal.js.map +1 -1
- package/dist/ops/commit.d.ts +387 -53
- package/dist/ops/commit.d.ts.map +1 -1
- package/dist/ops/commit.js +249 -29
- package/dist/ops/commit.js.map +1 -1
- package/dist/ops/merge-base.d.ts +195 -21
- package/dist/ops/merge-base.d.ts.map +1 -1
- package/dist/ops/merge-base.js +122 -12
- package/dist/ops/merge-base.js.map +1 -1
- package/dist/ops/merge.d.ts +600 -130
- package/dist/ops/merge.d.ts.map +1 -1
- package/dist/ops/merge.js +408 -60
- package/dist/ops/merge.js.map +1 -1
- package/dist/ops/tag.d.ts +67 -2
- package/dist/ops/tag.d.ts.map +1 -1
- package/dist/ops/tag.js +42 -1
- package/dist/ops/tag.js.map +1 -1
- package/dist/ops/tree-builder.d.ts +102 -6
- package/dist/ops/tree-builder.d.ts.map +1 -1
- package/dist/ops/tree-builder.js +30 -5
- package/dist/ops/tree-builder.js.map +1 -1
- package/dist/ops/tree-diff.d.ts +50 -2
- package/dist/ops/tree-diff.d.ts.map +1 -1
- package/dist/ops/tree-diff.js +50 -2
- package/dist/ops/tree-diff.js.map +1 -1
- package/dist/pack/delta.d.ts +211 -39
- package/dist/pack/delta.d.ts.map +1 -1
- package/dist/pack/delta.js +232 -46
- package/dist/pack/delta.js.map +1 -1
- package/dist/pack/format.d.ts +390 -28
- package/dist/pack/format.d.ts.map +1 -1
- package/dist/pack/format.js +344 -33
- package/dist/pack/format.js.map +1 -1
- package/dist/pack/full-generation.d.ts +313 -28
- package/dist/pack/full-generation.d.ts.map +1 -1
- package/dist/pack/full-generation.js +238 -19
- package/dist/pack/full-generation.js.map +1 -1
- package/dist/pack/generation.d.ts +346 -23
- package/dist/pack/generation.d.ts.map +1 -1
- package/dist/pack/generation.js +269 -21
- package/dist/pack/generation.js.map +1 -1
- package/dist/pack/index.d.ts +407 -86
- package/dist/pack/index.d.ts.map +1 -1
- package/dist/pack/index.js +351 -70
- package/dist/pack/index.js.map +1 -1
- package/dist/refs/branch.d.ts +517 -71
- package/dist/refs/branch.d.ts.map +1 -1
- package/dist/refs/branch.js +410 -26
- package/dist/refs/branch.js.map +1 -1
- package/dist/refs/storage.d.ts +610 -57
- package/dist/refs/storage.d.ts.map +1 -1
- package/dist/refs/storage.js +481 -29
- package/dist/refs/storage.js.map +1 -1
- package/dist/refs/tag.d.ts +677 -67
- package/dist/refs/tag.d.ts.map +1 -1
- package/dist/refs/tag.js +497 -30
- package/dist/refs/tag.js.map +1 -1
- package/dist/storage/lru-cache.d.ts +556 -53
- package/dist/storage/lru-cache.d.ts.map +1 -1
- package/dist/storage/lru-cache.js +439 -36
- package/dist/storage/lru-cache.js.map +1 -1
- package/dist/storage/object-index.d.ts +483 -38
- package/dist/storage/object-index.d.ts.map +1 -1
- package/dist/storage/object-index.js +388 -22
- package/dist/storage/object-index.js.map +1 -1
- package/dist/storage/r2-pack.d.ts +957 -94
- package/dist/storage/r2-pack.d.ts.map +1 -1
- package/dist/storage/r2-pack.js +756 -48
- package/dist/storage/r2-pack.js.map +1 -1
- package/dist/tiered/cdc-pipeline.d.ts +1610 -38
- package/dist/tiered/cdc-pipeline.d.ts.map +1 -1
- package/dist/tiered/cdc-pipeline.js +1131 -22
- package/dist/tiered/cdc-pipeline.js.map +1 -1
- package/dist/tiered/migration.d.ts +903 -41
- package/dist/tiered/migration.d.ts.map +1 -1
- package/dist/tiered/migration.js +646 -24
- package/dist/tiered/migration.js.map +1 -1
- package/dist/tiered/parquet-writer.d.ts +944 -47
- package/dist/tiered/parquet-writer.d.ts.map +1 -1
- package/dist/tiered/parquet-writer.js +667 -39
- package/dist/tiered/parquet-writer.js.map +1 -1
- package/dist/tiered/read-path.d.ts +728 -34
- package/dist/tiered/read-path.d.ts.map +1 -1
- package/dist/tiered/read-path.js +310 -27
- package/dist/tiered/read-path.js.map +1 -1
- package/dist/types/objects.d.ts +457 -0
- package/dist/types/objects.d.ts.map +1 -1
- package/dist/types/objects.js +305 -4
- package/dist/types/objects.js.map +1 -1
- package/dist/types/storage.d.ts +407 -35
- package/dist/types/storage.d.ts.map +1 -1
- package/dist/types/storage.js +27 -3
- package/dist/types/storage.js.map +1 -1
- package/dist/utils/hash.d.ts +133 -12
- package/dist/utils/hash.d.ts.map +1 -1
- package/dist/utils/hash.js +133 -12
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/sha1.d.ts +102 -9
- package/dist/utils/sha1.d.ts.map +1 -1
- package/dist/utils/sha1.js +114 -11
- package/dist/utils/sha1.js.map +1 -1
- package/dist/wire/capabilities.d.ts +896 -88
- package/dist/wire/capabilities.d.ts.map +1 -1
- package/dist/wire/capabilities.js +566 -62
- package/dist/wire/capabilities.js.map +1 -1
- package/dist/wire/pkt-line.d.ts +293 -15
- package/dist/wire/pkt-line.d.ts.map +1 -1
- package/dist/wire/pkt-line.js +251 -15
- package/dist/wire/pkt-line.js.map +1 -1
- package/dist/wire/receive-pack.d.ts +814 -64
- package/dist/wire/receive-pack.d.ts.map +1 -1
- package/dist/wire/receive-pack.js +542 -41
- package/dist/wire/receive-pack.js.map +1 -1
- package/dist/wire/smart-http.d.ts +575 -97
- package/dist/wire/smart-http.d.ts.map +1 -1
- package/dist/wire/smart-http.js +337 -46
- package/dist/wire/smart-http.js.map +1 -1
- package/dist/wire/upload-pack.d.ts +492 -98
- package/dist/wire/upload-pack.d.ts.map +1 -1
- package/dist/wire/upload-pack.js +347 -59
- package/dist/wire/upload-pack.js.map +1 -1
- package/package.json +10 -2
package/dist/refs/tag.js
CHANGED
|
@@ -1,16 +1,72 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Git Tag Operations
|
|
2
|
+
* @fileoverview Git Tag Operations
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* This module provides comprehensive tag management functionality including
|
|
5
|
+
* creation (lightweight and annotated), deletion, listing, and verification.
|
|
6
|
+
*
|
|
7
|
+
* **Tag Types in Git**:
|
|
8
|
+
* - **Lightweight tags**: Simple refs under refs/tags/ pointing to commits
|
|
9
|
+
* - **Annotated tags**: Refs pointing to tag objects containing metadata
|
|
10
|
+
* (tagger, date, message, and optional GPG signature)
|
|
11
|
+
*
|
|
12
|
+
* Annotated tags are recommended for releases as they include metadata
|
|
13
|
+
* and can be cryptographically signed.
|
|
14
|
+
*
|
|
15
|
+
* @module refs/tag
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { TagManager, createTag, listTags } from './refs/tag'
|
|
20
|
+
*
|
|
21
|
+
* // Create manager
|
|
22
|
+
* const manager = new TagManager(refStorage, objectStorage, gpgSigner)
|
|
23
|
+
*
|
|
24
|
+
* // Create annotated tag
|
|
25
|
+
* const tag = await manager.createTag('v1.0.0', commitSha, {
|
|
26
|
+
* annotated: true,
|
|
27
|
+
* message: 'Release 1.0.0',
|
|
28
|
+
* tagger: { name: 'Alice', email: 'alice@example.com', timestamp: Date.now()/1000, timezone: '+0000' }
|
|
29
|
+
* })
|
|
30
|
+
*
|
|
31
|
+
* // List version tags
|
|
32
|
+
* const versions = await listTags(manager, { pattern: 'v*' })
|
|
33
|
+
* ```
|
|
7
34
|
*/
|
|
8
35
|
/**
|
|
9
|
-
* Error thrown when a tag operation fails
|
|
36
|
+
* Error thrown when a tag operation fails.
|
|
37
|
+
*
|
|
38
|
+
* @description
|
|
39
|
+
* Provides structured error information with error code
|
|
40
|
+
* for programmatic error handling.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* try {
|
|
45
|
+
* await manager.createTag('v1.0.0', 'abc123')
|
|
46
|
+
* } catch (e) {
|
|
47
|
+
* if (e instanceof TagError) {
|
|
48
|
+
* switch (e.code) {
|
|
49
|
+
* case 'TAG_EXISTS':
|
|
50
|
+
* console.log('Tag already exists, use force=true to overwrite')
|
|
51
|
+
* break
|
|
52
|
+
* case 'MESSAGE_REQUIRED':
|
|
53
|
+
* console.log('Annotated tags require a message')
|
|
54
|
+
* break
|
|
55
|
+
* }
|
|
56
|
+
* }
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
10
59
|
*/
|
|
11
60
|
export class TagError extends Error {
|
|
12
61
|
code;
|
|
13
62
|
tagName;
|
|
63
|
+
/**
|
|
64
|
+
* Create a new TagError.
|
|
65
|
+
*
|
|
66
|
+
* @param message - Human-readable error description
|
|
67
|
+
* @param code - Error code for programmatic handling
|
|
68
|
+
* @param tagName - The tag that caused the error (optional)
|
|
69
|
+
*/
|
|
14
70
|
constructor(message, code, tagName) {
|
|
15
71
|
super(message);
|
|
16
72
|
this.code = code;
|
|
@@ -18,10 +74,46 @@ export class TagError extends Error {
|
|
|
18
74
|
this.name = 'TagError';
|
|
19
75
|
}
|
|
20
76
|
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// TagManager Class
|
|
79
|
+
// ============================================================================
|
|
21
80
|
/**
|
|
22
|
-
* Tag manager for handling Git tag operations
|
|
81
|
+
* Tag manager for handling Git tag operations.
|
|
82
|
+
*
|
|
83
|
+
* @description
|
|
84
|
+
* Provides a comprehensive API for tag management including both
|
|
85
|
+
* lightweight and annotated tags. Uses RefStorage for refs and
|
|
86
|
+
* TagObjectStorage for tag objects.
|
|
87
|
+
*
|
|
88
|
+
* Note: Most methods are currently stubs (TODO) and will throw 'Not implemented'.
|
|
89
|
+
* These will be implemented in the GREEN phase of TDD development.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const manager = new TagManager(refStorage, objectStorage, gpgSigner)
|
|
94
|
+
*
|
|
95
|
+
* // Create a release tag
|
|
96
|
+
* const tag = await manager.createTag('v1.0.0', commitSha, {
|
|
97
|
+
* annotated: true,
|
|
98
|
+
* message: 'Version 1.0.0 release',
|
|
99
|
+
* tagger: { name: 'Alice', email: 'alice@example.com', timestamp: 1704067200, timezone: '+0000' }
|
|
100
|
+
* })
|
|
101
|
+
*
|
|
102
|
+
* // List version tags
|
|
103
|
+
* const versions = await manager.listTags({ pattern: 'v*' })
|
|
104
|
+
*
|
|
105
|
+
* // Verify signed tag
|
|
106
|
+
* const verification = await manager.verifyTag('v1.0.0')
|
|
107
|
+
* ```
|
|
23
108
|
*/
|
|
24
109
|
export class TagManager {
|
|
110
|
+
/**
|
|
111
|
+
* Create a new TagManager.
|
|
112
|
+
*
|
|
113
|
+
* @param refStorage - RefStorage instance for managing tag refs
|
|
114
|
+
* @param objectStorage - Storage for reading/writing tag objects
|
|
115
|
+
* @param gpgSigner - Optional GPG signer for signed tags
|
|
116
|
+
*/
|
|
25
117
|
constructor(refStorage, objectStorage, gpgSigner) {
|
|
26
118
|
void refStorage; // Suppress unused variable warning until implementation
|
|
27
119
|
void objectStorage;
|
|
@@ -29,157 +121,532 @@ export class TagManager {
|
|
|
29
121
|
// TODO: Implement in GREEN phase
|
|
30
122
|
}
|
|
31
123
|
/**
|
|
32
|
-
* Create a new tag
|
|
124
|
+
* Create a new tag.
|
|
125
|
+
*
|
|
126
|
+
* @description
|
|
127
|
+
* Creates either a lightweight or annotated tag pointing to the
|
|
128
|
+
* specified target. For annotated tags, creates a tag object with
|
|
129
|
+
* metadata and optionally signs it.
|
|
130
|
+
*
|
|
131
|
+
* @param name - Tag name (without refs/tags/ prefix)
|
|
132
|
+
* @param target - Target SHA to tag (usually a commit)
|
|
133
|
+
* @param options - Creation options
|
|
134
|
+
* @returns The created tag
|
|
135
|
+
* @throws TagError with code 'INVALID_TAG_NAME' if name is invalid
|
|
136
|
+
* @throws TagError with code 'TAG_EXISTS' if tag exists and not forcing
|
|
137
|
+
* @throws TagError with code 'MESSAGE_REQUIRED' for annotated tag without message
|
|
138
|
+
* @throws TagError with code 'GPG_ERROR' if signing fails
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // Create lightweight tag
|
|
143
|
+
* const light = await manager.createTag('v0.1.0', commitSha)
|
|
144
|
+
*
|
|
145
|
+
* // Create annotated tag
|
|
146
|
+
* const annotated = await manager.createTag('v1.0.0', commitSha, {
|
|
147
|
+
* annotated: true,
|
|
148
|
+
* message: 'Release 1.0.0',
|
|
149
|
+
* tagger: { name: 'Alice', email: 'alice@example.com', timestamp: 1704067200, timezone: '+0000' }
|
|
150
|
+
* })
|
|
151
|
+
*
|
|
152
|
+
* // Create signed tag
|
|
153
|
+
* const signed = await manager.createTag('v1.0.0', commitSha, {
|
|
154
|
+
* annotated: true,
|
|
155
|
+
* message: 'Release 1.0.0',
|
|
156
|
+
* sign: true
|
|
157
|
+
* })
|
|
158
|
+
* ```
|
|
33
159
|
*/
|
|
34
160
|
async createTag(_name, _target, _options) {
|
|
35
161
|
// TODO: Implement in GREEN phase
|
|
36
162
|
throw new Error('Not implemented');
|
|
37
163
|
}
|
|
38
164
|
/**
|
|
39
|
-
* Delete a tag
|
|
165
|
+
* Delete a tag.
|
|
166
|
+
*
|
|
167
|
+
* @description
|
|
168
|
+
* Removes a tag ref. Does not delete the tag object (if annotated)
|
|
169
|
+
* as it may be referenced elsewhere (reflog, etc.).
|
|
170
|
+
*
|
|
171
|
+
* @param name - Tag name to delete
|
|
172
|
+
* @param options - Deletion options
|
|
173
|
+
* @returns True if tag was deleted, false if it didn't exist (with force)
|
|
174
|
+
* @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist (without force)
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* await manager.deleteTag('v0.9.0-beta')
|
|
179
|
+
*
|
|
180
|
+
* // Delete even if doesn't exist
|
|
181
|
+
* await manager.deleteTag('maybe-exists', { force: true })
|
|
182
|
+
* ```
|
|
40
183
|
*/
|
|
41
184
|
async deleteTag(_name, _options) {
|
|
42
185
|
// TODO: Implement in GREEN phase
|
|
43
186
|
throw new Error('Not implemented');
|
|
44
187
|
}
|
|
45
188
|
/**
|
|
46
|
-
* List all tags
|
|
189
|
+
* List all tags.
|
|
190
|
+
*
|
|
191
|
+
* @description
|
|
192
|
+
* Returns tags matching the specified criteria.
|
|
193
|
+
* By default returns all tags sorted by name.
|
|
194
|
+
*
|
|
195
|
+
* @param options - Listing options
|
|
196
|
+
* @returns Array of tags matching criteria
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* // List all tags
|
|
201
|
+
* const all = await manager.listTags()
|
|
202
|
+
*
|
|
203
|
+
* // List version tags with metadata
|
|
204
|
+
* const versions = await manager.listTags({
|
|
205
|
+
* pattern: 'v*',
|
|
206
|
+
* sort: 'version',
|
|
207
|
+
* includeMetadata: true
|
|
208
|
+
* })
|
|
209
|
+
*
|
|
210
|
+
* // Get latest 5 tags
|
|
211
|
+
* const latest = await manager.listTags({
|
|
212
|
+
* sort: 'date',
|
|
213
|
+
* sortDirection: 'desc',
|
|
214
|
+
* limit: 5,
|
|
215
|
+
* includeMetadata: true
|
|
216
|
+
* })
|
|
217
|
+
* ```
|
|
47
218
|
*/
|
|
48
219
|
async listTags(_options) {
|
|
49
220
|
// TODO: Implement in GREEN phase
|
|
50
221
|
throw new Error('Not implemented');
|
|
51
222
|
}
|
|
52
223
|
/**
|
|
53
|
-
* Get a tag by name
|
|
224
|
+
* Get a tag by name.
|
|
225
|
+
*
|
|
226
|
+
* @description
|
|
227
|
+
* Retrieves tag information. Use resolve=true to get full
|
|
228
|
+
* annotated tag metadata.
|
|
229
|
+
*
|
|
230
|
+
* @param name - Tag name
|
|
231
|
+
* @param options - Get options
|
|
232
|
+
* @returns Tag info or null if not found
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* // Quick lookup
|
|
237
|
+
* const tag = await manager.getTag('v1.0.0')
|
|
238
|
+
*
|
|
239
|
+
* // Get full metadata
|
|
240
|
+
* const full = await manager.getTag('v1.0.0', { resolve: true })
|
|
241
|
+
* if (full?.type === 'annotated') {
|
|
242
|
+
* console.log(`Tagged by: ${full.tagger?.name}`)
|
|
243
|
+
* console.log(`Message: ${full.message}`)
|
|
244
|
+
* }
|
|
245
|
+
* ```
|
|
54
246
|
*/
|
|
55
247
|
async getTag(_name, _options) {
|
|
56
248
|
// TODO: Implement in GREEN phase
|
|
57
249
|
throw new Error('Not implemented');
|
|
58
250
|
}
|
|
59
251
|
/**
|
|
60
|
-
* Check if a tag exists
|
|
252
|
+
* Check if a tag exists.
|
|
253
|
+
*
|
|
254
|
+
* @description
|
|
255
|
+
* Quick check for tag existence without fetching full info.
|
|
256
|
+
*
|
|
257
|
+
* @param name - Tag name
|
|
258
|
+
* @returns True if tag exists
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* if (await manager.tagExists('v1.0.0')) {
|
|
263
|
+
* console.log('Tag already exists')
|
|
264
|
+
* }
|
|
265
|
+
* ```
|
|
61
266
|
*/
|
|
62
267
|
async tagExists(_name) {
|
|
63
268
|
// TODO: Implement in GREEN phase
|
|
64
269
|
throw new Error('Not implemented');
|
|
65
270
|
}
|
|
66
271
|
/**
|
|
67
|
-
* Get the target (commit SHA) that a tag points to
|
|
272
|
+
* Get the target (commit SHA) that a tag points to.
|
|
273
|
+
*
|
|
274
|
+
* @description
|
|
275
|
+
* Resolves through annotated tags to get the final target.
|
|
276
|
+
* For lightweight tags, returns the sha directly.
|
|
277
|
+
* For annotated tags, returns the targetSha.
|
|
278
|
+
*
|
|
279
|
+
* @param name - Tag name
|
|
280
|
+
* @returns Target commit SHA
|
|
281
|
+
* @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```typescript
|
|
285
|
+
* const commitSha = await manager.getTagTarget('v1.0.0')
|
|
286
|
+
* ```
|
|
68
287
|
*/
|
|
69
288
|
async getTagTarget(_name) {
|
|
70
289
|
// TODO: Implement in GREEN phase
|
|
71
290
|
throw new Error('Not implemented');
|
|
72
291
|
}
|
|
73
292
|
/**
|
|
74
|
-
* Verify a tag's GPG signature
|
|
293
|
+
* Verify a tag's GPG signature.
|
|
294
|
+
*
|
|
295
|
+
* @description
|
|
296
|
+
* Verifies the GPG signature on a signed annotated tag.
|
|
297
|
+
* Returns verification result with signer info.
|
|
298
|
+
*
|
|
299
|
+
* @param name - Tag name to verify
|
|
300
|
+
* @returns Verification result
|
|
301
|
+
* @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const result = await manager.verifyTag('v1.0.0')
|
|
306
|
+
* if (result.valid) {
|
|
307
|
+
* console.log(`Signed by: ${result.signer}`)
|
|
308
|
+
* console.log(`Trust: ${result.trustLevel}`)
|
|
309
|
+
* } else {
|
|
310
|
+
* console.log(`Verification failed: ${result.error}`)
|
|
311
|
+
* }
|
|
312
|
+
* ```
|
|
75
313
|
*/
|
|
76
314
|
async verifyTag(_name) {
|
|
77
315
|
// TODO: Implement in GREEN phase
|
|
78
316
|
throw new Error('Not implemented');
|
|
79
317
|
}
|
|
80
318
|
/**
|
|
81
|
-
* Check if a tag is annotated
|
|
319
|
+
* Check if a tag is annotated.
|
|
320
|
+
*
|
|
321
|
+
* @description
|
|
322
|
+
* Determines if a tag is annotated (has a tag object) or lightweight.
|
|
323
|
+
*
|
|
324
|
+
* @param name - Tag name
|
|
325
|
+
* @returns True if the tag is annotated
|
|
326
|
+
* @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist
|
|
327
|
+
*
|
|
328
|
+
* @example
|
|
329
|
+
* ```typescript
|
|
330
|
+
* if (await manager.isAnnotatedTag('v1.0.0')) {
|
|
331
|
+
* console.log('This is an annotated tag')
|
|
332
|
+
* }
|
|
333
|
+
* ```
|
|
82
334
|
*/
|
|
83
335
|
async isAnnotatedTag(_name) {
|
|
84
336
|
// TODO: Implement in GREEN phase
|
|
85
337
|
throw new Error('Not implemented');
|
|
86
338
|
}
|
|
87
339
|
}
|
|
340
|
+
// ============================================================================
|
|
341
|
+
// Validation Functions
|
|
342
|
+
// ============================================================================
|
|
88
343
|
/**
|
|
89
|
-
* Validate a tag name according to Git rules
|
|
90
|
-
*
|
|
344
|
+
* Validate a tag name according to Git rules.
|
|
345
|
+
*
|
|
346
|
+
* @description
|
|
347
|
+
* Tags follow the same rules as refs but under refs/tags/.
|
|
348
|
+
* This validates against the full git-check-ref-format rules.
|
|
349
|
+
*
|
|
350
|
+
* **Rules**:
|
|
351
|
+
* - Cannot be empty
|
|
352
|
+
* - Cannot end with '/' or '.lock'
|
|
353
|
+
* - Cannot contain '..', '@{', control chars, space, ~, ^, :, ?, *, [, \
|
|
354
|
+
* - Components cannot start or end with '.'
|
|
355
|
+
*
|
|
356
|
+
* Note: This is a stub implementation. Full validation will be added in GREEN phase.
|
|
357
|
+
*
|
|
358
|
+
* @param name - Tag name to validate
|
|
359
|
+
* @returns True if valid
|
|
360
|
+
*
|
|
361
|
+
* @see https://git-scm.com/docs/git-check-ref-format
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
* ```typescript
|
|
365
|
+
* isValidTagName('v1.0.0') // true
|
|
366
|
+
* isValidTagName('release/1.0') // true
|
|
367
|
+
* isValidTagName('v1.0.0.lock') // false (ends with .lock)
|
|
368
|
+
* isValidTagName('v1..0') // false (contains ..)
|
|
369
|
+
* isValidTagName('') // false (empty)
|
|
370
|
+
* ```
|
|
91
371
|
*/
|
|
92
372
|
export function isValidTagName(_name) {
|
|
93
373
|
// TODO: Implement in GREEN phase
|
|
94
374
|
throw new Error('Not implemented');
|
|
95
375
|
}
|
|
96
376
|
/**
|
|
97
|
-
*
|
|
377
|
+
* Type guard for annotated tags.
|
|
378
|
+
*
|
|
379
|
+
* @description
|
|
380
|
+
* Checks if a tag is annotated with full metadata.
|
|
381
|
+
* Narrows the type to include tagger and message.
|
|
382
|
+
*
|
|
383
|
+
* @param tag - Tag to check
|
|
384
|
+
* @returns True if the tag is annotated with full metadata
|
|
385
|
+
*
|
|
386
|
+
* @example
|
|
387
|
+
* ```typescript
|
|
388
|
+
* if (isAnnotatedTag(tag)) {
|
|
389
|
+
* // tag.tagger and tag.message are now guaranteed
|
|
390
|
+
* console.log(`Tagged by: ${tag.tagger.name}`)
|
|
391
|
+
* }
|
|
392
|
+
* ```
|
|
98
393
|
*/
|
|
99
394
|
export function isAnnotatedTag(_tag) {
|
|
100
395
|
// TODO: Implement in GREEN phase
|
|
101
396
|
throw new Error('Not implemented');
|
|
102
397
|
}
|
|
103
398
|
/**
|
|
104
|
-
* Format a tag message
|
|
399
|
+
* Format a tag message.
|
|
400
|
+
*
|
|
401
|
+
* @description
|
|
402
|
+
* Normalizes a tag message: handles line endings, trims whitespace,
|
|
403
|
+
* ensures proper formatting.
|
|
404
|
+
*
|
|
405
|
+
* @param message - Raw message input
|
|
406
|
+
* @returns Formatted message
|
|
407
|
+
*
|
|
408
|
+
* @example
|
|
409
|
+
* ```typescript
|
|
410
|
+
* formatTagMessage(' Hello World \r\n') // 'Hello World\n'
|
|
411
|
+
* ```
|
|
105
412
|
*/
|
|
106
413
|
export function formatTagMessage(_message) {
|
|
107
414
|
// TODO: Implement in GREEN phase
|
|
108
415
|
throw new Error('Not implemented');
|
|
109
416
|
}
|
|
110
417
|
/**
|
|
111
|
-
* Parse a tag message from raw content
|
|
418
|
+
* Parse a tag message from raw content.
|
|
419
|
+
*
|
|
420
|
+
* @description
|
|
421
|
+
* Separates the message from any GPG signature.
|
|
422
|
+
* GPG signatures start with '-----BEGIN PGP SIGNATURE-----'.
|
|
423
|
+
*
|
|
424
|
+
* @param content - Raw tag content
|
|
425
|
+
* @returns Parsed message and optional signature
|
|
426
|
+
*
|
|
427
|
+
* @example
|
|
428
|
+
* ```typescript
|
|
429
|
+
* const { message, signature } = parseTagMessage(content)
|
|
430
|
+
* if (signature) {
|
|
431
|
+
* console.log('Tag is signed')
|
|
432
|
+
* }
|
|
433
|
+
* ```
|
|
112
434
|
*/
|
|
113
435
|
export function parseTagMessage(_content) {
|
|
114
436
|
// TODO: Implement in GREEN phase
|
|
115
437
|
throw new Error('Not implemented');
|
|
116
438
|
}
|
|
117
|
-
//
|
|
439
|
+
// ============================================================================
|
|
440
|
+
// Convenience Functions
|
|
441
|
+
// ============================================================================
|
|
118
442
|
/**
|
|
119
|
-
* Create a
|
|
443
|
+
* Create a tag (lightweight or annotated).
|
|
444
|
+
*
|
|
445
|
+
* @description
|
|
446
|
+
* Convenience function that wraps TagManager.createTag.
|
|
447
|
+
*
|
|
448
|
+
* @param manager - TagManager instance
|
|
449
|
+
* @param name - Tag name
|
|
450
|
+
* @param target - Target SHA to tag
|
|
451
|
+
* @param options - Creation options
|
|
452
|
+
* @returns Created tag
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* ```typescript
|
|
456
|
+
* const tag = await createTag(manager, 'v1.0.0', commitSha, {
|
|
457
|
+
* annotated: true,
|
|
458
|
+
* message: 'Release 1.0.0'
|
|
459
|
+
* })
|
|
460
|
+
* ```
|
|
120
461
|
*/
|
|
121
462
|
export async function createTag(_manager, _name, _target, _options) {
|
|
122
463
|
// TODO: Implement in GREEN phase
|
|
123
464
|
throw new Error('Not implemented');
|
|
124
465
|
}
|
|
125
466
|
/**
|
|
126
|
-
* Create an annotated tag with message
|
|
467
|
+
* Create an annotated tag with message.
|
|
468
|
+
*
|
|
469
|
+
* @description
|
|
470
|
+
* Convenience function for creating annotated tags.
|
|
471
|
+
* Automatically sets annotated=true.
|
|
472
|
+
*
|
|
473
|
+
* @param manager - TagManager instance
|
|
474
|
+
* @param name - Tag name
|
|
475
|
+
* @param target - Target SHA to tag
|
|
476
|
+
* @param message - Tag message
|
|
477
|
+
* @param tagger - Tagger information
|
|
478
|
+
* @param options - Additional options (excluding annotated, message, tagger)
|
|
479
|
+
* @returns Created annotated tag
|
|
480
|
+
*
|
|
481
|
+
* @example
|
|
482
|
+
* ```typescript
|
|
483
|
+
* const tag = await createAnnotatedTag(
|
|
484
|
+
* manager,
|
|
485
|
+
* 'v1.0.0',
|
|
486
|
+
* commitSha,
|
|
487
|
+
* 'Release 1.0.0',
|
|
488
|
+
* { name: 'Alice', email: 'alice@example.com', timestamp: Date.now()/1000, timezone: '+0000' }
|
|
489
|
+
* )
|
|
490
|
+
* ```
|
|
127
491
|
*/
|
|
128
492
|
export async function createAnnotatedTag(_manager, _name, _target, _message, _tagger, _options) {
|
|
129
493
|
// TODO: Implement in GREEN phase
|
|
130
494
|
throw new Error('Not implemented');
|
|
131
495
|
}
|
|
132
496
|
/**
|
|
133
|
-
* Delete a tag
|
|
497
|
+
* Delete a tag.
|
|
498
|
+
*
|
|
499
|
+
* @description
|
|
500
|
+
* Convenience function that wraps TagManager.deleteTag.
|
|
501
|
+
*
|
|
502
|
+
* @param manager - TagManager instance
|
|
503
|
+
* @param name - Tag name to delete
|
|
504
|
+
* @param options - Deletion options
|
|
505
|
+
* @returns True if deleted
|
|
506
|
+
*
|
|
507
|
+
* @example
|
|
508
|
+
* ```typescript
|
|
509
|
+
* await deleteTag(manager, 'v0.9.0-beta')
|
|
510
|
+
* ```
|
|
134
511
|
*/
|
|
135
512
|
export async function deleteTag(_manager, _name, _options) {
|
|
136
513
|
// TODO: Implement in GREEN phase
|
|
137
514
|
throw new Error('Not implemented');
|
|
138
515
|
}
|
|
139
516
|
/**
|
|
140
|
-
* List all tags
|
|
517
|
+
* List all tags.
|
|
518
|
+
*
|
|
519
|
+
* @description
|
|
520
|
+
* Convenience function that wraps TagManager.listTags.
|
|
521
|
+
*
|
|
522
|
+
* @param manager - TagManager instance
|
|
523
|
+
* @param options - Listing options
|
|
524
|
+
* @returns Array of tags
|
|
525
|
+
*
|
|
526
|
+
* @example
|
|
527
|
+
* ```typescript
|
|
528
|
+
* const tags = await listTags(manager, { pattern: 'v1.*' })
|
|
529
|
+
* ```
|
|
141
530
|
*/
|
|
142
531
|
export async function listTags(_manager, _options) {
|
|
143
532
|
// TODO: Implement in GREEN phase
|
|
144
533
|
throw new Error('Not implemented');
|
|
145
534
|
}
|
|
146
535
|
/**
|
|
147
|
-
* Get a tag by name
|
|
536
|
+
* Get a tag by name.
|
|
537
|
+
*
|
|
538
|
+
* @description
|
|
539
|
+
* Convenience function that wraps TagManager.getTag.
|
|
540
|
+
*
|
|
541
|
+
* @param manager - TagManager instance
|
|
542
|
+
* @param name - Tag name
|
|
543
|
+
* @param options - Get options
|
|
544
|
+
* @returns Tag info or null
|
|
545
|
+
*
|
|
546
|
+
* @example
|
|
547
|
+
* ```typescript
|
|
548
|
+
* const tag = await getTag(manager, 'v1.0.0', { resolve: true })
|
|
549
|
+
* ```
|
|
148
550
|
*/
|
|
149
551
|
export async function getTag(_manager, _name, _options) {
|
|
150
552
|
// TODO: Implement in GREEN phase
|
|
151
553
|
throw new Error('Not implemented');
|
|
152
554
|
}
|
|
153
555
|
/**
|
|
154
|
-
* Check if a tag is
|
|
556
|
+
* Check if a tag is annotated.
|
|
557
|
+
*
|
|
558
|
+
* @description
|
|
559
|
+
* Convenience function that wraps TagManager.isAnnotatedTag.
|
|
560
|
+
*
|
|
561
|
+
* @param manager - TagManager instance
|
|
562
|
+
* @param name - Tag name
|
|
563
|
+
* @returns True if annotated
|
|
564
|
+
*
|
|
565
|
+
* @example
|
|
566
|
+
* ```typescript
|
|
567
|
+
* if (await checkIsAnnotatedTag(manager, 'v1.0.0')) {
|
|
568
|
+
* console.log('Annotated tag')
|
|
569
|
+
* }
|
|
570
|
+
* ```
|
|
155
571
|
*/
|
|
156
572
|
export async function checkIsAnnotatedTag(_manager, _name) {
|
|
157
573
|
// TODO: Implement in GREEN phase
|
|
158
574
|
throw new Error('Not implemented');
|
|
159
575
|
}
|
|
160
576
|
/**
|
|
161
|
-
* Verify a tag's signature
|
|
577
|
+
* Verify a tag's signature.
|
|
578
|
+
*
|
|
579
|
+
* @description
|
|
580
|
+
* Convenience function that wraps TagManager.verifyTag.
|
|
581
|
+
*
|
|
582
|
+
* @param manager - TagManager instance
|
|
583
|
+
* @param name - Tag name
|
|
584
|
+
* @returns Verification result
|
|
585
|
+
*
|
|
586
|
+
* @example
|
|
587
|
+
* ```typescript
|
|
588
|
+
* const result = await verifyTagSignature(manager, 'v1.0.0')
|
|
589
|
+
* ```
|
|
162
590
|
*/
|
|
163
591
|
export async function verifyTagSignature(_manager, _name) {
|
|
164
592
|
// TODO: Implement in GREEN phase
|
|
165
593
|
throw new Error('Not implemented');
|
|
166
594
|
}
|
|
167
595
|
/**
|
|
168
|
-
* Get the target commit SHA for a tag
|
|
596
|
+
* Get the target commit SHA for a tag.
|
|
597
|
+
*
|
|
598
|
+
* @description
|
|
599
|
+
* Convenience function that wraps TagManager.getTagTarget.
|
|
600
|
+
*
|
|
601
|
+
* @param manager - TagManager instance
|
|
602
|
+
* @param name - Tag name
|
|
603
|
+
* @returns Target commit SHA
|
|
604
|
+
*
|
|
605
|
+
* @example
|
|
606
|
+
* ```typescript
|
|
607
|
+
* const sha = await getTagTarget(manager, 'v1.0.0')
|
|
608
|
+
* ```
|
|
169
609
|
*/
|
|
170
610
|
export async function getTagTarget(_manager, _name) {
|
|
171
611
|
// TODO: Implement in GREEN phase
|
|
172
612
|
throw new Error('Not implemented');
|
|
173
613
|
}
|
|
174
614
|
/**
|
|
175
|
-
* Sort tags by semantic version
|
|
615
|
+
* Sort tags by semantic version.
|
|
616
|
+
*
|
|
617
|
+
* @description
|
|
618
|
+
* Sorts tags that look like semantic versions (v1.2.3).
|
|
619
|
+
* Non-semver tags are sorted lexicographically at the end.
|
|
620
|
+
*
|
|
621
|
+
* @param tags - Array of tags to sort
|
|
622
|
+
* @param direction - Sort direction ('asc' or 'desc')
|
|
623
|
+
* @returns Sorted array of tags
|
|
624
|
+
*
|
|
625
|
+
* @example
|
|
626
|
+
* ```typescript
|
|
627
|
+
* const sorted = sortTagsByVersion(tags, 'desc')
|
|
628
|
+
* // ['v2.0.0', 'v1.10.0', 'v1.9.0', 'v1.0.0', ...]
|
|
629
|
+
* ```
|
|
176
630
|
*/
|
|
177
631
|
export function sortTagsByVersion(_tags, _direction = 'asc') {
|
|
178
632
|
// TODO: Implement in GREEN phase
|
|
179
633
|
throw new Error('Not implemented');
|
|
180
634
|
}
|
|
181
635
|
/**
|
|
182
|
-
* Filter tags by glob pattern
|
|
636
|
+
* Filter tags by glob pattern.
|
|
637
|
+
*
|
|
638
|
+
* @description
|
|
639
|
+
* Filters tags matching a glob pattern.
|
|
640
|
+
* Supports * (any chars) and ? (single char) wildcards.
|
|
641
|
+
*
|
|
642
|
+
* @param tags - Array of tags to filter
|
|
643
|
+
* @param pattern - Glob pattern (e.g., 'v1.*', 'release-*')
|
|
644
|
+
* @returns Filtered array of tags
|
|
645
|
+
*
|
|
646
|
+
* @example
|
|
647
|
+
* ```typescript
|
|
648
|
+
* const v1Tags = filterTagsByPattern(tags, 'v1.*')
|
|
649
|
+
* ```
|
|
183
650
|
*/
|
|
184
651
|
export function filterTagsByPattern(_tags, _pattern) {
|
|
185
652
|
// TODO: Implement in GREEN phase
|
package/dist/refs/tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}
|