gitx.do 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/dist/cli/commands/blame.d.ts +259 -0
  2. package/dist/cli/commands/blame.d.ts.map +1 -0
  3. package/dist/cli/commands/blame.js +609 -0
  4. package/dist/cli/commands/blame.js.map +1 -0
  5. package/dist/cli/commands/branch.d.ts +249 -0
  6. package/dist/cli/commands/branch.d.ts.map +1 -0
  7. package/dist/cli/commands/branch.js +693 -0
  8. package/dist/cli/commands/branch.js.map +1 -0
  9. package/dist/cli/commands/commit.d.ts +182 -0
  10. package/dist/cli/commands/commit.d.ts.map +1 -0
  11. package/dist/cli/commands/commit.js +437 -0
  12. package/dist/cli/commands/commit.js.map +1 -0
  13. package/dist/cli/commands/diff.d.ts +464 -0
  14. package/dist/cli/commands/diff.d.ts.map +1 -0
  15. package/dist/cli/commands/diff.js +958 -0
  16. package/dist/cli/commands/diff.js.map +1 -0
  17. package/dist/cli/commands/log.d.ts +239 -0
  18. package/dist/cli/commands/log.d.ts.map +1 -0
  19. package/dist/cli/commands/log.js +535 -0
  20. package/dist/cli/commands/log.js.map +1 -0
  21. package/dist/cli/commands/review.d.ts +457 -0
  22. package/dist/cli/commands/review.d.ts.map +1 -0
  23. package/dist/cli/commands/review.js +533 -0
  24. package/dist/cli/commands/review.js.map +1 -0
  25. package/dist/cli/commands/status.d.ts +269 -0
  26. package/dist/cli/commands/status.d.ts.map +1 -0
  27. package/dist/cli/commands/status.js +493 -0
  28. package/dist/cli/commands/status.js.map +1 -0
  29. package/dist/cli/commands/web.d.ts +199 -0
  30. package/dist/cli/commands/web.d.ts.map +1 -0
  31. package/dist/cli/commands/web.js +696 -0
  32. package/dist/cli/commands/web.js.map +1 -0
  33. package/dist/cli/fs-adapter.d.ts +656 -0
  34. package/dist/cli/fs-adapter.d.ts.map +1 -0
  35. package/dist/cli/fs-adapter.js +1179 -0
  36. package/dist/cli/fs-adapter.js.map +1 -0
  37. package/dist/cli/index.d.ts +387 -0
  38. package/dist/cli/index.d.ts.map +1 -0
  39. package/dist/cli/index.js +523 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/ui/components/DiffView.d.ts +7 -0
  42. package/dist/cli/ui/components/DiffView.d.ts.map +1 -0
  43. package/dist/cli/ui/components/DiffView.js +11 -0
  44. package/dist/cli/ui/components/DiffView.js.map +1 -0
  45. package/dist/cli/ui/components/ErrorDisplay.d.ts +6 -0
  46. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +1 -0
  47. package/dist/cli/ui/components/ErrorDisplay.js +11 -0
  48. package/dist/cli/ui/components/ErrorDisplay.js.map +1 -0
  49. package/dist/cli/ui/components/FuzzySearch.d.ts +9 -0
  50. package/dist/cli/ui/components/FuzzySearch.d.ts.map +1 -0
  51. package/dist/cli/ui/components/FuzzySearch.js +12 -0
  52. package/dist/cli/ui/components/FuzzySearch.js.map +1 -0
  53. package/dist/cli/ui/components/LoadingSpinner.d.ts +6 -0
  54. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +1 -0
  55. package/dist/cli/ui/components/LoadingSpinner.js +10 -0
  56. package/dist/cli/ui/components/LoadingSpinner.js.map +1 -0
  57. package/dist/cli/ui/components/NavigationList.d.ts +9 -0
  58. package/dist/cli/ui/components/NavigationList.d.ts.map +1 -0
  59. package/dist/cli/ui/components/NavigationList.js +11 -0
  60. package/dist/cli/ui/components/NavigationList.js.map +1 -0
  61. package/dist/cli/ui/components/ScrollableContent.d.ts +8 -0
  62. package/dist/cli/ui/components/ScrollableContent.d.ts.map +1 -0
  63. package/dist/cli/ui/components/ScrollableContent.js +11 -0
  64. package/dist/cli/ui/components/ScrollableContent.js.map +1 -0
  65. package/dist/cli/ui/components/index.d.ts +7 -0
  66. package/dist/cli/ui/components/index.d.ts.map +1 -0
  67. package/dist/cli/ui/components/index.js +9 -0
  68. package/dist/cli/ui/components/index.js.map +1 -0
  69. package/dist/cli/ui/terminal-ui.d.ts +52 -0
  70. package/dist/cli/ui/terminal-ui.d.ts.map +1 -0
  71. package/dist/cli/ui/terminal-ui.js +121 -0
  72. package/dist/cli/ui/terminal-ui.js.map +1 -0
  73. package/dist/durable-object/object-store.d.ts +401 -23
  74. package/dist/durable-object/object-store.d.ts.map +1 -1
  75. package/dist/durable-object/object-store.js +414 -25
  76. package/dist/durable-object/object-store.js.map +1 -1
  77. package/dist/durable-object/schema.d.ts +188 -0
  78. package/dist/durable-object/schema.d.ts.map +1 -1
  79. package/dist/durable-object/schema.js +160 -0
  80. package/dist/durable-object/schema.js.map +1 -1
  81. package/dist/durable-object/wal.d.ts +336 -31
  82. package/dist/durable-object/wal.d.ts.map +1 -1
  83. package/dist/durable-object/wal.js +272 -27
  84. package/dist/durable-object/wal.js.map +1 -1
  85. package/dist/index.d.ts +379 -3
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +379 -7
  88. package/dist/index.js.map +1 -1
  89. package/dist/mcp/adapter.d.ts +579 -38
  90. package/dist/mcp/adapter.d.ts.map +1 -1
  91. package/dist/mcp/adapter.js +426 -33
  92. package/dist/mcp/adapter.js.map +1 -1
  93. package/dist/mcp/sandbox.d.ts +532 -29
  94. package/dist/mcp/sandbox.d.ts.map +1 -1
  95. package/dist/mcp/sandbox.js +389 -22
  96. package/dist/mcp/sandbox.js.map +1 -1
  97. package/dist/mcp/sdk-adapter.d.ts +478 -56
  98. package/dist/mcp/sdk-adapter.d.ts.map +1 -1
  99. package/dist/mcp/sdk-adapter.js +346 -44
  100. package/dist/mcp/sdk-adapter.js.map +1 -1
  101. package/dist/mcp/tools.d.ts +445 -30
  102. package/dist/mcp/tools.d.ts.map +1 -1
  103. package/dist/mcp/tools.js +363 -33
  104. package/dist/mcp/tools.js.map +1 -1
  105. package/dist/ops/blame.d.ts +424 -21
  106. package/dist/ops/blame.d.ts.map +1 -1
  107. package/dist/ops/blame.js +303 -20
  108. package/dist/ops/blame.js.map +1 -1
  109. package/dist/ops/branch.d.ts +583 -32
  110. package/dist/ops/branch.d.ts.map +1 -1
  111. package/dist/ops/branch.js +365 -23
  112. package/dist/ops/branch.js.map +1 -1
  113. package/dist/ops/commit-traversal.d.ts +164 -24
  114. package/dist/ops/commit-traversal.d.ts.map +1 -1
  115. package/dist/ops/commit-traversal.js +68 -2
  116. package/dist/ops/commit-traversal.js.map +1 -1
  117. package/dist/ops/commit.d.ts +387 -53
  118. package/dist/ops/commit.d.ts.map +1 -1
  119. package/dist/ops/commit.js +249 -29
  120. package/dist/ops/commit.js.map +1 -1
  121. package/dist/ops/merge-base.d.ts +195 -21
  122. package/dist/ops/merge-base.d.ts.map +1 -1
  123. package/dist/ops/merge-base.js +122 -12
  124. package/dist/ops/merge-base.js.map +1 -1
  125. package/dist/ops/merge.d.ts +600 -130
  126. package/dist/ops/merge.d.ts.map +1 -1
  127. package/dist/ops/merge.js +408 -60
  128. package/dist/ops/merge.js.map +1 -1
  129. package/dist/ops/tag.d.ts +67 -2
  130. package/dist/ops/tag.d.ts.map +1 -1
  131. package/dist/ops/tag.js +42 -1
  132. package/dist/ops/tag.js.map +1 -1
  133. package/dist/ops/tree-builder.d.ts +102 -6
  134. package/dist/ops/tree-builder.d.ts.map +1 -1
  135. package/dist/ops/tree-builder.js +30 -5
  136. package/dist/ops/tree-builder.js.map +1 -1
  137. package/dist/ops/tree-diff.d.ts +50 -2
  138. package/dist/ops/tree-diff.d.ts.map +1 -1
  139. package/dist/ops/tree-diff.js +50 -2
  140. package/dist/ops/tree-diff.js.map +1 -1
  141. package/dist/pack/delta.d.ts +211 -39
  142. package/dist/pack/delta.d.ts.map +1 -1
  143. package/dist/pack/delta.js +232 -46
  144. package/dist/pack/delta.js.map +1 -1
  145. package/dist/pack/format.d.ts +390 -28
  146. package/dist/pack/format.d.ts.map +1 -1
  147. package/dist/pack/format.js +344 -33
  148. package/dist/pack/format.js.map +1 -1
  149. package/dist/pack/full-generation.d.ts +313 -28
  150. package/dist/pack/full-generation.d.ts.map +1 -1
  151. package/dist/pack/full-generation.js +238 -19
  152. package/dist/pack/full-generation.js.map +1 -1
  153. package/dist/pack/generation.d.ts +346 -23
  154. package/dist/pack/generation.d.ts.map +1 -1
  155. package/dist/pack/generation.js +269 -21
  156. package/dist/pack/generation.js.map +1 -1
  157. package/dist/pack/index.d.ts +407 -86
  158. package/dist/pack/index.d.ts.map +1 -1
  159. package/dist/pack/index.js +351 -70
  160. package/dist/pack/index.js.map +1 -1
  161. package/dist/refs/branch.d.ts +517 -71
  162. package/dist/refs/branch.d.ts.map +1 -1
  163. package/dist/refs/branch.js +410 -26
  164. package/dist/refs/branch.js.map +1 -1
  165. package/dist/refs/storage.d.ts +610 -57
  166. package/dist/refs/storage.d.ts.map +1 -1
  167. package/dist/refs/storage.js +481 -29
  168. package/dist/refs/storage.js.map +1 -1
  169. package/dist/refs/tag.d.ts +677 -67
  170. package/dist/refs/tag.d.ts.map +1 -1
  171. package/dist/refs/tag.js +497 -30
  172. package/dist/refs/tag.js.map +1 -1
  173. package/dist/storage/lru-cache.d.ts +556 -53
  174. package/dist/storage/lru-cache.d.ts.map +1 -1
  175. package/dist/storage/lru-cache.js +439 -36
  176. package/dist/storage/lru-cache.js.map +1 -1
  177. package/dist/storage/object-index.d.ts +483 -38
  178. package/dist/storage/object-index.d.ts.map +1 -1
  179. package/dist/storage/object-index.js +388 -22
  180. package/dist/storage/object-index.js.map +1 -1
  181. package/dist/storage/r2-pack.d.ts +957 -94
  182. package/dist/storage/r2-pack.d.ts.map +1 -1
  183. package/dist/storage/r2-pack.js +756 -48
  184. package/dist/storage/r2-pack.js.map +1 -1
  185. package/dist/tiered/cdc-pipeline.d.ts +1610 -38
  186. package/dist/tiered/cdc-pipeline.d.ts.map +1 -1
  187. package/dist/tiered/cdc-pipeline.js +1131 -22
  188. package/dist/tiered/cdc-pipeline.js.map +1 -1
  189. package/dist/tiered/migration.d.ts +903 -41
  190. package/dist/tiered/migration.d.ts.map +1 -1
  191. package/dist/tiered/migration.js +646 -24
  192. package/dist/tiered/migration.js.map +1 -1
  193. package/dist/tiered/parquet-writer.d.ts +944 -47
  194. package/dist/tiered/parquet-writer.d.ts.map +1 -1
  195. package/dist/tiered/parquet-writer.js +667 -39
  196. package/dist/tiered/parquet-writer.js.map +1 -1
  197. package/dist/tiered/read-path.d.ts +728 -34
  198. package/dist/tiered/read-path.d.ts.map +1 -1
  199. package/dist/tiered/read-path.js +310 -27
  200. package/dist/tiered/read-path.js.map +1 -1
  201. package/dist/types/objects.d.ts +457 -0
  202. package/dist/types/objects.d.ts.map +1 -1
  203. package/dist/types/objects.js +305 -4
  204. package/dist/types/objects.js.map +1 -1
  205. package/dist/types/storage.d.ts +407 -35
  206. package/dist/types/storage.d.ts.map +1 -1
  207. package/dist/types/storage.js +27 -3
  208. package/dist/types/storage.js.map +1 -1
  209. package/dist/utils/hash.d.ts +133 -12
  210. package/dist/utils/hash.d.ts.map +1 -1
  211. package/dist/utils/hash.js +133 -12
  212. package/dist/utils/hash.js.map +1 -1
  213. package/dist/utils/sha1.d.ts +102 -9
  214. package/dist/utils/sha1.d.ts.map +1 -1
  215. package/dist/utils/sha1.js +114 -11
  216. package/dist/utils/sha1.js.map +1 -1
  217. package/dist/wire/capabilities.d.ts +896 -88
  218. package/dist/wire/capabilities.d.ts.map +1 -1
  219. package/dist/wire/capabilities.js +566 -62
  220. package/dist/wire/capabilities.js.map +1 -1
  221. package/dist/wire/pkt-line.d.ts +293 -15
  222. package/dist/wire/pkt-line.d.ts.map +1 -1
  223. package/dist/wire/pkt-line.js +251 -15
  224. package/dist/wire/pkt-line.js.map +1 -1
  225. package/dist/wire/receive-pack.d.ts +814 -64
  226. package/dist/wire/receive-pack.d.ts.map +1 -1
  227. package/dist/wire/receive-pack.js +542 -41
  228. package/dist/wire/receive-pack.js.map +1 -1
  229. package/dist/wire/smart-http.d.ts +575 -97
  230. package/dist/wire/smart-http.d.ts.map +1 -1
  231. package/dist/wire/smart-http.js +337 -46
  232. package/dist/wire/smart-http.js.map +1 -1
  233. package/dist/wire/upload-pack.d.ts +492 -98
  234. package/dist/wire/upload-pack.d.ts.map +1 -1
  235. package/dist/wire/upload-pack.js +347 -59
  236. package/dist/wire/upload-pack.js.map +1 -1
  237. package/package.json +1 -1
