jc-printer-sdk-ts 0.1.0 → 0.1.2

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.
Files changed (41) hide show
  1. package/README.md +65 -0
  2. package/dist/browserImages.d.ts +43 -0
  3. package/dist/browserImages.d.ts.map +1 -0
  4. package/dist/browserImages.js +224 -0
  5. package/dist/browserImages.js.map +1 -0
  6. package/dist/client.d.ts +6 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +89 -0
  9. package/dist/client.js.map +1 -1
  10. package/dist/imagePrint.d.ts +69 -0
  11. package/dist/imagePrint.d.ts.map +1 -0
  12. package/dist/imagePrint.js +180 -0
  13. package/dist/imagePrint.js.map +1 -0
  14. package/dist/index.d.ts +4 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/niimbotProtocol.d.ts +38 -0
  19. package/dist/niimbotProtocol.d.ts.map +1 -0
  20. package/dist/niimbotProtocol.js +265 -0
  21. package/dist/niimbotProtocol.js.map +1 -0
  22. package/dist/transport.d.ts +5 -1
  23. package/dist/transport.d.ts.map +1 -1
  24. package/dist/transport.js +58 -0
  25. package/dist/transport.js.map +1 -1
  26. package/dist/types.d.ts +28 -0
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/webBluetoothTransport.d.ts +137 -0
  29. package/dist/webBluetoothTransport.d.ts.map +1 -0
  30. package/dist/webBluetoothTransport.js +870 -0
  31. package/dist/webBluetoothTransport.js.map +1 -0
  32. package/package.json +1 -1
  33. package/src/browserImages.ts +323 -0
  34. package/src/client.ts +121 -0
  35. package/src/imagePrint.ts +306 -0
  36. package/src/index.ts +4 -0
  37. package/src/niimbotProtocol.ts +355 -0
  38. package/src/transport.ts +66 -0
  39. package/src/types.ts +44 -0
  40. package/src/web-bluetooth.d.ts +44 -0
  41. package/src/webBluetoothTransport.ts +1171 -0
package/src/transport.ts CHANGED
@@ -8,8 +8,10 @@ import type {
8
8
  PrintDocument,
9
9
  PrinterDevice,
10
10
  PrinterInfo,
11
+ PrinterReadiness,
11
12
  PrinterSdkCallback,
12
13
  PrinterState,
14
+ PrinterStatusSnapshot,
13
15
  ScanCallback,
14
16
  } from "./types.js";
15
17
 
