UNPKG

safari-mcp

Version:

Safari browser automation for AI agents — native macOS, zero Chrome overhead. 98 tools via AppleScript + JavaScript.

18 lines (17 loc) • 936 B
// Pixel size of a JPEG straight from its SOF marker — enough to decide whether a screenshot // needs downscaling without decoding it or pulling in an image dependency. export function jpegSize(buf) { if (!buf || buf.length < 4 || buf[0] !== 0xff || buf[1] !== 0xd8) return null; let i = 2; while (i + 9 < buf.length) { if (buf[i] !== 0xff) { i++; continue; } const marker = buf[i + 1]; if (marker === 0xff) { i++; continue; } // fill byte if (marker === 0x01 || marker === 0xd8 || (marker >= 0xd0 && marker <= 0xd7)) { i += 2; continue; } // standalone markers if (marker === 0xda || marker === 0xd9) return null; // scan data / EOI before any SOF const isSOF = marker >= 0xc0 && marker <= 0xcf && marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc; if (isSOF) return { height: buf.readUInt16BE(i + 5), width: buf.readUInt16BE(i + 7) }; i += 2 + buf.readUInt16BE(i + 2); } return null; }