@@ -1,42 +1,131 @@
1
1
  /**
2
- * Git Packfile Format Implementation
2
+ * @fileoverview Git Packfile Format Implementation
3
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
4
+ * This module implements the Git packfile format specification, providing utilities
5
+ * for creating, parsing, and manipulating Git packfiles. Packfiles are Git's primary
6
+ * mechanism for efficient storage and network transfer of repository objects.
11
7
  *
12
- * Object header encoding:
8
+ * ## Packfile Structure
9
+ *
10
+ * A packfile consists of:
11
+ * - **Header (12 bytes)**:
12
+ * - 4 bytes: "PACK" signature
13
+ * - 4 bytes: version number (network byte order, big-endian) - currently version 2
14
+ * - 4 bytes: number of objects (network byte order)
15
+ * - **Object entries (variable length)**:
16
+ * - Each object has a variable-length header followed by zlib-compressed data
17
+ * - **Trailer (20 bytes)**:
18
+ * - SHA-1 checksum of all preceding content
19
+ *
20
+ * ## Object Header Encoding
21
+ *
22
+ * The object header uses a variable-length encoding:
13
23
  * - 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)
24
+ * - Subsequent bytes: (MSB) continuation bit | 7-bit size continuation
25
+ *
26
+ * ## Supported Object Types
27
+ *
28
+ * | Type Code | Name | Description |
29
+ * |-----------|-----------|------------------------------------------------|
30
+ * | 1 | commit | A commit object |
31
+ * | 2 | tree | A tree object (directory listing) |
32
+ * | 3 | blob | A blob object (file content) |
33
+ * | 4 | tag | An annotated tag object |
34
+ * | 6 | ofs_delta | Delta referencing base by offset |
35
+ * | 7 | ref_delta | Delta referencing base by SHA-1 |
36
+ *
37
+ * @module pack/format
38
+ * @see {@link https://git-scm.com/docs/pack-format} Git Pack Format Documentation
39
+ *
40
+ * @example
41
+ * // Creating a simple packfile
42
+ * import { createPackfile, PackableObject } from './format';
43
+ *
44
+ * const objects: PackableObject[] = [
45
+ * { type: 'blob', data: new TextEncoder().encode('Hello, World!') }
46
+ * ];
47
+ *
48
+ * const packfile = createPackfile(objects);
49
+ * // packfile is now a Uint8Array containing the complete packfile
23
50
  */
