wowok 2.1.20 → 2.1.22

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 (57) hide show
  1. package/dist/cjs/w/local/account.d.ts +1 -1
  2. package/dist/cjs/w/local/account.js +15 -47
  3. package/dist/cjs/w/local/account.js.map +1 -1
  4. package/dist/cjs/w/messenger/crypto.js +31 -0
  5. package/dist/cjs/w/messenger/crypto.js.map +1 -1
  6. package/dist/cjs/w/messenger/messenger-api.d.ts +27 -4
  7. package/dist/cjs/w/messenger/messenger-api.js +191 -256
  8. package/dist/cjs/w/messenger/messenger-api.js.map +1 -1
  9. package/dist/cjs/w/messenger/messenger-manager.d.ts +39 -3
  10. package/dist/cjs/w/messenger/messenger-manager.js +194 -107
  11. package/dist/cjs/w/messenger/messenger-manager.js.map +1 -1
  12. package/dist/cjs/w/messenger/messenger.d.ts +9 -1
  13. package/dist/cjs/w/messenger/messenger.js +33 -0
  14. package/dist/cjs/w/messenger/messenger.js.map +1 -1
  15. package/dist/cjs/w/messenger/server.d.ts +2 -2
  16. package/dist/cjs/w/messenger/server.js.map +1 -1
  17. package/dist/cjs/w/messenger/session.d.ts +15 -0
  18. package/dist/cjs/w/messenger/session.js +83 -35
  19. package/dist/cjs/w/messenger/session.js.map +1 -1
  20. package/dist/cjs/w/messenger/storage.d.ts +12 -0
  21. package/dist/cjs/w/messenger/storage.js +51 -2
  22. package/dist/cjs/w/messenger/storage.js.map +1 -1
  23. package/dist/cjs/w/messenger/templates/wts-html-template.d.ts +61 -0
  24. package/dist/cjs/w/messenger/templates/wts-html-template.js +414 -0
  25. package/dist/cjs/w/messenger/templates/wts-html-template.js.map +1 -0
  26. package/dist/cjs/w/messenger/types.d.ts +9 -5
  27. package/dist/cjs/w/messenger/types.js +3 -2
  28. package/dist/cjs/w/messenger/types.js.map +1 -1
  29. package/dist/esm/w/local/account.d.ts +1 -1
  30. package/dist/esm/w/local/account.js +15 -47
  31. package/dist/esm/w/local/account.js.map +1 -1
  32. package/dist/esm/w/messenger/crypto.js +31 -0
  33. package/dist/esm/w/messenger/crypto.js.map +1 -1
  34. package/dist/esm/w/messenger/messenger-api.d.ts +27 -4
  35. package/dist/esm/w/messenger/messenger-api.js +191 -256
  36. package/dist/esm/w/messenger/messenger-api.js.map +1 -1
  37. package/dist/esm/w/messenger/messenger-manager.d.ts +39 -3
  38. package/dist/esm/w/messenger/messenger-manager.js +194 -107
  39. package/dist/esm/w/messenger/messenger-manager.js.map +1 -1
  40. package/dist/esm/w/messenger/messenger.d.ts +9 -1
  41. package/dist/esm/w/messenger/messenger.js +33 -0
  42. package/dist/esm/w/messenger/messenger.js.map +1 -1
  43. package/dist/esm/w/messenger/server.d.ts +2 -2
  44. package/dist/esm/w/messenger/server.js.map +1 -1
  45. package/dist/esm/w/messenger/session.d.ts +15 -0
  46. package/dist/esm/w/messenger/session.js +83 -35
  47. package/dist/esm/w/messenger/session.js.map +1 -1
  48. package/dist/esm/w/messenger/storage.d.ts +12 -0
  49. package/dist/esm/w/messenger/storage.js +51 -2
  50. package/dist/esm/w/messenger/storage.js.map +1 -1
  51. package/dist/esm/w/messenger/templates/wts-html-template.d.ts +61 -0
  52. package/dist/esm/w/messenger/templates/wts-html-template.js +414 -0
  53. package/dist/esm/w/messenger/templates/wts-html-template.js.map +1 -0
  54. package/dist/esm/w/messenger/types.d.ts +9 -5
  55. package/dist/esm/w/messenger/types.js +3 -2
  56. package/dist/esm/w/messenger/types.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,414 @@
