taro-bluetooth-print 2.13.0 → 2.15.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/CHANGELOG.md +72 -90
- package/README.md +195 -248
- 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/AlipayAdapter.d.ts +0 -14
- package/dist/types/adapters/BaiduAdapter.d.ts +0 -14
- package/dist/types/adapters/BaseAdapter.d.ts +9 -3
- package/dist/types/adapters/ByteDanceAdapter.d.ts +0 -14
- package/dist/types/adapters/QQAdapter.d.ts +0 -18
- package/dist/types/adapters/TaroAdapter.d.ts +0 -14
- package/dist/types/core/BluetoothPrinter.d.ts +43 -287
- package/dist/types/drivers/{escPosDriver.d.ts → EscPosDriver.d.ts} +6 -0
- package/dist/types/drivers/GPrinterDriver.d.ts +1 -1
- package/dist/types/drivers/SprtDriver.d.ts +1 -1
- package/dist/types/drivers/XprinterDriver.d.ts +1 -1
- package/dist/types/drivers/index.d.ts +1 -1
- package/dist/types/encoding/index.d.ts +2 -2
- package/dist/types/errors/{baseError.d.ts → BaseError.d.ts} +6 -0
- package/dist/types/errors/CommandBuildError.d.ts +3 -17
- package/dist/types/errors/ConnectionError.d.ts +3 -20
- package/dist/types/errors/PrintJobError.d.ts +2 -18
- package/dist/types/errors/index.d.ts +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/plugins/PluginManager.d.ts +2 -2
- package/dist/types/plugins/{types.d.ts → PluginTypes.d.ts} +1 -1
- package/dist/types/plugins/builtin/LoggingPlugin.d.ts +1 -1
- package/dist/types/plugins/builtin/RetryPlugin.d.ts +2 -2
- package/dist/types/plugins/index.d.ts +1 -1
- package/dist/types/services/CommandBuilder.d.ts +8 -151
- package/dist/types/services/ConnectionManager.d.ts +6 -1
- package/dist/types/services/PrintHistory.d.ts +14 -27
- package/dist/types/services/PrintJobManager.d.ts +24 -140
- package/dist/types/utils/BoundedOrderedMap.d.ts +47 -0
- package/package.json +4 -2
- package/src/adapters/AdapterFactory.ts +1 -1
- package/src/adapters/AlipayAdapter.ts +3 -21
- package/src/adapters/BaiduAdapter.ts +3 -21
- package/src/adapters/BaseAdapter.ts +27 -18
- package/src/adapters/ByteDanceAdapter.ts +3 -21
- package/src/adapters/ChunkWriteStrategy.ts +1 -1
- package/src/adapters/QQAdapter.ts +3 -25
- package/src/adapters/ReactNativeAdapter.ts +7 -5
- package/src/adapters/TaroAdapter.ts +5 -20
- package/src/adapters/WebBluetoothAdapter.ts +1 -1
- package/src/config/PrinterConfigManager.ts +1 -1
- package/src/core/BluetoothPrinter.ts +114 -421
- package/src/device/DeviceManager.ts +1 -1
- package/src/device/MultiPrinterManager.ts +1 -1
- package/src/drivers/CpclDriver.ts +1 -1
- package/src/drivers/{escPosDriver.ts → EscPosDriver.ts} +14 -15
- package/src/drivers/GPrinterDriver.ts +1 -1
- package/src/drivers/SprtDriver.ts +1 -1
- package/src/drivers/XprinterDriver.ts +1 -1
- package/src/drivers/ZplDriver.ts +1 -1
- package/src/drivers/index.ts +1 -1
- package/src/encoding/EncodingService.ts +2 -2
- package/src/encoding/{gbk-table.ts → GbkTable.ts} +2 -2
- package/src/encoding/index.ts +2 -2
- package/src/errors/{baseError.ts → BaseError.ts} +9 -0
- package/src/errors/CommandBuildError.ts +19 -30
- package/src/errors/ConnectionError.ts +9 -37
- package/src/errors/PrintJobError.ts +10 -32
- package/src/errors/index.ts +1 -1
- package/src/factory/PrinterFactory.ts +1 -1
- package/src/index.ts +3 -2
- package/src/plugins/PluginManager.ts +7 -5
- package/src/plugins/{types.ts → PluginTypes.ts} +1 -1
- package/src/plugins/builtin/LoggingPlugin.ts +1 -1
- package/src/plugins/builtin/RetryPlugin.ts +2 -2
- package/src/plugins/index.ts +1 -1
- package/src/preview/PreviewRenderer.ts +1 -1
- package/src/queue/PrintQueue.ts +1 -1
- package/src/services/BatchPrintManager.ts +1 -1
- package/src/services/CloudPrintManager.ts +1 -1
- package/src/services/CommandBuilder.ts +35 -193
- package/src/services/ConnectionManager.ts +28 -21
- package/src/services/PrintHistory.ts +43 -120
- package/src/services/PrintJobManager.ts +148 -331
- package/src/services/PrintScheduler.ts +1 -1
- package/src/template/engines/TemplateRenderer.ts +1 -1
- package/src/utils/BoundedOrderedMap.ts +120 -0
- package/src/utils/image.ts +1 -1
- package/dist/types/utils/errorHandler.d.ts +0 -78
- package/dist/types/utils/validation.d.ts +0 -8
- package/src/utils/errorHandler.ts +0 -196
- package/src/utils/validation.ts +0 -9
- /package/dist/types/drivers/{barcode-helpers.d.ts → BarcodeHelpers.d.ts} +0 -0
- /package/dist/types/encoding/{gbk-data.d.ts → GbkData.d.ts} +0 -0
- /package/dist/types/encoding/{gbk-lite.d.ts → GbkLite.d.ts} +0 -0
- /package/dist/types/encoding/{gbk-table.d.ts → GbkTable.d.ts} +0 -0
- /package/dist/types/encoding/{korean-japanese.d.ts → KoreanJapanese.d.ts} +0 -0
- /package/src/drivers/{barcode-helpers.ts → BarcodeHelpers.ts} +0 -0
- /package/src/encoding/{gbk-data.ts → GbkData.ts} +0 -0
- /package/src/encoding/{gbk-lite.ts → GbkLite.ts} +0 -0
- /package/src/encoding/{korean-japanese.ts → KoreanJapanese.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,115 +1,97 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [2.
|
|
4
|
-
|
|
5
|
-
### Changed
|
|
6
|
-
|
|
7
|
-
- **架构精简**: 移除过度工程的 DI 容器系统(Container、Tokens、ServiceProvider、di-factory),约 1,048 行冗余代码
|
|
8
|
-
- **事件系统统一**: 移除冗余的 EventBus,统一使用类型安全的 EventEmitter
|
|
9
|
-
- **插件系统统一**: 移除冗余的 core/plugin PluginManager,保留 plugins/PluginManager
|
|
10
|
-
- **代码重复消除**: 重复率从 0.57% 降至 0%(8 个克隆 → 0 个)
|
|
11
|
-
- TemplateRenderer 提取 `buildTableSeparatorLine` 和 `renderFillLines` 辅助方法
|
|
12
|
-
- CpclDriver/ZplDriver 提取 `barcode-helpers.ts` mixin 模式
|
|
13
|
-
- BaseAdapter 统一重导出共享依赖,消除 ReactNativeAdapter 重复导入
|
|
14
|
-
- PreviewRenderer 合并 handleESC/handleGS 为 `handleControlSequence`
|
|
15
|
-
- gbk-lite.ts 数据去重(582 → 106 条目,减少 81.8%)
|
|
16
|
-
- **类型安全提升**: 类型断言从 124 处降至 73 处
|
|
17
|
-
- EventEmitter 内部存储改用映射类型,消除 10+ 类型断言
|
|
18
|
-
- 消除所有 `as` 类型转换中的不必要断言
|
|
19
|
-
- **错误处理改进**: 修复 6 处空 catch 块,所有异常均记录日志
|
|
20
|
-
- CloudPrintManager、QRCodeDiscoveryService、PrinterStatus、PrintScheduler
|
|
21
|
-
- **魔法数字提取**: 8 个硬编码数字提取为命名常量
|
|
22
|
-
- `DEFAULT_HEARTBEAT_INTERVAL`、`DEFAULT_RECONNECT_INTERVAL`、`DEFAULT_CONNECTION_TIMEOUT`
|
|
23
|
-
- `DEFAULT_RETRY_BASE_DELAY`、`DEFAULT_RETRY_MAX_DELAY`、`MAX_TIMEOUT_MS`
|
|
24
|
-
- **工厂模式简化**: 移除 `PrinterFactory` 对象包装,保留 `createBluetoothPrinter` 和 `createWebBluetoothPrinter` 函数
|
|
25
|
-
|
|
26
|
-
### Removed
|
|
27
|
-
|
|
28
|
-
- 删除 `src/core/di/` 目录(Container.ts、Tokens.ts、index.ts)
|
|
29
|
-
- 删除 `src/core/event/` 目录(EventBus.ts、index.ts)
|
|
30
|
-
- 删除 `src/core/plugin/` 目录(PluginManager.ts、index.ts)
|
|
31
|
-
- 删除 `src/providers/` 目录(ServiceProvider.ts、index.ts)
|
|
32
|
-
- 删除 `src/factory/di-factory.ts`
|
|
33
|
-
- 删除 5 个对应的测试文件
|
|
34
|
-
- 删除根目录多余报告文档(ARCHITECTURE_ANALYSIS.md、CODE_DUPLICATION_REPORT.md、RELEASE_v2.9.6.md)
|
|
3
|
+
## [2.15.0] - 2026-07-07
|
|
35
4
|
|
|
36
5
|
### Added
|
|
37
6
|
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
- type-check: 0 errors
|
|
45
|
-
- build: 通过
|
|
46
|
-
- 代码重复率: 0%(jscpd 检测)
|
|
47
|
-
|
|
48
|
-
### Performance
|
|
7
|
+
- **Professional Documentation Redesign** — Complete visual overhaul of docs site with custom brand identity
|
|
8
|
+
- 6 new SVG logo variants (primary, mark, dark, wordmark, OG cover, hero banner)
|
|
9
|
+
- Reimagined docs landing page with hero banner, feature cards, and compatibility matrix
|
|
10
|
+
- Full Mermaid architecture diagrams (6-layer system, connection sequence, print flow)
|
|
11
|
+
- **Online Documentation Link** — `homepage` and `documentation` fields added to `package.json`
|
|
12
|
+
- Live docs: https://agions.github.io/taro-bluetooth-print/
|
|
49
13
|
|
|
50
|
-
|
|
51
|
-
- 源文件: 96 个 → 84 个(-12 个)
|
|
52
|
-
- 构建产物: 631 KB(gzip 231 KB)
|
|
53
|
-
|
|
54
|
-
---
|
|
14
|
+
### Changed
|
|
55
15
|
|
|
56
|
-
|
|
16
|
+
- **README.md** — Hero section with brand badges, 4 why-choose cards, architecture mermaid diagram, 8×7 platform compatibility matrix, error handling pattern guide, and plugin ecosystem section (360 → 443 lines)
|
|
17
|
+
- **docs/index.md** — VitePress hero with `hero-banner.svg`, 6 feature cards, full protocol×platform matrix, 6 highlight cards with hover effects (154 → 305 lines)
|
|
18
|
+
- **docs/guide/architecture.md** — Added mermaid `flowchart TD` (6-layer architecture), `sequenceDiagram` (connection flow + print flow), detailed layer responsibility table
|
|
19
|
+
- **docs/.vitepress/config.ts** — Updated SEO meta tags, OG image (`og-cover.svg`), brand theme color (`#6366f1`)
|
|
20
|
+
- **Brand Identity** — Unified design language: indigo → cyan gradient (`#4338ca` → `#6366f1` → `#0891b2`), rounded-receipt motif, Bluetooth waveform arcs, 7×7 QR matrix
|
|
57
21
|
|
|
58
|
-
###
|
|
22
|
+
### Assets
|
|
59
23
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
24
|
+
| File | Size | Purpose |
|
|
25
|
+
|:---|:---|:---|
|
|
26
|
+
| `docs/public/logo.svg` | 240×240 | Primary logo (gradient plate + receipt + BT arcs) |
|
|
27
|
+
| `docs/public/logo-mark.svg` | 64×64 | Compact icon-only variant |
|
|
28
|
+
| `docs/public/logo-dark.svg` | 240×240 | Dark background variant |
|
|
29
|
+
| `docs/public/wordmark.svg` | 560×96 | Horizontal logo with tagline |
|
|
30
|
+
| `docs/public/og-cover.svg` | 1200×630 | Social sharing card |
|
|
31
|
+
| `docs/public/hero-banner.svg` | 1600×400 | Docs landing page hero |
|
|
32
|
+
| `docs/public/favicon.svg` | 32×32 | Browser tab favicon (redesigned) |
|
|
63
33
|
|
|
64
|
-
###
|
|
34
|
+
### Documentation
|
|
65
35
|
|
|
66
|
-
-
|
|
67
|
-
-
|
|
36
|
+
- All SVG assets are inline-path (0 external dependencies)
|
|
37
|
+
- Docs build time: 19.3s, 0 errors
|
|
38
|
+
- Mermaid diagrams render correctly in VitePress
|
|
68
39
|
|
|
69
40
|
---
|
|
70
41
|
|
|
71
|
-
## [2.
|
|
42
|
+
## [2.14.0] - 2026-07-07
|
|
72
43
|
|
|
73
44
|
### Changed
|
|
74
45
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- 新增 ErrorCode: `QUEUE_FULL`、`QUEUE_JOB_NOT_FOUND`、`PREVIEW_FAILED`
|
|
84
|
-
|
|
85
|
-
### Testing
|
|
86
|
-
|
|
87
|
-
- 985 tests passed, 38 skipped, 0 regressions
|
|
88
|
-
- type-check: 0 errors
|
|
89
|
-
- lint: 0 errors
|
|
46
|
+
- **核心引擎解耦**: `BluetoothPrinter` 抽出 `handleError()` 与 `resolveConnectionManager()` helper,消除 4 处 try/catch 模板
|
|
47
|
+
- **命令构建器精简**: `CommandBuilder` 抽出 `pushCommands()` helper,消除 7 处 `buffer.push + invalidateCache` 重复
|
|
48
|
+
- **适配器分层**: 5 个 mini-program adapter(Taro / Alipay / Baidu / ByteDance / QQ)精简为薄壳类(-69% 平均)
|
|
49
|
+
- **服务层去重**: `ConnectionManager.classifyConnectError()`、`PrintJobManager.wrapError()` 抽离,消除嵌套三元
|
|
50
|
+
- **错误类去重**: `ConnectionError` / `PrintJobError` 移除冗余 mapping 表(基于字符串值与 `ErrorCode` 完全一致);`CommandBuildError` 仅保留 DRIVER_ERROR 单条映射
|
|
51
|
+
- **类型黑洞修复**: `PluginManager.executeHook()` 移除 `@ts-expect-error`,改用显式类型守卫
|
|
52
|
+
- **命名规范统一**: 冻结 PascalCase(类文件)/ camelCase(工具文件)/ `I`-prefix(接口)/ 0 下划线前缀 4 条规则
|
|
53
|
+
- **API 表面补完**: `src/index.ts` 新增 `QQAdapter` 导出
|
|
90
54
|
|
|
91
|
-
|
|
55
|
+
### Removed
|
|
92
56
|
|
|
93
|
-
|
|
57
|
+
- `src/utils/validation.ts` — deprecated 空 stub,无任何引用
|
|
94
58
|
|
|
95
|
-
|
|
96
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
59
|
+
### Renamed
|
|
97
60
|
|
|
98
|
-
|
|
61
|
+
- `drivers/escPosDriver.ts` → `drivers/EscPosDriver.ts`
|
|
62
|
+
- `drivers/barcode-helpers.ts` → `drivers/BarcodeHelpers.ts`
|
|
63
|
+
- `errors/baseError.ts` → `errors/BaseError.ts`
|
|
64
|
+
- `plugins/types.ts` → `plugins/PluginTypes.ts`
|
|
65
|
+
- `encoding/gbk-{table,lite,data}.ts` → `encoding/Gbk{Table,Lite,Data}.ts`
|
|
66
|
+
- `encoding/korean-japanese.ts` → `encoding/KoreanJapanese.ts`
|
|
99
67
|
|
|
100
|
-
|
|
68
|
+
### Refactoring Metrics
|
|
101
69
|
|
|
102
|
-
|
|
70
|
+
| 指标 | Before | After | Δ |
|
|
71
|
+
|---|---:|---:|---:|
|
|
72
|
+
| `BluetoothPrinter.ts` | 433 行 | 277 行 | **-36%** |
|
|
73
|
+
| `CommandBuilder.ts` | 315 行 | 158 行 | **-50%** |
|
|
74
|
+
| `PrintJobManager.ts` | 539 行 | 386 行 | **-28%** |
|
|
75
|
+
| 5 mini-program adapters | ~200 行 | ~62 行 | **-69%** |
|
|
76
|
+
| 3 error classes | 225 行 | 142 行 | **-37%** |
|
|
77
|
+
| **Total** | **23,355 行** | **22,567 行** | **-788 / -3.4%** |
|
|
103
78
|
|
|
104
|
-
|
|
105
|
-
- 移除 3 个文件顶部 `eslint-disable`(共 18 条规则绕过)
|
|
106
|
-
- 修复所有非空断言 (`!`) — `Uint8Array[i]!`、`parts[x]!`、`job.nextRunTime!` 等
|
|
107
|
-
- 修复所有 `any` 类型绕过 — `as string` 改为 `typeof` 运行时检查
|
|
108
|
-
- JSON.parse 结果改用 `as Record<string, unknown>` + 类型守卫访问
|
|
109
|
-
- 异步方法 `void` → `await`,消除 `require-await` 错误
|
|
110
|
-
- `Record<string, any>` → `Record<string, unknown>`
|
|
111
|
-
- 消除 `no-base-to-string`:`String(value)` → `JSON.stringify(value)`
|
|
112
|
-
- 消除 `no-unused-vars`:废弃变量改为 `void timeout`
|
|
113
|
-
- **零 ESLint 警告/错误、零非空断言、零行内 eslint-disable 残留**
|
|
79
|
+
### Testing
|
|
114
80
|
|
|
115
|
-
|
|
81
|
+
- 1,102 tests passed, 38 skipped, 0 regressions
|
|
82
|
+
- type-check: 0 errors (strict + noUncheckedIndexedAccess 全开)
|
|
83
|
+
- eslint: 0 errors / 0 warnings
|
|
84
|
+
- vite build: 22.84s · 230.91 KB gzip(基线 22.25s · 230.58 KB gzip)
|
|
85
|
+
- GitHub Actions CI: ✅ success (Run #28835694715)
|
|
86
|
+
|
|
87
|
+
### Commits
|
|
88
|
+
|
|
89
|
+
7 个 conventional commits 落地 (`be2fbdc..06f5ede`):
|
|
90
|
+
|
|
91
|
+
- `2fc1f2d` refactor(core): simplify BluetoothPrinter & CommandBuilder
|
|
92
|
+
- `27fdd6a` refactor(services): dedup ConnectionManager + PrintJobManager
|
|
93
|
+
- `c6adaf6` refactor(adapters): deduplicate mini-program adapters and BaseAdapter imports
|
|
94
|
+
- `2bf28f6` refactor: enforce PascalCase file naming for class-bearing modules
|
|
95
|
+
- `6dfe1c5` refactor: remove @ts-expect-error and dead code
|
|
96
|
+
- `8e9193d` refactor(errors): deduplicate error-code mapping tables
|
|
97
|
+
- `06f5ede` chore: update import paths after PascalCase file renames
|