@push.rocks/smartarchive 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.gziptools.d.ts +4 -0
- package/dist_ts/classes.gziptools.js +9 -18
- package/dist_ts/classes.smartarchive.d.ts +148 -51
- package/dist_ts/classes.smartarchive.js +450 -214
- package/dist_ts/classes.ziptools.js +20 -34
- package/dist_ts/interfaces.d.ts +4 -0
- package/package.json +1 -1
- package/readme.hints.md +69 -23
- package/readme.md +360 -274
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.gziptools.ts +8 -13
- package/ts/classes.smartarchive.ts +506 -232
- package/ts/classes.ziptools.ts +18 -31
- package/ts/interfaces.ts +5 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartarchive',
|
|
6
|
-
version: '5.0.
|
|
6
|
+
version: '5.0.1',
|
|
7
7
|
description: 'A library for working with archive files, providing utilities for compressing and decompressing data.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSwwQkFBMEI7SUFDaEMsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHVHQUF1RztDQUNySCxDQUFBIn0=
|
|
@@ -40,10 +40,14 @@ export declare class GzipTools {
|
|
|
40
40
|
decompressSync(data: Buffer): Buffer;
|
|
41
41
|
/**
|
|
42
42
|
* Compress data asynchronously
|
|
43
|
+
* Note: Uses sync version for Deno compatibility (fflate async uses Web Workers
|
|
44
|
+
* which have issues in Deno)
|
|
43
45
|
*/
|
|
44
46
|
compress(data: Buffer, level?: TCompressionLevel): Promise<Buffer>;
|
|
45
47
|
/**
|
|
46
48
|
* Decompress data asynchronously
|
|
49
|
+
* Note: Uses sync version for Deno compatibility (fflate async uses Web Workers
|
|
50
|
+
* which have issues in Deno)
|
|
47
51
|
*/
|
|
48
52
|
decompress(data: Buffer): Promise<Buffer>;
|
|
49
53
|
}
|
|
@@ -96,30 +96,21 @@ export class GzipTools {
|
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
98
|
* Compress data asynchronously
|
|
99
|
+
* Note: Uses sync version for Deno compatibility (fflate async uses Web Workers
|
|
100
|
+
* which have issues in Deno)
|
|
99
101
|
*/
|
|
100
102
|
async compress(data, level) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
plugins.fflate.gzip(data, options, (err, result) => {
|
|
104
|
-
if (err)
|
|
105
|
-
reject(err);
|
|
106
|
-
else
|
|
107
|
-
resolve(Buffer.from(result));
|
|
108
|
-
});
|
|
109
|
-
});
|
|
103
|
+
// Use sync version wrapped in Promise for cross-runtime compatibility
|
|
104
|
+
return this.compressSync(data, level);
|
|
110
105
|
}
|
|
111
106
|
/**
|
|
112
107
|
* Decompress data asynchronously
|
|
108
|
+
* Note: Uses sync version for Deno compatibility (fflate async uses Web Workers
|
|
109
|
+
* which have issues in Deno)
|
|
113
110
|
*/
|
|
114
111
|
async decompress(data) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (err)
|
|
118
|
-
reject(err);
|
|
119
|
-
else
|
|
120
|
-
resolve(Buffer.from(result));
|
|
121
|
-
});
|
|
122
|
-
});
|
|
112
|
+
// Use sync version wrapped in Promise for cross-runtime compatibility
|
|
113
|
+
return this.decompressSync(data);
|
|
123
114
|
}
|
|
124
115
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nemlwdG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmd6aXB0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUd4Qzs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVM7SUFHcEUsWUFBWSxRQUEyQixDQUFDO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRVIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUNSLEtBQWEsRUFDYixRQUF3QixFQUN4QixRQUEwQztRQUUxQyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0IsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxHQUFZLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUEwQztRQUMvQyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMs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
|
|
@@ -1,117 +1,214 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IArchiveEntryInfo, IArchiveInfo, TArchiveFormat, TCompressionLevel, TEntryFilter } from './interfaces.js';
|
|
3
3
|
import { Bzip2Tools } from './classes.bzip2tools.js';
|
|
4
4
|
import { GzipTools } from './classes.gziptools.js';
|
|
5
5
|
import { TarTools } from './classes.tartools.js';
|
|
6
6
|
import { ZipTools } from './classes.ziptools.js';
|
|
7
7
|
import { ArchiveAnalyzer } from './classes.archiveanalyzer.js';
|
|
8
8
|
/**
|
|
9
|
-
* Main class for archive manipulation
|
|
9
|
+
* Main class for archive manipulation with fluent API
|
|
10
10
|
* Supports TAR, ZIP, GZIP, and BZIP2 formats
|
|
11
|
+
*
|
|
12
|
+
* @example Extraction from URL
|
|
13
|
+
* ```typescript
|
|
14
|
+
* await SmartArchive.create()
|
|
15
|
+
* .url('https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz')
|
|
16
|
+
* .stripComponents(1)
|
|
17
|
+
* .extract('./node_modules/lodash');
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Creation with thenable
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const archive = await SmartArchive.create()
|
|
23
|
+
* .format('tar.gz')
|
|
24
|
+
* .compression(9)
|
|
25
|
+
* .entry('config.json', JSON.stringify(config))
|
|
26
|
+
* .directory('./src');
|
|
27
|
+
* ```
|
|
11
28
|
*/
|
|
12
29
|
export declare class SmartArchive {
|
|
13
30
|
/**
|
|
14
|
-
* Create SmartArchive
|
|
31
|
+
* Create a new SmartArchive instance for fluent configuration
|
|
15
32
|
*/
|
|
16
|
-
static
|
|
33
|
+
static create(): SmartArchive;
|
|
34
|
+
tarTools: TarTools;
|
|
35
|
+
zipTools: ZipTools;
|
|
36
|
+
gzipTools: GzipTools;
|
|
37
|
+
bzip2Tools: Bzip2Tools;
|
|
38
|
+
archiveAnalyzer: ArchiveAnalyzer;
|
|
39
|
+
private sourceUrl?;
|
|
40
|
+
private sourceFilePath?;
|
|
41
|
+
private sourceStream?;
|
|
42
|
+
private archiveBuffer?;
|
|
43
|
+
private creationFormat?;
|
|
44
|
+
private _compressionLevel;
|
|
45
|
+
private pendingEntries;
|
|
46
|
+
private pendingDirectories;
|
|
47
|
+
private _mode;
|
|
48
|
+
private _filters;
|
|
49
|
+
private _excludePatterns;
|
|
50
|
+
private _includePatterns;
|
|
51
|
+
private _stripComponents;
|
|
52
|
+
private _overwrite;
|
|
53
|
+
private _fileName?;
|
|
54
|
+
constructor();
|
|
17
55
|
/**
|
|
18
|
-
*
|
|
56
|
+
* Load archive from URL
|
|
19
57
|
*/
|
|
20
|
-
|
|
58
|
+
url(urlArg: string): this;
|
|
21
59
|
/**
|
|
22
|
-
*
|
|
60
|
+
* Load archive from file path
|
|
23
61
|
*/
|
|
24
|
-
|
|
62
|
+
file(pathArg: string): this;
|
|
25
63
|
/**
|
|
26
|
-
*
|
|
64
|
+
* Load archive from readable stream
|
|
27
65
|
*/
|
|
28
|
-
|
|
66
|
+
stream(streamArg: plugins.stream.Readable | plugins.stream.Duplex | plugins.stream.Transform): this;
|
|
29
67
|
/**
|
|
30
|
-
*
|
|
68
|
+
* Load archive from buffer
|
|
31
69
|
*/
|
|
32
|
-
|
|
70
|
+
buffer(bufferArg: Buffer): this;
|
|
33
71
|
/**
|
|
34
|
-
*
|
|
72
|
+
* Set output format for archive creation
|
|
35
73
|
*/
|
|
36
|
-
|
|
74
|
+
format(fmt: TArchiveFormat): this;
|
|
37
75
|
/**
|
|
38
|
-
*
|
|
76
|
+
* Set compression level (0-9)
|
|
39
77
|
*/
|
|
40
|
-
|
|
78
|
+
compression(level: TCompressionLevel): this;
|
|
41
79
|
/**
|
|
42
|
-
*
|
|
80
|
+
* Add a single file entry to the archive
|
|
43
81
|
*/
|
|
44
|
-
|
|
45
|
-
tarTools: TarTools;
|
|
46
|
-
zipTools: ZipTools;
|
|
47
|
-
gzipTools: GzipTools;
|
|
48
|
-
bzip2Tools: Bzip2Tools;
|
|
49
|
-
archiveAnalyzer: ArchiveAnalyzer;
|
|
50
|
-
sourceUrl?: string;
|
|
51
|
-
sourceFilePath?: string;
|
|
52
|
-
sourceStream?: plugins.stream.Readable | plugins.stream.Duplex | plugins.stream.Transform;
|
|
53
|
-
private archiveBuffer?;
|
|
54
|
-
private creationOptions?;
|
|
55
|
-
private pendingEntries?;
|
|
56
|
-
constructor();
|
|
82
|
+
entry(archivePath: string, content: string | Buffer): this;
|
|
57
83
|
/**
|
|
58
|
-
* Add
|
|
84
|
+
* Add multiple entries to the archive
|
|
59
85
|
*/
|
|
60
|
-
|
|
86
|
+
entries(entriesArg: Array<{
|
|
87
|
+
archivePath: string;
|
|
88
|
+
content: string | Buffer;
|
|
89
|
+
}>): this;
|
|
61
90
|
/**
|
|
62
|
-
* Add
|
|
91
|
+
* Add an entire directory to the archive (queued, resolved at build time)
|
|
63
92
|
*/
|
|
64
|
-
|
|
93
|
+
directory(sourcePath: string, archiveBase?: string): this;
|
|
65
94
|
/**
|
|
66
|
-
* Add a
|
|
95
|
+
* Add a SmartFile to the archive
|
|
67
96
|
*/
|
|
68
|
-
|
|
97
|
+
addSmartFile(fileArg: plugins.smartfile.SmartFile, archivePath?: string): this;
|
|
69
98
|
/**
|
|
70
|
-
*
|
|
99
|
+
* Add a StreamFile to the archive
|
|
71
100
|
*/
|
|
72
|
-
|
|
101
|
+
addStreamFile(fileArg: plugins.smartfile.StreamFile, archivePath?: string): this;
|
|
73
102
|
/**
|
|
74
|
-
*
|
|
103
|
+
* Filter entries by predicate function
|
|
75
104
|
*/
|
|
76
|
-
|
|
105
|
+
filter(predicate: TEntryFilter): this;
|
|
77
106
|
/**
|
|
78
|
-
*
|
|
107
|
+
* Include only entries matching the pattern
|
|
79
108
|
*/
|
|
80
|
-
|
|
109
|
+
include(pattern: string | RegExp): this;
|
|
81
110
|
/**
|
|
82
|
-
*
|
|
111
|
+
* Exclude entries matching the pattern
|
|
83
112
|
*/
|
|
84
|
-
|
|
113
|
+
exclude(pattern: string | RegExp): this;
|
|
114
|
+
/**
|
|
115
|
+
* Strip N leading path components from extracted files
|
|
116
|
+
*/
|
|
117
|
+
stripComponents(n: number): this;
|
|
118
|
+
/**
|
|
119
|
+
* Overwrite existing files during extraction
|
|
120
|
+
*/
|
|
121
|
+
overwrite(value?: boolean): this;
|
|
122
|
+
/**
|
|
123
|
+
* Set output filename for single-file archives (gz, bz2)
|
|
124
|
+
*/
|
|
125
|
+
fileName(name: string): this;
|
|
85
126
|
/**
|
|
86
|
-
* Extract archive to filesystem
|
|
127
|
+
* Extract archive to filesystem directory
|
|
87
128
|
*/
|
|
88
|
-
|
|
129
|
+
extract(targetDir: string): Promise<void>;
|
|
89
130
|
/**
|
|
90
131
|
* Extract archive to a stream of StreamFile objects
|
|
91
132
|
*/
|
|
92
|
-
|
|
133
|
+
toStreamFiles(): Promise<plugins.smartstream.StreamIntake<plugins.smartfile.StreamFile>>;
|
|
93
134
|
/**
|
|
94
135
|
* Extract archive to an array of SmartFile objects (in-memory)
|
|
95
136
|
*/
|
|
96
|
-
|
|
137
|
+
toSmartFiles(): Promise<plugins.smartfile.SmartFile[]>;
|
|
97
138
|
/**
|
|
98
139
|
* Extract a single file from the archive by path
|
|
99
140
|
*/
|
|
100
141
|
extractFile(filePath: string): Promise<plugins.smartfile.SmartFile | null>;
|
|
142
|
+
/**
|
|
143
|
+
* Build and finalize the archive, returning this instance
|
|
144
|
+
*/
|
|
145
|
+
build(): Promise<SmartArchive>;
|
|
146
|
+
/**
|
|
147
|
+
* Internal build implementation (avoids thenable recursion)
|
|
148
|
+
*/
|
|
149
|
+
private doBuild;
|
|
150
|
+
/**
|
|
151
|
+
* Build archive and return as Buffer
|
|
152
|
+
*/
|
|
153
|
+
toBuffer(): Promise<Buffer>;
|
|
154
|
+
/**
|
|
155
|
+
* Build archive and write to file
|
|
156
|
+
*/
|
|
157
|
+
toFile(filePath: string): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* Get archive as a readable stream
|
|
160
|
+
*/
|
|
161
|
+
toStream(): Promise<plugins.stream.Readable>;
|
|
101
162
|
/**
|
|
102
163
|
* Analyze the archive and return metadata
|
|
103
164
|
*/
|
|
104
165
|
analyze(): Promise<IArchiveInfo>;
|
|
105
166
|
/**
|
|
106
|
-
* List all entries in the archive
|
|
167
|
+
* List all entries in the archive
|
|
107
168
|
*/
|
|
108
|
-
|
|
169
|
+
list(): Promise<IArchiveEntryInfo[]>;
|
|
109
170
|
/**
|
|
110
171
|
* Check if a specific file exists in the archive
|
|
111
172
|
*/
|
|
112
173
|
hasFile(filePath: string): Promise<boolean>;
|
|
113
174
|
/**
|
|
114
|
-
*
|
|
175
|
+
* Ensure we're not in create mode when calling extraction methods
|
|
176
|
+
*/
|
|
177
|
+
private ensureNotInCreateMode;
|
|
178
|
+
/**
|
|
179
|
+
* Ensure we're not in extract mode when calling creation methods
|
|
180
|
+
*/
|
|
181
|
+
private ensureNotInExtractMode;
|
|
182
|
+
/**
|
|
183
|
+
* Ensure an extraction source is configured
|
|
184
|
+
*/
|
|
185
|
+
private ensureExtractionSource;
|
|
186
|
+
/**
|
|
187
|
+
* Ensure a format is configured for creation
|
|
188
|
+
*/
|
|
189
|
+
private ensureCreationFormat;
|
|
190
|
+
/**
|
|
191
|
+
* Get the source stream
|
|
192
|
+
*/
|
|
193
|
+
private getSourceStream;
|
|
194
|
+
/**
|
|
195
|
+
* Build a combined filter function from all configured filters
|
|
196
|
+
*/
|
|
197
|
+
private buildFilterFunction;
|
|
198
|
+
/**
|
|
199
|
+
* Resolve pending directories to entries
|
|
200
|
+
*/
|
|
201
|
+
private resolveDirectories;
|
|
202
|
+
/**
|
|
203
|
+
* Get entries filtered by include/exclude patterns
|
|
204
|
+
*/
|
|
205
|
+
private getFilteredEntries;
|
|
206
|
+
/**
|
|
207
|
+
* Convert a stream to buffer
|
|
208
|
+
*/
|
|
209
|
+
private streamToBuffer;
|
|
210
|
+
/**
|
|
211
|
+
* Read first chunk from stream
|
|
115
212
|
*/
|
|
116
213
|
private readFirstChunk;
|
|
117
214
|
}
|