gitx.do 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/durable-object/object-store.d.ts +113 -0
  4. package/dist/durable-object/object-store.d.ts.map +1 -0
  5. package/dist/durable-object/object-store.js +387 -0
  6. package/dist/durable-object/object-store.js.map +1 -0
  7. package/dist/durable-object/schema.d.ts +17 -0
  8. package/dist/durable-object/schema.d.ts.map +1 -0
  9. package/dist/durable-object/schema.js +43 -0
  10. package/dist/durable-object/schema.js.map +1 -0
  11. package/dist/durable-object/wal.d.ts +111 -0
  12. package/dist/durable-object/wal.d.ts.map +1 -0
  13. package/dist/durable-object/wal.js +200 -0
  14. package/dist/durable-object/wal.js.map +1 -0
  15. package/dist/index.d.ts +24 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +101 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp/adapter.d.ts +231 -0
  20. package/dist/mcp/adapter.d.ts.map +1 -0
  21. package/dist/mcp/adapter.js +502 -0
  22. package/dist/mcp/adapter.js.map +1 -0
  23. package/dist/mcp/sandbox.d.ts +261 -0
  24. package/dist/mcp/sandbox.d.ts.map +1 -0
  25. package/dist/mcp/sandbox.js +983 -0
  26. package/dist/mcp/sandbox.js.map +1 -0
  27. package/dist/mcp/sdk-adapter.d.ts +413 -0
  28. package/dist/mcp/sdk-adapter.d.ts.map +1 -0
  29. package/dist/mcp/sdk-adapter.js +672 -0
  30. package/dist/mcp/sdk-adapter.js.map +1 -0
  31. package/dist/mcp/tools.d.ts +133 -0
  32. package/dist/mcp/tools.d.ts.map +1 -0
  33. package/dist/mcp/tools.js +1604 -0
  34. package/dist/mcp/tools.js.map +1 -0
  35. package/dist/ops/blame.d.ts +148 -0
  36. package/dist/ops/blame.d.ts.map +1 -0
  37. package/dist/ops/blame.js +754 -0
  38. package/dist/ops/blame.js.map +1 -0
  39. package/dist/ops/branch.d.ts +215 -0
  40. package/dist/ops/branch.d.ts.map +1 -0
  41. package/dist/ops/branch.js +608 -0
  42. package/dist/ops/branch.js.map +1 -0
  43. package/dist/ops/commit-traversal.d.ts +209 -0
  44. package/dist/ops/commit-traversal.d.ts.map +1 -0
  45. package/dist/ops/commit-traversal.js +755 -0
  46. package/dist/ops/commit-traversal.js.map +1 -0
  47. package/dist/ops/commit.d.ts +221 -0
  48. package/dist/ops/commit.d.ts.map +1 -0
  49. package/dist/ops/commit.js +606 -0
  50. package/dist/ops/commit.js.map +1 -0
  51. package/dist/ops/merge-base.d.ts +223 -0
  52. package/dist/ops/merge-base.d.ts.map +1 -0
  53. package/dist/ops/merge-base.js +581 -0
  54. package/dist/ops/merge-base.js.map +1 -0
  55. package/dist/ops/merge.d.ts +385 -0
  56. package/dist/ops/merge.d.ts.map +1 -0
  57. package/dist/ops/merge.js +1203 -0
  58. package/dist/ops/merge.js.map +1 -0
  59. package/dist/ops/tag.d.ts +182 -0
  60. package/dist/ops/tag.d.ts.map +1 -0
  61. package/dist/ops/tag.js +608 -0
  62. package/dist/ops/tag.js.map +1 -0
  63. package/dist/ops/tree-builder.d.ts +82 -0
  64. package/dist/ops/tree-builder.d.ts.map +1 -0
  65. package/dist/ops/tree-builder.js +246 -0
  66. package/dist/ops/tree-builder.js.map +1 -0
  67. package/dist/ops/tree-diff.d.ts +243 -0
  68. package/dist/ops/tree-diff.d.ts.map +1 -0
  69. package/dist/ops/tree-diff.js +657 -0
  70. package/dist/ops/tree-diff.js.map +1 -0
  71. package/dist/pack/delta.d.ts +68 -0
  72. package/dist/pack/delta.d.ts.map +1 -0
  73. package/dist/pack/delta.js +343 -0
  74. package/dist/pack/delta.js.map +1 -0
  75. package/dist/pack/format.d.ts +84 -0
  76. package/dist/pack/format.d.ts.map +1 -0
  77. package/dist/pack/format.js +261 -0
  78. package/dist/pack/format.js.map +1 -0
  79. package/dist/pack/full-generation.d.ts +327 -0
  80. package/dist/pack/full-generation.d.ts.map +1 -0
  81. package/dist/pack/full-generation.js +1159 -0
  82. package/dist/pack/full-generation.js.map +1 -0
  83. package/dist/pack/generation.d.ts +118 -0
  84. package/dist/pack/generation.d.ts.map +1 -0
  85. package/dist/pack/generation.js +459 -0
  86. package/dist/pack/generation.js.map +1 -0
  87. package/dist/pack/index.d.ts +181 -0
  88. package/dist/pack/index.d.ts.map +1 -0
  89. package/dist/pack/index.js +552 -0
  90. package/dist/pack/index.js.map +1 -0
  91. package/dist/refs/branch.d.ts +224 -0
  92. package/dist/refs/branch.d.ts.map +1 -0
  93. package/dist/refs/branch.js +170 -0
  94. package/dist/refs/branch.js.map +1 -0
  95. package/dist/refs/storage.d.ts +208 -0
  96. package/dist/refs/storage.d.ts.map +1 -0
  97. package/dist/refs/storage.js +421 -0
  98. package/dist/refs/storage.js.map +1 -0
  99. package/dist/refs/tag.d.ts +230 -0
  100. package/dist/refs/tag.d.ts.map +1 -0
  101. package/dist/refs/tag.js +188 -0
  102. package/dist/refs/tag.js.map +1 -0
  103. package/dist/storage/lru-cache.d.ts +188 -0
  104. package/dist/storage/lru-cache.d.ts.map +1 -0
  105. package/dist/storage/lru-cache.js +410 -0
  106. package/dist/storage/lru-cache.js.map +1 -0
  107. package/dist/storage/object-index.d.ts +140 -0
  108. package/dist/storage/object-index.d.ts.map +1 -0
  109. package/dist/storage/object-index.js +166 -0
  110. package/dist/storage/object-index.js.map +1 -0
  111. package/dist/storage/r2-pack.d.ts +394 -0
  112. package/dist/storage/r2-pack.d.ts.map +1 -0
  113. package/dist/storage/r2-pack.js +1062 -0
  114. package/dist/storage/r2-pack.js.map +1 -0
  115. package/dist/tiered/cdc-pipeline.d.ts +316 -0
  116. package/dist/tiered/cdc-pipeline.d.ts.map +1 -0
  117. package/dist/tiered/cdc-pipeline.js +771 -0
  118. package/dist/tiered/cdc-pipeline.js.map +1 -0
  119. package/dist/tiered/migration.d.ts +242 -0
  120. package/dist/tiered/migration.d.ts.map +1 -0
  121. package/dist/tiered/migration.js +592 -0
  122. package/dist/tiered/migration.js.map +1 -0
  123. package/dist/tiered/parquet-writer.d.ts +248 -0
  124. package/dist/tiered/parquet-writer.d.ts.map +1 -0
  125. package/dist/tiered/parquet-writer.js +555 -0
  126. package/dist/tiered/parquet-writer.js.map +1 -0
  127. package/dist/tiered/read-path.d.ts +141 -0
  128. package/dist/tiered/read-path.d.ts.map +1 -0
  129. package/dist/tiered/read-path.js +204 -0
  130. package/dist/tiered/read-path.js.map +1 -0
  131. package/dist/types/objects.d.ts +53 -0
  132. package/dist/types/objects.d.ts.map +1 -0
  133. package/dist/types/objects.js +291 -0
  134. package/dist/types/objects.js.map +1 -0
  135. package/dist/types/storage.d.ts +117 -0
  136. package/dist/types/storage.d.ts.map +1 -0
  137. package/dist/types/storage.js +8 -0
  138. package/dist/types/storage.js.map +1 -0
  139. package/dist/utils/hash.d.ts +31 -0
  140. package/dist/utils/hash.d.ts.map +1 -0
  141. package/dist/utils/hash.js +60 -0
  142. package/dist/utils/hash.js.map +1 -0
  143. package/dist/utils/sha1.d.ts +26 -0
  144. package/dist/utils/sha1.d.ts.map +1 -0
  145. package/dist/utils/sha1.js +127 -0
  146. package/dist/utils/sha1.js.map +1 -0
  147. package/dist/wire/capabilities.d.ts +236 -0
  148. package/dist/wire/capabilities.d.ts.map +1 -0
  149. package/dist/wire/capabilities.js +437 -0
  150. package/dist/wire/capabilities.js.map +1 -0
  151. package/dist/wire/pkt-line.d.ts +67 -0
  152. package/dist/wire/pkt-line.d.ts.map +1 -0
  153. package/dist/wire/pkt-line.js +145 -0
  154. package/dist/wire/pkt-line.js.map +1 -0
  155. package/dist/wire/receive-pack.d.ts +302 -0
  156. package/dist/wire/receive-pack.d.ts.map +1 -0
  157. package/dist/wire/receive-pack.js +885 -0
  158. package/dist/wire/receive-pack.js.map +1 -0
  159. package/dist/wire/smart-http.d.ts +321 -0
  160. package/dist/wire/smart-http.d.ts.map +1 -0
  161. package/dist/wire/smart-http.js +654 -0
  162. package/dist/wire/smart-http.js.map +1 -0
  163. package/dist/wire/upload-pack.d.ts +333 -0
  164. package/dist/wire/upload-pack.d.ts.map +1 -0
  165. package/dist/wire/upload-pack.js +850 -0
  166. package/dist/wire/upload-pack.js.map +1 -0
  167. package/package.json +61 -0
