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.
Files changed (166) hide show
  1. package/LICENSE +42 -0
  2. package/README.md +142 -0
  3. package/dist/cjs/FileEntry.d.cts +12 -0
  4. package/dist/cjs/FileEntry.d.ts +12 -0
  5. package/dist/cjs/FileEntry.js +147 -0
  6. package/dist/cjs/FileEntry.js.map +1 -0
  7. package/dist/cjs/SevenZipIterator.d.cts +8 -0
  8. package/dist/cjs/SevenZipIterator.d.ts +8 -0
  9. package/dist/cjs/SevenZipIterator.js +204 -0
  10. package/dist/cjs/SevenZipIterator.js.map +1 -0
  11. package/dist/cjs/index.d.cts +4 -0
  12. package/dist/cjs/index.d.ts +4 -0
  13. package/dist/cjs/index.js +40 -0
  14. package/dist/cjs/index.js.map +1 -0
  15. package/dist/cjs/lib/Lock.d.cts +11 -0
  16. package/dist/cjs/lib/Lock.d.ts +11 -0
  17. package/dist/cjs/lib/Lock.js +65 -0
  18. package/dist/cjs/lib/Lock.js.map +1 -0
  19. package/dist/cjs/lib/streamToSource.d.cts +20 -0
  20. package/dist/cjs/lib/streamToSource.d.ts +20 -0
  21. package/dist/cjs/lib/streamToSource.js +116 -0
  22. package/dist/cjs/lib/streamToSource.js.map +1 -0
  23. package/dist/cjs/nextEntry.d.cts +4 -0
  24. package/dist/cjs/nextEntry.d.ts +4 -0
  25. package/dist/cjs/nextEntry.js +102 -0
  26. package/dist/cjs/nextEntry.js.map +1 -0
  27. package/dist/cjs/package.json +1 -0
  28. package/dist/cjs/sevenz/NumberCodec.d.cts +58 -0
  29. package/dist/cjs/sevenz/NumberCodec.d.ts +58 -0
  30. package/dist/cjs/sevenz/NumberCodec.js +133 -0
  31. package/dist/cjs/sevenz/NumberCodec.js.map +1 -0
  32. package/dist/cjs/sevenz/SevenZipParser.d.cts +96 -0
  33. package/dist/cjs/sevenz/SevenZipParser.d.ts +96 -0
  34. package/dist/cjs/sevenz/SevenZipParser.js +457 -0
  35. package/dist/cjs/sevenz/SevenZipParser.js.map +1 -0
  36. package/dist/cjs/sevenz/codecs/Aes.d.cts +22 -0
  37. package/dist/cjs/sevenz/codecs/Aes.d.ts +22 -0
  38. package/dist/cjs/sevenz/codecs/Aes.js +179 -0
  39. package/dist/cjs/sevenz/codecs/Aes.js.map +1 -0
  40. package/dist/cjs/sevenz/codecs/BZip2.d.cts +14 -0
  41. package/dist/cjs/sevenz/codecs/BZip2.d.ts +14 -0
  42. package/dist/cjs/sevenz/codecs/BZip2.js +37 -0
  43. package/dist/cjs/sevenz/codecs/BZip2.js.map +1 -0
  44. package/dist/cjs/sevenz/codecs/Bcj.d.cts +15 -0
  45. package/dist/cjs/sevenz/codecs/Bcj.d.ts +15 -0
  46. package/dist/cjs/sevenz/codecs/Bcj.js +89 -0
  47. package/dist/cjs/sevenz/codecs/Bcj.js.map +1 -0
  48. package/dist/cjs/sevenz/codecs/Copy.d.cts +14 -0
  49. package/dist/cjs/sevenz/codecs/Copy.d.ts +14 -0
  50. package/dist/cjs/sevenz/codecs/Copy.js +28 -0
  51. package/dist/cjs/sevenz/codecs/Copy.js.map +1 -0
  52. package/dist/cjs/sevenz/codecs/Deflate.d.cts +14 -0
  53. package/dist/cjs/sevenz/codecs/Deflate.d.ts +14 -0
  54. package/dist/cjs/sevenz/codecs/Deflate.js +39 -0
  55. package/dist/cjs/sevenz/codecs/Deflate.js.map +1 -0
  56. package/dist/cjs/sevenz/codecs/Delta.d.cts +15 -0
  57. package/dist/cjs/sevenz/codecs/Delta.d.ts +15 -0
  58. package/dist/cjs/sevenz/codecs/Delta.js +55 -0
  59. package/dist/cjs/sevenz/codecs/Delta.js.map +1 -0
  60. package/dist/cjs/sevenz/codecs/Lzma.d.cts +14 -0
  61. package/dist/cjs/sevenz/codecs/Lzma.d.ts +14 -0
  62. package/dist/cjs/sevenz/codecs/Lzma.js +53 -0
  63. package/dist/cjs/sevenz/codecs/Lzma.js.map +1 -0
  64. package/dist/cjs/sevenz/codecs/Lzma2.d.cts +14 -0
  65. package/dist/cjs/sevenz/codecs/Lzma2.d.ts +14 -0
  66. package/dist/cjs/sevenz/codecs/Lzma2.js +160 -0
  67. package/dist/cjs/sevenz/codecs/Lzma2.js.map +1 -0
  68. package/dist/cjs/sevenz/codecs/createBufferingDecoder.d.cts +7 -0
  69. package/dist/cjs/sevenz/codecs/createBufferingDecoder.d.ts +7 -0
  70. package/dist/cjs/sevenz/codecs/createBufferingDecoder.js +36 -0
  71. package/dist/cjs/sevenz/codecs/createBufferingDecoder.js.map +1 -0
  72. package/dist/cjs/sevenz/codecs/index.d.cts +24 -0
  73. package/dist/cjs/sevenz/codecs/index.d.ts +24 -0
  74. package/dist/cjs/sevenz/codecs/index.js +128 -0
  75. package/dist/cjs/sevenz/codecs/index.js.map +1 -0
  76. package/dist/cjs/sevenz/codecs/streams.d.cts +18 -0
  77. package/dist/cjs/sevenz/codecs/streams.d.ts +18 -0
  78. package/dist/cjs/sevenz/codecs/streams.js +79 -0
  79. package/dist/cjs/sevenz/codecs/streams.js.map +1 -0
  80. package/dist/cjs/sevenz/constants.d.cts +86 -0
  81. package/dist/cjs/sevenz/constants.d.ts +86 -0
  82. package/dist/cjs/sevenz/constants.js +162 -0
  83. package/dist/cjs/sevenz/constants.js.map +1 -0
  84. package/dist/cjs/sevenz/headers.d.cts +70 -0
  85. package/dist/cjs/sevenz/headers.d.ts +70 -0
  86. package/dist/cjs/sevenz/headers.js +661 -0
  87. package/dist/cjs/sevenz/headers.js.map +1 -0
  88. package/dist/cjs/sevenz/index.d.cts +4 -0
  89. package/dist/cjs/sevenz/index.d.ts +4 -0
  90. package/dist/cjs/sevenz/index.js +33 -0
  91. package/dist/cjs/sevenz/index.js.map +1 -0
  92. package/dist/cjs/types.d.cts +37 -0
  93. package/dist/cjs/types.d.ts +37 -0
  94. package/dist/cjs/types.js +32 -0
  95. package/dist/cjs/types.js.map +1 -0
  96. package/dist/esm/FileEntry.d.ts +12 -0
  97. package/dist/esm/FileEntry.js +63 -0
  98. package/dist/esm/FileEntry.js.map +1 -0
  99. package/dist/esm/SevenZipIterator.d.ts +8 -0
  100. package/dist/esm/SevenZipIterator.js +116 -0
  101. package/dist/esm/SevenZipIterator.js.map +1 -0
  102. package/dist/esm/index.d.ts +4 -0
  103. package/dist/esm/index.js +3 -0
  104. package/dist/esm/index.js.map +1 -0
  105. package/dist/esm/lib/Lock.d.ts +11 -0
  106. package/dist/esm/lib/Lock.js +41 -0
  107. package/dist/esm/lib/Lock.js.map +1 -0
  108. package/dist/esm/lib/streamToSource.d.ts +20 -0
  109. package/dist/esm/lib/streamToSource.js +100 -0
  110. package/dist/esm/lib/streamToSource.js.map +1 -0
  111. package/dist/esm/nextEntry.d.ts +4 -0
  112. package/dist/esm/nextEntry.js +86 -0
  113. package/dist/esm/nextEntry.js.map +1 -0
  114. package/dist/esm/package.json +1 -0
  115. package/dist/esm/sevenz/NumberCodec.d.ts +58 -0
  116. package/dist/esm/sevenz/NumberCodec.js +138 -0
  117. package/dist/esm/sevenz/NumberCodec.js.map +1 -0
  118. package/dist/esm/sevenz/SevenZipParser.d.ts +96 -0
  119. package/dist/esm/sevenz/SevenZipParser.js +419 -0
  120. package/dist/esm/sevenz/SevenZipParser.js.map +1 -0
  121. package/dist/esm/sevenz/codecs/Aes.d.ts +22 -0
  122. package/dist/esm/sevenz/codecs/Aes.js +162 -0
  123. package/dist/esm/sevenz/codecs/Aes.js.map +1 -0
  124. package/dist/esm/sevenz/codecs/BZip2.d.ts +14 -0
  125. package/dist/esm/sevenz/codecs/BZip2.js +22 -0
  126. package/dist/esm/sevenz/codecs/BZip2.js.map +1 -0
  127. package/dist/esm/sevenz/codecs/Bcj.d.ts +15 -0
  128. package/dist/esm/sevenz/codecs/Bcj.js +75 -0
  129. package/dist/esm/sevenz/codecs/Bcj.js.map +1 -0
  130. package/dist/esm/sevenz/codecs/Copy.d.ts +14 -0
  131. package/dist/esm/sevenz/codecs/Copy.js +18 -0
  132. package/dist/esm/sevenz/codecs/Copy.js.map +1 -0
  133. package/dist/esm/sevenz/codecs/Deflate.d.ts +14 -0
  134. package/dist/esm/sevenz/codecs/Deflate.js +24 -0
  135. package/dist/esm/sevenz/codecs/Deflate.js.map +1 -0
  136. package/dist/esm/sevenz/codecs/Delta.d.ts +15 -0
  137. package/dist/esm/sevenz/codecs/Delta.js +41 -0
  138. package/dist/esm/sevenz/codecs/Delta.js.map +1 -0
  139. package/dist/esm/sevenz/codecs/Lzma.d.ts +14 -0
  140. package/dist/esm/sevenz/codecs/Lzma.js +38 -0
  141. package/dist/esm/sevenz/codecs/Lzma.js.map +1 -0
  142. package/dist/esm/sevenz/codecs/Lzma2.d.ts +14 -0
  143. package/dist/esm/sevenz/codecs/Lzma2.js +145 -0
  144. package/dist/esm/sevenz/codecs/Lzma2.js.map +1 -0
  145. package/dist/esm/sevenz/codecs/createBufferingDecoder.d.ts +7 -0
  146. package/dist/esm/sevenz/codecs/createBufferingDecoder.js +25 -0
  147. package/dist/esm/sevenz/codecs/createBufferingDecoder.js.map +1 -0
  148. package/dist/esm/sevenz/codecs/index.d.ts +24 -0
  149. package/dist/esm/sevenz/codecs/index.js +108 -0
  150. package/dist/esm/sevenz/codecs/index.js.map +1 -0
  151. package/dist/esm/sevenz/codecs/streams.d.ts +18 -0
  152. package/dist/esm/sevenz/codecs/streams.js +66 -0
  153. package/dist/esm/sevenz/codecs/streams.js.map +1 -0
  154. package/dist/esm/sevenz/constants.d.ts +86 -0
  155. package/dist/esm/sevenz/constants.js +131 -0
  156. package/dist/esm/sevenz/constants.js.map +1 -0
  157. package/dist/esm/sevenz/headers.d.ts +70 -0
  158. package/dist/esm/sevenz/headers.js +646 -0
  159. package/dist/esm/sevenz/headers.js.map +1 -0
  160. package/dist/esm/sevenz/index.d.ts +4 -0
  161. package/dist/esm/sevenz/index.js +5 -0
  162. package/dist/esm/sevenz/index.js.map +1 -0
  163. package/dist/esm/types.d.ts +37 -0
  164. package/dist/esm/types.js +2 -0
  165. package/dist/esm/types.js.map +1 -0
  166. 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
+ };