24
51
  import pako from 'pako';
25
52
  import { sha1 } from '../utils/sha1';
26
- // Constants
53
+ /**
54
+ * The 4-byte ASCII signature that identifies a valid packfile.
55
+ * Every packfile must begin with these bytes: 0x50 0x41 0x43 0x4b ("PACK").
56
+ *
57
+ * @constant {string}
58
+ * @example
59
+ * // Validate packfile signature
60
+ * const signature = String.fromCharCode(...packData.slice(0, 4));
61
+ * if (signature !== PACK_SIGNATURE) {
62
+ * throw new Error('Invalid packfile');
63
+ * }
64
+ */
27
65
  export const PACK_SIGNATURE = 'PACK';
66
+ /**
67
+ * The packfile version number supported by this implementation.
68
+ * Currently, only version 2 is widely used and supported.
69
+ *
70
+ * @constant {number}
71
+ */
28
72
  export const PACK_VERSION = 2;
29
- // Pack object types
73
+ /**
74
+ * Enumeration of Git pack object types.
75
+ *
76
+ * These values are used in the packfile header to identify the type of each object.
77
+ * Note that types 0 and 5 are reserved/unused in the Git pack format.
78
+ *
79
+ * @description Represents the different types of objects that can be stored in a Git packfile.
80
+ * Delta types (OFS_DELTA and REF_DELTA) are used for efficient storage by referencing
81
+ * a base object and storing only the differences.
82
+ *
83
+ * @enum {number}
84
+ *
85
+ * @example
86
+ * // Check if an object is a delta type
87
+ * function isDelta(type: PackObjectType): boolean {
88
+ * return type === PackObjectType.OBJ_OFS_DELTA || type === PackObjectType.OBJ_REF_DELTA;
89
+ * }
90
+ */
30
91
  export var PackObjectType;
