web-dc-api 0.0.87 → 0.0.89
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 -0
- package/dist/cjs/protobuf-BVBdi7Hh.js +1 -0
- package/dist/dc.min.js +1 -19
- package/dist/esm/chunks/protobuf-CbxDm-Gy.js +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/index.d.ts +947 -886
- package/package.json +14 -17
- package/dist/index.cjs.js +0 -19
- package/dist/index.esm.js +0 -19
- 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 -595
- package/lib/common/define.ts +0 -66
- 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 -694
- 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 -202
- 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 -443
- package/lib/implements/threaddb/dbmanager.ts +0 -1901
- package/lib/implements/threaddb/lsstoreds/addr_book.ts +0 -452
- 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 -280
- 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 -138
- package/lib/implements/threaddb/net/grpcClient.ts +0 -582
- package/lib/implements/threaddb/net/grpcserver.ts +0 -146
- package/lib/implements/threaddb/net/net.ts +0 -2006
- 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 -664
- 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/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/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
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
import { Context } from '../core/core';
|
|
2
|
-
import { IThreadEvent as NetEvent, EventHeader as NetEventHeader } from '../core/event';
|
|
3
|
-
import { IRecord } from '../core/record';
|
|
4
|
-
import { SymmetricKey } from '../common/key'
|
|
5
|
-
import { CID } from 'multiformats/cid';
|
|
6
|
-
import * as dagCBOR from '@ipld/dag-cbor';
|
|
7
|
-
import { sha256 } from 'multiformats/hashes/sha2';
|
|
8
|
-
import { Format } from 'interface-ipld-format';
|
|
9
|
-
|
|
10
|
-
import { encodeBlock, decodeBlock } from './coding';
|
|
11
|
-
import {Block,Node} from './node';
|
|
12
|
-
import CID_IPLD from 'cids';
|
|
13
|
-
import { dagCbor ,DAGCBOR} from '@helia/dag-cbor'
|
|
14
|
-
import * as cbornode from './node';
|
|
15
|
-
import { Link } from 'multiformats/link'
|
|
16
|
-
import {IPLDNode} from '../core/core';
|
|
17
|
-
import {Blocks} from 'helia'
|
|
18
|
-
import { wrap } from 'module';
|
|
19
|
-
import { Head } from '../core/head';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// 注册 CBOR 类型
|
|
25
|
-
// TypeScript 不需要像 Go 一样的 init 函数中的注册
|
|
26
|
-
// dagCBOR 库会自动处理大多数类型
|
|
27
|
-
|
|
28
|
-
// 事件的节点结构
|
|
29
|
-
export interface EventObj {
|
|
30
|
-
body: CID;
|
|
31
|
-
header: CID;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// 事件头部的节点结构
|
|
35
|
-
interface EventHeaderObj {
|
|
36
|
-
key?: Uint8Array;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* 创建一个新事件,包装 body 节点
|
|
41
|
-
* @param dag DAG 服务
|
|
42
|
-
* @param body 要封装的节点
|
|
43
|
-
* @param rkey 加密密钥
|
|
44
|
-
* @returns 创建的事件
|
|
45
|
-
*/
|
|
46
|
-
export async function CreateEvent(
|
|
47
|
-
bstore: Blocks,
|
|
48
|
-
body: Node,
|
|
49
|
-
rkey: SymmetricKey
|
|
50
|
-
): Promise<NetEvent> {
|
|
51
|
-
// 创建随机对称密钥
|
|
52
|
-
const key = SymmetricKey.new();
|
|
53
|
-
if (!body.rawData) {
|
|
54
|
-
throw new Error("Node data is undefined");
|
|
55
|
-
}
|
|
56
|
-
const bodyBlock = new Block (body.rawData(), body.cid());
|
|
57
|
-
// 使用密钥加密 body
|
|
58
|
-
const codedBody = await encodeBlock(bodyBlock, key);
|
|
59
|
-
|
|
60
|
-
// 序列化密钥
|
|
61
|
-
const keyb = key.bytes();
|
|
62
|
-
|
|
63
|
-
// 创建事件头部
|
|
64
|
-
const eventHeader: EventHeaderObj = {
|
|
65
|
-
key: keyb
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const header = await cbornode.wrapObject(eventHeader);
|
|
69
|
-
const codedHeader = await encodeBlock(header, rkey);
|
|
70
|
-
|
|
71
|
-
// 创建事件对象
|
|
72
|
-
const obj: EventObj = {
|
|
73
|
-
body: codedBody.cid(),
|
|
74
|
-
header: codedHeader.cid()
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
// 包装事件对象为 CBOR 节点
|
|
78
|
-
const node = await cbornode.wrapObject(obj);
|
|
79
|
-
// 添加到 DAG
|
|
80
|
-
if (bstore) {
|
|
81
|
-
await bstore.put(node.cid(), node.data());
|
|
82
|
-
await bstore.put(codedHeader.cid(), codedHeader.data());
|
|
83
|
-
await bstore.put(codedBody.cid(), codedBody.data());
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// 返回事件
|
|
87
|
-
return new Event(
|
|
88
|
-
node,
|
|
89
|
-
obj,
|
|
90
|
-
new EventHeader(codedHeader, eventHeader),
|
|
91
|
-
codedBody
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* 根据 CID 获取事件
|
|
97
|
-
* @param ctx 上下文
|
|
98
|
-
* @param dag DAG 服务
|
|
99
|
-
* @param id 事件的 CID
|
|
100
|
-
* @returns 获取的事件
|
|
101
|
-
*/
|
|
102
|
-
export async function GetEvent(
|
|
103
|
-
dag: DAGCBOR,
|
|
104
|
-
id: CID
|
|
105
|
-
): Promise<NetEvent> {
|
|
106
|
-
const blockData = await dag.get<Uint8Array>( id);
|
|
107
|
-
const eventNode = await cbornode.decode(blockData);
|
|
108
|
-
return EventFromNode(eventNode);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* 将节点解码为事件
|
|
117
|
-
* @param node 要解码的节点
|
|
118
|
-
* @returns 解码后的事件
|
|
119
|
-
*/
|
|
120
|
-
export async function EventFromNode(eNode: Node): Promise<NetEvent> {
|
|
121
|
-
try {
|
|
122
|
-
//取出头部
|
|
123
|
-
const eventObj = eNode as unknown as EventObj;
|
|
124
|
-
const wrapedRnode = await cbornode.wrapObject(eventObj);
|
|
125
|
-
const event = new Event(wrapedRnode, eventObj);
|
|
126
|
-
return event;
|
|
127
|
-
} catch (err) {
|
|
128
|
-
throw new Error(`Failed to decode node into event: ${err instanceof Error ? err.message : String(err)}`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* 从记录中获取事件
|
|
134
|
-
* @param ctx 上下文
|
|
135
|
-
* @param dag DAG 服务
|
|
136
|
-
* @param rec 记录
|
|
137
|
-
* @returns 获取的事件
|
|
138
|
-
*/
|
|
139
|
-
export async function EventFromRecord(
|
|
140
|
-
bstore: Blocks,
|
|
141
|
-
rec: IRecord
|
|
142
|
-
): Promise<NetEvent> {
|
|
143
|
-
try {
|
|
144
|
-
const block = await rec.getBlock( bstore);
|
|
145
|
-
|
|
146
|
-
// 检查是否已经是 Event
|
|
147
|
-
if (block instanceof Event) {
|
|
148
|
-
return block;
|
|
149
|
-
}
|
|
150
|
-
return await EventFromNode(block as Node);
|
|
151
|
-
} catch (err) {
|
|
152
|
-
throw new Error(`Failed to get event from record: ${err instanceof Error ? err.message : String(err)}`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* 从 DAG 服务中移除事件
|
|
158
|
-
* @param ctx 上下文
|
|
159
|
-
* @param dag DAG 服务
|
|
160
|
-
* @param e 要移除的事件
|
|
161
|
-
*/
|
|
162
|
-
export async function RemoveEvent(
|
|
163
|
-
ctx: Context,
|
|
164
|
-
blockstore: Blocks,
|
|
165
|
-
e: Event
|
|
166
|
-
): Promise<void> {
|
|
167
|
-
await blockstore.delete(e.cid());
|
|
168
|
-
await blockstore.delete(e.headerCID());
|
|
169
|
-
await blockstore.delete(e.bodyCID());
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* 表示事件的 IPLD 节点
|
|
174
|
-
*/
|
|
175
|
-
export class Event implements NetEvent {
|
|
176
|
-
private _node: Node;
|
|
177
|
-
private _obj: EventObj;
|
|
178
|
-
private _header?: EventHeader ;
|
|
179
|
-
private _body?: Node;
|
|
180
|
-
|
|
181
|
-
constructor(
|
|
182
|
-
node: Node,
|
|
183
|
-
obj: EventObj,
|
|
184
|
-
header?: EventHeader ,
|
|
185
|
-
body?: Node
|
|
186
|
-
) {
|
|
187
|
-
this._node = node;
|
|
188
|
-
this._obj = obj;
|
|
189
|
-
if (header) {
|
|
190
|
-
this._header = header;
|
|
191
|
-
}
|
|
192
|
-
if (body) {
|
|
193
|
-
this._body = body;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
cid(): CID {
|
|
199
|
-
return this._node.cid();
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
headerCID(): CID {
|
|
203
|
-
return this._obj.header;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
async getHeader(
|
|
210
|
-
bstore: Blocks,
|
|
211
|
-
key?: SymmetricKey
|
|
212
|
-
): Promise<NetEventHeader> {
|
|
213
|
-
if (!this._header) {
|
|
214
|
-
const blockData = await bstore.get(this._obj.header);
|
|
215
|
-
const headerNode = await cbornode.wrapObject(blockData);
|
|
216
|
-
this._header = new EventHeader(headerNode);
|
|
217
|
-
}
|
|
218
|
-
try{
|
|
219
|
-
if (!this._header.isLoaded() && key) {
|
|
220
|
-
const decoded = dagCBOR.decode<Uint8Array>(this._header.node().data()) ;
|
|
221
|
-
if (!decoded) {
|
|
222
|
-
throw new Error("Failed to decode block");
|
|
223
|
-
}
|
|
224
|
-
let encryptedData = decoded;
|
|
225
|
-
try {
|
|
226
|
-
encryptedData = dagCBOR.decode<Uint8Array>(decoded);
|
|
227
|
-
} catch (e) {
|
|
228
|
-
}
|
|
229
|
-
const data: Uint8Array = await key.decrypt(encryptedData);
|
|
230
|
-
const header = dagCBOR.decode<EventHeaderObj>(data) ;
|
|
231
|
-
this._header.setObj(header);
|
|
232
|
-
}
|
|
233
|
-
}catch(err){
|
|
234
|
-
throw new Error(`Failed to decode header: ${err instanceof Error ? err.message : String(err)}`);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return this._header;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
bodyCID(): CID {
|
|
241
|
-
return this._obj.body;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
async getBody(
|
|
245
|
-
bstore: Blocks,
|
|
246
|
-
key?: SymmetricKey
|
|
247
|
-
): Promise<IPLDNode> {
|
|
248
|
-
let k: SymmetricKey | null = null;
|
|
249
|
-
|
|
250
|
-
if (key) {
|
|
251
|
-
const header = await this.getHeader( bstore, key);
|
|
252
|
-
k = await header.key();
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (!this._body) {
|
|
256
|
-
const block = await bstore.get(this._obj.body);
|
|
257
|
-
this._body = await cbornode.wrapObject(block);
|
|
258
|
-
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
if (!k) {
|
|
262
|
-
return this._body;
|
|
263
|
-
} else {
|
|
264
|
-
return decodeBlock(this._body, k);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
data(): Uint8Array {
|
|
270
|
-
return this._node.data();
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
links(): Link[] {
|
|
274
|
-
return this._node.links();
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
size(): number {
|
|
278
|
-
return this._node.size();
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* 表示事件头部的 IPLD 节点
|
|
286
|
-
*/
|
|
287
|
-
export class EventHeader implements NetEventHeader {
|
|
288
|
-
private _node: Node;
|
|
289
|
-
private _obj: EventHeaderObj | null;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
constructor(node: Node, obj: EventHeaderObj | null = null) {
|
|
293
|
-
this._node = node;
|
|
294
|
-
this._obj = obj;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
isLoaded(): boolean {
|
|
298
|
-
return this._obj !== null;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
setObj(obj: EventHeaderObj): void {
|
|
302
|
-
this._obj = obj;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
node(): Node {
|
|
306
|
-
return this._node;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
cid(): CID {
|
|
310
|
-
return this._node.cid();
|
|
311
|
-
}
|
|
312
|
-
links(): Link[] {
|
|
313
|
-
return this._node.links();
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
async key(): Promise<SymmetricKey> {
|
|
317
|
-
if (!this._obj) {
|
|
318
|
-
throw new Error("EventHeader object not loaded");
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
if (!this._obj.key) {
|
|
322
|
-
throw new Error("Key is undefined");
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
return SymmetricKey.fromBytes(this._obj.key);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
data(): Uint8Array {
|
|
329
|
-
return this._node.data();
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
size(): number {
|
|
334
|
-
return this._node.size();
|
|
335
|
-
}
|
|
336
|
-
}
|