7z-iterator 0.1.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.
- package/LICENSE +42 -0
- package/README.md +142 -0
- package/dist/cjs/FileEntry.d.cts +12 -0
- package/dist/cjs/FileEntry.d.ts +12 -0
- package/dist/cjs/FileEntry.js +147 -0
- package/dist/cjs/FileEntry.js.map +1 -0
- package/dist/cjs/SevenZipIterator.d.cts +8 -0
- package/dist/cjs/SevenZipIterator.d.ts +8 -0
- package/dist/cjs/SevenZipIterator.js +204 -0
- package/dist/cjs/SevenZipIterator.js.map +1 -0
- package/dist/cjs/index.d.cts +4 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/Lock.d.cts +11 -0
- package/dist/cjs/lib/Lock.d.ts +11 -0
- package/dist/cjs/lib/Lock.js +65 -0
- package/dist/cjs/lib/Lock.js.map +1 -0
- package/dist/cjs/lib/streamToSource.d.cts +20 -0
- package/dist/cjs/lib/streamToSource.d.ts +20 -0
- package/dist/cjs/lib/streamToSource.js +116 -0
- package/dist/cjs/lib/streamToSource.js.map +1 -0
- package/dist/cjs/nextEntry.d.cts +4 -0
- package/dist/cjs/nextEntry.d.ts +4 -0
- package/dist/cjs/nextEntry.js +102 -0
- package/dist/cjs/nextEntry.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/sevenz/NumberCodec.d.cts +58 -0
- package/dist/cjs/sevenz/NumberCodec.d.ts +58 -0
- package/dist/cjs/sevenz/NumberCodec.js +133 -0
- package/dist/cjs/sevenz/NumberCodec.js.map +1 -0
- package/dist/cjs/sevenz/SevenZipParser.d.cts +96 -0
- package/dist/cjs/sevenz/SevenZipParser.d.ts +96 -0
- package/dist/cjs/sevenz/SevenZipParser.js +457 -0
- package/dist/cjs/sevenz/SevenZipParser.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Aes.d.cts +22 -0
- package/dist/cjs/sevenz/codecs/Aes.d.ts +22 -0
- package/dist/cjs/sevenz/codecs/Aes.js +179 -0
- package/dist/cjs/sevenz/codecs/Aes.js.map +1 -0
- package/dist/cjs/sevenz/codecs/BZip2.d.cts +14 -0
- package/dist/cjs/sevenz/codecs/BZip2.d.ts +14 -0
- package/dist/cjs/sevenz/codecs/BZip2.js +37 -0
- package/dist/cjs/sevenz/codecs/BZip2.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Bcj.d.cts +15 -0
- package/dist/cjs/sevenz/codecs/Bcj.d.ts +15 -0
- package/dist/cjs/sevenz/codecs/Bcj.js +89 -0
- package/dist/cjs/sevenz/codecs/Bcj.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Copy.d.cts +14 -0
- package/dist/cjs/sevenz/codecs/Copy.d.ts +14 -0
- package/dist/cjs/sevenz/codecs/Copy.js +28 -0
- package/dist/cjs/sevenz/codecs/Copy.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Deflate.d.cts +14 -0
- package/dist/cjs/sevenz/codecs/Deflate.d.ts +14 -0
- package/dist/cjs/sevenz/codecs/Deflate.js +39 -0
- package/dist/cjs/sevenz/codecs/Deflate.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Delta.d.cts +15 -0
- package/dist/cjs/sevenz/codecs/Delta.d.ts +15 -0
- package/dist/cjs/sevenz/codecs/Delta.js +55 -0
- package/dist/cjs/sevenz/codecs/Delta.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Lzma.d.cts +14 -0
- package/dist/cjs/sevenz/codecs/Lzma.d.ts +14 -0
- package/dist/cjs/sevenz/codecs/Lzma.js +53 -0
- package/dist/cjs/sevenz/codecs/Lzma.js.map +1 -0
- package/dist/cjs/sevenz/codecs/Lzma2.d.cts +14 -0
- package/dist/cjs/sevenz/codecs/Lzma2.d.ts +14 -0
- package/dist/cjs/sevenz/codecs/Lzma2.js +160 -0
- package/dist/cjs/sevenz/codecs/Lzma2.js.map +1 -0
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.d.cts +7 -0
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.d.ts +7 -0
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js +36 -0
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js.map +1 -0
- package/dist/cjs/sevenz/codecs/index.d.cts +24 -0
- package/dist/cjs/sevenz/codecs/index.d.ts +24 -0
- package/dist/cjs/sevenz/codecs/index.js +128 -0
- package/dist/cjs/sevenz/codecs/index.js.map +1 -0
- package/dist/cjs/sevenz/codecs/streams.d.cts +18 -0
- package/dist/cjs/sevenz/codecs/streams.d.ts +18 -0
- package/dist/cjs/sevenz/codecs/streams.js +79 -0
- package/dist/cjs/sevenz/codecs/streams.js.map +1 -0
- package/dist/cjs/sevenz/constants.d.cts +86 -0
- package/dist/cjs/sevenz/constants.d.ts +86 -0
- package/dist/cjs/sevenz/constants.js +162 -0
- package/dist/cjs/sevenz/constants.js.map +1 -0
- package/dist/cjs/sevenz/headers.d.cts +70 -0
- package/dist/cjs/sevenz/headers.d.ts +70 -0
- package/dist/cjs/sevenz/headers.js +661 -0
- package/dist/cjs/sevenz/headers.js.map +1 -0
- package/dist/cjs/sevenz/index.d.cts +4 -0
- package/dist/cjs/sevenz/index.d.ts +4 -0
- package/dist/cjs/sevenz/index.js +33 -0
- package/dist/cjs/sevenz/index.js.map +1 -0
- package/dist/cjs/types.d.cts +37 -0
- package/dist/cjs/types.d.ts +37 -0
- package/dist/cjs/types.js +32 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/FileEntry.d.ts +12 -0
- package/dist/esm/FileEntry.js +63 -0
- package/dist/esm/FileEntry.js.map +1 -0
- package/dist/esm/SevenZipIterator.d.ts +8 -0
- package/dist/esm/SevenZipIterator.js +116 -0
- package/dist/esm/SevenZipIterator.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/Lock.d.ts +11 -0
- package/dist/esm/lib/Lock.js +41 -0
- package/dist/esm/lib/Lock.js.map +1 -0
- package/dist/esm/lib/streamToSource.d.ts +20 -0
- package/dist/esm/lib/streamToSource.js +100 -0
- package/dist/esm/lib/streamToSource.js.map +1 -0
- package/dist/esm/nextEntry.d.ts +4 -0
- package/dist/esm/nextEntry.js +86 -0
- package/dist/esm/nextEntry.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/sevenz/NumberCodec.d.ts +58 -0
- package/dist/esm/sevenz/NumberCodec.js +138 -0
- package/dist/esm/sevenz/NumberCodec.js.map +1 -0
- package/dist/esm/sevenz/SevenZipParser.d.ts +96 -0
- package/dist/esm/sevenz/SevenZipParser.js +419 -0
- package/dist/esm/sevenz/SevenZipParser.js.map +1 -0
- package/dist/esm/sevenz/codecs/Aes.d.ts +22 -0
- package/dist/esm/sevenz/codecs/Aes.js +162 -0
- package/dist/esm/sevenz/codecs/Aes.js.map +1 -0
- package/dist/esm/sevenz/codecs/BZip2.d.ts +14 -0
- package/dist/esm/sevenz/codecs/BZip2.js +22 -0
- package/dist/esm/sevenz/codecs/BZip2.js.map +1 -0
- package/dist/esm/sevenz/codecs/Bcj.d.ts +15 -0
- package/dist/esm/sevenz/codecs/Bcj.js +75 -0
- package/dist/esm/sevenz/codecs/Bcj.js.map +1 -0
- package/dist/esm/sevenz/codecs/Copy.d.ts +14 -0
- package/dist/esm/sevenz/codecs/Copy.js +18 -0
- package/dist/esm/sevenz/codecs/Copy.js.map +1 -0
- package/dist/esm/sevenz/codecs/Deflate.d.ts +14 -0
- package/dist/esm/sevenz/codecs/Deflate.js +24 -0
- package/dist/esm/sevenz/codecs/Deflate.js.map +1 -0
- package/dist/esm/sevenz/codecs/Delta.d.ts +15 -0
- package/dist/esm/sevenz/codecs/Delta.js +41 -0
- package/dist/esm/sevenz/codecs/Delta.js.map +1 -0
- package/dist/esm/sevenz/codecs/Lzma.d.ts +14 -0
- package/dist/esm/sevenz/codecs/Lzma.js +38 -0
- package/dist/esm/sevenz/codecs/Lzma.js.map +1 -0
- package/dist/esm/sevenz/codecs/Lzma2.d.ts +14 -0
- package/dist/esm/sevenz/codecs/Lzma2.js +145 -0
- package/dist/esm/sevenz/codecs/Lzma2.js.map +1 -0
- package/dist/esm/sevenz/codecs/createBufferingDecoder.d.ts +7 -0
- package/dist/esm/sevenz/codecs/createBufferingDecoder.js +25 -0
- package/dist/esm/sevenz/codecs/createBufferingDecoder.js.map +1 -0
- package/dist/esm/sevenz/codecs/index.d.ts +24 -0
- package/dist/esm/sevenz/codecs/index.js +108 -0
- package/dist/esm/sevenz/codecs/index.js.map +1 -0
- package/dist/esm/sevenz/codecs/streams.d.ts +18 -0
- package/dist/esm/sevenz/codecs/streams.js +66 -0
- package/dist/esm/sevenz/codecs/streams.js.map +1 -0
- package/dist/esm/sevenz/constants.d.ts +86 -0
- package/dist/esm/sevenz/constants.js +131 -0
- package/dist/esm/sevenz/constants.js.map +1 -0
- package/dist/esm/sevenz/headers.d.ts +70 -0
- package/dist/esm/sevenz/headers.js +646 -0
- package/dist/esm/sevenz/headers.js.map +1 -0
- package/dist/esm/sevenz/index.d.ts +4 -0
- package/dist/esm/sevenz/index.js +5 -0
- package/dist/esm/sevenz/index.js.map +1 -0
- package/dist/esm/types.d.ts +37 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Transform } from 'readable-stream';
|
|
2
|
+
import { getPassword, setPassword } from './Aes.js';
|
|
3
|
+
export { getPassword, setPassword };
|
|
4
|
+
export interface Codec {
|
|
5
|
+
decode: (input: Buffer, properties?: Buffer, unpackSize?: number) => Buffer;
|
|
6
|
+
createDecoder: (properties?: Buffer, unpackSize?: number) => Transform;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Register a codec
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerCodec(id: number[], codec: Codec): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get a codec by ID
|
|
14
|
+
* @throws Error if codec is not supported
|
|
15
|
+
*/
|
|
16
|
+
export declare function getCodec(id: number[]): Codec;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a codec is supported
|
|
19
|
+
*/
|
|
20
|
+
export declare function isCodecSupported(id: number[]): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Get human-readable codec name
|
|
23
|
+
*/
|
|
24
|
+
export declare function getCodecName(id: number[]): string;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Codec registry for 7z decompression
|
|
2
|
+
// Each codec provides a decode function and optionally a streaming decoder
|
|
3
|
+
import { CodecId, createCodedError, ErrorCode } from '../constants.js';
|
|
4
|
+
import { createAesDecoder, decodeAes, getPassword, setPassword } from './Aes.js';
|
|
5
|
+
import { createBcjDecoder, decodeBcj } from './Bcj.js';
|
|
6
|
+
import { createBzip2Decoder, decodeBzip2 } from './BZip2.js';
|
|
7
|
+
import { createCopyDecoder, decodeCopy } from './Copy.js';
|
|
8
|
+
import { createDeflateDecoder, decodeDeflate } from './Deflate.js';
|
|
9
|
+
import { createDeltaDecoder, decodeDelta } from './Delta.js';
|
|
10
|
+
import { createLzmaDecoder, decodeLzma } from './Lzma.js';
|
|
11
|
+
import { createLzma2Decoder, decodeLzma2 } from './Lzma2.js';
|
|
12
|
+
// Re-export password functions for API access
|
|
13
|
+
export { getPassword, setPassword };
|
|
14
|
+
// Registry of supported codecs
|
|
15
|
+
var codecs = {};
|
|
16
|
+
/**
|
|
17
|
+
* Convert codec ID bytes to a string key
|
|
18
|
+
*/ function codecIdToKey(id) {
|
|
19
|
+
var parts = [];
|
|
20
|
+
for(var i = 0; i < id.length; i++){
|
|
21
|
+
parts.push(id[i].toString(16).toUpperCase());
|
|
22
|
+
}
|
|
23
|
+
return parts.join('-');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if two codec IDs match
|
|
27
|
+
*/ function codecIdEquals(a, b) {
|
|
28
|
+
if (a.length !== b.length) return false;
|
|
29
|
+
for(var i = 0; i < a.length; i++){
|
|
30
|
+
if (a[i] !== b[i]) return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Register a codec
|
|
36
|
+
*/ export function registerCodec(id, codec) {
|
|
37
|
+
codecs[codecIdToKey(id)] = codec;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get a codec by ID
|
|
41
|
+
* @throws Error if codec is not supported
|
|
42
|
+
*/ export function getCodec(id) {
|
|
43
|
+
var key = codecIdToKey(id);
|
|
44
|
+
var codec = codecs[key];
|
|
45
|
+
if (!codec) {
|
|
46
|
+
throw createCodedError(`Unsupported codec: ${key}`, ErrorCode.UNSUPPORTED_CODEC);
|
|
47
|
+
}
|
|
48
|
+
return codec;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if a codec is supported
|
|
52
|
+
*/ export function isCodecSupported(id) {
|
|
53
|
+
return codecs[codecIdToKey(id)] !== undefined;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get human-readable codec name
|
|
57
|
+
*/ export function getCodecName(id) {
|
|
58
|
+
if (codecIdEquals(id, CodecId.COPY)) return 'Copy';
|
|
59
|
+
if (codecIdEquals(id, CodecId.LZMA)) return 'LZMA';
|
|
60
|
+
if (codecIdEquals(id, CodecId.LZMA2)) return 'LZMA2';
|
|
61
|
+
if (codecIdEquals(id, CodecId.BCJ_X86)) return 'BCJ (x86)';
|
|
62
|
+
if (codecIdEquals(id, CodecId.DELTA)) return 'Delta';
|
|
63
|
+
if (codecIdEquals(id, CodecId.DEFLATE)) return 'Deflate';
|
|
64
|
+
if (codecIdEquals(id, CodecId.BZIP2)) return 'BZip2';
|
|
65
|
+
if (codecIdEquals(id, CodecId.AES)) return 'AES-256';
|
|
66
|
+
return `Unknown (${codecIdToKey(id)})`;
|
|
67
|
+
}
|
|
68
|
+
// Register built-in codecs
|
|
69
|
+
// Copy codec (no compression)
|
|
70
|
+
registerCodec(CodecId.COPY, {
|
|
71
|
+
decode: decodeCopy,
|
|
72
|
+
createDecoder: createCopyDecoder
|
|
73
|
+
});
|
|
74
|
+
// LZMA codec
|
|
75
|
+
registerCodec(CodecId.LZMA, {
|
|
76
|
+
decode: decodeLzma,
|
|
77
|
+
createDecoder: createLzmaDecoder
|
|
78
|
+
});
|
|
79
|
+
// LZMA2 codec
|
|
80
|
+
registerCodec(CodecId.LZMA2, {
|
|
81
|
+
decode: decodeLzma2,
|
|
82
|
+
createDecoder: createLzma2Decoder
|
|
83
|
+
});
|
|
84
|
+
// BCJ (x86) filter
|
|
85
|
+
registerCodec(CodecId.BCJ_X86, {
|
|
86
|
+
decode: decodeBcj,
|
|
87
|
+
createDecoder: createBcjDecoder
|
|
88
|
+
});
|
|
89
|
+
// Delta filter
|
|
90
|
+
registerCodec(CodecId.DELTA, {
|
|
91
|
+
decode: decodeDelta,
|
|
92
|
+
createDecoder: createDeltaDecoder
|
|
93
|
+
});
|
|
94
|
+
// Deflate codec
|
|
95
|
+
registerCodec(CodecId.DEFLATE, {
|
|
96
|
+
decode: decodeDeflate,
|
|
97
|
+
createDecoder: createDeflateDecoder
|
|
98
|
+
});
|
|
99
|
+
// BZip2 codec
|
|
100
|
+
registerCodec(CodecId.BZIP2, {
|
|
101
|
+
decode: decodeBzip2,
|
|
102
|
+
createDecoder: createBzip2Decoder
|
|
103
|
+
});
|
|
104
|
+
// AES-256-CBC codec (encryption)
|
|
105
|
+
registerCodec(CodecId.AES, {
|
|
106
|
+
decode: decodeAes,
|
|
107
|
+
createDecoder: createAesDecoder
|
|
108
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/index.ts"],"sourcesContent":["// Codec registry for 7z decompression\n// Each codec provides a decode function and optionally a streaming decoder\n\nimport type { Transform } from 'readable-stream';\nimport { CodecId, createCodedError, ErrorCode } from '../constants.ts';\nimport { createAesDecoder, decodeAes, getPassword, setPassword } from './Aes.ts';\nimport { createBcjDecoder, decodeBcj } from './Bcj.ts';\nimport { createBzip2Decoder, decodeBzip2 } from './BZip2.ts';\nimport { createCopyDecoder, decodeCopy } from './Copy.ts';\nimport { createDeflateDecoder, decodeDeflate } from './Deflate.ts';\nimport { createDeltaDecoder, decodeDelta } from './Delta.ts';\nimport { createLzmaDecoder, decodeLzma } from './Lzma.ts';\nimport { createLzma2Decoder, decodeLzma2 } from './Lzma2.ts';\n\n// Re-export password functions for API access\nexport { getPassword, setPassword };\n\nexport interface Codec {\n decode: (input: Buffer, properties?: Buffer, unpackSize?: number) => Buffer;\n createDecoder: (properties?: Buffer, unpackSize?: number) => Transform;\n}\n\n// Registry of supported codecs\nvar codecs: { [key: string]: Codec } = {};\n\n/**\n * Convert codec ID bytes to a string key\n */\nfunction codecIdToKey(id: number[]): string {\n var parts: string[] = [];\n for (var i = 0; i < id.length; i++) {\n parts.push(id[i].toString(16).toUpperCase());\n }\n return parts.join('-');\n}\n\n/**\n * Check if two codec IDs match\n */\nfunction codecIdEquals(a: number[], b: number[]): boolean {\n if (a.length !== b.length) return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n/**\n * Register a codec\n */\nexport function registerCodec(id: number[], codec: Codec): void {\n codecs[codecIdToKey(id)] = codec;\n}\n\n/**\n * Get a codec by ID\n * @throws Error if codec is not supported\n */\nexport function getCodec(id: number[]): Codec {\n var key = codecIdToKey(id);\n var codec = codecs[key];\n if (!codec) {\n throw createCodedError(`Unsupported codec: ${key}`, ErrorCode.UNSUPPORTED_CODEC);\n }\n return codec;\n}\n\n/**\n * Check if a codec is supported\n */\nexport function isCodecSupported(id: number[]): boolean {\n return codecs[codecIdToKey(id)] !== undefined;\n}\n\n/**\n * Get human-readable codec name\n */\nexport function getCodecName(id: number[]): string {\n if (codecIdEquals(id, CodecId.COPY)) return 'Copy';\n if (codecIdEquals(id, CodecId.LZMA)) return 'LZMA';\n if (codecIdEquals(id, CodecId.LZMA2)) return 'LZMA2';\n if (codecIdEquals(id, CodecId.BCJ_X86)) return 'BCJ (x86)';\n if (codecIdEquals(id, CodecId.DELTA)) return 'Delta';\n if (codecIdEquals(id, CodecId.DEFLATE)) return 'Deflate';\n if (codecIdEquals(id, CodecId.BZIP2)) return 'BZip2';\n if (codecIdEquals(id, CodecId.AES)) return 'AES-256';\n return `Unknown (${codecIdToKey(id)})`;\n}\n\n// Register built-in codecs\n\n// Copy codec (no compression)\nregisterCodec(CodecId.COPY, {\n decode: decodeCopy,\n createDecoder: createCopyDecoder,\n});\n\n// LZMA codec\nregisterCodec(CodecId.LZMA, {\n decode: decodeLzma,\n createDecoder: createLzmaDecoder,\n});\n\n// LZMA2 codec\nregisterCodec(CodecId.LZMA2, {\n decode: decodeLzma2,\n createDecoder: createLzma2Decoder,\n});\n\n// BCJ (x86) filter\nregisterCodec(CodecId.BCJ_X86, {\n decode: decodeBcj,\n createDecoder: createBcjDecoder,\n});\n\n// Delta filter\nregisterCodec(CodecId.DELTA, {\n decode: decodeDelta,\n createDecoder: createDeltaDecoder,\n});\n\n// Deflate codec\nregisterCodec(CodecId.DEFLATE, {\n decode: decodeDeflate,\n createDecoder: createDeflateDecoder,\n});\n\n// BZip2 codec\nregisterCodec(CodecId.BZIP2, {\n decode: decodeBzip2,\n createDecoder: createBzip2Decoder,\n});\n\n// AES-256-CBC codec (encryption)\nregisterCodec(CodecId.AES, {\n decode: decodeAes,\n createDecoder: createAesDecoder,\n});\n"],"names":["CodecId","createCodedError","ErrorCode","createAesDecoder","decodeAes","getPassword","setPassword","createBcjDecoder","decodeBcj","createBzip2Decoder","decodeBzip2","createCopyDecoder","decodeCopy","createDeflateDecoder","decodeDeflate","createDeltaDecoder","decodeDelta","createLzmaDecoder","decodeLzma","createLzma2Decoder","decodeLzma2","codecs","codecIdToKey","id","parts","i","length","push","toString","toUpperCase","join","codecIdEquals","a","b","registerCodec","codec","getCodec","key","UNSUPPORTED_CODEC","isCodecSupported","undefined","getCodecName","COPY","LZMA","LZMA2","BCJ_X86","DELTA","DEFLATE","BZIP2","AES","decode","createDecoder"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input stream wrapper for lzma-purejs
|
|
3
|
+
* Wraps a Buffer region as a readable stream interface
|
|
4
|
+
*/
|
|
5
|
+
export declare function createInputStream(buffer: Buffer, offset: number, length: number): {
|
|
6
|
+
readByte: () => number;
|
|
7
|
+
read: (buf: number[], bufOffset: number, len: number) => number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Output stream wrapper for lzma-purejs
|
|
11
|
+
* Collects output bytes into Buffer chunks
|
|
12
|
+
*/
|
|
13
|
+
export declare function createOutputStream(): {
|
|
14
|
+
writeByte: (b: number) => void;
|
|
15
|
+
write: (buf: number[], bufOffset: number, len: number) => number;
|
|
16
|
+
flush: () => void;
|
|
17
|
+
toBuffer: () => Buffer;
|
|
18
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Shared stream wrappers for lzma-purejs codec interface
|
|
2
|
+
// These adapters convert between Buffer/lzma-purejs stream interfaces
|
|
3
|
+
import { allocBufferUnsafe } from 'extract-base-iterator';
|
|
4
|
+
/**
|
|
5
|
+
* Input stream wrapper for lzma-purejs
|
|
6
|
+
* Wraps a Buffer region as a readable stream interface
|
|
7
|
+
*/ export function createInputStream(buffer, offset, length) {
|
|
8
|
+
var pos = 0;
|
|
9
|
+
var end = Math.min(offset + length, buffer.length);
|
|
10
|
+
var start = offset;
|
|
11
|
+
return {
|
|
12
|
+
readByte: ()=>{
|
|
13
|
+
if (start + pos >= end) return -1;
|
|
14
|
+
return buffer[start + pos++];
|
|
15
|
+
},
|
|
16
|
+
read: (buf, bufOffset, len)=>{
|
|
17
|
+
var bytesRead = 0;
|
|
18
|
+
while(bytesRead < len && start + pos < end){
|
|
19
|
+
buf[bufOffset + bytesRead] = buffer[start + pos];
|
|
20
|
+
pos++;
|
|
21
|
+
bytesRead++;
|
|
22
|
+
}
|
|
23
|
+
return bytesRead === 0 ? -1 : bytesRead;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Output stream wrapper for lzma-purejs
|
|
29
|
+
* Collects output bytes into Buffer chunks
|
|
30
|
+
*/ export function createOutputStream() {
|
|
31
|
+
var chunks = [];
|
|
32
|
+
var currentChunk = [];
|
|
33
|
+
var CHUNK_SIZE = 16384;
|
|
34
|
+
return {
|
|
35
|
+
writeByte: (b)=>{
|
|
36
|
+
currentChunk.push(b);
|
|
37
|
+
if (currentChunk.length >= CHUNK_SIZE) {
|
|
38
|
+
chunks.push(allocBufferUnsafe(currentChunk.length));
|
|
39
|
+
for(var i = 0; i < currentChunk.length; i++){
|
|
40
|
+
chunks[chunks.length - 1][i] = currentChunk[i];
|
|
41
|
+
}
|
|
42
|
+
currentChunk = [];
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
write: function(buf, bufOffset, len) {
|
|
46
|
+
for(var i = 0; i < len; i++){
|
|
47
|
+
this.writeByte(buf[bufOffset + i]);
|
|
48
|
+
}
|
|
49
|
+
return len;
|
|
50
|
+
},
|
|
51
|
+
flush: ()=>{
|
|
52
|
+
if (currentChunk.length > 0) {
|
|
53
|
+
var finalChunk = allocBufferUnsafe(currentChunk.length);
|
|
54
|
+
for(var i = 0; i < currentChunk.length; i++){
|
|
55
|
+
finalChunk[i] = currentChunk[i];
|
|
56
|
+
}
|
|
57
|
+
chunks.push(finalChunk);
|
|
58
|
+
currentChunk = [];
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
toBuffer: function() {
|
|
62
|
+
this.flush();
|
|
63
|
+
return Buffer.concat(chunks);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/streams.ts"],"sourcesContent":["// Shared stream wrappers for lzma-purejs codec interface\n// These adapters convert between Buffer/lzma-purejs stream interfaces\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\n\n/**\n * Input stream wrapper for lzma-purejs\n * Wraps a Buffer region as a readable stream interface\n */\nexport function createInputStream(buffer: Buffer, offset: number, length: number) {\n var pos = 0;\n var end = Math.min(offset + length, buffer.length);\n var start = offset;\n\n return {\n readByte: (): number => {\n if (start + pos >= end) return -1;\n return buffer[start + pos++];\n },\n read: (buf: number[], bufOffset: number, len: number): number => {\n var bytesRead = 0;\n while (bytesRead < len && start + pos < end) {\n buf[bufOffset + bytesRead] = buffer[start + pos];\n pos++;\n bytesRead++;\n }\n return bytesRead === 0 ? -1 : bytesRead;\n },\n };\n}\n\n/**\n * Output stream wrapper for lzma-purejs\n * Collects output bytes into Buffer chunks\n */\nexport function createOutputStream() {\n var chunks: Buffer[] = [];\n var currentChunk: number[] = [];\n var CHUNK_SIZE = 16384;\n\n return {\n writeByte: (b: number): void => {\n currentChunk.push(b);\n if (currentChunk.length >= CHUNK_SIZE) {\n chunks.push(allocBufferUnsafe(currentChunk.length));\n for (var i = 0; i < currentChunk.length; i++) {\n chunks[chunks.length - 1][i] = currentChunk[i];\n }\n currentChunk = [];\n }\n },\n write: function (buf: number[], bufOffset: number, len: number): number {\n for (var i = 0; i < len; i++) {\n this.writeByte(buf[bufOffset + i]);\n }\n return len;\n },\n flush: (): void => {\n if (currentChunk.length > 0) {\n var finalChunk = allocBufferUnsafe(currentChunk.length);\n for (var i = 0; i < currentChunk.length; i++) {\n finalChunk[i] = currentChunk[i];\n }\n chunks.push(finalChunk);\n currentChunk = [];\n }\n },\n toBuffer: function (): Buffer {\n this.flush();\n return Buffer.concat(chunks);\n },\n };\n}\n"],"names":["allocBufferUnsafe","createInputStream","buffer","offset","length","pos","end","Math","min","start","readByte","read","buf","bufOffset","len","bytesRead","createOutputStream","chunks","currentChunk","CHUNK_SIZE","writeByte","b","push","i","write","flush","finalChunk","toBuffer","Buffer","concat"],"mappings":"AAAA,yDAAyD;AACzD,sEAAsE;AAEtE,SAASA,iBAAiB,QAAQ,wBAAwB;AAE1D;;;CAGC,GACD,OAAO,SAASC,kBAAkBC,MAAc,EAAEC,MAAc,EAAEC,MAAc;IAC9E,IAAIC,MAAM;IACV,IAAIC,MAAMC,KAAKC,GAAG,CAACL,SAASC,QAAQF,OAAOE,MAAM;IACjD,IAAIK,QAAQN;IAEZ,OAAO;QACLO,UAAU;YACR,IAAID,QAAQJ,OAAOC,KAAK,OAAO,CAAC;YAChC,OAAOJ,MAAM,CAACO,QAAQJ,MAAM;QAC9B;QACAM,MAAM,CAACC,KAAeC,WAAmBC;YACvC,IAAIC,YAAY;YAChB,MAAOA,YAAYD,OAAOL,QAAQJ,MAAMC,IAAK;gBAC3CM,GAAG,CAACC,YAAYE,UAAU,GAAGb,MAAM,CAACO,QAAQJ,IAAI;gBAChDA;gBACAU;YACF;YACA,OAAOA,cAAc,IAAI,CAAC,IAAIA;QAChC;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,SAASC;IACd,IAAIC,SAAmB,EAAE;IACzB,IAAIC,eAAyB,EAAE;IAC/B,IAAIC,aAAa;IAEjB,OAAO;QACLC,WAAW,CAACC;YACVH,aAAaI,IAAI,CAACD;YAClB,IAAIH,aAAad,MAAM,IAAIe,YAAY;gBACrCF,OAAOK,IAAI,CAACtB,kBAAkBkB,aAAad,MAAM;gBACjD,IAAK,IAAImB,IAAI,GAAGA,IAAIL,aAAad,MAAM,EAAEmB,IAAK;oBAC5CN,MAAM,CAACA,OAAOb,MAAM,GAAG,EAAE,CAACmB,EAAE,GAAGL,YAAY,CAACK,EAAE;gBAChD;gBACAL,eAAe,EAAE;YACnB;QACF;QACAM,OAAO,SAAUZ,GAAa,EAAEC,SAAiB,EAAEC,GAAW;YAC5D,IAAK,IAAIS,IAAI,GAAGA,IAAIT,KAAKS,IAAK;gBAC5B,IAAI,CAACH,SAAS,CAACR,GAAG,CAACC,YAAYU,EAAE;YACnC;YACA,OAAOT;QACT;QACAW,OAAO;YACL,IAAIP,aAAad,MAAM,GAAG,GAAG;gBAC3B,IAAIsB,aAAa1B,kBAAkBkB,aAAad,MAAM;gBACtD,IAAK,IAAImB,IAAI,GAAGA,IAAIL,aAAad,MAAM,EAAEmB,IAAK;oBAC5CG,UAAU,CAACH,EAAE,GAAGL,YAAY,CAACK,EAAE;gBACjC;gBACAN,OAAOK,IAAI,CAACI;gBACZR,eAAe,EAAE;YACnB;QACF;QACAS,UAAU;YACR,IAAI,CAACF,KAAK;YACV,OAAOG,OAAOC,MAAM,CAACZ;QACvB;IACF;AACF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export declare var SEVENZ_MAGIC: number[];
|
|
2
|
+
export declare var SIGNATURE_HEADER_SIZE: number;
|
|
3
|
+
export declare var START_HEADER_SIZE: number;
|
|
4
|
+
export declare var PropertyId: {
|
|
5
|
+
kEnd: number;
|
|
6
|
+
kHeader: number;
|
|
7
|
+
kArchiveProperties: number;
|
|
8
|
+
kAdditionalStreamsInfo: number;
|
|
9
|
+
kMainStreamsInfo: number;
|
|
10
|
+
kFilesInfo: number;
|
|
11
|
+
kPackInfo: number;
|
|
12
|
+
kUnpackInfo: number;
|
|
13
|
+
kSubStreamsInfo: number;
|
|
14
|
+
kSize: number;
|
|
15
|
+
kCRC: number;
|
|
16
|
+
kFolder: number;
|
|
17
|
+
kCodersUnpackSize: number;
|
|
18
|
+
kNumUnpackStream: number;
|
|
19
|
+
kEmptyStream: number;
|
|
20
|
+
kEmptyFile: number;
|
|
21
|
+
kAnti: number;
|
|
22
|
+
kName: number;
|
|
23
|
+
kCTime: number;
|
|
24
|
+
kATime: number;
|
|
25
|
+
kMTime: number;
|
|
26
|
+
kWinAttributes: number;
|
|
27
|
+
kComment: number;
|
|
28
|
+
kEncodedHeader: number;
|
|
29
|
+
kStartPos: number;
|
|
30
|
+
kDummy: number;
|
|
31
|
+
};
|
|
32
|
+
export declare var CodecId: {
|
|
33
|
+
COPY: number[];
|
|
34
|
+
DELTA: number[];
|
|
35
|
+
LZMA: number[];
|
|
36
|
+
LZMA2: number[];
|
|
37
|
+
BCJ_X86: number[];
|
|
38
|
+
DEFLATE: number[];
|
|
39
|
+
BZIP2: number[];
|
|
40
|
+
AES: number[];
|
|
41
|
+
};
|
|
42
|
+
export declare var FileAttribute: {
|
|
43
|
+
READONLY: number;
|
|
44
|
+
HIDDEN: number;
|
|
45
|
+
SYSTEM: number;
|
|
46
|
+
DIRECTORY: number;
|
|
47
|
+
ARCHIVE: number;
|
|
48
|
+
DEVICE: number;
|
|
49
|
+
NORMAL: number;
|
|
50
|
+
TEMPORARY: number;
|
|
51
|
+
SPARSE_FILE: number;
|
|
52
|
+
REPARSE_POINT: number;
|
|
53
|
+
COMPRESSED: number;
|
|
54
|
+
OFFLINE: number;
|
|
55
|
+
NOT_CONTENT_INDEXED: number;
|
|
56
|
+
ENCRYPTED: number;
|
|
57
|
+
UNIX_EXTENSION: number;
|
|
58
|
+
};
|
|
59
|
+
export declare var UnixMode: {
|
|
60
|
+
DIR: number;
|
|
61
|
+
FILE: number;
|
|
62
|
+
SYMLINK: number;
|
|
63
|
+
RWXRWXRWX: number;
|
|
64
|
+
RWXRXRX: number;
|
|
65
|
+
RWRR: number;
|
|
66
|
+
DEFAULT_DIR: number;
|
|
67
|
+
DEFAULT_FILE: number;
|
|
68
|
+
};
|
|
69
|
+
export declare var ErrorCode: {
|
|
70
|
+
INVALID_SIGNATURE: string;
|
|
71
|
+
CRC_MISMATCH: string;
|
|
72
|
+
UNSUPPORTED_CODEC: string;
|
|
73
|
+
UNSUPPORTED_VERSION: string;
|
|
74
|
+
UNSUPPORTED_FEATURE: string;
|
|
75
|
+
TRUNCATED_ARCHIVE: string;
|
|
76
|
+
CORRUPT_HEADER: string;
|
|
77
|
+
ENCRYPTED_ARCHIVE: string;
|
|
78
|
+
COMPRESSED_HEADER: string;
|
|
79
|
+
};
|
|
80
|
+
export interface CodedError extends Error {
|
|
81
|
+
code: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create an error with a code property
|
|
85
|
+
*/
|
|
86
|
+
export declare function createCodedError(message: string, code: string): CodedError;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// 7z format constants
|
|
2
|
+
// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html
|
|
3
|
+
// 7z signature: '7z' + magic bytes
|
|
4
|
+
export var SEVENZ_MAGIC = [
|
|
5
|
+
0x37,
|
|
6
|
+
0x7a,
|
|
7
|
+
0xbc,
|
|
8
|
+
0xaf,
|
|
9
|
+
0x27,
|
|
10
|
+
0x1c
|
|
11
|
+
];
|
|
12
|
+
// Header sizes
|
|
13
|
+
export var SIGNATURE_HEADER_SIZE = 32;
|
|
14
|
+
export var START_HEADER_SIZE = 20; // Part of signature header after magic + version
|
|
15
|
+
// Property IDs for encoded header
|
|
16
|
+
export var PropertyId = {
|
|
17
|
+
kEnd: 0x00,
|
|
18
|
+
kHeader: 0x01,
|
|
19
|
+
kArchiveProperties: 0x02,
|
|
20
|
+
kAdditionalStreamsInfo: 0x03,
|
|
21
|
+
kMainStreamsInfo: 0x04,
|
|
22
|
+
kFilesInfo: 0x05,
|
|
23
|
+
kPackInfo: 0x06,
|
|
24
|
+
kUnpackInfo: 0x07,
|
|
25
|
+
kSubStreamsInfo: 0x08,
|
|
26
|
+
kSize: 0x09,
|
|
27
|
+
kCRC: 0x0a,
|
|
28
|
+
kFolder: 0x0b,
|
|
29
|
+
kCodersUnpackSize: 0x0c,
|
|
30
|
+
kNumUnpackStream: 0x0d,
|
|
31
|
+
kEmptyStream: 0x0e,
|
|
32
|
+
kEmptyFile: 0x0f,
|
|
33
|
+
kAnti: 0x10,
|
|
34
|
+
kName: 0x11,
|
|
35
|
+
kCTime: 0x12,
|
|
36
|
+
kATime: 0x13,
|
|
37
|
+
kMTime: 0x14,
|
|
38
|
+
kWinAttributes: 0x15,
|
|
39
|
+
kComment: 0x16,
|
|
40
|
+
kEncodedHeader: 0x17,
|
|
41
|
+
kStartPos: 0x18,
|
|
42
|
+
kDummy: 0x19
|
|
43
|
+
};
|
|
44
|
+
// Codec IDs
|
|
45
|
+
// 7z uses variable-length codec IDs
|
|
46
|
+
export var CodecId = {
|
|
47
|
+
COPY: [
|
|
48
|
+
0x00
|
|
49
|
+
],
|
|
50
|
+
DELTA: [
|
|
51
|
+
0x03
|
|
52
|
+
],
|
|
53
|
+
LZMA: [
|
|
54
|
+
0x03,
|
|
55
|
+
0x01,
|
|
56
|
+
0x01
|
|
57
|
+
],
|
|
58
|
+
LZMA2: [
|
|
59
|
+
0x21
|
|
60
|
+
],
|
|
61
|
+
BCJ_X86: [
|
|
62
|
+
0x03,
|
|
63
|
+
0x03,
|
|
64
|
+
0x01,
|
|
65
|
+
0x03
|
|
66
|
+
],
|
|
67
|
+
DEFLATE: [
|
|
68
|
+
0x04,
|
|
69
|
+
0x01,
|
|
70
|
+
0x08
|
|
71
|
+
],
|
|
72
|
+
BZIP2: [
|
|
73
|
+
0x04,
|
|
74
|
+
0x02,
|
|
75
|
+
0x02
|
|
76
|
+
],
|
|
77
|
+
AES: [
|
|
78
|
+
0x06,
|
|
79
|
+
0xf1,
|
|
80
|
+
0x07,
|
|
81
|
+
0x01
|
|
82
|
+
]
|
|
83
|
+
};
|
|
84
|
+
// File attribute flags (Windows style, stored in FilesInfo)
|
|
85
|
+
export var FileAttribute = {
|
|
86
|
+
READONLY: 0x01,
|
|
87
|
+
HIDDEN: 0x02,
|
|
88
|
+
SYSTEM: 0x04,
|
|
89
|
+
DIRECTORY: 0x10,
|
|
90
|
+
ARCHIVE: 0x20,
|
|
91
|
+
DEVICE: 0x40,
|
|
92
|
+
NORMAL: 0x80,
|
|
93
|
+
TEMPORARY: 0x100,
|
|
94
|
+
SPARSE_FILE: 0x200,
|
|
95
|
+
REPARSE_POINT: 0x400,
|
|
96
|
+
COMPRESSED: 0x800,
|
|
97
|
+
OFFLINE: 0x1000,
|
|
98
|
+
NOT_CONTENT_INDEXED: 0x2000,
|
|
99
|
+
ENCRYPTED: 0x4000,
|
|
100
|
+
UNIX_EXTENSION: 0x8000
|
|
101
|
+
};
|
|
102
|
+
// Unix permission modes (decimal values for Node 0.8 compatibility)
|
|
103
|
+
export var UnixMode = {
|
|
104
|
+
DIR: 16384,
|
|
105
|
+
FILE: 32768,
|
|
106
|
+
SYMLINK: 40960,
|
|
107
|
+
RWXRWXRWX: 511,
|
|
108
|
+
RWXRXRX: 493,
|
|
109
|
+
RWRR: 420,
|
|
110
|
+
DEFAULT_DIR: 493,
|
|
111
|
+
DEFAULT_FILE: 420
|
|
112
|
+
};
|
|
113
|
+
// Error codes
|
|
114
|
+
export var ErrorCode = {
|
|
115
|
+
INVALID_SIGNATURE: 'INVALID_SIGNATURE',
|
|
116
|
+
CRC_MISMATCH: 'CRC_MISMATCH',
|
|
117
|
+
UNSUPPORTED_CODEC: 'UNSUPPORTED_CODEC',
|
|
118
|
+
UNSUPPORTED_VERSION: 'UNSUPPORTED_VERSION',
|
|
119
|
+
UNSUPPORTED_FEATURE: 'UNSUPPORTED_FEATURE',
|
|
120
|
+
TRUNCATED_ARCHIVE: 'TRUNCATED_ARCHIVE',
|
|
121
|
+
CORRUPT_HEADER: 'CORRUPT_HEADER',
|
|
122
|
+
ENCRYPTED_ARCHIVE: 'ENCRYPTED_ARCHIVE',
|
|
123
|
+
COMPRESSED_HEADER: 'COMPRESSED_HEADER'
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Create an error with a code property
|
|
127
|
+
*/ export function createCodedError(message, code) {
|
|
128
|
+
var err = new Error(message);
|
|
129
|
+
err.code = code;
|
|
130
|
+
return err;
|
|
131
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/constants.ts"],"sourcesContent":["// 7z format constants\n// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html\n\n// 7z signature: '7z' + magic bytes\nexport var SEVENZ_MAGIC = [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c];\n\n// Header sizes\nexport var SIGNATURE_HEADER_SIZE = 32;\nexport var START_HEADER_SIZE = 20; // Part of signature header after magic + version\n\n// Property IDs for encoded header\nexport var PropertyId = {\n kEnd: 0x00,\n kHeader: 0x01,\n kArchiveProperties: 0x02,\n kAdditionalStreamsInfo: 0x03,\n kMainStreamsInfo: 0x04,\n kFilesInfo: 0x05,\n kPackInfo: 0x06,\n kUnpackInfo: 0x07,\n kSubStreamsInfo: 0x08,\n kSize: 0x09,\n kCRC: 0x0a,\n kFolder: 0x0b,\n kCodersUnpackSize: 0x0c,\n kNumUnpackStream: 0x0d,\n kEmptyStream: 0x0e,\n kEmptyFile: 0x0f,\n kAnti: 0x10,\n kName: 0x11,\n kCTime: 0x12,\n kATime: 0x13,\n kMTime: 0x14,\n kWinAttributes: 0x15,\n kComment: 0x16,\n kEncodedHeader: 0x17,\n kStartPos: 0x18,\n kDummy: 0x19,\n};\n\n// Codec IDs\n// 7z uses variable-length codec IDs\nexport var CodecId = {\n COPY: [0x00],\n DELTA: [0x03],\n LZMA: [0x03, 0x01, 0x01],\n LZMA2: [0x21],\n BCJ_X86: [0x03, 0x03, 0x01, 0x03],\n DEFLATE: [0x04, 0x01, 0x08],\n BZIP2: [0x04, 0x02, 0x02],\n AES: [0x06, 0xf1, 0x07, 0x01],\n};\n\n// File attribute flags (Windows style, stored in FilesInfo)\nexport var FileAttribute = {\n READONLY: 0x01,\n HIDDEN: 0x02,\n SYSTEM: 0x04,\n DIRECTORY: 0x10,\n ARCHIVE: 0x20,\n DEVICE: 0x40,\n NORMAL: 0x80,\n TEMPORARY: 0x100,\n SPARSE_FILE: 0x200,\n REPARSE_POINT: 0x400,\n COMPRESSED: 0x800,\n OFFLINE: 0x1000,\n NOT_CONTENT_INDEXED: 0x2000,\n ENCRYPTED: 0x4000,\n UNIX_EXTENSION: 0x8000,\n};\n\n// Unix permission modes (decimal values for Node 0.8 compatibility)\nexport var UnixMode = {\n DIR: 16384, // 0o40000 - directory\n FILE: 32768, // 0o100000 - regular file\n SYMLINK: 40960, // 0o120000 - symbolic link\n RWXRWXRWX: 511, // 0o777\n RWXRXRX: 493, // 0o755\n RWRR: 420, // 0o644\n DEFAULT_DIR: 493, // 0o755 - rwxr-xr-x\n DEFAULT_FILE: 420, // 0o644 - rw-r--r--\n};\n\n// Error codes\nexport var ErrorCode = {\n INVALID_SIGNATURE: 'INVALID_SIGNATURE',\n CRC_MISMATCH: 'CRC_MISMATCH',\n UNSUPPORTED_CODEC: 'UNSUPPORTED_CODEC',\n UNSUPPORTED_VERSION: 'UNSUPPORTED_VERSION',\n UNSUPPORTED_FEATURE: 'UNSUPPORTED_FEATURE',\n TRUNCATED_ARCHIVE: 'TRUNCATED_ARCHIVE',\n CORRUPT_HEADER: 'CORRUPT_HEADER',\n ENCRYPTED_ARCHIVE: 'ENCRYPTED_ARCHIVE',\n COMPRESSED_HEADER: 'COMPRESSED_HEADER',\n};\n\n// Error with code property\nexport interface CodedError extends Error {\n code: string;\n}\n\n/**\n * Create an error with a code property\n */\nexport function createCodedError(message: string, code: string): CodedError {\n var err = new Error(message) as CodedError;\n err.code = code;\n return err;\n}\n"],"names":["SEVENZ_MAGIC","SIGNATURE_HEADER_SIZE","START_HEADER_SIZE","PropertyId","kEnd","kHeader","kArchiveProperties","kAdditionalStreamsInfo","kMainStreamsInfo","kFilesInfo","kPackInfo","kUnpackInfo","kSubStreamsInfo","kSize","kCRC","kFolder","kCodersUnpackSize","kNumUnpackStream","kEmptyStream","kEmptyFile","kAnti","kName","kCTime","kATime","kMTime","kWinAttributes","kComment","kEncodedHeader","kStartPos","kDummy","CodecId","COPY","DELTA","LZMA","LZMA2","BCJ_X86","DEFLATE","BZIP2","AES","FileAttribute","READONLY","HIDDEN","SYSTEM","DIRECTORY","ARCHIVE","DEVICE","NORMAL","TEMPORARY","SPARSE_FILE","REPARSE_POINT","COMPRESSED","OFFLINE","NOT_CONTENT_INDEXED","ENCRYPTED","UNIX_EXTENSION","UnixMode","DIR","FILE","SYMLINK","RWXRWXRWX","RWXRXRX","RWRR","DEFAULT_DIR","DEFAULT_FILE","ErrorCode","INVALID_SIGNATURE","CRC_MISMATCH","UNSUPPORTED_CODEC","UNSUPPORTED_VERSION","UNSUPPORTED_FEATURE","TRUNCATED_ARCHIVE","CORRUPT_HEADER","ENCRYPTED_ARCHIVE","COMPRESSED_HEADER","createCodedError","message","code","err","Error"],"mappings":"AAAA,sBAAsB;AACtB,wEAAwE;AAExE,mCAAmC;AACnC,OAAO,IAAIA,eAAe;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;CAAK,CAAC;AAE/D,eAAe;AACf,OAAO,IAAIC,wBAAwB,GAAG;AACtC,OAAO,IAAIC,oBAAoB,GAAG,CAAC,iDAAiD;AAEpF,kCAAkC;AAClC,OAAO,IAAIC,aAAa;IACtBC,MAAM;IACNC,SAAS;IACTC,oBAAoB;IACpBC,wBAAwB;IACxBC,kBAAkB;IAClBC,YAAY;IACZC,WAAW;IACXC,aAAa;IACbC,iBAAiB;IACjBC,OAAO;IACPC,MAAM;IACNC,SAAS;IACTC,mBAAmB;IACnBC,kBAAkB;IAClBC,cAAc;IACdC,YAAY;IACZC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;IACRC,gBAAgB;IAChBC,UAAU;IACVC,gBAAgB;IAChBC,WAAW;IACXC,QAAQ;AACV,EAAE;AAEF,YAAY;AACZ,oCAAoC;AACpC,OAAO,IAAIC,UAAU;IACnBC,MAAM;QAAC;KAAK;IACZC,OAAO;QAAC;KAAK;IACbC,MAAM;QAAC;QAAM;QAAM;KAAK;IACxBC,OAAO;QAAC;KAAK;IACbC,SAAS;QAAC;QAAM;QAAM;QAAM;KAAK;IACjCC,SAAS;QAAC;QAAM;QAAM;KAAK;IAC3BC,OAAO;QAAC;QAAM;QAAM;KAAK;IACzBC,KAAK;QAAC;QAAM;QAAM;QAAM;KAAK;AAC/B,EAAE;AAEF,4DAA4D;AAC5D,OAAO,IAAIC,gBAAgB;IACzBC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRC,QAAQ;IACRC,WAAW;IACXC,aAAa;IACbC,eAAe;IACfC,YAAY;IACZC,SAAS;IACTC,qBAAqB;IACrBC,WAAW;IACXC,gBAAgB;AAClB,EAAE;AAEF,oEAAoE;AACpE,OAAO,IAAIC,WAAW;IACpBC,KAAK;IACLC,MAAM;IACNC,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,MAAM;IACNC,aAAa;IACbC,cAAc;AAChB,EAAE;AAEF,cAAc;AACd,OAAO,IAAIC,YAAY;IACrBC,mBAAmB;IACnBC,cAAc;IACdC,mBAAmB;IACnBC,qBAAqB;IACrBC,qBAAqB;IACrBC,mBAAmB;IACnBC,gBAAgB;IAChBC,mBAAmB;IACnBC,mBAAmB;AACrB,EAAE;AAOF;;CAEC,GACD,OAAO,SAASC,iBAAiBC,OAAe,EAAEC,IAAY;IAC5D,IAAIC,MAAM,IAAIC,MAAMH;IACpBE,IAAID,IAAI,GAAGA;IACX,OAAOC;AACT"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export interface SignatureHeader {
|
|
2
|
+
majorVersion: number;
|
|
3
|
+
minorVersion: number;
|
|
4
|
+
startHeaderCRC: number;
|
|
5
|
+
nextHeaderOffset: number;
|
|
6
|
+
nextHeaderSize: number;
|
|
7
|
+
nextHeaderCRC: number;
|
|
8
|
+
}
|
|
9
|
+
export interface Coder {
|
|
10
|
+
id: number[];
|
|
11
|
+
numInStreams: number;
|
|
12
|
+
numOutStreams: number;
|
|
13
|
+
properties?: Buffer;
|
|
14
|
+
}
|
|
15
|
+
export interface Folder {
|
|
16
|
+
coders: Coder[];
|
|
17
|
+
bindPairs: {
|
|
18
|
+
inIndex: number;
|
|
19
|
+
outIndex: number;
|
|
20
|
+
}[];
|
|
21
|
+
packedStreams: number[];
|
|
22
|
+
unpackSizes: number[];
|
|
23
|
+
unpackCRC?: number;
|
|
24
|
+
hasCRC: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface StreamsInfo {
|
|
27
|
+
packPos: number;
|
|
28
|
+
packSizes: number[];
|
|
29
|
+
packCRCs?: number[];
|
|
30
|
+
folders: Folder[];
|
|
31
|
+
numUnpackStreamsPerFolder: number[];
|
|
32
|
+
unpackSizes: number[];
|
|
33
|
+
unpackCRCs?: number[];
|
|
34
|
+
}
|
|
35
|
+
export interface FileInfo {
|
|
36
|
+
name: string;
|
|
37
|
+
size: number;
|
|
38
|
+
isDirectory: boolean;
|
|
39
|
+
isAntiFile: boolean;
|
|
40
|
+
hasStream: boolean;
|
|
41
|
+
crc?: number;
|
|
42
|
+
ctime?: Date;
|
|
43
|
+
atime?: Date;
|
|
44
|
+
mtime?: Date;
|
|
45
|
+
attributes?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface ArchiveHeader {
|
|
48
|
+
signature: SignatureHeader;
|
|
49
|
+
streamsInfo?: StreamsInfo;
|
|
50
|
+
filesInfo: FileInfo[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Parse the signature header (first 32 bytes)
|
|
54
|
+
*/
|
|
55
|
+
export declare function parseSignatureHeader(buf: Buffer): SignatureHeader;
|
|
56
|
+
/**
|
|
57
|
+
* Parse the encoded header (metadata block at end of archive)
|
|
58
|
+
*/
|
|
59
|
+
export declare function parseEncodedHeader(buf: Buffer, expectedCRC: number): {
|
|
60
|
+
streamsInfo?: StreamsInfo;
|
|
61
|
+
filesInfo: FileInfo[];
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Parse header content (after kHeader byte has been read)
|
|
65
|
+
* Used by parseEncodedHeader and for decompressed headers
|
|
66
|
+
*/
|
|
67
|
+
export declare function parseHeaderContent(buf: Buffer, offset: number): {
|
|
68
|
+
streamsInfo?: StreamsInfo;
|
|
69
|
+
filesInfo: FileInfo[];
|
|
70
|
+
};
|