import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); try { const { default: sharp } = await import('sharp'); if (process.argv.includes('--require-source') && !Object.keys(require.cache).some(file => /sharp[/\\]src[/\\]build[/\\]Release[/\\].+\.node$/.test(file))) { throw new Error('Expected the source-built Sharp binding; refusing to use a prebuilt fallback'); } for (const format of ['jpeg', 'png', 'webp']) { const input = await sharp({ create: { width: 8, height: 8, channels: 3, background: '#336699' } }).toFormat(format).toBuffer(); const metadata = await sharp(input).metadata(); if (metadata.format !== format || metadata.width !== 8 || metadata.height !== 8) { throw new Error(`${format} encode/decode verification failed`); } } console.log(`Sharp ${sharp.versions.sharp}, libvips ${sharp.versions.vips}: JPEG, PNG and WebP passed.`); } catch (error) { console.error('Sharp image runtime failed:', error); process.exit(1); }