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 @@
1
+ {"version":3,"file":"full-generation.js","sourceRoot":"","sources":["../../src/pack/full-generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Git Packfile Generation
3
+ *
4
+ * This module provides packfile generation capabilities including:
5
+ * - Pack generation from object sets
6
+ * - Delta compression (OFS_DELTA, REF_DELTA)
7
+ * - Proper PACK header with signature, version, object count
8
+ * - SHA-1 checksum at end of pack
9
+ * - Variable-length integer encoding for sizes
10
+ */
11
+ import { PackObjectType } from './format';
12
+ /**
13
+ * An object that can be packed
14
+ */
15
+ export interface PackableObject {
16
+ sha: string;
17
+ type: PackObjectType;
18
+ data: Uint8Array;
19
+ path?: string;
20
+ }
21
+ /**
22
+ * A delta object that references an external base
23
+ */
24
+ export interface DeltaObject {
25
+ sha: string;
26
+ type: PackObjectType;
27
+ baseSha: string;
28
+ delta: Uint8Array;
29
+ }
30
+ /**
31
+ * Options for pack generation
32
+ */
33
+ export interface GeneratorOptions {
34
+ enableDeltaCompression?: boolean;
35
+ maxDeltaDepth?: number;
36
+ windowSize?: number;
37
+ compressionLevel?: number;
38
+ useRefDelta?: boolean;
39
+ minDeltaSize?: number;
40
+ }
41
+ /**
42
+ * Statistics from pack generation
43
+ */
44
+ export interface PackGenerationStats {
45
+ totalObjects: number;
46
+ deltaObjects: number;
47
+ totalSize: number;
48
+ compressedSize: number;
49
+ maxDeltaDepth: number;
50
+ generationTimeMs: number;
51
+ }
52
+ /**
53
+ * Result of pack generation
54
+ */
55
+ export interface GeneratedPackfile {
56
+ packData: Uint8Array;
57
+ checksum: Uint8Array;
58
+ stats: PackGenerationStats;
59
+ }
60
+ /**
61
+ * A candidate for delta base selection
62
+ */
63
+ export interface DeltaCandidate {
64
+ sha: string;
65
+ type: PackObjectType;
66
+ data: Uint8Array;
67
+ }
68
+ /**
69
+ * Options for thin pack generation
70
+ */
71
+ export interface ThinPackOptions {
72
+ externalObjects: Set<string>;
73
+ baseData?: Map<string, Uint8Array>;
74
+ }
75
+ /**
76
+ * Result of thin pack generation
77
+ */
78
+ export interface ThinPackResult {
79
+ packData: Uint8Array;
80
+ checksum: Uint8Array;
81
+ isThin: boolean;
82
+ missingBases: string[];
83
+ stats: PackGenerationStats;
84
+ }
85
+ /**
86
+ * Compute SHA-1 checksum of pack content
87
+ */
88
+ export declare function computePackChecksum(data: Uint8Array): Uint8Array;
89
+ /**
90
+ * Order objects for optimal compression
91
+ * Groups by type, then sorts by size (larger first for better delta bases)
92
+ */
93
+ export declare function orderObjectsForCompression(objects: PackableObject[]): PackableObject[];
94
+ /**
95
+ * Select the best delta base from candidates
96
+ */
97
+ export declare function selectDeltaBase(target: DeltaCandidate, candidates: DeltaCandidate[]): DeltaCandidate | null;
98
+ export declare class PackfileGenerator {
99
+ private objects;
100
+ private deltaObjects;
101
+ private options;
102
+ constructor(options?: GeneratorOptions);
103
+ get objectCount(): number;
104
+ addObject(object: PackableObject): void;
105
+ addDeltaObject(deltaObj: DeltaObject): void;
106
+ reset(): void;
107
+ generate(): GeneratedPackfile;
108
+ }
109
+ /**
110
+ * Generate a packfile from an array of objects
111
+ * Returns a complete packfile with trailing SHA-1 checksum
112
+ */
113
+ export declare function generatePackfile(objects: PackableObject[]): Uint8Array;
114
+ /**
115
+ * Generate a thin pack that can reference external objects
116
+ */
117
+ export declare function generateThinPack(objects: PackableObject[], options: ThinPackOptions): ThinPackResult;
118
+ //# sourceMappingURL=generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/pack/generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,459 @@
1
+ /**
2
+ * Git Packfile Generation
3
+ *
4
+ * This module provides packfile generation capabilities including:
5
+ * - Pack generation from object sets
6
+ * - Delta compression (OFS_DELTA, REF_DELTA)
7
+ * - Proper PACK header with signature, version, object count
8
+ * - SHA-1 checksum at end of pack
9
+ * - Variable-length integer encoding for sizes
10
+ */
11
+ import pako from 'pako';
12
+ import { PackObjectType, encodeTypeAndSize } from './format';
13
+ import { createDelta } from './delta';
14
+ import { sha1 } from '../utils/sha1';
15
+ // ============================================================================
16
+ // Helper Functions
17
+ // ============================================================================
18
+ /**
19
+ * Compute SHA-1 checksum of pack content
20
+ */
21
+ export function computePackChecksum(data) {
22
+ return sha1(data);
23
+ }
24
+ /**
25
+ * Create pack file header
26
+ */
27
+ function createPackHeader(objectCount) {
28
+ const header = new Uint8Array(12);
29
+ // Signature: "PACK"
30
+ header[0] = 0x50; // P
31
+ header[1] = 0x41; // A
32
+ header[2] = 0x43; // C
33
+ header[3] = 0x4b; // K
34
+ // Version: 2 (big-endian)
35
+ header[4] = 0;
36
+ header[5] = 0;
37
+ header[6] = 0;
38
+ header[7] = 2;
39
+ // Object count (big-endian)
40
+ header[8] = (objectCount >> 24) & 0xff;
41
+ header[9] = (objectCount >> 16) & 0xff;
42
+ header[10] = (objectCount >> 8) & 0xff;
43
+ header[11] = objectCount & 0xff;
44
+ return header;
45
+ }
46
+ /**
47
+ * Encode offset for OFS_DELTA
48
+ * Uses variable-length encoding with MSB as continuation bit
49
+ */
50
+ function encodeOffset(offset) {
51
+ const bytes = [];
52
+ // First byte: 7 bits of offset (no continuation)
53
+ bytes.push(offset & 0x7f);
54
+ offset >>>= 7;
55
+ // Subsequent bytes: continuation bit + 7 bits, but we need to subtract 1
56
+ // to avoid ambiguity
57
+ while (offset > 0) {
58
+ offset -= 1;
59
+ bytes.unshift((offset & 0x7f) | 0x80);
60
+ offset >>>= 7;
61
+ }
62
+ return new Uint8Array(bytes);
63
+ }
64
+ /**
65
+ * Hex string to bytes
66
+ */
67
+ function hexToBytes(hex) {
68
+ const bytes = new Uint8Array(hex.length / 2);
69
+ for (let i = 0; i < hex.length; i += 2) {
70
+ bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);
71
+ }
72
+ return bytes;
73
+ }
74
+ /**
75
+ * Concatenate multiple Uint8Arrays
76
+ */
77
+ function concatArrays(arrays) {
78
+ let totalLength = 0;
79
+ for (const arr of arrays) {
80
+ totalLength += arr.length;
81
+ }
82
+ const result = new Uint8Array(totalLength);
83
+ let offset = 0;
84
+ for (const arr of arrays) {
85
+ result.set(arr, offset);
86
+ offset += arr.length;
87
+ }
88
+ return result;
89
+ }
90
+ /**
91
+ * Calculate similarity between two byte arrays (simple hash-based)
92
+ */
93
+ function calculateSimilarity(a, b) {
94
+ if (a.length === 0 || b.length === 0)
95
+ return 0;
96
+ // Use a simple approach: count matching 4-byte sequences
97
+ const windowSize = 4;
98
+ if (a.length < windowSize || b.length < windowSize) {
99
+ // For small objects, compare byte by byte
100
+ let matches = 0;
101
+ const minLen = Math.min(a.length, b.length);
102
+ for (let i = 0; i < minLen; i++) {
103
+ if (a[i] === b[i])
104
+ matches++;
105
+ }
106
+ return matches / Math.max(a.length, b.length);
107
+ }
108
+ // Build hash set from 'a'
109
+ const hashes = new Set();
110
+ for (let i = 0; i <= a.length - windowSize; i++) {
111
+ let hash = 0;
112
+ for (let j = 0; j < windowSize; j++) {
113
+ hash = ((hash << 5) - hash + a[i + j]) | 0;
114
+ }
115
+ hashes.add(hash);
116
+ }
117
+ // Count matches in 'b'
118
+ let matches = 0;
119
+ for (let i = 0; i <= b.length - windowSize; i++) {
120
+ let hash = 0;
121
+ for (let j = 0; j < windowSize; j++) {
122
+ hash = ((hash << 5) - hash + b[i + j]) | 0;
123
+ }
124
+ if (hashes.has(hash))
125
+ matches++;
126
+ }
127
+ return matches / Math.max(a.length - windowSize + 1, b.length - windowSize + 1);
128
+ }
129
+ // ============================================================================
130
+ // Object Ordering
131
+ // ============================================================================
132
+ /**
133
+ * Order objects for optimal compression
134
+ * Groups by type, then sorts by size (larger first for better delta bases)
135
+ */
136
+ export function orderObjectsForCompression(objects) {
137
+ // Define type order: commits, trees, blobs, tags
138
+ const typeOrder = {
139
+ [PackObjectType.OBJ_COMMIT]: 0,
140
+ [PackObjectType.OBJ_TREE]: 1,
141
+ [PackObjectType.OBJ_BLOB]: 2,
142
+ [PackObjectType.OBJ_TAG]: 3,
143
+ [PackObjectType.OBJ_OFS_DELTA]: 4,
144
+ [PackObjectType.OBJ_REF_DELTA]: 5
145
+ };
146
+ return [...objects].sort((a, b) => {
147
+ // First, sort by type
148
+ const typeCompare = typeOrder[a.type] - typeOrder[b.type];
149
+ if (typeCompare !== 0)
150
+ return typeCompare;
151
+ // Within same type, sort by path if available (groups similar files)
152
+ if (a.path && b.path) {
153
+ const pathCompare = a.path.localeCompare(b.path);
154
+ if (pathCompare !== 0)
155
+ return pathCompare;
156
+ }
157
+ // Then by size (larger first - better delta bases)
158
+ return b.data.length - a.data.length;
159
+ });
160
+ }
161
+ /**
162
+ * Select the best delta base from candidates
163
+ */
164
+ export function selectDeltaBase(target, candidates) {
165
+ if (candidates.length === 0)
166
+ return null;
167
+ let bestCandidate = null;
168
+ let bestSimilarity = 0;
169
+ for (const candidate of candidates) {
170
+ // Only consider same type for delta
171
+ if (candidate.type !== target.type)
172
+ continue;
173
+ // Don't delta against self
174
+ if (candidate.sha === target.sha)
175
+ continue;
176
+ const similarity = calculateSimilarity(candidate.data, target.data);
177
+ if (similarity > bestSimilarity) {
178
+ bestSimilarity = similarity;
179
+ bestCandidate = candidate;
180
+ }
181
+ }
182
+ // Only return if similarity is good enough
183
+ return bestSimilarity > 0.3 ? bestCandidate : null;
184
+ }
185
+ export class PackfileGenerator {
186
+ objects = new Map();
187
+ deltaObjects = [];
188
+ options;
189
+ constructor(options = {}) {
190
+ this.options = {
191
+ enableDeltaCompression: options.enableDeltaCompression ?? false,
192
+ maxDeltaDepth: options.maxDeltaDepth ?? 50,
193
+ windowSize: options.windowSize ?? 10,
194
+ compressionLevel: options.compressionLevel ?? 6,
195
+ useRefDelta: options.useRefDelta ?? false,
196
+ minDeltaSize: options.minDeltaSize ?? 0 // Default to 0, use caller-specified value if set
197
+ };
198
+ }
199
+ get objectCount() {
200
+ return this.objects.size + this.deltaObjects.length;
201
+ }
202
+ addObject(object) {
203
+ // Skip duplicates
204
+ if (this.objects.has(object.sha))
205
+ return;
206
+ this.objects.set(object.sha, {
207
+ sha: object.sha,
208
+ type: object.type,
209
+ data: object.data,
210
+ path: object.path,
211
+ isDelta: false,
212
+ depth: 0
213
+ });
214
+ }
215
+ addDeltaObject(deltaObj) {
216
+ this.deltaObjects.push(deltaObj);
217
+ }
218
+ reset() {
219
+ this.objects.clear();
220
+ this.deltaObjects = [];
221
+ }
222
+ generate() {
223
+ const startTime = Date.now();
224
+ let totalSize = 0;
225
+ let compressedSize = 0;
226
+ let deltaCount = 0;
227
+ let maxDeltaDepth = 0;
228
+ // Get all objects and order them
229
+ const objectList = Array.from(this.objects.values());
230
+ const orderedObjects = orderObjectsForCompression(objectList.map(o => ({ sha: o.sha, type: o.type, data: o.data, path: o.path })));
231
+ // Calculate total size
232
+ for (const obj of orderedObjects) {
233
+ totalSize += obj.data.length;
234
+ }
235
+ // Build offset map for OFS_DELTA
236
+ const offsetMap = new Map();
237
+ const parts = [];
238
+ // Create header
239
+ const header = createPackHeader(orderedObjects.length + this.deltaObjects.length);
240
+ parts.push(header);
241
+ let currentOffset = 12; // After header
242
+ // Compute delta chains if enabled
243
+ const deltaChains = new Map();
244
+ if (this.options.enableDeltaCompression) {
245
+ // Window of recent objects for delta comparison
246
+ const window = [];
247
+ const depthMap = new Map();
248
+ for (const obj of orderedObjects) {
249
+ const internalObj = this.objects.get(obj.sha);
250
+ // Skip small objects
251
+ if (obj.data.length < (this.options.minDeltaSize ?? 50)) {
252
+ window.push(internalObj);
253
+ if (window.length > (this.options.windowSize ?? 10)) {
254
+ window.shift();
255
+ }
256
+ continue;
257
+ }
258
+ // Look for a good base in the window
259
+ let bestBase = null;
260
+ let bestDelta = null;
261
+ let bestSavings = 0;
262
+ for (const candidate of window) {
263
+ if (candidate.type !== obj.type)
264
+ continue;
265
+ // Check depth limit
266
+ const candidateDepth = depthMap.get(candidate.sha) ?? 0;
267
+ if (candidateDepth >= (this.options.maxDeltaDepth ?? 50))
268
+ continue;
269
+ const delta = createDelta(candidate.data, obj.data);
270
+ const savings = obj.data.length - delta.length;
271
+ if (savings > bestSavings && delta.length < obj.data.length * 0.9) {
272
+ bestBase = candidate;
273
+ bestDelta = delta;
274
+ bestSavings = savings;
275
+ }
276
+ }
277
+ if (bestBase && bestDelta) {
278
+ const depth = (depthMap.get(bestBase.sha) ?? 0) + 1;
279
+ deltaChains.set(obj.sha, { base: bestBase, delta: bestDelta, depth });
280
+ depthMap.set(obj.sha, depth);
281
+ if (depth > maxDeltaDepth)
282
+ maxDeltaDepth = depth;
283
+ }
284
+ window.push(internalObj);
285
+ if (window.length > (this.options.windowSize ?? 10)) {
286
+ window.shift();
287
+ }
288
+ }
289
+ }
290
+ // Write objects
291
+ for (const obj of orderedObjects) {
292
+ const objStart = currentOffset;
293
+ offsetMap.set(obj.sha, objStart);
294
+ const deltaInfo = deltaChains.get(obj.sha);
295
+ if (deltaInfo && offsetMap.has(deltaInfo.base.sha)) {
296
+ // Write as OFS_DELTA
297
+ const baseOffset = offsetMap.get(deltaInfo.base.sha);
298
+ const relativeOffset = objStart - baseOffset;
299
+ // OFS_DELTA header
300
+ const typeAndSize = encodeTypeAndSize(PackObjectType.OBJ_OFS_DELTA, deltaInfo.delta.length);
301
+ const offsetEncoded = encodeOffset(relativeOffset);
302
+ const compressed = pako.deflate(deltaInfo.delta, { level: this.options.compressionLevel });
303
+ parts.push(typeAndSize);
304
+ parts.push(offsetEncoded);
305
+ parts.push(compressed);
306
+ currentOffset += typeAndSize.length + offsetEncoded.length + compressed.length;
307
+ compressedSize += compressed.length;
308
+ deltaCount++;
309
+ }
310
+ else {
311
+ // Write as full object
312
+ const typeAndSize = encodeTypeAndSize(obj.type, obj.data.length);
313
+ const compressed = pako.deflate(obj.data, { level: this.options.compressionLevel });
314
+ parts.push(typeAndSize);
315
+ parts.push(compressed);
316
+ currentOffset += typeAndSize.length + compressed.length;
317
+ compressedSize += compressed.length;
318
+ }
319
+ }
320
+ // Write REF_DELTA objects
321
+ for (const deltaObj of this.deltaObjects) {
322
+ // REF_DELTA header
323
+ const typeAndSize = encodeTypeAndSize(PackObjectType.OBJ_REF_DELTA, deltaObj.delta.length);
324
+ const baseShaBytes = hexToBytes(deltaObj.baseSha);
325
+ const compressed = pako.deflate(deltaObj.delta, { level: this.options.compressionLevel });
326
+ parts.push(typeAndSize);
327
+ parts.push(baseShaBytes);
328
+ parts.push(compressed);
329
+ currentOffset += typeAndSize.length + baseShaBytes.length + compressed.length;
330
+ compressedSize += compressed.length;
331
+ totalSize += deltaObj.delta.length;
332
+ }
333
+ // Combine all parts (this is the pack data without trailing checksum)
334
+ const packData = concatArrays(parts);
335
+ // Calculate checksum of the pack data
336
+ const checksum = computePackChecksum(packData);
337
+ const generationTimeMs = Date.now() - startTime;
338
+ // packData does NOT include the trailing checksum
339
+ // To get a complete packfile, concatenate packData + checksum
340
+ // This allows the caller to verify or manipulate the pack before finalizing
341
+ return {
342
+ packData,
343
+ checksum,
344
+ stats: {
345
+ totalObjects: orderedObjects.length + this.deltaObjects.length,
346
+ deltaObjects: deltaCount,
347
+ totalSize,
348
+ compressedSize,
349
+ maxDeltaDepth,
350
+ generationTimeMs
351
+ }
352
+ };
353
+ }
354
+ }
355
+ // ============================================================================
356
+ // Main Functions
357
+ // ============================================================================
358
+ /**
359
+ * Generate a packfile from an array of objects
360
+ * Returns a complete packfile with trailing SHA-1 checksum
361
+ */
362
+ export function generatePackfile(objects) {
363
+ const generator = new PackfileGenerator();
364
+ for (const obj of objects) {
365
+ generator.addObject(obj);
366
+ }
367
+ const result = generator.generate();
368
+ // Combine packData with checksum to form complete packfile
369
+ const completePackfile = new Uint8Array(result.packData.length + result.checksum.length);
370
+ completePackfile.set(result.packData, 0);
371
+ completePackfile.set(result.checksum, result.packData.length);
372
+ return completePackfile;
373
+ }
374
+ /**
375
+ * Generate a thin pack that can reference external objects
376
+ */
377
+ export function generateThinPack(objects, options) {
378
+ const startTime = Date.now();
379
+ const missingBases = [];
380
+ let deltaCount = 0;
381
+ let totalSize = 0;
382
+ let compressedSize = 0;
383
+ // Check if any objects can use external bases
384
+ const hasExternalBases = options.externalObjects.size > 0;
385
+ const parts = [];
386
+ // Create header
387
+ const header = createPackHeader(objects.length);
388
+ parts.push(header);
389
+ // Process objects
390
+ for (const obj of objects) {
391
+ totalSize += obj.data.length;
392
+ // Try to find an external base for delta
393
+ let usedExternalBase = false;
394
+ if (hasExternalBases && options.baseData) {
395
+ for (const externalSha of options.externalObjects) {
396
+ const baseData = options.baseData.get(externalSha);
397
+ if (baseData) {
398
+ // Calculate similarity
399
+ const similarity = calculateSimilarity(baseData, obj.data);
400
+ if (similarity > 0.3) {
401
+ // Create delta
402
+ const delta = createDelta(baseData, obj.data);
403
+ if (delta.length < obj.data.length * 0.9) {
404
+ // Use REF_DELTA
405
+ const typeAndSize = encodeTypeAndSize(PackObjectType.OBJ_REF_DELTA, delta.length);
406
+ const baseShaBytes = hexToBytes(externalSha);
407
+ const compressed = pako.deflate(delta);
408
+ parts.push(typeAndSize);
409
+ parts.push(baseShaBytes);
410
+ parts.push(compressed);
411
+ compressedSize += compressed.length;
412
+ deltaCount++;
413
+ usedExternalBase = true;
414
+ if (!missingBases.includes(externalSha)) {
415
+ missingBases.push(externalSha);
416
+ }
417
+ break;
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ if (!usedExternalBase) {
424
+ // Write as full object
425
+ const typeAndSize = encodeTypeAndSize(obj.type, obj.data.length);
426
+ const compressed = pako.deflate(obj.data);
427
+ parts.push(typeAndSize);
428
+ parts.push(compressed);
429
+ compressedSize += compressed.length;
430
+ }
431
+ }
432
+ // Combine all parts
433
+ const packData = concatArrays(parts);
434
+ // Calculate checksum
435
+ const checksum = computePackChecksum(packData);
436
+ // Create final packfile with checksum
437
+ const finalPack = new Uint8Array(packData.length + 20);
438
+ finalPack.set(packData, 0);
439
+ finalPack.set(checksum, packData.length);
440
+ const generationTimeMs = Date.now() - startTime;
441
+ // A pack is considered "thin" if it's generated with the capability to reference
442
+ // external objects, even if no actual external references were used
443
+ const isThin = hasExternalBases;
444
+ return {
445
+ packData: finalPack,
446
+ checksum,
447
+ isThin,
448
+ missingBases,
449
+ stats: {
450
+ totalObjects: objects.length,
451
+ deltaObjects: deltaCount,
452
+ totalSize,
453
+ compressedSize,
454
+ maxDeltaDepth: deltaCount > 0 ? 1 : 0,
455
+ generationTimeMs
456
+ }
457
+ };
458
+ }
459
+ //# sourceMappingURL=generation.js.map