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.
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/dist/durable-object/object-store.d.ts +113 -0
- package/dist/durable-object/object-store.d.ts.map +1 -0
- package/dist/durable-object/object-store.js +387 -0
- package/dist/durable-object/object-store.js.map +1 -0
- package/dist/durable-object/schema.d.ts +17 -0
- package/dist/durable-object/schema.d.ts.map +1 -0
- package/dist/durable-object/schema.js +43 -0
- package/dist/durable-object/schema.js.map +1 -0
- package/dist/durable-object/wal.d.ts +111 -0
- package/dist/durable-object/wal.d.ts.map +1 -0
- package/dist/durable-object/wal.js +200 -0
- package/dist/durable-object/wal.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/adapter.d.ts +231 -0
- package/dist/mcp/adapter.d.ts.map +1 -0
- package/dist/mcp/adapter.js +502 -0
- package/dist/mcp/adapter.js.map +1 -0
- package/dist/mcp/sandbox.d.ts +261 -0
- package/dist/mcp/sandbox.d.ts.map +1 -0
- package/dist/mcp/sandbox.js +983 -0
- package/dist/mcp/sandbox.js.map +1 -0
- package/dist/mcp/sdk-adapter.d.ts +413 -0
- package/dist/mcp/sdk-adapter.d.ts.map +1 -0
- package/dist/mcp/sdk-adapter.js +672 -0
- package/dist/mcp/sdk-adapter.js.map +1 -0
- package/dist/mcp/tools.d.ts +133 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1604 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/ops/blame.d.ts +148 -0
- package/dist/ops/blame.d.ts.map +1 -0
- package/dist/ops/blame.js +754 -0
- package/dist/ops/blame.js.map +1 -0
- package/dist/ops/branch.d.ts +215 -0
- package/dist/ops/branch.d.ts.map +1 -0
- package/dist/ops/branch.js +608 -0
- package/dist/ops/branch.js.map +1 -0
- package/dist/ops/commit-traversal.d.ts +209 -0
- package/dist/ops/commit-traversal.d.ts.map +1 -0
- package/dist/ops/commit-traversal.js +755 -0
- package/dist/ops/commit-traversal.js.map +1 -0
- package/dist/ops/commit.d.ts +221 -0
- package/dist/ops/commit.d.ts.map +1 -0
- package/dist/ops/commit.js +606 -0
- package/dist/ops/commit.js.map +1 -0
- package/dist/ops/merge-base.d.ts +223 -0
- package/dist/ops/merge-base.d.ts.map +1 -0
- package/dist/ops/merge-base.js +581 -0
- package/dist/ops/merge-base.js.map +1 -0
- package/dist/ops/merge.d.ts +385 -0
- package/dist/ops/merge.d.ts.map +1 -0
- package/dist/ops/merge.js +1203 -0
- package/dist/ops/merge.js.map +1 -0
- package/dist/ops/tag.d.ts +182 -0
- package/dist/ops/tag.d.ts.map +1 -0
- package/dist/ops/tag.js +608 -0
- package/dist/ops/tag.js.map +1 -0
- package/dist/ops/tree-builder.d.ts +82 -0
- package/dist/ops/tree-builder.d.ts.map +1 -0
- package/dist/ops/tree-builder.js +246 -0
- package/dist/ops/tree-builder.js.map +1 -0
- package/dist/ops/tree-diff.d.ts +243 -0
- package/dist/ops/tree-diff.d.ts.map +1 -0
- package/dist/ops/tree-diff.js +657 -0
- package/dist/ops/tree-diff.js.map +1 -0
- package/dist/pack/delta.d.ts +68 -0
- package/dist/pack/delta.d.ts.map +1 -0
- package/dist/pack/delta.js +343 -0
- package/dist/pack/delta.js.map +1 -0
- package/dist/pack/format.d.ts +84 -0
- package/dist/pack/format.d.ts.map +1 -0
- package/dist/pack/format.js +261 -0
- package/dist/pack/format.js.map +1 -0
- package/dist/pack/full-generation.d.ts +327 -0
- package/dist/pack/full-generation.d.ts.map +1 -0
- package/dist/pack/full-generation.js +1159 -0
- package/dist/pack/full-generation.js.map +1 -0
- package/dist/pack/generation.d.ts +118 -0
- package/dist/pack/generation.d.ts.map +1 -0
- package/dist/pack/generation.js +459 -0
- package/dist/pack/generation.js.map +1 -0
- package/dist/pack/index.d.ts +181 -0
- package/dist/pack/index.d.ts.map +1 -0
- package/dist/pack/index.js +552 -0
- package/dist/pack/index.js.map +1 -0
- package/dist/refs/branch.d.ts +224 -0
- package/dist/refs/branch.d.ts.map +1 -0
- package/dist/refs/branch.js +170 -0
- package/dist/refs/branch.js.map +1 -0
- package/dist/refs/storage.d.ts +208 -0
- package/dist/refs/storage.d.ts.map +1 -0
- package/dist/refs/storage.js +421 -0
- package/dist/refs/storage.js.map +1 -0
- package/dist/refs/tag.d.ts +230 -0
- package/dist/refs/tag.d.ts.map +1 -0
- package/dist/refs/tag.js +188 -0
- package/dist/refs/tag.js.map +1 -0
- package/dist/storage/lru-cache.d.ts +188 -0
- package/dist/storage/lru-cache.d.ts.map +1 -0
- package/dist/storage/lru-cache.js +410 -0
- package/dist/storage/lru-cache.js.map +1 -0
- package/dist/storage/object-index.d.ts +140 -0
- package/dist/storage/object-index.d.ts.map +1 -0
- package/dist/storage/object-index.js +166 -0
- package/dist/storage/object-index.js.map +1 -0
- package/dist/storage/r2-pack.d.ts +394 -0
- package/dist/storage/r2-pack.d.ts.map +1 -0
- package/dist/storage/r2-pack.js +1062 -0
- package/dist/storage/r2-pack.js.map +1 -0
- package/dist/tiered/cdc-pipeline.d.ts +316 -0
- package/dist/tiered/cdc-pipeline.d.ts.map +1 -0
- package/dist/tiered/cdc-pipeline.js +771 -0
- package/dist/tiered/cdc-pipeline.js.map +1 -0
- package/dist/tiered/migration.d.ts +242 -0
- package/dist/tiered/migration.d.ts.map +1 -0
- package/dist/tiered/migration.js +592 -0
- package/dist/tiered/migration.js.map +1 -0
- package/dist/tiered/parquet-writer.d.ts +248 -0
- package/dist/tiered/parquet-writer.d.ts.map +1 -0
- package/dist/tiered/parquet-writer.js +555 -0
- package/dist/tiered/parquet-writer.js.map +1 -0
- package/dist/tiered/read-path.d.ts +141 -0
- package/dist/tiered/read-path.d.ts.map +1 -0
- package/dist/tiered/read-path.js +204 -0
- package/dist/tiered/read-path.js.map +1 -0
- package/dist/types/objects.d.ts +53 -0
- package/dist/types/objects.d.ts.map +1 -0
- package/dist/types/objects.js +291 -0
- package/dist/types/objects.js.map +1 -0
- package/dist/types/storage.d.ts +117 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js +8 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/utils/hash.d.ts +31 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +60 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/sha1.d.ts +26 -0
- package/dist/utils/sha1.d.ts.map +1 -0
- package/dist/utils/sha1.js +127 -0
- package/dist/utils/sha1.js.map +1 -0
- package/dist/wire/capabilities.d.ts +236 -0
- package/dist/wire/capabilities.d.ts.map +1 -0
- package/dist/wire/capabilities.js +437 -0
- package/dist/wire/capabilities.js.map +1 -0
- package/dist/wire/pkt-line.d.ts +67 -0
- package/dist/wire/pkt-line.d.ts.map +1 -0
- package/dist/wire/pkt-line.js +145 -0
- package/dist/wire/pkt-line.js.map +1 -0
- package/dist/wire/receive-pack.d.ts +302 -0
- package/dist/wire/receive-pack.d.ts.map +1 -0
- package/dist/wire/receive-pack.js +885 -0
- package/dist/wire/receive-pack.js.map +1 -0
- package/dist/wire/smart-http.d.ts +321 -0
- package/dist/wire/smart-http.d.ts.map +1 -0
- package/dist/wire/smart-http.js +654 -0
- package/dist/wire/smart-http.js.map +1 -0
- package/dist/wire/upload-pack.d.ts +333 -0
- package/dist/wire/upload-pack.d.ts.map +1 -0
- package/dist/wire/upload-pack.js +850 -0
- package/dist/wire/upload-pack.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Packfile Format Implementation
|
|
3
|
+
*
|
|
4
|
+
* The packfile format is used by git for efficient storage and transfer of objects.
|
|
5
|
+
* Format:
|
|
6
|
+
* - 4 bytes: "PACK" signature
|
|
7
|
+
* - 4 bytes: version number (network byte order, big-endian)
|
|
8
|
+
* - 4 bytes: number of objects (network byte order)
|
|
9
|
+
* - N objects: each object has header + compressed data
|
|
10
|
+
* - 20 bytes: SHA-1 checksum of all preceding content
|
|
11
|
+
*
|
|
12
|
+
* Object header encoding:
|
|
13
|
+
* - First byte: (MSB) continuation bit | 3-bit type | 4-bit size LSB
|
|
14
|
+
* - Subsequent bytes: (MSB) continuation bit | 7-bit size
|
|
15
|
+
*
|
|
16
|
+
* Object types:
|
|
17
|
+
* - 1: commit
|
|
18
|
+
* - 2: tree
|
|
19
|
+
* - 3: blob
|
|
20
|
+
* - 4: tag
|
|
21
|
+
* - 6: ofs_delta (offset delta)
|
|
22
|
+
* - 7: ref_delta (reference delta)
|
|
23
|
+
*/
|
|
24
|
+
import pako from 'pako';
|
|
25
|
+
import { sha1 } from '../utils/sha1';
|
|
26
|
+
// Constants
|
|
27
|
+
export const PACK_SIGNATURE = 'PACK';
|
|
28
|
+
export const PACK_VERSION = 2;
|
|
29
|
+
// Pack object types
|
|
30
|
+
export var PackObjectType;
|
|
31
|
+
(function (PackObjectType) {
|
|
32
|
+
PackObjectType[PackObjectType["OBJ_COMMIT"] = 1] = "OBJ_COMMIT";
|
|
33
|
+
PackObjectType[PackObjectType["OBJ_TREE"] = 2] = "OBJ_TREE";
|
|
34
|
+
PackObjectType[PackObjectType["OBJ_BLOB"] = 3] = "OBJ_BLOB";
|
|
35
|
+
PackObjectType[PackObjectType["OBJ_TAG"] = 4] = "OBJ_TAG";
|
|
36
|
+
PackObjectType[PackObjectType["OBJ_OFS_DELTA"] = 6] = "OBJ_OFS_DELTA";
|
|
37
|
+
PackObjectType[PackObjectType["OBJ_REF_DELTA"] = 7] = "OBJ_REF_DELTA";
|
|
38
|
+
})(PackObjectType || (PackObjectType = {}));
|
|
39
|
+
// Type conversion utilities
|
|
40
|
+
export function packObjectTypeToString(type) {
|
|
41
|
+
switch (type) {
|
|
42
|
+
case PackObjectType.OBJ_COMMIT:
|
|
43
|
+
return 'commit';
|
|
44
|
+
case PackObjectType.OBJ_TREE:
|
|
45
|
+
return 'tree';
|
|
46
|
+
case PackObjectType.OBJ_BLOB:
|
|
47
|
+
return 'blob';
|
|
48
|
+
case PackObjectType.OBJ_TAG:
|
|
49
|
+
return 'tag';
|
|
50
|
+
case PackObjectType.OBJ_OFS_DELTA:
|
|
51
|
+
return 'ofs_delta';
|
|
52
|
+
case PackObjectType.OBJ_REF_DELTA:
|
|
53
|
+
return 'ref_delta';
|
|
54
|
+
default:
|
|
55
|
+
throw new Error(`Invalid pack object type: ${type}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function stringToPackObjectType(str) {
|
|
59
|
+
switch (str) {
|
|
60
|
+
case 'commit':
|
|
61
|
+
return PackObjectType.OBJ_COMMIT;
|
|
62
|
+
case 'tree':
|
|
63
|
+
return PackObjectType.OBJ_TREE;
|
|
64
|
+
case 'blob':
|
|
65
|
+
return PackObjectType.OBJ_BLOB;
|
|
66
|
+
case 'tag':
|
|
67
|
+
return PackObjectType.OBJ_TAG;
|
|
68
|
+
default:
|
|
69
|
+
throw new Error(`Invalid object type string: ${str}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Variable-length integer encoding (similar to Git's varint encoding)
|
|
73
|
+
export function encodeVarint(value) {
|
|
74
|
+
const bytes = [];
|
|
75
|
+
// Encode value in 7-bit chunks with continuation bit
|
|
76
|
+
do {
|
|
77
|
+
let byte = value & 0x7f;
|
|
78
|
+
value >>>= 7;
|
|
79
|
+
if (value > 0) {
|
|
80
|
+
byte |= 0x80; // Set continuation bit
|
|
81
|
+
}
|
|
82
|
+
bytes.push(byte);
|
|
83
|
+
} while (value > 0);
|
|
84
|
+
return new Uint8Array(bytes);
|
|
85
|
+
}
|
|
86
|
+
export function decodeVarint(data, offset) {
|
|
87
|
+
let value = 0;
|
|
88
|
+
let shift = 0;
|
|
89
|
+
let bytesRead = 0;
|
|
90
|
+
// Maximum bytes for a 64-bit varint is 10 (ceil(64/7))
|
|
91
|
+
// For JavaScript's safe integer range, 8 bytes is sufficient
|
|
92
|
+
const MAX_VARINT_BYTES = 10;
|
|
93
|
+
while (true) {
|
|
94
|
+
if (offset + bytesRead >= data.length) {
|
|
95
|
+
throw new Error(`Varint decoding failed: unexpected end of data at offset ${offset + bytesRead}`);
|
|
96
|
+
}
|
|
97
|
+
if (bytesRead >= MAX_VARINT_BYTES) {
|
|
98
|
+
throw new Error(`Varint decoding failed: exceeded maximum length of ${MAX_VARINT_BYTES} bytes (possible infinite loop or corrupted data)`);
|
|
99
|
+
}
|
|
100
|
+
const byte = data[offset + bytesRead];
|
|
101
|
+
bytesRead++;
|
|
102
|
+
value |= (byte & 0x7f) << shift;
|
|
103
|
+
if ((byte & 0x80) === 0) {
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
shift += 7;
|
|
107
|
+
}
|
|
108
|
+
return { value, bytesRead };
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Encode object type and size into pack object header format
|
|
112
|
+
*
|
|
113
|
+
* First byte: MSB continuation bit | 3-bit type | 4-bit size LSB
|
|
114
|
+
* Subsequent bytes: MSB continuation bit | 7-bit size continuation
|
|
115
|
+
*/
|
|
116
|
+
export function encodeTypeAndSize(type, size) {
|
|
117
|
+
const bytes = [];
|
|
118
|
+
// First byte: continuation bit (if needed) | type (3 bits) | size low 4 bits
|
|
119
|
+
let firstByte = (type << 4) | (size & 0x0f);
|
|
120
|
+
size >>>= 4;
|
|
121
|
+
if (size > 0) {
|
|
122
|
+
firstByte |= 0x80; // Set continuation bit
|
|
123
|
+
}
|
|
124
|
+
bytes.push(firstByte);
|
|
125
|
+
// Subsequent bytes: continuation bit | 7 bits of size
|
|
126
|
+
while (size > 0) {
|
|
127
|
+
let byte = size & 0x7f;
|
|
128
|
+
size >>>= 7;
|
|
129
|
+
if (size > 0) {
|
|
130
|
+
byte |= 0x80;
|
|
131
|
+
}
|
|
132
|
+
bytes.push(byte);
|
|
133
|
+
}
|
|
134
|
+
return new Uint8Array(bytes);
|
|
135
|
+
}
|
|
136
|
+
export function decodeTypeAndSize(data, offset) {
|
|
137
|
+
// Maximum bytes for type+size header (first byte + continuation bytes)
|
|
138
|
+
// Similar to varint, limit to prevent infinite loops
|
|
139
|
+
const MAX_HEADER_BYTES = 10;
|
|
140
|
+
if (offset >= data.length) {
|
|
141
|
+
throw new Error(`decodeTypeAndSize failed: offset ${offset} is beyond data length ${data.length}`);
|
|
142
|
+
}
|
|
143
|
+
let bytesRead = 0;
|
|
144
|
+
const firstByte = data[offset + bytesRead];
|
|
145
|
+
bytesRead++;
|
|
146
|
+
// Extract type (bits 4-6 of first byte)
|
|
147
|
+
const type = ((firstByte >> 4) & 0x07);
|
|
148
|
+
// Extract initial size (low 4 bits)
|
|
149
|
+
let size = firstByte & 0x0f;
|
|
150
|
+
let shift = 4;
|
|
151
|
+
// Read continuation bytes if MSB is set
|
|
152
|
+
if (firstByte & 0x80) {
|
|
153
|
+
while (true) {
|
|
154
|
+
if (offset + bytesRead >= data.length) {
|
|
155
|
+
throw new Error(`decodeTypeAndSize failed: unexpected end of data at offset ${offset + bytesRead}`);
|
|
156
|
+
}
|
|
157
|
+
if (bytesRead >= MAX_HEADER_BYTES) {
|
|
158
|
+
throw new Error(`decodeTypeAndSize failed: exceeded maximum header length of ${MAX_HEADER_BYTES} bytes (possible infinite loop or corrupted data)`);
|
|
159
|
+
}
|
|
160
|
+
const byte = data[offset + bytesRead];
|
|
161
|
+
bytesRead++;
|
|
162
|
+
size |= (byte & 0x7f) << shift;
|
|
163
|
+
shift += 7;
|
|
164
|
+
if ((byte & 0x80) === 0) {
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return { type, size, bytesRead };
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Parse pack file header
|
|
173
|
+
* @param data - The packfile data
|
|
174
|
+
* @returns Parsed header information
|
|
175
|
+
*/
|
|
176
|
+
export function parsePackHeader(data) {
|
|
177
|
+
if (data.length < 12) {
|
|
178
|
+
throw new Error('Packfile header too short: expected at least 12 bytes');
|
|
179
|
+
}
|
|
180
|
+
// Read signature (4 bytes)
|
|
181
|
+
const signature = String.fromCharCode(data[0], data[1], data[2], data[3]);
|
|
182
|
+
if (signature !== PACK_SIGNATURE) {
|
|
183
|
+
throw new Error(`Invalid pack signature: expected "${PACK_SIGNATURE}", got "${signature}"`);
|
|
184
|
+
}
|
|
185
|
+
// Read version (4 bytes, big-endian)
|
|
186
|
+
const version = (data[4] << 24) | (data[5] << 16) | (data[6] << 8) | data[7];
|
|
187
|
+
if (version !== 2) {
|
|
188
|
+
throw new Error(`Unsupported pack version: ${version} (only version 2 is supported)`);
|
|
189
|
+
}
|
|
190
|
+
// Read object count (4 bytes, big-endian)
|
|
191
|
+
const objectCount = (data[8] << 24) | (data[9] << 16) | (data[10] << 8) | data[11];
|
|
192
|
+
return { signature, version, objectCount };
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Parse individual pack object header
|
|
196
|
+
* Note: This only parses the header, not the compressed data
|
|
197
|
+
*/
|
|
198
|
+
export function parsePackObject(data, offset) {
|
|
199
|
+
const { type, size, bytesRead } = decodeTypeAndSize(data, offset);
|
|
200
|
+
return {
|
|
201
|
+
type,
|
|
202
|
+
size,
|
|
203
|
+
headerSize: bytesRead
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Create a packfile from a list of objects
|
|
208
|
+
* @param objects - Array of objects to pack
|
|
209
|
+
* @returns Complete packfile as Uint8Array
|
|
210
|
+
*/
|
|
211
|
+
export function createPackfile(objects) {
|
|
212
|
+
const parts = [];
|
|
213
|
+
// Create header
|
|
214
|
+
const header = new Uint8Array(12);
|
|
215
|
+
// Signature: "PACK"
|
|
216
|
+
header[0] = 0x50; // P
|
|
217
|
+
header[1] = 0x41; // A
|
|
218
|
+
header[2] = 0x43; // C
|
|
219
|
+
header[3] = 0x4b; // K
|
|
220
|
+
// Version: 2 (big-endian)
|
|
221
|
+
header[4] = 0;
|
|
222
|
+
header[5] = 0;
|
|
223
|
+
header[6] = 0;
|
|
224
|
+
header[7] = 2;
|
|
225
|
+
// Object count (big-endian)
|
|
226
|
+
const count = objects.length;
|
|
227
|
+
header[8] = (count >> 24) & 0xff;
|
|
228
|
+
header[9] = (count >> 16) & 0xff;
|
|
229
|
+
header[10] = (count >> 8) & 0xff;
|
|
230
|
+
header[11] = count & 0xff;
|
|
231
|
+
parts.push(header);
|
|
232
|
+
// Add each object
|
|
233
|
+
for (const obj of objects) {
|
|
234
|
+
const type = stringToPackObjectType(obj.type);
|
|
235
|
+
const typeAndSize = encodeTypeAndSize(type, obj.data.length);
|
|
236
|
+
// Compress the data using zlib deflate
|
|
237
|
+
const compressed = pako.deflate(obj.data);
|
|
238
|
+
parts.push(typeAndSize);
|
|
239
|
+
parts.push(compressed);
|
|
240
|
+
}
|
|
241
|
+
// Calculate total length
|
|
242
|
+
let totalLength = 0;
|
|
243
|
+
for (const part of parts) {
|
|
244
|
+
totalLength += part.length;
|
|
245
|
+
}
|
|
246
|
+
// Combine all parts
|
|
247
|
+
const packData = new Uint8Array(totalLength);
|
|
248
|
+
let offset = 0;
|
|
249
|
+
for (const part of parts) {
|
|
250
|
+
packData.set(part, offset);
|
|
251
|
+
offset += part.length;
|
|
252
|
+
}
|
|
253
|
+
// Calculate SHA-1 checksum of the pack data
|
|
254
|
+
const checksum = sha1(packData);
|
|
255
|
+
// Create final packfile with checksum
|
|
256
|
+
const finalPack = new Uint8Array(packData.length + 20);
|
|
257
|
+
finalPack.set(packData, 0);
|
|
258
|
+
finalPack.set(checksum, packData.length);
|
|
259
|
+
return finalPack;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/pack/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full Packfile Generation
|
|
3
|
+
*
|
|
4
|
+
* This module provides comprehensive packfile generation capabilities including:
|
|
5
|
+
* - Complete pack generation from object sets
|
|
6
|
+
* - Delta chain optimization
|
|
7
|
+
* - Pack ordering strategies
|
|
8
|
+
* - Large repository handling
|
|
9
|
+
* - Incremental pack updates
|
|
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
|
+
timestamp?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A set of objects to be packed
|
|
24
|
+
*/
|
|
25
|
+
export interface PackableObjectSet {
|
|
26
|
+
objects: PackableObject[];
|
|
27
|
+
roots?: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Options for full pack generation
|
|
31
|
+
*/
|
|
32
|
+
export interface FullPackOptions {
|
|
33
|
+
enableDeltaCompression?: boolean;
|
|
34
|
+
maxDeltaDepth?: number;
|
|
35
|
+
windowSize?: number;
|
|
36
|
+
compressionLevel?: number;
|
|
37
|
+
orderingStrategy?: PackOrderingStrategy;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Result of full pack generation
|
|
41
|
+
*/
|
|
42
|
+
export interface GeneratedFullPack {
|
|
43
|
+
packData: Uint8Array;
|
|
44
|
+
checksum: Uint8Array;
|
|
45
|
+
stats: FullPackStats;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Statistics from pack generation
|
|
49
|
+
*/
|
|
50
|
+
export interface FullPackStats {
|
|
51
|
+
totalObjects: number;
|
|
52
|
+
deltaObjects: number;
|
|
53
|
+
totalSize: number;
|
|
54
|
+
compressedSize: number;
|
|
55
|
+
compressionRatio: number;
|
|
56
|
+
maxDeltaDepth: number;
|
|
57
|
+
generationTimeMs: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Progress information during pack generation
|
|
61
|
+
*/
|
|
62
|
+
export interface PackGenerationProgress {
|
|
63
|
+
phase: 'scanning' | 'sorting' | 'compressing' | 'writing' | 'complete';
|
|
64
|
+
objectsProcessed: number;
|
|
65
|
+
totalObjects: number;
|
|
66
|
+
bytesWritten: number;
|
|
67
|
+
currentObject?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Configuration for delta chain optimization
|
|
71
|
+
*/
|
|
72
|
+
export interface DeltaChainConfig {
|
|
73
|
+
maxDepth?: number;
|
|
74
|
+
minSavingsThreshold?: number;
|
|
75
|
+
windowSize?: number;
|
|
76
|
+
minMatchLength?: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Result of delta chain optimization
|
|
80
|
+
*/
|
|
81
|
+
export interface OptimizedDeltaChain {
|
|
82
|
+
chains: DeltaChainInfo[];
|
|
83
|
+
totalSavings: number;
|
|
84
|
+
baseSelections: Map<string, string>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Information about a single delta chain
|
|
88
|
+
*/
|
|
89
|
+
export interface DeltaChainInfo {
|
|
90
|
+
baseSha: string;
|
|
91
|
+
baseType: PackObjectType;
|
|
92
|
+
objectSha: string;
|
|
93
|
+
objectType: PackObjectType;
|
|
94
|
+
depth: number;
|
|
95
|
+
savings: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Pack ordering strategies
|
|
99
|
+
*/
|
|
100
|
+
export declare enum PackOrderingStrategy {
|
|
101
|
+
TYPE_FIRST = "type_first",
|
|
102
|
+
SIZE_DESCENDING = "size_descending",
|
|
103
|
+
RECENCY = "recency",
|
|
104
|
+
PATH_BASED = "path_based",
|
|
105
|
+
DELTA_OPTIMIZED = "delta_optimized"
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Configuration for ordering strategy
|
|
109
|
+
*/
|
|
110
|
+
export interface OrderingStrategyConfig {
|
|
111
|
+
primaryStrategy?: PackOrderingStrategy;
|
|
112
|
+
secondaryStrategy?: PackOrderingStrategy;
|
|
113
|
+
deltaChains?: Map<string, string>;
|
|
114
|
+
preferSamePath?: boolean;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Result of applying ordering strategy
|
|
118
|
+
*/
|
|
119
|
+
export interface OrderedObjectSet {
|
|
120
|
+
objects: PackableObject[];
|
|
121
|
+
orderingApplied: PackOrderingStrategy;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Configuration for large repository handling
|
|
125
|
+
*/
|
|
126
|
+
export interface LargeRepoConfig {
|
|
127
|
+
maxMemoryUsage?: number;
|
|
128
|
+
chunkSize?: number;
|
|
129
|
+
enableStreaming?: boolean;
|
|
130
|
+
parallelDeltaComputation?: boolean;
|
|
131
|
+
workerCount?: number;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Options for incremental pack updates
|
|
135
|
+
*/
|
|
136
|
+
export interface IncrementalUpdateOptions {
|
|
137
|
+
generateThinPack?: boolean;
|
|
138
|
+
externalBases?: Set<string>;
|
|
139
|
+
reuseDeltas?: boolean;
|
|
140
|
+
reoptimizeDeltas?: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Result of incremental pack update
|
|
144
|
+
*/
|
|
145
|
+
export interface IncrementalPackResult {
|
|
146
|
+
packData: Uint8Array;
|
|
147
|
+
addedObjects: number;
|
|
148
|
+
skippedObjects: number;
|
|
149
|
+
reusedDeltas: number;
|
|
150
|
+
deltaReferences: string[];
|
|
151
|
+
isThin: boolean;
|
|
152
|
+
missingBases: string[];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Result of pack diff computation
|
|
156
|
+
*/
|
|
157
|
+
export interface PackDiff {
|
|
158
|
+
added: string[];
|
|
159
|
+
removed: string[];
|
|
160
|
+
unchanged: string[];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Result of pack merge
|
|
164
|
+
*/
|
|
165
|
+
export interface MergedPack {
|
|
166
|
+
objects: PackableObject[];
|
|
167
|
+
stats: FullPackStats;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Result of base selection
|
|
171
|
+
*/
|
|
172
|
+
export interface BaseSelectionResult {
|
|
173
|
+
selections: Map<string, string>;
|
|
174
|
+
savings: Map<string, number>;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Object dependency graph
|
|
178
|
+
*/
|
|
179
|
+
export interface ObjectDependencyGraph {
|
|
180
|
+
getDependencies(sha: string): string[];
|
|
181
|
+
getDependents(sha: string): string[];
|
|
182
|
+
hasCycles(): boolean;
|
|
183
|
+
topologicalSort(): string[];
|
|
184
|
+
nodes: string[];
|
|
185
|
+
edges: Array<{
|
|
186
|
+
from: string;
|
|
187
|
+
to: string;
|
|
188
|
+
}>;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Result of pack validation
|
|
192
|
+
*/
|
|
193
|
+
export interface PackValidationResult {
|
|
194
|
+
valid: boolean;
|
|
195
|
+
errors: string[];
|
|
196
|
+
stats?: PackValidationStats;
|
|
197
|
+
deltaChainStats?: DeltaChainStats;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Pack validation statistics
|
|
201
|
+
*/
|
|
202
|
+
export interface PackValidationStats {
|
|
203
|
+
objectCount: number;
|
|
204
|
+
headerValid: boolean;
|
|
205
|
+
checksumValid: boolean;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Delta chain statistics
|
|
209
|
+
*/
|
|
210
|
+
export interface DeltaChainStats {
|
|
211
|
+
maxDepth: number;
|
|
212
|
+
averageDepth: number;
|
|
213
|
+
totalChains: number;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Generate a complete packfile from an object set
|
|
217
|
+
*/
|
|
218
|
+
export declare function generateFullPackfile(objectSet: PackableObjectSet): Uint8Array;
|
|
219
|
+
/**
|
|
220
|
+
* Optimize delta chains for a set of objects
|
|
221
|
+
*/
|
|
222
|
+
export declare function optimizeDeltaChains(objects: PackableObject[], config?: DeltaChainConfig): OptimizedDeltaChain;
|
|
223
|
+
/**
|
|
224
|
+
* Apply an ordering strategy to objects
|
|
225
|
+
*/
|
|
226
|
+
export declare function applyOrderingStrategy(objects: PackableObject[], strategy: PackOrderingStrategy, config?: OrderingStrategyConfig): OrderedObjectSet;
|
|
227
|
+
/**
|
|
228
|
+
* Compute object dependencies
|
|
229
|
+
*/
|
|
230
|
+
export declare function computeObjectDependencies(objects: PackableObject[]): ObjectDependencyGraph;
|
|
231
|
+
/**
|
|
232
|
+
* Select optimal base objects for delta compression
|
|
233
|
+
*/
|
|
234
|
+
export declare function selectOptimalBases(objects: PackableObject[], options?: {
|
|
235
|
+
preferSamePath?: boolean;
|
|
236
|
+
}): BaseSelectionResult;
|
|
237
|
+
/**
|
|
238
|
+
* Validate pack integrity
|
|
239
|
+
*/
|
|
240
|
+
export declare function validatePackIntegrity(packData: Uint8Array, options?: {
|
|
241
|
+
validateDeltas?: boolean;
|
|
242
|
+
collectStats?: boolean;
|
|
243
|
+
}): PackValidationResult;
|
|
244
|
+
/**
|
|
245
|
+
* Full pack generator with streaming and progress support
|
|
246
|
+
*/
|
|
247
|
+
export declare class FullPackGenerator {
|
|
248
|
+
private objects;
|
|
249
|
+
private options;
|
|
250
|
+
private progressCallback?;
|
|
251
|
+
constructor(options?: FullPackOptions);
|
|
252
|
+
get objectCount(): number;
|
|
253
|
+
addObject(object: PackableObject): void;
|
|
254
|
+
addObjectSet(objectSet: PackableObjectSet): void;
|
|
255
|
+
onProgress(callback: (progress: PackGenerationProgress) => void): void;
|
|
256
|
+
generate(): GeneratedFullPack;
|
|
257
|
+
reset(): void;
|
|
258
|
+
private reportProgress;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Delta chain optimizer
|
|
262
|
+
*/
|
|
263
|
+
export declare class DeltaChainOptimizer {
|
|
264
|
+
private objects;
|
|
265
|
+
private config;
|
|
266
|
+
constructor(config?: DeltaChainConfig);
|
|
267
|
+
addObject(object: PackableObject): void;
|
|
268
|
+
buildGraph(): {
|
|
269
|
+
nodes: PackableObject[];
|
|
270
|
+
edges: Array<{
|
|
271
|
+
from: string;
|
|
272
|
+
to: string;
|
|
273
|
+
}>;
|
|
274
|
+
};
|
|
275
|
+
computeSavings(): Map<string, number>;
|
|
276
|
+
optimize(): OptimizedDeltaChain;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Handler for large repositories
|
|
280
|
+
*/
|
|
281
|
+
export declare class LargeRepositoryHandler {
|
|
282
|
+
private objects;
|
|
283
|
+
private config;
|
|
284
|
+
private progressCallback?;
|
|
285
|
+
private memoryCallback?;
|
|
286
|
+
constructor(config?: LargeRepoConfig);
|
|
287
|
+
setObjects(objects: PackableObject[]): void;
|
|
288
|
+
onProgress(callback: (progress: PackGenerationProgress) => void): void;
|
|
289
|
+
onMemoryUsage(callback: (usage: number) => void): void;
|
|
290
|
+
partitionObjects(objects: PackableObject[]): PackableObject[][];
|
|
291
|
+
generatePack(): GeneratedFullPack;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Streaming pack writer
|
|
295
|
+
*/
|
|
296
|
+
export declare class StreamingPackWriter {
|
|
297
|
+
private chunkCallback?;
|
|
298
|
+
private outputStream?;
|
|
299
|
+
private chunks;
|
|
300
|
+
private objectCount;
|
|
301
|
+
private expectedCount;
|
|
302
|
+
constructor(options?: {
|
|
303
|
+
outputStream?: {
|
|
304
|
+
write: (chunk: Uint8Array) => Promise<void>;
|
|
305
|
+
};
|
|
306
|
+
highWaterMark?: number;
|
|
307
|
+
});
|
|
308
|
+
onChunk(callback: (chunk: Uint8Array) => void): void;
|
|
309
|
+
writeHeader(objectCount: number): void;
|
|
310
|
+
writeObject(object: PackableObject): void;
|
|
311
|
+
finalize(): Promise<void>;
|
|
312
|
+
private emitChunk;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Incremental pack updater
|
|
316
|
+
*/
|
|
317
|
+
export declare class IncrementalPackUpdater {
|
|
318
|
+
private existingObjects;
|
|
319
|
+
private existingShas;
|
|
320
|
+
private options;
|
|
321
|
+
constructor(options?: IncrementalUpdateOptions);
|
|
322
|
+
setExistingObjects(objects: PackableObject[]): void;
|
|
323
|
+
addObjects(newObjects: PackableObject[]): IncrementalPackResult;
|
|
324
|
+
computeDiff(oldObjects: PackableObject[], newObjects: PackableObject[]): PackDiff;
|
|
325
|
+
mergePacks(packs: PackableObject[][]): MergedPack;
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=full-generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"full-generation.d.ts","sourceRoot":"","sources":["../../src/pack/full-generation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAqB,MAAM,UAAU,CAAA;AAQ5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,UAAU,CAAA;IACpB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAA;IACtE,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,cAAc,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,UAAU,eAAe;IACzB,eAAe,oBAAoB;IACnC,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,eAAe,oBAAoB;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,iBAAiB,CAAC,EAAE,oBAAoB,CAAA;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,eAAe,EAAE,oBAAoB,CAAA;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,UAAU,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACtC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACpC,SAAS,IAAI,OAAO,CAAA;IACpB,eAAe,IAAI,MAAM,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB;AAgHD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAO7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EAAE,EACzB,MAAM,CAAC,EAAE,gBAAgB,GACxB,mBAAmB,CAMrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,gBAAgB,CAoFlB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,qBAAqB,CAwJ1F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,mBAAmB,CAiDrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,oBAAoB,CAiJtB;AAMD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,gBAAgB,CAAC,CAA4C;gBAEzD,OAAO,CAAC,EAAE,eAAe;IAUrC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAcvC,YAAY,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAMhD,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI;IAItE,QAAQ,IAAI,iBAAiB;IAiK7B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,cAAc;CAiBvB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,CAAC,EAAE,gBAAgB;IASrC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIvC,UAAU,IAAI;QAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;IAoBrF,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAmCrC,QAAQ,IAAI,mBAAmB;CAuHhC;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,gBAAgB,CAAC,CAA4C;IACrE,OAAO,CAAC,cAAc,CAAC,CAAyB;gBAEpC,MAAM,CAAC,EAAE,eAAe;IAUpC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAI3C,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI;IAItE,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,EAAE;IAW/D,YAAY,IAAI,iBAAiB;CAsClC;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAC,CAA6B;IACnD,OAAO,CAAC,YAAY,CAAC,CAAiD;IACtE,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,aAAa,CAAI;gBAEb,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;SAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IAKhH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIpD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMtC,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IASnC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB/B,OAAO,CAAC,SAAS;CASlB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,CAAC,EAAE,wBAAwB;IAS9C,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAKnD,UAAU,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,qBAAqB;IAwD/D,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,QAAQ;IAyBjF,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,UAAU;CA+ClD"}
|