wowok 2.1.16 → 2.1.18

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 (97) hide show
  1. package/dist/cjs/w/call/base.js +1 -0
  2. package/dist/cjs/w/call/base.js.map +1 -1
  3. package/dist/cjs/w/call/entity.js +1 -0
  4. package/dist/cjs/w/call/entity.js.map +1 -1
  5. package/dist/cjs/w/call/passport.js +1 -0
  6. package/dist/cjs/w/call/passport.js.map +1 -1
  7. package/dist/cjs/w/call/permission.js.map +1 -1
  8. package/dist/cjs/w/call/proof.js +1 -0
  9. package/dist/cjs/w/call/proof.js.map +1 -1
  10. package/dist/cjs/w/call/util.js +1 -0
  11. package/dist/cjs/w/call/util.js.map +1 -1
  12. package/dist/cjs/w/local/account.d.ts +2 -2
  13. package/dist/cjs/w/local/account.js +101 -28
  14. package/dist/cjs/w/local/account.js.map +1 -1
  15. package/dist/cjs/w/local/index.d.ts +1 -1
  16. package/dist/cjs/w/local/index.js +17 -8
  17. package/dist/cjs/w/local/index.js.map +1 -1
  18. package/dist/cjs/w/local/local.js +10 -5
  19. package/dist/cjs/w/local/local.js.map +1 -1
  20. package/dist/cjs/w/local/wip.js +1 -0
  21. package/dist/cjs/w/local/wip.js.map +1 -1
  22. package/dist/cjs/w/messenger/crypto.js +4 -4
  23. package/dist/cjs/w/messenger/crypto.js.map +1 -1
  24. package/dist/cjs/w/messenger/messenger-api.d.ts +1 -3
  25. package/dist/cjs/w/messenger/messenger-api.js +75 -56
  26. package/dist/cjs/w/messenger/messenger-api.js.map +1 -1
  27. package/dist/cjs/w/messenger/messenger-manager.d.ts +1 -6
  28. package/dist/cjs/w/messenger/messenger-manager.js +99 -150
  29. package/dist/cjs/w/messenger/messenger-manager.js.map +1 -1
  30. package/dist/cjs/w/messenger/messenger.d.ts +88 -31
  31. package/dist/cjs/w/messenger/messenger.js +448 -441
  32. package/dist/cjs/w/messenger/messenger.js.map +1 -1
  33. package/dist/cjs/w/messenger/server.d.ts +9 -1
  34. package/dist/cjs/w/messenger/server.js +56 -5
  35. package/dist/cjs/w/messenger/server.js.map +1 -1
  36. package/dist/cjs/w/messenger/session.d.ts +13 -10
  37. package/dist/cjs/w/messenger/session.js +290 -176
  38. package/dist/cjs/w/messenger/session.js.map +1 -1
  39. package/dist/cjs/w/messenger/storage.d.ts +30 -0
  40. package/dist/cjs/w/messenger/storage.js +138 -5
  41. package/dist/cjs/w/messenger/storage.js.map +1 -1
  42. package/dist/cjs/w/messenger/types.d.ts +37 -2
  43. package/dist/cjs/w/messenger/types.js +14 -3
  44. package/dist/cjs/w/messenger/types.js.map +1 -1
  45. package/dist/cjs/w/query/object.js +1 -0
  46. package/dist/cjs/w/query/object.js.map +1 -1
  47. package/dist/cjs/w/util.js +1 -0
  48. package/dist/cjs/w/util.js.map +1 -1
  49. package/dist/esm/w/call/base.js +1 -0
  50. package/dist/esm/w/call/base.js.map +1 -1
  51. package/dist/esm/w/call/entity.js +1 -0
  52. package/dist/esm/w/call/entity.js.map +1 -1
  53. package/dist/esm/w/call/passport.js +1 -0
  54. package/dist/esm/w/call/passport.js.map +1 -1
  55. package/dist/esm/w/call/permission.js.map +1 -1
  56. package/dist/esm/w/call/proof.js +1 -0
  57. package/dist/esm/w/call/proof.js.map +1 -1
  58. package/dist/esm/w/call/util.js +1 -0
  59. package/dist/esm/w/call/util.js.map +1 -1
  60. package/dist/esm/w/local/account.d.ts +2 -2
  61. package/dist/esm/w/local/account.js +101 -28
  62. package/dist/esm/w/local/account.js.map +1 -1
  63. package/dist/esm/w/local/index.d.ts +1 -1
  64. package/dist/esm/w/local/index.js +17 -8
  65. package/dist/esm/w/local/index.js.map +1 -1
  66. package/dist/esm/w/local/local.js +10 -5
  67. package/dist/esm/w/local/local.js.map +1 -1
  68. package/dist/esm/w/local/wip.js +1 -0
  69. package/dist/esm/w/local/wip.js.map +1 -1
  70. package/dist/esm/w/messenger/crypto.js +4 -4
  71. package/dist/esm/w/messenger/crypto.js.map +1 -1
  72. package/dist/esm/w/messenger/messenger-api.d.ts +1 -3
  73. package/dist/esm/w/messenger/messenger-api.js +75 -56
  74. package/dist/esm/w/messenger/messenger-api.js.map +1 -1
  75. package/dist/esm/w/messenger/messenger-manager.d.ts +1 -6
  76. package/dist/esm/w/messenger/messenger-manager.js +99 -150
  77. package/dist/esm/w/messenger/messenger-manager.js.map +1 -1
  78. package/dist/esm/w/messenger/messenger.d.ts +88 -31
  79. package/dist/esm/w/messenger/messenger.js +448 -441
  80. package/dist/esm/w/messenger/messenger.js.map +1 -1
  81. package/dist/esm/w/messenger/server.d.ts +9 -1
  82. package/dist/esm/w/messenger/server.js +56 -5
  83. package/dist/esm/w/messenger/server.js.map +1 -1
  84. package/dist/esm/w/messenger/session.d.ts +13 -10
  85. package/dist/esm/w/messenger/session.js +290 -176
  86. package/dist/esm/w/messenger/session.js.map +1 -1
  87. package/dist/esm/w/messenger/storage.d.ts +30 -0
  88. package/dist/esm/w/messenger/storage.js +138 -5
  89. package/dist/esm/w/messenger/storage.js.map +1 -1
  90. package/dist/esm/w/messenger/types.d.ts +37 -2
  91. package/dist/esm/w/messenger/types.js +14 -3
  92. package/dist/esm/w/messenger/types.js.map +1 -1
  93. package/dist/esm/w/query/object.js +1 -0
  94. package/dist/esm/w/query/object.js.map +1 -1
  95. package/dist/esm/w/util.js +1 -0
  96. package/dist/esm/w/util.js.map +1 -1
  97. package/package.json +3 -3
