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.
Files changed (148) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/dc.min.js +1 -1
  3. package/dist/esm/index.js +1 -1
  4. package/dist/index.d.ts +934 -878
  5. package/package.json +4 -8
  6. package/dist/cjs/helia-core-B1Xqha7a.js +0 -1
  7. package/dist/cjs/helia-core-D8Uv1KjQ.js +0 -1
  8. package/dist/cjs/polkadot-api-7PhQf3ws.js +0 -1
  9. package/dist/cjs/polkadot-api-CtrJVWuZ.js +0 -1
  10. package/dist/esm/chunks/helia-core-BxMqyK2Y.js +0 -1
  11. package/dist/esm/chunks/helia-core-DMXRpcO-.js +0 -1
  12. package/dist/esm/chunks/polkadot-api-5Y9Bw8VT.js +0 -1
  13. package/dist/esm/chunks/polkadot-api-D69Ioun_.js +0 -1
  14. package/lib/common/blowfish/block.ts +0 -259
  15. package/lib/common/blowfish/cipher.ts +0 -144
  16. package/lib/common/blowfish/const.ts +0 -195
  17. package/lib/common/chain.ts +0 -469
  18. package/lib/common/commonclient.ts +0 -202
  19. package/lib/common/constants.ts +0 -55
  20. package/lib/common/dc-key/ed25519.ts +0 -343
  21. package/lib/common/dc-key/keyManager.ts +0 -424
  22. package/lib/common/dcapi.ts +0 -98
  23. package/lib/common/dcutil.ts +0 -627
  24. package/lib/common/define.ts +0 -70
  25. package/lib/common/error.ts +0 -67
  26. package/lib/common/grpc-dc.ts +0 -104
  27. package/lib/common/module-system.ts +0 -184
  28. package/lib/common/service-worker.ts +0 -234
  29. package/lib/common/types/types.ts +0 -344
  30. package/lib/dc.ts +0 -701
  31. package/lib/implements/account/client.ts +0 -185
  32. package/lib/implements/account/manager.ts +0 -683
  33. package/lib/implements/aiproxy/client.ts +0 -357
  34. package/lib/implements/aiproxy/manager.ts +0 -670
  35. package/lib/implements/cache/client.ts +0 -105
  36. package/lib/implements/cache/manager.ts +0 -127
  37. package/lib/implements/comment/client.ts +0 -982
  38. package/lib/implements/comment/manager.ts +0 -1151
  39. package/lib/implements/dc/client.ts +0 -51
  40. package/lib/implements/dc/manager.ts +0 -33
  41. package/lib/implements/file/client.ts +0 -253
  42. package/lib/implements/file/file-cache-manager.ts +0 -142
  43. package/lib/implements/file/manager.ts +0 -1240
  44. package/lib/implements/file/seekableFileStream.ts +0 -344
  45. package/lib/implements/file/streamwriter.ts +0 -322
  46. package/lib/implements/keyvalue/client.ts +0 -376
  47. package/lib/implements/keyvalue/manager.ts +0 -759
  48. package/lib/implements/message/client.ts +0 -250
  49. package/lib/implements/message/manager.ts +0 -215
  50. package/lib/implements/threaddb/cbor/coding.ts +0 -62
  51. package/lib/implements/threaddb/cbor/event.ts +0 -336
  52. package/lib/implements/threaddb/cbor/node.ts +0 -542
  53. package/lib/implements/threaddb/cbor/record.ts +0 -398
  54. package/lib/implements/threaddb/common/AsyncMutex.ts +0 -24
  55. package/lib/implements/threaddb/common/addrinfo.ts +0 -135
  56. package/lib/implements/threaddb/common/dispatcher.ts +0 -81
  57. package/lib/implements/threaddb/common/idbstore-adapter.ts +0 -260
  58. package/lib/implements/threaddb/common/json-patcher.ts +0 -204
  59. package/lib/implements/threaddb/common/key.ts +0 -290
  60. package/lib/implements/threaddb/common/level-adapter.ts +0 -235
  61. package/lib/implements/threaddb/common/lineReader.ts +0 -79
  62. package/lib/implements/threaddb/common/logstore.ts +0 -215
  63. package/lib/implements/threaddb/common/transformed-datastore.ts +0 -308
  64. package/lib/implements/threaddb/core/app.ts +0 -206
  65. package/lib/implements/threaddb/core/core.ts +0 -230
  66. package/lib/implements/threaddb/core/db.ts +0 -249
  67. package/lib/implements/threaddb/core/event.ts +0 -54
  68. package/lib/implements/threaddb/core/head.ts +0 -89
  69. package/lib/implements/threaddb/core/identity.ts +0 -171
  70. package/lib/implements/threaddb/core/logstore.ts +0 -137
  71. package/lib/implements/threaddb/core/options.ts +0 -14
  72. package/lib/implements/threaddb/core/record.ts +0 -54
  73. package/lib/implements/threaddb/db/collection.ts +0 -1910
  74. package/lib/implements/threaddb/db/db.ts +0 -698
  75. package/lib/implements/threaddb/db/json2Query.ts +0 -192
  76. package/lib/implements/threaddb/db/query.ts +0 -524
  77. package/lib/implements/threaddb/dbclient.ts +0 -543
  78. package/lib/implements/threaddb/dbmanager.ts +0 -1906
  79. package/lib/implements/threaddb/lsstoreds/addr_book.ts +0 -549
  80. package/lib/implements/threaddb/lsstoreds/cache.ts +0 -36
  81. package/lib/implements/threaddb/lsstoreds/cyclic_batch.ts +0 -87
  82. package/lib/implements/threaddb/lsstoreds/global.ts +0 -151
  83. package/lib/implements/threaddb/lsstoreds/headbook.ts +0 -373
  84. package/lib/implements/threaddb/lsstoreds/keybook.ts +0 -297
  85. package/lib/implements/threaddb/lsstoreds/logstore.ts +0 -29
  86. package/lib/implements/threaddb/lsstoreds/metadata.ts +0 -223
  87. package/lib/implements/threaddb/net/define.ts +0 -149
  88. package/lib/implements/threaddb/net/grpcClient.ts +0 -589
  89. package/lib/implements/threaddb/net/grpcserver.ts +0 -146
  90. package/lib/implements/threaddb/net/net.ts +0 -2047
  91. package/lib/implements/threaddb/pb/lstore.proto +0 -38
  92. package/lib/implements/threaddb/pb/lstore.ts +0 -393
  93. package/lib/implements/threaddb/pb/lstore_pb.d.ts +0 -433
  94. package/lib/implements/threaddb/pb/lstore_pb.js +0 -1085
  95. package/lib/implements/threaddb/pb/net.proto +0 -194
  96. package/lib/implements/threaddb/pb/net_pb.d.ts +0 -2349
  97. package/lib/implements/threaddb/pb/net_pb.js +0 -5525
  98. package/lib/implements/threaddb/pb/proto-custom-types.ts +0 -212
  99. package/lib/implements/util/client.ts +0 -72
  100. package/lib/implements/util/manager.ts +0 -146
  101. package/lib/implements/wallet/manager.ts +0 -671
  102. package/lib/index.ts +0 -57
  103. package/lib/interfaces/DCContext.ts +0 -51
  104. package/lib/interfaces/aiproxy-interface.ts +0 -145
  105. package/lib/interfaces/auth-interface.ts +0 -118
  106. package/lib/interfaces/cache-interface.ts +0 -22
  107. package/lib/interfaces/client-interface.ts +0 -11
  108. package/lib/interfaces/comment-interface.ts +0 -167
  109. package/lib/interfaces/components/news-component.ts +0 -0
  110. package/lib/interfaces/database-interface.ts +0 -169
  111. package/lib/interfaces/file-interface.ts +0 -120
  112. package/lib/interfaces/index.ts +0 -10
  113. package/lib/interfaces/keyvalue-interface.ts +0 -156
  114. package/lib/interfaces/message-interface.ts +0 -22
  115. package/lib/interfaces/util-interface.ts +0 -31
  116. package/lib/modules/aiproxy-module.ts +0 -246
  117. package/lib/modules/auth-module.ts +0 -753
  118. package/lib/modules/cache-module.ts +0 -99
  119. package/lib/modules/client-module.ts +0 -71
  120. package/lib/modules/comment-module.ts +0 -429
  121. package/lib/modules/components/news-components.ts +0 -390
  122. package/lib/modules/database-module.ts +0 -598
  123. package/lib/modules/file-module.ts +0 -291
  124. package/lib/modules/index.ts +0 -13
  125. package/lib/modules/keyvalue-module.ts +0 -379
  126. package/lib/modules/message-module.ts +0 -107
  127. package/lib/modules/util-module.ts +0 -148
  128. package/lib/polyfills/process-env-browser.ts +0 -1
  129. package/lib/proto/datasource.ts +0 -93
  130. package/lib/proto/dcnet.proto +0 -1601
  131. package/lib/proto/dcnet_proto.d.ts +0 -22857
  132. package/lib/proto/dcnet_proto.js +0 -55204
  133. package/lib/proto/dcnet_proto_sparse.js +0 -55166
  134. package/lib/proto/oidfetch.proto +0 -25
  135. package/lib/proto/oidfetch_proto.d.ts +0 -585
  136. package/lib/proto/oidfetch_proto.js +0 -1247
  137. package/lib/serverless/babel-browser.ts +0 -39
  138. package/lib/serverless/base_entity.ts +0 -78
  139. package/lib/serverless/base_repository.ts +0 -414
  140. package/lib/serverless/browser_schema_extractor.ts +0 -283
  141. package/lib/serverless/decorator_factory.ts +0 -322
  142. package/lib/util/BrowserLineReader.ts +0 -73
  143. package/lib/util/base64.ts +0 -105
  144. package/lib/util/bcrypt.ts +0 -206
  145. package/lib/util/curve25519Encryption.ts +0 -418
  146. package/lib/util/dccrypt.ts +0 -73
  147. package/lib/util/logger.ts +0 -104
  148. 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
- };