@onekeyfe/hd-core 1.1.18 → 1.1.19-alpha.1

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 (102) hide show
  1. package/dist/api/BaseMethod.d.ts +9 -4
  2. package/dist/api/BaseMethod.d.ts.map +1 -1
  3. package/dist/api/CheckAllFirmwareRelease.d.ts +1 -1
  4. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  5. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  6. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  7. package/dist/api/FirmwareUpdate.d.ts +1 -1
  8. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  9. package/dist/api/FirmwareUpdateV2.d.ts +3 -2
  10. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  11. package/dist/api/FirmwareUpdateV3.d.ts +2 -2
  12. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  13. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +2 -2
  14. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  15. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  16. package/dist/api/device/DeviceUpdateBootloader.d.ts +6 -1
  17. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  18. package/dist/api/firmware/getBinary.d.ts +6 -3
  19. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  20. package/dist/api/firmware/releaseHelper.d.ts +7 -2
  21. package/dist/api/firmware/releaseHelper.d.ts.map +1 -1
  22. package/dist/api/firmware/updateBootloader.d.ts +7 -2
  23. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  24. package/dist/api/firmware/uploadFirmware.d.ts +4 -4
  25. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  26. package/dist/api/sui/SuiSignTransaction.d.ts +1 -1
  27. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  28. package/dist/core/index.d.ts +3 -0
  29. package/dist/core/index.d.ts.map +1 -1
  30. package/dist/data-manager/DataManager.d.ts +16 -9
  31. package/dist/data-manager/DataManager.d.ts.map +1 -1
  32. package/dist/device/Device.d.ts +5 -2
  33. package/dist/device/Device.d.ts.map +1 -1
  34. package/dist/device/DeviceCommands.d.ts +6 -4
  35. package/dist/device/DeviceCommands.d.ts.map +1 -1
  36. package/dist/events/device.d.ts +2 -2
  37. package/dist/events/device.d.ts.map +1 -1
  38. package/dist/index.d.ts +96 -28
  39. package/dist/index.js +543 -132
  40. package/dist/types/api/checkAllFirmwareRelease.d.ts +5 -1
  41. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  42. package/dist/types/api/checkBootloaderRelease.d.ts +5 -2
  43. package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
  44. package/dist/types/api/checkFirmwareRelease.d.ts +6 -2
  45. package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
  46. package/dist/types/api/deviceFullyUploadResource.d.ts +6 -1
  47. package/dist/types/api/deviceFullyUploadResource.d.ts.map +1 -1
  48. package/dist/types/api/deviceUpdateBootloader.d.ts +6 -3
  49. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  50. package/dist/types/api/firmwareUpdate.d.ts +3 -1
  51. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  52. package/dist/types/api/index.d.ts +128 -128
  53. package/dist/types/api/index.d.ts.map +1 -1
  54. package/dist/types/device.d.ts +4 -1
  55. package/dist/types/device.d.ts.map +1 -1
  56. package/dist/types/settings.d.ts +3 -0
  57. package/dist/types/settings.d.ts.map +1 -1
  58. package/dist/utils/deviceFeaturesUtils.d.ts +7 -5
  59. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  60. package/dist/utils/index.d.ts +1 -0
  61. package/dist/utils/index.d.ts.map +1 -1
  62. package/dist/utils/patch.d.ts +1 -1
  63. package/dist/utils/patch.d.ts.map +1 -1
  64. package/dist/utils/release.d.ts +1 -1
  65. package/dist/utils/release.d.ts.map +1 -1
  66. package/dist/utils/tracing.d.ts +34 -0
  67. package/dist/utils/tracing.d.ts.map +1 -0
  68. package/package.json +4 -4
  69. package/src/api/BaseMethod.ts +55 -8
  70. package/src/api/CheckAllFirmwareRelease.ts +14 -6
  71. package/src/api/CheckBootloaderRelease.ts +13 -2
  72. package/src/api/CheckFirmwareRelease.ts +9 -2
  73. package/src/api/FirmwareUpdate.ts +7 -5
  74. package/src/api/FirmwareUpdateV2.ts +26 -14
  75. package/src/api/FirmwareUpdateV3.ts +31 -18
  76. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +56 -26
  77. package/src/api/device/DeviceFullyUploadResource.ts +8 -2
  78. package/src/api/device/DeviceUpdateBootloader.ts +21 -5
  79. package/src/api/firmware/getBinary.ts +15 -4
  80. package/src/api/firmware/releaseHelper.ts +22 -11
  81. package/src/api/firmware/updateBootloader.ts +17 -9
  82. package/src/api/firmware/uploadFirmware.ts +51 -15
  83. package/src/api/sui/SuiSignTransaction.ts +7 -1
  84. package/src/core/index.ts +111 -8
  85. package/src/data/messages/messages.json +11 -1
  86. package/src/data-manager/DataManager.ts +126 -22
  87. package/src/device/Device.ts +24 -3
  88. package/src/device/DeviceCommands.ts +42 -8
  89. package/src/events/device.ts +2 -2
  90. package/src/types/api/checkAllFirmwareRelease.ts +5 -1
  91. package/src/types/api/checkBootloaderRelease.ts +7 -3
  92. package/src/types/api/checkFirmwareRelease.ts +10 -2
  93. package/src/types/api/deviceFullyUploadResource.ts +7 -1
  94. package/src/types/api/deviceUpdateBootloader.ts +8 -4
  95. package/src/types/api/firmwareUpdate.ts +4 -1
  96. package/src/types/api/index.ts +128 -161
  97. package/src/types/device.ts +7 -1
  98. package/src/types/settings.ts +37 -0
  99. package/src/utils/deviceFeaturesUtils.ts +22 -10
  100. package/src/utils/index.ts +1 -0
  101. package/src/utils/release.ts +2 -1
  102. package/src/utils/tracing.ts +251 -0
