{"_id":"@delicity/capacitor-thermal-printer","_rev":"26-ea1c4d94aa12edb6bca3c61628ef378e","name":"@delicity/capacitor-thermal-printer","dist-tags":{"latest":"8.5.2"},"versions":{"7.0.0":{"name":"@delicity/capacitor-thermal-printer","version":"7.0.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.0.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/your-org/capacitor-thermal-printer#readme","bugs":{"url":"https://github.com/your-org/capacitor-thermal-printer/issues"},"dist":{"shasum":"b741714c65c145d1501e6183600d25a923f4c0a8","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.0.0.tgz","fileCount":100,"integrity":"sha512-XQerUgd9sjpSJ0C1p+RqDEzz3F0gvTNZSccH7VjXjATWdb4rk22Da4/IjBTlaIxN/izhA6bdQXhVeH9NEDH2OQ==","signatures":[{"sig":"MEUCICI0hQrrMSOejqjWfHUesHM1zQgv6gPOdhiUDgsqWaf4AiEA3Rzu44VwaCPY+dDRubPjYkPiLgB241ik98j8jkakhA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":576489},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"df03a3a574d9268fef79368b58cbd9b4e36fa0b6","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/your-org/capacitor-thermal-printer.git","type":"git"},"_npmVersion":"10.8.2","description":"Plugin Capacitor d'impression thermique multi-marques (ESC/POS, Epson, Star, Brother, Zebra) par image, avec découverte agrégée et reconnexion automatique.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.0.0_1781436252186_0.3111054787796168","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@delicity/capacitor-thermal-printer","version":"7.0.1","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.0.1","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"c2f74514ea26f6a3a1cf118212f2953fb0cbf898","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.0.1.tgz","fileCount":105,"integrity":"sha512-XtwI3A/FUkqmmwO1/KyZy9imhTAcrNoRyEDKKXcj/HFyMfwj/tD06zQnP6qIIfggE2KahEQJ+4+S9SAAyYQMIQ==","signatures":[{"sig":"MEQCIBA6QDNojj+Gfw8a7KuWar8dsBMNlF045N1Cs1EFnaF2AiBEoPmxGVCZ0l9nY5J5QN6oSJv+dqIWoVfnpbhqd7uRDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":604261},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"60bbf47c61183286a8f36c78e88ab7d27b2a5619","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.0.1_1781440721265_0.19603286681918908","host":"s3://npm-registry-packages-npm-production"}},"7.0.3":{"name":"@delicity/capacitor-thermal-printer","version":"7.0.3","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.0.3","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"82cd361dd55ee62801e01f554c155867f99d9d90","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.0.3.tgz","fileCount":107,"integrity":"sha512-LKPzSDrY25Z5RLqs4CYsxwLEXd+1br39XQ20UTYdQO2SsGB5Nz/qpf4DUce0Oc4wHEJNNQryTDebddbWYSdRbw==","signatures":[{"sig":"MEUCIENTdlkJsUXdITRMtPEyc0QKmvHoSoc/NCW2lDA7yQtqAiEAyC4Eo+hthaKjX+aRnpsnplAC8s43pfeGINewiEw6jcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614796},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"12540eba894a3424922fe2b80a807eeed95b45fd","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.0.3_1781461784500_0.13803908420299082","host":"s3://npm-registry-packages-npm-production"}},"7.0.4":{"name":"@delicity/capacitor-thermal-printer","version":"7.0.4","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.0.4","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"d3b7b04fb540fb51bafc9b305e764e50c65b78e7","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.0.4.tgz","fileCount":109,"integrity":"sha512-CzaiZy7EPqN/EgykZ72QwRIzPgBjLFmqcKLlkCUjdzEFoM/zu+AHg6ViuU/7fZB2pTsRwvhs4UiFdBn1ma3R9g==","signatures":[{"sig":"MEUCIQCa99sSK3Y7FXmftooVk6jdo4CV4XpIO7ovyXWNvJC8fQIgQWbyjF7FP5ENBTfmI6xl5rsOo6ZFfQfHeYwnpDntPHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":644775},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"6746d3e8ad61b39dae5165d13d26c014d1dafa68","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.0.4_1781529418995_0.3312234813767143","host":"s3://npm-registry-packages-npm-production"}},"7.0.7":{"name":"@delicity/capacitor-thermal-printer","version":"7.0.7","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.0.7","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"44f5553e6108bd5ac0078f595296e3eb9c7d0ac8","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.0.7.tgz","fileCount":109,"integrity":"sha512-K0xt3RuQ6P62HKRf18P9yCJc2RVUm37SC2HVDmyOO/XMbD27oGHcPQlTYabm6psRc6NMoIXlkntdZ/m07dvOJQ==","signatures":[{"sig":"MEUCIQCkVWeAkPkyDgIc+gGer5PosJxMt5AbWp4o6gM/yuXwTgIgPQmInlK9EngjGnA9uDrJ6hfxyQ84hzmS4+bbdcddJGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":652701},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"955731a47d701de5d0d50e2a34c27f7250a96d9a","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.0.7_1781783633254_0.11709383341364021","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@delicity/capacitor-thermal-printer","version":"7.1.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.1.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"94a3963ba84c1cbdb4106331a6dd43f2d35a24da","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.1.0.tgz","fileCount":109,"integrity":"sha512-TH9GBOyd6N64sYlH4wWvzxrwqcBYjDcGRZ+dICiJNSvwH/1QzgbHBeKjZzqnzEKLnhyC7AmPRK1+8ib3+xU7/g==","signatures":[{"sig":"MEUCIQCBr2D8Fq2zx1AYDsoeE8sbNiWcsqEYYgJn8VTeN2wffQIgbxHFl83ATCTe1fqxN6vgxmOLEgS9XF+ttjuxtd5+61A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":664047},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"da9306cbd5b526984031030cc138ad870beb6291","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.1.0_1781787069992_0.05964557738312126","host":"s3://npm-registry-packages-npm-production"}},"7.1.1":{"name":"@delicity/capacitor-thermal-printer","version":"7.1.1","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.1.1","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"18bb626b270f2ff7db65f5f176ff42677065245d","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.1.1.tgz","fileCount":109,"integrity":"sha512-tLIWZiag5IJEnfWqx2rPzC+vcM6geoYxBLUCN854zgl5KdK9u3L0gf+RBAgTo9mE2ET9ZS0A5mGlUL9youGTyA==","signatures":[{"sig":"MEQCIBPv3ARde5/hplczXFE4jKhzQwqWFkfbvMGH/cr5HQmQAiB4zBSa9l9F/qiKEXVKpTuZZFCWRCH1QWoWyUk6qWcaTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":665472},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"0e02918397adc78de7c556c5a1fa207563892d60","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.1.1_1781796033303_0.38929657925032424","host":"s3://npm-registry-packages-npm-production"}},"7.1.2":{"name":"@delicity/capacitor-thermal-printer","version":"7.1.2","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.1.2","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"5b07f41fecdf29fbef96e5c4745c95fd5ce8984b","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.1.2.tgz","fileCount":109,"integrity":"sha512-xriGp4dzeWSrlMryvJj5gK7iNV8WwENfADq+NNiQ3rJU0XDynzCGbmNf4YH8Mnn0RZ4JIQwmTtkRVlMxt2GsKQ==","signatures":[{"sig":"MEUCIQDo1h78IRmipSbi3GEQPzvr2z6JuVZYkIdXj1sslrxfFwIgSOesj92VlfD9CZkp2LCoJiwuPtmX3xP74hBhDzvynts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":667034},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"fb799e6f64bacb55918f3b58c2b527b0fc26db1b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.1.2_1781819278786_0.09303323589387524","host":"s3://npm-registry-packages-npm-production"}},"7.1.3":{"name":"@delicity/capacitor-thermal-printer","version":"7.1.3","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.1.3","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"9df6c1aa92ea3d6482fca77233c7c0a57141b8ba","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.1.3.tgz","fileCount":109,"integrity":"sha512-rf/4FIONo9rVNs5LAEkvD+qJ6WQ8IVCbh9Sg6e7L9Si9PM31+MeDGU7SE5hauz8sNehhR32lfrTt6Ue9CXJ+Vg==","signatures":[{"sig":"MEUCIQDMSJzjq6KYyrv8+JEUfodPjjfUq8eW/OnDf2gqIMkdZgIgbkprL/FNAhp24KxBddQnaSHNfIyTvsqS52JYyrwuOAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":671229},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"2077fb22e7a2afe4b2b1a0ef9a0a795efe350096","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.1.3_1781858477996_0.0642772654263839","host":"s3://npm-registry-packages-npm-production"}},"7.1.4":{"name":"@delicity/capacitor-thermal-printer","version":"7.1.4","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.1.4","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"48ea9fc05ab8c782d514ffa5a753fc0b0564c18c","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.1.4.tgz","fileCount":109,"integrity":"sha512-EAw1cTOyQD7ucXtbwtELBb8HOPRoAEQOe74HyGJKl3l4iNBUcxepCZbP7Dt3XT6OCL5NFNi67ZjfvPPxktNq0w==","signatures":[{"sig":"MEQCIEwSHVtzdTEB+y7Wq6eeN93RmVRuh1fIfX6fIn6SfF25AiALrw46m984f2DKMWokkt0k3xjSK351ggtZlneIQpFyuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":672939},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"c7d89c5e119c5b4800271947008e4fe72533e3c8","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.1.4_1781860298823_0.21761312794764676","host":"s3://npm-registry-packages-npm-production"}},"7.1.5":{"name":"@delicity/capacitor-thermal-printer","version":"7.1.5","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@7.1.5","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"e1811b2384b51d66c294ec98a7ee0333e074b1c5","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-7.1.5.tgz","fileCount":109,"integrity":"sha512-M8/4KS3QCamAYrsflZG4UQXNgED1SPgx4M8154agpXka+YyJDXn44uG2XFSefQoucueVHnMXZQIBVx816vHtzA==","signatures":[{"sig":"MEQCIAzWsOHHkt81BRbiQV/nqLCeSZNoLdIGolNmwCywuZENAiAhTSkn+UqwTHN+H8aioxT+sFkwytB2rLMIB9X+r938Ig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687361},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=20.0.0"},"gitHead":"d09124b22fc0b5f2e95a083acffb5ae58738e588","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 7 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.6.6","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0 <8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_7.1.5_1782120376782_0.9763765171481367","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@delicity/capacitor-thermal-printer","version":"8.0.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.0.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"27dca734fa643f492f5b6112b7d4bb2d8f6d652e","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.0.0.tgz","fileCount":109,"integrity":"sha512-JaO4XhWv44JPDrHCYfJFzU99aDYdsqbZ4QJtYcRxPVCsz+XwkZ2SlA8NGmDjwkOxurlQrtbBNdW/2xnsFYUKmQ==","signatures":[{"sig":"MEYCIQDLfeRm2maFjNJbe8c+eIKMVZwMfYb1CQPpmK3oQiLY+gIhAPdYWQB6BNtohOquDL5LOJHST+DLOm9M6uGoZV2lQhbG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687540},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"db4489c772fe7692beb4e247d23a71a89ca433a5","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.0.0_1782123485524_0.8563284091998868","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@delicity/capacitor-thermal-printer","version":"8.0.1","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.0.1","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"efd460ba55e23e22c2a85f7c35c28bdfadb68eee","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.0.1.tgz","fileCount":109,"integrity":"sha512-JVP9TAENik2lJR5v/g7/sdcrMz8tfCT3+OreQoYMNKNni2dBWgxfjlXfX+IcfezfGh/JS+BGvzeGFK0fasm0fw==","signatures":[{"sig":"MEYCIQDNcyVvkQuSGYxATIR4DHDiRnQRUHA4QT1S8H43KCUn9AIhAMWK4Jnrrk+RSTWxVw/v7+N+N0oNtn/9WSc0OVFDJfPx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":689665},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"aeb48e5c5fb54ad8b1c25258421da8f3d1ed3fd8","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.0.1_1782126067010_0.919531829898802","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@delicity/capacitor-thermal-printer","version":"8.0.2","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.0.2","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"730163cf6e733fe570c43cf40407c65bf15a732e","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.0.2.tgz","fileCount":109,"integrity":"sha512-kcS63qoh91IjN9ZUSt19HQDWNlTcelMQm/PBwVl8rP7Q+B/agxV5l3bekpDMgg3NLIYmdRF8EQeWjyKLYIfvTQ==","signatures":[{"sig":"MEUCIQDT6Xi3ePBaNtCq/lO3ppPx63R2ukaqkm8XY5EGfRWviQIgE3mxRvb+ROVIPsYCBnGFKxOFQBOQ71O/AJ2Uwr5rDIY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":690174},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"861142a0eb5bf3c6b804d1c3deeda3826e49e825","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.0.2_1782126334203_0.0015419432987797688","host":"s3://npm-registry-packages-npm-production"}},"8.0.3":{"name":"@delicity/capacitor-thermal-printer","version":"8.0.3","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.0.3","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"39ea94f48b5581d7cc8807f2cf6b68f3ef4ef736","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.0.3.tgz","fileCount":109,"integrity":"sha512-eKNU5fsJUxrUekLCzCPZ8J11HkJze3Dvroio2LQBkqLUo3Hjg9M9l7Xrxr8LdgA+cIqJ5odrA27SsLQuYWU/QA==","signatures":[{"sig":"MEYCIQDfOd8u2zEFTb3GXwenA40rlf99aeoeRVRaxN9Qq73zPAIhAOSWUhkUMXEV28/dVkl6jPni/uD214dL4tZZrn4GBIYC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691568},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"21aa15c5111b241f0949ac27bce9a81499afb5d8","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.0.3_1782134700686_0.23686088546940454","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@delicity/capacitor-thermal-printer","version":"8.1.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.1.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"b5dd476d51533685ad59e919aef2e82133b7b82c","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.1.0.tgz","fileCount":109,"integrity":"sha512-m3uh6nCH6lEnXzeR6TlX4X87Zv6xip9CkTuu/PSREh5vRgVzZQkAbgp5cLWtgDu3kwu/ZSNaGp6pfNK13ujyUQ==","signatures":[{"sig":"MEQCIG/YMGEdGqZVttVi/6LmwuGtoakZZsHGGds4W7N/WQ1SAiAiAqYO1pojaJqpg4Deuezfo2PpnQKqB15BlKHcyMJ1mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695596},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"2087eb747b471d0ed096dbefc4732091bc2e48ae","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.1.0_1782212481929_0.7365990354564467","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"@delicity/capacitor-thermal-printer","version":"8.2.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.2.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"a0ba275d18ced1a9331ce7898cbf546105ce3cb1","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.2.0.tgz","fileCount":109,"integrity":"sha512-xQlXxhEewVeyoOSa5IdHXGKL2PPluFu+zjmROLb+WY3JuTFUPXfO53cqO9abesg2UQeKcr6qfYhsYF/XgJLThw==","signatures":[{"sig":"MEUCIQCdLB7+hb5tRh64x35pKx3VA0OUKSUJyXRL0s3iQATkfgIgWoFhWrg2IuiOo/e6ASYkcUKHu5luJ2ohV2hRwrJp8hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":697324},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"e3126b5b104353277449fe3a198782afcd42acc7","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.2.0_1784021674912_0.5800812685669983","host":"s3://npm-registry-packages-npm-production"}},"8.2.1":{"name":"@delicity/capacitor-thermal-printer","version":"8.2.1","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.2.1","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"8dd1b1138e1ee566127223172129156029a669ed","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.2.1.tgz","fileCount":109,"integrity":"sha512-yz/nFvW+SOyZcAt8gnHl8GXMg76mJLhsnmBoqNqfiGOgEAQvkGMugKywUPkE1QFMsk7qgBmXCRQFL8CInyiDqw==","signatures":[{"sig":"MEQCIDMxss4uexjYUp3WYmka7fzfWEEHH+WD1iTzGrEz4wYvAiBpNYTAWpBRLUKUieB7fBugbVWbi3bxJJK6ikcOFWX5KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":705198},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"ab039175f256359f7a2cc2a27e52b6153c490892","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.2.1_1784279232640_0.5147745181257879","host":"s3://npm-registry-packages-npm-production"}},"8.2.2":{"name":"@delicity/capacitor-thermal-printer","version":"8.2.2","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.2.2","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"48230d73d6c67089f750fc3132d72a7f0960e695","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.2.2.tgz","fileCount":109,"integrity":"sha512-OJHze0htQujsReXDoyP+jmZ+JIrzJQV0O1NApBRsJYOZs0bHvu4YP/Kp6ufL0wmz/mY9bqRfGhlwXM/d0v3bXA==","signatures":[{"sig":"MEQCIBdvajXVjrUp+kaym3X3g/sqhvbsA+4ZmRpzMIws/4EvAiADgF5BKdG/Ghd5ul5GwssJtjVkvYaUkIAP1NMo2J7ihw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707471},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"86af457db9748edc8f8fec8ba4a66e0362e3a4f6","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.2.2_1784283313710_0.9455104656508937","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"name":"@delicity/capacitor-thermal-printer","version":"8.3.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.3.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"962ad627edd6703772dd6397e36f9ada11083b72","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.3.0.tgz","fileCount":109,"integrity":"sha512-FahqG2omuYYR4p6liX3ajOksdXRIdWU2xIk2ZE0EQuE+CyZvm9SPmlu1i/l3abCYY/+80v4QYq+5it1ZLdxteQ==","signatures":[{"sig":"MEUCIEF8dciZ99x6D0Ot1OtCz0TjEX6NXv3p3s+nAm6ZUrbPAiEAwPTjljaB7JtcuLYSw5IskiSbLLxc2NpzaYvqZyl2P7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712595},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"35fd78adb3994650ea0d66320ab8618424e72a5b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.3.0_1788250474838_0.5262745588644224","host":"s3://npm-registry-packages-npm-production"}},"8.3.1":{"name":"@delicity/capacitor-thermal-printer","version":"8.3.1","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.3.1","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"821830bde28412d433c47e52550ef21d1ab2baa9","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.3.1.tgz","fileCount":110,"integrity":"sha512-hBelXo763aSaqZ4T4HIN2ssHkfrAc56/po/3BdUVTM+9UOXGiEF4Ka5JA2LkjyQlF+M7oGbZ44VtFKrkYaaQig==","signatures":[{"sig":"MEUCIEFbE1+2lreLc5CCWqF5PTDCMin8jlX3CdBFEtyYU+DAAiEA4KWiCN7poGt/ilPhgfZOirCR05/vWuVhlJg16uj0Dt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG7X/yWoGRcGNFihicT1aLb3aRtFPrJqoJVkGhyJs+YxAiBQlvdLaut4hjYWKBItgFaUUmJiHWJgvccV/t3dQL3i5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":720076},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"79fb3fcd379ce39735f53a0a8b3c30172fe200ba","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.3.1_1790182895168_0.702017824054959","host":"s3://npm-registry-packages-npm-production"}},"8.3.2":{"name":"@delicity/capacitor-thermal-printer","version":"8.3.2","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.3.2","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"c3e6737907fd78f4ff2fbfbf59caa41559562c71","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.3.2.tgz","fileCount":110,"integrity":"sha512-fMsbENA8OEpfEQLhKsuXYrfKk+xaBIcaq4yoL83PeE4dfPl8Ug0OKx+nHMxQKMI/c5qWlHlCXmIMC3VCAm74tg==","signatures":[{"sig":"MEQCIGe4OstZsZKREXIVsnvdXIhC9ZAoqj3HJ2nNfXOWfaM9AiAtOXLRN2AuyLMkdWL03wvhUtqzIYZmXJzM69gIp7l5Hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFhGpbu+i0oCJIFuiD6+6KU7tXAutmDgT/651EDkrBJTAiEA1eRZ2USSlzAajvwg+GpoblKAlNk452b5VqQ7G/VzZEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":727879},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"b1d490cefa6d28f29eb4f1ad9e25964e7a140db1","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.3.2_1790759085580_0.44477837839260026","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"@delicity/capacitor-thermal-printer","version":"8.4.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.4.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"14b10572b68cc6952f8e6a1d2d8c5ddf2aff3133","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.4.0.tgz","fileCount":110,"integrity":"sha512-NOwJVBICztpdAiWhlDNLjnf0niG8ZJTKbK8L+1EiO/LwV/oRggyyDJhylgYwYWfCecO35jtuas399u5a36wgNw==","signatures":[{"sig":"MEYCIQCjdgF0haisiivn4wQ8wSRk7oMXJiDyaXn+0ghPxc0ANQIhANxqnekmxokj5vxmUEbpF2KK5dARB2InFGnEcqBJ9WqC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBuDseDFpHYk6r0DyEmtrOAClX0VnpQQG1xKkLEqZgLHAiEAw0Fiht4T4Vq5PsDkse/7F1CtE7mEZnHyWWKcxuOjsP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734873},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"9ca84240defc618d07bba177fe2c8ab92038e40c","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.4.0_1790763773244_0.31346972056191147","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"@delicity/capacitor-thermal-printer","version":"8.5.0","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.5.0","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"7435c0e6f17f57beca03703c77bc57f3c63afc33","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.5.0.tgz","fileCount":110,"integrity":"sha512-Gr4ohXE4LJZCd8Nss7MRyBNfAS7R9rFG0lh5/2kjOgcG/KUbwfhYFC5pgwOPP1pVgLTjTK3WKWsnftsX9hhupA==","signatures":[{"sig":"MEQCICqRrYgW5wlb8EgINhSkj45oaLiNIqwunQ5EVp5zuHmxAiBQG9Xxi0f6b5xQgvQR5ZtFZjxHQnrNwco09mYNHHy2eA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDTEYpkVc3dJ5MJkSYHuzdOvBFHScrUUgvUjkcFDWjU2gIgHs6wHasvPcJA82p/h9MLZ/AJVvj17988ooO+kaQ7SIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":737157},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"5a9585d248efb534bae09088a0267cee4ca140ff","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.5.0_1790766469617_0.4650139430502569","host":"s3://npm-registry-packages-npm-production"}},"8.5.1":{"name":"@delicity/capacitor-thermal-printer","version":"8.5.1","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"author":{"name":"Delicity"},"license":"MIT","_id":"@delicity/capacitor-thermal-printer@8.5.1","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"12ce899dc243fe18c3f3a1a10e2c3d1d5e75bbb3","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.5.1.tgz","fileCount":110,"integrity":"sha512-sbUpT9uPs0GlxF+5BAj846HAWa/PiGAd/NbekmGSSDTp6IbM7O6Yv2P3bkysASR3J1TtaHSE8zFNcJ4VQbDoKA==","signatures":[{"sig":"MEYCIQCbj1OW0LizBtAOCzDmajeUtthiBmzp+HcTz+GWdb9eoQIhANmXy+H0Xct2RDr0Y4yq+FvmHWIXtJoiiX4trNYbzBVX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBKtI+3qkqLXZdxmOk5ZuBFn51AbZ9WFn1EcCIDn0710AiEA7O9NnJr9gNXICC6k6fK9r4ZqKvfvjglHM0PDlKw/cfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":748339},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"8cc97331254d668245917115c239489e2102ec56","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-thermal-printer_8.5.1_1790771337686_0.43432446680085524","host":"s3://npm-registry-packages-npm-production"}},"8.5.2":{"_id":"@delicity/capacitor-thermal-printer@8.5.2","bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"dist":{"shasum":"80db4678d61a933deb292bfdc5659d502cbf8652","tarball":"https://registry.npmjs.org/@delicity/capacitor-thermal-printer/-/capacitor-thermal-printer-8.5.2.tgz","fileCount":110,"integrity":"sha512-H43BqHJgx4kAc2jV9KwReSk2iFil2K0G9tsAV2VNzFj/8DWOmVIy58kg5KFHl08lg5SjZ6Jr/yssAQr+90SL/w==","signatures":[{"sig":"MEUCIDmJH0QwYLpzdVmXRmRDaWxAgB2Z+L6NNdW6W2OsYtDoAiEAmxb6hD99CAGp8hbCmHkQtVO+5rzwXkrk3+TYKHU75Uc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEU5CSGxFMi1njNoinsMwlEML8qPGIoNXYXl4k+/hwuJAiBQydnkXjVlJqcWlCvZeKDNY2Kqf+8acU25UdTsJpKkzg=="}],"unpackedSize":749750},"main":"dist/plugin.cjs.js","name":"@delicity/capacitor-thermal-printer","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Delicity"},"module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"662b0367155976059d959e58e85ba409b9f67c8d","license":"MIT","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","test":"vitest run","build":"npm run clean && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api ThermalPrinterPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","test:watch":"vitest","verify:ios":"xcodebuild -scheme DelicityCapacitorThermalPrinter -destination generic/platform=iOS build","verify:web":"npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","printer:virtual":"node scripts/virtual-printer.mjs"},"version":"8.5.2","_npmUser":{"name":"delicity","email":"kevin@delicity.com"},"homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"_npmVersion":"10.8.2","description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","directories":{},"maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"sideEffects":false,"_nodeVersion":"20.20.2","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.1.3","rollup":"^4.62.0","vitest":"^2.1.9","prettier":"^3.4.2","typescript":"~5.4.5","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^8.0.0","@vitest/coverage-v8":"^2.1.9","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0 <9.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-thermal-printer_8.5.2_1790773886021_0.0821654440605506"}}},"time":{"created":"2026-06-14T11:24:12.074Z","modified":"2026-09-30T13:11:26.322Z","7.0.0":"2026-06-14T11:24:12.388Z","7.0.1":"2026-06-14T12:38:41.464Z","7.0.3":"2026-06-14T18:29:44.669Z","7.0.4":"2026-06-15T13:16:59.183Z","7.0.7":"2026-06-18T11:53:53.412Z","7.1.0":"2026-06-18T12:51:10.173Z","7.1.1":"2026-06-18T15:20:33.462Z","7.1.2":"2026-06-18T21:47:58.978Z","7.1.3":"2026-06-19T08:41:18.177Z","7.1.4":"2026-06-19T09:11:38.970Z","7.1.5":"2026-06-22T09:26:16.942Z","8.0.0":"2026-06-22T10:18:05.705Z","8.0.1":"2026-06-22T11:01:07.238Z","8.0.2":"2026-06-22T11:05:34.370Z","8.0.3":"2026-06-22T13:25:00.880Z","8.1.0":"2026-06-23T11:01:22.143Z","8.2.0":"2026-07-14T09:34:35.062Z","8.2.1":"2026-07-17T09:07:12.829Z","8.2.2":"2026-07-17T10:15:13.923Z","8.3.0":"2026-09-01T08:14:34.999Z","8.3.1":"2026-09-23T17:01:35.266Z","8.3.2":"2026-09-30T09:04:45.666Z","8.4.0":"2026-09-30T10:22:53.344Z","8.5.0":"2026-09-30T11:07:49.712Z","8.5.1":"2026-09-30T12:28:57.779Z","8.5.2":"2026-09-30T13:11:26.131Z"},"bugs":{"url":"https://github.com/kevinfavv/CapacitorThermalPrinter/issues"},"author":{"name":"Delicity"},"license":"MIT","homepage":"https://github.com/kevinfavv/CapacitorThermalPrinter#readme","keywords":["capacitor","plugin","native","thermal-printer","escpos","epson","star","brother","zebra","receipt","bluetooth","ble","tcp"],"repository":{"url":"git+https://github.com/kevinfavv/CapacitorThermalPrinter.git","type":"git"},"description":"@delicity/capacitor-thermal-printer — multi-brand thermal/receipt/label printing for Capacitor 8 (ESC/POS, Epson, Star, Brother, Zebra), image-based, with aggregated discovery and automatic reconnection.","maintainers":[{"name":"delicity","email":"kevin@delicity.com"}],"readme":"# @delicity/capacitor-thermal-printer\n\n> Capacitor **7** plugin for **thermal / receipt / label printing** — **multi-brand** (ESC/POS, Epson, Star, Brother, Zebra), **image-based**, with **aggregated discovery**, **deduplication**, **automatic reconnection** and a **single JavaScript API**.\n\nFor **any Capacitor app that needs to print** — point of sale, receipts, order tickets, shipping/label printing, kitchen slips, etc. The user taps \"Add a printer\", picks one from a list, runs a test print, and never has to touch the phone's Bluetooth/Wi-Fi settings again.\n\n**Requires Capacitor 8** · Android (**`minSdk 26`**, `compileSdk 36`, JDK 21) · iOS 15+ / Xcode 26+.\n\n> 🚧 **Work in progress.** This plugin is under active development and **not yet\n> validated on real hardware** (see [Tested on real hardware](#tested-on-real-hardware)).\n> APIs may still change. **Contributions are very welcome** — bug reports, hardware\n> test feedback, and PRs. See [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n---\n\n## Contents\n\n1. [Philosophy](#philosophy)\n2. [Installation](#installation)\n3. [Usage patterns](#usage-patterns)\n4. [Manufacturer SDKs](#manufacturer-sdks)\n5. [Permissions](#permissions)\n6. [Public API](#public-api)\n7. [Types](#types)\n8. [Image printing flow](#image-printing-flow)\n9. [Image processing](#image-processing)\n10. [Aggregated discovery & adapter priority](#aggregated-discovery--adapter-priority)\n11. [Default printer & reconnection](#default-printer--reconnection)\n12. [Normalized errors](#normalized-errors)\n13. [Android / iOS differences](#android--ios-differences)\n14. [Image cache & logs/diagnostics](#image-cache--logsdiagnostics)\n15. [Full example](#full-example)\n\n---\n\n## Philosophy\n\n- **The app generates an image of what to print** (PNG/bitmap — receipt, ticket, label). It never sends structured text to the SDKs.\n- The plugin **receives an image**, **normalizes** it (resize → grayscale → 1-bit + dithering), **converts** it to the adapter's format, and **sends** it.\n- **One JS API.** Internally, an **adapter-based architecture** routes to the right implementation.\n- **There is no universal protocol**: each family has its adapter. Adapter priority guarantees the best choice.\n\n> 📁 Internal architecture, repo layout, tests and the contribution guide live in\n> [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n## Installation\n\n> Package: **`@delicity/capacitor-thermal-printer`** · Capacitor 8 · Android (**`minSdk 26`**, `compileSdk 36`, JDK 21) · iOS 15+ / Xcode 26+.\n\n### Step by step\n\n**1. Install the package**\n\n```bash\nnpm install @delicity/capacitor-thermal-printer\n```\n\n**2. Sync the native projects**\n\n```bash\nnpx cap sync\n```\n\nThis adds the Android library to your Gradle project and runs `pod install` for iOS.\n\n**3. iOS — add the required keys to your app's `Info.plist`**\n\nAt minimum, for Wi-Fi/network printers (see [Permissions](#permissions) for the full list):\n\n```xml\n<key>NSLocalNetworkUsageDescription</key>\n<string>Discover and print to printers on the local network.</string>\n<key>NSBonjourServices</key>\n<array>\n  <string>_pdl-datastream._tcp</string>\n  <string>_printer._tcp</string>\n</array>\n```\n\nThen re-sync: `npx cap sync ios`.\n\n**4. Android — set `minSdk 26`.** The bundled **Star** SDK (`stario10`) requires API 26, so\nyour app's `android/variables.gradle` must have `minSdkVersion = 26` (otherwise the manifest\nmerge fails). Otherwise nothing to configure: the plugin ships its own manifest permissions\n(Bluetooth, network, USB feature) — just call `requestPermissions()` before scanning\n(needed for Bluetooth on Android 12+).\n\n**5. (Optional) Add a manufacturer SDK** — only if you use **Epson / Star / Brother /\nZebra** via their native SDK. Generic ESC/POS (Wi-Fi/Bluetooth/USB) and Star work\nwithout extra setup; the others need a one-time binary drop. See\n[Manufacturer SDKs](#manufacturer-sdks) and [`docs/SDK_INTEGRATION.md`](docs/SDK_INTEGRATION.md).\n\n**6. Use it**\n\n```ts\nimport { ThermalPrinter } from '@delicity/capacitor-thermal-printer';\n\nawait ThermalPrinter.requestPermissions();\nconst { printers } = await ThermalPrinter.discoverPrinters({ timeoutMs: 8000 });\n// printImage auto-connects on demand (autoReconnect defaults to true) — no connectPrinter needed.\nawait ThermalPrinter.printImage({\n  printerId: printers[0].id,\n  image: { filePath: '/data/.../receipt.png' },\n});\n```\n\n✅ **Works out of the box** for **Wi-Fi/Ethernet ESC/POS** printers — no SDK required.\nFor Bluetooth/USB/BLE and brand SDKs, see the sections below.\n\n## Usage patterns\n\nPick the pattern that fits your UX. **You don't have to call `connectPrinter` to print** —\n`printImage` / `printText` connect on demand (`autoReconnect: true` by default).\n\n### A. One-shot — simplest\n\nDiscover, then print by `printerId`. The print call connects automatically.\n\n```ts\nconst { printers } = await ThermalPrinter.discoverPrinters({ timeoutMs: 8000 });\nawait ThermalPrinter.printImage({ printerId: printers[0].id, image: { filePath } });\n// → resolves the printer (from the latest discovery) + connects + prints\n```\n\n### B. Default printer — recommended for repeated use\n\n**Once** (setup): let the user pick a printer, then connect & persist it as default\n**only if the connection succeeds**. **Afterwards** (even after an app restart): print\nwithout a `printerId` — the default profile is used and reconnected automatically.\n\n```ts\n// Setup (once), e.g. after a successful test print:\nconst { connected } = await ThermalPrinter.connectPrinter({ printerId, setAsDefault: true });\n\n// Daily use — no printerId, no connect:\nawait ThermalPrinter.printImage({ image: { filePath } });        // uses default + auto-reconnect\nawait ThermalPrinter.printText({ items });                       // same\n```\n\n### C. Explicit connect — to test, read paper size, or show status\n\nUse `connectPrinter` when you need a result **before** printing: a connection test,\nthe **paper size**, or a status badge.\n\n```ts\nconst { connected, paper } = await ThermalPrinter.connectPrinter({ printerId });\nif (!connected) return showError('Unreachable');\nshowLabel(paper?.widthMm ? `${paper.widthMm} mm` : 'Unknown width');\nconst status = await ThermalPrinter.getPrinterStatus({ printerId }); // paper/cover/online\nawait ThermalPrinter.printImage({ printerId, image: { filePath } });\n```\n\n### D. Manual connection management — `autoReconnect: false`\n\nOpt out of on-demand connection (you manage `connectPrinter` / `disconnectPrinter`\nyourself). Printing while disconnected then rejects with `CONNECTION_FAILED`.\n\n```ts\nawait ThermalPrinter.connectPrinter({ printerId });\nawait ThermalPrinter.printImage({ printerId, image: { filePath }, autoReconnect: false });\nawait ThermalPrinter.disconnectPrinter({ printerId });\n```\n\n### Good to know\n\n- **Resolution**: a `printerId` must be resolvable — either freshly discovered (this\n  session) or a saved profile. Without `printerId`, the **default printer** is used.\n- **Connection lifecycle**: connections are opened **just-in-time** before printing,\n  not held open permanently. Reconnection uses exponential backoff (3 attempts).\n- **`connectPrinter` is optional** — needed only to test, set the default, or read the\n  paper size. See [Default printer & reconnection](#default-printer--reconnection).\n- **Profiles**: `getSavedPrinters` / `getDefaultPrinter` / `setDefaultPrinter` /\n  `removePrinter` manage persisted printers.\n\n## Manufacturer SDKs\n\nThe plugin supports **Star, Epson, Brother, Zebra** via their native SDK, **optionally**:\nit compiles and works **without any SDK** (generic ESC/POS over TCP/Bluetooth/USB/BLE),\nand each brand **activates automatically** as soon as its binary is present.\n\n> **Why isn't it 100% automatic on `npm install`?**\n> Only SDKs published to a standard package repository download by themselves.\n> The others are distributed only through the manufacturer's portal and their\n> **license forbids redistribution** — so they cannot be put on Maven Central /\n> CocoaPods, nor committed here. The consuming app downloads the binary itself\n> (accepting the license); the plugin provides all the code to use it.\n\n| Brand | Android | iOS | What to do in the app |\n|---|---|---|---|\n| **Star** | ✅ auto (Maven Central) | ✅ auto (SPM) | Add the `StarXpand-SDK-iOS` SPM package (iOS). Android: nothing. |\n| **Brother** | ⛔ manual `.aar` | ✅ auto (CocoaPods) | `pod 'BRLMPrinterKit'` (iOS); drop `BrotherPrintLibrary.aar` (Android). |\n| **Epson** | ⛔ manual `.jar`+`.so` | ⛔ manual xcframework | Drop `ePOS2.jar` (Android) / `libepos2.xcframework` (iOS). |\n| **Zebra** | ⚠️ private Maven (token) or `.jar` | ⛔ manual xcframework | Zebra token or `ZSDK_ANDROID_API.jar`; `ZSDK_API.xcframework` (iOS). |\n\n**➡️ Full installation guide: [`docs/SDK_INTEGRATION.md`](docs/SDK_INTEGRATION.md).**\nIt covers everything per brand — official download links, where to drop each binary,\nthe Star SPM package, CocoaPods/Podfile setup, the Zebra private Maven repo, iOS\nmodule names, and the git-ignored test folder.\n\n### Tested on real hardware\n\n> ✅ **Verified on real hardware (iOS + Android):** Epson over Bluetooth & network, **Star**,\n> generic BLE, and generic Bluetooth Classic (Android) all print full tickets end-to-end —\n> logo + styled text + **scannable QR** + cut. See the on-device notes in\n> [`CONTRIBUTING.md`](CONTRIBUTING.md#verified-on-a-real-iphone-manual-june-2026).\n\n| Target | On-device tested (iOS) | On-device tested (Android) |\n|---|---|---|\n| **Epson** — Bluetooth (MFi iOS / ePOS2 Android) | ✅ **Tested on iOS** | ✅ **Tested on Android** |\n| **Epson** — Network (Wi-Fi / TCP) | ✅ **Tested on iOS** | ✅ **Tested on Android** |\n| **Generic BLE** ESC/POS (e.g. MP210) | ✅ **Tested on iOS** | ✅ **Tested on Android** |\n| **Generic Bluetooth Classic** (SPP) ESC/POS | ⛔ **Blocked on iOS** (no Apple API) | ✅ **Tested on Android** |\n| Network ESC/POS (Wi-Fi / Bonjour / TCP 9100) | ✅ **Tested on iOS** | ✅ **Tested on Android** |\n| **Star** (StarXpand SDK) | ✅ **Tested on iOS** | ✅ **Tested on Android** |\n| **Brother** | ⏳ planned | ⏳ planned |\n| **Zebra** | ⏳ planned | ⏳ planned |\n\n> Bluetooth/BLE and MFi can't run on the iOS Simulator, so these are validated **manually on\n> device**; the TCP path is covered automatically in CI. On **iOS, generic Bluetooth Classic\n> (SPP) is not possible** (Apple exposes no API) — use **BLE**, **MFi (brand SDK)** or **Wi-Fi**.\n> On **Android**, generic Bluetooth Classic (SPP) **is** supported and tested.\n\n### Know which SDKs are active (runtime)\n\n`getActiveSdks()` reports, at the current moment, which adapters/SDKs are available:\n\n```ts\nimport { ThermalPrinter } from '@delicity/capacitor-thermal-printer';\n\nconst { sdks } = await ThermalPrinter.getActiveSdks();\n// [\n//   { adapter: 'escpos', label: 'Generic ESC/POS', available: true,  requiresSdk: false, transports: ['wifi','ethernet','bluetooth','usb'] },\n//   { adapter: 'star',   label: 'Star StarXpand',  available: true,  requiresSdk: true,  transports: ['wifi','bluetooth','ble','usb'] },\n//   { adapter: 'epson',  label: 'Epson ePOS2',     available: false, requiresSdk: true,  transports: ['wifi','bluetooth','usb'] },\n//   ...\n// ]\nconst active = sdks.filter(s => s.available).map(s => s.label);\n```\n\nUseful for a \"Printer diagnostics\" screen, or to only show the brands actually\navailable on the device.\n\n## Permissions\n\n### Android (plugin `AndroidManifest.xml`, already provided)\n\n| Permission | Use | API |\n|---|---|---|\n| `BLUETOOTH_SCAN` (`neverForLocation`) | BT/BLE scan | 31+ |\n| `BLUETOOTH_CONNECT` | SPP/GATT connection | 31+ |\n| `BLUETOOTH`, `BLUETOOTH_ADMIN` | scan/connection | ≤30 |\n| `ACCESS_FINE_LOCATION` | BLE scan | ≤30 |\n| `INTERNET`, `ACCESS_NETWORK_STATE`, `ACCESS_WIFI_STATE` | TCP 9100 + network detection | all |\n| `CHANGE_WIFI_MULTICAST_STATE` | mDNS | all |\n| `android.hardware.usb.host` (feature) | USB | optional |\n\nCall `requestPermissions()` before the first scan.\n\n### Bluetooth adapter state\n\n`isBluetoothEnabled()` reports whether the device Bluetooth **adapter is powered on**\n(distinct from permissions — a granted permission does not mean Bluetooth is on):\n\n```ts\nconst { enabled } = await ThermalPrinter.isBluetoothEnabled();\nif (!enabled) {\n  // Prompt the user to turn Bluetooth on before printing to a BT printer.\n}\n```\n\n- **Android**: real `BluetoothAdapter` state.\n- **iOS**: CoreBluetooth state (`poweredOn`); the first call may take ~300 ms to settle\n  and never shows the system power alert.\n- **Web**: always `false`.\n\n### iOS (host app `Info.plist`)\n\n```xml\n<key>NSLocalNetworkUsageDescription</key>\n<string>Discover and print to printers on the local network.</string>\n<key>NSBonjourServices</key>\n<array>\n  <string>_pdl-datastream._tcp</string>\n  <string>_printer._tcp</string>\n  <string>_ipp._tcp</string>\n</array>\n<!-- If BLE is enabled: -->\n<key>NSBluetoothAlwaysUsageDescription</key>\n<string>Connect to compatible Bluetooth printers.</string>\n<!-- If using an MFi SDK (Epson/Star/Zebra Bluetooth): declare the protocols -->\n<key>UISupportedExternalAccessoryProtocols</key>\n<array>\n  <string>com.epson.escpos</string>\n  <string>jp.star-m.starpro</string>\n</array>\n```\n\n## Public API\n\n```ts\nimport { ThermalPrinter } from '@delicity/capacitor-thermal-printer';\n\nThermalPrinter.discoverPrinters(options?)   // → { printers: DiscoveredPrinter[] }\nThermalPrinter.connectPrinter({ printerId, timeoutMs?, forceAdapter?, setAsDefault?, preferSdk? })  // → { connected, paper: PaperInfo | null, printerId, adapter }\nThermalPrinter.disconnectPrinter({ printerId })                          // → void\nThermalPrinter.setDefaultPrinter({ printerId })                          // → { profile }\nThermalPrinter.getDefaultPrinter()                                       // → { profile | null }\nThermalPrinter.getSavedPrinters()                                        // → { profiles }\nThermalPrinter.removePrinter({ printerId })                              // → void\nThermalPrinter.printImage(options)                                       // → PrintResult (await = printed)\nThermalPrinter.printText({ items, ... })                                 // → PrintResult (await = printed)\nThermalPrinter.getPrinterStatus({ printerId? })                          // → PrinterStatus\nThermalPrinter.requestPermissions() / checkPermissions()                 // → PermissionStatus\nThermalPrinter.isBluetoothEnabled()                                      // → { enabled: boolean } (adapter on/off)\nThermalPrinter.startStatusMonitor({ printerId, intervalMs? })            // background status polling\nThermalPrinter.stopStatusMonitor({ printerId })\nThermalPrinter.getActiveSdks()                                           // → { sdks: SdkStatus[] }\nThermalPrinter.getDebugLog()                                             // → { log: DebugLogEntry[] }\n\n// Events\nThermalPrinter.addListener('printerFound', e => ...)        // incremental scan results\nThermalPrinter.addListener('discoveryComplete', e => ...)\nThermalPrinter.addListener('statusChange', e => ...)        // PrinterStatus (paper/cover/connection)\nThermalPrinter.addListener('printJobStatus', e => ...)      // JobState: pending/printing/hold/completed/failed\n```\n\n> **`connectPrinter({ setAsDefault: true })`** sets the default printer **only if\n> the connection succeeds** (`connect` + `setDefaultPrinter` in one step, without\n> persisting an unreachable printer).\n\n> **Automatic switch to the vendor SDK (`preferSdk`, default `true`).** When a printer\n> connected over **native Bluetooth/BLE** is also recognised by a vendor SDK (Epson, Star,\n> Brother — same address, or same unambiguous name), `connectPrinter` closes the native\n> channel and reconnects through the SDK. Typical case: a never-paired Star is only visible to\n> the native scanner; the native connection pairs it, and the Star SDK (which lists paired\n> devices only) can then drive it — the Star would not understand ESC/POS. Costs a 5 s SDK scan\n> on native Bluetooth connects; falls back to native if the SDK fails. Ignored with\n> `forceAdapter`. Use the returned **`printerId`** afterwards (`setAsDefault` applies to it).\n\n> **Paper size on connect.** `connectPrinter` also returns `paper` — the paper size\n> deduced from the printer's model (**best-effort**), or **`null`** when it can't be\n> determined (typical for generic ESC/POS). The printer hardware does not report\n> remaining/printed length; only the width is derivable. Example:\n> ```ts\n> const { connected, paper } = await ThermalPrinter.connectPrinter({ printerId });\n> // paper?.widthMm → 80 | 58 | … | null\n> if (paper?.widthMm) showLabel(`${paper.widthMm} mm`); else showLabel('Unknown width');\n> ```\n\n### Print completion / `await`\n\n`printImage` and `printText` are **async and resolve when physical printing is done**\n(best-effort) — so you can `await` them. Details:\n\n- **Manufacturer SDKs**: the promise waits for the SDK's **completion callback** (max reliability).\n- **ESC/POS TCP/SPP**: a **one-way** channel → the promise resolves once all bytes are\n  **written and flushed**. A **status pre-check** runs before sending: paper empty /\n  cover open → job set to `hold` + rejection `PAPER_EMPTY` / `COVER_OPEN`\n  (`retryable: true`).\n\n## Types\n\n```ts\ntype PrinterTransport = 'wifi' | 'ethernet' | 'bluetooth' | 'ble' | 'usb';\ntype PrinterAdapterId = 'escpos' | 'epson' | 'star' | 'brother' | 'zebra' | 'rawTcp';\n\ninterface PrinterCapabilities {\n  paperWidthMm: number;        // 58 | 80 | 112…\n  printableDots: number;       // 384 (58mm) | 576 (80mm) | 832 (112mm)\n  dpi: number;                 // 203 most of the time\n  supportsCut: boolean;\n  supportsCashDrawer: boolean;\n  supportsStatus: boolean;\n  supportsRasterImage: boolean;\n  supportsQrCode?: boolean;\n  supportsBarcode?: boolean;\n}\n\ninterface DiscoveredPrinter {\n  id: string;                  // stable id: \"wifi:192.168.1.50\", \"bluetooth:AA:BB:..\"\n  name: string;\n  brand?: string; model?: string;\n  transport: PrinterTransport;\n  adapter: PrinterAdapterId;   // resolved by priority\n  address: string;             // \"ip:port\" | MAC | UUID\n  capabilities?: Partial<PrinterCapabilities>;\n  discoveredBy?: PrinterAdapterId[];\n  isSdk: boolean;              // true if driven by a vendor SDK (Epson/Star/Brother/Zebra)\n  lastSeenAt: number;\n  isDefault: boolean;\n  isConnected: boolean;\n}\n\ninterface PrinterProfile {\n  id: string;\n  adapter: PrinterAdapterId;\n  transport: PrinterTransport;\n  address: string;\n  brand?: string; model?: string;\n  name: string;\n  capabilities: PrinterCapabilities;\n  defaultPrintOptions?: PrintRenderOptions;\n  adapterMeta?: Record<string, string | number | boolean>;\n  isDefault: boolean;\n  createdAt: number; updatedAt: number;\n}\n\n// ---- States / statuses ----\ntype ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error';\ntype PaperStatus = 'ok' | 'near_end' | 'empty' | 'unknown';\ntype JobState = 'pending' | 'printing' | 'hold' | 'completed' | 'failed' | 'canceled';\ntype HoldReason = 'paper_empty' | 'paper_near_end' | 'cover_open' | 'buffer_full' | 'offline' | 'unknown';\n\ninterface PrinterStatus {\n  id: string;\n  connection: ConnectionState;\n  online: boolean;\n  paper: PaperStatus;\n  coverOpen?: boolean;\n  errorCode?: PrintErrorCode;\n  rawStatus?: string;\n  checkedAt: number;\n}\n\ninterface PrintJobStatus {\n  jobId: string;\n  printerId: string;\n  state: JobState;\n  holdReason?: HoldReason;\n  progress?: number;        // 0..1 (best-effort)\n  errorCode?: PrintErrorCode;\n  message?: string;\n  updatedAt: number;\n}\n\ninterface PrintResult {\n  success: boolean;\n  printerId: string;\n  adapter: PrinterAdapterId;\n  jobId: string;            // correlated with printJobStatus events\n  state: JobState;          // 'completed' on success\n  bytesSent?: number;\n  durationMs?: number;\n  status?: PrinterStatus;\n}\n\n// ---- Image print options ----\ntype DitheringAlgorithm = 'none' | 'floyd_steinberg' | 'atkinson';\ntype ImageAlign = 'left' | 'center' | 'right';\n\ninterface ImageSource { filePath?: string; url?: string; forceFetch?: boolean; base64?: string; } // exactly one source key; forceFetch only applies to url\n\ninterface PrintRenderOptions {\n  widthDots?: number;       // otherwise derived from the profile (384/576/832)\n  resize?: boolean;         // default true; false = image already at the right width\n  grayscale?: boolean;      // default true; false = image already 1-bit (simple threshold)\n  threshold?: number;       // default 128 (when dithering 'none' or grayscale false)\n  dithering?: DitheringAlgorithm; // default 'floyd_steinberg'\n  align?: ImageAlign;       // default 'center'\n  invert?: boolean;\n  cut?: boolean;            // default true\n  feedLines?: number;       // default 3\n  openCashDrawer?: boolean;\n  copies?: number;          // default 1\n}\n\ninterface PrintImageOptions {\n  printerId?: string;       // otherwise the default printer\n  image: ImageSource;\n  render?: PrintRenderOptions;\n  timeoutMs?: number;       // default 15000\n  autoReconnect?: boolean;  // default true\n}\n\n// ---- SDK status ----\ninterface SdkStatus {\n  adapter: PrinterAdapterId;\n  label: string;\n  available: boolean;       // detected & usable right now\n  requiresSdk: boolean;     // true for brand SDKs, false for built-in adapters\n  transports: PrinterTransport[];\n}\n\n// ---- Paper size (returned by connectPrinter, best-effort) ----\ninterface PaperInfo {\n  widthMm: number | null;        // 58 | 80 | 112 … (null if unknown)\n  printableDots: number | null;  // 384 | 576 | 832 … @203 dpi (null if unknown)\n  dpi: number | null;            // 203 when width is known\n  source: 'model' | 'sdk' | 'profile';\n}\n\n// ---- Events ----\ninterface PrinterFoundEvent { printer: DiscoveredPrinter; }\ninterface DiscoveryCompleteEvent { printers: DiscoveredPrinter[]; failedSources?: string[]; }\ninterface StatusChangeEvent { status: PrinterStatus; }\ninterface PrintJobStatusEvent { job: PrintJobStatus; }\n```\n\n### `printText` types\n\n```ts\ntype TextAlign = 'left' | 'center' | 'right';\ntype Underline = 'none' | 'single' | 'double';\ntype EscPosFont = 'A' | 'B';\ntype CodePage = 'CP437' | 'CP850' | 'CP858' | 'WPC1252' | 'CP852' | 'CP866'; // Latin/Western: WPC1252\ntype CjkEncoding = 'GB18030' | 'GBK' | 'Shift_JIS' | 'EUC-KR' | 'Big5';       // Chinese/Japanese/Korean\ntype TextEncoding = CodePage | CjkEncoding; // default 'WPC1252' (French/Latin). CJK -> printer FS & mode (native)\ntype BarcodeSymbology = 'UPC_A'|'UPC_E'|'EAN13'|'EAN8'|'CODE39'|'ITF'|'CODABAR'|'CODE93'|'CODE128';\ntype HriPosition = 'none' | 'above' | 'below' | 'both';\ntype QrErrorCorrection = 'L' | 'M' | 'Q' | 'H';\n\ninterface TextStyle {\n  align?: TextAlign;\n  bold?: boolean;\n  underline?: Underline;\n  font?: EscPosFont;\n  widthMultiplier?: number;   // 1..8\n  heightMultiplier?: number;  // 1..8\n  doubleStrike?: boolean;\n  invert?: boolean;           // white on black\n  upsideDown?: boolean;\n  rotate90?: boolean;\n  letterSpacing?: number;     // dots\n  lineSpacing?: number;       // dots (otherwise default)\n  encoding?: TextEncoding;    // per-item encoding (Latin page or CJK charset)\n  codePage?: CodePage;        // deprecated alias of `encoding` (Latin only)\n  codePageId?: number;        // raw ESC t n override (Latin only)\n  newline?: boolean;          // default true\n}\n\ntype PrintItem =\n  | { type: 'text'; value: string; style?: TextStyle }\n  | { type: 'feed'; lines?: number }\n  | { type: 'cut'; mode?: 'full' | 'partial'; feedBefore?: number }\n  | { type: 'divider'; char?: string; columns?: number; style?: Pick<TextStyle,'align'|'bold'|'font'> }\n  | { type: 'qrcode'; value: string; size?: number; errorCorrection?: QrErrorCorrection; align?: TextAlign }\n  | { type: 'barcode'; value: string; symbology: BarcodeSymbology; height?: number; width?: number; hri?: HriPosition; align?: TextAlign }\n  | { type: 'cashDrawer'; pin?: 2 | 5 }\n  | { type: 'image'; image: ImageSource; render?: PrintRenderOptions }\n  | { type: 'raw'; bytesBase64: string };\n\ninterface PrintTextOptions {\n  printerId?: string;\n  items: PrintItem[];\n  encoding?: TextEncoding;    // text encoding: Latin page ('WPC1252' default) or CJK ('GB18030'…)\n  defaultCodePage?: CodePage; // deprecated alias of `encoding` (Latin only)\n  cut?: boolean;              // default false\n  feedLines?: number;         // default 3\n  timeoutMs?: number;\n  autoReconnect?: boolean;\n  paperWidthMm?: number;      // per-call paper width (58/80/112) → divider columns / layout\n}\n```\n\n## Image printing flow\n\n`printImage` performs exactly:\n\n1. Resolve the target printer (otherwise the **default printer**).\n2. Check whether it is connected.\n3. If not, **automatic reconnection** (when `autoReconnect`, default `true`).\n4. **Open the image** (`filePath` > `url` (cached) > `base64`).\n5. **Resize** to the exact width (`widthDots` or the profile's capabilities).\n6. **Grayscale** (BT.601 luminance), flatten onto a white background (transparent PNG).\n7. **Dithering** (Floyd-Steinberg by default, Atkinson, or threshold).\n8. **Convert to the adapter** (`GS v 0` raster for ESC/POS, `addImage` for SDKs, ZPL for Zebra).\n9. **Send** (in transport-sized chunks).\n10. **Feed + cut** (if supported) + optional cash drawer.\n11. **Normalized result** + best-effort status read.\n\n```ts\nawait ThermalPrinter.printImage({\n  // printerId omitted → default printer\n  image: { filePath: '/data/.../receipt.png' },   // recommended in production\n  render: { dithering: 'floyd_steinberg', cut: true, feedLines: 3, align: 'center' },\n  timeoutMs: 15000,\n  autoReconnect: true,\n});\n```\n\n### Concrete image-printing examples\n\n```ts\n// 1) Local file (RECOMMENDED in production) — most reliable/performant\nawait ThermalPrinter.printImage({ image: { filePath: '/data/user/0/app/files/receipt.png' } });\n\n// 2) Remote URL — downloaded and cached by the plugin\nawait ThermalPrinter.printImage({\n  image: { url: 'https://api.example.com/receipts/123/render.png' },\n  render: { dithering: 'atkinson', cut: true },\n});\n\n// 2b) Remote URL but bypass the cache (always re-download, then refresh the cache)\nawait ThermalPrinter.printImage({\n  image: { url: 'https://api.example.com/receipts/123/render.png', forceFetch: true },\n});\n\n// 3) base64 (handy for tests, less performant)\nawait ThermalPrinter.printImage({ image: { base64: 'iVBORw0KGgoAAAANS...' } });\n\n// 4) Image ALREADY rendered server-side at the right width and as 1-bit black/white:\n//    disable resize + grayscale → pixel-perfect, faster send.\nawait ThermalPrinter.printImage({\n  image: { filePath: '/data/.../receipt_576px_1bit.png' },\n  render: { resize: false, grayscale: false, cut: true },\n});\n\n// 5) Target a specific printer + 2 copies + cash drawer\nawait ThermalPrinter.printImage({\n  printerId: 'wifi:192.168.1.50',\n  image: { filePath: '/data/.../receipt.png' },\n  render: { widthDots: 576, copies: 2, openCashDrawer: true },\n});\n\n// 6) await = printed (best-effort); typed error handling\ntry {\n  const res = await ThermalPrinter.printImage({ image: { filePath } });\n  console.log('Printed', res.jobId, res.bytesSent, 'bytes in', res.durationMs, 'ms');\n} catch (e) {\n  if ((e as PrinterError).code === PrintErrorCode.PAPER_EMPTY) alert('Out of paper');\n}\n```\n\n> **`resize`/`grayscale` are optional**: if your server already produces a PNG at the\n> exact width (`576px`/`384px`) and 1-bit black/white, pass\n> `render: { resize: false, grayscale: false }`. The plugin then applies a simple\n> threshold (no dithering) and does not alter the geometry.\n\n## Text printing (`printText`)\n\n`printText` accepts an **ordered array of typed items**. Ideal for purely textual\noutput, with no server-side pre-rendering.\n\n```ts\nawait ThermalPrinter.printText({\n  defaultCodePage: 'WPC1252', // Western/Latin-1 accents\n  items: [\n    { type: 'text', value: 'MY STORE', style: { align: 'center', bold: true, widthMultiplier: 2, heightMultiplier: 2 } },\n    { type: 'text', value: '12 Main Street', style: { align: 'center' } },\n    { type: 'divider', char: '-' },\n    { type: 'text', value: 'Order #1042', style: { bold: true } },\n    { type: 'text', value: 'Item A...........12.00' },\n    { type: 'text', value: 'Item B........... 2.00' },\n    { type: 'divider' },\n    { type: 'text', value: 'TOTAL  14.00', style: { align: 'right', bold: true, widthMultiplier: 2 } },\n    { type: 'feed', lines: 1 },\n    { type: 'qrcode', value: 'https://example.com/order/1042', size: 6, align: 'center' },\n    { type: 'barcode', value: '4006381333931', symbology: 'EAN13', hri: 'below' },\n    { type: 'cut', mode: 'partial', feedBefore: 3 },\n  ],\n});\n```\n\n### Supported styles (ESC/POS) and SDK mapping\n\n| Style / item | ESC/POS (escpos, rawTcp) | Epson ePOS2 | Star StarXpand | Brother | Zebra (ZPL) |\n|---|:--:|:--:|:--:|:--:|:--:|\n| `align` (left/center/right) | ✅ `ESC a` | ✅ | ✅ | ✅ | ✅ (field) |\n| `bold` | ✅ `ESC E` | ✅ | ✅ | ✅ | ⚠️ via font |\n| `underline` (single/double) | ✅ `ESC -` | ✅ | ✅ | ⚠️ | ❌ |\n| `font` A/B | ✅ `ESC M` | ✅ | ✅ | ⚠️ | ⚠️ |\n| `widthMultiplier`/`heightMultiplier` (1..8) | ✅ `GS !` | ✅ | ✅ | ✅ | ✅ (size) |\n| `doubleStrike` | ✅ `ESC G` | ✅ | ⚠️ | ❌ | ❌ |\n| `invert` (white/black) | ✅ `GS B` | ✅ | ✅ | ⚠️ | ✅ (reverse) |\n| `upsideDown` | ✅ `ESC {` | ✅ | ⚠️ | ❌ | ✅ |\n| `rotate90` | ✅ `ESC V` | ✅ | ⚠️ | ⚠️ | ✅ |\n| `letterSpacing` | ✅ `ESC SP` | ✅ | ⚠️ | ❌ | ⚠️ |\n| `lineSpacing` | ✅ `ESC 3` | ✅ | ✅ | ⚠️ | ✅ |\n| `codePage` (accents) | ✅ `ESC t` | ✅ | ✅ | ✅ | ✅ |\n| `qrcode` | ✅ `GS ( k` | ✅ native | ✅ native | ✅ native | ✅ `^BQ` |\n| `barcode` (EAN/CODE128…) | ✅ `GS k` | ✅ native | ✅ native | ✅ native | ✅ `^BC`… |\n| `divider` / `feed` / `cut` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `cashDrawer` | ✅ `ESC p` | ✅ | ✅ | ⚠️ | ⚠️ |\n| `image` (inline) | ✅ raster | ✅ addImage | ✅ actionPrintImage | ✅ printImage | ✅ ^GF |\n| `raw` (raw bytes) | ✅ | ⚠️ | ⚠️ | ❌ | ⚠️ (raw ZPL) |\n\n> ✅ supported · ⚠️ partial/model-dependent equivalent · ❌ not available.\n> Styles not supported by an SDK are **ignored gracefully** (never a hard failure).\n> The reference ESC/POS encoder lives in `src/core/escpos-text.ts` (tested), mirrored\n> in Kotlin (`EscPosTextEncoder.kt`) and Swift (`EscPosTextEncoder.swift`).\n\n> **`printText` per brand.** It works on all brands: ESC/POS and **Star** (both\n> platforms) and **Epson Android** map text to a native builder; **Epson iOS,\n> Brother, Zebra** fall back automatically to **rendering the items to an image**\n> (`TextRasterizer`) printed via the SDK's image path. See `docs/SDK_INTEGRATION.md`.\n\n## Client-side events & status\n\n```ts\n// Job tracking: pending → printing → completed | hold | failed\nconst jobSub = await ThermalPrinter.addListener('printJobStatus', ({ job }) => {\n  switch (job.state) {\n    case 'printing': showSpinner(job.progress); break;\n    case 'hold':     toast(job.holdReason === 'paper_empty' ? 'Add paper' : 'Cover open'); break;\n    case 'completed': hideSpinner(); break;\n    case 'failed':   alert(`Failed: ${job.errorCode}`); break;\n  }\n});\n\n// Printer status (connection, paper, cover)\nconst statusSub = await ThermalPrinter.addListener('statusChange', ({ status }) => {\n  updateBadge(status.online, status.paper); // 'ok' | 'near_end' | 'empty' | 'unknown'\n});\n\n// ... later\nawait jobSub.remove();\nawait statusSub.remove();\n```\n\n## Image processing\n\n- **Reference widths @203 dpi**: `58mm → 384 px`, `80mm → 576 px`, `112mm → 832 px`. Some 80mm models print `640 px`: **always prefer the profile/SDK `printableDots`** when known.\n- **Pipeline**: proportional resize to the target width → grayscale → binarization.\n- **Dithering**:\n  - `none` (threshold): crisp for text/lines.\n  - `floyd_steinberg` (**default**): logos/photos.\n  - `atkinson`: more contrast, pleasant on receipts.\n- **ESC/POS raster**: `GS v 0` command (`0x1D 0x76 0x30 m xL xH yL yH data`), width padded to a multiple of 8, MSB = leftmost pixel. Testable reference implementation in `src/core/imaging.ts`, mirrored in Kotlin (`ImageProcessor.kt`) and Swift (`ImageProcessor.swift`).\n\n## Aggregated discovery & adapter priority\n\nSeveral sources run **in parallel**: Epson/Star/Brother/Zebra SDKs, TCP 9100 scan, Bluetooth Classic (Android), BLE (allowlisted services), USB (Android). Results are **merged** by stable `id` and **deduplicated**.\n\n**Priority rules** (`priority.ts` / `AdapterPriority.kt` / `.swift`):\n\n| Case | Selected adapter | Score |\n|---|---|---|\n| Printer recognized by an official SDK | `epson` / `star` / `brother` | 880–900 |\n| **Zebra** | **`zebra` only** (ESC/POS banned) | 1000 / −1000 |\n| ESC/POS confirmed over Bluetooth (Android) | `escpos` | 620 |\n| ESC/POS confirmed over TCP | `escpos` | 600 |\n| BLE with a usable service | (BLE) | 500 |\n| Unidentified network device | `rawTcp` | 300 |\n\n**SDK wins over the native duplicate.** A printer can show up both through its vendor SDK **and** through a generic native source under a *different* `id` (e.g. an Epson also visible as a Bluetooth Classic device). A second merge pass collapses these: when a native entry shares the **same name OR the same (normalized) address** as an SDK entry, it is folded into the SDK entry (its `discoveredBy` / `isConnected` are merged) and only the SDK entry is returned. Merging only ever goes **native → SDK** (never SDK↔SDK nor native↔native), so two distinct printers of the same model are never hidden.\n\nThe kept entry exposes **`isSdk: boolean`** — `true` when the printer is driven by a vendor SDK (Epson/Star/Brother/Zebra), `false` for the generic native integration (ESC/POS Bluetooth, raw TCP, BLE). Use it client-side to badge \"SDK\" vs \"generic\".\n\n## Default printer & reconnection\n\n- After a **successful test print**, the app calls `setDefaultPrinter({ printerId })`: the plugin **persists a `PrinterProfile`** (id, adapter, transport, address, brand, model, paper width, `printableDots`, dpi, cut options, reconnection metadata).\n- On **startup** or **before printing**, the plugin reloads this profile.\n- **Reconnection is not a permanent connection**: it is attempted **just before `printImage`** (step 3). This avoids keeping a socket/Bluetooth link open needlessly and improves reliability for occasional printing. It uses **exponential backoff** (up to 3 attempts) and detects recovery after a `hold` (paper reloaded / cover closed / back online).\n\n## Normalized errors\n\nEvery rejected promise carries a **stable code** (`error.code`):\n\n`PRINTER_NOT_FOUND`, `PRINTER_OFFLINE`, `CONNECTION_FAILED`, `PERMISSION_DENIED`, `BLUETOOTH_DISABLED`, `WIFI_NOT_CONNECTED`, `PAIRING_REQUIRED`, `UNSUPPORTED_TRANSPORT`, `UNSUPPORTED_PRINTER`, `IMAGE_INVALID`, `IMAGE_TOO_LARGE`, `PRINT_FAILED`, `PAPER_EMPTY`, `COVER_OPEN`, `SDK_NOT_AVAILABLE`, `TIMEOUT`, `UNKNOWN`.\n\n```ts\nimport { PrinterError, PrintErrorCode } from '@delicity/capacitor-thermal-printer';\ntry { await ThermalPrinter.printImage({ image: { filePath } }); }\ncatch (e) {\n  const err = e as PrinterError; // { code, message, detail, retryable }\n  if (err.code === PrintErrorCode.PAPER_EMPTY) showPaperAlert();\n}\n```\n\n## Android / iOS differences\n\n### Android — broad hardware coverage\n- Modern Bluetooth permissions (12+) handled.\n- **Bluetooth Classic / SPP**: supported → covers the very common generic ESC/POS printers. ✅\n- BLE supported (UUID allowlist recommended).\n- Retrieval of **already-paired devices** (instant, no scan).\n- TCP 9100 (Wi-Fi/Ethernet). ✅\n- USB host (optional).\n\n### iOS — Apple constraints\n- ❌ **No generic Bluetooth Classic / SPP.** Apple exposes no API for it; a Classic \"no-name\"\n  BT printer (visible but un-connectable in iOS Settings) **is not addressable** — unless it\n  also exposes a BLE service (many cheap printers are Classic **+** BLE).\n- ✅ **Generic BLE** (CoreBluetooth) — the plugin ships a generic BLE adapter that scans known\n  ESC/POS BLE services, connects and prints. ✅📱 **verified on iPhone** (MP210: logo + text + QR).\n- ✅ **MFi manufacturer SDKs** (Epson/Star/Brother/Zebra) for Bluetooth/MFi. ✅📱 **Epson verified\n  on iPhone** over Bluetooth (MFi). Requires the brand's MFi protocol string in `Info.plist`.\n- ✅ **Wi-Fi TCP** (port 9100) via `Network.framework` → triggers the **Local Network** prompt.\n- ✅ **Epson USB (MFi)** via the ePOS2 SDK — only for Epson models certified to connect to an\n  iPhone/iPad over USB (typically the USB-C ones, e.g. TM-m30II/III). Same `com.epson.escpos`\n  protocol string as Bluetooth. A non-MFi USB printer (e.g. TM-T20II over USB-B) is invisible\n  to iOS. ⚠️ Not yet verified on device.\n- ✅ **Star USB (MFi / iAP)** via StarXpand — only for Star models certified for iPhone/iPad USB\n  (check the model spec sheet, e.g. mC-Print3). Same `jp.star-m.starpro` protocol string as Bluetooth.\n  ⚠️ Not yet verified on device.\n- ❌ **Brother, Zebra: no USB on iOS** (their iOS SDKs only offer Wi-Fi and Bluetooth).\n- ❌ No generic USB host (generic ESC/POS over USB is Android only).\n\n> On iOS, for Bluetooth: **BLE (generic) or MFi (brand SDK)** — never generic Classic/SPP.\n> Wi-Fi works for everyone.\n\n> ⚠️ **App Store submission (MFi printers).** If you ship a **Bluetooth/USB MFi** printer\n> (any brand declared under `UISupportedExternalAccessoryProtocols` in `Info.plist` —\n> `jp.star-m.starpro`, `com.epson.escpos`, `com.zebra.rawport`), Apple **rejects** the app\n> until it is **whitelisted in the manufacturer's MFi Product Plan** and you provide the\n> accessory's **PPID (MFi Product Plan ID)** in App Store Connect ▸ *App Review Information ▸\n> Notes*. This is a manufacturer round-trip (≈1–2 weeks per brand) — **start it before your\n> release date**. Full step-by-step (per-brand forms, what to send, Notes template):\n> [SDK integration ▸ App Store submission: MFi Product Plan whitelisting](docs/SDK_INTEGRATION.md#app-store-submission-mfi-product-plan-whitelisting-ios).\n> Wi-Fi/LAN printers are **not** affected.\n\n## Image cache & logs/diagnostics\n\n- **Cache**: `url` images are downloaded into `cache/thermal-images/` (key = URL hash, 32 MB quota, LRU eviction). The `filePath` mode remains the most reliable. Set `image.forceFetch: true` to bypass the cache and always re-download (the fresh file then replaces the cache entry).\n- **Logs**: in-memory ring buffer (500 lines) + Logcat/os_log. Retrievable via `getDebugLog()` for a \"Diagnostics\" screen attachable to support tickets. Never raw image data (only dimensions/byte counts).\n\n> Implementation status, tests and development setup live in\n> [`CONTRIBUTING.md`](CONTRIBUTING.md) · roadmap in [`ROADMAP.md`](ROADMAP.md).\n\n## Full example\n\n```ts\nimport { ThermalPrinter, PrinterError } from '@delicity/capacitor-thermal-printer';\n\n// 1) Discovery (with incremental results)\nconst sub = await ThermalPrinter.addListener('printerFound', e => {\n  console.log('Found:', e.printer.name, e.printer.adapter);\n});\nawait ThermalPrinter.requestPermissions();\nconst { printers } = await ThermalPrinter.discoverPrinters({ timeoutMs: 8000 });\nawait sub.remove();\n\n// 2) Connect, set as default IF it succeeds, then test print\nconst target = printers[0];\nawait ThermalPrinter.connectPrinter({ printerId: target.id, setAsDefault: true });\nawait ThermalPrinter.printImage({ printerId: target.id, image: { base64: testReceiptBase64 } });\n\n// 3) Later: simple print (default printer + auto reconnection)\nawait ThermalPrinter.printImage({ image: { filePath: '/data/.../receipt.png' } });\n\n// 4) Or styled text printing\nawait ThermalPrinter.printText({\n  items: [\n    { type: 'text', value: 'Thank you!', style: { align: 'center', bold: true } },\n    { type: 'cut' },\n  ],\n});\n```\n\n---\n\n## License\n\nMIT © Delicity\n","readmeFilename":"README.md"}