u
This commit is contained in:
@@ -4,7 +4,7 @@ import { getStore } from '../db/store.js';
|
||||
import env from '../config/env.js';
|
||||
import { getDefaultSkills } from './skill.js';
|
||||
|
||||
const FULL_HASH_REGEX = /^[a-fA-F0-9]{64}$/;
|
||||
const FULL_HASH_REGEX = /^[a-zA-Z0-9]{8}$/;
|
||||
const VIRTUAL_IMAGE_FOLDERS = new Set(['image', 'images']);
|
||||
|
||||
export function getMimeType(filePath) {
|
||||
@@ -55,18 +55,26 @@ export function getMimeType(filePath) {
|
||||
export function extractFullHash(p) {
|
||||
if (typeof p !== 'string' || !p.trim()) return null;
|
||||
const clean = p.trim().replace(/^vfs:\/+/i, '').replace(/^([a-zA-Z]:|\/)+/, '');
|
||||
const parts = clean.split('/');
|
||||
const parts = clean.split('/').filter(Boolean);
|
||||
if (parts.length === 0) return null;
|
||||
|
||||
const first = parts[0].toLowerCase();
|
||||
const last = parts[parts.length - 1];
|
||||
const ext = path.extname(last).toLowerCase();
|
||||
const withoutExt = last.replace(/\.[a-zA-Z0-9]+$/, '');
|
||||
if (FULL_HASH_REGEX.test(withoutExt)) {
|
||||
return withoutExt.toLowerCase();
|
||||
}
|
||||
for (const part of parts) {
|
||||
const seg = part.replace(/\.[a-zA-Z0-9]+$/, '');
|
||||
if (FULL_HASH_REGEX.test(seg)) {
|
||||
return seg.toLowerCase();
|
||||
|
||||
// Under virtual image folder (e.g. image/aB1cD2eF, images/aB1cD2eF.avif)
|
||||
if (VIRTUAL_IMAGE_FOLDERS.has(first)) {
|
||||
if (parts.length === 2 && FULL_HASH_REGEX.test(withoutExt)) {
|
||||
return withoutExt;
|
||||
}
|
||||
}
|
||||
|
||||
// Direct hash (e.g. "aB1cD2eF" or "aB1cD2eF.avif")
|
||||
if (parts.length === 1 && FULL_HASH_REGEX.test(withoutExt) && (!ext || ext === '.avif')) {
|
||||
return withoutExt;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user