(input: Pick<PastedImageInput, 'mimeType' | 'suggestedName'>, now: Date)
| 2958 | } |
| 2959 | |
| 2960 | function pastedImageFilename(input: Pick<PastedImageInput, 'mimeType' | 'suggestedName'>, now: Date): string { |
| 2961 | const ext = pastedImageExtension(input) |
| 2962 | const rawName = path.basename(input.suggestedName ?? '') |
| 2963 | const nameExt = path.extname(rawName) |
| 2964 | const rawBase = nameExt ? path.basename(rawName, nameExt) : rawName |
| 2965 | const base = rawBase |
| 2966 | .replace(/[\\/:%*?"<>|\[\]#^]/g, '-') |
| 2967 | .replace(/\s+/g, ' ') |
| 2968 | .trim() |
| 2969 | const fallbackBase = `Pasted Image ${pastedImageTimestamp(now)}` |
| 2970 | const finalBase = base && base !== '.' && base !== '..' ? base : fallbackBase |
| 2971 | return `${finalBase}${ext}` |
| 2972 | } |
| 2973 | |
| 2974 | function pastedImageBuffer(data: PastedImageInput['data']): Buffer { |
| 2975 | if (data instanceof ArrayBuffer) return Buffer.from(data) |
no test coverage detected