@@ -0,0 +1,421 @@
1
+ /**
2
+ * Git Reference Storage
3
+ *
4
+ * Handles storage and resolution of Git refs (branches, tags, HEAD).
5
+ * Supports both loose refs and packed refs formats.
6
+ */
7
+ /**
8
+ * Error thrown when a ref operation fails
9
+ */
10
+ export class RefError extends Error {
11
+ code;
12
+ refName;
13
+ constructor(message, code, refName) {
14
+ super(message);
15
+ this.code = code;
16
+ this.refName = refName;
17
+ this.name = 'RefError';
18
+ }
19
+ }
20
+ /**
21
+ * Validate a ref name according to Git rules
22
+ * See: https://git-scm.com/docs/git-check-ref-format
23
+ */
24
+ export function isValidRefName(name) {
25
+ // HEAD is always valid
26
+ if (name === 'HEAD') {
27
+ return true;
28
+ }
29
+ // Just @ is invalid
30
+ if (name === '@') {
31
+ return false;
32
+ }
33
+ // Cannot be empty
34
+ if (!name || name.length === 0) {
35
+ return false;
36
+ }
37
+ // Cannot end with /
38
+ if (name.endsWith('/')) {
39
+ return false;
40
+ }
41
+ // Cannot end with .lock
42
+ if (name.endsWith('.lock')) {
43
+ return false;
44
+ }
45
+ // Cannot contain @{
46
+ if (name.includes('@{')) {
47
+ return false;
48
+ }
49
+ // Cannot contain ..
50
+ if (name.includes('..')) {
51
+ return false;
52
+ }
53
+ // Cannot contain control characters (ASCII 0-31), space, ~, ^, :, ?, *, [, \
54
+ const invalidChars = /[\x00-\x1f\x7f ~^:?*[\]\\]/;
55
+ if (invalidChars.test(name)) {
56
+ return false;
57
+ }
58
+ // Split into components and check each
59
+ const components = name.split('/');
60
+ for (const component of components) {
61
+ // Cannot have empty components (// in path)
62
+ if (component.length === 0) {
63
+ return false;
64
+ }
65
+ // Cannot start with .
66
+ if (component.startsWith('.')) {
67
+ return false;
68
+ }
69
+ // Cannot end with .
70
+ if (component.endsWith('.')) {
71
+ return false;
72
+ }
73
+ }
74
+ return true;
75
+ }
76
+ /**
77
+ * Validate a SHA-1 hash
78
+ */
79
+ export function isValidSha(sha) {
80
+ // Must be exactly 40 characters
81
+ if (!sha || sha.length !== 40) {
82
+ return false;
83
+ }
84
+ // Must be valid hex
85
+ return /^[0-9a-fA-F]{40}$/.test(sha);
86
+ }
87
+ /**
88
+ * Parse a ref file content
89
+ */
90
+ export function parseRefContent(content) {
91
+ const trimmed = content.trim();
92
+ // Check for symbolic ref (starts with "ref:")
93
+ if (trimmed.startsWith('ref:')) {
94
+ const target = trimmed.slice(4).trim();
95
+ return { type: 'symbolic', target };
96
+ }
97
+ // Otherwise it's a direct ref (SHA)
98
+ return { type: 'direct', target: trimmed };
99
+ }
100
+ /**
101
+ * Serialize a ref to file content
102
+ */
103
+ export function serializeRefContent(ref) {
104
+ if (ref.type === 'symbolic') {
105
+ return `ref: ${ref.target}\n`;
106
+ }
107
+ return `${ref.target}\n`;
108
+ }
109
+ /**
110
+ * Parse packed-refs file content
111
+ */
112
+ export function parsePackedRefs(content) {
113
+ const refs = new Map();
114
+ if (!content) {
115
+ return refs;
116
+ }
117
+ const lines = content.split(/\r?\n/);
118
+ for (const line of lines) {
119
+ const trimmed = line.trim();
120
+ // Skip empty lines
121
+ if (!trimmed) {
122
+ continue;
123
+ }
124
+ // Skip comment lines
125
+ if (trimmed.startsWith('#')) {
126
+ continue;
127
+ }
128
+ // Skip peeled entries (lines starting with ^)
129
+ if (trimmed.startsWith('^')) {
130
+ continue;
131
+ }
132
+ // Parse "sha refname" format
133
+ const spaceIndex = trimmed.indexOf(' ');
134
+ if (spaceIndex > 0) {
135
+ const sha = trimmed.slice(0, spaceIndex);
136
+ const refName = trimmed.slice(spaceIndex + 1);
137
+ refs.set(refName, sha);
138
+ }
139
+ }
140
+ return refs;
141
+ }
142
+ /**
143
+ * Serialize refs to packed-refs format
144
+ */
145
+ export function serializePackedRefs(refs) {
146
+ const lines = ['# pack-refs with: peeled fully-peeled sorted'];
147
+ // Sort refs alphabetically
148
+ const sortedRefs = Array.from(refs.entries()).sort((a, b) => a[0].localeCompare(b[0]));
149
+ for (const [refName, sha] of sortedRefs) {
150
+ lines.push(`${sha} ${refName}`);
151
+ }
152
+ return lines.join('\n') + '\n';
153
+ }
154
+ /**
155
+ * Ref storage implementation
156
+ */
157
+ export class RefStorage {
158
+ backend;
159
+ constructor(backend) {
160
+ this.backend = backend;
161
+ }
162
+ /**
163
+ * Get a ref by name
164
+ */
165
+ async getRef(name) {
166
+ if (!this.backend.readRef) {
167
+ throw new Error('Backend does not support readRef');
168
+ }
169
+ return this.backend.readRef(name);
170
+ }
171
+ /**
172
+ * Resolve a ref to its final SHA target
173
+ */
174
+ async resolveRef(name, options) {
175
+ const maxDepth = options?.maxDepth ?? 10;
176
+ const chain = [];
177
+ const visited = new Set();
178
+ let currentName = name;
179
+ let ref = null;
180
+ for (let depth = 0; depth < maxDepth; depth++) {
181
+ // Check for circular refs
182
+ if (visited.has(currentName)) {
183
+ throw new RefError(`Circular reference detected: ${currentName}`, 'CIRCULAR_REF', currentName);
184
+ }
185
+ visited.add(currentName);
186
+ ref = await this.getRef(currentName);
187
+ if (!ref) {
188
+ throw new RefError(`Ref not found: ${currentName}`, 'NOT_FOUND', currentName);
189
+ }
190
+ chain.push(ref);
191
+ // If it's a direct ref, we're done
192
+ if (ref.type === 'direct') {
193
+ return {
194
+ ref: chain[0],
195
+ sha: ref.target,
196
+ chain
197
+ };
198
+ }
199
+ // Follow symbolic ref
200
+ currentName = ref.target;
201
+ }
202
+ // Max depth exceeded
203
+ throw new RefError(`Max ref resolution depth exceeded: ${maxDepth}`, 'MAX_DEPTH_EXCEEDED', name);
204
+ }
205
+ /**
206
+ * Update or create a ref
207
+ *
208
+ * Note: For atomic operations, callers can acquire a lock via acquireLock()
209
+ * and pass it via options.lock to avoid double-locking.
210
+ */
211
+ async updateRef(name, target, options) {
212
+ // Validate ref name
213
+ if (!isValidRefName(name)) {
214
+ throw new RefError(`Invalid ref name: ${name}`, 'INVALID_NAME', name);
215
+ }
216
+ // Validate SHA
217
+ if (!isValidSha(target)) {
218
+ throw new RefError(`Invalid SHA: ${target}`, 'INVALID_SHA', name);
219
+ }
220
+ // Use provided lock or acquire a new one
221
+ const externalLock = options?.lock;
222
+ const lock = externalLock ?? await this.backend.acquireLock(name);
223
+ try {
224
+ const existingRef = await this.getRef(name);
225
+ // Handle oldValue check (CAS - compare and swap)
226
+ if (options?.oldValue !== undefined) {
227
+ if (options.oldValue === null) {
228
+ // Expect ref to NOT exist
229
+ if (existingRef) {
230
+ throw new RefError(`Ref already exists: ${name}`, 'ALREADY_EXISTS', name);
231
+ }
232
+ }
233
+ else {
234
+ // Expect ref to have specific value
235
+ if (!existingRef || existingRef.target !== options.oldValue) {
236
+ throw new RefError(`Ref value mismatch: ${name}`, 'CONFLICT', name);
237
+ }
238
+ }
239
+ }
240
+ else if (!options?.force && !options?.create && !existingRef) {
241
+ // If not forcing and not creating, ref must exist
242
+ throw new RefError(`Ref not found: ${name}`, 'NOT_FOUND', name);
243
+ }
244
+ const ref = {
245
+ name,
246
+ target,
247
+ type: 'direct'
248
+ };
249
+ await this.backend.writeRef(ref);
250
+ return ref;
251
+ }
252
+ finally {
253
+ // Only release lock if we acquired it ourselves
254
+ if (!externalLock) {
255
+ await lock.release();
256
+ }
257
+ }
258
+ }
259
+ /**
260
+ * Delete a ref
261
+ */
262
+ async deleteRef(name, options) {
263
+ // Cannot delete HEAD
264
+ if (name === 'HEAD') {
265
+ throw new RefError('Cannot delete HEAD', 'INVALID_NAME', name);
266
+ }
267
+ // Validate ref name
268
+ if (!isValidRefName(name)) {
269
+ throw new RefError(`Invalid ref name: ${name}`, 'INVALID_NAME', name);
270
+ }
271
+ const existingRef = await this.getRef(name);
272
+ // Check oldValue if provided
273
+ if (options?.oldValue !== undefined && options.oldValue !== null) {
274
+ if (!existingRef || existingRef.target !== options.oldValue) {
275
+ throw new RefError(`Ref value mismatch: ${name}`, 'CONFLICT', name);
276
+ }
277
+ }
278
+ if (!existingRef) {
279
+ return false;
280
+ }
281
+ return this.backend.deleteRef(name);
282
+ }
283
+ /**
284
+ * List refs matching a pattern
285
+ */
286
+ async listRefs(options) {
287
+ let refs = await this.backend.listRefs(options?.pattern);
288
+ // Filter out HEAD unless explicitly requested
289
+ if (!options?.includeHead) {
290
+ refs = refs.filter(r => r.name !== 'HEAD');
291
+ }
292
+ else {
293
+ // If includeHead is true, make sure HEAD is in the list
294
+ const hasHead = refs.some(r => r.name === 'HEAD');
295
+ if (!hasHead) {
296
+ const head = await this.getRef('HEAD');
297
+ if (head) {
298
+ refs = [head, ...refs];
299
+ }
300
+ }
301
+ }
302
+ // Filter symbolic refs unless requested
303
+ // Note: Always keep HEAD if includeHead is true, regardless of includeSymbolic
304
+ if (!options?.includeSymbolic) {
305
+ refs = refs.filter(r => r.type !== 'symbolic' || (options?.includeHead && r.name === 'HEAD'));
306
+ }
307
+ return refs;
308
+ }
309
+ /**
310
+ * List all branches
311
+ */
312
+ async listBranches() {
313
+ return this.listRefs({ pattern: 'refs/heads/*' });
314
+ }
315
+ /**
316
+ * List all tags
317
+ */
318
+ async listTags() {
319
+ return this.listRefs({ pattern: 'refs/tags/*' });
320
+ }
321
+ /**
322
+ * Get HEAD ref
323
+ */
324
+ async getHead() {
325
+ const head = await this.getRef('HEAD');
326
+ if (!head) {
327
+ throw new RefError('HEAD not found', 'NOT_FOUND', 'HEAD');
328
+ }
329
+ return head;
330
+ }
331
+ /**
332
+ * Update HEAD (can be symbolic or detached)
333
+ */
334
+ async updateHead(target, symbolic) {
335
+ const ref = {
336
+ name: 'HEAD',
337
+ target,
338
+ type: symbolic ? 'symbolic' : 'direct'
339
+ };
340
+ await this.backend.writeRef(ref);
341
+ return ref;
342
+ }
343
+ /**
344
+ * Check if HEAD is detached
345
+ */
346
+ async isHeadDetached() {
347
+ const head = await this.getHead();
348
+ return head.type === 'direct';
349
+ }
350
+ /**
351
+ * Create a symbolic ref
352
+ */
353
+ async createSymbolicRef(name, target) {
354
+ // Validate ref name
355
+ if (!isValidRefName(name)) {
356
+ throw new RefError(`Invalid ref name: ${name}`, 'INVALID_NAME', name);
357
+ }
358
+ // Cannot point to itself
359
+ if (name === target) {
360
+ throw new RefError(`Symbolic ref cannot point to itself: ${name}`, 'CIRCULAR_REF', name);
361
+ }
362
+ const ref = {
363
+ name,
364
+ target,
365
+ type: 'symbolic'
366
+ };
367
+ await this.backend.writeRef(ref);
368
+ return ref;
369
+ }
370
+ /**
371
+ * Acquire a lock for updating a ref
372
+ */
373
+ async acquireLock(name, timeout) {
374
+ return this.backend.acquireLock(name, timeout);
375
+ }
376
+ /**
377
+ * Pack loose refs into packed-refs file
378
+ */
379
+ async packRefs() {
380
+ const allRefs = await this.backend.listRefs();
381
+ const packed = new Map();
382
+ for (const ref of allRefs) {
383
+ // Don't pack HEAD
384
+ if (ref.name === 'HEAD') {
385
+ continue;
386
+ }
387
+ // Don't pack symbolic refs
388
+ if (ref.type === 'symbolic') {
389
+ continue;
390
+ }
391
+ packed.set(ref.name, ref.target);
392
+ }
393
+ await this.backend.writePackedRefs(packed);
394
+ }
395
+ }
396
+ /**
397
+ * Resolve a ref to its final SHA target (convenience function)
398
+ */
399
+ export async function resolveRef(storage, name, options) {
400
+ const resolved = await storage.resolveRef(name, options);
401
+ return resolved.sha;
402
+ }
403
+ /**
404
+ * Update a ref (convenience function)
405
+ */
406
+ export async function updateRef(storage, name, target, options) {
407
+ return storage.updateRef(name, target, options);
408
+ }
409
+ /**
410
+ * Delete a ref (convenience function)
411
+ */
412
+ export async function deleteRef(storage, name, options) {
413
+ return storage.deleteRef(name, options);
414
+ }
415
+ /**
416
+ * List refs (convenience function)
417
+ */
418
+ export async function listRefs(storage, options) {
419
+ return storage.listRefs(options);
420
+ }
421
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/refs/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Git Tag Operations
3
+ *
4
+ * Handles creation, deletion, and management of Git tags.
5
+ * Supports both lightweight tags (refs pointing to commits)
6
+ * and annotated tags (tag objects with metadata).
7
+ */
8
+ import { Author, TagObject, ObjectType } from '../types/objects';
9
+ import { RefStorage, RefErrorCode } from './storage';
10
+ /**
11
+ * Tag type discriminator
12
+ */
13
+ export type TagType = 'lightweight' | 'annotated';
14
+ /**
15
+ * Represents a Git tag (either lightweight or annotated)
16
+ */
17
+ export interface Tag {
18
+ /** Tag name (e.g., 'v1.0.0') */
19
+ name: string;
20
+ /** Tag type */
21
+ type: TagType;
22
+ /** Target SHA - for lightweight: commit SHA, for annotated: tag object SHA */
23
+ sha: string;
24
+ /** For annotated tags: the commit/object the tag points to */
25
+ targetSha?: string;
26
+ /** For annotated tags: the type of object being tagged */
27
+ targetType?: ObjectType;
28
+ /** For annotated tags: the tagger information */
29
+ tagger?: Author;
30
+ /** For annotated tags: the tag message */
31
+ message?: string;
32
+ /** For annotated tags with GPG signature */
33
+ signature?: string;
34
+ }
35
+ /**
36
+ * Options for creating a tag
37
+ */
38
+ export interface CreateTagOptions {
39
+ /** Create an annotated tag (default: false for lightweight) */
40
+ annotated?: boolean;
41
+ /** Tag message (required for annotated tags) */
42
+ message?: string;
43
+ /** Tagger information (defaults to configured user) */
44
+ tagger?: Author;
45
+ /** Sign the tag with GPG */
46
+ sign?: boolean;
47
+ /** GPG key ID to use for signing */
48
+ keyId?: string;
49
+ /** Force overwrite if tag exists */
50
+ force?: boolean;
51
+ }
52
+ /**
53
+ * Options for listing tags
54
+ */
55
+ export interface ListTagsOptions {
56
+ /** Pattern to filter tags (glob-like, e.g., 'v1.*') */
57
+ pattern?: string;
58
+ /** Sort order: 'name' | 'version' | 'date' */
59
+ sort?: 'name' | 'version' | 'date';
60
+ /** Sort direction */
61
+ sortDirection?: 'asc' | 'desc';
62
+ /** Maximum number of tags to return */
63
+ limit?: number;
64
+ /** Include annotated tag metadata */
65
+ includeMetadata?: boolean;
66
+ }
67
+ /**
68
+ * Options for deleting a tag
69
+ */
70
+ export interface DeleteTagOptions {
71
+ /** Delete even if tag doesn't exist locally */
72
+ force?: boolean;
73
+ }
74
+ /**
75
+ * Options for getting a tag
76
+ */
77
+ export interface GetTagOptions {
78
+ /** Resolve to get full annotated tag info */
79
+ resolve?: boolean;
80
+ }
81
+ /**
82
+ * Result of tag signature verification
83
+ */
84
+ export interface TagSignatureVerification {
85
+ /** Whether the signature is valid */
86
+ valid: boolean;
87
+ /** GPG key ID used for signing */
88
+ keyId?: string;
89
+ /** Signer identity */
90
+ signer?: string;
91
+ /** Trust level of the key */
92
+ trustLevel?: 'ultimate' | 'full' | 'marginal' | 'never' | 'undefined' | 'expired' | 'unknown';
93
+ /** Error message if verification failed */
94
+ error?: string;
95
+ }
96
+ /**
97
+ * Error codes specific to tag operations
98
+ */
99
+ export type TagErrorCode = RefErrorCode | 'TAG_EXISTS' | 'TAG_NOT_FOUND' | 'INVALID_TAG_NAME' | 'MESSAGE_REQUIRED' | 'GPG_ERROR';
100
+ /**
101
+ * Error thrown when a tag operation fails
102
+ */
103
+ export declare class TagError extends Error {
104
+ readonly code: TagErrorCode;
105
+ readonly tagName?: string | undefined;
106
+ constructor(message: string, code: TagErrorCode, tagName?: string | undefined);
107
+ }
108
+ /**
109
+ * Storage backend interface for tag objects
110
+ */
111
+ export interface TagObjectStorage {
112
+ /** Read a tag object by SHA */
113
+ readTagObject(sha: string): Promise<TagObject | null>;
114
+ /** Write a tag object and return its SHA */
115
+ writeTagObject(tag: Omit<TagObject, 'type' | 'data'>): Promise<string>;
116
+ /** Read any object to determine its type */
117
+ readObjectType(sha: string): Promise<ObjectType | null>;
118
+ }
119
+ /**
120
+ * GPG signing interface
121
+ */
122
+ export interface GPGSigner {
123
+ /** Sign data and return the signature */
124
+ sign(data: Uint8Array, keyId?: string): Promise<string>;
125
+ /** Verify a signature */
126
+ verify(data: Uint8Array, signature: string): Promise<TagSignatureVerification>;
127
+ }
128
+ /**
129
+ * Tag manager for handling Git tag operations
130
+ */
131
+ export declare class TagManager {
132
+ constructor(refStorage: RefStorage, objectStorage: TagObjectStorage, gpgSigner?: GPGSigner);
133
+ /**
134
+ * Create a new tag
135
+ */
136
+ createTag(_name: string, _target: string, _options?: CreateTagOptions): Promise<Tag>;
137
+ /**
138
+ * Delete a tag
139
+ */
140
+ deleteTag(_name: string, _options?: DeleteTagOptions): Promise<boolean>;
141
+ /**
142
+ * List all tags
143
+ */
144
+ listTags(_options?: ListTagsOptions): Promise<Tag[]>;
145
+ /**
146
+ * Get a tag by name
147
+ */
148
+ getTag(_name: string, _options?: GetTagOptions): Promise<Tag | null>;
149
+ /**
150
+ * Check if a tag exists
151
+ */
152
+ tagExists(_name: string): Promise<boolean>;
153
+ /**
154
+ * Get the target (commit SHA) that a tag points to
155
+ */
156
+ getTagTarget(_name: string): Promise<string>;
157
+ /**
158
+ * Verify a tag's GPG signature
159
+ */
160
+ verifyTag(_name: string): Promise<TagSignatureVerification>;
161
+ /**
162
+ * Check if a tag is annotated
163
+ */
164
+ isAnnotatedTag(_name: string): Promise<boolean>;
165
+ }
166
+ /**
167
+ * Validate a tag name according to Git rules
168
+ * Similar to ref name rules but with tag-specific constraints
169
+ */
170
+ export declare function isValidTagName(_name: string): boolean;
171
+ /**
172
+ * Check if a string is a valid annotated tag (has tag object)
173
+ */
174
+ export declare function isAnnotatedTag(_tag: Tag): _tag is Tag & {
175
+ type: 'annotated';
176
+ tagger: Author;
177
+ message: string;
178
+ };
179
+ /**
180
+ * Format a tag message (handle line endings, etc.)
181
+ */
182
+ export declare function formatTagMessage(_message: string): string;
183
+ /**
184
+ * Parse a tag message from raw content
185
+ */
186
+ export declare function parseTagMessage(_content: string): {
187
+ message: string;
188
+ signature?: string;
189
+ };
190
+ /**
191
+ * Create a lightweight tag pointing to a commit
192
+ */
193
+ export declare function createTag(_manager: TagManager, _name: string, _target: string, _options?: CreateTagOptions): Promise<Tag>;
194
+ /**
195
+ * Create an annotated tag with message
196
+ */
197
+ export declare function createAnnotatedTag(_manager: TagManager, _name: string, _target: string, _message: string, _tagger: Author, _options?: Omit<CreateTagOptions, 'annotated' | 'message' | 'tagger'>): Promise<Tag>;
198
+ /**
199
+ * Delete a tag
200
+ */
201
+ export declare function deleteTag(_manager: TagManager, _name: string, _options?: DeleteTagOptions): Promise<boolean>;
202
+ /**
203
+ * List all tags
204
+ */
205
+ export declare function listTags(_manager: TagManager, _options?: ListTagsOptions): Promise<Tag[]>;
206
+ /**
207
+ * Get a tag by name
208
+ */
209
+ export declare function getTag(_manager: TagManager, _name: string, _options?: GetTagOptions): Promise<Tag | null>;
210
+ /**
211
+ * Check if a tag is an annotated tag
212
+ */
213
+ export declare function checkIsAnnotatedTag(_manager: TagManager, _name: string): Promise<boolean>;
214
+ /**
215
+ * Verify a tag's signature
216
+ */
217
+ export declare function verifyTagSignature(_manager: TagManager, _name: string): Promise<TagSignatureVerification>;
218
+ /**
219
+ * Get the target commit SHA for a tag
220
+ */
221
+ export declare function getTagTarget(_manager: TagManager, _name: string): Promise<string>;
222
+ /**
223
+ * Sort tags by semantic version
224
+ */
225
+ export declare function sortTagsByVersion(_tags: Tag[], _direction?: 'asc' | 'desc'): Tag[];
226
+ /**
227
+ * Filter tags by glob pattern
228
+ */
229
+ export declare function filterTagsByPattern(_tags: Tag[], _pattern: string): Tag[];
230
+ //# sourceMappingURL=tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}