extract-base-iterator 2.2.6 → 2.3.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 (36) hide show
  1. package/dist/cjs/index.d.cts +1 -0
  2. package/dist/cjs/index.d.ts +1 -0
  3. package/dist/cjs/index.js +1 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/shared/EntryStream.d.cts +55 -0
  6. package/dist/cjs/shared/EntryStream.d.ts +55 -0
  7. package/dist/cjs/shared/EntryStream.js +197 -0
  8. package/dist/cjs/shared/EntryStream.js.map +1 -0
  9. package/dist/cjs/shared/compat.d.cts +78 -0
  10. package/dist/cjs/shared/compat.d.ts +78 -0
  11. package/dist/cjs/shared/compat.js +177 -0
  12. package/dist/cjs/shared/compat.js.map +1 -0
  13. package/dist/cjs/shared/crc32.d.cts +45 -0
  14. package/dist/cjs/shared/crc32.d.ts +45 -0
  15. package/dist/cjs/shared/crc32.js +76 -0
  16. package/dist/cjs/shared/crc32.js.map +1 -0
  17. package/dist/cjs/shared/index.d.cts +14 -0
  18. package/dist/cjs/shared/index.d.ts +14 -0
  19. package/dist/cjs/shared/index.js +76 -0
  20. package/dist/cjs/shared/index.js.map +1 -0
  21. package/dist/esm/index.d.ts +1 -0
  22. package/dist/esm/index.js +2 -0
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/shared/EntryStream.d.ts +55 -0
  25. package/dist/esm/shared/EntryStream.js +105 -0
  26. package/dist/esm/shared/EntryStream.js.map +1 -0
  27. package/dist/esm/shared/compat.d.ts +78 -0
  28. package/dist/esm/shared/compat.js +173 -0
  29. package/dist/esm/shared/compat.js.map +1 -0
  30. package/dist/esm/shared/crc32.d.ts +45 -0
  31. package/dist/esm/shared/crc32.js +75 -0
  32. package/dist/esm/shared/crc32.js.map +1 -0
  33. package/dist/esm/shared/index.d.ts +14 -0
  34. package/dist/esm/shared/index.js +13 -0
  35. package/dist/esm/shared/index.js.map +1 -0
  36. package/package.json +2 -1
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get allocBuffer () {
13
+ return allocBuffer;
14
+ },
15
+ get allocBufferUnsafe () {
16
+ return allocBufferUnsafe;
17
+ },
18
+ get bufferCompare () {
19
+ return bufferCompare;
20
+ },
21
+ get bufferConcat () {
22
+ return bufferConcat;
23
+ },
24
+ get bufferEquals () {
25
+ return bufferEquals;
26
+ },
27
+ get bufferFrom () {
28
+ return bufferFrom;
29
+ },
30
+ get bufferSliceCopy () {
31
+ return bufferSliceCopy;
32
+ },
33
+ get isNaN () {
34
+ return isNaN;
35
+ },
36
+ get readUInt64LE () {
37
+ return readUInt64LE;
38
+ },
39
+ get writeUInt64LE () {
40
+ return writeUInt64LE;
41
+ }
42
+ });
43
+ function _instanceof(left, right) {
44
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
45
+ return !!right[Symbol.hasInstance](left);
46
+ } else {
47
+ return left instanceof right;
48
+ }
49
+ }
50
+ /**
51
+ * Buffer Compatibility Layer for Node.js 0.8+
52
+ *
53
+ * Provides buffer utilities that work across all Node.js versions
54
+ * WITHOUT modifying global Buffer object.
55
+ *
56
+ * Version history:
57
+ * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`
58
+ * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`
59
+ * - Node 10+: Warns or errors on `new Buffer()`
60
+ *
61
+ * Solution: Feature detection with graceful fallback in both directions.
62
+ */ // Feature detection (runs once at module load)
63
+ var hasBufferAlloc = typeof Buffer.alloc === 'function';
64
+ var hasBufferAllocUnsafe = typeof Buffer.allocUnsafe === 'function';
65
+ var hasBufferFrom = typeof Buffer.from === 'function' && Buffer.from !== Uint8Array.from;
66
+ function allocBuffer(size) {
67
+ if (hasBufferAlloc) {
68
+ return Buffer.alloc(size);
69
+ }
70
+ // Legacy fallback: new Buffer() is uninitialized, must zero-fill
71
+ var buf = new Buffer(size);
72
+ buf.fill(0);
73
+ return buf;
74
+ }
75
+ function allocBufferUnsafe(size) {
76
+ if (hasBufferAllocUnsafe) {
77
+ return Buffer.allocUnsafe(size);
78
+ }
79
+ return new Buffer(size);
80
+ }
81
+ function bufferFrom(data, encoding) {
82
+ if (hasBufferFrom) {
83
+ if (typeof data === 'string') {
84
+ return Buffer.from(data, encoding);
85
+ }
86
+ return Buffer.from(data);
87
+ }
88
+ // Node 0.8 compatibility - deprecated Buffer constructor
89
+ // For Uint8Array, convert to array first (needed for crypto output in Node 0.8)
90
+ if (_instanceof(data, Uint8Array) && !_instanceof(data, Buffer)) {
91
+ var arr = [];
92
+ for(var i = 0; i < data.length; i++){
93
+ arr.push(data[i]);
94
+ }
95
+ return new Buffer(arr);
96
+ }
97
+ return new Buffer(data, encoding);
98
+ }
99
+ function bufferCompare(source, target, targetStart, targetEnd, sourceStart, sourceEnd) {
100
+ sourceStart = sourceStart || 0;
101
+ sourceEnd = sourceEnd || source.length;
102
+ targetStart = targetStart || 0;
103
+ targetEnd = targetEnd || target.length;
104
+ // Check if native compare with offset support exists (Node 5.10+)
105
+ if (source.compare && source.compare.length >= 5) {
106
+ return source.compare(target, targetStart, targetEnd, sourceStart, sourceEnd);
107
+ }
108
+ // Manual comparison for older Node versions
109
+ var sourceLen = sourceEnd - sourceStart;
110
+ var targetLen = targetEnd - targetStart;
111
+ var len = Math.min(sourceLen, targetLen);
112
+ for(var i = 0; i < len; i++){
113
+ var s = source[sourceStart + i];
114
+ var t = target[targetStart + i];
115
+ if (s !== t) return s < t ? -1 : 1;
116
+ }
117
+ return sourceLen - targetLen;
118
+ }
119
+ function bufferEquals(buf, offset, expected) {
120
+ if (offset + expected.length > buf.length) return false;
121
+ for(var i = 0; i < expected.length; i++){
122
+ if (buf[offset + i] !== expected[i]) return false;
123
+ }
124
+ return true;
125
+ }
126
+ function bufferSliceCopy(buf, start, end) {
127
+ var result = allocBuffer(end - start);
128
+ buf.copy(result, 0, start, end);
129
+ return result;
130
+ }
131
+ function readUInt64LE(buf, offset) {
132
+ var low = buf.readUInt32LE(offset);
133
+ var high = buf.readUInt32LE(offset + 4);
134
+ return high * 0x100000000 + low;
135
+ }
136
+ function writeUInt64LE(buf, value, offset) {
137
+ var low = value >>> 0;
138
+ var high = value / 0x100000000 >>> 0;
139
+ buf.writeUInt32LE(low, offset);
140
+ buf.writeUInt32LE(high, offset + 4);
141
+ }
142
+ function bufferConcat(list, totalLength) {
143
+ // Calculate actual total length first
144
+ var actualLength = 0;
145
+ for(var i = 0; i < list.length; i++){
146
+ actualLength += list[i].length;
147
+ }
148
+ // Use specified totalLength or actual length
149
+ var targetLength = totalLength !== undefined ? totalLength : actualLength;
150
+ // Check if all items are proper Buffers AND no truncation needed
151
+ // (Node 0.8's Buffer.concat doesn't handle truncation well)
152
+ var allBuffers = true;
153
+ for(var j = 0; j < list.length; j++){
154
+ if (!_instanceof(list[j], Buffer)) {
155
+ allBuffers = false;
156
+ break;
157
+ }
158
+ }
159
+ if (allBuffers && targetLength >= actualLength) {
160
+ return Buffer.concat(list, targetLength);
161
+ }
162
+ // Manual concat for mixed types or when truncation is needed
163
+ var result = allocBuffer(targetLength);
164
+ var offset = 0;
165
+ for(var k = 0; k < list.length && offset < targetLength; k++){
166
+ var buf = list[k];
167
+ for(var l = 0; l < buf.length && offset < targetLength; l++){
168
+ result[offset++] = buf[l];
169
+ }
170
+ }
171
+ return result;
172
+ }
173
+ function isNaN(value) {
174
+ // biome-ignore lint/suspicious/noSelfCompare: NaN check pattern
175
+ return value !== value;
176
+ }
177
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/compat.ts"],"sourcesContent":["/**\n * Buffer Compatibility Layer for Node.js 0.8+\n *\n * Provides buffer utilities that work across all Node.js versions\n * WITHOUT modifying global Buffer object.\n *\n * Version history:\n * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`\n * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`\n * - Node 10+: Warns or errors on `new Buffer()`\n *\n * Solution: Feature detection with graceful fallback in both directions.\n */\n\n// Feature detection (runs once at module load)\nvar hasBufferAlloc = typeof Buffer.alloc === 'function';\nvar hasBufferAllocUnsafe = typeof Buffer.allocUnsafe === 'function';\nvar hasBufferFrom = typeof Buffer.from === 'function' && Buffer.from !== Uint8Array.from;\n\n/**\n * Allocate a zero-filled buffer (safe)\n * - Uses Buffer.alloc() on Node 4.5+\n * - Falls back to new Buffer() + fill on Node 0.8-4.4\n */\nexport function allocBuffer(size: number): Buffer {\n if (hasBufferAlloc) {\n return Buffer.alloc(size);\n }\n // Legacy fallback: new Buffer() is uninitialized, must zero-fill\n var buf = new Buffer(size);\n buf.fill(0);\n return buf;\n}\n\n/**\n * Allocate a buffer without initialization (unsafe but faster)\n * - Uses Buffer.allocUnsafe() on Node 4.5+\n * - Falls back to new Buffer() on Node 0.8-4.4\n *\n * WARNING: Buffer contents are uninitialized and may contain sensitive data.\n * Only use when you will immediately overwrite all bytes.\n */\nexport function allocBufferUnsafe(size: number): Buffer {\n if (hasBufferAllocUnsafe) {\n return Buffer.allocUnsafe(size);\n }\n return new Buffer(size);\n}\n\n/**\n * Create a buffer from string, array, or existing buffer\n * - Uses Buffer.from() on Node 4.5+\n * - Falls back to new Buffer() on Node 0.8-4.4\n * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)\n */\nexport function bufferFrom(data: string | number[] | Buffer | Uint8Array, encoding?: BufferEncoding): Buffer {\n if (hasBufferFrom) {\n if (typeof data === 'string') {\n return Buffer.from(data, encoding);\n }\n return Buffer.from(data as number[] | Buffer);\n }\n // Node 0.8 compatibility - deprecated Buffer constructor\n // For Uint8Array, convert to array first (needed for crypto output in Node 0.8)\n if (data instanceof Uint8Array && !(data instanceof Buffer)) {\n var arr: number[] = [];\n for (var i = 0; i < data.length; i++) {\n arr.push(data[i]);\n }\n return new Buffer(arr);\n }\n return new Buffer(data as string & number[], encoding);\n}\n\n/**\n * Compare two buffers or buffer regions\n * - Uses Buffer.compare() on Node 5.10+ (with offset support)\n * - Falls back to manual comparison on Node 0.8-5.9\n */\nexport function bufferCompare(source: Buffer, target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number {\n sourceStart = sourceStart || 0;\n sourceEnd = sourceEnd || source.length;\n targetStart = targetStart || 0;\n targetEnd = targetEnd || target.length;\n\n // Check if native compare with offset support exists (Node 5.10+)\n if (source.compare && source.compare.length >= 5) {\n return source.compare(target, targetStart, targetEnd, sourceStart, sourceEnd);\n }\n\n // Manual comparison for older Node versions\n var sourceLen = sourceEnd - sourceStart;\n var targetLen = targetEnd - targetStart;\n var len = Math.min(sourceLen, targetLen);\n\n for (var i = 0; i < len; i++) {\n var s = source[sourceStart + i];\n var t = target[targetStart + i];\n if (s !== t) return s < t ? -1 : 1;\n }\n\n return sourceLen - targetLen;\n}\n\n/**\n * Check if buffer region equals byte array\n * Useful for magic number detection without Buffer.from()\n */\nexport function bufferEquals(buf: Buffer, offset: number, expected: number[]): boolean {\n if (offset + expected.length > buf.length) return false;\n for (var i = 0; i < expected.length; i++) {\n if (buf[offset + i] !== expected[i]) return false;\n }\n return true;\n}\n\n/**\n * Copy buffer region to new buffer\n * Works on all Node versions\n */\nexport function bufferSliceCopy(buf: Buffer, start: number, end: number): Buffer {\n var result = allocBuffer(end - start);\n buf.copy(result, 0, start, end);\n return result;\n}\n\n/**\n * Read 64-bit unsigned integer (little-endian)\n * Uses two 32-bit reads since BigInt not available until Node 10.4\n *\n * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)\n * This covers files up to ~9 PB which is practical for all real use cases.\n */\nexport function readUInt64LE(buf: Buffer, offset: number): number {\n var low = buf.readUInt32LE(offset);\n var high = buf.readUInt32LE(offset + 4);\n return high * 0x100000000 + low;\n}\n\n/**\n * Write 64-bit unsigned integer (little-endian)\n * Same precision limitation as readUInt64LE\n */\nexport function writeUInt64LE(buf: Buffer, value: number, offset: number): void {\n var low = value >>> 0;\n var high = (value / 0x100000000) >>> 0;\n buf.writeUInt32LE(low, offset);\n buf.writeUInt32LE(high, offset + 4);\n}\n\n/**\n * Concatenate buffers - compatible with Node 0.8\n * Handles crypto output which may not be proper Buffer instances in old Node.\n *\n * NOTE: This function is primarily needed for AES decryption compatibility\n * in Node 0.8 where crypto output may not be proper Buffer instances.\n * Libraries not using crypto can use native Buffer.concat() directly.\n */\nexport function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?: number): Buffer {\n // Calculate actual total length first\n var actualLength = 0;\n for (var i = 0; i < list.length; i++) {\n actualLength += list[i].length;\n }\n\n // Use specified totalLength or actual length\n var targetLength = totalLength !== undefined ? totalLength : actualLength;\n\n // Check if all items are proper Buffers AND no truncation needed\n // (Node 0.8's Buffer.concat doesn't handle truncation well)\n var allBuffers = true;\n for (var j = 0; j < list.length; j++) {\n if (!(list[j] instanceof Buffer)) {\n allBuffers = false;\n break;\n }\n }\n if (allBuffers && targetLength >= actualLength) {\n return Buffer.concat(list as Buffer[], targetLength);\n }\n\n // Manual concat for mixed types or when truncation is needed\n var result = allocBuffer(targetLength);\n var offset = 0;\n for (var k = 0; k < list.length && offset < targetLength; k++) {\n var buf = list[k];\n for (var l = 0; l < buf.length && offset < targetLength; l++) {\n result[offset++] = buf[l];\n }\n }\n return result;\n}\n\n/**\n * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)\n * Uses self-comparison: NaN is the only value not equal to itself\n */\n// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy compatibility\nexport function isNaN(value: number): boolean {\n // biome-ignore lint/suspicious/noSelfCompare: NaN check pattern\n return value !== value;\n}\n"],"names":["allocBuffer","allocBufferUnsafe","bufferCompare","bufferConcat","bufferEquals","bufferFrom","bufferSliceCopy","isNaN","readUInt64LE","writeUInt64LE","hasBufferAlloc","Buffer","alloc","hasBufferAllocUnsafe","allocUnsafe","hasBufferFrom","from","Uint8Array","size","buf","fill","data","encoding","arr","i","length","push","source","target","targetStart","targetEnd","sourceStart","sourceEnd","compare","sourceLen","targetLen","len","Math","min","s","t","offset","expected","start","end","result","copy","low","readUInt32LE","high","value","writeUInt32LE","list","totalLength","actualLength","targetLength","undefined","allBuffers","j","concat","k","l"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * CRC32 calculation for archive formats
3
+ *
4
+ * Uses IEEE polynomial 0xEDB88320 (same as ZIP, 7z, PNG, gzip, etc.)
5
+ * All bit operations (>>>, ^, &) work correctly in Node 0.8
6
+ *
7
+ * This is the standard CRC-32 algorithm used by:
8
+ * - ZIP/PKZIP
9
+ * - 7-Zip
10
+ * - PNG
11
+ * - gzip
12
+ * - Ethernet
13
+ */
14
+ /**
15
+ * Calculate CRC32 of a buffer
16
+ * @param buf - Buffer to calculate CRC32 for
17
+ * @param initial - Optional initial CRC value (for streaming calculation)
18
+ * @returns CRC32 value as unsigned 32-bit integer
19
+ */
20
+ export declare function crc32(buf: Buffer, initial?: number): number;
21
+ /**
22
+ * Calculate CRC32 of a buffer region
23
+ * @param buf - Buffer containing data
24
+ * @param offset - Start offset in buffer
25
+ * @param length - Number of bytes to process
26
+ * @param initial - Optional initial CRC value
27
+ * @returns CRC32 value as unsigned 32-bit integer
28
+ */
29
+ export declare function crc32Region(buf: Buffer, offset: number, length: number, initial?: number): number;
30
+ /**
31
+ * Verify CRC32 matches expected value
32
+ * @param buf - Buffer to verify
33
+ * @param expected - Expected CRC32 value
34
+ * @returns true if CRC matches, false otherwise
35
+ */
36
+ export declare function verifyCrc32(buf: Buffer, expected: number): boolean;
37
+ /**
38
+ * Verify CRC32 of a buffer region matches expected value
39
+ * @param buf - Buffer containing data
40
+ * @param offset - Start offset in buffer
41
+ * @param length - Number of bytes to verify
42
+ * @param expected - Expected CRC32 value
43
+ * @returns true if CRC matches, false otherwise
44
+ */
45
+ export declare function verifyCrc32Region(buf: Buffer, offset: number, length: number, expected: number): boolean;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * CRC32 calculation for archive formats
3
+ *
4
+ * Uses IEEE polynomial 0xEDB88320 (same as ZIP, 7z, PNG, gzip, etc.)
5
+ * All bit operations (>>>, ^, &) work correctly in Node 0.8
6
+ *
7
+ * This is the standard CRC-32 algorithm used by:
8
+ * - ZIP/PKZIP
9
+ * - 7-Zip
10
+ * - PNG
11
+ * - gzip
12
+ * - Ethernet
13
+ */
14
+ /**
15
+ * Calculate CRC32 of a buffer
16
+ * @param buf - Buffer to calculate CRC32 for
17
+ * @param initial - Optional initial CRC value (for streaming calculation)
18
+ * @returns CRC32 value as unsigned 32-bit integer
19
+ */
20
+ export declare function crc32(buf: Buffer, initial?: number): number;
21
+ /**
22
+ * Calculate CRC32 of a buffer region
23
+ * @param buf - Buffer containing data
24
+ * @param offset - Start offset in buffer
25
+ * @param length - Number of bytes to process
26
+ * @param initial - Optional initial CRC value
27
+ * @returns CRC32 value as unsigned 32-bit integer
28
+ */
29
+ export declare function crc32Region(buf: Buffer, offset: number, length: number, initial?: number): number;
30
+ /**
31
+ * Verify CRC32 matches expected value
32
+ * @param buf - Buffer to verify
33
+ * @param expected - Expected CRC32 value
34
+ * @returns true if CRC matches, false otherwise
35
+ */
36
+ export declare function verifyCrc32(buf: Buffer, expected: number): boolean;
37
+ /**
38
+ * Verify CRC32 of a buffer region matches expected value
39
+ * @param buf - Buffer containing data
40
+ * @param offset - Start offset in buffer
41
+ * @param length - Number of bytes to verify
42
+ * @param expected - Expected CRC32 value
43
+ * @returns true if CRC matches, false otherwise
44
+ */
45
+ export declare function verifyCrc32Region(buf: Buffer, offset: number, length: number, expected: number): boolean;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get crc32 () {
13
+ return crc32;
14
+ },
15
+ get crc32Region () {
16
+ return crc32Region;
17
+ },
18
+ get verifyCrc32 () {
19
+ return verifyCrc32;
20
+ },
21
+ get verifyCrc32Region () {
22
+ return verifyCrc32Region;
23
+ }
24
+ });
25
+ /**
26
+ * CRC32 calculation for archive formats
27
+ *
28
+ * Uses IEEE polynomial 0xEDB88320 (same as ZIP, 7z, PNG, gzip, etc.)
29
+ * All bit operations (>>>, ^, &) work correctly in Node 0.8
30
+ *
31
+ * This is the standard CRC-32 algorithm used by:
32
+ * - ZIP/PKZIP
33
+ * - 7-Zip
34
+ * - PNG
35
+ * - gzip
36
+ * - Ethernet
37
+ */ // Pre-computed lookup table for performance
38
+ var CRC32_TABLE = [];
39
+ // Initialize table at module load time
40
+ (function initTable() {
41
+ for(var i = 0; i < 256; i++){
42
+ var c = i;
43
+ for(var j = 0; j < 8; j++){
44
+ if ((c & 1) !== 0) {
45
+ c = 0xedb88320 ^ c >>> 1;
46
+ } else {
47
+ c = c >>> 1;
48
+ }
49
+ }
50
+ CRC32_TABLE[i] = c >>> 0; // Ensure unsigned
51
+ }
52
+ })();
53
+ function crc32(buf, initial) {
54
+ var crc = initial === undefined ? 0xffffffff : ~initial >>> 0;
55
+ for(var i = 0; i < buf.length; i++){
56
+ var index = (crc ^ buf[i]) & 0xff;
57
+ crc = CRC32_TABLE[index] ^ crc >>> 8;
58
+ }
59
+ return ~crc >>> 0; // Return unsigned
60
+ }
61
+ function crc32Region(buf, offset, length, initial) {
62
+ var crc = initial === undefined ? 0xffffffff : ~initial >>> 0;
63
+ var end = offset + length;
64
+ for(var i = offset; i < end; i++){
65
+ var index = (crc ^ buf[i]) & 0xff;
66
+ crc = CRC32_TABLE[index] ^ crc >>> 8;
67
+ }
68
+ return ~crc >>> 0; // Return unsigned
69
+ }
70
+ function verifyCrc32(buf, expected) {
71
+ return crc32(buf) === expected >>> 0;
72
+ }
73
+ function verifyCrc32Region(buf, offset, length, expected) {
74
+ return crc32Region(buf, offset, length) === expected >>> 0;
75
+ }
76
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/crc32.ts"],"sourcesContent":["/**\n * CRC32 calculation for archive formats\n *\n * Uses IEEE polynomial 0xEDB88320 (same as ZIP, 7z, PNG, gzip, etc.)\n * All bit operations (>>>, ^, &) work correctly in Node 0.8\n *\n * This is the standard CRC-32 algorithm used by:\n * - ZIP/PKZIP\n * - 7-Zip\n * - PNG\n * - gzip\n * - Ethernet\n */\n\n// Pre-computed lookup table for performance\nvar CRC32_TABLE: number[] = [];\n\n// Initialize table at module load time\n(function initTable() {\n for (var i = 0; i < 256; i++) {\n var c = i;\n for (var j = 0; j < 8; j++) {\n if ((c & 1) !== 0) {\n c = 0xedb88320 ^ (c >>> 1);\n } else {\n c = c >>> 1;\n }\n }\n CRC32_TABLE[i] = c >>> 0; // Ensure unsigned\n }\n})();\n\n/**\n * Calculate CRC32 of a buffer\n * @param buf - Buffer to calculate CRC32 for\n * @param initial - Optional initial CRC value (for streaming calculation)\n * @returns CRC32 value as unsigned 32-bit integer\n */\nexport function crc32(buf: Buffer, initial?: number): number {\n var crc = initial === undefined ? 0xffffffff : ~initial >>> 0;\n\n for (var i = 0; i < buf.length; i++) {\n var index = (crc ^ buf[i]) & 0xff;\n crc = CRC32_TABLE[index] ^ (crc >>> 8);\n }\n\n return ~crc >>> 0; // Return unsigned\n}\n\n/**\n * Calculate CRC32 of a buffer region\n * @param buf - Buffer containing data\n * @param offset - Start offset in buffer\n * @param length - Number of bytes to process\n * @param initial - Optional initial CRC value\n * @returns CRC32 value as unsigned 32-bit integer\n */\nexport function crc32Region(buf: Buffer, offset: number, length: number, initial?: number): number {\n var crc = initial === undefined ? 0xffffffff : ~initial >>> 0;\n var end = offset + length;\n\n for (var i = offset; i < end; i++) {\n var index = (crc ^ buf[i]) & 0xff;\n crc = CRC32_TABLE[index] ^ (crc >>> 8);\n }\n\n return ~crc >>> 0; // Return unsigned\n}\n\n/**\n * Verify CRC32 matches expected value\n * @param buf - Buffer to verify\n * @param expected - Expected CRC32 value\n * @returns true if CRC matches, false otherwise\n */\nexport function verifyCrc32(buf: Buffer, expected: number): boolean {\n return crc32(buf) === expected >>> 0;\n}\n\n/**\n * Verify CRC32 of a buffer region matches expected value\n * @param buf - Buffer containing data\n * @param offset - Start offset in buffer\n * @param length - Number of bytes to verify\n * @param expected - Expected CRC32 value\n * @returns true if CRC matches, false otherwise\n */\nexport function verifyCrc32Region(buf: Buffer, offset: number, length: number, expected: number): boolean {\n return crc32Region(buf, offset, length) === expected >>> 0;\n}\n"],"names":["crc32","crc32Region","verifyCrc32","verifyCrc32Region","CRC32_TABLE","initTable","i","c","j","buf","initial","crc","undefined","length","index","offset","end","expected"],"mappings":";;;;;;;;;;;QAsCgBA;eAAAA;;QAmBAC;eAAAA;;QAkBAC;eAAAA;;QAYAC;eAAAA;;;AAvFhB;;;;;;;;;;;;CAYC,GAED,4CAA4C;AAC5C,IAAIC,cAAwB,EAAE;AAE9B,uCAAuC;AACtC,CAAA,SAASC;IACR,IAAK,IAAIC,IAAI,GAAGA,IAAI,KAAKA,IAAK;QAC5B,IAAIC,IAAID;QACR,IAAK,IAAIE,IAAI,GAAGA,IAAI,GAAGA,IAAK;YAC1B,IAAI,AAACD,CAAAA,IAAI,CAAA,MAAO,GAAG;gBACjBA,IAAI,aAAcA,MAAM;YAC1B,OAAO;gBACLA,IAAIA,MAAM;YACZ;QACF;QACAH,WAAW,CAACE,EAAE,GAAGC,MAAM,GAAG,kBAAkB;IAC9C;AACF,CAAA;AAQO,SAASP,MAAMS,GAAW,EAAEC,OAAgB;IACjD,IAAIC,MAAMD,YAAYE,YAAY,aAAa,CAACF,YAAY;IAE5D,IAAK,IAAIJ,IAAI,GAAGA,IAAIG,IAAII,MAAM,EAAEP,IAAK;QACnC,IAAIQ,QAAQ,AAACH,CAAAA,MAAMF,GAAG,CAACH,EAAE,AAAD,IAAK;QAC7BK,MAAMP,WAAW,CAACU,MAAM,GAAIH,QAAQ;IACtC;IAEA,OAAO,CAACA,QAAQ,GAAG,kBAAkB;AACvC;AAUO,SAASV,YAAYQ,GAAW,EAAEM,MAAc,EAAEF,MAAc,EAAEH,OAAgB;IACvF,IAAIC,MAAMD,YAAYE,YAAY,aAAa,CAACF,YAAY;IAC5D,IAAIM,MAAMD,SAASF;IAEnB,IAAK,IAAIP,IAAIS,QAAQT,IAAIU,KAAKV,IAAK;QACjC,IAAIQ,QAAQ,AAACH,CAAAA,MAAMF,GAAG,CAACH,EAAE,AAAD,IAAK;QAC7BK,MAAMP,WAAW,CAACU,MAAM,GAAIH,QAAQ;IACtC;IAEA,OAAO,CAACA,QAAQ,GAAG,kBAAkB;AACvC;AAQO,SAAST,YAAYO,GAAW,EAAEQ,QAAgB;IACvD,OAAOjB,MAAMS,SAASQ,aAAa;AACrC;AAUO,SAASd,kBAAkBM,GAAW,EAAEM,MAAc,EAAEF,MAAc,EAAEI,QAAgB;IAC7F,OAAOhB,YAAYQ,KAAKM,QAAQF,YAAYI,aAAa;AAC3D"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared utilities for iterator libraries
3
+ *
4
+ * These utilities are designed to be used by:
5
+ * - zip-iterator
6
+ * - 7z-iterator
7
+ * - tar-iterator
8
+ * - Any other archive iterator library
9
+ *
10
+ * All utilities support Node.js 0.8+
11
+ */
12
+ export { allocBuffer, allocBufferUnsafe, bufferCompare, bufferConcat, bufferEquals, bufferFrom, bufferSliceCopy, isNaN, readUInt64LE, writeUInt64LE, } from './compat.js';
13
+ export { crc32, crc32Region, verifyCrc32, verifyCrc32Region } from './crc32.js';
14
+ export { default as EntryStream } from './EntryStream.js';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared utilities for iterator libraries
3
+ *
4
+ * These utilities are designed to be used by:
5
+ * - zip-iterator
6
+ * - 7z-iterator
7
+ * - tar-iterator
8
+ * - Any other archive iterator library
9
+ *
10
+ * All utilities support Node.js 0.8+
11
+ */
12
+ export { allocBuffer, allocBufferUnsafe, bufferCompare, bufferConcat, bufferEquals, bufferFrom, bufferSliceCopy, isNaN, readUInt64LE, writeUInt64LE, } from './compat.js';
13
+ export { crc32, crc32Region, verifyCrc32, verifyCrc32Region } from './crc32.js';
14
+ export { default as EntryStream } from './EntryStream.js';
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Shared utilities for iterator libraries
3
+ *
4
+ * These utilities are designed to be used by:
5
+ * - zip-iterator
6
+ * - 7z-iterator
7
+ * - tar-iterator
8
+ * - Any other archive iterator library
9
+ *
10
+ * All utilities support Node.js 0.8+
11
+ */ "use strict";
12
+ Object.defineProperty(exports, "__esModule", {
13
+ value: true
14
+ });
15
+ function _export(target, all) {
16
+ for(var name in all)Object.defineProperty(target, name, {
17
+ enumerable: true,
18
+ get: Object.getOwnPropertyDescriptor(all, name).get
19
+ });
20
+ }
21
+ _export(exports, {
22
+ get EntryStream () {
23
+ return _EntryStreamts.default;
24
+ },
25
+ get allocBuffer () {
26
+ return _compatts.allocBuffer;
27
+ },
28
+ get allocBufferUnsafe () {
29
+ return _compatts.allocBufferUnsafe;
30
+ },
31
+ get bufferCompare () {
32
+ return _compatts.bufferCompare;
33
+ },
34
+ get bufferConcat () {
35
+ return _compatts.bufferConcat;
36
+ },
37
+ get bufferEquals () {
38
+ return _compatts.bufferEquals;
39
+ },
40
+ get bufferFrom () {
41
+ return _compatts.bufferFrom;
42
+ },
43
+ get bufferSliceCopy () {
44
+ return _compatts.bufferSliceCopy;
45
+ },
46
+ get crc32 () {
47
+ return _crc32ts.crc32;
48
+ },
49
+ get crc32Region () {
50
+ return _crc32ts.crc32Region;
51
+ },
52
+ get isNaN () {
53
+ return _compatts.isNaN;
54
+ },
55
+ get readUInt64LE () {
56
+ return _compatts.readUInt64LE;
57
+ },
58
+ get verifyCrc32 () {
59
+ return _crc32ts.verifyCrc32;
60
+ },
61
+ get verifyCrc32Region () {
62
+ return _crc32ts.verifyCrc32Region;
63
+ },
64
+ get writeUInt64LE () {
65
+ return _compatts.writeUInt64LE;
66
+ }
67
+ });
68
+ var _compatts = require("./compat.js");
69
+ var _crc32ts = require("./crc32.js");
70
+ var _EntryStreamts = /*#__PURE__*/ _interop_require_default(require("./EntryStream.js"));
71
+ function _interop_require_default(obj) {
72
+ return obj && obj.__esModule ? obj : {
73
+ default: obj
74
+ };
75
+ }
76
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/index.ts"],"sourcesContent":["/**\n * Shared utilities for iterator libraries\n *\n * These utilities are designed to be used by:\n * - zip-iterator\n * - 7z-iterator\n * - tar-iterator\n * - Any other archive iterator library\n *\n * All utilities support Node.js 0.8+\n */\n\nexport {\n allocBuffer,\n allocBufferUnsafe,\n bufferCompare,\n bufferConcat,\n bufferEquals,\n bufferFrom,\n bufferSliceCopy,\n isNaN,\n readUInt64LE,\n writeUInt64LE,\n} from './compat.ts';\n\nexport { crc32, crc32Region, verifyCrc32, verifyCrc32Region } from './crc32.ts';\n\nexport { default as EntryStream } from './EntryStream.ts';\n"],"names":["EntryStream","allocBuffer","allocBufferUnsafe","bufferCompare","bufferConcat","bufferEquals","bufferFrom","bufferSliceCopy","crc32","crc32Region","isNaN","readUInt64LE","verifyCrc32","verifyCrc32Region","writeUInt64LE"],"mappings":"AAAA;;;;;;;;;;CAUC;;;;;;;;;;;QAiBmBA;eAAAA,sBAAW;;QAd7BC;eAAAA,qBAAW;;QACXC;eAAAA,2BAAiB;;QACjBC;eAAAA,uBAAa;;QACbC;eAAAA,sBAAY;;QACZC;eAAAA,sBAAY;;QACZC;eAAAA,oBAAU;;QACVC;eAAAA,yBAAe;;QAMRC;eAAAA,cAAK;;QAAEC;eAAAA,oBAAW;;QALzBC;eAAAA,eAAK;;QACLC;eAAAA,sBAAY;;QAIeC;eAAAA,oBAAW;;QAAEC;eAAAA,0BAAiB;;QAHzDC;eAAAA,uBAAa;;;wBACR;uBAE4D;oEAE5B"}
@@ -7,5 +7,6 @@ export { default as DirectoryEntry } from './DirectoryEntry.js';
7
7
  export { default as FileEntry } from './FileEntry.js';