1
+ /**
2
+ * WTS to HTML 模板
3
+ * 将 HTML 模板独立出来,便于维护和定制
4
+ */
5
+ /**
6
+ * HTML 转义函数
7
+ */
8
+ export function escapeHtml(text) {
9
+ if (!text)
10
+ return "";
11
+ return text
12
+ .replace(/&/g, "&")
13
+ .replace(/</g, "&lt;")
14
+ .replace(/>/g, "&gt;")
15
+ .replace(/"/g, "&quot;")
16
+ .replace(/'/g, "&#039;");
17
+ }
18
+ /**
19
+ * 格式化文件大小
20
+ */
21
+ export function formatFileSize(bytes) {
22
+ if (bytes < 1024)
23
+ return bytes + " B";
24
+ if (bytes < 1024 * 1024)
25
+ return (bytes / 1024).toFixed(1) + " KB";
26
+ return (bytes / (1024 * 1024)).toFixed(1) + " MB";
27
+ }
28
+ /**
29
+ * 判断是否为非文本消息
30
+ */
31
+ export function isNonTextMessage(msg) {
32
+ // 如果有 zipMetadata,说明是非文本消息(ZIP文件)
33
+ return !!msg.zipMetadata;
34
+ }
35
+ /**
36
+ * 获取文件类型标签
37
+ */
38
+ export function getFileTypeLabel(msg) {
39
+ // 首先检查 zipMetadata 中的 contentType
40
+ if (msg.zipMetadata?.contentType) {
41
+ return msg.zipMetadata.contentType.toUpperCase();
42
+ }
43
+ // 根据文件名推断类型
44
+ const fileName = msg.zipMetadata?.fileName || "";
45
+ if (fileName.endsWith(".wts"))
46
+ return "WTS";
47
+ if (fileName.endsWith(".wip"))
48
+ return "WIP";
49
+ if (fileName.endsWith(".zip"))
50
+ return "ZIP";
51
+ if (fileName.endsWith(".json"))
52
+ return "JSON";
53
+ if (fileName.endsWith(".txt"))
54
+ return "TXT";
55
+ // 根据 zipMetadata 推断
56
+ if (msg.zipMetadata)
57
+ return "ZIP";
58
+ return "FILE";
59
+ }
60
+ /**
61
+ * 获取主题颜色配置
62
+ */
63
+ export function getThemeColors(theme) {
64
+ return {
65
+ bgColor: theme === "dark" ? "#1a1a1a" : "#ffffff",
66
+ textColor: theme === "dark" ? "#e0e0e0" : "#333333",
67
+ borderColor: theme === "dark" ? "#444444" : "#e0e0e0",
68
+ };
69
+ }
70
+ /**
71
+ * 获取消息颜色配置
72
+ */
73
+ export function getMessageColors(theme, isMyMessage) {
74
+ if (isMyMessage) {
75
+ // 发送的消息 - 蓝色系
76
+ return {
77
+ bgColor: theme === "dark" ? "#1a365d" : "#e3f2fd",
78
+ borderColor: theme === "dark" ? "#3b82f6" : "#90caf9",
79
+ };
80
+ }
81
+ else {
82
+ // 接收的消息 - 绿色系
83
+ return {
84
+ bgColor: theme === "dark" ? "#1e3a2f" : "#e8f5e9",
85
+ borderColor: theme === "dark" ? "#10b981" : "#a5d6a7",
86
+ };
87
+ }
88
+ }
89
+ /**
90
+ * 生成文件保存按钮 HTML
91
+ */
92
+ export function generateFileButton(msg, index, theme) {
93
+ if (!msg.plaintext || !msg.zipMetadata?.fileName)
94
+ return "";
95
+ const fileName = msg.zipMetadata.fileName;
96
+ const fileData = msg.plaintext;
97
+ const fileSize = msg.zipMetadata.fileSize || 0;
98
+ const fileType = getFileTypeLabel(msg);
99
+ // 根据主题调整颜色
100
+ const bgColor = theme === "dark" ? "#2a3f2a" : "#e8f5e9";
101
+ const borderColor = theme === "dark" ? "#4caf50" : "#4caf50";
102
+ const textColor = theme === "dark" ? "#81c784" : "#2e7d32";
103
+ const buttonBg = "#4caf50";
104
+ const buttonHover = "#45a049";
105
+ return `
106
+ <div style="margin: 12px 0; padding: 16px; background: ${bgColor}; border: 1px solid ${borderColor}; border-radius: 8px; text-align: center;">
107
+ <div style="font-size: 14px; color: ${textColor}; margin-bottom: 8px;">
108
+ 📎 ${escapeHtml(fileType)} File
109
+ <span style="font-size: 12px; color: #666;">(${formatFileSize(fileSize)})</span>
110
+ </div>
111
+ <button
112
+ onclick="saveFile${index}()"
113
+ style="padding: 10px 24px; background: ${buttonBg}; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 14px;"
114
+ onmouseover="this.style.background='${buttonHover}'"
115
+ onmouseout="this.style.background='${buttonBg}'"
116
+ >
117
+ 💾 Save ${escapeHtml(fileName)}
118
+ </button>
119
+ </div>
120
+ <script>
121
+ function saveFile${index}() {
122
+ try {
123
+ const base64Data = "${escapeHtml(fileData)}";
124
+ const byteCharacters = atob(base64Data);
125
+ const byteNumbers = new Array(byteCharacters.length);
126
+ for (let i = 0; i < byteCharacters.length; i++) {
127
+ byteNumbers[i] = byteCharacters.charCodeAt(i);
128
+ }
129
+ const byteArray = new Uint8Array(byteNumbers);
130
+
131
+ let mimeType = "application/octet-stream";
132
+ const fileName = "${escapeHtml(fileName)}";
133
+ if (fileName.endsWith('.json')) mimeType = "application/json";
134
+ else if (fileName.endsWith('.zip')) mimeType = "application/zip";
135
+ else if (fileName.endsWith('.txt')) mimeType = "text/plain";
136
+
137
+ const blob = new Blob([byteArray], { type: mimeType });
138
+ const url = URL.createObjectURL(blob);
139
+ const a = document.createElement("a");
140
+ a.href = url;
141
+ a.download = fileName;
142
+ document.body.appendChild(a);
143
+ a.click();
144
+ document.body.removeChild(a);
145
+ URL.revokeObjectURL(url);
146
+ } catch (e) {
147
+ alert('保存文件失败: ' + e.message);
148
+ }
149
+ }
150
+ <\/script>
151
+ `;
152
+ }
153
+ /**
154
+ * 生成单条消息 HTML
155
+ */
156
+ export function generateMessageHtml(msg, index, data) {
157
+ const { theme, borderColor, myAddress, maxLastReceivedLeafIndex } = data;
158
+ const isNonText = isNonTextMessage(msg);
159
+ const isMyMessage = msg.from.toLowerCase() === myAddress.toLowerCase();
160
+ const isDeliveredAndDecrypted = isMyMessage &&
161
+ maxLastReceivedLeafIndex >= 0 &&
162
+ msg.leafIndex <= maxLastReceivedLeafIndex;
163
+ const colors = getMessageColors(theme, isMyMessage);
164
+ const contentBgColor = theme === "dark" ? "#333333" : "#ffffff";
165
+ let contentHtml = "";
166
+ if (isNonText) {
167
+ contentHtml = generateFileButton(msg, index, theme);
168
+ }
169
+ else if (msg.plaintext) {
170
+ contentHtml = `<div style="margin: 12px 0; padding: 12px; background: ${contentBgColor}; border: 1px solid ${borderColor}; border-radius: 4px; font-size: 14px; line-height: 1.6; max-height: calc(1.6em * 6); overflow-y: auto; white-space: pre-wrap; word-break: break-word;">${escapeHtml(msg.plaintext)}</div>`;
171
+ }
172
+ const metaHtml = [
173
+ `<div>Merkle Root: ${escapeHtml(msg.merkleRoot)}</div>`,
174
+ msg.arkConfirmed
175
+ ? `<div>ARK Confirmed: ${escapeHtml(msg.arkConfirmed.recipient)} at ${new Date(msg.arkConfirmed.timestamp).toLocaleString()}</div>`
176
+ : "",
177
+ msg.guardAddress
178
+ ? `<div>Guard: ${escapeHtml(msg.guardAddress)}</div>`
179
+ : "",
180
+ msg.passportAddress
181
+ ? `<div>Passport: ${escapeHtml(msg.passportAddress)}</div>`
182
+ : "",
183
+ ]
184
+ .filter(Boolean)
185
+ .join("");
186
+ return `
187
+ <div style="margin: 16px 0; padding: 16px; border: 1px solid ${colors.borderColor}; border-radius: 8px; background: ${colors.bgColor};">
188
+ <div style="display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 12px; color: #666;">
189
+ <span>From: ${escapeHtml(msg.from.slice(0, 6))}...${escapeHtml(msg.from.slice(-3))} To: ${escapeHtml(msg.to.slice(0, 6))}...${escapeHtml(msg.to.slice(-3))}</span>
190
+ <span>${new Date(msg.timestamp).toLocaleString()}</span>
191
+ </div>
192
+ ${contentHtml}
193
+ <div style="margin: 8px 0; font-size: 11px; color: #666;">
194
+ ${metaHtml}
195
+ </div>
196
+ <div style="font-size: 11px; color: #888; margin-top: 8px; padding-top: 8px; border-top: 1px solid ${borderColor}; display: flex; justify-content: space-between; align-items: center;">
197
+ <div>Leaf Index: ${msg.leafIndex}</div>
198
+ ${isDeliveredAndDecrypted ? `<span style="color: #4caf50;">Delivered & Decrypted</span>` : ""}
199
+ </div>
200
+ </div>
201
+ `;
202
+ }
203
+ /**
204
+ * 生成签名验证信息 HTML
205
+ */
206
+ export function generateSignatureHtml(verifyResult, theme, textColor) {
207
+ if (!verifyResult.signatures || verifyResult.signatures.length === 0) {
208
+ return "";
209
+ }
210
+ const bgColor = theme === "dark" ? "#2a3f2a" : "#e8f5e9";
211
+ const headerColor = theme === "dark" ? "#81c784" : "#2e7d32";
212
+ const signaturesHtml = verifyResult.signatures
213
+ .map((s, idx) => `
214
+ <div style="font-size: 10px; color: ${textColor}; margin-left: 8px;">
215
+ ${idx + 1}. ${s.address ? escapeHtml(s.address.slice(0, 6)) + "..." + escapeHtml(s.address.slice(-3)) : "Unknown"}:
216
+ ${s.valid ? '<span style="color: #4caf50;">✓ Valid</span>' : '<span style="color: #f44336;">✗ Invalid</span>'}
217
+ </div>
218
+ `)
219
+ .join("");
220
+ return `
221
+ <div style="margin-top: 8px; padding: 8px; background: ${bgColor}; border-radius: 4px;">
222
+ <div style="font-size: 11px; color: ${headerColor}; margin-bottom: 4px;">
223
+ ✓ Signature Verification (${verifyResult.signatures.length} signature${verifyResult.signatures.length > 1 ? "s" : ""})
224
+ </div>
225
+ ${signaturesHtml}
226
+ </div>
227
+ `;
228
+ }
229
+ /**
230
+ * 生成完整 HTML 页面
231
+ */
232
+ const MESSAGES_PER_PAGE = 100;
233
+ export function generateHtmlPage(data) {
234
+ const { title, theme, bgColor, textColor, borderColor, meta, payload, verifyResult, maxLastReceivedLeafIndex, } = data;
235
+ const totalMessages = payload.messages.length;
236
+ const totalPages = Math.ceil(totalMessages / MESSAGES_PER_PAGE);
237
+ // 生成所有页面的消息 HTML
238
+ const pagesHtml = [];
239
+ for (let page = 0; page < totalPages; page++) {
240
+ const start = page * MESSAGES_PER_PAGE;
241
+ const end = Math.min(start + MESSAGES_PER_PAGE, totalMessages);
242
+ const pageMessages = payload.messages.slice(start, end);
243
+ const pageMessagesHtml = pageMessages
244
+ .map((msg, index) => generateMessageHtml(msg, start + index, data))
245
+ .join("");
246
+ pagesHtml.push({
247
+ pageNum: page + 1,
248
+ html: `<div class="page" data-page="${page + 1}" style="display: ${page === 0 ? "block" : "none"};">${pageMessagesHtml}</div>`,
249
+ });
250
+ }
251
+ const paginationHtml = totalPages > 1
252
+ ? generatePaginationHtml(totalPages, theme, textColor)
253
+ : "";
254
+ const allPagesHtml = pagesHtml.map((p) => p.html).join("");
255
+ const signatureHtml = generateSignatureHtml(verifyResult, theme, textColor);
256
+ const verificationStatus = verifyResult.valid
257
+ ? `<span style="color: #4caf50; margin-left: 8px;">✓ The accuracy, sequentiality, and integrity of the messages are verified without tampering</span>`
258
+ : `<span style="color: #ff9800; margin-left: 8px;">⚠ ${verifyResult.error || "Hash mismatch - content has been tampered"}</span>`;
259
+ const lastReceivedHtml = maxLastReceivedLeafIndex >= 0
260
+ ? `<div>Delivered & Decrypted Leaf Index: ${maxLastReceivedLeafIndex} (sent messages are only confirmed as decrypted after receiving a reply from the other party)</div>`
261
+ : "";
262
+ return `<!DOCTYPE html>
263
+ <html lang="en">
264
+ <head>
265
+ <meta charset="UTF-8">
266
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
267
+ <title>${escapeHtml(title)}</title>
268
+ <style>
269
+ body {
270
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
271
+ max-width: 800px;
272
+ margin: 0 auto;
273
+ padding: 20px;
274
+ background: ${bgColor};
275
+ color: ${textColor};
276
+ }
277
+ .header {
278
+ border-bottom: 2px solid ${borderColor};
279
+ padding-bottom: 16px;
280
+ margin-bottom: 24px;
281
+ }
282
+ .meta {
283
+ font-size: 12px;
284
+ color: #666;
285
+ margin-top: 8px;
286
+ }
287
+ .note {
288
+ font-size: 11px;
289
+ color: #999;
290
+ margin-top: 12px;
291
+ padding: 8px;
292
+ background: ${theme === "dark" ? "#2a2a2a" : "#f5f5f5"};
293
+ border-radius: 4px;
294
+ font-style: italic;
295
+ }
296
+ .pagination {
297
+ display: flex;
298
+ justify-content: center;
299
+ align-items: center;
300
+ gap: 8px;
301
+ margin-top: 24px;
302
+ padding: 16px;
303
+ border-top: 1px solid ${borderColor};
304
+ }
305
+ .pagination button {
306
+ padding: 8px 16px;
307
+ border: 1px solid ${borderColor};
308
+ background: ${theme === "dark" ? "#333" : "#fff"};
309
+ color: ${textColor};
310
+ cursor: pointer;
311
+ border-radius: 4px;
312
+ font-size: 14px;
313
+ }
314
+ .pagination button:hover:not(:disabled) {
315
+ background: ${theme === "dark" ? "#444" : "#f0f0f0"};
316
+ }
317
+ .pagination button:disabled {
318
+ opacity: 0.5;
319
+ cursor: not-allowed;
320
+ }
321
+ .pagination .page-info {
322
+ font-size: 14px;
323
+ color: #666;
324
+ }
325
+ .page {
326
+ animation: fadeIn 0.3s ease-in;
327
+ }
328
+ @keyframes fadeIn {
329
+ from { opacity: 0; }
330
+ to { opacity: 1; }
331
+ }
332
+ </style>
333
+ </head>
334
+ <body>
335
+ <div class="header">
336
+ <h1>Witness Timestamped Sequence</h1>
337
+ <div class="note">
338
+ Important Note: This page is for message browsing and verification reference only. Please verify whether the message sequence has been tampered with through the 'verify_wts' API using the WTS file.
339
+ </div>
340
+ <div style="font-size: 14px; color: #666; margin-top: 4px;">
341
+ ${new Date(meta.startTime).toLocaleDateString()} - ${new Date(meta.endTime).toLocaleDateString()}
342
+ ${verificationStatus}
343
+ </div>
344
+ <div class="meta">
345
+ <div>Messages: ${meta.messageCount} | Time: ${new Date(meta.startTime).toLocaleString()} - ${new Date(meta.endTime).toLocaleString()}</div>
346
+ <div style="word-break: break-all;">Merkle Root: ${escapeHtml(meta.merkleRoot)}</div>
347
+ ${lastReceivedHtml}
348
+ <div style="color: ${theme === "dark" ? "#3b82f6" : "#1976d2"};">Creator: ${escapeHtml(meta.creator)}</div>
349
+ <div style="color: ${theme === "dark" ? "#10b981" : "#2e7d32"};">Participant: ${escapeHtml(meta.participant)}</div>
350
+ ${signatureHtml}
351
+ </div>
352
+ </div>
353
+ <div id="messages-container">
354
+ ${allPagesHtml}
355
+ </div>
356
+ ${paginationHtml}
357
+ <script>
358
+ (function() {
359
+ let currentPage = 1;
360
+ const totalPages = ${totalPages};
361
+
362
+ function showPage(pageNum) {
363
+ // 隐藏所有页面
364
+ document.querySelectorAll('.page').forEach(page => {
365
+ page.style.display = 'none';
366
+ });
367
+ // 显示目标页面
368
+ const targetPage = document.querySelector('.page[data-page="' + pageNum + '"]');
369
+ if (targetPage) {
370
+ targetPage.style.display = 'block';
371
+ }
372
+ currentPage = pageNum;
373
+ updatePaginationButtons();
374
+ }
375
+
376
+ function updatePaginationButtons() {
377
+ const prevBtn = document.getElementById('prev-btn');
378
+ const nextBtn = document.getElementById('next-btn');
379
+ const pageInfo = document.getElementById('page-info');
380
+ if (prevBtn) prevBtn.disabled = currentPage === 1;
381
+ if (nextBtn) nextBtn.disabled = currentPage === totalPages;
382
+ if (pageInfo) pageInfo.textContent = 'Page ' + currentPage + ' of ' + totalPages;
383
+ }
384
+
385
+ // 绑定按钮事件
386
+ const prevBtn = document.getElementById('prev-btn');
387
+ const nextBtn = document.getElementById('next-btn');
388
+ if (prevBtn) {
389
+ prevBtn.addEventListener('click', function() {
390
+ if (currentPage > 1) showPage(currentPage - 1);
391
+ });
392
+ }
393
+ if (nextBtn) {
394
+ nextBtn.addEventListener('click', function() {
395
+ if (currentPage < totalPages) showPage(currentPage + 1);
396
+ });
397
+ }
398
+
399
+ // 初始化
400
+ updatePaginationButtons();
401
+ })();
402
+ <\/script>
403
+ </body>
404
+ </html>`;
405
+ }
406
+ function generatePaginationHtml(totalPages, theme, textColor) {
407
+ return `
408
+ <div class="pagination">
409
+ <button id="prev-btn" disabled>← Previous</button>
410
+ <span class="page-info" id="page-info">Page 1 of ${totalPages}</span>
411
+ <button id="next-btn" ${totalPages <= 1 ? "disabled" : ""}>Next →</button>
412
+ </div>`;
413
+ }
414
+ //# sourceMappingURL=wts-html-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wts-html-template.js","sourceRoot":"","sources":["../../../../../src/w/messenger/templates/wts-html-template.ts"],"names":[],"mappings":"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"}
@@ -256,7 +256,7 @@ export interface ChainProofResponse {
256
256
  blockTimestamp: number;
257
257
  }
258
258
  export declare const WTS_FILE_BYTES_LIMIT: number;
259
- export declare const WTS_MAX_MESSAGE_COUNT = 1000;
259
+ export declare const WTS_MAX_MESSAGE_COUNT = 500;
260
260
  export declare const NORMAL_MESSAGE_BYTES_LIMIT: number;
261
261
  export declare const DEFAULT_QUERY_LIMIT = 50;
262
262
  export declare const MAX_QUERY_LIMIT = 1000;
@@ -358,6 +358,7 @@ export interface SendMessageResult {
358
358
  serverPublicKey: string;
359
359
  };
360
360
  guardList?: string[];
361
+ lastReceivedLeafIndex?: number;
361
362
  }
362
363
  export interface DecryptedMessage {
363
364
  id: string;
@@ -667,12 +668,15 @@ export interface WtsMeta {
667
668
  endTime: number;
668
669
  messageCount: number;
669
670
  merkleRoot: string;
671
+ /** WTS 生成者地址 */
672
+ creator: string;
673
+ /** 参与者地址(对方) */
674
+ participant: string;
670
675
  serverPublicKeys?: WtsServerPublicKey[];
671
676
  signature?: WtsSignature | WtsSignature[];
672
677
  }
673
678
  /** WTS 文件结构 */
674
679
  export interface WtsFile {
675
- wts: string;
676
680
  payload: WtsPayload;
677
681
  meta: WtsMeta;
678
682
  }
@@ -736,7 +740,7 @@ export interface GetSettingsRequest extends SignedRequestBase {
736
740
  export interface GetSettingsResponse {
737
741
  allowStrangerMessages?: boolean;
738
742
  maxInboxSize?: number;
739
- minUserInboxSize: number;
740
- maxUserInboxSize: number;
741
- defaultAllowStrangerMessages: boolean;
743
+ serverMinInboxSizeLimit: number;
744
+ serverMaxInboxSizeLimit: number;
745
+ serverDefaultAllowStrangerMessages: boolean;
742
746
  }
@@ -34,12 +34,13 @@ export var MessageStatus;
34
34
  })(MessageStatus || (MessageStatus = {}));
35
35
  // ========== 配置类型 ==========
36
36
  export const WTS_FILE_BYTES_LIMIT = 5 * 1024 * 1024; // 5M
37
- export const WTS_MAX_MESSAGE_COUNT = 1000; // 1000条消息最大
37
+ export const WTS_MAX_MESSAGE_COUNT = 500; // 500条消息最大
38
38
  export const NORMAL_MESSAGE_BYTES_LIMIT = 10 * 1024; // 10KB 普通消息大小限制
39
39
  export const DEFAULT_QUERY_LIMIT = 50; // 默认查询返回50条
40
40
  export const MAX_QUERY_LIMIT = 1000; // 最大查询返回1000条
41
41
  export const DEFAULT_DEVICE_ID = 1;
42
- export const SERVER_URL = "https://messenger.wowok.net"; //127.0.0.1:3000
42
+ export const SERVER_URL =
43
+ /* "http://127.0.0.1:3000*/ "https://messenger.wowok.net";
43
44
  export const CHAIN_PROOF_TYPE = 1;
44
45
  export const CURRENT_NETWORK = ENTRYPOINT.Testnet;
45
46
  export const DEFAULT_MESSENGER_CONFIG = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/w/messenger/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/w/messenger/types.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface IAccountStorage {
9
9
  clear(): Promise<void>;
10
10
  }
11
11
  export declare const DEFAULT_ACCOUNT_NAME = "";
12
- export declare const MAX_MESSENGER_ACCOUNTS = 6;
12
+ export declare const MAX_MESSENGER_ACCOUNTS = 30;
13
13
  export type FaucetCoinInfo = {
14
14
  amount: number;
15
15
  id: string;
@@ -14,7 +14,7 @@ import { Config } from "./config.js";
14
14
  import { SQLiteAccountStorage } from "./storage.js";
15
15
  import { isValidWowAddress } from "../../utils/sui-types.js";
16
16
  export const DEFAULT_ACCOUNT_NAME = "";
17
- export const MAX_MESSENGER_ACCOUNTS = 6;
17
+ export const MAX_MESSENGER_ACCOUNTS = 30;
18
18
  export class Account {
19
19
  static _instance;
20
20
  static storage;
@@ -89,7 +89,8 @@ export class Account {
89
89
  else {
90
90
  await storage.put(JSON.stringify([ret]));
91
91
  }
92
- // 如果指定了 messenger 名称,注册到服务器
92
+ // 如果指定了 messenger 名称,保存到账号数据
93
+ // Messenger 的初始化由 MessengerManager 在首次使用时自动完成
93
94
  if (m) {
94
95
  const storage2 = await this.getStorage();
95
96
  const value2 = await storage2.get();
@@ -100,32 +101,19 @@ export class Account {
100
101
  W_ERROR(WErrors.InvalidParam, `Maximum ${MAX_MESSENGER_ACCOUNTS} messenger accounts allowed, current count: ${messengerCount}`);
101
102
  }
102
103
  }
103
- try {
104
- // 动态导入 Messenger 以避免循环依赖
105
- // eslint-disable-next-line import/no-cycle
106
- const { Messenger } = await import("../messenger/messenger.js");
107
- const messenger = new Messenger(address);
108
- await messenger.initialize();
109
- // 服务器注册成功后,更新 m 字段
110
- ret.m = m;
111
- // 更新存储中的 m 字段
112
- const storage3 = await this.getStorage();
113
- const value3 = await storage3.get();
114
- if (value3) {
115
- const data = JSON.parse(value3);
116
- const account = data.find((d) => d.address === address);
117
- if (account) {
118
- account.m = m;
119
- account.updatedAt = Date.now();
120
- await storage3.put(JSON.stringify(data));
121
- }
104
+ // 保存 m 字段到账号数据
105
+ ret.m = m;
106
+ const storage3 = await this.getStorage();
107
+ const value3 = await storage3.get();
108
+ if (value3) {
109
+ const data = JSON.parse(value3);
110
+ const account = data.find((d) => d.address === address);
111
+ if (account) {
112
+ account.m = m;
113
+ account.updatedAt = Date.now();
114
+ await storage3.put(JSON.stringify(data));
122
115
  }
123
116
  }
124
- catch (error) {
125
- // 注册失败,不回滚账户,只提示用户稍后手动开通
126
- console.warn(`[Account] Messenger registration failed for ${address}:`, error);
127
- W_ERROR(WErrors.InvalidParam, `Account created successfully! But messenger registration failed, please try enabling messenger later.`);
128
- }
129
117
  }
130
118
  return this.accountData(ret);
131
119
  }
@@ -711,27 +699,7 @@ export class Account {
711
699
  if (currentCount >= MAX_MESSENGER_ACCOUNTS) {
712
700
  W_ERROR(WErrors.InvalidParam, `Maximum ${MAX_MESSENGER_ACCOUNTS} messenger accounts allowed, current count: ${currentCount}`);
713
701
  }
714
- // 【关键修复】先初始化 messenger 并注册到服务器(不保存 f.m)
715
- try {
716
- // 动态导入 Messenger 以避免循环依赖
717
- // eslint-disable-next-line import/no-cycle
718
- const { Messenger } = await import("../messenger/messenger.js");
719
- const messenger = new Messenger(f.address);
720
- await messenger.initialize();
721
- //console.log(`Messenger initialized and registered for ${f.address.slice(0, 30)}...`);
722
- }
723
- catch (error) {
724
- // 如果注册失败,先打印详细错误信息,再报错
725
- console.error(`[Account Debug] 原始错误详情:`, error);
726
- if (error instanceof Error) {
727
- console.error(`[Account Debug] 错误名称:`, error.name);
728
- console.error(`[Account Debug] 错误消息:`, error.message);
729
- console.error(`[Account Debug] 错误堆栈:`, error.stack);
730
- }
731
- // 如果注册失败,直接报错,不保存任何本地更改
732
- W_ERROR(WErrors.InvalidParam, `Failed to initialize messenger: ${error instanceof Error ? error.message : String(error)}`);
733
- }
734
- // 【关键修复】只有服务器注册成功后,才保存 f.m 到本地
702
+ // 【修改】直接保存 m 字段,Messenger 的初始化由 MessengerManager 在首次使用时自动完成
735
703
  const now = Date.now();
736
704
  f.m = m;
737
705
  f.updatedAt = now;