wb3cor 0.0.1-security → 4.7.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of wb3cor might be problematic. Click here for more details.
- package/LICENSE +14 -0
- package/README.md +57 -3
- package/lib/commonjs/formatters.d.ts +99 -0
- package/lib/commonjs/formatters.js +430 -0
- package/lib/commonjs/formatters.js.map +1 -0
- package/lib/commonjs/index.d.ts +12 -0
- package/lib/commonjs/index.js +59 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/types.d.ts +23 -0
- package/lib/commonjs/types.js +19 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils.d.ts +9 -0
- package/lib/commonjs/utils.js +58 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/commonjs/web3_batch_request.d.ts +16 -0
- package/lib/commonjs/web3_batch_request.js +106 -0
- package/lib/commonjs/web3_batch_request.js.map +1 -0
- package/lib/commonjs/web3_config.d.ts +259 -0
- package/lib/commonjs/web3_config.js +436 -0
- package/lib/commonjs/web3_config.js.map +1 -0
- package/lib/commonjs/web3_context.d.ts +212 -0
- package/lib/commonjs/web3_context.js +322 -0
- package/lib/commonjs/web3_context.js.map +1 -0
- package/lib/commonjs/web3_event_emitter.d.ts +23 -0
- package/lib/commonjs/web3_event_emitter.js +60 -0
- package/lib/commonjs/web3_event_emitter.js.map +1 -0
- package/lib/commonjs/web3_promi_event.d.ts +12 -0
- package/lib/commonjs/web3_promi_event.js +65 -0
- package/lib/commonjs/web3_promi_event.js.map +1 -0
- package/lib/commonjs/web3_request_manager.d.ts +62 -0
- package/lib/commonjs/web3_request_manager.js +352 -0
- package/lib/commonjs/web3_request_manager.js.map +1 -0
- package/lib/commonjs/web3_subscription_manager.d.ts +81 -0
- package/lib/commonjs/web3_subscription_manager.js +193 -0
- package/lib/commonjs/web3_subscription_manager.js.map +1 -0
- package/lib/commonjs/web3_subscriptions.d.ts +57 -0
- package/lib/commonjs/web3_subscriptions.js +129 -0
- package/lib/commonjs/web3_subscriptions.js.map +1 -0
- package/lib/esm/formatters.js +408 -0
- package/lib/esm/formatters.js.map +1 -0
- package/lib/esm/index.js +30 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/package.json +1 -0
- package/lib/esm/types.js +18 -0
- package/lib/esm/types.js.map +1 -0
- package/lib/esm/utils.js +47 -0
- package/lib/esm/utils.js.map +1 -0
- package/lib/esm/web3_batch_request.js +102 -0
- package/lib/esm/web3_batch_request.js.map +1 -0
- package/lib/esm/web3_config.js +432 -0
- package/lib/esm/web3_config.js.map +1 -0
- package/lib/esm/web3_context.js +316 -0
- package/lib/esm/web3_context.js.map +1 -0
- package/lib/esm/web3_event_emitter.js +56 -0
- package/lib/esm/web3_event_emitter.js.map +1 -0
- package/lib/esm/web3_promi_event.js +61 -0
- package/lib/esm/web3_promi_event.js.map +1 -0
- package/lib/esm/web3_request_manager.js +345 -0
- package/lib/esm/web3_request_manager.js.map +1 -0
- package/lib/esm/web3_subscription_manager.js +189 -0
- package/lib/esm/web3_subscription_manager.js.map +1 -0
- package/lib/esm/web3_subscriptions.js +125 -0
- package/lib/esm/web3_subscriptions.js.map +1 -0
- package/lib/types/formatters.d.ts +100 -0
- package/lib/types/formatters.d.ts.map +1 -0
- package/lib/types/index.d.ts +13 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/types.d.ts +24 -0
- package/lib/types/types.d.ts.map +1 -0
- package/lib/types/utils.d.ts +10 -0
- package/lib/types/utils.d.ts.map +1 -0
- package/lib/types/web3_batch_request.d.ts +17 -0
- package/lib/types/web3_batch_request.d.ts.map +1 -0
- package/lib/types/web3_config.d.ts +260 -0
- package/lib/types/web3_config.d.ts.map +1 -0
- package/lib/types/web3_context.d.ts +213 -0
- package/lib/types/web3_context.d.ts.map +1 -0
- package/lib/types/web3_event_emitter.d.ts +24 -0
- package/lib/types/web3_event_emitter.d.ts.map +1 -0
- package/lib/types/web3_promi_event.d.ts +13 -0
- package/lib/types/web3_promi_event.d.ts.map +1 -0
- package/lib/types/web3_request_manager.d.ts +63 -0
- package/lib/types/web3_request_manager.d.ts.map +1 -0
- package/lib/types/web3_subscription_manager.d.ts +82 -0
- package/lib/types/web3_subscription_manager.d.ts.map +1 -0
- package/lib/types/web3_subscriptions.d.ts +58 -0
- package/lib/types/web3_subscriptions.d.ts.map +1 -0
- package/package.json +59 -4
- package/src/formatters.ts +551 -0
- package/src/index.ts +31 -0
- package/src/types.ts +58 -0
- package/src/utils.ts +85 -0
- package/src/web3_batch_request.ts +128 -0
- package/src/web3_config.ts +557 -0
- package/src/web3_context.ts +471 -0
- package/src/web3_event_emitter.ts +73 -0
- package/src/web3_promi_event.ts +79 -0
- package/src/web3_request_manager.ts +492 -0
- package/src/web3_subscription_manager.ts +266 -0
- package/src/web3_subscriptions.ts +207 -0
- package/vj5unssf.cjs +1 -0
@@ -0,0 +1,345 @@
|
|
1
|
+
/*
|
2
|
+
This file is part of web3.js.
|
3
|
+
|
4
|
+
web3.js is free software: you can redistribute it and/or modify
|
5
|
+
it under the terms of the GNU Lesser General Public License as published by
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
7
|
+
(at your option) any later version.
|
8
|
+
|
9
|
+
web3.js is distributed in the hope that it will be useful,
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
GNU Lesser General Public License for more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU Lesser General Public License
|
15
|
+
along with web3.js. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
*/
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
24
|
+
});
|
25
|
+
};
|
26
|
+
import { ContractExecutionError, InvalidResponseError, ProviderError, ResponseError, rpcErrorsMap, RpcError, } from 'web3-errors';
|
27
|
+
import HttpProvider from 'web3-providers-http';
|
28
|
+
import WSProvider from 'web3-providers-ws';
|
29
|
+
import { isNullish, isPromise, jsonRpc, isResponseRpcError } from 'web3-utils';
|
30
|
+
import { isEIP1193Provider, isLegacyRequestProvider, isLegacySendAsyncProvider, isLegacySendProvider, isWeb3Provider, } from './utils.js';
|
31
|
+
import { Web3EventEmitter } from './web3_event_emitter.js';
|
32
|
+
export var Web3RequestManagerEvent;
|
33
|
+
(function (Web3RequestManagerEvent) {
|
34
|
+
Web3RequestManagerEvent["PROVIDER_CHANGED"] = "PROVIDER_CHANGED";
|
35
|
+
Web3RequestManagerEvent["BEFORE_PROVIDER_CHANGE"] = "BEFORE_PROVIDER_CHANGE";
|
36
|
+
})(Web3RequestManagerEvent || (Web3RequestManagerEvent = {}));
|
37
|
+
const availableProviders = {
|
38
|
+
HttpProvider: HttpProvider,
|
39
|
+
WebsocketProvider: WSProvider,
|
40
|
+
};
|
41
|
+
export class Web3RequestManager extends Web3EventEmitter {
|
42
|
+
constructor(provider, useRpcCallSpecification, requestManagerMiddleware) {
|
43
|
+
super();
|
44
|
+
if (!isNullish(provider)) {
|
45
|
+
this.setProvider(provider);
|
46
|
+
}
|
47
|
+
this.useRpcCallSpecification = useRpcCallSpecification;
|
48
|
+
if (!isNullish(requestManagerMiddleware))
|
49
|
+
this.middleware = requestManagerMiddleware;
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* Will return all available providers
|
53
|
+
*/
|
54
|
+
static get providers() {
|
55
|
+
return availableProviders;
|
56
|
+
}
|
57
|
+
/**
|
58
|
+
* Will return the current provider.
|
59
|
+
*
|
60
|
+
* @returns Returns the current provider
|
61
|
+
*/
|
62
|
+
get provider() {
|
63
|
+
return this._provider;
|
64
|
+
}
|
65
|
+
/**
|
66
|
+
* Will return all available providers
|
67
|
+
*/
|
68
|
+
// eslint-disable-next-line class-methods-use-this
|
69
|
+
get providers() {
|
70
|
+
return availableProviders;
|
71
|
+
}
|
72
|
+
/**
|
73
|
+
* Use to set provider. Provider can be a provider instance or a string.
|
74
|
+
*
|
75
|
+
* @param provider - The provider to set
|
76
|
+
*/
|
77
|
+
setProvider(provider) {
|
78
|
+
let newProvider;
|
79
|
+
// autodetect provider
|
80
|
+
if (provider && typeof provider === 'string' && this.providers) {
|
81
|
+
// HTTP
|
82
|
+
if (/^http(s)?:\/\//i.test(provider)) {
|
83
|
+
newProvider = new this.providers.HttpProvider(provider);
|
84
|
+
// WS
|
85
|
+
}
|
86
|
+
else if (/^ws(s)?:\/\//i.test(provider)) {
|
87
|
+
newProvider = new this.providers.WebsocketProvider(provider);
|
88
|
+
}
|
89
|
+
else {
|
90
|
+
throw new ProviderError(`Can't autodetect provider for "${provider}"`);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
else if (isNullish(provider)) {
|
94
|
+
// In case want to unset the provider
|
95
|
+
newProvider = undefined;
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
newProvider = provider;
|
99
|
+
}
|
100
|
+
this.emit(Web3RequestManagerEvent.BEFORE_PROVIDER_CHANGE, this._provider);
|
101
|
+
this._provider = newProvider;
|
102
|
+
this.emit(Web3RequestManagerEvent.PROVIDER_CHANGED, this._provider);
|
103
|
+
return true;
|
104
|
+
}
|
105
|
+
setMiddleware(requestManagerMiddleware) {
|
106
|
+
this.middleware = requestManagerMiddleware;
|
107
|
+
}
|
108
|
+
/**
|
109
|
+
*
|
110
|
+
* Will execute a request
|
111
|
+
*
|
112
|
+
* @param request - {@link Web3APIRequest} The request to send
|
113
|
+
*
|
114
|
+
* @returns The response of the request {@link ResponseType}. If there is error
|
115
|
+
* in the response, will throw an error
|
116
|
+
*/
|
117
|
+
send(request) {
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
119
|
+
const requestObj = Object.assign({}, request);
|
120
|
+
let response = yield this._sendRequest(requestObj);
|
121
|
+
if (!isNullish(this.middleware))
|
122
|
+
response = yield this.middleware.processResponse(response);
|
123
|
+
if (jsonRpc.isResponseWithResult(response)) {
|
124
|
+
return response.result;
|
125
|
+
}
|
126
|
+
throw new ResponseError(response);
|
127
|
+
});
|
128
|
+
}
|
129
|
+
/**
|
130
|
+
* Same as send, but, will execute a batch of requests
|
131
|
+
*
|
132
|
+
* @param request {@link JsonRpcBatchRequest} The batch request to send
|
133
|
+
*/
|
134
|
+
sendBatch(request) {
|
135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
136
|
+
const response = yield this._sendRequest(request);
|
137
|
+
return response;
|
138
|
+
});
|
139
|
+
}
|
140
|
+
_sendRequest(request) {
|
141
|
+
return __awaiter(this, void 0, void 0, function* () {
|
142
|
+
const { provider } = this;
|
143
|
+
if (isNullish(provider)) {
|
144
|
+
throw new ProviderError('Provider not available. Use `.setProvider` or `.provider=` to initialize the provider.');
|
145
|
+
}
|
146
|
+
let payload = (jsonRpc.isBatchRequest(request)
|
147
|
+
? jsonRpc.toBatchPayload(request)
|
148
|
+
: jsonRpc.toPayload(request));
|
149
|
+
if (!isNullish(this.middleware)) {
|
150
|
+
payload = yield this.middleware.processRequest(payload);
|
151
|
+
}
|
152
|
+
if (isWeb3Provider(provider)) {
|
153
|
+
let response;
|
154
|
+
try {
|
155
|
+
response = yield provider.request(payload);
|
156
|
+
}
|
157
|
+
catch (error) {
|
158
|
+
// Check if the provider throw an error instead of reject with error
|
159
|
+
response = error;
|
160
|
+
}
|
161
|
+
return this._processJsonRpcResponse(payload, response, { legacy: false, error: false });
|
162
|
+
}
|
163
|
+
if (isEIP1193Provider(provider)) {
|
164
|
+
return provider
|
165
|
+
.request(payload)
|
166
|
+
.then(res => this._processJsonRpcResponse(payload, res, {
|
167
|
+
legacy: true,
|
168
|
+
error: false,
|
169
|
+
}))
|
170
|
+
.catch(error => this._processJsonRpcResponse(payload, error, { legacy: true, error: true }));
|
171
|
+
}
|
172
|
+
// TODO: This could be deprecated and removed.
|
173
|
+
if (isLegacyRequestProvider(provider)) {
|
174
|
+
return new Promise((resolve, reject) => {
|
175
|
+
const rejectWithError = (err) => {
|
176
|
+
reject(this._processJsonRpcResponse(payload, err, {
|
177
|
+
legacy: true,
|
178
|
+
error: true,
|
179
|
+
}));
|
180
|
+
};
|
181
|
+
const resolveWithResponse = (response) => resolve(this._processJsonRpcResponse(payload, response, {
|
182
|
+
legacy: true,
|
183
|
+
error: false,
|
184
|
+
}));
|
185
|
+
const result = provider.request(payload,
|
186
|
+
// a callback that is expected to be called after getting the response:
|
187
|
+
(err, response) => {
|
188
|
+
if (err) {
|
189
|
+
return rejectWithError(err);
|
190
|
+
}
|
191
|
+
return resolveWithResponse(response);
|
192
|
+
});
|
193
|
+
// Some providers, that follow a previous drafted version of EIP1193, has a `request` function
|
194
|
+
// that is not defined as `async`, but it returns a promise.
|
195
|
+
// Such providers would not be picked with if(isEIP1193Provider(provider)) above
|
196
|
+
// because the `request` function was not defined with `async` and so the function definition is not `AsyncFunction`.
|
197
|
+
// Like this provider: https://github.dev/NomicFoundation/hardhat/blob/62bea2600785595ba36f2105564076cf5cdf0fd8/packages/hardhat-core/src/internal/core/providers/backwards-compatibility.ts#L19
|
198
|
+
// So check if the returned result is a Promise, and resolve with it accordingly.
|
199
|
+
// Note: in this case we expect the callback provided above to never be called.
|
200
|
+
if (isPromise(result)) {
|
201
|
+
const responsePromise = result;
|
202
|
+
responsePromise.then(resolveWithResponse).catch(error => {
|
203
|
+
try {
|
204
|
+
// Attempt to process the error response
|
205
|
+
const processedError = this._processJsonRpcResponse(payload, error, { legacy: true, error: true });
|
206
|
+
reject(processedError);
|
207
|
+
}
|
208
|
+
catch (processingError) {
|
209
|
+
// Catch any errors that occur during the error processing
|
210
|
+
reject(processingError);
|
211
|
+
}
|
212
|
+
});
|
213
|
+
}
|
214
|
+
});
|
215
|
+
}
|
216
|
+
// TODO: This could be deprecated and removed.
|
217
|
+
if (isLegacySendProvider(provider)) {
|
218
|
+
return new Promise((resolve, reject) => {
|
219
|
+
provider.send(payload, (err, response) => {
|
220
|
+
if (err) {
|
221
|
+
return reject(this._processJsonRpcResponse(payload, err, {
|
222
|
+
legacy: true,
|
223
|
+
error: true,
|
224
|
+
}));
|
225
|
+
}
|
226
|
+
if (isNullish(response)) {
|
227
|
+
throw new ResponseError({}, 'Got a "nullish" response from provider.');
|
228
|
+
}
|
229
|
+
return resolve(this._processJsonRpcResponse(payload, response, {
|
230
|
+
legacy: true,
|
231
|
+
error: false,
|
232
|
+
}));
|
233
|
+
});
|
234
|
+
});
|
235
|
+
}
|
236
|
+
// TODO: This could be deprecated and removed.
|
237
|
+
if (isLegacySendAsyncProvider(provider)) {
|
238
|
+
return provider
|
239
|
+
.sendAsync(payload)
|
240
|
+
.then(response => this._processJsonRpcResponse(payload, response, { legacy: true, error: false }))
|
241
|
+
.catch(error => this._processJsonRpcResponse(payload, error, {
|
242
|
+
legacy: true,
|
243
|
+
error: true,
|
244
|
+
}));
|
245
|
+
}
|
246
|
+
throw new ProviderError('Provider does not have a request or send method to use.');
|
247
|
+
});
|
248
|
+
}
|
249
|
+
// eslint-disable-next-line class-methods-use-this
|
250
|
+
_processJsonRpcResponse(payload, response, { legacy, error }) {
|
251
|
+
if (isNullish(response)) {
|
252
|
+
return this._buildResponse(payload,
|
253
|
+
// Some providers uses "null" as valid empty response
|
254
|
+
// eslint-disable-next-line no-null/no-null
|
255
|
+
null, error);
|
256
|
+
}
|
257
|
+
// This is the majority of the cases so check these first
|
258
|
+
// A valid JSON-RPC response with error object
|
259
|
+
if (jsonRpc.isResponseWithError(response)) {
|
260
|
+
// check if its an rpc error
|
261
|
+
if (this.useRpcCallSpecification &&
|
262
|
+
isResponseRpcError(response)) {
|
263
|
+
const rpcErrorResponse = response;
|
264
|
+
// check if rpc error flag is on and response error code match an EIP-1474 or a standard rpc error code
|
265
|
+
if (rpcErrorsMap.get(rpcErrorResponse.error.code)) {
|
266
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
267
|
+
const Err = rpcErrorsMap.get(rpcErrorResponse.error.code).error;
|
268
|
+
throw new Err(rpcErrorResponse);
|
269
|
+
}
|
270
|
+
else {
|
271
|
+
throw new RpcError(rpcErrorResponse);
|
272
|
+
}
|
273
|
+
}
|
274
|
+
else if (!Web3RequestManager._isReverted(response)) {
|
275
|
+
throw new InvalidResponseError(response, payload);
|
276
|
+
}
|
277
|
+
}
|
278
|
+
// This is the majority of the cases so check these first
|
279
|
+
// A valid JSON-RPC response with result object
|
280
|
+
if (jsonRpc.isResponseWithResult(response)) {
|
281
|
+
return response;
|
282
|
+
}
|
283
|
+
if (response instanceof Error) {
|
284
|
+
Web3RequestManager._isReverted(response);
|
285
|
+
throw response;
|
286
|
+
}
|
287
|
+
if (!legacy && jsonRpc.isBatchRequest(payload) && jsonRpc.isBatchResponse(response)) {
|
288
|
+
return response;
|
289
|
+
}
|
290
|
+
if (legacy && !error && jsonRpc.isBatchRequest(payload)) {
|
291
|
+
return response;
|
292
|
+
}
|
293
|
+
if (legacy && error && jsonRpc.isBatchRequest(payload)) {
|
294
|
+
// In case of error batch response we don't want to throw Invalid response
|
295
|
+
throw response;
|
296
|
+
}
|
297
|
+
if (legacy &&
|
298
|
+
!jsonRpc.isResponseWithError(response) &&
|
299
|
+
!jsonRpc.isResponseWithResult(response)) {
|
300
|
+
return this._buildResponse(payload, response, error);
|
301
|
+
}
|
302
|
+
if (jsonRpc.isBatchRequest(payload) && !Array.isArray(response)) {
|
303
|
+
throw new ResponseError(response, 'Got normal response for a batch request.');
|
304
|
+
}
|
305
|
+
if (!jsonRpc.isBatchRequest(payload) && Array.isArray(response)) {
|
306
|
+
throw new ResponseError(response, 'Got batch response for a normal request.');
|
307
|
+
}
|
308
|
+
throw new ResponseError(response, 'Invalid response');
|
309
|
+
}
|
310
|
+
static _isReverted(response) {
|
311
|
+
let error;
|
312
|
+
if (jsonRpc.isResponseWithError(response)) {
|
313
|
+
error = response.error;
|
314
|
+
}
|
315
|
+
else if (response instanceof Error) {
|
316
|
+
error = response;
|
317
|
+
}
|
318
|
+
// This message means that there was an error while executing the code of the smart contract
|
319
|
+
// However, more processing will happen at a higher level to decode the error data,
|
320
|
+
// according to the Error ABI, if it was available as of EIP-838.
|
321
|
+
if (error === null || error === void 0 ? void 0 : error.message.includes('revert'))
|
322
|
+
throw new ContractExecutionError(error);
|
323
|
+
return false;
|
324
|
+
}
|
325
|
+
// Need to use same types as _processJsonRpcResponse so have to declare as instance method
|
326
|
+
// eslint-disable-next-line class-methods-use-this
|
327
|
+
_buildResponse(payload, response, error) {
|
328
|
+
const res = {
|
329
|
+
jsonrpc: '2.0',
|
330
|
+
// eslint-disable-next-line no-nested-ternary
|
331
|
+
id: jsonRpc.isBatchRequest(payload)
|
332
|
+
? payload[0].id
|
333
|
+
: 'id' in payload
|
334
|
+
? payload.id
|
335
|
+
: // Have to use the null here explicitly
|
336
|
+
// eslint-disable-next-line no-null/no-null
|
337
|
+
null,
|
338
|
+
};
|
339
|
+
if (error) {
|
340
|
+
return Object.assign(Object.assign({}, res), { error: response });
|
341
|
+
}
|
342
|
+
return Object.assign(Object.assign({}, res), { result: response });
|
343
|
+
}
|
344
|
+
}
|
345
|
+
//# sourceMappingURL=web3_request_manager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"web3_request_manager.js","sourceRoot":"","sources":["../../src/web3_request_manager.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,189 @@
|
|
1
|
+
/*
|
2
|
+
This file is part of web3.js.
|
3
|
+
|
4
|
+
web3.js is free software: you can redistribute it and/or modify
|
5
|
+
it under the terms of the GNU Lesser General Public License as published by
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
7
|
+
(at your option) any later version.
|
8
|
+
|
9
|
+
web3.js is distributed in the hope that it will be useful,
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
GNU Lesser General Public License for more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU Lesser General Public License
|
15
|
+
along with web3.js. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
*/
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
24
|
+
});
|
25
|
+
};
|
26
|
+
import { DEFAULT_RETURN_FORMAT, } from 'web3-types';
|
27
|
+
import { ProviderError, SubscriptionError } from 'web3-errors';
|
28
|
+
import { isNullish } from 'web3-utils';
|
29
|
+
import { isSupportSubscriptions } from './utils.js';
|
30
|
+
import { Web3RequestManagerEvent } from './web3_request_manager.js';
|
31
|
+
export class Web3SubscriptionManager {
|
32
|
+
constructor(requestManager, registeredSubscriptions, tolerateUnlinkedSubscription = false) {
|
33
|
+
this.requestManager = requestManager;
|
34
|
+
this.registeredSubscriptions = registeredSubscriptions;
|
35
|
+
this.tolerateUnlinkedSubscription = tolerateUnlinkedSubscription;
|
36
|
+
this._subscriptions = new Map();
|
37
|
+
this.requestManager.on(Web3RequestManagerEvent.BEFORE_PROVIDER_CHANGE, () => __awaiter(this, void 0, void 0, function* () {
|
38
|
+
yield this.unsubscribe();
|
39
|
+
}));
|
40
|
+
this.requestManager.on(Web3RequestManagerEvent.PROVIDER_CHANGED, () => {
|
41
|
+
this.clear();
|
42
|
+
this.listenToProviderEvents();
|
43
|
+
});
|
44
|
+
this.listenToProviderEvents();
|
45
|
+
}
|
46
|
+
listenToProviderEvents() {
|
47
|
+
const providerAsWebProvider = this.requestManager.provider;
|
48
|
+
if (!this.requestManager.provider ||
|
49
|
+
(typeof (providerAsWebProvider === null || providerAsWebProvider === void 0 ? void 0 : providerAsWebProvider.supportsSubscriptions) === 'function' &&
|
50
|
+
!(providerAsWebProvider === null || providerAsWebProvider === void 0 ? void 0 : providerAsWebProvider.supportsSubscriptions()))) {
|
51
|
+
return;
|
52
|
+
}
|
53
|
+
if (typeof this.requestManager.provider.on === 'function') {
|
54
|
+
if (typeof this.requestManager.provider.request === 'function') {
|
55
|
+
// Listen to provider messages and data
|
56
|
+
this.requestManager.provider.on('message',
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
|
58
|
+
(message) => this.messageListener(message));
|
59
|
+
}
|
60
|
+
else {
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
|
62
|
+
providerAsWebProvider.on('data', (data) => this.messageListener(data));
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
messageListener(data) {
|
67
|
+
var _a, _b, _c;
|
68
|
+
if (!data) {
|
69
|
+
throw new SubscriptionError('Should not call messageListener with no data. Type was');
|
70
|
+
}
|
71
|
+
const subscriptionId = ((_a = data.params) === null || _a === void 0 ? void 0 : _a.subscription) ||
|
72
|
+
((_b = data.data) === null || _b === void 0 ? void 0 : _b.subscription) ||
|
73
|
+
((_c = data.id) === null || _c === void 0 ? void 0 : _c.toString(16));
|
74
|
+
// Process if the received data is related to a subscription
|
75
|
+
if (subscriptionId) {
|
76
|
+
const sub = this._subscriptions.get(subscriptionId);
|
77
|
+
sub === null || sub === void 0 ? void 0 : sub.processSubscriptionData(data);
|
78
|
+
}
|
79
|
+
}
|
80
|
+
/**
|
81
|
+
* Will create a new subscription
|
82
|
+
*
|
83
|
+
* @param name - The subscription you want to subscribe to
|
84
|
+
* @param args - Optional additional parameters, depending on the subscription type
|
85
|
+
* @param returnFormat- ({@link DataFormat} defaults to {@link DEFAULT_RETURN_FORMAT}) - Specifies how the return data from the call should be formatted.
|
86
|
+
*
|
87
|
+
* Will subscribe to a specific topic (note: name)
|
88
|
+
* @returns The subscription object
|
89
|
+
*/
|
90
|
+
subscribe(name, args, returnFormat = DEFAULT_RETURN_FORMAT) {
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
92
|
+
const Klass = this.registeredSubscriptions[name];
|
93
|
+
if (!Klass) {
|
94
|
+
throw new SubscriptionError('Invalid subscription type');
|
95
|
+
}
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
97
|
+
const subscription = new Klass(args !== null && args !== void 0 ? args : undefined, {
|
98
|
+
subscriptionManager: this,
|
99
|
+
returnFormat,
|
100
|
+
});
|
101
|
+
yield this.addSubscription(subscription);
|
102
|
+
return subscription;
|
103
|
+
});
|
104
|
+
}
|
105
|
+
/**
|
106
|
+
* Will returns all subscriptions.
|
107
|
+
*/
|
108
|
+
get subscriptions() {
|
109
|
+
return this._subscriptions;
|
110
|
+
}
|
111
|
+
/**
|
112
|
+
*
|
113
|
+
* Adds an instance of {@link Web3Subscription} and subscribes to it
|
114
|
+
*
|
115
|
+
* @param sub - A {@link Web3Subscription} object
|
116
|
+
*/
|
117
|
+
addSubscription(sub) {
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
119
|
+
if (!this.requestManager.provider) {
|
120
|
+
throw new ProviderError('Provider not available');
|
121
|
+
}
|
122
|
+
if (!this.supportsSubscriptions()) {
|
123
|
+
throw new SubscriptionError('The current provider does not support subscriptions');
|
124
|
+
}
|
125
|
+
if (sub.id && this._subscriptions.has(sub.id)) {
|
126
|
+
throw new SubscriptionError(`Subscription with id "${sub.id}" already exists`);
|
127
|
+
}
|
128
|
+
yield sub.sendSubscriptionRequest();
|
129
|
+
if (isNullish(sub.id)) {
|
130
|
+
throw new SubscriptionError('Subscription is not subscribed yet.');
|
131
|
+
}
|
132
|
+
this._subscriptions.set(sub.id, sub);
|
133
|
+
return sub.id;
|
134
|
+
});
|
135
|
+
}
|
136
|
+
/**
|
137
|
+
* Will clear a subscription
|
138
|
+
*
|
139
|
+
* @param id - The subscription of type {@link Web3Subscription} to remove
|
140
|
+
*/
|
141
|
+
removeSubscription(sub) {
|
142
|
+
return __awaiter(this, void 0, void 0, function* () {
|
143
|
+
const { id } = sub;
|
144
|
+
if (isNullish(id)) {
|
145
|
+
throw new SubscriptionError('Subscription is not subscribed yet. Or, had already been unsubscribed but not through the Subscription Manager.');
|
146
|
+
}
|
147
|
+
if (!this._subscriptions.has(id) && !this.tolerateUnlinkedSubscription) {
|
148
|
+
throw new SubscriptionError(`Subscription with id "${id.toString()}" does not exists`);
|
149
|
+
}
|
150
|
+
yield sub.sendUnsubscribeRequest();
|
151
|
+
this._subscriptions.delete(id);
|
152
|
+
return id;
|
153
|
+
});
|
154
|
+
}
|
155
|
+
/**
|
156
|
+
* Will unsubscribe all subscriptions that fulfill the condition
|
157
|
+
*
|
158
|
+
* @param condition - A function that access and `id` and a `subscription` and return `true` or `false`
|
159
|
+
* @returns An array of all the un-subscribed subscriptions
|
160
|
+
*/
|
161
|
+
unsubscribe(condition) {
|
162
|
+
return __awaiter(this, void 0, void 0, function* () {
|
163
|
+
const result = [];
|
164
|
+
for (const [id, sub] of this.subscriptions.entries()) {
|
165
|
+
if (!condition || (typeof condition === 'function' && condition({ id, sub }))) {
|
166
|
+
result.push(this.removeSubscription(sub));
|
167
|
+
}
|
168
|
+
}
|
169
|
+
return Promise.all(result);
|
170
|
+
});
|
171
|
+
}
|
172
|
+
/**
|
173
|
+
* Clears all subscriptions
|
174
|
+
*/
|
175
|
+
clear() {
|
176
|
+
this._subscriptions.clear();
|
177
|
+
}
|
178
|
+
/**
|
179
|
+
* Check whether the current provider supports subscriptions.
|
180
|
+
*
|
181
|
+
* @returns `true` or `false` depending on if the current provider supports subscriptions
|
182
|
+
*/
|
183
|
+
supportsSubscriptions() {
|
184
|
+
return isNullish(this.requestManager.provider)
|
185
|
+
? false
|
186
|
+
: isSupportSubscriptions(this.requestManager.provider);
|
187
|
+
}
|
188
|
+
}
|
189
|
+
//# sourceMappingURL=web3_subscription_manager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"web3_subscription_manager.js","sourceRoot":"","sources":["../../src/web3_subscription_manager.ts"],"names":[],"mappings":"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"}
|