@push.rocks/smartarchive 4.2.4 → 5.0.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/bzip2/bititerator.d.ts +6 -1
- package/dist_ts/bzip2/bititerator.js +30 -24
- package/dist_ts/bzip2/bzip2.d.ts +27 -12
- package/dist_ts/bzip2/bzip2.js +325 -263
- package/dist_ts/bzip2/index.d.ts +4 -1
- package/dist_ts/bzip2/index.js +36 -38
- package/dist_ts/classes.archiveanalyzer.d.ts +25 -5
- package/dist_ts/classes.archiveanalyzer.js +19 -8
- package/dist_ts/classes.bzip2tools.d.ts +1 -1
- package/dist_ts/classes.gziptools.d.ts +39 -6
- package/dist_ts/classes.gziptools.js +85 -24
- package/dist_ts/classes.smartarchive.d.ts +101 -16
- package/dist_ts/classes.smartarchive.js +395 -58
- package/dist_ts/classes.tartools.d.ts +31 -4
- package/dist_ts/classes.tartools.js +93 -32
- package/dist_ts/classes.ziptools.d.ts +47 -12
- package/dist_ts/classes.ziptools.js +142 -23
- package/dist_ts/errors.d.ts +44 -0
- package/dist_ts/errors.js +62 -0
- package/dist_ts/index.d.ts +4 -0
- package/dist_ts/index.js +9 -1
- package/dist_ts/interfaces.d.ts +115 -0
- package/dist_ts/interfaces.js +2 -0
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/bzip2/bititerator.ts +43 -27
- package/ts/bzip2/bzip2.ts +289 -171
- package/ts/bzip2/index.ts +52 -50
- package/ts/classes.archiveanalyzer.ts +42 -28
- package/ts/classes.gziptools.ts +96 -33
- package/ts/classes.smartarchive.ts +469 -118
- package/ts/classes.tartools.ts +124 -52
- package/ts/classes.ziptools.ts +160 -34
- package/ts/errors.ts +70 -0
- package/ts/index.ts +11 -0
- package/ts/interfaces.ts +131 -0
|
@@ -1,43 +1,220 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
import * as paths from './paths.js';
|
|
3
2
|
import { Bzip2Tools } from './classes.bzip2tools.js';
|
|
4
3
|
import { GzipTools } from './classes.gziptools.js';
|
|
5
4
|
import { TarTools } from './classes.tartools.js';
|
|
6
5
|
import { ZipTools } from './classes.ziptools.js';
|
|
7
|
-
import { ArchiveAnalyzer
|
|
6
|
+
import { ArchiveAnalyzer } from './classes.archiveanalyzer.js';
|
|
7
|
+
/**
|
|
8
|
+
* Main class for archive manipulation
|
|
9
|
+
* Supports TAR, ZIP, GZIP, and BZIP2 formats
|
|
10
|
+
*/
|
|
8
11
|
export class SmartArchive {
|
|
9
|
-
//
|
|
10
|
-
|
|
12
|
+
// ============================================
|
|
13
|
+
// STATIC FACTORY METHODS - EXTRACTION
|
|
14
|
+
// ============================================
|
|
15
|
+
/**
|
|
16
|
+
* Create SmartArchive from a URL
|
|
17
|
+
*/
|
|
18
|
+
static async fromUrl(urlArg) {
|
|
11
19
|
const smartArchiveInstance = new SmartArchive();
|
|
12
20
|
smartArchiveInstance.sourceUrl = urlArg;
|
|
13
21
|
return smartArchiveInstance;
|
|
14
22
|
}
|
|
15
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Create SmartArchive from a local file path
|
|
25
|
+
*/
|
|
26
|
+
static async fromFile(filePathArg) {
|
|
16
27
|
const smartArchiveInstance = new SmartArchive();
|
|
17
28
|
smartArchiveInstance.sourceFilePath = filePathArg;
|
|
18
29
|
return smartArchiveInstance;
|
|
19
30
|
}
|
|
20
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Create SmartArchive from a readable stream
|
|
33
|
+
*/
|
|
34
|
+
static async fromStream(streamArg) {
|
|
21
35
|
const smartArchiveInstance = new SmartArchive();
|
|
22
36
|
smartArchiveInstance.sourceStream = streamArg;
|
|
23
37
|
return smartArchiveInstance;
|
|
24
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Create SmartArchive from an in-memory buffer
|
|
41
|
+
*/
|
|
42
|
+
static async fromBuffer(buffer) {
|
|
43
|
+
const smartArchiveInstance = new SmartArchive();
|
|
44
|
+
smartArchiveInstance.sourceStream = plugins.stream.Readable.from(buffer);
|
|
45
|
+
return smartArchiveInstance;
|
|
46
|
+
}
|
|
47
|
+
// ============================================
|
|
48
|
+
// STATIC FACTORY METHODS - CREATION
|
|
49
|
+
// ============================================
|
|
50
|
+
/**
|
|
51
|
+
* Create a new archive from a directory
|
|
52
|
+
*/
|
|
53
|
+
static async fromDirectory(directoryPath, options) {
|
|
54
|
+
const smartArchiveInstance = new SmartArchive();
|
|
55
|
+
smartArchiveInstance.creationOptions = options;
|
|
56
|
+
const tarTools = new TarTools();
|
|
57
|
+
if (options.format === 'tar' || options.format === 'tar.gz' || options.format === 'tgz') {
|
|
58
|
+
if (options.format === 'tar') {
|
|
59
|
+
const pack = await tarTools.packDirectory(directoryPath);
|
|
60
|
+
pack.finalize();
|
|
61
|
+
smartArchiveInstance.archiveBuffer = await SmartArchive.streamToBuffer(pack);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
smartArchiveInstance.archiveBuffer = await tarTools.packDirectoryToTarGz(directoryPath, options.compressionLevel);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (options.format === 'zip') {
|
|
68
|
+
const zipTools = new ZipTools();
|
|
69
|
+
const fileTree = await plugins.listFileTree(directoryPath, '**/*');
|
|
70
|
+
const entries = [];
|
|
71
|
+
for (const filePath of fileTree) {
|
|
72
|
+
const absolutePath = plugins.path.join(directoryPath, filePath);
|
|
73
|
+
const content = await plugins.fsPromises.readFile(absolutePath);
|
|
74
|
+
entries.push({
|
|
75
|
+
archivePath: filePath,
|
|
76
|
+
content,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
smartArchiveInstance.archiveBuffer = await zipTools.createZip(entries, options.compressionLevel);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
throw new Error(`Unsupported format for directory packing: ${options.format}`);
|
|
83
|
+
}
|
|
84
|
+
return smartArchiveInstance;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a new archive from an array of entries
|
|
88
|
+
*/
|
|
89
|
+
static async fromFiles(files, options) {
|
|
90
|
+
const smartArchiveInstance = new SmartArchive();
|
|
91
|
+
smartArchiveInstance.creationOptions = options;
|
|
92
|
+
if (options.format === 'tar' || options.format === 'tar.gz' || options.format === 'tgz') {
|
|
93
|
+
const tarTools = new TarTools();
|
|
94
|
+
if (options.format === 'tar') {
|
|
95
|
+
smartArchiveInstance.archiveBuffer = await tarTools.packFiles(files);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
smartArchiveInstance.archiveBuffer = await tarTools.packFilesToTarGz(files, options.compressionLevel);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (options.format === 'zip') {
|
|
102
|
+
const zipTools = new ZipTools();
|
|
103
|
+
smartArchiveInstance.archiveBuffer = await zipTools.createZip(files, options.compressionLevel);
|
|
104
|
+
}
|
|
105
|
+
else if (options.format === 'gz') {
|
|
106
|
+
if (files.length !== 1) {
|
|
107
|
+
throw new Error('GZIP format only supports a single file');
|
|
108
|
+
}
|
|
109
|
+
const gzipTools = new GzipTools();
|
|
110
|
+
let content;
|
|
111
|
+
if (typeof files[0].content === 'string') {
|
|
112
|
+
content = Buffer.from(files[0].content);
|
|
113
|
+
}
|
|
114
|
+
else if (Buffer.isBuffer(files[0].content)) {
|
|
115
|
+
content = files[0].content;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new Error('GZIP format requires string or Buffer content');
|
|
119
|
+
}
|
|
120
|
+
smartArchiveInstance.archiveBuffer = await gzipTools.compress(content, options.compressionLevel);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
throw new Error(`Unsupported format: ${options.format}`);
|
|
124
|
+
}
|
|
125
|
+
return smartArchiveInstance;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Start building an archive incrementally using a builder pattern
|
|
129
|
+
*/
|
|
130
|
+
static create(options) {
|
|
131
|
+
const smartArchiveInstance = new SmartArchive();
|
|
132
|
+
smartArchiveInstance.creationOptions = options;
|
|
133
|
+
smartArchiveInstance.pendingEntries = [];
|
|
134
|
+
return smartArchiveInstance;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Helper to convert a stream to buffer
|
|
138
|
+
*/
|
|
139
|
+
static async streamToBuffer(stream) {
|
|
140
|
+
const chunks = [];
|
|
141
|
+
return new Promise((resolve, reject) => {
|
|
142
|
+
stream.on('data', (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
143
|
+
stream.on('end', () => resolve(Buffer.concat(chunks)));
|
|
144
|
+
stream.on('error', reject);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
25
147
|
constructor() {
|
|
26
|
-
//
|
|
148
|
+
// ============================================
|
|
149
|
+
// INSTANCE PROPERTIES
|
|
150
|
+
// ============================================
|
|
27
151
|
this.tarTools = new TarTools();
|
|
28
152
|
this.zipTools = new ZipTools();
|
|
29
153
|
this.gzipTools = new GzipTools();
|
|
30
154
|
this.bzip2Tools = new Bzip2Tools(this);
|
|
31
155
|
this.archiveAnalyzer = new ArchiveAnalyzer(this);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
156
|
+
}
|
|
157
|
+
// ============================================
|
|
158
|
+
// BUILDER METHODS (for incremental creation)
|
|
159
|
+
// ============================================
|
|
160
|
+
/**
|
|
161
|
+
* Add a file to the archive (builder pattern)
|
|
162
|
+
*/
|
|
163
|
+
addFile(archivePath, content) {
|
|
164
|
+
if (!this.pendingEntries) {
|
|
165
|
+
throw new Error('addFile can only be called on archives created with SmartArchive.create()');
|
|
166
|
+
}
|
|
167
|
+
this.pendingEntries.push({ archivePath, content });
|
|
168
|
+
return this;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Add a SmartFile to the archive (builder pattern)
|
|
172
|
+
*/
|
|
173
|
+
addSmartFile(file, archivePath) {
|
|
174
|
+
if (!this.pendingEntries) {
|
|
175
|
+
throw new Error('addSmartFile can only be called on archives created with SmartArchive.create()');
|
|
176
|
+
}
|
|
177
|
+
this.pendingEntries.push({
|
|
178
|
+
archivePath: archivePath || file.relative,
|
|
179
|
+
content: file,
|
|
180
|
+
});
|
|
181
|
+
return this;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Add a StreamFile to the archive (builder pattern)
|
|
185
|
+
*/
|
|
186
|
+
addStreamFile(file, archivePath) {
|
|
187
|
+
if (!this.pendingEntries) {
|
|
188
|
+
throw new Error('addStreamFile can only be called on archives created with SmartArchive.create()');
|
|
189
|
+
}
|
|
190
|
+
this.pendingEntries.push({
|
|
191
|
+
archivePath: archivePath || file.relativeFilePath,
|
|
192
|
+
content: file,
|
|
193
|
+
});
|
|
194
|
+
return this;
|
|
36
195
|
}
|
|
37
196
|
/**
|
|
38
|
-
*
|
|
197
|
+
* Build the archive from pending entries
|
|
39
198
|
*/
|
|
40
|
-
async
|
|
199
|
+
async build() {
|
|
200
|
+
if (!this.pendingEntries || !this.creationOptions) {
|
|
201
|
+
throw new Error('build can only be called on archives created with SmartArchive.create()');
|
|
202
|
+
}
|
|
203
|
+
const built = await SmartArchive.fromFiles(this.pendingEntries, this.creationOptions);
|
|
204
|
+
this.archiveBuffer = built.archiveBuffer;
|
|
205
|
+
this.pendingEntries = undefined;
|
|
206
|
+
return this;
|
|
207
|
+
}
|
|
208
|
+
// ============================================
|
|
209
|
+
// EXTRACTION METHODS
|
|
210
|
+
// ============================================
|
|
211
|
+
/**
|
|
212
|
+
* Get the original archive stream
|
|
213
|
+
*/
|
|
214
|
+
async toStream() {
|
|
215
|
+
if (this.archiveBuffer) {
|
|
216
|
+
return plugins.stream.Readable.from(this.archiveBuffer);
|
|
217
|
+
}
|
|
41
218
|
if (this.sourceStream) {
|
|
42
219
|
return this.sourceStream;
|
|
43
220
|
}
|
|
@@ -46,42 +223,75 @@ export class SmartArchive {
|
|
|
46
223
|
.url(this.sourceUrl)
|
|
47
224
|
.get();
|
|
48
225
|
const webStream = response.stream();
|
|
49
|
-
|
|
50
|
-
const urlStream = plugins.stream.Readable.fromWeb(webStream);
|
|
51
|
-
return urlStream;
|
|
226
|
+
return plugins.stream.Readable.fromWeb(webStream);
|
|
52
227
|
}
|
|
53
228
|
if (this.sourceFilePath) {
|
|
54
|
-
|
|
55
|
-
return fileStream;
|
|
229
|
+
return plugins.fs.createReadStream(this.sourceFilePath);
|
|
56
230
|
}
|
|
231
|
+
throw new Error('No archive source configured');
|
|
57
232
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Get archive as a Buffer
|
|
235
|
+
*/
|
|
236
|
+
async toBuffer() {
|
|
237
|
+
if (this.archiveBuffer) {
|
|
238
|
+
return this.archiveBuffer;
|
|
239
|
+
}
|
|
240
|
+
const stream = await this.toStream();
|
|
241
|
+
return SmartArchive.streamToBuffer(stream);
|
|
63
242
|
}
|
|
64
|
-
|
|
243
|
+
/**
|
|
244
|
+
* Write archive to a file
|
|
245
|
+
*/
|
|
246
|
+
async toFile(filePath) {
|
|
247
|
+
const buffer = await this.toBuffer();
|
|
248
|
+
await plugins.fsPromises.mkdir(plugins.path.dirname(filePath), { recursive: true });
|
|
249
|
+
await plugins.fsPromises.writeFile(filePath, buffer);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Extract archive to filesystem
|
|
253
|
+
*/
|
|
254
|
+
async extractToDirectory(targetDir, options) {
|
|
65
255
|
const done = plugins.smartpromise.defer();
|
|
66
|
-
const streamFileStream = await this.
|
|
256
|
+
const streamFileStream = await this.extractToStream();
|
|
67
257
|
streamFileStream.pipe(new plugins.smartstream.SmartDuplex({
|
|
68
258
|
objectMode: true,
|
|
69
|
-
writeFunction: async (streamFileArg
|
|
70
|
-
const
|
|
71
|
-
console.log(streamFileArg.relativeFilePath
|
|
72
|
-
? streamFileArg.relativeFilePath
|
|
73
|
-
: 'no relative path');
|
|
259
|
+
writeFunction: async (streamFileArg) => {
|
|
260
|
+
const innerDone = plugins.smartpromise.defer();
|
|
74
261
|
const streamFile = streamFileArg;
|
|
262
|
+
let relativePath = streamFile.relativeFilePath || options?.fileName || 'extracted_file';
|
|
263
|
+
// Apply stripComponents if specified
|
|
264
|
+
if (options?.stripComponents && options.stripComponents > 0) {
|
|
265
|
+
const parts = relativePath.split('/');
|
|
266
|
+
relativePath = parts.slice(options.stripComponents).join('/');
|
|
267
|
+
if (!relativePath) {
|
|
268
|
+
innerDone.resolve();
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Apply filter if specified
|
|
273
|
+
if (options?.filter) {
|
|
274
|
+
const entryInfo = {
|
|
275
|
+
path: relativePath,
|
|
276
|
+
size: 0,
|
|
277
|
+
isDirectory: false,
|
|
278
|
+
isFile: true,
|
|
279
|
+
};
|
|
280
|
+
if (!options.filter(entryInfo)) {
|
|
281
|
+
innerDone.resolve();
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
75
285
|
const readStream = await streamFile.createReadStream();
|
|
76
286
|
await plugins.fsPromises.mkdir(targetDir, { recursive: true });
|
|
77
|
-
const writePath = plugins.path.join(targetDir,
|
|
287
|
+
const writePath = plugins.path.join(targetDir, relativePath);
|
|
78
288
|
await plugins.fsPromises.mkdir(plugins.path.dirname(writePath), { recursive: true });
|
|
79
289
|
const writeStream = plugins.fs.createWriteStream(writePath);
|
|
80
290
|
readStream.pipe(writeStream);
|
|
81
291
|
writeStream.on('finish', () => {
|
|
82
|
-
|
|
292
|
+
innerDone.resolve();
|
|
83
293
|
});
|
|
84
|
-
await
|
|
294
|
+
await innerDone.promise;
|
|
85
295
|
},
|
|
86
296
|
finalFunction: async () => {
|
|
87
297
|
done.resolve();
|
|
@@ -89,41 +299,43 @@ export class SmartArchive {
|
|
|
89
299
|
}));
|
|
90
300
|
return done.promise;
|
|
91
301
|
}
|
|
92
|
-
|
|
302
|
+
/**
|
|
303
|
+
* Extract archive to a stream of StreamFile objects
|
|
304
|
+
*/
|
|
305
|
+
async extractToStream() {
|
|
93
306
|
const streamFileIntake = new plugins.smartstream.StreamIntake({
|
|
94
307
|
objectMode: true,
|
|
95
308
|
});
|
|
96
|
-
|
|
309
|
+
// Guard to prevent multiple signalEnd calls
|
|
310
|
+
let hasSignaledEnd = false;
|
|
311
|
+
const safeSignalEnd = () => {
|
|
312
|
+
if (!hasSignaledEnd) {
|
|
313
|
+
hasSignaledEnd = true;
|
|
314
|
+
streamFileIntake.signalEnd();
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
const archiveStream = await this.toStream();
|
|
97
318
|
const createAnalyzedStream = () => this.archiveAnalyzer.getAnalyzedStream();
|
|
98
|
-
// lets create a function that can be called multiple times to unpack layers of archives
|
|
99
319
|
const createUnpackStream = () => plugins.smartstream.createTransformFunction(async (analyzedResultChunk) => {
|
|
100
320
|
if (analyzedResultChunk.fileType?.mime === 'application/x-tar') {
|
|
101
321
|
const tarStream = analyzedResultChunk.decompressionStream;
|
|
102
322
|
tarStream.on('entry', async (header, stream, next) => {
|
|
103
323
|
if (header.type === 'directory') {
|
|
104
|
-
|
|
105
|
-
stream.resume(); // Consume directory stream
|
|
324
|
+
stream.resume();
|
|
106
325
|
stream.on('end', () => next());
|
|
107
326
|
return;
|
|
108
327
|
}
|
|
109
|
-
console.log(`tar stream file: ${header.name}`);
|
|
110
|
-
// Create a PassThrough stream to buffer the data
|
|
111
328
|
const passThrough = new plugins.stream.PassThrough();
|
|
112
329
|
const streamfile = plugins.smartfile.StreamFile.fromStream(passThrough, header.name);
|
|
113
|
-
// Push the streamfile immediately
|
|
114
330
|
streamFileIntake.push(streamfile);
|
|
115
|
-
// Pipe the tar entry stream to the passthrough
|
|
116
331
|
stream.pipe(passThrough);
|
|
117
|
-
// Move to next entry when this one ends
|
|
118
332
|
stream.on('end', () => {
|
|
119
333
|
passThrough.end();
|
|
120
334
|
next();
|
|
121
335
|
});
|
|
122
336
|
});
|
|
123
|
-
tarStream.on('finish',
|
|
124
|
-
|
|
125
|
-
// Only signal end if this is the final stream
|
|
126
|
-
streamFileIntake.signalEnd();
|
|
337
|
+
tarStream.on('finish', () => {
|
|
338
|
+
safeSignalEnd();
|
|
127
339
|
});
|
|
128
340
|
analyzedResultChunk.resultStream.pipe(analyzedResultChunk.decompressionStream);
|
|
129
341
|
}
|
|
@@ -132,33 +344,158 @@ export class SmartArchive {
|
|
|
132
344
|
.pipe(analyzedResultChunk.decompressionStream)
|
|
133
345
|
.pipe(new plugins.smartstream.SmartDuplex({
|
|
134
346
|
objectMode: true,
|
|
135
|
-
writeFunction: async (streamFileArg
|
|
347
|
+
writeFunction: async (streamFileArg) => {
|
|
136
348
|
streamFileIntake.push(streamFileArg);
|
|
137
349
|
},
|
|
138
350
|
finalFunction: async () => {
|
|
139
|
-
|
|
351
|
+
safeSignalEnd();
|
|
140
352
|
},
|
|
141
353
|
}));
|
|
142
354
|
}
|
|
143
|
-
else if (analyzedResultChunk.isArchive &&
|
|
144
|
-
analyzedResultChunk.decompressionStream) {
|
|
355
|
+
else if (analyzedResultChunk.isArchive && analyzedResultChunk.decompressionStream) {
|
|
145
356
|
// For nested archives (like gzip containing tar)
|
|
146
|
-
|
|
357
|
+
analyzedResultChunk.resultStream
|
|
147
358
|
.pipe(analyzedResultChunk.decompressionStream)
|
|
148
359
|
.pipe(createAnalyzedStream())
|
|
149
360
|
.pipe(createUnpackStream());
|
|
150
|
-
// Don't signal end here - let the nested unpacker handle it
|
|
151
361
|
}
|
|
152
362
|
else {
|
|
153
363
|
const streamFile = plugins.smartfile.StreamFile.fromStream(analyzedResultChunk.resultStream, analyzedResultChunk.fileType?.ext);
|
|
154
364
|
streamFileIntake.push(streamFile);
|
|
155
|
-
|
|
365
|
+
safeSignalEnd();
|
|
156
366
|
}
|
|
157
|
-
}, {
|
|
158
|
-
objectMode: true,
|
|
159
|
-
});
|
|
367
|
+
}, { objectMode: true });
|
|
160
368
|
archiveStream.pipe(createAnalyzedStream()).pipe(createUnpackStream());
|
|
161
369
|
return streamFileIntake;
|
|
162
370
|
}
|
|
371
|
+
/**
|
|
372
|
+
* Extract archive to an array of SmartFile objects (in-memory)
|
|
373
|
+
*/
|
|
374
|
+
async extractToSmartFiles() {
|
|
375
|
+
const streamFiles = await this.extractToStream();
|
|
376
|
+
const smartFiles = [];
|
|
377
|
+
return new Promise((resolve, reject) => {
|
|
378
|
+
streamFiles.on('data', async (streamFile) => {
|
|
379
|
+
try {
|
|
380
|
+
const smartFile = await streamFile.toSmartFile();
|
|
381
|
+
smartFiles.push(smartFile);
|
|
382
|
+
}
|
|
383
|
+
catch (err) {
|
|
384
|
+
reject(err);
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
streamFiles.on('end', () => resolve(smartFiles));
|
|
388
|
+
streamFiles.on('error', reject);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Extract a single file from the archive by path
|
|
393
|
+
*/
|
|
394
|
+
async extractFile(filePath) {
|
|
395
|
+
const streamFiles = await this.extractToStream();
|
|
396
|
+
return new Promise((resolve, reject) => {
|
|
397
|
+
let found = false;
|
|
398
|
+
streamFiles.on('data', async (streamFile) => {
|
|
399
|
+
if (streamFile.relativeFilePath === filePath || streamFile.relativeFilePath?.endsWith(filePath)) {
|
|
400
|
+
found = true;
|
|
401
|
+
try {
|
|
402
|
+
const smartFile = await streamFile.toSmartFile();
|
|
403
|
+
resolve(smartFile);
|
|
404
|
+
}
|
|
405
|
+
catch (err) {
|
|
406
|
+
reject(err);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
streamFiles.on('end', () => {
|
|
411
|
+
if (!found) {
|
|
412
|
+
resolve(null);
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
streamFiles.on('error', reject);
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
// ============================================
|
|
419
|
+
// ANALYSIS METHODS
|
|
420
|
+
// ============================================
|
|
421
|
+
/**
|
|
422
|
+
* Analyze the archive and return metadata
|
|
423
|
+
*/
|
|
424
|
+
async analyze() {
|
|
425
|
+
const stream = await this.toStream();
|
|
426
|
+
const firstChunk = await this.readFirstChunk(stream);
|
|
427
|
+
const fileType = await plugins.fileType.fileTypeFromBuffer(firstChunk);
|
|
428
|
+
let format = null;
|
|
429
|
+
let isCompressed = false;
|
|
430
|
+
let isArchive = false;
|
|
431
|
+
if (fileType) {
|
|
432
|
+
switch (fileType.mime) {
|
|
433
|
+
case 'application/gzip':
|
|
434
|
+
format = 'gz';
|
|
435
|
+
isCompressed = true;
|
|
436
|
+
isArchive = true;
|
|
437
|
+
break;
|
|
438
|
+
case 'application/zip':
|
|
439
|
+
format = 'zip';
|
|
440
|
+
isCompressed = true;
|
|
441
|
+
isArchive = true;
|
|
442
|
+
break;
|
|
443
|
+
case 'application/x-tar':
|
|
444
|
+
format = 'tar';
|
|
445
|
+
isArchive = true;
|
|
446
|
+
break;
|
|
447
|
+
case 'application/x-bzip2':
|
|
448
|
+
format = 'bz2';
|
|
449
|
+
isCompressed = true;
|
|
450
|
+
isArchive = true;
|
|
451
|
+
break;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return {
|
|
455
|
+
format,
|
|
456
|
+
isCompressed,
|
|
457
|
+
isArchive,
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* List all entries in the archive without extracting
|
|
462
|
+
*/
|
|
463
|
+
async listEntries() {
|
|
464
|
+
const entries = [];
|
|
465
|
+
const streamFiles = await this.extractToStream();
|
|
466
|
+
return new Promise((resolve, reject) => {
|
|
467
|
+
streamFiles.on('data', (streamFile) => {
|
|
468
|
+
entries.push({
|
|
469
|
+
path: streamFile.relativeFilePath || 'unknown',
|
|
470
|
+
size: 0, // Size not available without reading
|
|
471
|
+
isDirectory: false,
|
|
472
|
+
isFile: true,
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
streamFiles.on('end', () => resolve(entries));
|
|
476
|
+
streamFiles.on('error', reject);
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Check if a specific file exists in the archive
|
|
481
|
+
*/
|
|
482
|
+
async hasFile(filePath) {
|
|
483
|
+
const entries = await this.listEntries();
|
|
484
|
+
return entries.some((e) => e.path === filePath || e.path.endsWith(filePath));
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Helper to read first chunk from stream
|
|
488
|
+
*/
|
|
489
|
+
async readFirstChunk(stream) {
|
|
490
|
+
return new Promise((resolve, reject) => {
|
|
491
|
+
const onData = (chunk) => {
|
|
492
|
+
stream.removeListener('data', onData);
|
|
493
|
+
stream.removeListener('error', reject);
|
|
494
|
+
resolve(chunk);
|
|
495
|
+
};
|
|
496
|
+
stream.on('data', onData);
|
|
497
|
+
stream.on('error', reject);
|
|
498
|
+
});
|
|
499
|
+
}
|
|
163
500
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zbWFydGFyY2hpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnNtYXJ0YXJjaGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUVwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUNMLGVBQWUsR0FFaEIsTUFBTSw4QkFBOEIsQ0FBQztBQUl0QyxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBYztRQUMvQyxNQUFNLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUN4QyxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDakMsV0FBbUI7UUFFbkIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELG9CQUFvQixDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7UUFDbEQsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FDbkMsU0FHNEI7UUFFNUIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELG9CQUFvQixDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUMsT0FBTyxvQkFB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
|
|
501
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zbWFydGFyY2hpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnNtYXJ0YXJjaGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVd4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBd0IsTUFBTSw4QkFBOEIsQ0FBQztBQUVyRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QiwrQ0FBK0M7SUFDL0Msc0NBQXNDO0lBQ3RDLCtDQUErQztJQUUvQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQWM7UUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELG9CQUFvQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDeEMsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFtQjtRQUM5QyxNQUFNLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztRQUNsRCxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUM1QixTQUFxRjtRQUVyRixNQUFNLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLENBQUMs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
|
|
@@ -1,17 +1,44 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
+
import type { IArchiveEntry, TCompressionLevel } from './interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* TAR archive creation and extraction utilities
|
|
5
|
+
*/
|
|
2
6
|
export declare class TarTools {
|
|
3
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Add a file to a TAR pack stream
|
|
9
|
+
*/
|
|
4
10
|
addFileToPack(pack: plugins.tarStream.Pack, optionsArg: {
|
|
5
11
|
fileName?: string;
|
|
6
|
-
content?: string | Buffer | plugins.
|
|
12
|
+
content?: string | Buffer | plugins.stream.Readable | plugins.smartfile.SmartFile | plugins.smartfile.StreamFile;
|
|
7
13
|
byteLength?: number;
|
|
8
14
|
filePath?: string;
|
|
9
15
|
}): Promise<void>;
|
|
10
16
|
/**
|
|
11
|
-
*
|
|
12
|
-
* @param directoryPath
|
|
17
|
+
* Pack a directory into a TAR stream
|
|
13
18
|
*/
|
|
14
19
|
packDirectory(directoryPath: string): Promise<plugins.tarStream.Pack>;
|
|
20
|
+
/**
|
|
21
|
+
* Get a new TAR pack stream
|
|
22
|
+
*/
|
|
15
23
|
getPackStream(): Promise<plugins.tarStream.Pack>;
|
|
24
|
+
/**
|
|
25
|
+
* Get a TAR extraction stream
|
|
26
|
+
*/
|
|
16
27
|
getDecompressionStream(): plugins.tarStream.Extract;
|
|
28
|
+
/**
|
|
29
|
+
* Pack files into a TAR buffer
|
|
30
|
+
*/
|
|
31
|
+
packFiles(files: IArchiveEntry[]): Promise<Buffer>;
|
|
32
|
+
/**
|
|
33
|
+
* Pack a directory into a TAR.GZ buffer
|
|
34
|
+
*/
|
|
35
|
+
packDirectoryToTarGz(directoryPath: string, compressionLevel?: TCompressionLevel): Promise<Buffer>;
|
|
36
|
+
/**
|
|
37
|
+
* Pack a directory into a TAR.GZ stream
|
|
38
|
+
*/
|
|
39
|
+
packDirectoryToTarGzStream(directoryPath: string, compressionLevel?: TCompressionLevel): Promise<plugins.stream.Readable>;
|
|
40
|
+
/**
|
|
41
|
+
* Pack files into a TAR.GZ buffer
|
|
42
|
+
*/
|
|
43
|
+
packFilesToTarGz(files: IArchiveEntry[], compressionLevel?: TCompressionLevel): Promise<Buffer>;
|
|
17
44
|
}
|