@@ -1,15 +1,20 @@
1
1
  import type { CallEnv } from "../common.js";
2
- import type { MessengerConfig, Message, SendMessageResult, DecryptedMessage, ZipContentType, ListOperationResponse, GuardListItem } from "./types.js";
2
+ import type { MessengerConfig, Message, SendMessageResult, DecryptedMessage, ZipContentType, ListOperationResponse, GuardListItem, PreKeyStatus } from "./types.js";
3
3
  export declare class Messenger {
4
4
  private session;
5
5
  private serverClient;
6
6
  private config;
7
7
  private userAddress;
8
- private eventSource;
9
8
  private onMessageCallback;
10
- private prekeyCheckTimer;
9
+ private pollingTimer;
10
+ private messageConsecutiveEmptyPulls;
11
+ private prekeyConsecutiveOkCount;
12
+ private currentMessageInterval;
13
+ private isPollingRunning;
11
14
  private messageStorage;
12
15
  private sessionStateStorage;
16
+ private waitingMessages;
17
+ private failedMessages;
13
18
  constructor(userAddress: string, config?: Partial<MessengerConfig>);
14
19
  /**
15
20
  * 获取用户地址
@@ -43,7 +48,7 @@ export declare class Messenger {
43
48
  * 2. 注册设备到服务器
44
49
  * 3. 上传预密钥
45
50
  * 4. 检查预密钥状态(如低于阈值则补充)
46
- * 5. 启动定期预密钥检查
51
+ * 5. 启动合并的polling timer
47
52
  */
48
53
  initialize(): Promise<void>;
49
54
  /**
@@ -53,13 +58,30 @@ export declare class Messenger {
53
58
  */
54
59
  private checkAndRefillPrekeys;
55
60
  /**
56
- * 启动预密钥定期检查定时器
61
+ * 启动合并的polling timer
57
62
  */
58
- private startPrekeyCheckTimer;
63
+ private startPollingTimer;
59
64
  /**
60
- * 停止预密钥定期检查定时器
65
+ * 停止polling timer
61
66
  */
62
- stopPrekeyCheckTimer(): void;
67
+ private stopPollingTimer;
68
+ /**
69
+ * 安排下一次poll
70
+ */
71
+ private scheduleNextPoll;
72
+ /**
73
+ * 获取下次poll的间隔时间
74
+ * 【优化】增加3秒快速模式(有待解密消息时)
75
+ */
76
+ private getNextPollInterval;
77
+ /**
78
+ * 执行一次poll(拉取消息和检查prekey状态)
79
+ */
80
+ private poll;
81
+ /**
82
+ * 触发快速poll(发送消息后调用)
83
+ */
84
+ private triggerFastPoll;
63
85
  /**
64
86
  * 发送加密消息
65
87
  *
@@ -83,7 +105,10 @@ export declare class Messenger {
83
105
  * 3. 验证 Merkle 证明
84
106
  * 4. 本地存储并确认消息
85
107
  */
86
- pullMessages(limit?: number): Promise<DecryptedMessage[]>;
108
+ pullMessages(limit?: number): Promise<{
109
+ messages: DecryptedMessage[];
110
+ prekey_status?: PreKeyStatus;
111
+ }>;
87
112
  /**
88
113
  * 获取最后发送的消息序号
89
114
  * @param peerAddress 对方地址
@@ -111,30 +136,9 @@ export declare class Messenger {
111
136
  proofAddress: string;
112
137
  txHash: string;
113
138
  }>;
114
- /**
115
- * 建立 SSE 连接并监听服务器事件
116
- *
117
- * 安全要求:必须提供签名验证,防止未授权监听他人事件
118
- * @param onMessage 新消息回调
119
- * @param signatureParams 签名参数(可选,不提供时自动生成)
120
- */
121
- connectEventSource(onMessage?: (messages: DecryptedMessage[]) => void, signatureParams?: {
122
- signatureScheme: string;
123
- signature: string;
124
- timestamp: number;
125
- nonce: string;
126
- }): Promise<void>;
127
- /**
128
- * 检查 SSE 是否已连接
129
- */
130
- isEventSourceConnected(): boolean;
131
- /**
132
- * 断开 SSE 连接
133
- */
134
- disconnectEventSource(): void;
135
139
  /**
136
140
  * 销毁 Messenger 实例
137
- * 清理所有资源(定时器、SSE 连接等)
141
+ * 清理所有资源(定时器等)
138
142
  */
139
143
  destroy(): void;
140
144
  /**
@@ -142,6 +146,11 @@ export declare class Messenger {
142
146
  * 用于清理资源
143
147
  */
144
148
  disconnect(): void;
149
+ /**
150
+ * 设置新消息回调
151
+ * @param onMessage 新消息回调函数
152
+ */
153
+ setOnMessageCallback(onMessage: (messages: DecryptedMessage[]) => void): void;
145
154
  /**
146
155
  * 发送 ZIP 压缩文件
147
156
  *
@@ -228,4 +237,52 @@ export declare class Messenger {
228
237
  * Guard 列表 - 获取列表
229
238
  */
230
239
  getGuardList(): Promise<ListOperationResponse>;
240
+ /**
241
+ * 尝试解密单条消息
242
+ * @param serverMsg 服务器消息
243
+ * @returns 解密结果
244
+ */
245
+ private tryDecryptMessage;
246
+ /**
247
+ * 判断错误是否可重试(Skip Keys 机制)
248
+ * @param errorMessage 错误信息
249
+ * @returns 是否可重试
250
+ */
251
+ private isRetryableError;
252
+ /**
253
+ * 处理 waitingMessages 池中的消息
254
+ * @param decryptedMessages 解密成功的消息列表
255
+ * @param acknowledgedIds 已确认的消息ID列表
256
+ */
257
+ private processWaitingMessages;
258
+ /**
259
+ * 保存解密失败的消息
260
+ * @param serverMsg 服务器消息
261
+ * @param error 错误信息
262
+ */
263
+ private saveFailedMessage;
264
+ /**
265
+ * 重新调度轮询(用于切换到快速模式)
266
+ */
267
+ private reschedulePolling;
268
+ /**
269
+ * 获取解密失败的消息(供用户决策重发)
270
+ * @returns 失败消息列表
271
+ */
272
+ getFailedMessages(): Array<{
273
+ messageId: string;
274
+ from: string;
275
+ error: string;
276
+ leafIndex?: number;
277
+ }>;
278
+ /**
279
+ * 清除解密失败的消息记录
280
+ * @param messageId 消息ID(可选,不提供则清除所有)
281
+ */
282
+ clearFailedMessages(messageId?: string): void;
283
+ /**
284
+ * 获取等待解密的消息数量
285
+ * @returns 等待消息数量
286
+ */
287
+ getWaitingMessageCount(): number;
231
288
  }