@ckb-ccc/core 0.0.15 → 0.0.16-alpha.1
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/CHANGELOG.md +14 -0
- package/dist/ckb/transaction.d.ts +4 -4
- package/dist/ckb/transaction.d.ts.map +1 -1
- package/dist/ckb/transaction.js +2 -1
- package/dist/client/client.d.ts +14 -2
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +47 -5
- package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.advanced.js +98 -8
- package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicTestnet.advanced.js +98 -8
- package/dist/client/clientTypes.d.ts +3 -0
- package/dist/client/clientTypes.d.ts.map +1 -1
- package/dist/client/clientTypes.js +5 -0
- package/dist/client/jsonRpc/index.d.ts +9 -0
- package/dist/client/jsonRpc/index.d.ts.map +1 -1
- package/dist/client/jsonRpc/index.js +11 -5
- package/dist/client/transports/webSocket.d.ts.map +1 -1
- package/dist/client/transports/webSocket.js +14 -11
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist.commonjs/ckb/transaction.d.ts +4 -4
- package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.js +2 -1
- package/dist.commonjs/client/client.d.ts +14 -2
- package/dist.commonjs/client/client.d.ts.map +1 -1
- package/dist.commonjs/client/client.js +44 -2
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.advanced.js +98 -8
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicTestnet.advanced.js +98 -8
- package/dist.commonjs/client/clientTypes.d.ts +3 -0
- package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.js +7 -1
- package/dist.commonjs/client/jsonRpc/index.d.ts +9 -0
- package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/index.js +11 -5
- package/dist.commonjs/client/transports/webSocket.d.ts.map +1 -1
- package/dist.commonjs/client/transports/webSocket.js +14 -11
- package/dist.commonjs/utils/index.d.ts +2 -0
- package/dist.commonjs/utils/index.d.ts.map +1 -1
- package/dist.commonjs/utils/index.js +6 -1
- package/package.json +1 -1
- package/src/ckb/transaction.ts +6 -4
- package/src/client/client.ts +64 -4
- package/src/client/clientPublicMainnet.advanced.ts +110 -8
- package/src/client/clientPublicTestnet.advanced.ts +110 -8
- package/src/client/clientTypes.ts +6 -0
- package/src/client/jsonRpc/index.ts +22 -15
- package/src/client/transports/webSocket.ts +44 -39
- package/src/utils/index.ts +6 -0
|
@@ -6,6 +6,23 @@ export const MAINNET_SCRIPTS: Record<
|
|
|
6
6
|
| (Pick<Script, "codeHash" | "hashType"> & { cellDeps: CellDepInfoLike[] })
|
|
7
7
|
| undefined
|
|
8
8
|
> = Object.freeze({
|
|
9
|
+
[KnownScript.NervosDao]: {
|
|
10
|
+
codeHash:
|
|
11
|
+
"0x82d76d1b75fe2fd9a27dfbaa65a039221a380d76c926f378d3f81cf3e7e13f2e",
|
|
12
|
+
hashType: "type",
|
|
13
|
+
cellDeps: [
|
|
14
|
+
{
|
|
15
|
+
cellDep: {
|
|
16
|
+
outPoint: {
|
|
17
|
+
txHash:
|
|
18
|
+
"0xe2fb199810d49a4d8beec56718ba2593b665db9d52299a0f9e6e75416d73ff5c",
|
|
19
|
+
index: 2,
|
|
20
|
+
},
|
|
21
|
+
depType: "code",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
9
26
|
[KnownScript.Secp256k1Blake160]: {
|
|
10
27
|
codeHash:
|
|
11
28
|
"0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8",
|
|
@@ -220,9 +237,9 @@ export const MAINNET_SCRIPTS: Record<
|
|
|
220
237
|
},
|
|
221
238
|
],
|
|
222
239
|
},
|
|
223
|
-
[KnownScript.
|
|
240
|
+
[KnownScript.AlwaysSuccess]: {
|
|
224
241
|
codeHash:
|
|
225
|
-
"
|
|
242
|
+
"0x3b521cc4b552f109d092d8cc468a8048acb53c5952dbe769d2b2f9cf6e47f7f1",
|
|
226
243
|
hashType: "data1",
|
|
227
244
|
cellDeps: [
|
|
228
245
|
{
|
|
@@ -230,7 +247,24 @@ export const MAINNET_SCRIPTS: Record<
|
|
|
230
247
|
outPoint: {
|
|
231
248
|
txHash:
|
|
232
249
|
"0x10d63a996157d32c01078058000052674ca58d15f921bec7f1dcdac2160eb66b",
|
|
233
|
-
index:
|
|
250
|
+
index: 0,
|
|
251
|
+
},
|
|
252
|
+
depType: "code",
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
},
|
|
257
|
+
[KnownScript.InputTypeProxyLock]: {
|
|
258
|
+
codeHash:
|
|
259
|
+
"0x5123908965c711b0ffd8aec642f1ede329649bda1ebdca6bd24124d3796f768a",
|
|
260
|
+
hashType: "data1",
|
|
261
|
+
cellDeps: [
|
|
262
|
+
{
|
|
263
|
+
cellDep: {
|
|
264
|
+
outPoint: {
|
|
265
|
+
txHash:
|
|
266
|
+
"0x10d63a996157d32c01078058000052674ca58d15f921bec7f1dcdac2160eb66b",
|
|
267
|
+
index: 1,
|
|
234
268
|
},
|
|
235
269
|
depType: "code",
|
|
236
270
|
},
|
|
@@ -254,17 +288,85 @@ export const MAINNET_SCRIPTS: Record<
|
|
|
254
288
|
},
|
|
255
289
|
],
|
|
256
290
|
},
|
|
257
|
-
[KnownScript.
|
|
291
|
+
[KnownScript.LockProxyLock]: {
|
|
258
292
|
codeHash:
|
|
259
|
-
"
|
|
260
|
-
hashType: "
|
|
293
|
+
"0x5d41e32e224c15f152b7e6529100ebeac83b162f5f692a5365774dad2c1a1d02",
|
|
294
|
+
hashType: "data1",
|
|
261
295
|
cellDeps: [
|
|
262
296
|
{
|
|
263
297
|
cellDep: {
|
|
264
298
|
outPoint: {
|
|
265
299
|
txHash:
|
|
266
|
-
"
|
|
267
|
-
index:
|
|
300
|
+
"0x10d63a996157d32c01078058000052674ca58d15f921bec7f1dcdac2160eb66b",
|
|
301
|
+
index: 3,
|
|
302
|
+
},
|
|
303
|
+
depType: "code",
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
},
|
|
308
|
+
[KnownScript.SingleUseLock]: {
|
|
309
|
+
codeHash:
|
|
310
|
+
"0x8290467a512e5b9a6b816469b0edabba1f4ac474e28ffdd604c2a7c76446bbaf",
|
|
311
|
+
hashType: "data1",
|
|
312
|
+
cellDeps: [
|
|
313
|
+
{
|
|
314
|
+
cellDep: {
|
|
315
|
+
outPoint: {
|
|
316
|
+
txHash:
|
|
317
|
+
"0x10d63a996157d32c01078058000052674ca58d15f921bec7f1dcdac2160eb66b",
|
|
318
|
+
index: 4,
|
|
319
|
+
},
|
|
320
|
+
depType: "code",
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
],
|
|
324
|
+
},
|
|
325
|
+
[KnownScript.TypeBurnLock]: {
|
|
326
|
+
codeHash:
|
|
327
|
+
"0xff78bae0abf17d7a404c0be0f9ad9c9185b3f88dcc60403453d5ba8e1f22f53a",
|
|
328
|
+
hashType: "data1",
|
|
329
|
+
cellDeps: [
|
|
330
|
+
{
|
|
331
|
+
cellDep: {
|
|
332
|
+
outPoint: {
|
|
333
|
+
txHash:
|
|
334
|
+
"0x10d63a996157d32c01078058000052674ca58d15f921bec7f1dcdac2160eb66b",
|
|
335
|
+
index: 5,
|
|
336
|
+
},
|
|
337
|
+
depType: "code",
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
],
|
|
341
|
+
},
|
|
342
|
+
[KnownScript.EasyToDiscoverType]: {
|
|
343
|
+
codeHash:
|
|
344
|
+
"0xaba4430cc7110d699007095430a1faa72973edf2322ddbfd4d1d219cacf237af",
|
|
345
|
+
hashType: "data1",
|
|
346
|
+
cellDeps: [
|
|
347
|
+
{
|
|
348
|
+
cellDep: {
|
|
349
|
+
outPoint: {
|
|
350
|
+
txHash:
|
|
351
|
+
"0xb0ed754fb27d67fd8388c97fed914fb7998eceaa01f3e6f967e498de1ba0ac9b",
|
|
352
|
+
index: 0,
|
|
353
|
+
},
|
|
354
|
+
depType: "code",
|
|
355
|
+
},
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
},
|
|
359
|
+
[KnownScript.TimeLock]: {
|
|
360
|
+
codeHash:
|
|
361
|
+
"0x6fac4b2e89360a1e692efcddcb3a28656d8446549fb83da6d896db8b714f4451",
|
|
362
|
+
hashType: "data1",
|
|
363
|
+
cellDeps: [
|
|
364
|
+
{
|
|
365
|
+
cellDep: {
|
|
366
|
+
outPoint: {
|
|
367
|
+
txHash:
|
|
368
|
+
"0xb0ed754fb27d67fd8388c97fed914fb7998eceaa01f3e6f967e498de1ba0ac9b",
|
|
369
|
+
index: 1,
|
|
268
370
|
},
|
|
269
371
|
depType: "code",
|
|
270
372
|
},
|
|
@@ -5,6 +5,23 @@ export const TESTNET_SCRIPTS: Record<
|
|
|
5
5
|
KnownScript,
|
|
6
6
|
Pick<Script, "codeHash" | "hashType"> & { cellDeps: CellDepInfoLike[] }
|
|
7
7
|
> = Object.freeze({
|
|
8
|
+
[KnownScript.NervosDao]: {
|
|
9
|
+
codeHash:
|
|
10
|
+
"0x82d76d1b75fe2fd9a27dfbaa65a039221a380d76c926f378d3f81cf3e7e13f2e",
|
|
11
|
+
hashType: "type",
|
|
12
|
+
cellDeps: [
|
|
13
|
+
{
|
|
14
|
+
cellDep: {
|
|
15
|
+
outPoint: {
|
|
16
|
+
txHash:
|
|
17
|
+
"0x8f8c79eb6671709633fe6a46de93c0fedc9c1b8a6527a18d3983879542635c9f",
|
|
18
|
+
index: 2,
|
|
19
|
+
},
|
|
20
|
+
depType: "code",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
},
|
|
8
25
|
[KnownScript.Secp256k1Blake160]: {
|
|
9
26
|
codeHash:
|
|
10
27
|
"0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8",
|
|
@@ -231,9 +248,9 @@ export const TESTNET_SCRIPTS: Record<
|
|
|
231
248
|
},
|
|
232
249
|
],
|
|
233
250
|
},
|
|
234
|
-
[KnownScript.
|
|
251
|
+
[KnownScript.AlwaysSuccess]: {
|
|
235
252
|
codeHash:
|
|
236
|
-
"
|
|
253
|
+
"0x3b521cc4b552f109d092d8cc468a8048acb53c5952dbe769d2b2f9cf6e47f7f1",
|
|
237
254
|
hashType: "data1",
|
|
238
255
|
cellDeps: [
|
|
239
256
|
{
|
|
@@ -241,7 +258,24 @@ export const TESTNET_SCRIPTS: Record<
|
|
|
241
258
|
outPoint: {
|
|
242
259
|
txHash:
|
|
243
260
|
"0xb4f171c9c9caf7401f54a8e56225ae21d95032150a87a4678eac3f66a3137b93",
|
|
244
|
-
index:
|
|
261
|
+
index: 0,
|
|
262
|
+
},
|
|
263
|
+
depType: "code",
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
},
|
|
268
|
+
[KnownScript.InputTypeProxyLock]: {
|
|
269
|
+
codeHash:
|
|
270
|
+
"0x5123908965c711b0ffd8aec642f1ede329649bda1ebdca6bd24124d3796f768a",
|
|
271
|
+
hashType: "data1",
|
|
272
|
+
cellDeps: [
|
|
273
|
+
{
|
|
274
|
+
cellDep: {
|
|
275
|
+
outPoint: {
|
|
276
|
+
txHash:
|
|
277
|
+
"0xb4f171c9c9caf7401f54a8e56225ae21d95032150a87a4678eac3f66a3137b93",
|
|
278
|
+
index: 1,
|
|
245
279
|
},
|
|
246
280
|
depType: "code",
|
|
247
281
|
},
|
|
@@ -265,17 +299,85 @@ export const TESTNET_SCRIPTS: Record<
|
|
|
265
299
|
},
|
|
266
300
|
],
|
|
267
301
|
},
|
|
268
|
-
[KnownScript.
|
|
302
|
+
[KnownScript.LockProxyLock]: {
|
|
269
303
|
codeHash:
|
|
270
|
-
"
|
|
271
|
-
hashType: "
|
|
304
|
+
"0x5d41e32e224c15f152b7e6529100ebeac83b162f5f692a5365774dad2c1a1d02",
|
|
305
|
+
hashType: "data1",
|
|
272
306
|
cellDeps: [
|
|
273
307
|
{
|
|
274
308
|
cellDep: {
|
|
275
309
|
outPoint: {
|
|
276
310
|
txHash:
|
|
277
|
-
"
|
|
278
|
-
index:
|
|
311
|
+
"0xb4f171c9c9caf7401f54a8e56225ae21d95032150a87a4678eac3f66a3137b93",
|
|
312
|
+
index: 3,
|
|
313
|
+
},
|
|
314
|
+
depType: "code",
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
],
|
|
318
|
+
},
|
|
319
|
+
[KnownScript.SingleUseLock]: {
|
|
320
|
+
codeHash:
|
|
321
|
+
"0x8290467a512e5b9a6b816469b0edabba1f4ac474e28ffdd604c2a7c76446bbaf",
|
|
322
|
+
hashType: "data1",
|
|
323
|
+
cellDeps: [
|
|
324
|
+
{
|
|
325
|
+
cellDep: {
|
|
326
|
+
outPoint: {
|
|
327
|
+
txHash:
|
|
328
|
+
"0xb4f171c9c9caf7401f54a8e56225ae21d95032150a87a4678eac3f66a3137b93",
|
|
329
|
+
index: 4,
|
|
330
|
+
},
|
|
331
|
+
depType: "code",
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
],
|
|
335
|
+
},
|
|
336
|
+
[KnownScript.TypeBurnLock]: {
|
|
337
|
+
codeHash:
|
|
338
|
+
"0xff78bae0abf17d7a404c0be0f9ad9c9185b3f88dcc60403453d5ba8e1f22f53a",
|
|
339
|
+
hashType: "data1",
|
|
340
|
+
cellDeps: [
|
|
341
|
+
{
|
|
342
|
+
cellDep: {
|
|
343
|
+
outPoint: {
|
|
344
|
+
txHash:
|
|
345
|
+
"0xb4f171c9c9caf7401f54a8e56225ae21d95032150a87a4678eac3f66a3137b93",
|
|
346
|
+
index: 5,
|
|
347
|
+
},
|
|
348
|
+
depType: "code",
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
],
|
|
352
|
+
},
|
|
353
|
+
[KnownScript.EasyToDiscoverType]: {
|
|
354
|
+
codeHash:
|
|
355
|
+
"0xaba4430cc7110d699007095430a1faa72973edf2322ddbfd4d1d219cacf237af",
|
|
356
|
+
hashType: "data1",
|
|
357
|
+
cellDeps: [
|
|
358
|
+
{
|
|
359
|
+
cellDep: {
|
|
360
|
+
outPoint: {
|
|
361
|
+
txHash:
|
|
362
|
+
"0x1b4ffcad55ecd36ffb2715b6816b83da73851f1a24fe594f263c4f34dad90792",
|
|
363
|
+
index: 0,
|
|
364
|
+
},
|
|
365
|
+
depType: "code",
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
],
|
|
369
|
+
},
|
|
370
|
+
[KnownScript.TimeLock]: {
|
|
371
|
+
codeHash:
|
|
372
|
+
"0x6fac4b2e89360a1e692efcddcb3a28656d8446549fb83da6d896db8b714f4451",
|
|
373
|
+
hashType: "data1",
|
|
374
|
+
cellDeps: [
|
|
375
|
+
{
|
|
376
|
+
cellDep: {
|
|
377
|
+
outPoint: {
|
|
378
|
+
txHash:
|
|
379
|
+
"0x1b4ffcad55ecd36ffb2715b6816b83da73851f1a24fe594f263c4f34dad90792",
|
|
380
|
+
index: 1,
|
|
279
381
|
},
|
|
280
382
|
depType: "code",
|
|
281
383
|
},
|
|
@@ -37,15 +37,12 @@ import { JsonRpcCellOutput, JsonRpcTransformers } from "./advanced.js";
|
|
|
37
37
|
*
|
|
38
38
|
* @example
|
|
39
39
|
* ```typescript
|
|
40
|
-
* const result =
|
|
41
|
-
* const resultWithoutTransformer =
|
|
40
|
+
* const result = transform(5, (x) => x * 2); // Outputs 10
|
|
41
|
+
* const resultWithoutTransformer = transform(5); // Outputs 5
|
|
42
42
|
* ```
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
value: unknown,
|
|
47
|
-
transformer?: (i: unknown) => unknown,
|
|
48
|
-
) {
|
|
45
|
+
function transform(value: unknown, transformer?: (i: unknown) => unknown) {
|
|
49
46
|
if (transformer) {
|
|
50
47
|
return transformer(value);
|
|
51
48
|
}
|
|
@@ -122,6 +119,18 @@ export abstract class ClientJsonRpc extends Client {
|
|
|
122
119
|
return this.url_;
|
|
123
120
|
}
|
|
124
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Get fee rate statistics
|
|
124
|
+
*
|
|
125
|
+
* @returns Fee rate statistics
|
|
126
|
+
*/
|
|
127
|
+
|
|
128
|
+
getFeeRateStatistics = this.buildSender(
|
|
129
|
+
"get_fee_rate_statistics",
|
|
130
|
+
[(n) => apply(numFrom, n)],
|
|
131
|
+
({ mean, median }) => ({ mean: numFrom(mean), median: numFrom(median) }),
|
|
132
|
+
) as Client["getFeeRateStatistics"];
|
|
133
|
+
|
|
125
134
|
/**
|
|
126
135
|
* Get tip block number
|
|
127
136
|
*
|
|
@@ -367,15 +376,13 @@ export abstract class ClientJsonRpc extends Client {
|
|
|
367
376
|
return async (...req: unknown[]) => {
|
|
368
377
|
const payload = this.buildPayload(
|
|
369
378
|
rpcMethod,
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
.
|
|
373
|
-
Array.
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
.map((v, i) => transform(v, inTransformers[i])),
|
|
378
|
-
),
|
|
379
|
+
req
|
|
380
|
+
.concat(
|
|
381
|
+
Array.from(
|
|
382
|
+
new Array(Math.max(inTransformers.length - req.length, 0)),
|
|
383
|
+
),
|
|
384
|
+
)
|
|
385
|
+
.map((v, i) => transform(v, inTransformers[i])),
|
|
379
386
|
);
|
|
380
387
|
|
|
381
388
|
try {
|
|
@@ -17,55 +17,60 @@ export class TransportWebSocket implements Transport {
|
|
|
17
17
|
private readonly timeout = 30000,
|
|
18
18
|
) {}
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
const socket = (()
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const socket = new WebSocket(this.url);
|
|
27
|
-
const onMessage = ({ data }: { data: string }) => {
|
|
28
|
-
const res = JSON.parse(data);
|
|
29
|
-
if (typeof res !== "object" || res === null) {
|
|
30
|
-
throw new Error(`Unknown response ${data}`);
|
|
20
|
+
request(data: JsonRpcPayload) {
|
|
21
|
+
const socket = (this.socket ?? Promise.resolve(undefined)).then(
|
|
22
|
+
(existed) => {
|
|
23
|
+
if (existed && existed.readyState === existed.OPEN) {
|
|
24
|
+
return existed;
|
|
31
25
|
}
|
|
32
26
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
const socket = new WebSocket(this.url);
|
|
28
|
+
const onMessage = ({ data }: { data: string }) => {
|
|
29
|
+
const res = JSON.parse(data);
|
|
30
|
+
if (typeof res !== "object" || res === null) {
|
|
31
|
+
throw new Error(`Unknown response ${data}`);
|
|
32
|
+
}
|
|
39
33
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
);
|
|
47
|
-
this.ongoing.clear();
|
|
48
|
-
};
|
|
34
|
+
const req = this.ongoing.get(res.id);
|
|
35
|
+
if (!req) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
clearTimeout(req[2]);
|
|
39
|
+
this.ongoing.delete(res.id);
|
|
49
40
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
41
|
+
req[0](res);
|
|
42
|
+
};
|
|
43
|
+
const onClose = () => {
|
|
44
|
+
this.socket = undefined;
|
|
45
|
+
this.ongoing.forEach(([_, onError]) =>
|
|
46
|
+
onError(new Error("Connection closed")),
|
|
47
|
+
);
|
|
48
|
+
this.ongoing.clear();
|
|
49
|
+
};
|
|
53
50
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
51
|
+
socket.onclose = onClose;
|
|
52
|
+
socket.onerror = onClose;
|
|
53
|
+
socket.onmessage = onMessage;
|
|
54
|
+
|
|
55
|
+
this.socket = new Promise((resolve) => {
|
|
56
|
+
if (socket.readyState === socket.OPEN) {
|
|
57
|
+
resolve(undefined);
|
|
58
|
+
} else {
|
|
59
|
+
socket.onopen = resolve;
|
|
60
|
+
}
|
|
61
|
+
}).then(() => socket);
|
|
62
|
+
return this.socket;
|
|
63
|
+
},
|
|
64
|
+
);
|
|
63
65
|
|
|
64
66
|
return new Promise((resolve, reject) => {
|
|
65
67
|
this.ongoing.set(data.id, [
|
|
66
68
|
resolve,
|
|
67
69
|
reject,
|
|
68
|
-
setTimeout(() =>
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
socket.then((socket) => socket.close());
|
|
72
|
+
reject(new Error("Request timeout"));
|
|
73
|
+
}, this.timeout),
|
|
69
74
|
]);
|
|
70
75
|
socket.then((socket) => {
|
|
71
76
|
if (
|
package/src/utils/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { NumLike, numFrom } from "../num/index.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* A type safe way to apply a transformer on a value if it's not empty.
|
|
3
5
|
* @public
|
|
@@ -166,6 +168,10 @@ export async function reduceAsync<T, V>(
|
|
|
166
168
|
);
|
|
167
169
|
}
|
|
168
170
|
|
|
171
|
+
export function sleep(ms: NumLike) {
|
|
172
|
+
return new Promise((resolve) => setTimeout(resolve, Number(numFrom(ms))));
|
|
173
|
+
}
|
|
174
|
+
|
|
169
175
|
/**
|
|
170
176
|
* @public
|
|
171
177
|
*/
|