fix: recommend to use unlinkSync instead of rmSync, which has a better compatibility handling non-English characters

d3bb625efebec5805348df6bc05a855897bdd27d

wickedcode <wickedcode@outlook.com>

12 files changed, +23 -23Showing whitespace changes
src/endpoints/assets.js+2 -2
@@ -235,14 +235,14 @@ router.post('/download', async (request, response) => {
235235 const contentType = mime.lookup(temp_path) || 'application/octet-stream';
236236 response.setHeader('Content-Type', contentType);
237237 response.send(fileContent);
238238 fs.rmSyncunlinkSync(temp_path);
239239 return;
240240 }
241241
242242 // Move into asset place
243243 console.info('Download finished, moving file from', temp_path, 'to', file_path);
244244 fs.copyFileSync(temp_path, file_path);
245245 fs.rmSyncunlinkSync(temp_path);
246246 response.sendStatus(200);
247247 }
248248 catch (error) {
src/endpoints/avatars.js+1 -1
@@ -53,7 +53,7 @@ router.post('/upload', async (request, response) => {
5353 const filename = request.body.overwrite_name || `${Date.now()}.png`;
5454 const pathToNewFile = path.join(request.user.directories.avatars, filename);
5555 writeFileAtomicSync(pathToNewFile, image);
5656 fs.rmSyncunlinkSync(pathToUpload);
5757 return response.send({ path: filename });
5858 } catch (err) {
5959 return response.status(400).send('Is not a valid image');
src/endpoints/backends/kobold.js+1 -1
@@ -204,7 +204,7 @@ router.post('/transcribe-audio', async function (request, response) {
204204 console.debug('Transcribing audio with KoboldCpp', server);
205205
206206 const fileBase64 = fs.readFileSync(request.file.path).toString('base64');
207207 fs.rmSyncunlinkSync(request.file.path);
208208
209209 const headers = {};
210210 setAdditionalHeadersByType(headers, TEXTGEN_TYPES.KOBOLDCPP, server, request.user.directories);
src/endpoints/backgrounds.js+3 -3
@@ -30,7 +30,7 @@ router.post('/delete', getFileNameValidationFunction('bg'), function (request, r
3030 return response.sendStatus(400);
3131 }
3232
3333 fs.rmSyncunlinkSync(fileName);
3434 invalidateThumbnail(request.user.directories, 'bg', request.body.bg);
3535 return response.send('ok');
3636});
@@ -52,7 +52,7 @@ router.post('/rename', function (request, response) {
5252 }
5353
5454 fs.copyFileSync(oldFileName, newFileName);
5555 fs.rmSyncunlinkSync(oldFileName);
5656 invalidateThumbnail(request.user.directories, 'bg', request.body.old_bg);
5757 return response.send('ok');
5858});
@@ -65,7 +65,7 @@ router.post('/upload', function (request, response) {
6565
6666 try {
6767 fs.copyFileSync(img_path, path.join(request.user.directories.backgrounds, filename));
6868 fs.rmSyncunlinkSync(img_path);
6969 invalidateThumbnail(request.user.directories, 'bg', filename);
7070 response.send(filename);
7171 } catch (err) {
src/endpoints/characters.js+3 -3
@@ -720,7 +720,7 @@ function convertWorldInfoToCharacterBook(name, entries) {
720720 */
721721async function importFromYaml(uploadPath, context, preservedFileName) {
722722 const fileText = fs.readFileSync(uploadPath, 'utf8');
723723 fs.rmSyncunlinkSync(uploadPath);
724724 const yamlData = yaml.parse(fileText);
725725 console.info('Importing from YAML');
726726 yamlData.name = sanitize(yamlData.name);
@@ -754,7 +754,7 @@ async function importFromYaml(uploadPath, context, preservedFileName) {
754754 */
755755async function importFromCharX(uploadPath, { request }, preservedFileName) {
756756 const data = fs.readFileSync(uploadPath).buffer;
757757 fs.rmSyncunlinkSync(uploadPath);
758758 console.info('Importing from CharX');
759759 const cardBuffer = await extractFileFromZipBuffer(data, 'card.json');
760760
@@ -995,7 +995,7 @@ router.post('/rename', validateAvatarUrlMiddleware, async function (request, res
995995 }
996996
997997 // Remove the old character file
998998 fs.rmSyncunlinkSync(oldAvatarPath);
999999
10001000 // Return new avatar name to ST
10011001 return response.send({ avatar: newAvatarName });
src/endpoints/chats.js+2 -2
@@ -433,7 +433,7 @@ router.post('/rename', validateAvatarUrlMiddleware, async function (request, res
433433 }
434434
435435 fs.copyFileSync(pathToOriginalFile, pathToRenamedFile);
436436 fs.rmSyncunlinkSync(pathToOriginalFile);
437437 console.info('Successfully renamed.');
438438 return response.send({ ok: true, sanitizedFileName });
439439});
@@ -665,7 +665,7 @@ router.post('/group/delete', (request, response) => {
665665 const pathToFile = path.join(request.user.directories.groupChats, `${id}.jsonl`);
666666
667667 if (fs.existsSync(pathToFile)) {
668668 fs.rmSyncunlinkSync(pathToFile);
669669 return response.send({ ok: true });
670670 }
671671
src/endpoints/files.js+1 -1
@@ -66,7 +66,7 @@ router.post('/delete', async (request, response) => {
6666 return response.status(404).send('File not found');
6767 }
6868
6969 fs.rmSyncunlinkSync(pathToDelete);
7070 console.info(`Deleted file: ${request.body.path} from ${request.user.profile.handle}`);
7171 return response.sendStatus(200);
7272 } catch (error) {
src/endpoints/groups.js+2 -2
@@ -117,7 +117,7 @@ router.post('/delete', async (request, response) => {
117117 const pathToFile = path.join(request.user.directories.groupChats, `${id}.jsonl`);
118118
119119 if (fs.existsSync(pathToFile)) {
120120 fs.rmSyncunlinkSync(pathToFile);
121121 }
122122 }
123123 }
@@ -126,7 +126,7 @@ router.post('/delete', async (request, response) => {
126126 }
127127
128128 if (fs.existsSync(pathToGroup)) {
129129 fs.rmSyncunlinkSync(pathToGroup);
130130 }
131131
132132 return response.send({ ok: true });
src/endpoints/openai.js+1 -1
@@ -234,7 +234,7 @@ router.post('/transcribe-audio', async (request, response) => {
234234 return response.status(500).send(text);
235235 }
236236
237237 fs.rmSyncunlinkSync(request.file.path);
238238 const data = await result.json();
239239 console.debug('OpenAI transcription response', data);
240240 return response.json(data);
src/endpoints/presets.js+1 -1
@@ -124,7 +124,7 @@ router.post('/delete-openai', function (request, response) {
124124 const pathToFile = path.join(request.user.directories.openAI_Settings, `${name}.json`);
125125
126126 if (fs.existsSync(pathToFile)) {
127127 fs.rmSyncunlinkSync(pathToFile);
128128 return response.send({ ok: true });
129129 }
130130
src/endpoints/sprites.js+5 -5
@@ -165,7 +165,7 @@ router.post('/delete', async (request, response) => {
165165 // Remove existing sprite with the same label
166166 for (const file of files) {
167167 if (path.parse(file).name === spriteName) {
168168 fs.rmSyncunlinkSync(path.join(spritesPath, file));
169169 }
170170 }
171171
@@ -206,7 +206,7 @@ router.post('/upload-zip', async (request, response) => {
206206 const existingFile = files.find(file => path.parse(file).name === path.parse(filename).name);
207207
208208 if (existingFile) {
209209 fs.rmSyncunlinkSync(path.join(spritesPath, existingFile));
210210 }
211211
212212 // Write sprite buffer to disk
@@ -215,7 +215,7 @@ router.post('/upload-zip', async (request, response) => {
215215 }
216216
217217 // Remove uploaded ZIP file
218218 fs.rmSyncunlinkSync(spritePackPath);
219219 return response.send({ count: sprites.length });
220220 } catch (error) {
221221 console.error(error);
@@ -251,7 +251,7 @@ router.post('/upload', async (request, response) => {
251251 // Remove existing sprite with the same label
252252 for (const file of files) {
253253 if (path.parse(file).name === spriteName) {
254254 fs.rmSyncunlinkSync(path.join(spritesPath, file));
255255 }
256256 }
257257
@@ -261,7 +261,7 @@ router.post('/upload', async (request, response) => {
261261 // Copy uploaded file to sprites folder
262262 fs.cpSync(spritePath, pathToFile);
263263 // Remove uploaded file
264264 fs.rmSyncunlinkSync(spritePath);
265265 return response.sendStatus(200);
266266 } catch (error) {
267267 console.error(error);
src/util.js+1 -1
@@ -419,7 +419,7 @@ export function removeOldBackups(directory, prefix, limit = null) {
419419 break;
420420 }
421421
422422 fs.rmSyncunlinkSync(oldest);
423423 }
424424 }
425425}