|
1 | | -import { readFileSync, createReadStream, rmdirSync, existsSync } from "fs"; |
| 1 | +import { |
| 2 | + createReadStream, |
| 3 | + existsSync, |
| 4 | + copyFileSync, |
| 5 | + promises as fsPromises, |
| 6 | +} from "fs"; |
2 | 7 | import path from "path"; |
3 | 8 | import thumbnail from "@medialit/thumbnail"; |
4 | 9 | import mongoose from "mongoose"; |
@@ -79,9 +84,7 @@ export default async function finalizeUpload(uploadId: string) { |
79 | 84 |
|
80 | 85 | const mainFilePath = `${temporaryFolderForWork}/main.${fileExtension}`; |
81 | 86 |
|
82 | | - //Copy file from tus store to working directory |
83 | | - const tusFileContent = readFileSync(tusFilePath); |
84 | | - require("fs").writeFileSync(mainFilePath, tusFileContent); |
| 87 | + copyFileSync(tusFilePath, mainFilePath); |
85 | 88 |
|
86 | 89 | // Apply WebP conversion if needed |
87 | 90 | if (useWebP && imagePattern.test(metadata.mimeType)) { |
@@ -124,7 +127,7 @@ export default async function finalizeUpload(uploadId: string) { |
124 | 127 | logger.error({ err }, err.message); |
125 | 128 | } |
126 | 129 |
|
127 | | - rmdirSync(temporaryFolderForWork, { recursive: true }); |
| 130 | + await fsPromises.rm(temporaryFolderForWork, { recursive: true }); |
128 | 131 |
|
129 | 132 | const mediaObject: MediaWithUserId = { |
130 | 133 | fileName: `main.${fileExtension}`, |
@@ -181,26 +184,27 @@ const generateAndUploadThumbnail = async ({ |
181 | 184 | tags: string; |
182 | 185 | }): Promise<boolean> => { |
183 | 186 | const thumbPath = `${workingDirectory}/thumb.webp`; |
| 187 | + let isGenerated = false; |
184 | 188 |
|
185 | | - let isThumbGenerated = false; |
186 | 189 | if (imagePatternForThumbnailGeneration.test(mimetype)) { |
187 | 190 | await thumbnail.forImage(originalFilePath, thumbPath); |
188 | | - isThumbGenerated = true; |
| 191 | + isGenerated = true; |
189 | 192 | } |
190 | 193 | if (videoPattern.test(mimetype)) { |
191 | 194 | await thumbnail.forVideo(originalFilePath, thumbPath); |
192 | | - isThumbGenerated = true; |
| 195 | + isGenerated = true; |
193 | 196 | } |
194 | 197 |
|
195 | | - if (isThumbGenerated) { |
| 198 | + if (isGenerated) { |
196 | 199 | await putObject({ |
197 | 200 | Key: key, |
198 | 201 | Body: createReadStream(thumbPath), |
199 | 202 | ContentType: "image/webp", |
200 | 203 | ACL: USE_CLOUDFRONT ? "private" : "public-read", |
201 | 204 | Tagging: tags, |
202 | 205 | }); |
| 206 | + await fsPromises.rm(thumbPath); |
203 | 207 | } |
204 | 208 |
|
205 | | - return isThumbGenerated; |
| 209 | + return isGenerated; |
206 | 210 | }; |
0 commit comments