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.
Files changed (96) hide show
  1. package/CHANGELOG.md +72 -90
  2. package/README.md +195 -248
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.es.js +1 -1
  5. package/dist/index.umd.js +1 -1
  6. package/dist/types/adapters/AlipayAdapter.d.ts +0 -14
  7. package/dist/types/adapters/BaiduAdapter.d.ts +0 -14
  8. package/dist/types/adapters/BaseAdapter.d.ts +9 -3
  9. package/dist/types/adapters/ByteDanceAdapter.d.ts +0 -14
  10. package/dist/types/adapters/QQAdapter.d.ts +0 -18
  11. package/dist/types/adapters/TaroAdapter.d.ts +0 -14
  12. package/dist/types/core/BluetoothPrinter.d.ts +43 -287
  13. package/dist/types/drivers/{escPosDriver.d.ts → EscPosDriver.d.ts} +6 -0
  14. package/dist/types/drivers/GPrinterDriver.d.ts +1 -1
  15. package/dist/types/drivers/SprtDriver.d.ts +1 -1
  16. package/dist/types/drivers/XprinterDriver.d.ts +1 -1
  17. package/dist/types/drivers/index.d.ts +1 -1
  18. package/dist/types/encoding/index.d.ts +2 -2
  19. package/dist/types/errors/{baseError.d.ts → BaseError.d.ts} +6 -0
  20. package/dist/types/errors/CommandBuildError.d.ts +3 -17
  21. package/dist/types/errors/ConnectionError.d.ts +3 -20
  22. package/dist/types/errors/PrintJobError.d.ts +2 -18
  23. package/dist/types/errors/index.d.ts +1 -1
  24. package/dist/types/index.d.ts +3 -2
  25. package/dist/types/plugins/PluginManager.d.ts +2 -2
  26. package/dist/types/plugins/{types.d.ts → PluginTypes.d.ts} +1 -1
  27. package/dist/types/plugins/builtin/LoggingPlugin.d.ts +1 -1
  28. package/dist/types/plugins/builtin/RetryPlugin.d.ts +2 -2
  29. package/dist/types/plugins/index.d.ts +1 -1
  30. package/dist/types/services/CommandBuilder.d.ts +8 -151
  31. package/dist/types/services/ConnectionManager.d.ts +6 -1
  32. package/dist/types/services/PrintHistory.d.ts +14 -27
  33. package/dist/types/services/PrintJobManager.d.ts +24 -140
  34. package/dist/types/utils/BoundedOrderedMap.d.ts +47 -0
  35. package/package.json +4 -2
  36. package/src/adapters/AdapterFactory.ts +1 -1
  37. package/src/adapters/AlipayAdapter.ts +3 -21
  38. package/src/adapters/BaiduAdapter.ts +3 -21
  39. package/src/adapters/BaseAdapter.ts +27 -18
  40. package/src/adapters/ByteDanceAdapter.ts +3 -21
  41. package/src/adapters/ChunkWriteStrategy.ts +1 -1
  42. package/src/adapters/QQAdapter.ts +3 -25
  43. package/src/adapters/ReactNativeAdapter.ts +7 -5
  44. package/src/adapters/TaroAdapter.ts +5 -20
  45. package/src/adapters/WebBluetoothAdapter.ts +1 -1
  46. package/src/config/PrinterConfigManager.ts +1 -1
  47. package/src/core/BluetoothPrinter.ts +114 -421
  48. package/src/device/DeviceManager.ts +1 -1
  49. package/src/device/MultiPrinterManager.ts +1 -1
  50. package/src/drivers/CpclDriver.ts +1 -1
  51. package/src/drivers/{escPosDriver.ts → EscPosDriver.ts} +14 -15
  52. package/src/drivers/GPrinterDriver.ts +1 -1
  53. package/src/drivers/SprtDriver.ts +1 -1
  54. package/src/drivers/XprinterDriver.ts +1 -1
  55. package/src/drivers/ZplDriver.ts +1 -1
  56. package/src/drivers/index.ts +1 -1
  57. package/src/encoding/EncodingService.ts +2 -2
  58. package/src/encoding/{gbk-table.ts → GbkTable.ts} +2 -2
  59. package/src/encoding/index.ts +2 -2
  60. package/src/errors/{baseError.ts → BaseError.ts} +9 -0
  61. package/src/errors/CommandBuildError.ts +19 -30
  62. package/src/errors/ConnectionError.ts +9 -37
  63. package/src/errors/PrintJobError.ts +10 -32
  64. package/src/errors/index.ts +1 -1
  65. package/src/factory/PrinterFactory.ts +1 -1
  66. package/src/index.ts +3 -2
  67. package/src/plugins/PluginManager.ts +7 -5
  68. package/src/plugins/{types.ts → PluginTypes.ts} +1 -1
  69. package/src/plugins/builtin/LoggingPlugin.ts +1 -1
  70. package/src/plugins/builtin/RetryPlugin.ts +2 -2
  71. package/src/plugins/index.ts +1 -1
  72. package/src/preview/PreviewRenderer.ts +1 -1
  73. package/src/queue/PrintQueue.ts +1 -1
  74. package/src/services/BatchPrintManager.ts +1 -1
  75. package/src/services/CloudPrintManager.ts +1 -1
  76. package/src/services/CommandBuilder.ts +35 -193
  77. package/src/services/ConnectionManager.ts +28 -21
  78. package/src/services/PrintHistory.ts +43 -120
  79. package/src/services/PrintJobManager.ts +148 -331
  80. package/src/services/PrintScheduler.ts +1 -1
  81. package/src/template/engines/TemplateRenderer.ts +1 -1
  82. package/src/utils/BoundedOrderedMap.ts +120 -0
  83. package/src/utils/image.ts +1 -1
  84. package/dist/types/utils/errorHandler.d.ts +0 -78
  85. package/dist/types/utils/validation.d.ts +0 -8
  86. package/src/utils/errorHandler.ts +0 -196
  87. package/src/utils/validation.ts +0 -9
  88. /package/dist/types/drivers/{barcode-helpers.d.ts → BarcodeHelpers.d.ts} +0 -0
  89. /package/dist/types/encoding/{gbk-data.d.ts → GbkData.d.ts} +0 -0
  90. /package/dist/types/encoding/{gbk-lite.d.ts → GbkLite.d.ts} +0 -0
  91. /package/dist/types/encoding/{gbk-table.d.ts → GbkTable.d.ts} +0 -0
  92. /package/dist/types/encoding/{korean-japanese.d.ts → KoreanJapanese.d.ts} +0 -0
  93. /package/src/drivers/{barcode-helpers.ts → BarcodeHelpers.ts} +0 -0
  94. /package/src/encoding/{gbk-data.ts → GbkData.ts} +0 -0
  95. /package/src/encoding/{gbk-lite.ts → GbkLite.ts} +0 -0
  96. /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.13.0] - 2026-05-27
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
- - 新增 `src/drivers/barcode-helpers.ts`条码便捷方法 mixin
39
- - BaseAdapter 新增共享依赖重导出
40
-
41
- ### Testing
42
-
43
- - 1,102 tests passed, 38 skipped, 0 regressions
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
- - 源代码: 25,828 行 → 24,687 行(-1,141 行,-4.4%)
51
- - 源文件: 96 个 → 84 个(-12 个)
52
- - 构建产物: 631 KB(gzip 231 KB)
53
-
54
- ---
14
+ ### Changed
55
15
 
