From 1f79f36dfc2478aef378462b4be46ca8f476829b Mon Sep 17 00:00:00 2001 From: monoid Date: Thu, 1 May 2025 23:56:01 +0900 Subject: [PATCH] fix: unclosed file --- packages/server/src/util/zipwrap.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/server/src/util/zipwrap.ts b/packages/server/src/util/zipwrap.ts index 5f0ece2..ab2c3bb 100644 --- a/packages/server/src/util/zipwrap.ts +++ b/packages/server/src/util/zipwrap.ts @@ -1,6 +1,6 @@ import { type FileHandle, open } from "node:fs/promises"; import { orderBy } from "natural-orderby"; -import { ZipReader, Reader, type Entry } from "@zip.js/zip.js"; +import { ZipReader, Reader, type Entry, ZipReaderConstructorOptions } from "@zip.js/zip.js"; import EventEmitter from "node:events"; class FileReader extends Reader { @@ -55,10 +55,20 @@ class FileReader extends Reader { } } +class FileZipReader extends ZipReader { + constructor(private reader: FileReader, options?: ZipReaderConstructorOptions) { + super(reader, options); + } + override async close(): Promise { + super.close(); + await this.reader.close(); + } +} + export async function readZip(path: string): Promise<{ reader: ZipReader }> { - const reader = new ZipReader(new FileReader(path), { + const reader = new FileZipReader(new FileReader(path), { useCompressionStream: true, preventClose: false, });