@@ -0,0 +1,251 @@
1
+ /**
2
+ * SDK Tracing Utilities
3
+ * 用于追踪对象实例和请求调用链路
4
+ *
5
+ * 支持多个 SDK 实例,每个实例有独立的追踪上下文
6
+ */
7
+
8
+ import { getLogger, LoggerNames } from './logger';
9
+
10
+ // ============================================================
11
+ // 全局计数器(跨 SDK 实例)
12
+ // ============================================================
13
+
14
+ const Log = getLogger(LoggerNames.Core);
15
+
16
+ let globalInstanceCounter = 0;
17
+ let sdkInstanceCounter = 0;
18
+
19
+ /**
20
+ * 生成 SDK 实例 ID
21
+ * @returns 格式: "SDK-<序号>-<时间戳>"
22
+ * @example "SDK-1-123456"
23
+ */
24
+ export function generateSdkInstanceId(): string {
25
+ sdkInstanceCounter++;
26
+ const timestamp = Date.now().toString().slice(-6);
27
+ return `SDK-${sdkInstanceCounter}-${timestamp}`;
28
+ }
29
+
30
+ /**
31
+ * 生成全局唯一的实例 ID
32
+ * @param type 实例类型 (Device, DeviceCommands, BaseMethod, etc.)
33
+ * @param sdkInstanceId SDK 实例 ID(可选,用于前缀)
34
+ * @returns 格式: <SDK实例>.<类型>-<序号>-<时间戳>
35
+ * @example "SDK-1.Device-1-123456" 或 "Device-1-123456"(无 SDK 实例)
36
+ */
37
+ export function generateInstanceId(type: string, sdkInstanceId?: string): string {
38
+ globalInstanceCounter++;
39
+ const timestamp = Date.now().toString().slice(-6);
40
+ const baseId = `${type}-${globalInstanceCounter}-${timestamp}`;
41
+ return sdkInstanceId ? `${sdkInstanceId}.${baseId}` : baseId;
42
+ }
43
+
44
+ // ============================================================
45
+ // 请求上下文管理
46
+ // ============================================================
47
+
48
+ /**
49
+ * 请求上下文信息
50
+ */
51
+ export interface RequestContext {
52
+ /** 请求唯一 ID (复用 BaseMethod.responseID) */
53
+ responseID: number;
54
+ /** SDK 实例 ID */
55
+ sdkInstanceId?: string;
56
+ /** API 方法名 */
57
+ methodName: string;
58
+ /** 设备连接 ID */
59
+ connectId?: string;
60
+ /** Device 实例 ID */
61
+ deviceInstanceId?: string;
62
+ /** DeviceCommands 实例 ID */
63
+ commandsInstanceId?: string;
64
+ /** 父请求 ID (用于嵌套调用如 allNetworkGetAddress) */
65
+ parentResponseID?: number;
66
+ /** 请求开始时间 */
67
+ startTime: number;
68
+ /** 请求结束时间 */
69
+ endTime?: number;
70
+ /** 请求状态 */
71
+ status?: 'pending' | 'running' | 'success' | 'error' | 'cancelled';
72
+ /** 错误信息 */
73
+ error?: string;
74
+ }
75
+
76
+ /**
77
+ * SDK 实例追踪上下文
78
+ */
79
+ export interface SdkTracingContext {
80
+ /** SDK 实例 ID */
81
+ sdkInstanceId: string;
82
+ /** 创建时间 */
83
+ createdAt: number;
84
+ /** 活跃请求 */
85
+ activeRequests: Map<number, RequestContext>;
86
+ }
87
+
88
+ // 全局 SDK 实例追踪 Map
89
+ const sdkInstances = new Map<string, SdkTracingContext>();
90
+
91
+ // 全局请求 Map(跨 SDK 实例,用于快速查找)
92
+ const globalActiveRequests = new Map<number, RequestContext>();
93
+
94
+ /**
95
+ * 创建 SDK 实例追踪上下文
96
+ */
97
+ export function createSdkTracingContext(): SdkTracingContext {
98
+ const sdkInstanceId = generateSdkInstanceId();
99
+ const context: SdkTracingContext = {
100
+ sdkInstanceId,
101
+ createdAt: Date.now(),
102
+ activeRequests: new Map(),
103
+ };
104
+
105
+ sdkInstances.set(sdkInstanceId, context);
106
+
107
+ return context;
108
+ }
109
+
110
+ /**
111
+ * 创建并注册请求上下文
112
+ * @param responseID 请求 ID (复用 BaseMethod.responseID)
113
+ * @param methodName API 方法名
114
+ * @param options 额外选项
115
+ */
116
+ export function createRequestContext(
117
+ responseID: number,
118
+ methodName: string,
119
+ options?: {
120
+ sdkInstanceId?: string;
121
+ connectId?: string;
122
+ deviceInstanceId?: string;
123
+ commandsInstanceId?: string;
124
+ parentResponseID?: number;
125
+ }
126
+ ): RequestContext {
127
+ const context: RequestContext = {
128
+ responseID,
129
+ sdkInstanceId: options?.sdkInstanceId,
130
+ methodName,
131
+ connectId: options?.connectId,
132
+ deviceInstanceId: options?.deviceInstanceId,
133
+ commandsInstanceId: options?.commandsInstanceId,
134
+ parentResponseID: options?.parentResponseID,
135
+ startTime: Date.now(),
136
+ status: 'pending',
137
+ };
138
+
139
+ // 注册到全局 Map
140
+ globalActiveRequests.set(context.responseID, context);
141
+
142
+ // 注册到 SDK 实例 Map
143
+ if (options?.sdkInstanceId) {
144
+ const sdkContext = sdkInstances.get(options.sdkInstanceId);
145
+ if (sdkContext) {
146
+ sdkContext.activeRequests.set(context.responseID, context);
147
+ }
148
+ }
149
+
150
+ return context;
151
+ }
152
+
153
+ /**
154
+ * 更新请求状态
155
+ */
156
+ export function updateRequestContext(responseID: number, updates: Partial<RequestContext>): void {
157
+ const context = globalActiveRequests.get(responseID);
158
+ if (context) {
159
+ Object.assign(context, updates);
160
+ }
161
+ }
162
+
163
+ /**
164
+ * 完成请求
165
+ */
166
+ export function completeRequestContext(responseID: number, error?: Error): void {
167
+ const context = globalActiveRequests.get(responseID);
168
+ if (context) {
169
+ context.endTime = Date.now();
170
+ context.status = error ? 'error' : 'success';
171
+ if (error) {
172
+ context.error = error.message;
173
+ // print core log
174
+ Log.error(
175
+ `[RequestContext] [completeRequestContext] Error: ${formatRequestContext(context)}`
176
+ );
177
+ }
178
+
179
+ // 从活跃列表移除
180
+ globalActiveRequests.delete(responseID);
181
+
182
+ // 从 SDK 实例移除
183
+ if (context.sdkInstanceId) {
184
+ const sdkContext = sdkInstances.get(context.sdkInstanceId);
185
+ if (sdkContext) {
186
+ sdkContext.activeRequests.delete(responseID);
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+ // ============================================================
193
+ // 查询 API
194
+ // ============================================================
195
+
196
+ /**
197
+ * 获取特定 Device 实例的活跃请求
198
+ */
199
+ export function getActiveRequestsByDeviceInstance(deviceInstanceId: string): RequestContext[] {
200
+ return Array.from(globalActiveRequests.values()).filter(
201
+ ctx => ctx.deviceInstanceId === deviceInstanceId
202
+ );
203
+ }
204
+
205
+ // ============================================================
206
+ // 格式化输出
207
+ // ============================================================
208
+
209
+ /**
210
+ * 格式化请求上下文用于日志输出
211
+ */
212
+ export function formatRequestContext(context: RequestContext): string {
213
+ const duration = context.endTime
214
+ ? context.endTime - context.startTime
215
+ : Date.now() - context.startTime;
216
+
217
+ const parts = [
218
+ `[req:${context.responseID}]`,
219
+ context.sdkInstanceId ? `sdk=${context.sdkInstanceId}` : null,
220
+ `method=${context.methodName}`,
221
+ context.connectId ? `connectId=${context.connectId}` : null,
222
+ context.deviceInstanceId ? `deviceInst=${context.deviceInstanceId}` : null,
223
+ context.commandsInstanceId ? `commandsInst=${context.commandsInstanceId}` : null,
224
+ context.parentResponseID ? `parent=${context.parentResponseID}` : null,
225
+ `duration=${duration}ms`,
226
+ `status=${context.status}`,
227
+ `error=${context.error}`,
228
+ ].filter(Boolean);
229
+
230
+ return parts.join(' ');
231
+ }
232
+
233
+ // ============================================================
234
+ // 清理和重置
235
+ // ============================================================
236
+
237
+ /**
238
+ * 清理特定 SDK 实例
239
+ */
240
+ export function cleanupSdkInstance(sdkInstanceId: string): void {
241
+ const sdkContext = sdkInstances.get(sdkInstanceId);
242
+ if (sdkContext) {
243
+ // 从全局活跃请求中移除该 SDK 的请求
244
+ for (const responseID of sdkContext.activeRequests.keys()) {
245
+ globalActiveRequests.delete(responseID);
246
+ }
247
+
248
+ // 移除 SDK 实例
249
+ sdkInstances.delete(sdkInstanceId);
250
+ }
251
+ }