@push.rocks/smartarchive 4.0.23 → 4.0.26
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.smartarchive.js +6 -1
- package/dist_ts/classes.tartools.d.ts +12 -1
- package/dist_ts/classes.tartools.js +80 -6
- package/dist_ts/classes.ziptools.js +2 -2
- package/package.json +9 -9
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.smartarchive.ts +5 -0
- package/ts/classes.tartools.ts +99 -11
- package/ts/classes.ziptools.ts +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartarchive',
|
|
6
|
-
version: '4.0.
|
|
6
|
+
version: '4.0.26',
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSwwQkFBMEI7SUFDaEMsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVHQUF1RztDQUNySCxDQUFBIn0=
|
|
@@ -93,6 +93,11 @@ export class SmartArchive {
|
|
|
93
93
|
if (analyzedResultChunk.fileType?.mime === 'application/x-tar') {
|
|
94
94
|
const tarStream = analyzedResultChunk.decompressionStream;
|
|
95
95
|
tarStream.on('entry', async (header, stream, next) => {
|
|
96
|
+
if (header.type === 'directory') {
|
|
97
|
+
console.log(`tar stream directory: ${header.name} ... skipping!`);
|
|
98
|
+
next();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
96
101
|
console.log(`tar stream file: ${header.name}`);
|
|
97
102
|
const streamfile = plugins.smartfile.StreamFile.fromStream(stream, header.name);
|
|
98
103
|
streamFileIntake.push(streamfile);
|
|
@@ -137,4 +142,4 @@ export class SmartArchive {
|
|
|
137
142
|
return streamFileIntake;
|
|
138
143
|
}
|
|
139
144
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zbWFydGFyY2hpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnNtYXJ0YXJjaGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUVwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBd0IsTUFBTSw4QkFBOEIsQ0FBQztBQUlyRixNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBYztRQUMvQyxNQUFNLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUN4QyxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFtQjtRQUNyRCxNQUFNLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztRQUNsRCxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUNuQyxTQUFxRjtRQUVyRixNQUFNLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsb0JBQW9CLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QyxPQUFPLG9CQUFv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
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
3
|
import type { SmartArchive } from './classes.smartarchive.js';
|
|
3
4
|
import * as plugins from './plugins.js';
|
|
4
5
|
export declare class TarTools {
|
|
5
6
|
smartArchiveRef: SmartArchive;
|
|
6
7
|
constructor(smartArchiveRefArg: SmartArchive);
|
|
7
|
-
addFileToPack(pack: plugins.tarStream.Pack,
|
|
8
|
+
addFileToPack(pack: plugins.tarStream.Pack, optionsArg: {
|
|
9
|
+
fileName?: string;
|
|
10
|
+
content?: string | Buffer | plugins.smartstream.stream.Readable | plugins.smartfile.SmartFile | plugins.smartfile.StreamFile;
|
|
11
|
+
byteLength?: number;
|
|
12
|
+
filePath?: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* packs a directory from disk into a tar stream
|
|
16
|
+
* @param directoryPath
|
|
17
|
+
*/
|
|
18
|
+
packDirectory(directoryPath: string): Promise<void>;
|
|
8
19
|
getPackStream(): Promise<plugins.tarStream.Pack>;
|
|
9
20
|
getDecompressionStream(): plugins.tarStream.Extract;
|
|
10
21
|
}
|
|
@@ -4,9 +4,47 @@ export class TarTools {
|
|
|
4
4
|
this.smartArchiveRef = smartArchiveRefArg;
|
|
5
5
|
}
|
|
6
6
|
// packing
|
|
7
|
-
addFileToPack(pack,
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
|
|
7
|
+
async addFileToPack(pack, optionsArg) {
|
|
8
|
+
return new Promise(async (resolve, reject) => {
|
|
9
|
+
let fileName = optionsArg.fileName || optionsArg.content instanceof plugins.smartfile.SmartFile
|
|
10
|
+
? optionsArg.content.relative
|
|
11
|
+
: null || optionsArg.content instanceof plugins.smartfile.StreamFile
|
|
12
|
+
? optionsArg.content.relativeFilePath
|
|
13
|
+
: null || optionsArg.filePath;
|
|
14
|
+
/**
|
|
15
|
+
* contentByteLength is used to set the size of the entry in the tar file
|
|
16
|
+
*/
|
|
17
|
+
let contentByteLength;
|
|
18
|
+
if (optionsArg.byteLength) {
|
|
19
|
+
contentByteLength = optionsArg.byteLength;
|
|
20
|
+
}
|
|
21
|
+
else if (typeof optionsArg.content === 'string') {
|
|
22
|
+
contentByteLength = Buffer.byteLength(optionsArg.content, 'utf8');
|
|
23
|
+
}
|
|
24
|
+
else if (Buffer.isBuffer(optionsArg.content)) {
|
|
25
|
+
contentByteLength = optionsArg.content.length;
|
|
26
|
+
}
|
|
27
|
+
else if (optionsArg.content instanceof plugins.smartfile.SmartFile) {
|
|
28
|
+
contentByteLength = await optionsArg.content.getSize(); // assuming SmartFile has getSize method
|
|
29
|
+
}
|
|
30
|
+
else if (optionsArg.content instanceof plugins.smartfile.StreamFile) {
|
|
31
|
+
contentByteLength = await optionsArg.content.getSize(); // assuming StreamFile has getSize method
|
|
32
|
+
}
|
|
33
|
+
else if (optionsArg.content instanceof plugins.smartstream.stream.Readable) {
|
|
34
|
+
console.warn('@push.rocks/smartarchive: When streaming, it is recommended to provide byteLength, if known.');
|
|
35
|
+
}
|
|
36
|
+
else if (optionsArg.filePath) {
|
|
37
|
+
const fileStat = await plugins.smartfile.fs.stat(optionsArg.filePath);
|
|
38
|
+
contentByteLength = fileStat.size;
|
|
39
|
+
}
|
|
40
|
+
const entry = pack.entry({
|
|
41
|
+
name: fileName,
|
|
42
|
+
...(contentByteLength
|
|
43
|
+
? {
|
|
44
|
+
size: contentByteLength,
|
|
45
|
+
}
|
|
46
|
+
: null),
|
|
47
|
+
}, (err) => {
|
|
10
48
|
if (err) {
|
|
11
49
|
reject(err);
|
|
12
50
|
}
|
|
@@ -14,10 +52,46 @@ export class TarTools {
|
|
|
14
52
|
resolve();
|
|
15
53
|
}
|
|
16
54
|
});
|
|
17
|
-
|
|
18
|
-
|
|
55
|
+
let content;
|
|
56
|
+
if (Buffer.isBuffer(optionsArg.content)) {
|
|
57
|
+
content = plugins.smartstream.stream.Readable.from(optionsArg.content);
|
|
58
|
+
}
|
|
59
|
+
else if (typeof optionsArg.content === 'string') {
|
|
60
|
+
content = plugins.smartstream.stream.Readable.from(Buffer.from(optionsArg.content));
|
|
61
|
+
}
|
|
62
|
+
else if (optionsArg.content instanceof plugins.smartfile.SmartFile) {
|
|
63
|
+
content = plugins.smartstream.stream.Readable.from(optionsArg.content.contents);
|
|
64
|
+
}
|
|
65
|
+
else if (optionsArg.content instanceof plugins.smartfile.StreamFile) {
|
|
66
|
+
content = await optionsArg.content.createReadStream();
|
|
67
|
+
}
|
|
68
|
+
else if (optionsArg.content instanceof plugins.smartstream.stream.Readable) {
|
|
69
|
+
content = optionsArg.content;
|
|
70
|
+
}
|
|
71
|
+
content.pipe(entry);
|
|
72
|
+
entry.on('end', () => {
|
|
73
|
+
resolve();
|
|
74
|
+
});
|
|
19
75
|
});
|
|
20
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* packs a directory from disk into a tar stream
|
|
79
|
+
* @param directoryPath
|
|
80
|
+
*/
|
|
81
|
+
async packDirectory(directoryPath) {
|
|
82
|
+
const fileTree = await plugins.smartfile.fs.listFileTree(directoryPath, '**/*');
|
|
83
|
+
const pack = await this.getPackStream();
|
|
84
|
+
for (const filePath of fileTree) {
|
|
85
|
+
const absolutePath = plugins.path.join(directoryPath, filePath);
|
|
86
|
+
const fileStat = await plugins.smartfile.fs.stat(absolutePath);
|
|
87
|
+
await this.addFileToPack(pack, {
|
|
88
|
+
byteLength: fileStat.size,
|
|
89
|
+
filePath: filePath,
|
|
90
|
+
fileName: filePath,
|
|
91
|
+
content: plugins.smartfile.fsStream.createReadStream(absolutePath),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
21
95
|
async getPackStream() {
|
|
22
96
|
const pack = plugins.tarStream.pack();
|
|
23
97
|
return pack;
|
|
@@ -27,4 +101,4 @@ export class TarTools {
|
|
|
27
101
|
return plugins.tarStream.extract();
|
|
28
102
|
}
|
|
29
103
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50YXJ0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMudGFydG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxPQUFPLFFBQVE7SUFJbkIsWUFBWSxrQkFBZ0M7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVTtJQUNILEtBQUssQ0FBQyxhQUFhLENBQ3hCLElBQTRCLEVBQzVCLFVBVUM7UUFFRCxPQUFPLElBQUksT0FBTyxDQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDakQsSUFBSSxRQUFRLEdBQ1YsVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsT0FBTyxZQUFZLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUztnQkFDOUUsQ0FBQyxDQUFFLFVBQVUsQ0FBQyxPQUF1QyxDQUFDLFFBQVE7Z0JBQzlELENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLE9BQU8sWUFBWSxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVU7b0JBQ3BFLENBQUMsQ0FBRSxVQUFVLENBQUMsT0FBd0MsQ0FBQyxnQkFBZ0I7b0JBQ3ZFLENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUVsQzs7ZUFFRztZQUNILElBQUksaUJBQXlCLENBQUM7WUFDOUIsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFCLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDNUMsQ0FBQztpQkFBTSxJQUFJLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbEQsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BF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
|
|
@@ -15,7 +15,7 @@ class DecompressZipTransform extends plugins.smartstream.SmartDuplex {
|
|
|
15
15
|
});
|
|
16
16
|
this.unzipper = new plugins.fflate.Unzip(async (fileArg) => {
|
|
17
17
|
let resultBuffer;
|
|
18
|
-
fileArg.ondata = async (
|
|
18
|
+
fileArg.ondata = async (flateError, dat, final) => {
|
|
19
19
|
resultBuffer ? resultBuffer = Buffer.concat([resultBuffer, Buffer.from(dat)])
|
|
20
20
|
: resultBuffer = Buffer.from(dat);
|
|
21
21
|
if (final) {
|
|
@@ -63,4 +63,4 @@ export class ZipTools {
|
|
|
63
63
|
return new DecompressZipTransform();
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy56aXB0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuemlwdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxzQkFBdUIsU0FBUSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQTRCO0lBZW5GO1FBQ0UsS0FBSyxDQUFDO1lBQ0osVUFBVSxFQUFFLElBQUk7WUFDaEIsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFnQixFQUFFLGNBQWMsRUFBRSxFQUFFO2dCQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUNELGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBekJHLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM1RCxJQUFJLFlBQW9CLENBQUM7WUFDekIsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDaEQsWUFBWSxDQUFBLENBQUMsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzFFLENBQUMsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3pFLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUMsQ0FBQTtZQUNELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQWNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBRUQsOEVBQThFO0FBQzlFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVM7SUFHaEU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLFFBQXdCLEVBQUUsUUFBMEM7UUFDNUYsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsUUFBUSxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQTBDO1FBQy9DLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixRQUFRLEVBQUUsQ0FBQztZQUNiLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxRQUFRO0lBR25CLFlBQVksa0JBQWdDO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartarchive",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.26",
|
|
4
4
|
"description": "A library for working with archive files, providing utilities for compressing and decompressing data.",
|
|
5
5
|
"main": "dist_ts/index.js",
|
|
6
6
|
"typings": "dist_ts/index.d.ts",
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
"homepage": "https://code.foss.global/push.rocks/smartarchive",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
20
|
-
"@push.rocks/smartfile": "^11.0.
|
|
21
|
-
"@push.rocks/smartpath": "^5.0.
|
|
20
|
+
"@push.rocks/smartfile": "^11.0.20",
|
|
21
|
+
"@push.rocks/smartpath": "^5.0.18",
|
|
22
22
|
"@push.rocks/smartpromise": "^4.0.3",
|
|
23
|
-
"@push.rocks/smartrequest": "^2.0.
|
|
23
|
+
"@push.rocks/smartrequest": "^2.0.22",
|
|
24
24
|
"@push.rocks/smartrx": "^3.0.7",
|
|
25
|
-
"@push.rocks/smartstream": "^3.0.
|
|
26
|
-
"@push.rocks/smartunique": "^3.0.
|
|
25
|
+
"@push.rocks/smartstream": "^3.0.44",
|
|
26
|
+
"@push.rocks/smartunique": "^3.0.9",
|
|
27
27
|
"@push.rocks/smarturl": "^3.0.7",
|
|
28
28
|
"@types/tar-stream": "^3.1.3",
|
|
29
29
|
"fflate": "^0.8.2",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"through": "^2.3.8"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@git.zone/tsbuild": "^2.1.
|
|
35
|
+
"@git.zone/tsbuild": "^2.1.80",
|
|
36
36
|
"@git.zone/tsrun": "^1.2.44",
|
|
37
|
-
"@git.zone/tstest": "^1.0.
|
|
38
|
-
"@push.rocks/tapbundle": "^5.0.
|
|
37
|
+
"@git.zone/tstest": "^1.0.90",
|
|
38
|
+
"@push.rocks/tapbundle": "^5.0.23"
|
|
39
39
|
},
|
|
40
40
|
"private": false,
|
|
41
41
|
"files": [
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -122,6 +122,11 @@ export class SmartArchive {
|
|
|
122
122
|
if (analyzedResultChunk.fileType?.mime === 'application/x-tar') {
|
|
123
123
|
const tarStream = analyzedResultChunk.decompressionStream as plugins.tarStream.Extract;
|
|
124
124
|
tarStream.on('entry', async (header, stream, next) => {
|
|
125
|
+
if (header.type === 'directory') {
|
|
126
|
+
console.log(`tar stream directory: ${header.name} ... skipping!`);
|
|
127
|
+
next();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
125
130
|
console.log(`tar stream file: ${header.name}`);
|
|
126
131
|
const streamfile = plugins.smartfile.StreamFile.fromStream(stream, header.name);
|
|
127
132
|
streamFileIntake.push(streamfile);
|
package/ts/classes.tartools.ts
CHANGED
|
@@ -2,28 +2,116 @@ import type { SmartArchive } from './classes.smartarchive.js';
|
|
|
2
2
|
import * as plugins from './plugins.js';
|
|
3
3
|
|
|
4
4
|
export class TarTools {
|
|
5
|
+
// INSTANCE
|
|
5
6
|
smartArchiveRef: SmartArchive;
|
|
6
7
|
|
|
7
8
|
constructor(smartArchiveRefArg: SmartArchive) {
|
|
8
9
|
this.smartArchiveRef = smartArchiveRefArg;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
|
|
11
12
|
// packing
|
|
12
|
-
public addFileToPack(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
public async addFileToPack(
|
|
14
|
+
pack: plugins.tarStream.Pack,
|
|
15
|
+
optionsArg: {
|
|
16
|
+
fileName?: string;
|
|
17
|
+
content?:
|
|
18
|
+
| string
|
|
19
|
+
| Buffer
|
|
20
|
+
| plugins.smartstream.stream.Readable
|
|
21
|
+
| plugins.smartfile.SmartFile
|
|
22
|
+
| plugins.smartfile.StreamFile;
|
|
23
|
+
byteLength?: number;
|
|
24
|
+
filePath?: string;
|
|
25
|
+
}
|
|
26
|
+
): Promise<void> {
|
|
27
|
+
return new Promise<void>(async (resolve, reject) => {
|
|
28
|
+
let fileName =
|
|
29
|
+
optionsArg.fileName || optionsArg.content instanceof plugins.smartfile.SmartFile
|
|
30
|
+
? (optionsArg.content as plugins.smartfile.SmartFile).relative
|
|
31
|
+
: null || optionsArg.content instanceof plugins.smartfile.StreamFile
|
|
32
|
+
? (optionsArg.content as plugins.smartfile.StreamFile).relativeFilePath
|
|
33
|
+
: null || optionsArg.filePath;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* contentByteLength is used to set the size of the entry in the tar file
|
|
37
|
+
*/
|
|
38
|
+
let contentByteLength: number;
|
|
39
|
+
if (optionsArg.byteLength) {
|
|
40
|
+
contentByteLength = optionsArg.byteLength;
|
|
41
|
+
} else if (typeof optionsArg.content === 'string') {
|
|
42
|
+
contentByteLength = Buffer.byteLength(optionsArg.content, 'utf8');
|
|
43
|
+
} else if (Buffer.isBuffer(optionsArg.content)) {
|
|
44
|
+
contentByteLength = optionsArg.content.length;
|
|
45
|
+
} else if (optionsArg.content instanceof plugins.smartfile.SmartFile) {
|
|
46
|
+
contentByteLength = await optionsArg.content.getSize(); // assuming SmartFile has getSize method
|
|
47
|
+
} else if (optionsArg.content instanceof plugins.smartfile.StreamFile) {
|
|
48
|
+
contentByteLength = await optionsArg.content.getSize(); // assuming StreamFile has getSize method
|
|
49
|
+
} else if (optionsArg.content instanceof plugins.smartstream.stream.Readable) {
|
|
50
|
+
console.warn(
|
|
51
|
+
'@push.rocks/smartarchive: When streaming, it is recommended to provide byteLength, if known.'
|
|
52
|
+
);
|
|
53
|
+
} else if (optionsArg.filePath) {
|
|
54
|
+
const fileStat = await plugins.smartfile.fs.stat(optionsArg.filePath);
|
|
55
|
+
contentByteLength = fileStat.size;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const entry = pack.entry(
|
|
59
|
+
{
|
|
60
|
+
name: fileName,
|
|
61
|
+
...(contentByteLength
|
|
62
|
+
? {
|
|
63
|
+
size: contentByteLength,
|
|
64
|
+
}
|
|
65
|
+
: null),
|
|
66
|
+
},
|
|
67
|
+
(err: Error) => {
|
|
68
|
+
if (err) {
|
|
69
|
+
reject(err);
|
|
70
|
+
} else {
|
|
71
|
+
resolve();
|
|
72
|
+
}
|
|
19
73
|
}
|
|
20
|
-
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
let content: plugins.smartstream.stream.Readable;
|
|
77
|
+
if (Buffer.isBuffer(optionsArg.content)) {
|
|
78
|
+
content = plugins.smartstream.stream.Readable.from(optionsArg.content);
|
|
79
|
+
} else if (typeof optionsArg.content === 'string') {
|
|
80
|
+
content = plugins.smartstream.stream.Readable.from(Buffer.from(optionsArg.content));
|
|
81
|
+
} else if (optionsArg.content instanceof plugins.smartfile.SmartFile) {
|
|
82
|
+
content = plugins.smartstream.stream.Readable.from(optionsArg.content.contents);
|
|
83
|
+
} else if (optionsArg.content instanceof plugins.smartfile.StreamFile) {
|
|
84
|
+
content = await optionsArg.content.createReadStream();
|
|
85
|
+
} else if (optionsArg.content instanceof plugins.smartstream.stream.Readable) {
|
|
86
|
+
content = optionsArg.content;
|
|
87
|
+
}
|
|
21
88
|
|
|
22
|
-
|
|
23
|
-
entry.end()
|
|
89
|
+
content.pipe(entry);
|
|
90
|
+
entry.on('end', () => {
|
|
91
|
+
resolve();
|
|
92
|
+
});
|
|
24
93
|
});
|
|
25
94
|
}
|
|
26
95
|
|
|
96
|
+
/**
|
|
97
|
+
* packs a directory from disk into a tar stream
|
|
98
|
+
* @param directoryPath
|
|
99
|
+
*/
|
|
100
|
+
public async packDirectory(directoryPath: string) {
|
|
101
|
+
const fileTree = await plugins.smartfile.fs.listFileTree(directoryPath, '**/*');
|
|
102
|
+
const pack = await this.getPackStream();
|
|
103
|
+
for (const filePath of fileTree) {
|
|
104
|
+
const absolutePath = plugins.path.join(directoryPath, filePath);
|
|
105
|
+
const fileStat = await plugins.smartfile.fs.stat(absolutePath);
|
|
106
|
+
await this.addFileToPack(pack, {
|
|
107
|
+
byteLength: fileStat.size,
|
|
108
|
+
filePath: filePath,
|
|
109
|
+
fileName: filePath,
|
|
110
|
+
content: plugins.smartfile.fsStream.createReadStream(absolutePath),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
27
115
|
public async getPackStream() {
|
|
28
116
|
const pack = plugins.tarStream.pack();
|
|
29
117
|
return pack;
|
package/ts/classes.ziptools.ts
CHANGED
|
@@ -5,7 +5,7 @@ class DecompressZipTransform extends plugins.smartstream.SmartDuplex<ArrayBuffer
|
|
|
5
5
|
private streamtools: plugins.smartstream.IStreamTools;
|
|
6
6
|
private unzipper = new plugins.fflate.Unzip(async (fileArg) => {
|
|
7
7
|
let resultBuffer: Buffer;
|
|
8
|
-
fileArg.ondata = async (
|
|
8
|
+
fileArg.ondata = async (flateError, dat, final) => {
|
|
9
9
|
resultBuffer? resultBuffer = Buffer.concat([resultBuffer, Buffer.from(dat)])
|
|
10
10
|
: resultBuffer = Buffer.from(dat);
|
|
11
11
|
if (final) {
|