UNPKG

@mmote/niimblue-node

Version:

Headless clients for niimbluelib. Command line interface, simple REST server are also included.

94 lines (93 loc) 3.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadImageFromFile = exports.loadImageFromUrl = exports.loadImageFromBase64 = exports.printImage = exports.initClient = void 0; const niimbluelib_1 = require("@mmote/niimbluelib"); const fs_1 = __importDefault(require("fs")); const sharp_1 = __importDefault(require("sharp")); const stream_1 = require("stream"); const _1 = require("."); const initClient = (transport, address, debug) => { let client = null; if (transport === "serial") { client = new _1.NiimbotHeadlessSerialClient(); client.setPort(address); } else if (transport === "ble") { client = new _1.NiimbotHeadlessBleClient(); client.setAddress(address); } else { throw new Error("Invalid transport"); } client.on("printprogress", (e) => { console.log(`Page ${e.page}/${e.pagesTotal}, Page print ${e.pagePrintProgress}%, Page feed ${e.pageFeedProgress}%`); }); client.on("heartbeatfailed", (e) => { const maxFails = 5; console.warn(`Heartbeat failed ${e.failedAttempts}/${maxFails}`); if (e.failedAttempts >= maxFails) { console.warn("Disconnecting"); client.disconnect(); } }); if (debug) { client.on("packetsent", (e) => { console.log(`>> ${niimbluelib_1.Utils.bufToHex(e.packet.toBytes())} (${niimbluelib_1.RequestCommandId[e.packet.command]})`); }); client.on("packetreceived", (e) => { console.log(`<< ${niimbluelib_1.Utils.bufToHex(e.packet.toBytes())} (${niimbluelib_1.ResponseCommandId[e.packet.command]})`); }); client.on("connect", () => { console.log("Connected"); }); client.on("disconnect", () => { console.log("Disconnected"); }); } return client; }; exports.initClient = initClient; const printImage = async (client, printTaskName, encoded, options) => { const printTask = client.abstraction.newPrintTask(printTaskName, { density: options.density ?? 3, labelType: options.labelType ?? niimbluelib_1.LabelType.WithGaps, totalPages: options.quantity ?? 1, statusPollIntervalMs: 500, statusTimeoutMs: 8_000, }); try { await printTask.printInit(); await printTask.printPage(encoded, options.quantity ?? 1); await printTask.waitForFinished(); } catch (e) { console.error(e); } await client.abstraction.printEnd(); }; exports.printImage = printImage; const loadImageFromBase64 = async (b64) => { const buf = Buffer.from(b64, "base64"); const stream = stream_1.Readable.from(buf); return stream.pipe((0, sharp_1.default)()); }; exports.loadImageFromBase64 = loadImageFromBase64; const loadImageFromUrl = async (url) => { const { body, ok, status } = await fetch(url); if (!ok) { throw new Error(`Can't fetch image, error ${status}`); } if (body === null) { throw new Error("Body is null"); } return stream_1.Readable.fromWeb(body).pipe((0, sharp_1.default)()); }; exports.loadImageFromUrl = loadImageFromUrl; const loadImageFromFile = async (path) => { const stream = fs_1.default.createReadStream(path); return stream.pipe((0, sharp_1.default)()); }; exports.loadImageFromFile = loadImageFromFile;