fix(ziptools,gziptools): Use fflate synchronous APIs for ZIP and GZIP operations for Deno compatibility; add TEntryFilter type and small docs/tests cleanup
This commit is contained in:
@@ -100,17 +100,14 @@ export class ZipCompressionStream extends plugins.stream.Duplex {
|
||||
filesObj[name] = options ? [data, options] : data;
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
plugins.fflate.zip(filesObj, (err, result) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
this.push(Buffer.from(result));
|
||||
this.push(null);
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
// Use sync version for Deno compatibility (fflate async uses Web Workers)
|
||||
try {
|
||||
const result = plugins.fflate.zipSync(filesObj);
|
||||
this.push(Buffer.from(result));
|
||||
this.push(null);
|
||||
} catch (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
_read(): void {
|
||||
@@ -179,31 +176,21 @@ export class ZipTools {
|
||||
}
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
plugins.fflate.zip(filesObj, (err, result) => {
|
||||
if (err) reject(err);
|
||||
else resolve(Buffer.from(result));
|
||||
});
|
||||
});
|
||||
// Use sync version for Deno compatibility (fflate async uses Web Workers)
|
||||
const result = plugins.fflate.zipSync(filesObj);
|
||||
return Buffer.from(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract a ZIP buffer to an array of entries
|
||||
*/
|
||||
public async extractZip(data: Buffer): Promise<Array<{ path: string; content: Buffer }>> {
|
||||
return new Promise((resolve, reject) => {
|
||||
plugins.fflate.unzip(data, (err, result) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
|
||||
const entries: Array<{ path: string; content: Buffer }> = [];
|
||||
for (const [path, content] of Object.entries(result)) {
|
||||
entries.push({ path, content: Buffer.from(content) });
|
||||
}
|
||||
resolve(entries);
|
||||
});
|
||||
});
|
||||
// Use sync version for Deno compatibility (fflate async uses Web Workers)
|
||||
const result = plugins.fflate.unzipSync(data);
|
||||
const entries: Array<{ path: string; content: Buffer }> = [];
|
||||
for (const [path, content] of Object.entries(result)) {
|
||||
entries.push({ path, content: Buffer.from(content) });
|
||||
}
|
||||
return entries;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user