wowok 2.1.19 → 2.1.21
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.
- package/dist/cjs/w/local/account.js +14 -46
- package/dist/cjs/w/local/account.js.map +1 -1
- package/dist/cjs/w/messenger/crypto.js +31 -0
- package/dist/cjs/w/messenger/crypto.js.map +1 -1
- package/dist/cjs/w/messenger/messenger-api.d.ts +27 -4
- package/dist/cjs/w/messenger/messenger-api.js +191 -256
- package/dist/cjs/w/messenger/messenger-api.js.map +1 -1
- package/dist/cjs/w/messenger/messenger-manager.d.ts +39 -3
- package/dist/cjs/w/messenger/messenger-manager.js +192 -107
- package/dist/cjs/w/messenger/messenger-manager.js.map +1 -1
- package/dist/cjs/w/messenger/messenger.d.ts +9 -1
- package/dist/cjs/w/messenger/messenger.js +33 -0
- package/dist/cjs/w/messenger/messenger.js.map +1 -1
- package/dist/cjs/w/messenger/server.d.ts +2 -2
- package/dist/cjs/w/messenger/server.js.map +1 -1
- package/dist/cjs/w/messenger/session.d.ts +15 -0
- package/dist/cjs/w/messenger/session.js +83 -35
- package/dist/cjs/w/messenger/session.js.map +1 -1
- package/dist/cjs/w/messenger/storage.d.ts +12 -0
- package/dist/cjs/w/messenger/storage.js +51 -2
- package/dist/cjs/w/messenger/storage.js.map +1 -1
- package/dist/cjs/w/messenger/templates/wts-html-template.d.ts +64 -0
- package/dist/cjs/w/messenger/templates/wts-html-template.js +302 -0
- package/dist/cjs/w/messenger/templates/wts-html-template.js.map +1 -0
- package/dist/cjs/w/messenger/types.d.ts +4 -3
- package/dist/cjs/w/messenger/types.js +1 -1
- package/dist/cjs/w/messenger/types.js.map +1 -1
- package/dist/esm/w/local/account.js +14 -46
- package/dist/esm/w/local/account.js.map +1 -1
- package/dist/esm/w/messenger/crypto.js +31 -0
- package/dist/esm/w/messenger/crypto.js.map +1 -1
- package/dist/esm/w/messenger/messenger-api.d.ts +27 -4
- package/dist/esm/w/messenger/messenger-api.js +191 -256
- package/dist/esm/w/messenger/messenger-api.js.map +1 -1
- package/dist/esm/w/messenger/messenger-manager.d.ts +39 -3
- package/dist/esm/w/messenger/messenger-manager.js +192 -107
- package/dist/esm/w/messenger/messenger-manager.js.map +1 -1
- package/dist/esm/w/messenger/messenger.d.ts +9 -1
- package/dist/esm/w/messenger/messenger.js +33 -0
- package/dist/esm/w/messenger/messenger.js.map +1 -1
- package/dist/esm/w/messenger/server.d.ts +2 -2
- package/dist/esm/w/messenger/server.js.map +1 -1
- package/dist/esm/w/messenger/session.d.ts +15 -0
- package/dist/esm/w/messenger/session.js +83 -35
- package/dist/esm/w/messenger/session.js.map +1 -1
- package/dist/esm/w/messenger/storage.d.ts +12 -0
- package/dist/esm/w/messenger/storage.js +51 -2
- package/dist/esm/w/messenger/storage.js.map +1 -1
- package/dist/esm/w/messenger/templates/wts-html-template.d.ts +64 -0
- package/dist/esm/w/messenger/templates/wts-html-template.js +302 -0
- package/dist/esm/w/messenger/templates/wts-html-template.js.map +1 -0
- package/dist/esm/w/messenger/types.d.ts +4 -3
- package/dist/esm/w/messenger/types.js +1 -1
- package/dist/esm/w/messenger/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,302 @@
|
|
|
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, "<")
|
|
14
|
+
.replace(/>/g, ">")
|
|
15
|
+
.replace(/"/g, """)
|
|
16
|
+
.replace(/'/g, "'");
|
|
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
|
+
export function generateHtmlPage(data) {
|
|
233
|
+
const { title, theme, bgColor, textColor, borderColor, meta, payload, verifyResult, maxLastReceivedLeafIndex, } = data;
|
|
234
|
+
const messagesHtml = payload.messages
|
|
235
|
+
.map((msg, index) => generateMessageHtml(msg, index, data))
|
|
236
|
+
.join("");
|
|
237
|
+
const signatureHtml = generateSignatureHtml(verifyResult, theme, textColor);
|
|
238
|
+
const verificationStatus = verifyResult.valid
|
|
239
|
+
? `<span style="color: #4caf50; margin-left: 8px;">✓ The accuracy, sequentiality, and integrity of the messages are verified without tampering</span>`
|
|
240
|
+
: `<span style="color: #ff9800; margin-left: 8px;">⚠ ${verifyResult.error || "Hash mismatch - content has been tampered"}</span>`;
|
|
241
|
+
const lastReceivedHtml = maxLastReceivedLeafIndex >= 0
|
|
242
|
+
? `<div>Last Received Leaf Index: ${maxLastReceivedLeafIndex} (messages up to this index are delivered and decrypted)</div>`
|
|
243
|
+
: "";
|
|
244
|
+
return `<!DOCTYPE html>
|
|
245
|
+
<html lang="en">
|
|
246
|
+
<head>
|
|
247
|
+
<meta charset="UTF-8">
|
|
248
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
249
|
+
<title>${escapeHtml(title)}</title>
|
|
250
|
+
<style>
|
|
251
|
+
body {
|
|
252
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
253
|
+
max-width: 800px;
|
|
254
|
+
margin: 0 auto;
|
|
255
|
+
padding: 20px;
|
|
256
|
+
background: ${bgColor};
|
|
257
|
+
color: ${textColor};
|
|
258
|
+
}
|
|
259
|
+
.header {
|
|
260
|
+
border-bottom: 2px solid ${borderColor};
|
|
261
|
+
padding-bottom: 16px;
|
|
262
|
+
margin-bottom: 24px;
|
|
263
|
+
}
|
|
264
|
+
.meta {
|
|
265
|
+
font-size: 12px;
|
|
266
|
+
color: #666;
|
|
267
|
+
margin-top: 8px;
|
|
268
|
+
}
|
|
269
|
+
.note {
|
|
270
|
+
font-size: 11px;
|
|
271
|
+
color: #999;
|
|
272
|
+
margin-top: 12px;
|
|
273
|
+
padding: 8px;
|
|
274
|
+
background: ${theme === "dark" ? "#2a2a2a" : "#f5f5f5"};
|
|
275
|
+
border-radius: 4px;
|
|
276
|
+
font-style: italic;
|
|
277
|
+
}
|
|
278
|
+
</style>
|
|
279
|
+
</head>
|
|
280
|
+
<body>
|
|
281
|
+
<div class="header">
|
|
282
|
+
<h1>Witness Timestamped Sequence</h1>
|
|
283
|
+
<div class="note">
|
|
284
|
+
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.
|
|
285
|
+
</div>
|
|
286
|
+
<div style="font-size: 14px; color: #666; margin-top: 4px;">
|
|
287
|
+
${new Date(meta.startTime).toLocaleDateString()} - ${new Date(meta.endTime).toLocaleDateString()}
|
|
288
|
+
${verificationStatus}
|
|
289
|
+
</div>
|
|
290
|
+
<div class="meta">
|
|
291
|
+
<div>Session Participants: ${payload.session.participants.map((p) => escapeHtml(p.slice(0, 6)) + "..." + escapeHtml(p.slice(-3))).join(", ")}</div>
|
|
292
|
+
<div>Messages: ${meta.messageCount} | Time: ${new Date(meta.startTime).toLocaleString()} - ${new Date(meta.endTime).toLocaleString()}</div>
|
|
293
|
+
<div style="word-break: break-all;">Merkle Root: ${escapeHtml(meta.merkleRoot)}</div>
|
|
294
|
+
${lastReceivedHtml}
|
|
295
|
+
${signatureHtml}
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
${messagesHtml}
|
|
299
|
+
</body>
|
|
300
|
+
</html>`;
|
|
301
|
+
}
|
|
302
|
+
//# 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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"}
|
|
@@ -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;
|
|
@@ -736,7 +737,7 @@ export interface GetSettingsRequest extends SignedRequestBase {
|
|
|
736
737
|
export interface GetSettingsResponse {
|
|
737
738
|
allowStrangerMessages?: boolean;
|
|
738
739
|
maxInboxSize?: number;
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
740
|
+
serverMinInboxSizeLimit: number;
|
|
741
|
+
serverMaxInboxSizeLimit: number;
|
|
742
|
+
serverDefaultAllowStrangerMessages: boolean;
|
|
742
743
|
}
|
|
@@ -39,7 +39,7 @@ 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 = "https://messenger.wowok.net"; // "http://127.0.0.1:3000";
|
|
43
43
|
export const CHAIN_PROOF_TYPE = 1;
|
|
44
44
|
export const CURRENT_NETWORK = ENTRYPOINT.Testnet;
|
|
45
45
|
export const DEFAULT_MESSENGER_CONFIG = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/w/messenger/types.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;GAOG;AAEH,6BAA6B;AAE7B,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACtB,iEAAkB,CAAA;IAClB,iEAAkB,CAAA;IAClB,sDAAsD;IACtD,mCAAmC;AACpC,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC3B,iCAAa,CAAA;IACb,yCAAqB,CAAA;AACtB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACxB,oCAAmB,CAAA;IACnB,wCAAuB,CAAA;IACvB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,wCAAuB,CAAA;IACvB,kDAAiC,CAAA;AAClC,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAsSD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,YAAY;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,gBAAgB;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,YAAY;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,cAAc;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,6BAA6B,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/w/messenger/types.ts"],"names":[],"mappings":"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"}
|