@thermal-label/brother-ql-node 0.0.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/discovery.test.js +141 -68
- package/dist/__tests__/discovery.test.js.map +1 -1
- package/dist/__tests__/integration/print.test.d.ts +2 -0
- package/dist/__tests__/integration/print.test.d.ts.map +1 -0
- package/dist/__tests__/integration/print.test.js +71 -0
- package/dist/__tests__/integration/print.test.js.map +1 -0
- package/dist/__tests__/printer.test.js +214 -208
- package/dist/__tests__/printer.test.js.map +1 -1
- package/dist/discovery.d.ts +39 -4
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +87 -14
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -1
- package/dist/printer.d.ts +38 -15
- package/dist/printer.d.ts.map +1 -1
- package/dist/printer.js +108 -149
- package/dist/printer.js.map +1 -1
- package/package.json +7 -5
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -20
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/integration/print-image.test.d.ts +0 -2
- package/dist/__tests__/integration/print-image.test.d.ts.map +0 -1
- package/dist/__tests__/integration/print-image.test.js +0 -22
- package/dist/__tests__/integration/print-image.test.js.map +0 -1
- package/dist/__tests__/integration/print-text.test.d.ts +0 -2
- package/dist/__tests__/integration/print-text.test.d.ts.map +0 -1
- package/dist/__tests__/integration/print-text.test.js +0 -25
- package/dist/__tests__/integration/print-text.test.js.map +0 -1
- package/dist/__tests__/integration/print-two-color.test.d.ts +0 -2
- package/dist/__tests__/integration/print-two-color.test.d.ts.map +0 -1
- package/dist/__tests__/integration/print-two-color.test.js +0 -28
- package/dist/__tests__/integration/print-two-color.test.js.map +0 -1
- package/dist/__tests__/integration/tcp.test.d.ts +0 -2
- package/dist/__tests__/integration/tcp.test.d.ts.map +0 -1
- package/dist/__tests__/integration/tcp.test.js +0 -20
- package/dist/__tests__/integration/tcp.test.js.map +0 -1
- package/dist/__tests__/tcp-transport.test.d.ts +0 -2
- package/dist/__tests__/tcp-transport.test.d.ts.map +0 -1
- package/dist/__tests__/tcp-transport.test.js +0 -115
- package/dist/__tests__/tcp-transport.test.js.map +0 -1
- package/dist/__tests__/usb-transport.test.d.ts +0 -2
- package/dist/__tests__/usb-transport.test.d.ts.map +0 -1
- package/dist/__tests__/usb-transport.test.js +0 -99
- package/dist/__tests__/usb-transport.test.js.map +0 -1
- package/dist/errors.d.ts +0 -8
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -15
- package/dist/errors.js.map +0 -1
- package/dist/status.d.ts +0 -2
- package/dist/status.d.ts.map +0 -1
- package/dist/status.js +0 -2
- package/dist/status.js.map +0 -1
- package/dist/transport.d.ts +0 -32
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js +0 -120
- package/dist/transport.js.map +0 -1
- package/dist/types.d.ts +0 -13
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
|
@@ -1,216 +1,222 @@
|
|
|
1
|
-
import { describe,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
close: mockClose,
|
|
11
|
-
};
|
|
12
|
-
vi.mock('../transport.js', () => ({
|
|
13
|
-
UsbTransport: {
|
|
14
|
-
open: vi.fn().mockImplementation(() => Promise.resolve(mockTransport)),
|
|
15
|
-
},
|
|
16
|
-
TcpTransport: {
|
|
17
|
-
connect: vi.fn().mockImplementation(() => Promise.resolve(mockTransport)),
|
|
18
|
-
},
|
|
19
|
-
}));
|
|
20
|
-
vi.mock('../discovery.js', () => ({
|
|
21
|
-
listPrinters: vi.fn(() => [
|
|
22
|
-
{
|
|
23
|
-
device: DEVICES.QL_820NWB,
|
|
24
|
-
serialNumber: undefined,
|
|
25
|
-
path: '1.5',
|
|
26
|
-
transport: 'usb',
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { MediaNotSpecifiedError } from '@thermal-label/contracts';
|
|
3
|
+
import { DEVICES, MEDIA } from '@thermal-label/brother-ql-core';
|
|
4
|
+
import { BrotherQLPrinter } from '../printer.js';
|
|
5
|
+
function makeTransport(statusBytes = new Uint8Array(32)) {
|
|
6
|
+
const written = [];
|
|
7
|
+
const transport = {
|
|
8
|
+
get connected() {
|
|
9
|
+
return true;
|
|
27
10
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}));
|
|
35
|
-
vi.mock('@napi-rs/canvas', () => ({
|
|
36
|
-
loadImage: mockLoadImage,
|
|
37
|
-
createCanvas: mockCreateCanvas,
|
|
38
|
-
}));
|
|
39
|
-
beforeEach(() => {
|
|
40
|
-
mockWrite.mockClear().mockImplementation(() => Promise.resolve());
|
|
41
|
-
mockRead.mockClear().mockResolvedValue(new Uint8Array(32).fill(0));
|
|
42
|
-
mockClose.mockClear().mockImplementation(() => Promise.resolve());
|
|
43
|
-
const mockContext = {
|
|
44
|
-
drawImage: vi.fn(),
|
|
45
|
-
getImageData: vi.fn().mockReturnValue({ data: new Uint8Array(400) }),
|
|
11
|
+
write: vi.fn((data) => {
|
|
12
|
+
written.push(new Uint8Array(data));
|
|
13
|
+
return Promise.resolve();
|
|
14
|
+
}),
|
|
15
|
+
read: vi.fn(() => Promise.resolve(statusBytes)),
|
|
16
|
+
close: vi.fn(() => Promise.resolve()),
|
|
46
17
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
18
|
+
return { transport, written };
|
|
19
|
+
}
|
|
20
|
+
function solidRgba(width, height) {
|
|
21
|
+
return {
|
|
22
|
+
width,
|
|
23
|
+
height,
|
|
24
|
+
data: new Uint8Array(width * height * 4).fill(0),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function redRgba(width, height) {
|
|
28
|
+
const data = new Uint8Array(width * height * 4);
|
|
29
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
30
|
+
data[i] = 255;
|
|
31
|
+
data[i + 1] = 0;
|
|
32
|
+
data[i + 2] = 0;
|
|
33
|
+
data[i + 3] = 255;
|
|
34
|
+
}
|
|
35
|
+
return { width, height, data };
|
|
36
|
+
}
|
|
52
37
|
describe('BrotherQLPrinter', () => {
|
|
53
|
-
it('
|
|
54
|
-
const {
|
|
55
|
-
const printer = new BrotherQLPrinter(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
expect(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
expect(
|
|
66
|
-
});
|
|
67
|
-
it('
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
38
|
+
it('exposes adapter metadata', () => {
|
|
39
|
+
const { transport } = makeTransport();
|
|
40
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
41
|
+
expect(printer.family).toBe('brother-ql');
|
|
42
|
+
expect(printer.model).toBe('QL-820NWB');
|
|
43
|
+
expect(printer.device).toBe(DEVICES.QL_820NWB);
|
|
44
|
+
expect(printer.transportType).toBe('usb');
|
|
45
|
+
expect(printer.connected).toBe(true);
|
|
46
|
+
});
|
|
47
|
+
it('print() throws MediaNotSpecifiedError without media or status', async () => {
|
|
48
|
+
const { transport } = makeTransport();
|
|
49
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
50
|
+
await expect(printer.print(solidRgba(64, 64))).rejects.toBeInstanceOf(MediaNotSpecifiedError);
|
|
51
|
+
});
|
|
52
|
+
it('print() encodes a single-colour job for non-colour-capable media', async () => {
|
|
53
|
+
const { transport, written } = makeTransport();
|
|
54
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
55
|
+
await printer.print(solidRgba(64, 64), MEDIA[259]);
|
|
56
|
+
expect(written.length).toBeGreaterThan(0);
|
|
57
|
+
});
|
|
58
|
+
// Find the first raster-row payload of a given opcode/colour in the
|
|
59
|
+
// encoded job. Matches the 3-byte header (opcode, colour, LEN=90) — no
|
|
60
|
+
// other command in encodeJob shares that pattern, so it's unambiguous.
|
|
61
|
+
function firstRasterRow(bytes, opcode, colour) {
|
|
62
|
+
for (let i = 0; i < bytes.length - 3 - 90; i++) {
|
|
63
|
+
if (bytes[i] === opcode && bytes[i + 1] === colour && bytes[i + 2] === 90) {
|
|
64
|
+
return bytes.slice(i + 3, i + 3 + 90);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`no raster row with opcode 0x${opcode.toString(16)} colour 0x${colour.toString(16)}`);
|
|
68
|
+
}
|
|
69
|
+
it('print() horizontally mirrors the rendered bitmap (single-colour)', async () => {
|
|
70
|
+
const { transport, written } = makeTransport();
|
|
71
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
72
|
+
// 16×1 input, all white except the leftmost pixel = black.
|
|
73
|
+
const data = new Uint8Array(16 * 4).fill(0xff);
|
|
74
|
+
data[0] = 0;
|
|
75
|
+
data[1] = 0;
|
|
76
|
+
data[2] = 0;
|
|
77
|
+
await printer.print({ width: 16, height: 1, data }, MEDIA[259]);
|
|
78
|
+
const row = firstRasterRow(written[0], 0x67, 0x00);
|
|
79
|
+
// MEDIA[259] leftMarginPins = 12. After horizontal flip the black pixel
|
|
80
|
+
// sits at bitmap x=15, so the head pin is 12+15=27. Byte 27>>3 = 3,
|
|
81
|
+
// bit 7-(27&7) = 4, mask 0x10. The un-mirrored position would be
|
|
82
|
+
// pin 12 → byte 1 bit 4 = 0x10; assert that's empty.
|
|
83
|
+
expect(row[3]).toBe(0x10);
|
|
84
|
+
expect(row[1]).toBe(0x00);
|
|
85
|
+
});
|
|
86
|
+
it('print() splits the job into ≤1 KB OUT-pipe chunks (firmware flow-control)', async () => {
|
|
87
|
+
// 696×120 two-colour encodes to roughly 24 kB uncompressed — more than
|
|
88
|
+
// enough to require multiple chunks. Each emitted slice must be ≤1024
|
|
89
|
+
// bytes so the printer's input ring buffer has time to drain between
|
|
90
|
+
// bursts. Single libusb writes that exceed the buffer reliably hang
|
|
91
|
+
// the QL-820NWBc firmware mid-print.
|
|
92
|
+
const { transport, written } = makeTransport();
|
|
93
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
94
|
+
await printer.print(solidRgba(696, 120), MEDIA[251]);
|
|
95
|
+
expect(written.length).toBeGreaterThan(1);
|
|
96
|
+
for (const w of written) {
|
|
97
|
+
expect(w.length).toBeLessThanOrEqual(1024);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
it('print() horizontally mirrors both planes on two-colour media', async () => {
|
|
101
|
+
const { transport, written } = makeTransport();
|
|
102
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
103
|
+
// 16×1 input. Leftmost pixel red, the rest white.
|
|
104
|
+
const data = new Uint8Array(16 * 4).fill(0xff);
|
|
105
|
+
data[0] = 255; // R
|
|
106
|
+
data[1] = 0; // G
|
|
107
|
+
data[2] = 0; // B
|
|
108
|
+
data[3] = 255; // A
|
|
109
|
+
await printer.print({ width: 16, height: 1, data }, MEDIA[251]);
|
|
110
|
+
// Two-colour: 0x77 0x01 = black row, 0x77 0x02 = red row. The red bit
|
|
111
|
+
// should land at byte 3 / 0x10 just like the single-colour case.
|
|
112
|
+
const redRow = firstRasterRow(written[0], 0x77, 0x02);
|
|
113
|
+
expect(redRow[3]).toBe(0x10);
|
|
114
|
+
expect(redRow[1]).toBe(0x00);
|
|
115
|
+
});
|
|
116
|
+
it('print() uses detected media from a prior getStatus when media is omitted', async () => {
|
|
117
|
+
const bytes = new Uint8Array(32);
|
|
118
|
+
bytes[10] = 62;
|
|
119
|
+
bytes[11] = 0x0a;
|
|
120
|
+
const { transport, written } = makeTransport(bytes);
|
|
121
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
122
|
+
await printer.getStatus();
|
|
123
|
+
const before = written.length;
|
|
124
|
+
await printer.print(solidRgba(64, 64));
|
|
125
|
+
// print() chunks the OUT pipe; just assert it issued at least one
|
|
126
|
+
// additional write after the status round-trip.
|
|
127
|
+
expect(written.length).toBeGreaterThan(before);
|
|
128
|
+
});
|
|
129
|
+
it('print() splits two-colour bitmap when media carries a palette', async () => {
|
|
130
|
+
const { transport, written } = makeTransport();
|
|
131
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
132
|
+
await printer.print(redRgba(64, 64), MEDIA[251]);
|
|
133
|
+
// Two-colour job header includes the expanded-mode byte sequence —
|
|
134
|
+
// just assert a job was emitted; byte-level details are covered by
|
|
135
|
+
// the core protocol tests.
|
|
136
|
+
expect(written.length).toBeGreaterThan(0);
|
|
137
|
+
});
|
|
138
|
+
it("print() auto-rotates landscape input on 'horizontal' die-cut media", async () => {
|
|
139
|
+
// MEDIA[271] = DK-11201 29×90, defaultOrientation: 'horizontal'.
|
|
140
|
+
// 800×200 landscape RGBA — the heuristic should rotate the bitmap 90°
|
|
141
|
+
// CW so the visual reads along the tape feed direction. Without
|
|
142
|
+
// rotation the encoded job has 200 raster rows; with rotation it has
|
|
143
|
+
// 800. Assert the explicit `rotate: 0` bypass produces a smaller job
|
|
144
|
+
// than the default auto path.
|
|
145
|
+
const { transport: autoTransport, written: autoWritten } = makeTransport();
|
|
146
|
+
const autoPrinter = new BrotherQLPrinter(DEVICES.QL_820NWB, autoTransport, 'usb');
|
|
147
|
+
await autoPrinter.print(solidRgba(800, 200), MEDIA[271]);
|
|
148
|
+
const { transport: bypassTransport, written: bypassWritten } = makeTransport();
|
|
149
|
+
const bypassPrinter = new BrotherQLPrinter(DEVICES.QL_820NWB, bypassTransport, 'usb');
|
|
150
|
+
await bypassPrinter.print(solidRgba(800, 200), MEDIA[271], { rotate: 0 });
|
|
151
|
+
const totalAuto = autoWritten.reduce((acc, b) => acc + b.length, 0);
|
|
152
|
+
const totalBypass = bypassWritten.reduce((acc, b) => acc + b.length, 0);
|
|
153
|
+
expect(totalAuto).toBeGreaterThan(totalBypass);
|
|
154
|
+
});
|
|
155
|
+
it('createPreview() returns two planes on multi-ink media', async () => {
|
|
156
|
+
const { transport } = makeTransport();
|
|
157
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
158
|
+
const preview = await printer.createPreview(redRgba(64, 64), { media: MEDIA[251] });
|
|
159
|
+
expect(preview.planes.map(p => p.name)).toEqual(['black', 'red']);
|
|
160
|
+
expect(preview.assumed).toBe(false);
|
|
161
|
+
});
|
|
162
|
+
it('createPreview() returns one plane on single-ink media', async () => {
|
|
163
|
+
const { transport } = makeTransport();
|
|
164
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
165
|
+
const preview = await printer.createPreview(solidRgba(64, 64), { media: MEDIA[259] });
|
|
166
|
+
expect(preview.planes).toHaveLength(1);
|
|
167
|
+
expect(preview.planes[0].name).toBe('black');
|
|
168
|
+
});
|
|
169
|
+
it('createPreview() falls back to DEFAULT_MEDIA with assumed=true', async () => {
|
|
170
|
+
const { transport } = makeTransport();
|
|
171
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
172
|
+
const preview = await printer.createPreview(solidRgba(64, 64));
|
|
173
|
+
expect(preview.assumed).toBe(true);
|
|
174
|
+
expect(preview.media.id).toBe(259);
|
|
175
|
+
});
|
|
176
|
+
it('createPreview() reuses detected media from a prior getStatus', async () => {
|
|
177
|
+
const bytes = new Uint8Array(32);
|
|
178
|
+
bytes[10] = 62;
|
|
179
|
+
bytes[11] = 0x0a;
|
|
180
|
+
const { transport } = makeTransport(bytes);
|
|
181
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
182
|
+
await printer.getStatus();
|
|
183
|
+
const preview = await printer.createPreview(solidRgba(64, 64));
|
|
184
|
+
expect(preview.assumed).toBe(false);
|
|
185
|
+
expect(preview.media.id).toBe(259);
|
|
186
|
+
});
|
|
187
|
+
it('getStatus() polls until 32 bytes arrive and returns BrotherQLStatus', async () => {
|
|
188
|
+
const bytes = new Uint8Array(32);
|
|
189
|
+
bytes[10] = 62;
|
|
190
|
+
bytes[11] = 0x0a;
|
|
191
|
+
const { transport } = makeTransport(bytes);
|
|
192
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
75
193
|
const status = await printer.getStatus();
|
|
76
|
-
expect(
|
|
77
|
-
|
|
78
|
-
expect(
|
|
79
|
-
expect(req[1]).toBe(0x69);
|
|
80
|
-
expect(req[2]).toBe(0x53);
|
|
81
|
-
expect(status.mediaWidthMm).toBe(62);
|
|
82
|
-
expect(status.mediaType).toBe('continuous');
|
|
83
|
-
});
|
|
84
|
-
it('printTwoColor() throws UnsupportedOperationError on non-two-color device', async () => {
|
|
85
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
86
|
-
const { UnsupportedOperationError } = await import('../errors.js');
|
|
87
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_700, 'usb');
|
|
88
|
-
const bitmap = createBitmap(720, 10);
|
|
89
|
-
const media = MEDIA[259];
|
|
90
|
-
await expect(printer.printTwoColor(bitmap, bitmap, media)).rejects.toThrow(UnsupportedOperationError);
|
|
91
|
-
});
|
|
92
|
-
it('printTwoColor() succeeds on two-color capable device', async () => {
|
|
93
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
94
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
95
|
-
const bitmap = createBitmap(720, 10);
|
|
96
|
-
const media = MEDIA[259];
|
|
97
|
-
await printer.printTwoColor(bitmap, bitmap, media);
|
|
98
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
99
|
-
});
|
|
100
|
-
it('printTwoColor() passes options through to print', async () => {
|
|
101
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
102
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
103
|
-
const bitmap = createBitmap(720, 10);
|
|
104
|
-
await printer.printTwoColor(bitmap, bitmap, MEDIA[259], { autoCut: true });
|
|
105
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
106
|
-
});
|
|
107
|
-
it('printText() renders text and writes via transport', async () => {
|
|
108
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
109
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
110
|
-
const media = MEDIA[259];
|
|
111
|
-
await printer.printText('hello', media);
|
|
112
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
113
|
-
});
|
|
114
|
-
it('printText() forwards invert option', async () => {
|
|
115
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
116
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
117
|
-
await printer.printText('hi', MEDIA[259], { invert: true });
|
|
118
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
119
|
-
});
|
|
120
|
-
it('printText() passes PageOptions through to print', async () => {
|
|
121
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
122
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
123
|
-
await printer.printText('hi', MEDIA[259], { autoCut: true });
|
|
124
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
125
|
-
});
|
|
126
|
-
it('printImage() decodes a Buffer and prints', async () => {
|
|
127
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
128
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
129
|
-
await printer.printImage(Buffer.alloc(100), MEDIA[259]);
|
|
130
|
-
expect(mockLoadImage).toHaveBeenCalledOnce();
|
|
131
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
132
|
-
});
|
|
133
|
-
it('printImage() loads an image from a file path', async () => {
|
|
134
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
135
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
136
|
-
await printer.printImage('/tmp/test.png', MEDIA[259]);
|
|
137
|
-
expect(mockLoadImage).toHaveBeenCalledWith('/tmp/test.png');
|
|
138
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
139
|
-
});
|
|
140
|
-
it('printImage() passes through options to renderImage', async () => {
|
|
141
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
142
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
143
|
-
await printer.printImage(Buffer.alloc(100), MEDIA[259], {
|
|
144
|
-
threshold: 100,
|
|
145
|
-
dither: true,
|
|
146
|
-
invert: true,
|
|
147
|
-
rotate: 90,
|
|
148
|
-
});
|
|
149
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
194
|
+
expect(status.rawBytes.length).toBe(32);
|
|
195
|
+
expect(status.editorLiteMode).toBe(false);
|
|
196
|
+
expect(status.detectedMedia?.id).toBe(259);
|
|
150
197
|
});
|
|
151
|
-
it('
|
|
152
|
-
const {
|
|
153
|
-
const printer = new BrotherQLPrinter(
|
|
154
|
-
await printer.printImage(Buffer.alloc(100), MEDIA[259], { autoCut: true });
|
|
155
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
156
|
-
});
|
|
157
|
-
it('printImage() throws when canvas is unavailable for a buffer', async () => {
|
|
158
|
-
mockLoadImage.mockRejectedValueOnce(new Error('module not found'));
|
|
159
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
160
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
161
|
-
await expect(printer.printImage(Buffer.alloc(10), MEDIA[259])).rejects.toThrow('Cannot decode image buffer');
|
|
162
|
-
});
|
|
163
|
-
it('printImage() throws when canvas is unavailable for a file path', async () => {
|
|
164
|
-
mockLoadImage.mockRejectedValueOnce(new Error('module not found'));
|
|
165
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
166
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
167
|
-
await expect(printer.printImage('/tmp/test.png', MEDIA[259])).rejects.toThrow('Cannot load image file');
|
|
168
|
-
});
|
|
169
|
-
it('close() delegates to transport close', async () => {
|
|
170
|
-
const { BrotherQLPrinter } = await import('../printer.js');
|
|
171
|
-
const printer = new BrotherQLPrinter(mockTransport, DEVICES.QL_820NWB, 'usb');
|
|
198
|
+
it('close() awaits the transport', async () => {
|
|
199
|
+
const { transport } = makeTransport();
|
|
200
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
172
201
|
await printer.close();
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
});
|
|
193
|
-
it('throws when no printers are found', async () => {
|
|
194
|
-
const { listPrinters } = await import('../discovery.js');
|
|
195
|
-
vi.mocked(listPrinters).mockReturnValueOnce([]);
|
|
196
|
-
const { openPrinter } = await import('../printer.js');
|
|
197
|
-
await expect(openPrinter()).rejects.toThrow('No Brother QL printers found');
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe('openPrinterTcp', () => {
|
|
201
|
-
it('connects via TCP and returns a printer', async () => {
|
|
202
|
-
const { openPrinterTcp } = await import('../printer.js');
|
|
203
|
-
const printer = await openPrinterTcp('192.168.1.100');
|
|
204
|
-
expect(printer.transport).toBe('tcp');
|
|
205
|
-
expect(mockWrite).toHaveBeenCalledOnce();
|
|
206
|
-
expect(mockRead).toHaveBeenCalledOnce();
|
|
207
|
-
});
|
|
208
|
-
it('uses custom port when specified', async () => {
|
|
209
|
-
const { TcpTransport } = await import('../transport.js');
|
|
210
|
-
const { openPrinterTcp } = await import('../printer.js');
|
|
211
|
-
await openPrinterTcp('192.168.1.100', 4444);
|
|
212
|
-
const connectMock = vi.mocked(TcpTransport).connect;
|
|
213
|
-
expect(connectMock).toHaveBeenCalledWith('192.168.1.100', 4444);
|
|
214
|
-
});
|
|
202
|
+
// Dodge @typescript-eslint/unbound-method — the point is to verify
|
|
203
|
+
// the mock was called, not to keep a `this`-bound reference.
|
|
204
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
205
|
+
expect(vi.mocked(transport.close)).toHaveBeenCalled();
|
|
206
|
+
});
|
|
207
|
+
it('getStatus() throws when the printer never queues a response', async () => {
|
|
208
|
+
// transport.read always returns 0 bytes — mirrors the USB path where
|
|
209
|
+
// the printer hasn't responded yet.
|
|
210
|
+
const transport = {
|
|
211
|
+
get connected() {
|
|
212
|
+
return true;
|
|
213
|
+
},
|
|
214
|
+
write: vi.fn(() => Promise.resolve()),
|
|
215
|
+
read: vi.fn(() => Promise.resolve(new Uint8Array(0))),
|
|
216
|
+
close: vi.fn(() => Promise.resolve()),
|
|
217
|
+
};
|
|
218
|
+
const printer = new BrotherQLPrinter(DEVICES.QL_820NWB, transport, 'usb');
|
|
219
|
+
await expect(printer.getStatus()).rejects.toThrow(/did not respond to status request/);
|
|
220
|
+
}, 10_000);
|
|
215
221
|
});
|
|
216
222
|
//# sourceMappingURL=printer.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printer.test.js","sourceRoot":"","sources":["../../src/__tests__/printer.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"printer.test.js","sourceRoot":"","sources":["../../src/__tests__/printer.test.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { DiscoveredPrinter, OpenOptions, PrinterDiscovery } from '@thermal-label/contracts';
|
|
2
|
+
import { BrotherQLPrinter } from './printer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Driver-specific `openPrinter` options.
|
|
5
|
+
*
|
|
6
|
+
* Extends the contracts `OpenOptions` with `path` / `baudRate` for
|
|
7
|
+
* serial (RFCOMM over OS-paired Bluetooth on the QL-820NWB, or any
|
|
8
|
+
* USB-to-serial adapter). Baud rate is forwarded to the OS driver;
|
|
9
|
+
* RFCOMM ignores it, but `serialport` requires a value.
|
|
10
|
+
*/
|
|
11
|
+
export interface BrotherQLOpenOptions extends OpenOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Serial device path — e.g. `/dev/rfcomm0` (Linux) or `COM3`
|
|
14
|
+
* (Windows) after pairing the printer via the OS Bluetooth
|
|
15
|
+
* settings. Mutually exclusive with `host` and the USB fields.
|
|
16
|
+
*/
|
|
17
|
+
path?: string;
|
|
18
|
+
/** Baud rate override; defaults to 9600. */
|
|
19
|
+
baudRate?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* `PrinterDiscovery` implementation for Brother QL printers.
|
|
23
|
+
*
|
|
24
|
+
* `listPrinters()` enumerates USB and skips printers in Editor Lite
|
|
25
|
+
* mass-storage mode (a warning is logged — the user has to switch
|
|
26
|
+
* them out of Editor Lite manually). Network printers open via
|
|
27
|
+
* `openPrinter({ host, port })`; there is no mDNS implementation so
|
|
28
|
+
* `listPrinters()` never surfaces them.
|
|
29
|
+
*/
|
|
30
|
+
export declare class BrotherQLDiscovery implements PrinterDiscovery {
|
|
31
|
+
readonly family = "brother-ql";
|
|
32
|
+
listPrinters(): Promise<DiscoveredPrinter[]>;
|
|
33
|
+
openPrinter(options?: BrotherQLOpenOptions): Promise<BrotherQLPrinter>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Named export discovered by the unified `thermal-label-cli` — the CLI
|
|
37
|
+
* walks installed drivers looking for `mod.discovery`.
|
|
38
|
+
*/
|
|
39
|
+
export declare const discovery: BrotherQLDiscovery;
|
|
5
40
|
//# sourceMappingURL=discovery.d.ts.map
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqDD;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IACzD,QAAQ,CAAC,MAAM,gBAAgB;IAEzB,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAU5C,WAAW,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAqCjF;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,oBAA2B,CAAC"}
|