8
8
  export { default as LinkEntry } from './LinkEntry.js';
9
9
  export { default as SymbolicLinkEntry } from './SymbolicLinkEntry.js';
10
+ export * from './shared/index.js';
10
11
  export * from './types.js';
11
12
  export { default as waitForAccess } from './waitForAccess.js';
package/dist/esm/index.js CHANGED
@@ -6,5 +6,7 @@ export { default as DirectoryEntry } from './DirectoryEntry.js';
6
6
  export { default as FileEntry } from './FileEntry.js';
7
7
  export { default as LinkEntry } from './LinkEntry.js';
8
8
  export { default as SymbolicLinkEntry } from './SymbolicLinkEntry.js';
9
+ // Shared utilities for iterator libraries
10
+ export * from './shared/index.js';
9
11
  export * from './types.js';
10
12
  export { default as waitForAccess } from './waitForAccess.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/index.ts"],"sourcesContent":["import './polyfills.ts';\nimport StackBaseIterator from 'stack-base-iterator';\n\nimport type { Entry } from './types.ts';\n\nexport default class ExtractBaseIterator extends StackBaseIterator<Entry> {}\n\nexport { default as DirectoryEntry } from './DirectoryEntry.ts';\nexport { default as FileEntry } from './FileEntry.ts';\nexport { default as LinkEntry } from './LinkEntry.ts';\nexport { default as SymbolicLinkEntry } from './SymbolicLinkEntry.ts';\nexport * from './types.ts';\nexport { default as waitForAccess } from './waitForAccess.ts';\n"],"names":["StackBaseIterator","ExtractBaseIterator","default","DirectoryEntry","FileEntry","LinkEntry","SymbolicLinkEntry","waitForAccess"],"mappings":"AAAA,OAAO,iBAAiB;AACxB,OAAOA,uBAAuB,sBAAsB;AAIpD,eAAe,MAAMC,4BAA4BD;AAA0B;AAE3E,SAASE,WAAWC,cAAc,QAAQ,sBAAsB;AAChE,SAASD,WAAWE,SAAS,QAAQ,iBAAiB;AACtD,SAASF,WAAWG,SAAS,QAAQ,iBAAiB;AACtD,SAASH,WAAWI,iBAAiB,QAAQ,yBAAyB;AACtE,cAAc,aAAa;AAC3B,SAASJ,WAAWK,aAAa,QAAQ,qBAAqB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/index.ts"],"sourcesContent":["import './polyfills.ts';\nimport StackBaseIterator from 'stack-base-iterator';\n\nimport type { Entry } from './types.ts';\n\nexport default class ExtractBaseIterator extends StackBaseIterator<Entry> {}\n\nexport { default as DirectoryEntry } from './DirectoryEntry.ts';\nexport { default as FileEntry } from './FileEntry.ts';\nexport { default as LinkEntry } from './LinkEntry.ts';\nexport { default as SymbolicLinkEntry } from './SymbolicLinkEntry.ts';\n// Shared utilities for iterator libraries\nexport * from './shared/index.ts';\nexport * from './types.ts';\nexport { default as waitForAccess } from './waitForAccess.ts';\n"],"names":["StackBaseIterator","ExtractBaseIterator","default","DirectoryEntry","FileEntry","LinkEntry","SymbolicLinkEntry","waitForAccess"],"mappings":"AAAA,OAAO,iBAAiB;AACxB,OAAOA,uBAAuB,sBAAsB;AAIpD,eAAe,MAAMC,4BAA4BD;AAA0B;AAE3E,SAASE,WAAWC,cAAc,QAAQ,sBAAsB;AAChE,SAASD,WAAWE,SAAS,QAAQ,iBAAiB;AACtD,SAASF,WAAWG,SAAS,QAAQ,iBAAiB;AACtD,SAASH,WAAWI,iBAAiB,QAAQ,yBAAyB;AACtE,0CAA0C;AAC1C,cAAc,oBAAoB;AAClC,cAAc,aAAa;AAC3B,SAASJ,WAAWK,aAAa,QAAQ,qBAAqB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * EntryStream - Simple readable-like stream for entry content