56
- ## [2.12.0] - 2026-05-25
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
- ### Changed
22
+ ### Assets
59
23
 
60
- - **代码质量优化**: 全面消除 ESLint 错误和警告
61
- - **测试覆盖率提升**: 从 64% 提升至 80.87%
62
- - **Bug 修复**: sendAudioData 无限循环(catch 块缺少 break)
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
- ### Testing
34
+ ### Documentation
65
35
 
66
- - 434 tests passed
67
- - coverage: 80.87%
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.11.0] - 2026-05-04
42
+ ## [2.14.0] - 2026-07-07
72
43
 
73
44
  ### Changed
74
45
 
75
- - **错误体系统一**: 14 `throw new Error()` 迁移为 `BluetoothPrintError` + `ErrorCode`,覆盖 ReactNativeAdapter、DeviceManager、PrinterConfigManager、PrinterFactory、PreviewRenderer、PrintQueue、CloudPrintManager、PrintJobManager、PrintScheduler、image.ts
76
- - **DiscoveryService.ts**: 移除顶部 3 eslint-disable 规则,清理注释代码
77
- - **TemplateRenderer.ts**: `itemData: any` `Record<string, unknown>`,移除 3 处行内 eslint-disable
78
- - **outputLimiter.ts**: batchProcess 错误处理规范化(instanceof Error 守卫 + message 输出)
79
- - **魔数提取**: ChunkWriteStrategy 提取 7 个常量(CHUNK_SIZE_STEP、DELAY_BACKOFF_FACTOR 等),PrintHistory 提取 DEFAULT_MAX_ENTRIES,TemplateRenderer/TemplateEngine 提取 DEFAULT_PAPER_WIDTH
80
-
81
- ### Added
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
- All notable changes to this project will be documented in this file.
57
+ - `src/utils/validation.ts` deprecated stub,无任何引用
94
58
 
95
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
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
- ## [2.10.2] - 2026-05-02
68
+ ### Refactoring Metrics
101
69
 
102
- ### Fixed
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
- - **代码质量优化 — 消除所有 ESLint 错误** (#37 → 0)
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