extract-base-iterator 2.2.6 → 2.3.0

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.
@@ -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';
@@ -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/cjs/index.js CHANGED
@@ -34,6 +34,7 @@ var _DirectoryEntryts = /*#__PURE__*/ _interop_require_default(require("./Direct
34
34
  var _FileEntryts = /*#__PURE__*/ _interop_require_default(require("./FileEntry.js"));
35
35
  var _LinkEntryts = /*#__PURE__*/ _interop_require_default(require("./LinkEntry.js"));
36
36
  var _SymbolicLinkEntryts = /*#__PURE__*/ _interop_require_default(require("./SymbolicLinkEntry.js"));
37
+ _export_star(require("./shared/index.js"), exports);
37
38
  _export_star(require("./types.js"), exports);
38
39
  var _waitForAccessts = /*#__PURE__*/ _interop_require_default(require("./waitForAccess.js"));
39
40
  function _assert_this_initialized(self) {
@@ -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":["DirectoryEntry","FileEntry","LinkEntry","SymbolicLinkEntry","ExtractBaseIterator","waitForAccess","StackBaseIterator"],"mappings":";;;;;;;;;;;QAOoBA;eAAAA,yBAAc;;QACdC;eAAAA,oBAAS;;QACTC;eAAAA,oBAAS;;QACTC;eAAAA,4BAAiB;;;eALhBC;;QAODC;eAAAA,wBAAa;;;QAZ1B;wEACuB;uEAMY;kEACL;kEACA;0EACQ;qBAC/B;sEAC2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAP1B,IAAA,AAAMD,oCAAN;;cAAMA;aAAAA;gCAAAA;QAAN,OAAA,kBAAMA;;WAAAA;EAA4BE,0BAAiB"}
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":["DirectoryEntry","FileEntry","LinkEntry","SymbolicLinkEntry","ExtractBaseIterator","waitForAccess","StackBaseIterator"],"mappings":";;;;;;;;;;;QAOoBA;eAAAA,yBAAc;;QACdC;eAAAA,oBAAS;;QACTC;eAAAA,oBAAS;;QACTC;eAAAA,4BAAiB;;;eALhBC;;QASDC;eAAAA,wBAAa;;;QAd1B;wEACuB;uEAMY;kEACL;kEACA;0EACQ;qBAE/B;qBACA;sEAC2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAT1B,IAAA,AAAMD,oCAAN;;cAAMA;aAAAA;gCAAAA;QAAN,OAAA,kBAAMA;;WAAAA;EAA4BE,0BAAiB"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Buffer Compatibility Layer for Node.js 0.8+
3
+ *
4
+ * Provides buffer utilities that work across all Node.js versions
5
+ * WITHOUT modifying global Buffer object.
6
+ *
7
+ * Version history:
8
+ * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`
9
+ * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`
10
+ * - Node 10+: Warns or errors on `new Buffer()`
11
+ *
12
+ * Solution: Feature detection with graceful fallback in both directions.
13
+ */
14
+ /**
15
+ * Allocate a zero-filled buffer (safe)
16
+ * - Uses Buffer.alloc() on Node 4.5+
17
+ * - Falls back to new Buffer() + fill on Node 0.8-4.4
18
+ */
19
+ export declare function allocBuffer(size: number): Buffer;
20
+ /**
21
+ * Allocate a buffer without initialization (unsafe but faster)
22
+ * - Uses Buffer.allocUnsafe() on Node 4.5+
23
+ * - Falls back to new Buffer() on Node 0.8-4.4
24
+ *
25
+ * WARNING: Buffer contents are uninitialized and may contain sensitive data.
26
+ * Only use when you will immediately overwrite all bytes.
27
+ */
28
+ export declare function allocBufferUnsafe(size: number): Buffer;
29
+ /**
30
+ * Create a buffer from string, array, or existing buffer
31
+ * - Uses Buffer.from() on Node 4.5+
32
+ * - Falls back to new Buffer() on Node 0.8-4.4
33
+ * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)
34
+ */
35
+ export declare function bufferFrom(data: string | number[] | Buffer | Uint8Array, encoding?: BufferEncoding): Buffer;
36
+ /**
37
+ * Compare two buffers or buffer regions
38
+ * - Uses Buffer.compare() on Node 5.10+ (with offset support)
39
+ * - Falls back to manual comparison on Node 0.8-5.9
40
+ */
41
+ export declare function bufferCompare(source: Buffer, target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
42
+ /**
43
+ * Check if buffer region equals byte array
44
+ * Useful for magic number detection without Buffer.from()
45
+ */
46
+ export declare function bufferEquals(buf: Buffer, offset: number, expected: number[]): boolean;
47
+ /**
48
+ * Copy buffer region to new buffer
49
+ * Works on all Node versions
50
+ */
51
+ export declare function bufferSliceCopy(buf: Buffer, start: number, end: number): Buffer;
52
+ /**
53
+ * Read 64-bit unsigned integer (little-endian)
54
+ * Uses two 32-bit reads since BigInt not available until Node 10.4
55
+ *
56
+ * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)
57
+ * This covers files up to ~9 PB which is practical for all real use cases.
58
+ */
59
+ export declare function readUInt64LE(buf: Buffer, offset: number): number;
60
+ /**
61
+ * Write 64-bit unsigned integer (little-endian)
62
+ * Same precision limitation as readUInt64LE
63
+ */
64
+ export declare function writeUInt64LE(buf: Buffer, value: number, offset: number): void;
65
+ /**
66
+ * Concatenate buffers - compatible with Node 0.8
67
+ * Handles crypto output which may not be proper Buffer instances in old Node.
68
+ *
69
+ * NOTE: This function is primarily needed for AES decryption compatibility
70
+ * in Node 0.8 where crypto output may not be proper Buffer instances.
71
+ * Libraries not using crypto can use native Buffer.concat() directly.
72
+ */
73
+ export declare function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?: number): Buffer;
74
+ /**
75
+ * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)
76
+ * Uses self-comparison: NaN is the only value not equal to itself
77
+ */
78
+ export declare function isNaN(value: number): boolean;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Buffer Compatibility Layer for Node.js 0.8+
3
+ *
4
+ * Provides buffer utilities that work across all Node.js versions
5
+ * WITHOUT modifying global Buffer object.
6
+ *
7
+ * Version history:
8
+ * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`
9
+ * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`
10
+ * - Node 10+: Warns or errors on `new Buffer()`
11
+ *
12
+ * Solution: Feature detection with graceful fallback in both directions.
13
+ */
14
+ /**
15
+ * Allocate a zero-filled buffer (safe)
16
+ * - Uses Buffer.alloc() on Node 4.5+
17
+ * - Falls back to new Buffer() + fill on Node 0.8-4.4
18
+ */
19
+ export declare function allocBuffer(size: number): Buffer;
20
+ /**
21
+ * Allocate a buffer without initialization (unsafe but faster)
22
+ * - Uses Buffer.allocUnsafe() on Node 4.5+
23
+ * - Falls back to new Buffer() on Node 0.8-4.4
24
+ *
25
+ * WARNING: Buffer contents are uninitialized and may contain sensitive data.
26
+ * Only use when you will immediately overwrite all bytes.
27
+ */
28
+ export declare function allocBufferUnsafe(size: number): Buffer;
29
+ /**
30
+ * Create a buffer from string, array, or existing buffer
31
+ * - Uses Buffer.from() on Node 4.5+
32
+ * - Falls back to new Buffer() on Node 0.8-4.4
33
+ * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)
34
+ */
35
+ export declare function bufferFrom(data: string | number[] | Buffer | Uint8Array, encoding?: BufferEncoding): Buffer;
36
+ /**
37
+ * Compare two buffers or buffer regions
38
+ * - Uses Buffer.compare() on Node 5.10+ (with offset support)
39
+ * - Falls back to manual comparison on Node 0.8-5.9
40
+ */
41
+ export declare function bufferCompare(source: Buffer, target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
42
+ /**
43
+ * Check if buffer region equals byte array
44
+ * Useful for magic number detection without Buffer.from()
45
+ */
46
+ export declare function bufferEquals(buf: Buffer, offset: number, expected: number[]): boolean;
47
+ /**
48
+ * Copy buffer region to new buffer
49
+ * Works on all Node versions
50
+ */
51
+ export declare function bufferSliceCopy(buf: Buffer, start: number, end: number): Buffer;
52
+ /**
53
+ * Read 64-bit unsigned integer (little-endian)
54
+ * Uses two 32-bit reads since BigInt not available until Node 10.4
55
+ *
56
+ * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)
57
+ * This covers files up to ~9 PB which is practical for all real use cases.
58
+ */
59
+ export declare function readUInt64LE(buf: Buffer, offset: number): number;
60
+ /**
61
+ * Write 64-bit unsigned integer (little-endian)
62
+ * Same precision limitation as readUInt64LE
63
+ */
64
+ export declare function writeUInt64LE(buf: Buffer, value: number, offset: number): void;
65
+ /**
66
+ * Concatenate buffers - compatible with Node 0.8
67
+ * Handles crypto output which may not be proper Buffer instances in old Node.
68
+ *
69
+ * NOTE: This function is primarily needed for AES decryption compatibility
70
+ * in Node 0.8 where crypto output may not be proper Buffer instances.
71
+ * Libraries not using crypto can use native Buffer.concat() directly.
72
+ */
73
+ export declare function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?: number): Buffer;
74
+ /**
75
+ * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)
76
+ * Uses self-comparison: NaN is the only value not equal to itself
77
+ */
78
+ export declare function isNaN(value: number): boolean;
@@ -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,13 @@
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';
@@ -0,0 +1,13 @@
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';
@@ -0,0 +1,67 @@
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 allocBuffer () {
23
+ return _compatts.allocBuffer;
24
+ },
25
+ get allocBufferUnsafe () {
26
+ return _compatts.allocBufferUnsafe;
27
+ },
28
+ get bufferCompare () {
29
+ return _compatts.bufferCompare;
30
+ },
31
+ get bufferConcat () {
32
+ return _compatts.bufferConcat;
33
+ },
34
+ get bufferEquals () {
35
+ return _compatts.bufferEquals;
36
+ },
37
+ get bufferFrom () {
38
+ return _compatts.bufferFrom;
39
+ },
40
+ get bufferSliceCopy () {
41
+ return _compatts.bufferSliceCopy;
42
+ },
43
+ get crc32 () {
44
+ return _crc32ts.crc32;
45
+ },
46
+ get crc32Region () {
47
+ return _crc32ts.crc32Region;
48
+ },
49
+ get isNaN () {
50
+ return _compatts.isNaN;
51
+ },
52
+ get readUInt64LE () {
53
+ return _compatts.readUInt64LE;
54
+ },
55
+ get verifyCrc32 () {
56
+ return _crc32ts.verifyCrc32;
57
+ },
58
+ get verifyCrc32Region () {
59
+ return _crc32ts.verifyCrc32Region;
60
+ },
61
+ get writeUInt64LE () {
62
+ return _compatts.writeUInt64LE;
63
+ }
64
+ });
65
+ var _compatts = require("./compat.js");
66
+ var _crc32ts = require("./crc32.js");
67
+ /* 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"],"names":["allocBuffer","allocBufferUnsafe","bufferCompare","bufferConcat","bufferEquals","bufferFrom","bufferSliceCopy","crc32","crc32Region","isNaN","readUInt64LE","verifyCrc32","verifyCrc32Region","writeUInt64LE"],"mappings":"AAAA;;;;;;;;;;CAUC;;;;;;;;;;;QAGCA;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"}
@@ -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,78 @@
1
+ /**
2
+ * Buffer Compatibility Layer for Node.js 0.8+
3
+ *
4
+ * Provides buffer utilities that work across all Node.js versions
5
+ * WITHOUT modifying global Buffer object.
6
+ *
7
+ * Version history:
8
+ * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`
9
+ * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`
10
+ * - Node 10+: Warns or errors on `new Buffer()`
11
+ *
12
+ * Solution: Feature detection with graceful fallback in both directions.
13
+ */
14
+ /**
15
+ * Allocate a zero-filled buffer (safe)
16
+ * - Uses Buffer.alloc() on Node 4.5+
17
+ * - Falls back to new Buffer() + fill on Node 0.8-4.4
18
+ */
19
+ export declare function allocBuffer(size: number): Buffer;
20
+ /**
21
+ * Allocate a buffer without initialization (unsafe but faster)
22
+ * - Uses Buffer.allocUnsafe() on Node 4.5+
23
+ * - Falls back to new Buffer() on Node 0.8-4.4
24
+ *
25
+ * WARNING: Buffer contents are uninitialized and may contain sensitive data.
26
+ * Only use when you will immediately overwrite all bytes.
27
+ */
28
+ export declare function allocBufferUnsafe(size: number): Buffer;
29
+ /**
30
+ * Create a buffer from string, array, or existing buffer
31
+ * - Uses Buffer.from() on Node 4.5+
32
+ * - Falls back to new Buffer() on Node 0.8-4.4
33
+ * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)
34
+ */
35
+ export declare function bufferFrom(data: string | number[] | Buffer | Uint8Array, encoding?: BufferEncoding): Buffer;
36
+ /**
37
+ * Compare two buffers or buffer regions
38
+ * - Uses Buffer.compare() on Node 5.10+ (with offset support)
39
+ * - Falls back to manual comparison on Node 0.8-5.9
40
+ */
41
+ export declare function bufferCompare(source: Buffer, target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
42
+ /**
43
+ * Check if buffer region equals byte array
44
+ * Useful for magic number detection without Buffer.from()
45
+ */
46
+ export declare function bufferEquals(buf: Buffer, offset: number, expected: number[]): boolean;
47
+ /**
48
+ * Copy buffer region to new buffer
49
+ * Works on all Node versions
50
+ */
51
+ export declare function bufferSliceCopy(buf: Buffer, start: number, end: number): Buffer;
52
+ /**
53
+ * Read 64-bit unsigned integer (little-endian)
54
+ * Uses two 32-bit reads since BigInt not available until Node 10.4
55
+ *
56
+ * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)
57
+ * This covers files up to ~9 PB which is practical for all real use cases.
58
+ */
59
+ export declare function readUInt64LE(buf: Buffer, offset: number): number;
60
+ /**
61
+ * Write 64-bit unsigned integer (little-endian)
62
+ * Same precision limitation as readUInt64LE
63
+ */
64
+ export declare function writeUInt64LE(buf: Buffer, value: number, offset: number): void;
65
+ /**
66
+ * Concatenate buffers - compatible with Node 0.8
67
+ * Handles crypto output which may not be proper Buffer instances in old Node.
68
+ *
69
+ * NOTE: This function is primarily needed for AES decryption compatibility
70
+ * in Node 0.8 where crypto output may not be proper Buffer instances.
71
+ * Libraries not using crypto can use native Buffer.concat() directly.
72
+ */
73
+ export declare function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?: number): Buffer;
74
+ /**
75
+ * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)
76
+ * Uses self-comparison: NaN is the only value not equal to itself
77
+ */
78
+ export declare function isNaN(value: number): boolean;
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Buffer Compatibility Layer for Node.js 0.8+
3
+ *
4
+ * Provides buffer utilities that work across all Node.js versions
5
+ * WITHOUT modifying global Buffer object.
6
+ *
7
+ * Version history:
8
+ * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`
9
+ * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`
10
+ * - Node 10+: Warns or errors on `new Buffer()`
11
+ *
12
+ * Solution: Feature detection with graceful fallback in both directions.
13
+ */ // Feature detection (runs once at module load)
14
+ var hasBufferAlloc = typeof Buffer.alloc === 'function';
15
+ var hasBufferAllocUnsafe = typeof Buffer.allocUnsafe === 'function';
16
+ var hasBufferFrom = typeof Buffer.from === 'function' && Buffer.from !== Uint8Array.from;
17
+ /**
18
+ * Allocate a zero-filled buffer (safe)
19
+ * - Uses Buffer.alloc() on Node 4.5+
20
+ * - Falls back to new Buffer() + fill on Node 0.8-4.4
21
+ */ export function allocBuffer(size) {
22
+ if (hasBufferAlloc) {
23
+ return Buffer.alloc(size);
24
+ }
25
+ // Legacy fallback: new Buffer() is uninitialized, must zero-fill
26
+ var buf = new Buffer(size);
27
+ buf.fill(0);
28
+ return buf;
29
+ }
30
+ /**
31
+ * Allocate a buffer without initialization (unsafe but faster)
32
+ * - Uses Buffer.allocUnsafe() on Node 4.5+
33
+ * - Falls back to new Buffer() on Node 0.8-4.4
34
+ *
35
+ * WARNING: Buffer contents are uninitialized and may contain sensitive data.
36
+ * Only use when you will immediately overwrite all bytes.
37
+ */ export function allocBufferUnsafe(size) {
38
+ if (hasBufferAllocUnsafe) {
39
+ return Buffer.allocUnsafe(size);
40
+ }
41
+ return new Buffer(size);
42
+ }
43
+ /**
44
+ * Create a buffer from string, array, or existing buffer
45
+ * - Uses Buffer.from() on Node 4.5+
46
+ * - Falls back to new Buffer() on Node 0.8-4.4
47
+ * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)
48
+ */ export function bufferFrom(data, encoding) {
49
+ if (hasBufferFrom) {
50
+ if (typeof data === 'string') {
51
+ return Buffer.from(data, encoding);
52
+ }
53
+ return Buffer.from(data);
54
+ }
55
+ // Node 0.8 compatibility - deprecated Buffer constructor
56
+ // For Uint8Array, convert to array first (needed for crypto output in Node 0.8)
57
+ if (data instanceof Uint8Array && !(data instanceof Buffer)) {
58
+ var arr = [];
59
+ for(var i = 0; i < data.length; i++){
60
+ arr.push(data[i]);
61
+ }
62
+ return new Buffer(arr);
63
+ }
64
+ return new Buffer(data, encoding);
65
+ }
66
+ /**
67
+ * Compare two buffers or buffer regions
68
+ * - Uses Buffer.compare() on Node 5.10+ (with offset support)
69
+ * - Falls back to manual comparison on Node 0.8-5.9
70
+ */ export function bufferCompare(source, target, targetStart, targetEnd, sourceStart, sourceEnd) {
71
+ sourceStart = sourceStart || 0;
72
+ sourceEnd = sourceEnd || source.length;
73
+ targetStart = targetStart || 0;
74
+ targetEnd = targetEnd || target.length;
75
+ // Check if native compare with offset support exists (Node 5.10+)
76
+ if (source.compare && source.compare.length >= 5) {
77
+ return source.compare(target, targetStart, targetEnd, sourceStart, sourceEnd);
78
+ }
79
+ // Manual comparison for older Node versions
80
+ var sourceLen = sourceEnd - sourceStart;
81
+ var targetLen = targetEnd - targetStart;
82
+ var len = Math.min(sourceLen, targetLen);
83
+ for(var i = 0; i < len; i++){
84
+ var s = source[sourceStart + i];
85
+ var t = target[targetStart + i];
86
+ if (s !== t) return s < t ? -1 : 1;
87
+ }
88
+ return sourceLen - targetLen;
89
+ }
90
+ /**
91
+ * Check if buffer region equals byte array
92
+ * Useful for magic number detection without Buffer.from()
93
+ */ export function bufferEquals(buf, offset, expected) {
94
+ if (offset + expected.length > buf.length) return false;
95
+ for(var i = 0; i < expected.length; i++){
96
+ if (buf[offset + i] !== expected[i]) return false;
97
+ }
98
+ return true;
99
+ }
100
+ /**
101
+ * Copy buffer region to new buffer
102
+ * Works on all Node versions
103
+ */ export function bufferSliceCopy(buf, start, end) {
104
+ var result = allocBuffer(end - start);
105
+ buf.copy(result, 0, start, end);
106
+ return result;
107
+ }
108
+ /**
109
+ * Read 64-bit unsigned integer (little-endian)
110
+ * Uses two 32-bit reads since BigInt not available until Node 10.4
111
+ *
112
+ * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)
113
+ * This covers files up to ~9 PB which is practical for all real use cases.
114
+ */ export function readUInt64LE(buf, offset) {
115
+ var low = buf.readUInt32LE(offset);
116
+ var high = buf.readUInt32LE(offset + 4);
117
+ return high * 0x100000000 + low;
118
+ }
119
+ /**
120
+ * Write 64-bit unsigned integer (little-endian)
121
+ * Same precision limitation as readUInt64LE
122
+ */ export function writeUInt64LE(buf, value, offset) {
123
+ var low = value >>> 0;
124
+ var high = value / 0x100000000 >>> 0;
125
+ buf.writeUInt32LE(low, offset);
126
+ buf.writeUInt32LE(high, offset + 4);
127
+ }
128
+ /**
129
+ * Concatenate buffers - compatible with Node 0.8
130
+ * Handles crypto output which may not be proper Buffer instances in old Node.
131
+ *
132
+ * NOTE: This function is primarily needed for AES decryption compatibility
133
+ * in Node 0.8 where crypto output may not be proper Buffer instances.
134
+ * Libraries not using crypto can use native Buffer.concat() directly.
135
+ */ export function bufferConcat(list, totalLength) {
136
+ // Calculate actual total length first
137
+ var actualLength = 0;
138
+ for(var i = 0; i < list.length; i++){
139
+ actualLength += list[i].length;
140
+ }
141
+ // Use specified totalLength or actual length
142
+ var targetLength = totalLength !== undefined ? totalLength : actualLength;
143
+ // Check if all items are proper Buffers AND no truncation needed
144
+ // (Node 0.8's Buffer.concat doesn't handle truncation well)
145
+ var allBuffers = true;
146
+ for(var j = 0; j < list.length; j++){
147
+ if (!(list[j] instanceof Buffer)) {
148
+ allBuffers = false;
149
+ break;
150
+ }
151
+ }
152
+ if (allBuffers && targetLength >= actualLength) {
153
+ return Buffer.concat(list, targetLength);
154
+ }
155
+ // Manual concat for mixed types or when truncation is needed
156
+ var result = allocBuffer(targetLength);
157
+ var offset = 0;
158
+ for(var k = 0; k < list.length && offset < targetLength; k++){
159
+ var buf = list[k];
160
+ for(var l = 0; l < buf.length && offset < targetLength; l++){
161
+ result[offset++] = buf[l];
162
+ }
163
+ }
164
+ return result;
165
+ }
166
+ /**
167
+ * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)
168
+ * Uses self-comparison: NaN is the only value not equal to itself
169
+ */ // biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy compatibility
170
+ export function isNaN(value) {
171
+ // biome-ignore lint/suspicious/noSelfCompare: NaN check pattern
172
+ return value !== value;
173
+ }
@@ -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":["hasBufferAlloc","Buffer","alloc","hasBufferAllocUnsafe","allocUnsafe","hasBufferFrom","from","Uint8Array","allocBuffer","size","buf","fill","allocBufferUnsafe","bufferFrom","data","encoding","arr","i","length","push","bufferCompare","source","target","targetStart","targetEnd","sourceStart","sourceEnd","compare","sourceLen","targetLen","len","Math","min","s","t","bufferEquals","offset","expected","bufferSliceCopy","start","end","result","copy","readUInt64LE","low","readUInt32LE","high","writeUInt64LE","value","writeUInt32LE","bufferConcat","list","totalLength","actualLength","targetLength","undefined","allBuffers","j","concat","k","l","isNaN"],"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,75 @@
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
+ */ // Pre-computed lookup table for performance
14
+ var CRC32_TABLE = [];
15
+ // Initialize table at module load time
16
+ (function initTable() {
17
+ for(var i = 0; i < 256; i++){
18
+ var c = i;
19
+ for(var j = 0; j < 8; j++){
20
+ if ((c & 1) !== 0) {
21
+ c = 0xedb88320 ^ c >>> 1;
22
+ } else {
23
+ c = c >>> 1;
24
+ }
25
+ }
26
+ CRC32_TABLE[i] = c >>> 0; // Ensure unsigned
27
+ }
28
+ })();
29
+ /**
30
+ * Calculate CRC32 of a buffer
31
+ * @param buf - Buffer to calculate CRC32 for
32
+ * @param initial - Optional initial CRC value (for streaming calculation)
33
+ * @returns CRC32 value as unsigned 32-bit integer
34
+ */ export function crc32(buf, initial) {
35
+ var crc = initial === undefined ? 0xffffffff : ~initial >>> 0;
36
+ for(var i = 0; i < buf.length; i++){
37
+ var index = (crc ^ buf[i]) & 0xff;
38
+ crc = CRC32_TABLE[index] ^ crc >>> 8;
39
+ }
40
+ return ~crc >>> 0; // Return unsigned
41
+ }
42
+ /**
43
+ * Calculate CRC32 of a buffer region
44
+ * @param buf - Buffer containing data
45
+ * @param offset - Start offset in buffer
46
+ * @param length - Number of bytes to process
47
+ * @param initial - Optional initial CRC value
48
+ * @returns CRC32 value as unsigned 32-bit integer
49
+ */ export function crc32Region(buf, offset, length, initial) {
50
+ var crc = initial === undefined ? 0xffffffff : ~initial >>> 0;
51
+ var end = offset + length;
52
+ for(var i = offset; i < end; i++){
53
+ var index = (crc ^ buf[i]) & 0xff;
54
+ crc = CRC32_TABLE[index] ^ crc >>> 8;
55
+ }
56
+ return ~crc >>> 0; // Return unsigned
57
+ }
58
+ /**
59
+ * Verify CRC32 matches expected value
60
+ * @param buf - Buffer to verify
61
+ * @param expected - Expected CRC32 value
62
+ * @returns true if CRC matches, false otherwise
63
+ */ export function verifyCrc32(buf, expected) {
64
+ return crc32(buf) === expected >>> 0;
65
+ }
66
+ /**
67
+ * Verify CRC32 of a buffer region matches expected value
68
+ * @param buf - Buffer containing data
69
+ * @param offset - Start offset in buffer
70
+ * @param length - Number of bytes to verify
71
+ * @param expected - Expected CRC32 value
72
+ * @returns true if CRC matches, false otherwise
73
+ */ export function verifyCrc32Region(buf, offset, length, expected) {
74
+ return crc32Region(buf, offset, length) === expected >>> 0;
75
+ }
@@ -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_TABLE","initTable","i","c","j","crc32","buf","initial","crc","undefined","length","index","crc32Region","offset","end","verifyCrc32","expected","verifyCrc32Region"],"mappings":"AAAA;;;;;;;;;;;;CAYC,GAED,4CAA4C;AAC5C,IAAIA,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;AAEA;;;;;CAKC,GACD,OAAO,SAASE,MAAMC,GAAW,EAAEC,OAAgB;IACjD,IAAIC,MAAMD,YAAYE,YAAY,aAAa,CAACF,YAAY;IAE5D,IAAK,IAAIL,IAAI,GAAGA,IAAII,IAAII,MAAM,EAAER,IAAK;QACnC,IAAIS,QAAQ,AAACH,CAAAA,MAAMF,GAAG,CAACJ,EAAE,AAAD,IAAK;QAC7BM,MAAMR,WAAW,CAACW,MAAM,GAAIH,QAAQ;IACtC;IAEA,OAAO,CAACA,QAAQ,GAAG,kBAAkB;AACvC;AAEA;;;;;;;CAOC,GACD,OAAO,SAASI,YAAYN,GAAW,EAAEO,MAAc,EAAEH,MAAc,EAAEH,OAAgB;IACvF,IAAIC,MAAMD,YAAYE,YAAY,aAAa,CAACF,YAAY;IAC5D,IAAIO,MAAMD,SAASH;IAEnB,IAAK,IAAIR,IAAIW,QAAQX,IAAIY,KAAKZ,IAAK;QACjC,IAAIS,QAAQ,AAACH,CAAAA,MAAMF,GAAG,CAACJ,EAAE,AAAD,IAAK;QAC7BM,MAAMR,WAAW,CAACW,MAAM,GAAIH,QAAQ;IACtC;IAEA,OAAO,CAACA,QAAQ,GAAG,kBAAkB;AACvC;AAEA;;;;;CAKC,GACD,OAAO,SAASO,YAAYT,GAAW,EAAEU,QAAgB;IACvD,OAAOX,MAAMC,SAASU,aAAa;AACrC;AAEA;;;;;;;CAOC,GACD,OAAO,SAASC,kBAAkBX,GAAW,EAAEO,MAAc,EAAEH,MAAc,EAAEM,QAAgB;IAC7F,OAAOJ,YAAYN,KAAKO,QAAQH,YAAYM,aAAa;AAC3D"}
@@ -0,0 +1,13 @@
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';
@@ -0,0 +1,12 @@
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
+ */ export { allocBuffer, allocBufferUnsafe, bufferCompare, bufferConcat, bufferEquals, bufferFrom, bufferSliceCopy, isNaN, readUInt64LE, writeUInt64LE } from './compat.js';
12
+ export { crc32, crc32Region, verifyCrc32, verifyCrc32Region } from './crc32.js';
@@ -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"],"names":["allocBuffer","allocBufferUnsafe","bufferCompare","bufferConcat","bufferEquals","bufferFrom","bufferSliceCopy","isNaN","readUInt64LE","writeUInt64LE","crc32","crc32Region","verifyCrc32","verifyCrc32Region"],"mappings":"AAAA;;;;;;;;;;CAUC,GAED,SACEA,WAAW,EACXC,iBAAiB,EACjBC,aAAa,EACbC,YAAY,EACZC,YAAY,EACZC,UAAU,EACVC,eAAe,EACfC,KAAK,EACLC,YAAY,EACZC,aAAa,QACR,cAAc;AAErB,SAASC,KAAK,EAAEC,WAAW,EAAEC,WAAW,EAAEC,iBAAiB,QAAQ,aAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extract-base-iterator",
3
- "version": "2.2.6",
3
+ "version": "2.3.0",
4
4
  "description": "Base iterator for extract iterators like tar-iterator and zip-iterator",
5
5
  "keywords": [
6
6
  "extract",
@@ -36,6 +36,7 @@
36
36
  "scripts": {
37
37
  "build": "tsds build",
38
38
  "format": "biome check --write --unsafe",
39
+ "prepublishOnly": "tsds validate",
39
40
  "test": "mocha --no-timeouts test/**/*.test.*",
40
41
  "test:engines": "nvu engines tsds test:node --no-timeouts",
41
42
  "version": "tsds version"