taro-bluetooth-print 2.10.0 → 2.10.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.
- package/CHANGELOG.md +81 -359
- package/README.md +237 -122
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/types/adapters/BaseAdapter.d.ts +11 -5
- package/dist/types/adapters/ChunkWriteStrategy.d.ts +99 -0
- package/dist/types/adapters/ReactNativeAdapter.d.ts +1 -0
- package/dist/types/adapters/WebBluetoothAdapter.d.ts +5 -0
- package/dist/types/cache/OfflineCache.d.ts +8 -34
- package/dist/types/core/BluetoothPrinter.d.ts +11 -1
- package/dist/types/core/di/Container.d.ts +84 -0
- package/dist/types/core/di/Tokens.d.ts +29 -0
- package/dist/types/core/di/index.d.ts +3 -0
- package/dist/types/core/event/EventBus.d.ts +66 -0
- package/dist/types/core/event/index.d.ts +2 -0
- package/dist/types/core/index.d.ts +5 -4
- package/dist/types/core/plugin/PluginManager.d.ts +64 -0
- package/dist/types/core/plugin/index.d.ts +2 -0
- package/dist/types/device/DeviceManager.d.ts +10 -35
- package/dist/types/device/DiscoveryService.d.ts +0 -8
- package/dist/types/device/MultiPrinterManager.d.ts +15 -22
- package/dist/types/drivers/CpclDriver.d.ts +9 -4
- package/dist/types/drivers/GPrinterDriver.d.ts +1 -36
- package/dist/types/drivers/SprtDriver.d.ts +1 -42
- package/dist/types/drivers/XprinterDriver.d.ts +1 -37
- package/dist/types/drivers/ZplDriver.d.ts +9 -9
- package/dist/types/drivers/{EscPos.d.ts → escPosDriver.d.ts} +55 -0
- package/dist/types/drivers/index.d.ts +1 -1
- package/dist/types/errors/CommandBuildError.d.ts +1 -1
- package/dist/types/errors/ConnectionError.d.ts +1 -1
- package/dist/types/errors/PrintJobError.d.ts +1 -1
- package/dist/types/errors/index.d.ts +1 -1
- package/dist/types/factory/di-factory.d.ts +52 -0
- package/dist/types/index.d.ts +6 -2
- package/dist/types/plugins/PluginManager.d.ts +1 -1
- package/dist/types/plugins/builtin/RetryPlugin.d.ts +1 -1
- package/dist/types/plugins/types.d.ts +1 -1
- package/dist/types/providers/ServiceProvider.d.ts +56 -0
- package/dist/types/providers/index.d.ts +2 -0
- package/dist/types/queue/PrintQueue.d.ts +10 -34
- package/dist/types/services/BatchPrintManager.d.ts +18 -53
- package/dist/types/services/ConnectionManager.d.ts +1 -1
- package/dist/types/services/PrintScheduler.d.ts +2 -2
- package/dist/types/services/ScheduledRetryManager.d.ts +8 -27
- package/dist/types/services/interfaces/IConnectionManager.d.ts +5 -0
- package/dist/types/types.d.ts +5 -0
- package/dist/types/utils/encoding.d.ts +2 -1
- package/dist/types/utils/index.d.ts +9 -0
- package/dist/types/utils/logger.d.ts +4 -3
- package/dist/types/utils/normalizeError.d.ts +50 -0
- package/dist/types/utils/outputLimiter.d.ts +87 -0
- package/dist/types/utils/uuid.d.ts +1 -97
- package/dist/types/utils/validation.d.ts +4 -20
- package/dist/types/utils/withTimeout.d.ts +28 -0
- package/package.json +12 -2
- package/src/adapters/AdapterFactory.ts +1 -1
- package/src/adapters/BaseAdapter.ts +112 -151
- package/src/adapters/ChunkWriteStrategy.ts +248 -0
- package/src/adapters/ReactNativeAdapter.ts +97 -144
- package/src/adapters/WebBluetoothAdapter.ts +58 -13
- package/src/cache/OfflineCache.ts +10 -63
- package/src/config/PrinterConfigManager.ts +1 -0
- package/src/core/BluetoothPrinter.ts +50 -24
- package/src/core/EventEmitter.ts +4 -1
- package/src/core/di/Container.ts +332 -0
- package/src/core/di/Tokens.ts +45 -0
- package/src/core/di/index.ts +3 -0
- package/src/core/event/EventBus.ts +254 -0
- package/src/core/event/index.ts +2 -0
- package/src/core/index.ts +10 -4
- package/src/core/plugin/PluginManager.ts +161 -0
- package/src/core/plugin/index.ts +2 -0
- package/src/device/DeviceManager.ts +8 -58
- package/src/device/DiscoveryService.ts +7 -46
- package/src/device/MultiPrinterManager.ts +12 -59
- package/src/drivers/CpclDriver.ts +34 -7
- package/src/drivers/GPrinterDriver.ts +1 -75
- package/src/drivers/SprtDriver.ts +1 -81
- package/src/drivers/XprinterDriver.ts +1 -64
- package/src/drivers/ZplDriver.ts +31 -12
- package/src/drivers/{EscPos.ts → escPosDriver.ts} +80 -0
- package/src/drivers/index.ts +1 -1
- package/src/errors/CommandBuildError.ts +1 -1
- package/src/errors/ConnectionError.ts +1 -1
- package/src/errors/PrintJobError.ts +1 -1
- package/src/errors/index.ts +1 -1
- package/src/factory/PrinterFactory.ts +10 -3
- package/src/factory/di-factory.ts +61 -0
- package/src/index.ts +51 -2
- package/src/plugins/PluginManager.ts +1 -1
- package/src/plugins/builtin/RetryPlugin.ts +1 -1
- package/src/plugins/types.ts +1 -1
- package/src/providers/ServiceProvider.ts +213 -0
- package/src/providers/index.ts +2 -0
- package/src/queue/PrintQueue.ts +22 -53
- package/src/services/BatchPrintManager.ts +17 -64
- package/src/services/CloudPrintManager.ts +3 -3
- package/src/services/CommandBuilder.ts +1 -1
- package/src/services/ConnectionManager.ts +39 -41
- package/src/services/PrintHistory.ts +4 -2
- package/src/services/PrintJobManager.ts +13 -4
- package/src/services/PrintScheduler.ts +27 -24
- package/src/services/PrintStatistics.ts +16 -10
- package/src/services/PrinterStatus.ts +3 -9
- package/src/services/QRCodeDiscoveryService.ts +20 -10
- package/src/services/ScheduledRetryManager.ts +8 -64
- package/src/services/interfaces/IConnectionManager.ts +6 -0
- package/src/template/engines/TemplateRenderer.ts +1 -1
- package/src/types.ts +6 -0
- package/src/utils/encoding.ts +2 -1
- package/src/utils/index.ts +10 -0
- package/src/utils/logger.ts +17 -4
- package/src/utils/normalizeError.ts +68 -0
- package/src/utils/outputLimiter.ts +234 -0
- package/src/utils/uuid.ts +4 -273
- package/src/utils/validation.ts +4 -32
- package/src/utils/withTimeout.ts +49 -0
- package/dist/types/utils/validators/array.d.ts +0 -19
- package/dist/types/utils/validators/buffer.d.ts +0 -18
- package/dist/types/utils/validators/chain.d.ts +0 -31
- package/dist/types/utils/validators/common.d.ts +0 -22
- package/dist/types/utils/validators/number.d.ts +0 -20
- package/dist/types/utils/validators/object.d.ts +0 -24
- package/dist/types/utils/validators/printer.d.ts +0 -40
- package/dist/types/utils/validators/types.d.ts +0 -125
- package/dist/types/utils/validators/uuid.d.ts +0 -23
- package/src/utils/validators/array.ts +0 -95
- package/src/utils/validators/buffer.ts +0 -81
- package/src/utils/validators/chain.ts +0 -181
- package/src/utils/validators/common.ts +0 -216
- package/src/utils/validators/number.ts +0 -101
- package/src/utils/validators/object.ts +0 -63
- package/src/utils/validators/printer.ts +0 -294
- package/src/utils/validators/types.ts +0 -105
- package/src/utils/validators/uuid.ts +0 -49
- /package/dist/types/errors/{BluetoothError.d.ts → baseError.d.ts} +0 -0
- /package/src/errors/{BluetoothError.ts → baseError.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,406 +1,128 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [2.9.0] - 2026-04-07
|
|
9
|
-
|
|
10
|
-
### 架构升级
|
|
11
|
-
|
|
12
|
-
- **新增 PrinterFactory**: 工厂模式创建 `BluetoothPrinter` 实例,推荐使用 `createBluetoothPrinter({ adapter })` 替代直接构造函数
|
|
13
|
-
- **接口分离**: 将 `services/interfaces/index.ts` 拆分为独立文件 (`IConnectionManager.ts`, `IPrintJobManager.ts`, `ICommandBuilder.ts`),改善依赖管理
|
|
14
|
-
- **错误类层次**: 新增 `ConnectionError` / `PrintJobError` / `CommandBuildError` 专用错误类,继承自 `BluetoothPrintError`
|
|
15
|
-
- **BluetoothPrinter 简化**: 移除构造函数向后兼容逻辑,使用清晰的依赖注入模式
|
|
16
|
-
|
|
17
|
-
### 导出新增
|
|
18
|
-
|
|
19
|
-
- `createBluetoothPrinter()` - 工厂函数(推荐)
|
|
20
|
-
- `createWebBluetoothPrinter()` - Web Bluetooth 专用工厂
|
|
21
|
-
- `PrinterFactory` - 工厂对象(向后兼容)
|
|
22
|
-
- `ConnectionError`, `ConnectionErrorCode` - 连接错误
|
|
23
|
-
- `PrintJobError`, `PrintJobErrorCode` - 打印任务错误
|
|
24
|
-
- `CommandBuildError`, `CommandBuildErrorCode` - 命令构建错误
|
|
25
|
-
|
|
26
|
-
## [2.8.4] - 2026-04-05
|
|
27
|
-
|
|
28
|
-
### 修复
|
|
29
|
-
|
|
30
|
-
- image.ts: 添加 TypeScript strict mode non-null assertions,解决 noUncheckedIndexedAccess 警告
|
|
31
|
-
|
|
32
|
-
### 性能优化
|
|
33
|
-
|
|
34
|
-
- image.ts: 移除 TypedArray 访问上的冗余 `?? 0` / `?? 255` 操作符
|
|
35
|
-
|
|
36
|
-
## [2.8.3] - 2026-04-04
|
|
37
|
-
|
|
38
|
-
### 性能优化
|
|
39
|
-
|
|
40
|
-
- image.ts: 移除 TypedArray 访问上的冗余 `?? 0` / `?? 255` 操作符(Uint8Array/Float32Array 元素访问永不返回 undefined)
|
|
41
|
-
- 影响函数:toGrayscale、adjustContrastBrightness、所有 dithering 算法、applyBilinearInterpolation、applyGammaCorrection、applyMedianFilter、applyConvolution、applyPixelate
|
|
42
|
-
- gzip 体积:225.96 KB → 225.79 KB(-0.17 KB),代码净减 1 行
|
|
43
|
-
|
|
44
|
-
## [2.8.1] - 2026-04-02
|
|
45
|
-
|
|
46
|
-
### 修复
|
|
47
|
-
|
|
48
|
-
- 跳过 WebSocket 和二维码解析的边缘用例测试
|
|
49
|
-
|
|
50
|
-
## [2.8.0] - 2026-04-02
|
|
51
|
-
|
|
52
|
-
### 新增
|
|
53
|
-
|
|
54
|
-
- **XprinterDriver**: 芯烨打印机驱动,兼容 ESC/POS 指令集
|
|
55
|
-
- **SprtDriver**: 思普瑞特打印机驱动,移动蓝牙打印机优化
|
|
56
|
-
- **QRCodeDiscoveryService**: 二维码打印机配对服务
|
|
57
|
-
- 支持商米/标准/MAC 地址多种格式
|
|
58
|
-
- 自动格式检测和解析
|
|
59
|
-
- **CloudPrintManager**: WebSocket 云打印管理器
|
|
60
|
-
- 长连接、心跳保活
|
|
61
|
-
- 自动重连机制
|
|
62
|
-
- MQTT over WebSocket 支持
|
|
63
|
-
|
|
64
|
-
### 测试
|
|
65
|
-
|
|
66
|
-
- 新增驱动和服务的单元测试
|
|
67
|
-
|
|
68
|
-
## [2.7.0] - 2026-03-31
|
|
69
|
-
|
|
70
|
-
### 新增
|
|
71
|
-
|
|
72
|
-
- **PrintScheduler**: 定时打印调度器,支持 cron 表达式、一次性定时、重复间隔任务
|
|
73
|
-
- 支持本地存储持久化
|
|
74
|
-
- 完整的生命周期事件 (will-execute, executed, completed, failed)
|
|
75
|
-
- 暂停/恢复/取消任务
|
|
76
|
-
- **DiscoveryService**: 增强型蓝牙设备发现服务
|
|
77
|
-
- 多维度设备过滤 (名称、RSSI、厂商 ID、外观类型)
|
|
78
|
-
- 多种排序方式 (信号强度、名称、最后发现时间)
|
|
79
|
-
- 设备缓存和自动过期清理
|
|
80
|
-
- 等待特定设备发现
|
|
81
|
-
|
|
82
|
-
### 文档
|
|
83
|
-
|
|
84
|
-
- 更新 README 功能列表
|
|
85
|
-
- 新增定时调度和设备发现使用指南
|
|
86
|
-
|
|
87
|
-
## [2.6.0] - 2026-03-27
|
|
88
|
-
|
|
89
|
-
### 新增
|
|
90
|
-
|
|
91
|
-
- **BarcodeGenerator**: 新增 QR_CODE 和 PDF417 格式支持
|
|
92
|
-
- **TemplateEngine**: 新增 loop/condition/border/table 元素类型
|
|
93
|
-
- **WebBluetoothAdapter**: 设备过滤、RSSI 过滤、getDeviceInfo()、sortByRSSI()
|
|
94
|
-
- **uuid.ts**: UUID v1/v4/v7 生成、解析、验证、短 ID
|
|
95
|
-
- **validation.ts**: 通用数据校验工具函数
|
|
96
|
-
|
|
97
|
-
### TypeScript 增强
|
|
98
|
-
|
|
99
|
-
- 开启 exactOptionalPropertyTypes
|
|
100
|
-
- 完善类型定义
|
|
101
|
-
|
|
102
|
-
### 文档升级
|
|
103
|
-
|
|
104
|
-
- 首页重设计,增加特性卡片和徽章展示
|
|
105
|
-
- 完善快速开始、驱动、适配器指南
|
|
106
|
-
- 重写功能文档和高级用法
|
|
107
|
-
- 合并 FAQ 与故障排除
|
|
108
|
-
- 完善 API 参考和架构文档
|
|
109
|
-
- VitePress 配置增强 (PWA/SEO)
|
|
110
|
-
|
|
111
|
-
### 测试
|
|
112
|
-
|
|
113
|
-
- 新增 128 个测试用例 (462 tests passed)
|
|
114
|
-
|
|
115
8
|
---
|
|
116
9
|
|
|
117
|
-
## [2.
|
|
118
|
-
|
|
119
|
-
### 新增
|
|
10
|
+
## [2.10.2] - 2026-05-02
|
|
120
11
|
|
|
121
|
-
|
|
122
|
-
- **韩日文编码支持**: EncodingService 扩展 EUC-KR(韩文)、Shift-JIS / ISO-2022-JP(日文)编码
|
|
123
|
-
- **QQ 小程序适配器**: 新增 QQAdapter,继承 MiniProgramAdapter,支持 QQ 小程序环境
|
|
124
|
-
- **React Native 适配器**: 新增 ReactNativeAdapter,基于 react-native-ble-plx 实现 IPrinterAdapter 接口
|
|
125
|
-
- **PrintStatistics 统计服务**: 追踪打印任务全生命周期,支持按日期/驱动分类统计、导出 JSON
|
|
126
|
-
- **ScheduledRetryManager 定时重试**: 支持指定时间自动重试、指数退避策略、进程重启后恢复调度
|
|
127
|
-
- **BatchPrintManager 批量增强**: 新增小任务合并(<50 bytes)、超时自动 flush、统一切刀指令
|
|
12
|
+
### Fixed
|
|
128
13
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
14
|
+
- **代码质量优化 — 消除所有 ESLint 错误** (#37 → 0)
|
|
15
|
+
- 移除 3 个文件顶部 `eslint-disable`(共 18 条规则绕过)
|
|
16
|
+
- 修复所有非空断言 (`!`) — `Uint8Array[i]!`、`parts[x]!`、`job.nextRunTime!` 等
|
|
17
|
+
- 修复所有 `any` 类型绕过 — `as string` 改为 `typeof` 运行时检查
|
|
18
|
+
- JSON.parse 结果改用 `as Record<string, unknown>` + 类型守卫访问
|
|
19
|
+
- 异步方法 `void` → `await`,消除 `require-await` 错误
|
|
20
|
+
- `Record<string, any>` → `Record<string, unknown>`
|
|
21
|
+
- 消除 `no-base-to-string`:`String(value)` → `JSON.stringify(value)`
|
|
22
|
+
- 消除 `no-unused-vars`:废弃变量改为 `void timeout`
|
|
23
|
+
- **零 ESLint 警告/错误、零非空断言、零行内 eslint-disable 残留**
|
|
137
24
|
|
|
138
25
|
---
|
|
139
26
|
|
|
140
|
-
## [2.
|
|
141
|
-
|
|
142
|
-
### 修复
|
|
27
|
+
## [2.10.1] - 2026-05-01
|
|
143
28
|
|
|
144
|
-
|
|
145
|
-
- **事件系统**: 添加 eslint-disable 注释,修复类型断言导致的 lint 警告
|
|
146
|
-
- **print 方法**: 移除不必要的 async 关键字,修复 `require-await` 警告
|
|
147
|
-
- **broadcast 方法**: 添加 eslint-disable 注释,修复 async 回调无 await 警告
|
|
148
|
-
- **CI**: 添加 pnpm 缓存加速 CI 构建
|
|
29
|
+
### Fixed
|
|
149
30
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
- TypeScript 类型检查通过
|
|
153
|
-
- ESLint 0 errors
|
|
154
|
-
- 测试 84 passed
|
|
31
|
+
- **npm publish 版本冲突** — `v2.10.0` 因旧 tag 提前发布导致新内容无法覆盖。bump 至 `2.10.1` 重新发布。
|
|
155
32
|
|
|
156
33
|
---
|
|
157
34
|
|
|
158
|
-
## [2.
|
|
159
|
-
|
|
160
|
-
### 新增
|
|
161
|
-
|
|
162
|
-
- **MultiPrinterManager**: 多打印机并发管理,支持广播打印和负载均衡
|
|
163
|
-
- **PrinterConfigManager**: 打印机配置持久化管理,支持导出/导入配置
|
|
164
|
-
- **BatchPrintManager**: 批量打印优化,自动合并小任务减少蓝牙通信开销
|
|
165
|
-
- **PrintHistory**: 打印历史追踪,支持统计和查询
|
|
166
|
-
- **PrinterStatus**: 打印机状态查询,支持纸张/电量/错误状态检测
|
|
167
|
-
- **条码校验**: BarcodeGenerator 新增 validate() 方法,支持 EAN-13/EAN-8/UPC-A/Code39/Code128/ITF/CODABAR 格式校验
|
|
168
|
-
|
|
169
|
-
### 优化
|
|
35
|
+
## [2.10.0] - 2026-05-01
|
|
170
36
|
|
|
171
|
-
|
|
172
|
-
- **PrinterStatus**: 修复 TypeScript 类型检查问题
|
|
173
|
-
- **事件系统**: 优化 MultiPrinterManager 和 BatchPrintManager 的事件类型定义
|
|
37
|
+
### Added
|
|
174
38
|
|
|
175
|
-
|
|
39
|
+
- **`ChunkWriteStrategy` 自适应分块写入抽象基类** (#R4)
|
|
40
|
+
- Template Method 模式:将 MiniProgramAdapter 与 ReactNativeAdapter 共用的自适应分块写入逻辑提取到统一基类
|
|
41
|
+
- 子类仅需实现 `writeSingleChunk()` 平台特定的单块写入操作
|
|
42
|
+
- 公共框架包括:自适应分块大小调整、指数退避重试、连接状态周期性检查、单块超时、分块间 BLE 拥塞控制延迟
|
|
43
|
+
- `MiniProgramWriteStrategy` — 封装 Taro/微信/支付宝/百度/字节/QQ 小程序 BLE API
|
|
44
|
+
- `ReactNativeWriteStrategy` — 封装 react-native-ble-plx,含 withResponse/withoutResponse 降级回退
|
|
176
45
|
|
|
177
|
-
-
|
|
178
|
-
-
|
|
46
|
+
- **`withTimeout()` 工具函数集成** (#R5)
|
|
47
|
+
- 提取 Promise race + setTimeout 重复模式到 `src/utils/withTimeout.ts`
|
|
48
|
+
- 已集成至 `BaseAdapter.connect()`、`ReactNativeAdapter.connect()`、`ConnectionManager.connect()`、`PrinterStatus.queryStatus()`
|
|
49
|
+
- 减少约 40 行重复的手动 timer 管理代码,消除遗漏 clearTimeout 的风险
|
|
179
50
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
## [2.3.1] - 2026-03-21
|
|
51
|
+
### Changed
|
|
183
52
|
|
|
184
|
-
|
|
53
|
+
- **适配器代码重构**
|
|
54
|
+
- `MiniProgramBLEApi.writeBLECharacteristicValue` 参数类型从 `ArrayBuffer` 扩展为 `ArrayBuffer | ArrayBufferLike`,消除 `chunk.buffer` 的类型兼容性 warning
|
|
55
|
+
- `ReactNativeAdapter.arrayBufferToBase64` 同理扩展参数类型
|
|
56
|
+
- `ChunkWriteStrategy.logger` 类型修正为 `ReturnType<typeof Logger.scope>`,修复 Logger 实例类型不匹配
|
|
185
57
|
|
|
186
|
-
|
|
187
|
-
- **CI/CD**: 更新 GitHub Actions workflows,替换已弃用的 actions
|
|
58
|
+
### Fixed
|
|
188
59
|
|
|
189
|
-
|
|
60
|
+
- **`ChunkWriteStrategy.ts` 缺少 Logger 导入** — 导致 5 个适配器测试失败(TaroAdapter、AlipayAdapter、BaiduAdapter、ByteDanceAdapter、QQAdapter)
|
|
61
|
+
- **`chunk.buffer` 类型兼容性** — `Uint8Array.buffer` 返回 `ArrayBufferLike`,原 `ArrayBuffer` 参数类型导致 TypeScript 编译错误
|
|
190
62
|
|
|
191
|
-
|
|
192
|
-
- 修复 lint 错误和 CI 问题
|
|
63
|
+
### Security
|
|
193
64
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
- **驱动**: 添加 GPrinterDriver 佳博驱动
|
|
197
|
-
- **测试**: 添加驱动单元测试
|
|
65
|
+
- `withTimeout()` 统一使用 try/finally 模式的 timer 清理,消除所有手动 `Promise.race` + `setTimeout` 模式中遗漏 `clearTimeout` 的风险
|
|
198
66
|
|
|
199
67
|
---
|
|
200
68
|
|
|
201
|
-
## [2.
|
|
69
|
+
## [2.9.6] - 2026-04-30
|
|
202
70
|
|
|
203
|
-
###
|
|
71
|
+
### Added
|
|
204
72
|
|
|
205
|
-
-
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
- **示例**: 新增鸿蒙 HarmonyOS 示例
|
|
211
|
-
- **示例**: 新增 React Native 示例
|
|
212
|
-
- **文档**: 新增驱动使用指南
|
|
213
|
-
- **文档**: 新增平台适配器文档
|
|
214
|
-
- **文档**: 完善快速开始指南
|
|
215
|
-
- **文档**: 完善功能特性文档
|
|
216
|
-
- **文档**: 完善故障排除文档
|
|
73
|
+
- **`ZplDriver.image()` — ZPL 图像编码实现** (#1)
|
|
74
|
+
- 使用 ZPL `^GFA` (Graphic Field) 命令编码 1-bit 黑白位图
|
|
75
|
+
- 支持 x/y 定位、字节校验、十六进制数据编码
|
|
76
|
+
- 适用于 Zebra ZD420、GT800、ZM400 等标签打印机
|
|
77
|
+
- [之前为 TODO 占位方法]
|
|
217
78
|
|
|
218
|
-
|
|
79
|
+
- **`CpclDriver.downloadLogo()` — CPCL Logo 下载实现** (#2)
|
|
80
|
+
- 使用 CPCL `CG` (Compressed Graphic) 命令编码 1-bit 位图
|
|
81
|
+
- 宏定义存储 (`! DF`),位图大小自动推断(可选传参)
|
|
82
|
+
- 向后兼容:签名保持 `(logoName, bitmap, options?)`
|
|
83
|
+
- 适用于 HP IR3222、霍尼韦尔等移动打印机
|
|
84
|
+
- [之前为 TODO 占位方法]
|
|
219
85
|
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
- **代码**: 修复 lint 格式问题
|
|
86
|
+
- **单元测试覆盖**
|
|
87
|
+
- ZPL 图像编码:链式调用验证 (`^FO` / `^GFA` / `^FS` 命令输出断言)
|
|
88
|
+
- ZPL 空 bitmap 边界处理
|
|
224
89
|
|
|
225
|
-
###
|
|
90
|
+
### Fixed
|
|
226
91
|
|
|
227
|
-
-
|
|
228
|
-
-
|
|
92
|
+
- **`ConnectionManager` 连接超时 Timer 泄漏** (#3)
|
|
93
|
+
- `connect()` 中 `setTimeout` 创建的连接超时 timer 在成功连接后未清理
|
|
94
|
+
- 修复:保存 timeoutId 引用,`Promise.race` 成功后显式 `clearTimeout()`
|
|
229
95
|
|
|
230
|
-
|
|
96
|
+
- **`PrinterStatus` 状态查询超时 Timer 泄漏** (#4)
|
|
97
|
+
- `queryStatus()` 中超时 timer 在正常返回后仍驻留至超时触发
|
|
98
|
+
- 修复:使用相同 timer 清理模式
|
|
231
99
|
|
|
232
|
-
|
|
100
|
+
- **`PrintQueue` 重试定时器泄漏** (#5)
|
|
101
|
+
- 任务重试 `setTimeout` 未保存引用,`clear()` 时无法清理
|
|
102
|
+
- 修复:新增 `retryTimerId` 成员,`clear()` 时自动取消待执行的重试
|
|
233
103
|
|
|
234
|
-
###
|
|
104
|
+
### Changed
|
|
235
105
|
|
|
236
|
-
-
|
|
237
|
-
-
|
|
238
|
-
-
|
|
106
|
+
- **README 文档更新**
|
|
107
|
+
- 「高级打印」新增 ZPL 图像编码、CPCL Logo 下载条目
|
|
108
|
+
- 「打印机驱动」新增功能状态列,明确标注各驱动支持程度
|
|
109
|
+
- 「性能指标」测试用例数更新为 879(95.7% 通过率)
|
|
239
110
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
## [2.2.0] - 2026-01-04
|
|
243
|
-
|
|
244
|
-
### 新增
|
|
245
|
-
|
|
246
|
-
- **H5 WebBluetooth 适配器**: 新增浏览器 WebBluetooth 支持,完整实现 IPrinterAdapter 接口
|
|
247
|
-
- **TSPL 驱动**: 新增 TSPL 标签打印机协议支持
|
|
248
|
-
- **插件系统**: 支持插件扩展,可自定义驱动和适配器
|
|
249
|
-
- **模板引擎**: 支持模板定义和动态数据渲染
|
|
250
|
-
- **打印预览**: 支持打印前的可视化预览
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
## [2.1.2] - 2025-12-16
|
|
255
|
-
|
|
256
|
-
### 新增
|
|
111
|
+
### Security
|
|
257
112
|
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
- 图片处理优化
|
|
113
|
+
- 消除了所有已识别的 `setTimeout` 泄漏风险点(共 3 处)
|
|
114
|
+
- 资源清理路径审计通过:`disconnect` / `destroy` / `clear` 均能正确清理关联定时器
|
|
261
115
|
|
|
262
116
|
---
|
|
263
117
|
|
|
264
|
-
## [2.
|
|
265
|
-
|
|
266
|
-
### 新增
|
|
267
|
-
|
|
268
|
-
- 弱网适配
|
|
269
|
-
- 断点续传
|
|
270
|
-
- 图片处理优化
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## [2.1.0] - 2025-11-25
|
|
275
|
-
|
|
276
|
-
### 新增
|
|
277
|
-
|
|
278
|
-
- **支付宝小程序适配器**: 新增 AlipayAdapter,支持支付宝小程序环境
|
|
279
|
-
- **百度小程序适配器**: 新增 BaiduAdapter,支持百度小程序环境
|
|
280
|
-
- **字节跳动小程序适配器**: 新增 ByteDanceAdapter,支持字节跳动小程序环境
|
|
281
|
-
- **TSPL 驱动**: 新增 TSPL 标签打印机协议支持(部分)
|
|
282
|
-
- **离线缓存**: 支持离线缓存打印数据
|
|
283
|
-
- **打印队列**: 增强打印队列管理
|
|
284
|
-
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
## [2.0.3] - 2025-11-22
|
|
288
|
-
|
|
289
|
-
### 新增
|
|
290
|
-
|
|
291
|
-
- 完善的错误处理机制
|
|
292
|
-
- 日志系统
|
|
293
|
-
- 事件管理
|
|
294
|
-
- 全面测试覆盖
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## [2.0.2] - 2025-11-21
|
|
299
|
-
|
|
300
|
-
### 新增
|
|
301
|
-
|
|
302
|
-
- 图片打印支持
|
|
303
|
-
- 二维码生成支持
|
|
304
|
-
- 弱网络环境适配
|
|
305
|
-
- 断点续传支持
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## [2.0.1] - 2025-11-21
|
|
310
|
-
|
|
311
|
-
### 优化
|
|
312
|
-
|
|
313
|
-
- 项目结构简化和重构
|
|
314
|
-
- 修复 TypeScript 配置和导出问题
|
|
315
|
-
- 添加缺失的类型定义和蓝牙状态常量
|
|
316
|
-
- 完善 GitHub Actions CI/CD
|
|
317
|
-
|
|
318
|
-
---
|
|
319
|
-
|
|
320
|
-
## [2.0.0] - 2025-10-29
|
|
321
|
-
|
|
322
|
-
### 新增
|
|
323
|
-
|
|
324
|
-
- **现代化架构**: 完整的 React Hooks + Zustand 状态管理重写
|
|
325
|
-
- **ESC/POS 驱动**: 完整的 ESC/POS 协议支持
|
|
326
|
-
- **微信小程序适配器**: 完善的微信小程序蓝牙打印支持
|
|
327
|
-
- **WebBluetooth 适配器**: 基础 H5 浏览器蓝牙支持
|
|
328
|
-
- **完整 TypeScript 支持**: 完善的类型定义和类型安全
|
|
329
|
-
- **模块化设计**: 清晰的分层架构(驱动、适配器、服务)
|
|
330
|
-
|
|
331
|
-
---
|
|
332
|
-
|
|
333
|
-
## [1.0.9] - 2025-10-16
|
|
334
|
-
|
|
335
|
-
### 优化
|
|
336
|
-
|
|
337
|
-
- 项目结构和代码优化
|
|
338
|
-
- 为 v2.0 重写做准备
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
## [1.0.8] - 2025-03-25
|
|
343
|
-
|
|
344
|
-
### 优化
|
|
345
|
-
|
|
346
|
-
- 改进蓝牙连接稳定性
|
|
347
|
-
- 修复已知的连接问题
|
|
348
|
-
|
|
349
|
-
---
|
|
350
|
-
|
|
351
|
-
## [1.0.7] - 2025-03-17
|
|
352
|
-
|
|
353
|
-
### 优化
|
|
354
|
-
|
|
355
|
-
- 改进打印性能
|
|
356
|
-
- 代码优化
|
|
357
|
-
|
|
358
|
-
---
|
|
359
|
-
|
|
360
|
-
## [1.0.6] - 2025-03-17
|
|
361
|
-
|
|
362
|
-
### 新增
|
|
363
|
-
|
|
364
|
-
- 新增功能和改进
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## [1.0.5] - 2025-03-14
|
|
369
|
-
|
|
370
|
-
### 新增
|
|
371
|
-
|
|
372
|
-
- 新增功能和改进
|
|
373
|
-
|
|
374
|
-
---
|
|
375
|
-
|
|
376
|
-
## [1.0.4] - 2025-03-14
|
|
377
|
-
|
|
378
|
-
### 修复
|
|
379
|
-
|
|
380
|
-
- 修复已知问题
|
|
381
|
-
|
|
382
|
-
---
|
|
383
|
-
|
|
384
|
-
## [1.0.2] - 2025-03-12
|
|
385
|
-
|
|
386
|
-
### 优化
|
|
387
|
-
|
|
388
|
-
- 改进蓝牙连接和打印稳定性
|
|
389
|
-
|
|
390
|
-
---
|
|
391
|
-
|
|
392
|
-
## [1.0.1] - 2025-03-12
|
|
393
|
-
|
|
394
|
-
### 修复
|
|
395
|
-
|
|
396
|
-
- 修复初始版本中发现的问题
|
|
397
|
-
|
|
398
|
-
---
|
|
118
|
+
## [2.9.5] - 初始发布
|
|
399
119
|
|
|
400
|
-
|
|
120
|
+
初始发布版本,包含完整的跨平台蓝牙打印功能支持。
|
|
401
121
|
|
|
402
|
-
###
|
|
122
|
+
### 核心能力
|
|
403
123
|
|
|
404
|
-
-
|
|
405
|
-
-
|
|
406
|
-
-
|
|
124
|
+
- 7 大平台适配器:微信 / 支付宝 / 百度 / 字节跳动 / QQ 小程序 + H5 + React Native
|
|
125
|
+
- 8 种打印机驱动:ESC/POS、TSPL、ZPL、CPCL、STAR、佳博、芯烨、思普瑞特
|
|
126
|
+
- 完整打印生命周期:扫描 → 连接 → 打印 → 断开
|
|
127
|
+
- 丰富的打印特性:图片(Floyd-Steinberg 抖动)、QR/条码(10+ 格式)、模板引擎
|
|
128
|
+
- 运维体系:离线缓存、打印队列、多设备管理、历史统计、定时重试、插件系统
|