taro-bluetooth-print 2.9.0 → 2.9.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 (65) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/README.md +53 -4
  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/core/di/Container.d.ts +84 -0
  7. package/dist/types/core/di/Tokens.d.ts +29 -0
  8. package/dist/types/core/di/index.d.ts +3 -0
  9. package/dist/types/core/event/EventBus.d.ts +66 -0
  10. package/dist/types/core/event/index.d.ts +2 -0
  11. package/dist/types/core/index.d.ts +5 -4
  12. package/dist/types/core/plugin/PluginManager.d.ts +64 -0
  13. package/dist/types/core/plugin/index.d.ts +2 -0
  14. package/dist/types/device/MultiPrinterManager.d.ts +2 -0
  15. package/dist/types/factory/di-factory.d.ts +52 -0
  16. package/dist/types/index.d.ts +5 -1
  17. package/dist/types/providers/ServiceProvider.d.ts +56 -0
  18. package/dist/types/providers/index.d.ts +2 -0
  19. package/dist/types/template/TemplateEngine.d.ts +24 -68
  20. package/dist/types/template/engines/TemplateRenderer.d.ts +71 -0
  21. package/dist/types/template/parsers/TemplateParser.d.ts +23 -0
  22. package/dist/types/utils/index.d.ts +8 -0
  23. package/dist/types/utils/logger.d.ts +4 -3
  24. package/dist/types/utils/outputLimiter.d.ts +87 -0
  25. package/dist/types/utils/validation.d.ts +11 -309
  26. package/dist/types/utils/validators/array.d.ts +19 -0
  27. package/dist/types/utils/validators/buffer.d.ts +18 -0
  28. package/dist/types/utils/validators/chain.d.ts +31 -0
  29. package/dist/types/utils/validators/common.d.ts +22 -0
  30. package/dist/types/utils/validators/number.d.ts +20 -0
  31. package/dist/types/utils/validators/object.d.ts +24 -0
  32. package/dist/types/utils/validators/printer.d.ts +40 -0
  33. package/dist/types/utils/validators/types.d.ts +125 -0
  34. package/dist/types/utils/validators/uuid.d.ts +23 -0
  35. package/package.json +1 -1
  36. package/src/core/BluetoothPrinter.ts +2 -1
  37. package/src/core/di/Container.ts +332 -0
  38. package/src/core/di/Tokens.ts +45 -0
  39. package/src/core/di/index.ts +3 -0
  40. package/src/core/event/EventBus.ts +251 -0
  41. package/src/core/event/index.ts +2 -0
  42. package/src/core/index.ts +10 -4
  43. package/src/core/plugin/PluginManager.ts +161 -0
  44. package/src/core/plugin/index.ts +2 -0
  45. package/src/device/MultiPrinterManager.ts +15 -6
  46. package/src/factory/di-factory.ts +61 -0
  47. package/src/index.ts +50 -1
  48. package/src/providers/ServiceProvider.ts +213 -0
  49. package/src/providers/index.ts +2 -0
  50. package/src/template/TemplateEngine.ts +27 -792
  51. package/src/template/engines/TemplateRenderer.ts +762 -0
  52. package/src/template/parsers/TemplateParser.ts +94 -0
  53. package/src/utils/index.ts +9 -0
  54. package/src/utils/logger.ts +17 -4
  55. package/src/utils/outputLimiter.ts +227 -0
  56. package/src/utils/validation.ts +21 -1138
  57. package/src/utils/validators/array.ts +95 -0
  58. package/src/utils/validators/buffer.ts +81 -0
  59. package/src/utils/validators/chain.ts +181 -0
  60. package/src/utils/validators/common.ts +216 -0
  61. package/src/utils/validators/number.ts +101 -0
  62. package/src/utils/validators/object.ts +63 -0
  63. package/src/utils/validators/printer.ts +294 -0
  64. package/src/utils/validators/types.ts +105 -0
  65. package/src/utils/validators/uuid.ts +49 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Service Provider Module
