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,107 +0,0 @@
|
|
|
1
|
-
// modules/message-module.ts
|
|
2
|
-
// 消息功能模块
|
|
3
|
-
|
|
4
|
-
import { IMessageOperations } from "../interfaces/message-interface";
|
|
5
|
-
import { DCContext } from "../../lib/interfaces/DCContext";
|
|
6
|
-
import { DCModule, CoreModuleName } from "../common/module-system";
|
|
7
|
-
import { MessageManager } from "../implements/message/manager";
|
|
8
|
-
import { createLogger } from "../util/logger";
|
|
9
|
-
import { dcnet } from "../../lib/proto/dcnet_proto";
|
|
10
|
-
|
|
11
|
-
const logger = createLogger('MessageModule');
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 消息模块
|
|
15
|
-
* 提供消息收发功能
|
|
16
|
-
*/
|
|
17
|
-
export class MessageModule implements DCModule, IMessageOperations {
|
|
18
|
-
readonly moduleName = CoreModuleName.MESSAGE;
|
|
19
|
-
private context!: DCContext;
|
|
20
|
-
private messageManager!: MessageManager;
|
|
21
|
-
private initialized: boolean = false;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 初始化消息模块
|
|
25
|
-
* @param context DC上下文
|
|
26
|
-
* @returns 是否初始化成功
|
|
27
|
-
*/
|
|
28
|
-
async initialize(context: DCContext): Promise<boolean> {
|
|
29
|
-
try {
|
|
30
|
-
this.context = context;
|
|
31
|
-
this.messageManager = new MessageManager(
|
|
32
|
-
context.dcutil,
|
|
33
|
-
context.dcChain,
|
|
34
|
-
context
|
|
35
|
-
);
|
|
36
|
-
this.initialized = true;
|
|
37
|
-
return true;
|
|
38
|
-
} catch (error) {
|
|
39
|
-
logger.error("消息模块初始化失败:", error);
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* 关闭消息模块
|
|
46
|
-
*/
|
|
47
|
-
async shutdown(): Promise<void> {
|
|
48
|
-
this.initialized = false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* 发送消息到用户消息盒子
|
|
53
|
-
* @param receiver 接收者
|
|
54
|
-
* @param msg 消息内容
|
|
55
|
-
* @returns 发送结果
|
|
56
|
-
*/
|
|
57
|
-
async sendMsgToUserBox(receiver: string, msg: string): Promise<[number | null, Error | null]> {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
this.assertInitialized();
|
|
62
|
-
const res = await this.messageManager.sendMsgToUserBox(
|
|
63
|
-
this.context.appInfo?.appId || "",
|
|
64
|
-
receiver,
|
|
65
|
-
msg
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
logger.info(`发送消息到用户 ${receiver} 成功`);
|
|
69
|
-
return res;
|
|
70
|
-
} catch (error) {
|
|
71
|
-
logger.error(`发送消息到用户 ${receiver} 失败:`, error);
|
|
72
|
-
return [null, error as Error];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 从用户消息盒子获取消息
|
|
78
|
-
* @param limit 限制数量
|
|
79
|
-
* @returns 消息列表
|
|
80
|
-
*/
|
|
81
|
-
async getMsgFromUserBox(limit?: number): Promise<[dcnet.pb.IUserMsg[] | null, Error | null]> {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
this.assertInitialized();
|
|
86
|
-
const res = await this.messageManager.getMsgFromUserBox(
|
|
87
|
-
this.context.appInfo?.appId || "",
|
|
88
|
-
limit
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
logger.info("获取用户消息成功");
|
|
92
|
-
return res;
|
|
93
|
-
} catch (error) {
|
|
94
|
-
logger.error("获取用户消息失败:", error);
|
|
95
|
-
return [null, error as Error];
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* 断言模块已初始化
|
|
101
|
-
*/
|
|
102
|
-
private assertInitialized(): void {
|
|
103
|
-
if (!this.initialized) {
|
|
104
|
-
throw new Error("消息模块未初始化");
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { IUtilOperations } from '../interfaces/util-interface';
|
|
3
|
-
import { SymmetricKey,Key as ThreadKey } from '../implements/threaddb/common/key';
|
|
4
|
-
import { CoreModuleName } from '../common/module-system';
|
|
5
|
-
import { DCContext, IFileOperations } from '../interfaces';
|
|
6
|
-
import { createLogger } from '../util/logger';
|
|
7
|
-
import { UtilManager } from '../../lib/implements/util/manager';
|
|
8
|
-
import { IAppInfo } from '../../lib/common/types/types';
|
|
9
|
-
import { Errors } from '../../lib/common/error';
|
|
10
|
-
import { handleIpfsRequest } from '../common/service-worker';
|
|
11
|
-
const logger = createLogger("UtilModule");
|
|
12
|
-
export class UtilModule implements IUtilOperations {
|
|
13
|
-
readonly moduleName = CoreModuleName.UTIL;
|
|
14
|
-
private initialized: boolean = false;
|
|
15
|
-
private context!: DCContext;
|
|
16
|
-
private utilManager!: UtilManager;
|
|
17
|
-
private dcChain!: DCContext['dcChain'];
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* 初始化工具模块
|
|
22
|
-
* @param context DC上下文
|
|
23
|
-
* @returns 是否初始化成功
|
|
24
|
-
*/
|
|
25
|
-
async initialize(context: DCContext): Promise<boolean> {
|
|
26
|
-
try {
|
|
27
|
-
this.context = context;
|
|
28
|
-
this.utilManager = new UtilManager(
|
|
29
|
-
context
|
|
30
|
-
);
|
|
31
|
-
this.initialized = true;
|
|
32
|
-
return true;
|
|
33
|
-
} catch (error) {
|
|
34
|
-
logger.error("工具模块初始化失败:", error);
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* 创建对称密钥
|
|
41
|
-
* @returns 对称密钥
|
|
42
|
-
*/
|
|
43
|
-
createSymmetricKey(): SymmetricKey {
|
|
44
|
-
return SymmetricKey.new();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 创建threaddb密钥
|
|
49
|
-
* @returns 线程密钥
|
|
50
|
-
*/
|
|
51
|
-
createThreadKey(): ThreadKey {
|
|
52
|
-
// 生成一个新的密钥,包含两个对称密钥
|
|
53
|
-
return new ThreadKey(SymmetricKey.new(),SymmetricKey.new());
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* 设置应用信息,发布应用时调用
|
|
59
|
-
* @param appId string 应用ID
|
|
60
|
-
* @param domain
|
|
61
|
-
* @param owner
|
|
62
|
-
* @param rewarder
|
|
63
|
-
*/
|
|
64
|
-
async setAppInfo(appId: string,fid:string="",domain:string,owner?: string,rewarder?: string): Promise<[boolean|null, Error | null]> {
|
|
65
|
-
if (!this.initialized) {
|
|
66
|
-
return [null, new Error("UtilModule not initialized")];
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
if (!appId ) {
|
|
71
|
-
throw new Error("appId are required");
|
|
72
|
-
}
|
|
73
|
-
if(!this.context.publicKey || !this.context.ethAddress){
|
|
74
|
-
throw Errors.NO_USER_INFO;
|
|
75
|
-
}
|
|
76
|
-
if (!owner || owner.length < 10) {
|
|
77
|
-
owner = this.context.publicKey.string();
|
|
78
|
-
}
|
|
79
|
-
if (!rewarder || rewarder.length < 10) {
|
|
80
|
-
rewarder = this.context.ethAddress;
|
|
81
|
-
}
|
|
82
|
-
const [appInfo, error] = await this.getAppInfo(appId);
|
|
83
|
-
if (appInfo && !error) {
|
|
84
|
-
if (appInfo.owner == owner && appInfo.rewarder == rewarder && appInfo.domain == domain && appInfo.fid == fid) {//已经与之前一致
|
|
85
|
-
return [true, null];
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
await this.utilManager.setAppInfo(
|
|
89
|
-
appId,
|
|
90
|
-
domain,
|
|
91
|
-
owner,
|
|
92
|
-
rewarder,
|
|
93
|
-
fid
|
|
94
|
-
);
|
|
95
|
-
// 假设保存成功
|
|
96
|
-
return [true, null];
|
|
97
|
-
} catch (error) {
|
|
98
|
-
return [null, error as Error];
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* 获取应用信息
|
|
104
|
-
* @param appId 应用ID
|
|
105
|
-
* @returns 应用信息
|
|
106
|
-
* */
|
|
107
|
-
async getAppInfo(appId: string): Promise<[IAppInfo|null, Error | null]> {
|
|
108
|
-
if (!this.initialized) {
|
|
109
|
-
return [null, new Error("UtilModule not initialized")];
|
|
110
|
-
}
|
|
111
|
-
try {
|
|
112
|
-
const appInfo = await this.utilManager.getAppInfo(appId);
|
|
113
|
-
return [appInfo, null];
|
|
114
|
-
} catch (error) {
|
|
115
|
-
return [null, error as Error];
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* 关闭消息模块
|
|
121
|
-
*/
|
|
122
|
-
async shutdown(): Promise<void> {
|
|
123
|
-
this.initialized = false;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* 处理IPFS请求
|
|
129
|
-
* @param data 请求数据
|
|
130
|
-
* @param port 消息端口
|
|
131
|
-
* @param fileOps 文件操作对象
|
|
132
|
-
*/
|
|
133
|
-
async handleIpfsRequest(
|
|
134
|
-
data: { id: string, pathname: string, range?: string },
|
|
135
|
-
port: MessagePort,
|
|
136
|
-
fileOps?: IFileOperations
|
|
137
|
-
): Promise<void>{
|
|
138
|
-
if (!this.initialized) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
try {
|
|
142
|
-
await handleIpfsRequest(data, port, fileOps);
|
|
143
|
-
} catch (error) {
|
|
144
|
-
logger.error("页面处理IPFS请求失败:", error);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
if (!(globalThis as any).process) (globalThis as any).process = { env: {} };
|
package/lib/proto/datasource.ts
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
// 数据源类,主要用于客户端数据流式发送,每次发送的数据是Uint8Array类型,调用setData即可,调用close关闭数据源
|
|
3
|
-
export class DataSource {
|
|
4
|
-
private waitingPromises: Array<{
|
|
5
|
-
resolve: (data: Uint8Array) => void;
|
|
6
|
-
reject: (error: Error) => void;
|
|
7
|
-
}> = [];
|
|
8
|
-
private closed = false;
|
|
9
|
-
private abortController = new AbortController();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* 设置要发送的数据,可以根据需要多次调用
|
|
13
|
-
* @throws {Error} 如果数据源已关闭
|
|
14
|
-
*/
|
|
15
|
-
setData(data: Uint8Array) {
|
|
16
|
-
if (this.closed) {
|
|
17
|
-
throw new Error('DataSource is closed');
|
|
18
|
-
}
|
|
19
|
-
const promises = this.waitingPromises;
|
|
20
|
-
this.waitingPromises = [];
|
|
21
|
-
// 通知所有等待的promise
|
|
22
|
-
promises.forEach(({ resolve }) => resolve(data));
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 关闭数据源
|
|
26
|
-
*/
|
|
27
|
-
close() {
|
|
28
|
-
if (this.closed) return;
|
|
29
|
-
this.closed = true;
|
|
30
|
-
this.abortController.abort();
|
|
31
|
-
// 拒绝所有等待的promise
|
|
32
|
-
const error = new Error('DataSource has been closed');
|
|
33
|
-
this.waitingPromises.forEach(({ reject }) => reject(error));
|
|
34
|
-
this.waitingPromises = [];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* 等待数据
|
|
39
|
-
* @throws {Error} 如果数据源已关闭
|
|
40
|
-
*/
|
|
41
|
-
async waitForData(): Promise<Uint8Array> {
|
|
42
|
-
if (this.closed) {
|
|
43
|
-
throw new Error('DataSource is closed');
|
|
44
|
-
}
|
|
45
|
-
return new Promise<Uint8Array>((resolve, reject) => {
|
|
46
|
-
// 如果在创建Promise时数据源已关闭,立即拒绝
|
|
47
|
-
if (this.closed) {
|
|
48
|
-
reject(new Error('DataSource is closed'));
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
this.waitingPromises.push({ resolve, reject });
|
|
52
|
-
// 设置中止信号处理
|
|
53
|
-
this.abortController.signal.addEventListener('abort', () => {
|
|
54
|
-
reject(new Error('DataSource has been closed'));
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* 检查数据源是否已关闭
|
|
61
|
-
*/
|
|
62
|
-
isClosed(): boolean {
|
|
63
|
-
return this.closed;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* 获取数据源的异步迭代器
|
|
68
|
-
* @throws {Error} 如果数据源已关闭
|
|
69
|
-
*/
|
|
70
|
-
getDataSource(): AsyncIterable<Uint8Array> {
|
|
71
|
-
if (this.closed) {
|
|
72
|
-
throw new Error('DataSource is closed');
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
[Symbol.asyncIterator]: () => {
|
|
77
|
-
return {
|
|
78
|
-
next: async (): Promise<IteratorResult<Uint8Array>> => {
|
|
79
|
-
try {
|
|
80
|
-
if (this.closed) {
|
|
81
|
-
return { done: true, value: undefined };
|
|
82
|
-
}
|
|
83
|
-
const data = await this.waitForData();
|
|
84
|
-
return { done: false, value: data };
|
|
85
|
-
} catch (error) {
|
|
86
|
-
return { done: true, value: undefined };
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|