3
+ *
4
+ * Extends EventEmitter to emit 'data', 'end', 'error' events.
5
+ * Node 0.8 compatible.
6
+ *
7
+ * This base class is designed to be used by:
8
+ * - zip-iterator
9
+ * - 7z-iterator
10
+ * - tar-iterator
11
+ * - Any other archive iterator library
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ /**
15
+ * Base stream class for archive entry content.
16
+ * Can be extended for special entry types like sparse files.
17
+ */
18
+ export default class EntryStream extends EventEmitter {
19
+ protected _paused: boolean;
20
+ protected _ended: boolean;
21
+ protected _endEmitted: boolean;
22
+ protected _buffered: Buffer[];
23
+ /**
24
+ * Push data to the stream
25
+ */
26
+ push(data: Buffer): void;
27
+ /**
28
+ * End the stream
29
+ */
30
+ end(): void;
31
+ /**
32
+ * Resume reading (drain buffered data)
33
+ */
34
+ resume(): this;
35
+ /**
36
+ * Pause reading
37
+ */
38
+ pause(): this;
39
+ /**
40
+ * Check if stream has ended
41
+ */
42
+ get ended(): boolean;
43
+ /**
44
+ * Pipe to a writable stream
45
+ */
46
+ pipe<T extends NodeJS.WritableStream>(dest: T): T;
47
+ /**
48
+ * Flush buffered data
49
+ */
50
+ protected _flush(): void;
51
+ /**
52
+ * Emit end event (only once)
53
+ */
54
+ protected _emitEnd(): void;
55
+ }