web-dc-api 0.1.5 → 0.1.6
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/index.js +1 -1
- package/dist/dc.min.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/index.d.ts +934 -878
- package/package.json +4 -8
- package/dist/cjs/helia-core-B1Xqha7a.js +0 -1
- package/dist/cjs/helia-core-D8Uv1KjQ.js +0 -1
- package/dist/cjs/polkadot-api-7PhQf3ws.js +0 -1
- package/dist/cjs/polkadot-api-CtrJVWuZ.js +0 -1
- package/dist/esm/chunks/helia-core-BxMqyK2Y.js +0 -1
- package/dist/esm/chunks/helia-core-DMXRpcO-.js +0 -1
- package/dist/esm/chunks/polkadot-api-5Y9Bw8VT.js +0 -1
- package/dist/esm/chunks/polkadot-api-D69Ioun_.js +0 -1
- package/lib/common/blowfish/block.ts +0 -259
- package/lib/common/blowfish/cipher.ts +0 -144
- package/lib/common/blowfish/const.ts +0 -195
- package/lib/common/chain.ts +0 -469
- package/lib/common/commonclient.ts +0 -202
- package/lib/common/constants.ts +0 -55
- package/lib/common/dc-key/ed25519.ts +0 -343
- package/lib/common/dc-key/keyManager.ts +0 -424
- package/lib/common/dcapi.ts +0 -98
- package/lib/common/dcutil.ts +0 -627
- package/lib/common/define.ts +0 -70
- package/lib/common/error.ts +0 -67
- package/lib/common/grpc-dc.ts +0 -104
- package/lib/common/module-system.ts +0 -184
- package/lib/common/service-worker.ts +0 -234
- package/lib/common/types/types.ts +0 -344
- package/lib/dc.ts +0 -701
- package/lib/implements/account/client.ts +0 -185
- package/lib/implements/account/manager.ts +0 -683
- package/lib/implements/aiproxy/client.ts +0 -357
- package/lib/implements/aiproxy/manager.ts +0 -670
- package/lib/implements/cache/client.ts +0 -105
- package/lib/implements/cache/manager.ts +0 -127
- package/lib/implements/comment/client.ts +0 -982
- package/lib/implements/comment/manager.ts +0 -1151
- package/lib/implements/dc/client.ts +0 -51
- package/lib/implements/dc/manager.ts +0 -33
- package/lib/implements/file/client.ts +0 -253
- package/lib/implements/file/file-cache-manager.ts +0 -142
- package/lib/implements/file/manager.ts +0 -1240
- package/lib/implements/file/seekableFileStream.ts +0 -344
- package/lib/implements/file/streamwriter.ts +0 -322
- package/lib/implements/keyvalue/client.ts +0 -376
- package/lib/implements/keyvalue/manager.ts +0 -759
- package/lib/implements/message/client.ts +0 -250
- package/lib/implements/message/manager.ts +0 -215
- package/lib/implements/threaddb/cbor/coding.ts +0 -62
- package/lib/implements/threaddb/cbor/event.ts +0 -336
- package/lib/implements/threaddb/cbor/node.ts +0 -542
- package/lib/implements/threaddb/cbor/record.ts +0 -398
- package/lib/implements/threaddb/common/AsyncMutex.ts +0 -24
- package/lib/implements/threaddb/common/addrinfo.ts +0 -135
- package/lib/implements/threaddb/common/dispatcher.ts +0 -81
- package/lib/implements/threaddb/common/idbstore-adapter.ts +0 -260
- package/lib/implements/threaddb/common/json-patcher.ts +0 -204
- package/lib/implements/threaddb/common/key.ts +0 -290
- package/lib/implements/threaddb/common/level-adapter.ts +0 -235
- package/lib/implements/threaddb/common/lineReader.ts +0 -79
- package/lib/implements/threaddb/common/logstore.ts +0 -215
- package/lib/implements/threaddb/common/transformed-datastore.ts +0 -308
- package/lib/implements/threaddb/core/app.ts +0 -206
- package/lib/implements/threaddb/core/core.ts +0 -230
- package/lib/implements/threaddb/core/db.ts +0 -249
- package/lib/implements/threaddb/core/event.ts +0 -54
- package/lib/implements/threaddb/core/head.ts +0 -89
- package/lib/implements/threaddb/core/identity.ts +0 -171
- package/lib/implements/threaddb/core/logstore.ts +0 -137
- package/lib/implements/threaddb/core/options.ts +0 -14
- package/lib/implements/threaddb/core/record.ts +0 -54
- package/lib/implements/threaddb/db/collection.ts +0 -1910
- package/lib/implements/threaddb/db/db.ts +0 -698
- package/lib/implements/threaddb/db/json2Query.ts +0 -192
- package/lib/implements/threaddb/db/query.ts +0 -524
- package/lib/implements/threaddb/dbclient.ts +0 -543
- package/lib/implements/threaddb/dbmanager.ts +0 -1906
- package/lib/implements/threaddb/lsstoreds/addr_book.ts +0 -549
- package/lib/implements/threaddb/lsstoreds/cache.ts +0 -36
- package/lib/implements/threaddb/lsstoreds/cyclic_batch.ts +0 -87
- package/lib/implements/threaddb/lsstoreds/global.ts +0 -151
- package/lib/implements/threaddb/lsstoreds/headbook.ts +0 -373
- package/lib/implements/threaddb/lsstoreds/keybook.ts +0 -297
- package/lib/implements/threaddb/lsstoreds/logstore.ts +0 -29
- package/lib/implements/threaddb/lsstoreds/metadata.ts +0 -223
- package/lib/implements/threaddb/net/define.ts +0 -149
- package/lib/implements/threaddb/net/grpcClient.ts +0 -589
- package/lib/implements/threaddb/net/grpcserver.ts +0 -146
- package/lib/implements/threaddb/net/net.ts +0 -2047
- package/lib/implements/threaddb/pb/lstore.proto +0 -38
- package/lib/implements/threaddb/pb/lstore.ts +0 -393
- package/lib/implements/threaddb/pb/lstore_pb.d.ts +0 -433
- package/lib/implements/threaddb/pb/lstore_pb.js +0 -1085
- package/lib/implements/threaddb/pb/net.proto +0 -194
- package/lib/implements/threaddb/pb/net_pb.d.ts +0 -2349
- package/lib/implements/threaddb/pb/net_pb.js +0 -5525
- package/lib/implements/threaddb/pb/proto-custom-types.ts +0 -212
- package/lib/implements/util/client.ts +0 -72
- package/lib/implements/util/manager.ts +0 -146
- package/lib/implements/wallet/manager.ts +0 -671
- package/lib/index.ts +0 -57
- package/lib/interfaces/DCContext.ts +0 -51
- package/lib/interfaces/aiproxy-interface.ts +0 -145
- package/lib/interfaces/auth-interface.ts +0 -118
- package/lib/interfaces/cache-interface.ts +0 -22
- package/lib/interfaces/client-interface.ts +0 -11
- package/lib/interfaces/comment-interface.ts +0 -167
- package/lib/interfaces/components/news-component.ts +0 -0
- package/lib/interfaces/database-interface.ts +0 -169
- package/lib/interfaces/file-interface.ts +0 -120
- package/lib/interfaces/index.ts +0 -10
- package/lib/interfaces/keyvalue-interface.ts +0 -156
- package/lib/interfaces/message-interface.ts +0 -22
- package/lib/interfaces/util-interface.ts +0 -31
- package/lib/modules/aiproxy-module.ts +0 -246
- package/lib/modules/auth-module.ts +0 -753
- package/lib/modules/cache-module.ts +0 -99
- package/lib/modules/client-module.ts +0 -71
- package/lib/modules/comment-module.ts +0 -429
- package/lib/modules/components/news-components.ts +0 -390
- package/lib/modules/database-module.ts +0 -598
- package/lib/modules/file-module.ts +0 -291
- package/lib/modules/index.ts +0 -13
- package/lib/modules/keyvalue-module.ts +0 -379
- package/lib/modules/message-module.ts +0 -107
- package/lib/modules/util-module.ts +0 -148
- package/lib/polyfills/process-env-browser.ts +0 -1
- package/lib/proto/datasource.ts +0 -93
- package/lib/proto/dcnet.proto +0 -1601
- package/lib/proto/dcnet_proto.d.ts +0 -22857
- package/lib/proto/dcnet_proto.js +0 -55204
- package/lib/proto/dcnet_proto_sparse.js +0 -55166
- package/lib/proto/oidfetch.proto +0 -25
- package/lib/proto/oidfetch_proto.d.ts +0 -585
- package/lib/proto/oidfetch_proto.js +0 -1247
- package/lib/serverless/babel-browser.ts +0 -39
- package/lib/serverless/base_entity.ts +0 -78
- package/lib/serverless/base_repository.ts +0 -414
- package/lib/serverless/browser_schema_extractor.ts +0 -283
- package/lib/serverless/decorator_factory.ts +0 -322
- package/lib/util/BrowserLineReader.ts +0 -73
- package/lib/util/base64.ts +0 -105
- package/lib/util/bcrypt.ts +0 -206
- package/lib/util/curve25519Encryption.ts +0 -418
- package/lib/util/dccrypt.ts +0 -73
- package/lib/util/logger.ts +0 -104
- package/lib/util/utils.ts +0 -289
package/lib/util/utils.ts
DELETED
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
import { User } from "../common/types/types";
|
|
2
|
-
import { base32 } from "multiformats/bases/base32";
|
|
3
|
-
import * as JsCrypto from "jscrypto/es6";
|
|
4
|
-
import { Multiaddr, multiaddr } from "@multiformats/multiaddr";
|
|
5
|
-
import { peerIdFromString } from "@libp2p/peer-id";
|
|
6
|
-
import { Ed25519PrivateKey, PeerId } from "@libp2p/interface";
|
|
7
|
-
import { keys } from "@libp2p/crypto";
|
|
8
|
-
import * as buffer from "buffer/";
|
|
9
|
-
const { Buffer } = buffer;
|
|
10
|
-
const { Word32Array, AES, pad, mode, Base64 } = JsCrypto;
|
|
11
|
-
const NonceBytes = 12;
|
|
12
|
-
const TagBytes = 16;
|
|
13
|
-
|
|
14
|
-
// SHA-256 哈希计算
|
|
15
|
-
async function sha256(data: Uint8Array): Promise<Uint8Array> {
|
|
16
|
-
const hashBuffer = await crypto.subtle.digest("SHA-256", data as any);
|
|
17
|
-
return new Uint8Array(hashBuffer);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// 生成随机字节
|
|
21
|
-
function getRandomBytes(length: number): Uint8Array {
|
|
22
|
-
return crypto.getRandomValues(new Uint8Array(length));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// 连接 Uint8Array
|
|
26
|
-
function concatenateUint8Arrays(...arrays: Uint8Array[]): Uint8Array {
|
|
27
|
-
const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);
|
|
28
|
-
const result = new Uint8Array(totalLength);
|
|
29
|
-
let offset = 0;
|
|
30
|
-
for (const arr of arrays) {
|
|
31
|
-
result.set(arr, offset);
|
|
32
|
-
offset += arr.length;
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* 将 64 位无符号整数转换为大端序字节数组(用于文件头)
|
|
38
|
-
* @param value 要转换的整数值
|
|
39
|
-
* @returns 8 字节的 Uint8Array
|
|
40
|
-
*/
|
|
41
|
-
function uint64ToBigEndianBytes(value: number | bigint): Uint8Array {
|
|
42
|
-
const buffer = new ArrayBuffer(8);
|
|
43
|
-
const view = new DataView(buffer);
|
|
44
|
-
|
|
45
|
-
// 确保值是 BigInt 类型
|
|
46
|
-
const bigIntValue = typeof value === "number" ? BigInt(value) : value;
|
|
47
|
-
|
|
48
|
-
// 使用 DataView 设置大端序值
|
|
49
|
-
view.setBigUint64(0, bigIntValue, false); // false 表示大端序
|
|
50
|
-
|
|
51
|
-
return new Uint8Array(buffer);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Helper 函数:将 Uint64 转换为小端 Uint8Array
|
|
55
|
-
function uint64ToLittleEndianBytes(value: number): Uint8Array {
|
|
56
|
-
const buffer = new ArrayBuffer(8);
|
|
57
|
-
const view = new DataView(buffer);
|
|
58
|
-
view.setUint32(0, value & 0xffffffff, true);
|
|
59
|
-
view.setUint32(4, Math.floor(value / 2 ** 32), true);
|
|
60
|
-
return new Uint8Array(buffer);
|
|
61
|
-
}
|
|
62
|
-
// Helper 函数:将 Uint32 转换为小端 Uint8Array
|
|
63
|
-
function uint32ToLittleEndianBytes(value: number): Uint8Array {
|
|
64
|
-
const buffer = new ArrayBuffer(4);
|
|
65
|
-
const view = new DataView(buffer);
|
|
66
|
-
view.setUint32(0, value, true); // true 表示小端
|
|
67
|
-
return new Uint8Array(buffer);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// 将 Uint64 转换为大端 Uint8Array
|
|
71
|
-
function uint64ToUint8Array(
|
|
72
|
-
value: bigint,
|
|
73
|
-
littleEndian: boolean = false
|
|
74
|
-
): Uint8Array {
|
|
75
|
-
const buffer = new ArrayBuffer(8); // 64 位需要 8 字节
|
|
76
|
-
const view = new DataView(buffer);
|
|
77
|
-
view.setBigUint64(0, value, littleEndian); // false 表示大端
|
|
78
|
-
return new Uint8Array(buffer);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
//将 Uint8Array 转换为 uint64
|
|
82
|
-
function uint8ArrayToUint64(
|
|
83
|
-
bytes: Uint8Array,
|
|
84
|
-
littleEndian: boolean = false
|
|
85
|
-
): bigint {
|
|
86
|
-
if (bytes.length !== 8) {
|
|
87
|
-
throw new Error("Uint8Array must be exactly 8 bytes long");
|
|
88
|
-
}
|
|
89
|
-
const buffer = bytes.buffer;
|
|
90
|
-
const view = new DataView(buffer);
|
|
91
|
-
return view.getBigUint64(0, littleEndian);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function isUser(obj: any): obj is User {
|
|
95
|
-
// implement checks for required properties here
|
|
96
|
-
return true; // or false if the object doesn't conform to User
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
100
|
-
|
|
101
|
-
function decryptContentForBrowser(
|
|
102
|
-
encryptBuffer: Uint8Array,
|
|
103
|
-
decryptKey: string
|
|
104
|
-
) {
|
|
105
|
-
if (decryptKey == "" || encryptBuffer.length <= 28) {
|
|
106
|
-
return encryptBuffer;
|
|
107
|
-
}
|
|
108
|
-
const nonce = encryptBuffer.subarray(0, NonceBytes);
|
|
109
|
-
const iv = new Word32Array(nonce);
|
|
110
|
-
const tag = encryptBuffer.subarray(
|
|
111
|
-
encryptBuffer.length - TagBytes,
|
|
112
|
-
encryptBuffer.length
|
|
113
|
-
);
|
|
114
|
-
const kdfSalt = new Word32Array(tag);
|
|
115
|
-
const encryptContent = encryptBuffer.subarray(
|
|
116
|
-
NonceBytes,
|
|
117
|
-
encryptBuffer.length - TagBytes
|
|
118
|
-
);
|
|
119
|
-
const cipherText = new Word32Array(encryptContent);
|
|
120
|
-
const key = new Word32Array(base32.decode(decryptKey));
|
|
121
|
-
const decrypted = AES.decrypt(cipherText.toString(Base64), key, {
|
|
122
|
-
iv: iv,
|
|
123
|
-
padding: pad.NoPadding,
|
|
124
|
-
mode: mode.GCM,
|
|
125
|
-
kdfSalt: kdfSalt,
|
|
126
|
-
});
|
|
127
|
-
return decrypted.toUint8Array();
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// 比较两个字节数组是否相等
|
|
131
|
-
function compareByteArrays(array1: Uint8Array, array2: Uint8Array) {
|
|
132
|
-
if (array1.byteLength != array2.byteLength) {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
const view1 = new DataView(array1.buffer, array1.byteOffset);
|
|
136
|
-
const view2 = new DataView(array2.buffer, array2.byteOffset);
|
|
137
|
-
for (let i = 0; i < array1.length; i++) {
|
|
138
|
-
if (view1.getUint8(i) !== view2.getUint8(i)) {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function mergeUInt8Arrays(a1: Uint8Array, a2: Uint8Array): Uint8Array {
|
|
146
|
-
// sum of individual array lengths
|
|
147
|
-
const mergedArray = new Uint8Array(a1.length + a2.length);
|
|
148
|
-
mergedArray.set(a1);
|
|
149
|
-
mergedArray.set(a2, a1.length);
|
|
150
|
-
return mergedArray;
|
|
151
|
-
}
|
|
152
|
-
function fastExtractPeerId(ma: Multiaddr | string): PeerId | null {
|
|
153
|
-
const addr = typeof ma === "string" ? multiaddr(ma) : ma;
|
|
154
|
-
const peerIdStr = addr.getPeerId(); // 直接使用内置方法
|
|
155
|
-
|
|
156
|
-
return peerIdStr ? peerIdFromString(peerIdStr) : null;
|
|
157
|
-
}
|
|
158
|
-
// 编码
|
|
159
|
-
const encodeKey = (buffer: Uint8Array) =>
|
|
160
|
-
btoa(String.fromCharCode(...buffer));
|
|
161
|
-
|
|
162
|
-
// 解码
|
|
163
|
-
const decodeKey = (str: string) =>
|
|
164
|
-
Uint8Array.from(atob(str), (c) => c.charCodeAt(0));
|
|
165
|
-
|
|
166
|
-
// 使用 Web Crypto API 安全存储
|
|
167
|
-
async function saveKeyPair(key: string, keyPair: Ed25519PrivateKey) {
|
|
168
|
-
// 导出密钥(正确参数)
|
|
169
|
-
const privateKey = encodeKey(keyPair.raw);
|
|
170
|
-
localStorage.setItem(key, privateKey);
|
|
171
|
-
}
|
|
172
|
-
async function loadKeyPair(key: string) {
|
|
173
|
-
const privateKey = localStorage.getItem(key);
|
|
174
|
-
if (privateKey) {
|
|
175
|
-
const keyPair = keys.privateKeyFromRaw(decodeKey(privateKey));
|
|
176
|
-
return keyPair;
|
|
177
|
-
}
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// 同域名跨浏览器锁获取并执行操作,mode "exclusive" | "shared";
|
|
182
|
-
async function withWebLock(
|
|
183
|
-
lockName: string,
|
|
184
|
-
mode: LockMode,
|
|
185
|
-
callback: () => Promise<void>
|
|
186
|
-
): Promise<void> {
|
|
187
|
-
await navigator.locks.request(lockName, { mode: mode }, async (lock) => {
|
|
188
|
-
console.log(`Lock "${lockName}" acquired`);
|
|
189
|
-
await callback();
|
|
190
|
-
console.log(`Lock "${lockName}" released`);
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
// 函数:解析32位无符号整数
|
|
194
|
-
function parseUint32(str: string) {
|
|
195
|
-
try {
|
|
196
|
-
// 尝试解析为数值
|
|
197
|
-
const num = parseInt(str, 10);
|
|
198
|
-
|
|
199
|
-
// 验证解析结果
|
|
200
|
-
if (isNaN(num)) {
|
|
201
|
-
throw new Error("invalid syntax");
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
if (num < 0) {
|
|
205
|
-
throw new Error("invalid syntax for uint");
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if (num > 0xffffffff) {
|
|
209
|
-
// 检查是否超出32位无符号范围
|
|
210
|
-
throw new Error("value out of range");
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// 转换为32位无符号整数
|
|
214
|
-
return num >>> 0;
|
|
215
|
-
} catch (error) {
|
|
216
|
-
throw error;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// 将16进制字符串转换为ASCII字符串,peeid bases32
|
|
221
|
-
function hexToAscii(hex: string): string {
|
|
222
|
-
// 移除0x前缀(如果存在)
|
|
223
|
-
const cleanHex = hex.startsWith("0x") ? hex.slice(2) : hex;
|
|
224
|
-
// 使用Buffer将16进制转换为字符串
|
|
225
|
-
return Buffer.from(cleanHex, "hex").toString("ascii");
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// json stringify过程中,将 BigInt 转为字符串
|
|
229
|
-
function jsonStringify(value: any): string {
|
|
230
|
-
return JSON.stringify(value, (_, val) =>
|
|
231
|
-
typeof val === 'bigint' ? val.toString() : val
|
|
232
|
-
);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* 将非负数字字符串(可带小数)格式化:
|
|
239
|
-
* - 仅对整数部分左侧补零至 20 位
|
|
240
|
-
* - 小数部分(若有)原样保留
|
|
241
|
-
* - 不进行数值运算,避免精度问题
|
|
242
|
-
* 例:
|
|
243
|
-
* - "123" -> "00000000000000000123"
|
|
244
|
-
* - "123.45" -> "00000000000000000123.45"
|
|
245
|
-
* - "0.5" -> "00000000000000000000.5"
|
|
246
|
-
*/
|
|
247
|
-
|
|
248
|
-
function padPositiveInt20(v: string | number): string {
|
|
249
|
-
const s0 = String(v).trim();
|
|
250
|
-
// 仅允许非负数字,支持一处小数点(不允许科学计数法/负号)
|
|
251
|
-
if (!/^\d+(\.\d+)?$/.test(s0)) throw new Error("只接受非负数字(可带小数)");
|
|
252
|
-
|
|
253
|
-
// 显式默认,避免 TS 推断 undefined
|
|
254
|
-
const parts = s0.split(".");
|
|
255
|
-
let intPart: string = parts[0] ?? "0";
|
|
256
|
-
let fracPart: string = parts[1] ?? "";
|
|
257
|
-
|
|
258
|
-
// 去掉整数部分前导 0
|
|
259
|
-
intPart = intPart.replace(/^0+/, "") || "0";
|
|
260
|
-
|
|
261
|
-
if (intPart.length > 30) throw new Error("整数部分超过 20 位宽度");
|
|
262
|
-
|
|
263
|
-
const paddedInt = intPart.padStart(20, "0");
|
|
264
|
-
return fracPart ? `${paddedInt}.${fracPart}` : paddedInt;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
export {
|
|
268
|
-
sha256,
|
|
269
|
-
getRandomBytes,
|
|
270
|
-
concatenateUint8Arrays,
|
|
271
|
-
uint32ToLittleEndianBytes,
|
|
272
|
-
uint64ToUint8Array,
|
|
273
|
-
uint8ArrayToUint64,
|
|
274
|
-
uint64ToLittleEndianBytes,
|
|
275
|
-
uint64ToBigEndianBytes,
|
|
276
|
-
isUser,
|
|
277
|
-
sleep,
|
|
278
|
-
decryptContentForBrowser,
|
|
279
|
-
compareByteArrays,
|
|
280
|
-
mergeUInt8Arrays,
|
|
281
|
-
fastExtractPeerId,
|
|
282
|
-
withWebLock,
|
|
283
|
-
saveKeyPair,
|
|
284
|
-
loadKeyPair,
|
|
285
|
-
parseUint32,
|
|
286
|
-
hexToAscii,
|
|
287
|
-
jsonStringify,
|
|
288
|
-
padPositiveInt20
|
|
289
|
-
};
|