31
92
  (function (PackObjectType) {
93
+ /** A commit object containing tree reference, parent commits, author, and message */
32
94
  PackObjectType[PackObjectType["OBJ_COMMIT"] = 1] = "OBJ_COMMIT";
95
+ /** A tree object representing a directory structure */
33
96
  PackObjectType[PackObjectType["OBJ_TREE"] = 2] = "OBJ_TREE";
97
+ /** A blob object containing file content */
34
98
  PackObjectType[PackObjectType["OBJ_BLOB"] = 3] = "OBJ_BLOB";
99
+ /** An annotated tag object */
35
100
  PackObjectType[PackObjectType["OBJ_TAG"] = 4] = "OBJ_TAG";
101
+ /** An offset delta - references base object by byte offset within the packfile */
36
102
  PackObjectType[PackObjectType["OBJ_OFS_DELTA"] = 6] = "OBJ_OFS_DELTA";
103
+ /** A reference delta - references base object by its SHA-1 hash */
37
104
  PackObjectType[PackObjectType["OBJ_REF_DELTA"] = 7] = "OBJ_REF_DELTA";
38
105
  })(PackObjectType || (PackObjectType = {}));
39
- // Type conversion utilities
106
+ /**
107
+ * Converts a PackObjectType enum value to its string representation.
108
+ *
109
+ * @description Converts numeric pack object types to their human-readable string names.
110
+ * This is useful for logging, debugging, and when interfacing with Git's loose object format.
111
+ *
112
+ * @param {PackObjectType} type - The numeric pack object type to convert
113
+ * @returns {string} The string name of the object type ('commit', 'tree', 'blob', 'tag', 'ofs_delta', or 'ref_delta')
114
+ * @throws {Error} If the type is not a valid PackObjectType value
115
+ *
116
+ * @example
117
+ * // Convert type for display
118
+ * const type = PackObjectType.OBJ_BLOB;
119
+ * console.log(`Object type: ${packObjectTypeToString(type)}`); // "Object type: blob"
120
+ *
121
+ * @example
122
+ * // Use in error messages
123
+ * function validateObject(type: PackObjectType, data: Uint8Array) {
124
+ * if (data.length === 0) {
125
+ * throw new Error(`Empty ${packObjectTypeToString(type)} object`);
126
+ * }
127
+ * }
128
+ */
40
129
  export function packObjectTypeToString(type) {
41
130
  switch (type) {
42
131
  case PackObjectType.OBJ_COMMIT:
@@ -55,6 +144,32 @@ export function packObjectTypeToString(type) {
55
144
  throw new Error(`Invalid pack object type: ${type}`);
56
145
  }
57
146
  }
147
+ /**
148
+ * Converts a string object type name to its PackObjectType enum value.
149
+ *
150
+ * @description Parses a string object type name and returns the corresponding enum value.
151
+ * This is useful when reading Git loose objects or configuration files that use string type names.
152
+ * Note: Delta types ('ofs_delta', 'ref_delta') are not supported as they are not valid
153
+ * standalone object types.
154
+ *
155
+ * @param {string} str - The string type name ('commit', 'tree', 'blob', or 'tag')
156
+ * @returns {PackObjectType} The corresponding PackObjectType enum value
157
+ * @throws {Error} If the string does not match a valid base object type
158
+ *
159
+ * @example
160
+ * // Parse type from Git object
161
+ * const typeStr = 'blob';
162
+ * const type = stringToPackObjectType(typeStr);
163
+ * // type === PackObjectType.OBJ_BLOB
164
+ *
165
+ * @example
166
+ * // Error handling for invalid types
167
+ * try {
168
+ * const type = stringToPackObjectType('invalid');
169
+ * } catch (e) {
170
+ * console.error('Unknown object type');
171
+ * }
172
+ */
58
173
  export function stringToPackObjectType(str) {
59
174
  switch (str) {
60
175
  case 'commit':
@@ -69,7 +184,30 @@ export function stringToPackObjectType(str) {
69
184
  throw new Error(`Invalid object type string: ${str}`);
70
185
  }
71
186
  }
72
- // Variable-length integer encoding (similar to Git's varint encoding)
187
+ /**
188
+ * Encodes a non-negative integer using variable-length integer encoding.
189
+ *
190
+ * @description Uses Git's varint encoding scheme where each byte encodes 7 bits of the value,
191
+ * with the MSB (most significant bit) serving as a continuation flag. If the MSB is set (1),
192
+ * more bytes follow; if clear (0), this is the last byte.
193
+ *
194
+ * The encoding is little-endian: least significant bits come first. This allows efficient
195
+ * encoding of small values (1 byte for values 0-127) while supporting arbitrarily large values.
196
+ *
197
+ * @param {number} value - A non-negative integer to encode (must be >= 0)
198
+ * @returns {Uint8Array} The variable-length encoded bytes
199
+ *
200
+ * @example
201
+ * // Encode small value (fits in 1 byte)
202
+ * const encoded = encodeVarint(100);
203
+ * // encoded = Uint8Array [100] (0x64, no continuation bit)
204
+ *
205
+ * @example
206
+ * // Encode larger value (requires multiple bytes)
207
+ * const encoded = encodeVarint(300);
208
+ * // encoded = Uint8Array [172, 2] (0xAC with continuation, 0x02)
209
+ * // 300 = 0b100101100 = (0101100 | continuation) + (10)
210
+ */
73
211
  export function encodeVarint(value) {
74
212
  const bytes = [];
75
213
  // Encode value in 7-bit chunks with continuation bit
@@ -83,6 +221,37 @@ export function encodeVarint(value) {
83
221
  } while (value > 0);
84
222
  return new Uint8Array(bytes);
85
223
  }
224
+ /**
225
+ * Decodes a variable-length integer from a byte buffer.
226
+ *
227
+ * @description Reads and decodes a varint starting at the specified offset. The encoding uses
228
+ * 7 bits per byte for the value, with the MSB as a continuation flag. This is the inverse
229
+ * operation of {@link encodeVarint}.
230
+ *
231
+ * **Important Notes:**
232
+ * - Maximum supported varint length is 10 bytes (enough for 64-bit values)
233
+ * - Throws if data ends unexpectedly before varint is complete
234
+ * - Throws if varint exceeds maximum length (likely corrupted data)
235
+ *
236
+ * @param {Uint8Array} data - The byte buffer containing the encoded varint
237
+ * @param {number} offset - The starting position in the buffer
238
+ * @returns {{ value: number; bytesRead: number }} Object containing the decoded value and number of bytes consumed
239
+ * @throws {Error} If unexpected end of data or varint exceeds maximum length
240
+ *
241
+ * @example
242
+ * // Decode a varint from a buffer
243
+ * const buffer = new Uint8Array([172, 2, 0, 0]); // 300 encoded + extra bytes
244
+ * const { value, bytesRead } = decodeVarint(buffer, 0);
245
+ * // value === 300, bytesRead === 2
246
+ *
247
+ * @example
248
+ * // Decode multiple varints
249
+ * const buffer = new Uint8Array([100, 172, 2]);
250
+ * let offset = 0;
251
+ * const first = decodeVarint(buffer, offset); // value: 100, bytesRead: 1
252
+ * offset += first.bytesRead;
253
+ * const second = decodeVarint(buffer, offset); // value: 300, bytesRead: 2
254
+ */
86
255
  export function decodeVarint(data, offset) {
87
256
  let value = 0;
88
257
  let shift = 0;
@@ -108,10 +277,34 @@ export function decodeVarint(data, offset) {
108
277
  return { value, bytesRead };
109
278
  }
110
279
  /**
111
- * Encode object type and size into pack object header format
280
+ * Encodes object type and uncompressed size into a pack object header.
281
+ *
282
+ * @description Creates the variable-length header that precedes each object in a packfile.
283
+ * The header encodes both the object type (3 bits) and the uncompressed data size.
284
+ *
285
+ * **Header Format:**
286
+ * - First byte: `[continuation][type:3][size:4]` - MSB is continuation flag, then 3-bit type, then 4 LSBs of size
287
+ * - Subsequent bytes: `[continuation][size:7]` - MSB is continuation flag, then 7 bits of size
112
288
  *
113
- * First byte: MSB continuation bit | 3-bit type | 4-bit size LSB
114
- * Subsequent bytes: MSB continuation bit | 7-bit size continuation
289
+ * This encoding allows:
290
+ * - Sizes 0-15: 1 byte
291
+ * - Sizes 16-2047: 2 bytes
292
+ * - Larger sizes: additional bytes as needed
293
+ *
294
+ * @param {PackObjectType} type - The object type (1-4 for base types, 6-7 for deltas)
295
+ * @param {number} size - The uncompressed object size in bytes
296
+ * @returns {Uint8Array} The encoded header bytes
297
+ *
298
+ * @example
299
+ * // Encode a small blob object
300
+ * const header = encodeTypeAndSize(PackObjectType.OBJ_BLOB, 10);
301
+ * // header[0] = (3 << 4) | 10 = 0x3A (type=blob, size=10, no continuation)
302
+ *
303
+ * @example
304
+ * // Encode a larger object (size requires continuation)
305
+ * const header = encodeTypeAndSize(PackObjectType.OBJ_COMMIT, 256);
306
+ * // First byte has type and low 4 bits of size, with continuation
307
+ * // Second byte has remaining size bits
115
308
  */
116
309
  export function encodeTypeAndSize(type, size) {
117
310
  const bytes = [];
@@ -133,6 +326,36 @@ export function encodeTypeAndSize(type, size) {
133
326
  }
134
327
  return new Uint8Array(bytes);
135
328
  }
329
+ /**
330
+ * Decodes object type and size from a pack object header.
331
+ *
332
+ * @description Parses the variable-length header at the beginning of each packed object.
333
+ * This is the inverse operation of {@link encodeTypeAndSize}.
334
+ *
335
+ * **Decoding Process:**
336
+ * 1. Read first byte to get type (bits 4-6) and initial size (bits 0-3)
337
+ * 2. If MSB is set, read continuation bytes (7 bits each) for remaining size
338
+ * 3. Return the decoded type, size, and total bytes consumed
339
+ *
340
+ * **Important Notes:**
341
+ * - Maximum header length is 10 bytes (prevents infinite loops on corrupted data)
342
+ * - Throws if offset is beyond data bounds
343
+ * - Throws if data ends before header is complete
344
+ *
345
+ * @param {Uint8Array} data - The packfile data buffer
346
+ * @param {number} offset - Starting offset of the object header
347
+ * @returns {{ type: PackObjectType; size: number; bytesRead: number }} Decoded type, uncompressed size, and bytes consumed
348
+ * @throws {Error} If offset is out of bounds or header data is truncated/corrupted
349
+ *
350
+ * @example
351
+ * // Decode an object header
352
+ * const packData = getPackfileData();
353
+ * let offset = 12; // Skip 12-byte pack header
354
+ *
355
+ * const { type, size, bytesRead } = decodeTypeAndSize(packData, offset);
356
+ * console.log(`Object type: ${packObjectTypeToString(type)}, size: ${size}`);
357
+ * offset += bytesRead; // Move to start of compressed data
358
+ */
136
359
  export function decodeTypeAndSize(data, offset) {
137
360
  // Maximum bytes for type+size header (first byte + continuation bytes)
138
361
  // Similar to varint, limit to prevent infinite loops
@@ -169,9 +392,37 @@ export function decodeTypeAndSize(data, offset) {
169
392
  return { type, size, bytesRead };
170
393
  }
171
394
  /**
172
- * Parse pack file header
173
- * @param data - The packfile data
174
- * @returns Parsed header information
395
+ * Parses and validates the 12-byte header of a Git packfile.
396
+ *
397
+ * @description Reads the first 12 bytes of a packfile and validates:
398
+ * 1. The signature is "PACK"
399
+ * 2. The version is 2 (only supported version)
400
+ * 3. Extracts the object count
401
+ *
402
+ * This should be called first when processing a packfile to understand
403
+ * its structure and validate basic integrity.
404
+ *
405
+ * @param {Uint8Array} data - The packfile data (at least 12 bytes)
406
+ * @returns {PackHeader} Parsed header with signature, version, and object count
407
+ * @throws {Error} If data is too short (< 12 bytes)
408
+ * @throws {Error} If signature is not "PACK"
409
+ * @throws {Error} If version is not 2
410
+ *
411
+ * @example
412
+ * // Parse a packfile header
413
+ * const packData = await readPackfile('objects/pack/pack-abc123.pack');
414
+ * const header = parsePackHeader(packData);
415
+ *
416
+ * console.log(`Packfile version: ${header.version}`);
417
+ * console.log(`Contains ${header.objectCount} objects`);
418
+ *
419
+ * @example
420
+ * // Error handling for invalid packfile
421
+ * try {
422
+ * const header = parsePackHeader(suspectData);
423
+ * } catch (e) {
424
+ * console.error('Not a valid packfile:', e.message);
425
+ * }
175
426
  */
176
427
  export function parsePackHeader(data) {
177
428
  if (data.length < 12) {
@@ -192,8 +443,33 @@ export function parsePackHeader(data) {
192
443
  return { signature, version, objectCount };
193
444
  }
194
445
  /**
195
- * Parse individual pack object header
196
- * Note: This only parses the header, not the compressed data
446
+ * Parses an individual pack object header at the specified offset.
447
+ *
448
+ * @description Extracts the object type and uncompressed size from the header
449
+ * at the given offset. This is useful for scanning/indexing packfiles.
450
+ *
451
+ * **Important Notes:**
452
+ * - This only parses the header, not the compressed data following it
453
+ * - For delta objects, you'll need additional parsing (base offset/SHA)
454
+ * - Use `headerSize` to calculate where the compressed data begins
455
+ *
456
+ * @param {Uint8Array} data - The packfile data buffer
457
+ * @param {number} offset - Byte offset where the object header starts
458
+ * @returns {ParsedPackObject} Object containing type, size, and header size
459
+ * @throws {Error} If offset is out of bounds or header is malformed
460
+ *
461
+ * @example
462
+ * // Scan through all objects in a packfile
463
+ * const header = parsePackHeader(packData);
464
+ * let offset = 12; // After pack header
465
+ *
466
+ * for (let i = 0; i < header.objectCount; i++) {
467
+ * const obj = parsePackObject(packData, offset);
468
+ * console.log(`Object ${i}: type=${obj.type}, size=${obj.size}`);
469
+ * // Skip header + compressed data (need to decompress to find boundary)
470
+ * offset += obj.headerSize;
471
+ * // ... decompress and skip compressed data ...
472
+ * }
197
473
  */
198
474
  export function parsePackObject(data, offset) {
199
475
  const { type, size, bytesRead } = decodeTypeAndSize(data, offset);
@@ -204,9 +480,44 @@ export function parsePackObject(data, offset) {
204
480
  };
205
481
  }
206
482
  /**
207
- * Create a packfile from a list of objects
208
- * @param objects - Array of objects to pack
209
- * @returns Complete packfile as Uint8Array
483
+ * Creates a complete packfile from an array of objects.
484
+ *
485
+ * @description Generates a valid Git packfile containing the specified objects.
486
+ * The resulting packfile includes:
487
+ * - 12-byte header (signature, version, object count)
488
+ * - Each object (header + zlib-compressed data)
489
+ * - 20-byte SHA-1 checksum trailer
490
+ *
491
+ * **Process:**
492
+ * 1. Creates the pack header with signature "PACK", version 2, and object count
493
+ * 2. For each object, encodes type/size header and compresses data with zlib
494
+ * 3. Appends SHA-1 checksum of the entire pack content
495
+ *
496
+ * **Important Notes:**
497
+ * - Objects are packed in the order provided (no reordering for delta compression)
498
+ * - This function creates full objects only (no delta compression)
499
+ * - For delta compression, use the generation module functions
500
+ *
501
+ * @param {PackableObject[]} objects - Array of objects to include in the packfile
502
+ * @returns {Uint8Array} Complete packfile as binary data
503
+ *
504
+ * @example
505
+ * // Create a packfile with a single blob
506
+ * const objects: PackableObject[] = [
507
+ * { type: 'blob', data: new TextEncoder().encode('Hello, World!') }
508
+ * ];
509
+ * const packfile = createPackfile(objects);
510
+ * // Write packfile to disk or send over network
511
+ *
512
+ * @example
513
+ * // Create a packfile with multiple objects
514
+ * const objects: PackableObject[] = [
515
+ * { type: 'blob', data: fileContent1 },
516
+ * { type: 'blob', data: fileContent2 },
517
+ * { type: 'tree', data: treeData },
518
+ * { type: 'commit', data: commitData }
519
+ * ];
520
+ * const packfile = createPackfile(objects);
210
521
  */
211
522
  export function createPackfile(objects) {
212
523
  const parts = [];
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/pack/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,YAAY;AACZ,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAE7B,oBAAoB;AACpB,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,+DAAc,CAAA;IACd,2DAAY,CAAA;IACZ,2DAAY,CAAA;IACZ,yDAAW,CAAA;IACX,qEAAiB,CAAA;IACjB,qEAAiB,CAAA;AACnB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AAED,4BAA4B;AAC5B,MAAM,UAAU,sBAAsB,CAAC,IAAoB;IACzD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,UAAU;YAC5B,OAAO,QAAQ,CAAA;QACjB,KAAK,cAAc,CAAC,QAAQ;YAC1B,OAAO,MAAM,CAAA;QACf,KAAK,cAAc,CAAC,QAAQ;YAC1B,OAAO,MAAM,CAAA;QACf,KAAK,cAAc,CAAC,OAAO;YACzB,OAAO,KAAK,CAAA;QACd,KAAK,cAAc,CAAC,aAAa;YAC/B,OAAO,WAAW,CAAA;QACpB,KAAK,cAAc,CAAC,aAAa;YAC/B,OAAO,WAAW,CAAA;QACpB;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,UAAU,CAAA;QAClC,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,QAAQ,CAAA;QAChC,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,QAAQ,CAAA;QAChC,KAAK,KAAK;YACR,OAAO,cAAc,CAAC,OAAO,CAAA;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,qDAAqD;IACrD,GAAG,CAAC;QACF,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;QACvB,KAAK,MAAM,CAAC,CAAA;QACZ,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,IAAI,CAAA,CAAC,uBAAuB;QACtC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAC;IAEnB,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,MAAc;IAC3D,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,uDAAuD;IACvD,6DAA6D;IAC7D,MAAM,gBAAgB,GAAG,EAAE,CAAA;IAE3B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,4DAA4D,MAAM,GAAG,SAAS,EAAE,CAAC,CAAA;QACnG,CAAC;QACD,IAAI,SAAS,IAAI,gBAAgB,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,gBAAgB,mDAAmD,CAAC,CAAA;QAC5I,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;QACrC,SAAS,EAAE,CAAA;QACX,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAA;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAK;QACP,CAAC;QACD,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAoB,EAAE,IAAY;IAClE,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,6EAA6E;IAC7E,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,CAAA;IAEX,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,SAAS,IAAI,IAAI,CAAA,CAAC,uBAAuB;IAC3C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAErB,sDAAsD;IACtD,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;QACtB,IAAI,MAAM,CAAC,CAAA;QACX,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,IAAI,IAAI,CAAA;QACd,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB,EAAE,MAAc;IAKhE,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,gBAAgB,GAAG,EAAE,CAAA;IAE3B,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,0BAA0B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,SAAS,EAAE,CAAA;IAEX,wCAAwC;IACxC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAmB,CAAA;IAExD,oCAAoC;IACpC,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAA;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,wCAAwC;IACxC,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,8DAA8D,MAAM,GAAG,SAAS,EAAE,CAAC,CAAA;YACrG,CAAC;YACD,IAAI,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,+DAA+D,gBAAgB,mDAAmD,CAAC,CAAA;YACrJ,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;YACrC,SAAS,EAAE,CAAA;YACX,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAA;YAC9B,KAAK,IAAI,CAAC,CAAA;YACV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAClC,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,2BAA2B;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,qCAAqC,cAAc,WAAW,SAAS,GAAG,CAAC,CAAA;IAC7F,CAAC;IAED,qCAAqC;IACrC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5E,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,gCAAgC,CAAC,CAAA;IACvF,CAAC;IAED,0CAA0C;IAC1C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IAElF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;AAC5C,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB,EAAE,MAAc;IAC9D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAEjE,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,UAAU,EAAE,SAAS;KACtB,CAAA;AACH,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,MAAM,KAAK,GAAiB,EAAE,CAAA;IAE9B,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IACjC,oBAAoB;IACpB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,CAAC,IAAI;IACrB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,CAAC,IAAI;IACrB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,CAAC,IAAI;IACrB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,CAAC,IAAI;IACrB,0BAA0B;IAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,4BAA4B;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAA;IAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;IAChC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;IAEzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAElB,kBAAkB;IAClB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5D,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEzC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACvB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxB,CAAC;IAED,yBAAyB;IACzB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,WAAW,IAAI,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1B,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACvB,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE/B,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1B,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAExC,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/pack/format.ts"],"names":[],"mappings":"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"}