@@ -70,6 +72,8 @@ export interface PrinterTransport {
70
72
  getPrintScaleMultiplier?(): MaybePromise<number>;
71
73
  getPrinterName?(): MaybePromise<string>;
72
74
  getPrinterInfo?(): MaybePromise<PrinterInfo | null>;
75
+ queryPrinterStatus?(timeoutMs?: number): MaybePromise<PrinterStatusSnapshot>;
76
+ canStartPrintJob?(timeoutMs?: number): MaybePromise<PrinterReadiness>;
73
77
  getPrinterState?(): MaybePromise<PrinterState>;
74
78
  waitPrinterState?(
75
79
  state: PrinterState,
@@ -149,6 +153,60 @@ function defaultPaperInfo(): PaperInfo {
149
153
  };
150
154
  }
151
155
 
156
+ function createMemoryPrinterStatus(state: PrinterState): PrinterStatusSnapshot {
157
+ return {
158
+ connected: state !== "Disconnected",
159
+ state,
160
+ statusAvailable: false,
161
+ };
162
+ }
163
+
164
+ function createMemoryReadiness(state: PrinterState): PrinterReadiness {
165
+ const status = createMemoryPrinterStatus(state);
166
+ if (!status.connected) {
167
+ return {
168
+ canPrint: false,
169
+ code: "not_connected",
170
+ reason: "Printer is not connected.",
171
+ warnings: [],
172
+ state,
173
+ connected: false,
174
+ status,
175
+ };
176
+ }
177
+ if (state === "Printing") {
178
+ return {
179
+ canPrint: false,
180
+ code: "sdk_printing",
181
+ reason: "A print job is already in progress.",
182
+ warnings: [],
183
+ state,
184
+ connected: true,
185
+ status,
186
+ };
187
+ }
188
+ if (state === "Working") {
189
+ return {
190
+ canPrint: false,
191
+ code: "printer_working",
192
+ reason: "Printer is currently working.",
193
+ warnings: [],
194
+ state,
195
+ connected: true,
196
+ status,
197
+ };
198
+ }
199
+ return {
200
+ canPrint: true,
201
+ code: "status_unavailable",
202
+ reason: "Printer is connected; live hardware status is not available in this transport.",
203
+ warnings: [],
204
+ state,
205
+ connected: true,
206
+ status,
207
+ };
208
+ }
209
+
152
210
  function dimensionsFromInfo(info: string): Pick<BitmapLike, "width" | "height"> {
153
211
  try {
154
212
  const parsed = JSON.parse(info) as {
@@ -425,6 +483,14 @@ export class MemoryPrinterTransport implements PrinterTransport {
425
483
  return clone(this.printerInfo);
426
484
  }
427
485
 
486
+ queryPrinterStatus(): PrinterStatusSnapshot {
487
+ return createMemoryPrinterStatus(this.printerState);
488
+ }
489
+
490
+ canStartPrintJob(): PrinterReadiness {
491
+ return createMemoryReadiness(this.printerState);
492
+ }
493
+
428
494
  getPrinterState(): PrinterState {
429
495
  return this.printerState;
430
496
  }
package/src/types.ts CHANGED
@@ -137,6 +137,50 @@ export interface PaperInfo {
137
137
  tailLength: number;
138
138
  }
139
139
 
140
+ export interface PrinterStatusSnapshot {
141
+ connected: boolean;
142
+ state: PrinterState;
143
+ statusAvailable: boolean;
144
+ responseCommand?: number;
145
+ rawData?: number[];
146
+ chargeLevel?: number;
147
+ temperature?: number;
148
+ lidClosed?: boolean;
149
+ paperInserted?: boolean;
150
+ paperRfidSuccess?: boolean;
151
+ ribbonInserted?: boolean;
152
+ ribbonRfidSuccess?: boolean;
153
+ wifiRssi?: number;
154
+ lightingErrorCode?: number;
155
+ voltageState?: number;
156
+ }
157
+
158
+ export type PrinterReadinessCode =
159
+ | "ready"
160
+ | "status_unavailable"
161
+ | "not_connected"
162
+ | "sdk_printing"
163
+ | "printer_working"
164
+ | "cover_open"
165
+ | "paper_missing"
166
+ | "voltage_error";
167
+
168
+ export type PrinterReadinessWarningCode =
169
+ | "paper_rfid_failed"
170
+ | "ribbon_missing"
171
+ | "ribbon_rfid_failed"
172
+ | "lighting_error";
173
+
174
+ export interface PrinterReadiness {
175
+ canPrint: boolean;
176
+ code: PrinterReadinessCode;
177
+ reason: string;
178
+ warnings: PrinterReadinessWarningCode[];
179
+ state: PrinterState;
180
+ connected: boolean;
181
+ status?: PrinterStatusSnapshot;
182
+ }
183
+
140
184
  export interface ColorSupport {
141
185
  normalMode: number;
142
186
  rbMode: number;
@@ -0,0 +1,44 @@
1
+ interface BluetoothRequestDeviceFilter {
2
+ namePrefix?: string;
3
+ name?: string;
4
+ services?: string[];
5
+ }
6
+
7
+ interface BluetoothRequestDeviceOptions {
8
+ filters?: BluetoothRequestDeviceFilter[];
9
+ acceptAllDevices?: boolean;
10
+ optionalServices?: string[];
11
+ }
12
+
13
+ interface BluetoothRemoteGATTCharacteristic extends EventTarget {
14
+ readonly value?: DataView;
15
+ startNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
16
+ stopNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
17
+ writeValue(value: BufferSource): Promise<void>;
18
+ writeValueWithoutResponse(value: BufferSource): Promise<void>;
19
+ }
20
+
21
+ interface BluetoothRemoteGATTService {
22
+ getCharacteristic(characteristicUuid: string): Promise<BluetoothRemoteGATTCharacteristic>;
23
+ }
24
+
25
+ interface BluetoothRemoteGATTServer {
26
+ readonly connected: boolean;
27
+ connect(): Promise<BluetoothRemoteGATTServer>;
28
+ disconnect(): void;
29
+ getPrimaryService(serviceUuid: string): Promise<BluetoothRemoteGATTService>;
30
+ }
31
+
32
+ interface BluetoothDevice extends EventTarget {
33
+ readonly id: string;
34
+ readonly name?: string;
35
+ readonly gatt?: BluetoothRemoteGATTServer | null;
36
+ }
37
+
38
+ interface Bluetooth extends EventTarget {
39
+ requestDevice(options: BluetoothRequestDeviceOptions): Promise<BluetoothDevice>;
40
+ }
41
+
42
+ interface Navigator {
43
+ bluetooth?: Bluetooth;
44
+ }