3
+ *
4
+ * 将现有服务层注册到 DI 容器
5
+ */
6
+
7
+ import {
8
+ rootContainer,
9
+ CONNECTION_MANAGER_TOKEN,
10
+ PRINT_JOB_MANAGER_TOKEN,
11
+ COMMAND_BUILDER_TOKEN,
12
+ DEVICE_MANAGER_TOKEN,
13
+ PRINT_QUEUE_TOKEN,
14
+ OFFLINE_CACHE_TOKEN,
15
+ CONFIG_MANAGER_TOKEN,
16
+ PRINTER_STATUS_TOKEN,
17
+ PRINT_HISTORY_TOKEN,
18
+ PRINT_STATISTICS_TOKEN,
19
+ CLOUD_PRINT_MANAGER_TOKEN,
20
+ SCHEDULED_RETRY_MANAGER_TOKEN,
21
+ BATCH_PRINT_MANAGER_TOKEN,
22
+ EVENT_BUS_TOKEN,
23
+ PLUGIN_MANAGER_TOKEN,
24
+ ADAPTER_TOKEN,
25
+ } from '@/core';
26
+
27
+ import { ConnectionManager } from '@/services/ConnectionManager';
28
+ import { PrintJobManager } from '@/services/PrintJobManager';
29
+ import { CommandBuilder } from '@/services/CommandBuilder';
30
+ import { DeviceManager } from '@/device/DeviceManager';
31
+ import { PrintQueue } from '@/queue/PrintQueue';
32
+ import { OfflineCache } from '@/cache/OfflineCache';
33
+ import { PrinterConfigManager } from '@/config/PrinterConfigManager';
34
+ import { PrinterStatus } from '@/services/PrinterStatus';
35
+ import { PrintHistory } from '@/services/PrintHistory';
36
+ import { PrintStatistics } from '@/services/PrintStatistics';
37
+ import { CloudPrintManager } from '@/services/CloudPrintManager';
38
+ import { ScheduledRetryManager } from '@/services/ScheduledRetryManager';
39
+ import { BatchPrintManager } from '@/services/BatchPrintManager';
40
+ import { globalEventBus, EventBus } from '@/core/event/EventBus';
41
+ import { PluginManager } from '@/core/plugin/PluginManager';
42
+ import { AdapterFactory } from '@/adapters/AdapterFactory';
43
+ import type { Container } from '@/core/di/Container';
44
+
45
+ /**
46
+ * 服务提供者配置选项
47
+ */
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ export interface ServiceProviderOptions {
50
+ /** 是否启用全局事件总线 */
51
+ useGlobalEventBus?: boolean;
52
+ /** 自定义配置 */
53
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
+ config?: Record<string, unknown>;
55
+ }
56
+
57
+ /**
58
+ * 注册所有服务到 DI 容器
59
+ */
60
+ export function registerServices(options: ServiceProviderOptions = {}): void {
61
+ const { useGlobalEventBus = true } = options;
62
+
63
+ // 1. 注册事件总线(全局或新建)
64
+ rootContainer.register(EVENT_BUS_TOKEN, {
65
+ useValue: useGlobalEventBus ? globalEventBus : new EventBus(),
66
+ lifecycle: 'singleton',
67
+ });
68
+
69
+ // 2. 注册适配器(工厂模式)
70
+ rootContainer.register(ADAPTER_TOKEN, {
71
+ useFactory: () => AdapterFactory.create(),
72
+ lifecycle: 'singleton',
73
+ });
74
+
75
+ // 3. 注册连接管理器
76
+ rootContainer.register(CONNECTION_MANAGER_TOKEN, {
77
+ useClass: ConnectionManager,
78
+ lifecycle: 'singleton',
79
+ });
80
+
81
+ // 4. 注册打印任务管理器
82
+ rootContainer.register(PRINT_JOB_MANAGER_TOKEN, {
83
+ useClass: PrintJobManager,
84
+ lifecycle: 'singleton',
85
+ });
86
+
87
+ // 5. 注册命令构建器
88
+ rootContainer.register(COMMAND_BUILDER_TOKEN, {
89
+ useClass: CommandBuilder,
90
+ lifecycle: 'transient',
91
+ });
92
+
93
+ // 6. 注册设备管理器
94
+ rootContainer.register(DEVICE_MANAGER_TOKEN, {
95
+ useClass: DeviceManager,
96
+ lifecycle: 'singleton',
97
+ });
98
+
99
+ // 7. 注册打印队列
100
+ rootContainer.register(PRINT_QUEUE_TOKEN, {
101
+ useClass: PrintQueue,
102
+ lifecycle: 'singleton',
103
+ });
104
+
105
+ // 8. 注册离线缓存
106
+ rootContainer.register(OFFLINE_CACHE_TOKEN, {
107
+ useClass: OfflineCache,
108
+ lifecycle: 'singleton',
109
+ });
110
+
111
+ // 9. 注册配置管理器
112
+ rootContainer.register(CONFIG_MANAGER_TOKEN, {
113
+ useClass: PrinterConfigManager,
114
+ lifecycle: 'singleton',
115
+ });
116
+
117
+ // 10. 注册打印机状态服务
118
+ rootContainer.register(PRINTER_STATUS_TOKEN, {
119
+ useClass: PrinterStatus,
120
+ lifecycle: 'singleton',
121
+ });
122
+
123
+ // 11. 注册打印历史服务
124
+ rootContainer.register(PRINT_HISTORY_TOKEN, {
125
+ useClass: PrintHistory,
126
+ lifecycle: 'singleton',
127
+ });
128
+
129
+ // 12. 注册打印统计服务
130
+ rootContainer.register(PRINT_STATISTICS_TOKEN, {
131
+ useClass: PrintStatistics,
132
+ lifecycle: 'singleton',
133
+ });
134
+
135
+ // 13. 注册云打印管理器
136
+ rootContainer.register(CLOUD_PRINT_MANAGER_TOKEN, {
137
+ useClass: CloudPrintManager,
138
+ lifecycle: 'singleton',
139
+ });
140
+
141
+ // 14. 注册定时重试管理器
142
+ rootContainer.register(SCHEDULED_RETRY_MANAGER_TOKEN, {
143
+ useClass: ScheduledRetryManager,
144
+ lifecycle: 'singleton',
145
+ });
146
+
147
+ // 15. 注册批量打印管理器
148
+ rootContainer.register(BATCH_PRINT_MANAGER_TOKEN, {
149
+ useClass: BatchPrintManager,
150
+ lifecycle: 'singleton',
151
+ });
152
+
153
+ // 16. 注册插件管理器
154
+ rootContainer.register(PLUGIN_MANAGER_TOKEN, {
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unnecessary-type-assertion
156
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
157
+ useFactory: (container: Container) => {
158
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
159
+ const eventBus = container.resolve(EVENT_BUS_TOKEN) as EventBus;
160
+ return new PluginManager({
161
+ eventBus,
162
+ container,
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ config: (options.config || {}) as Record<string, any>,
165
+ });
166
+ },
167
+ lifecycle: 'singleton',
168
+ });
169
+ }
170
+
171
+ /**
172
+ * 创建配置好的服务提供者
173
+ */
174
+ export function createServiceProvider(options: ServiceProviderOptions = {}) {
175
+ registerServices(options);
176
+
177
+ return {
178
+ /** 获取连接管理器 */
179
+ getConnectionManager: () => rootContainer.resolve(CONNECTION_MANAGER_TOKEN),
180
+ /** 获取打印任务管理器 */
181
+ getPrintJobManager: () => rootContainer.resolve(PRINT_JOB_MANAGER_TOKEN),
182
+ /** 获取命令构建器 */
183
+ getCommandBuilder: () => rootContainer.resolve(COMMAND_BUILDER_TOKEN),
184
+ /** 获取设备管理器 */
185
+ getDeviceManager: () => rootContainer.resolve(DEVICE_MANAGER_TOKEN),
186
+ /** 获取打印队列 */
187
+ getPrintQueue: () => rootContainer.resolve(PRINT_QUEUE_TOKEN),
188
+ /** 获取离线缓存 */
189
+ getOfflineCache: () => rootContainer.resolve(OFFLINE_CACHE_TOKEN),
190
+ /** 获取配置管理器 */
191
+ getConfigManager: () => rootContainer.resolve(CONFIG_MANAGER_TOKEN),
192
+ /** 获取打印机状态服务 */
193
+ getPrinterStatus: () => rootContainer.resolve(PRINTER_STATUS_TOKEN),
194
+ /** 获取打印历史服务 */
195
+ getPrintHistory: () => rootContainer.resolve(PRINT_HISTORY_TOKEN),
196
+ /** 获取打印统计服务 */
197
+ getPrintStatistics: () => rootContainer.resolve(PRINT_STATISTICS_TOKEN),
198
+ /** 获取云打印管理器 */
199
+ getCloudPrintManager: () => rootContainer.resolve(CLOUD_PRINT_MANAGER_TOKEN),
200
+ /** 获取定时重试管理器 */
201
+ getScheduledRetryManager: () => rootContainer.resolve(SCHEDULED_RETRY_MANAGER_TOKEN),
202
+ /** 获取批量打印管理器 */
203
+ getBatchPrintManager: () => rootContainer.resolve(BATCH_PRINT_MANAGER_TOKEN),
204
+ /** 获取事件总线 */
205
+ getEventBus: () => rootContainer.resolve(EVENT_BUS_TOKEN),
206
+ /** 获取插件管理器 */
207
+ getPluginManager: () => rootContainer.resolve(PLUGIN_MANAGER_TOKEN),
208
+ /** 获取适配器 */
209
+ getAdapter: () => rootContainer.resolve(ADAPTER_TOKEN),
210
+ };
211
+ }
212
+
213
+ export type ServiceProvider = ReturnType<typeof createServiceProvider>;
@@ -0,0 +1,2 @@
1
+ export { registerServices, createServiceProvider } from './ServiceProvider';
2
+ export type { ServiceProviderOptions, ServiceProvider } from './ServiceProvider';