import { buildEscPosLabelData, buildEscPosTestPrintData } from '../protocols/escPosBuilder' import type { PrinterCandidate, PrinterDriver } from '../types/printer' const GENERIC_ESC_KEYWORDS = [ 'printer', 'print', 'esc', 'escpos', 'pos', 'receipt', 'ticket', ] function scoreByKeywords (device: PrinterCandidate, keywords: string[]): number { const text = `${device.name || ''} ${device.deviceId || ''}`.toLowerCase() let score = 0 keywords.forEach((keyword) => { if (text.includes(keyword)) score += 8 }) return score } export const genericEscDriver: PrinterDriver = { key: 'generic-esc', brand: 'Generic', model: 'ESC/POS', displayName: 'Generic ESC/POS Printer', protocol: 'esc', preferredBleMtu: 20, imageMaxWidthDots: 384, imageDpi: 203, keywords: GENERIC_ESC_KEYWORDS, matches (device) { return scoreByKeywords(device, GENERIC_ESC_KEYWORDS) }, resolveConnectionType (device) { return device.type === 'ble' ? 'ble' : 'classic' }, buildTestPrintData () { return buildEscPosTestPrintData() }, buildLabelData (payload) { return buildEscPosLabelData(payload) }, }