@ckb-ccc/core 1.5.3 → 1.7.0
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 +61 -7
- package/dist/ckb/script.d.ts +2 -1
- package/dist/ckb/script.d.ts.map +1 -1
- package/dist/ckb/transaction.d.ts +125 -7
- package/dist/ckb/transaction.d.ts.map +1 -1
- package/dist/ckb/transaction.js +263 -73
- package/dist/client/cache/cache.d.ts +67 -11
- package/dist/client/cache/cache.d.ts.map +1 -1
- package/dist/client/cache/cache.js +94 -9
- package/dist/client/cache/memory.advanced.d.ts +2 -2
- package/dist/client/cache/memory.advanced.d.ts.map +1 -1
- package/dist/client/cache/memory.advanced.js +19 -7
- package/dist/client/cache/memory.d.ts +24 -7
- package/dist/client/cache/memory.d.ts.map +1 -1
- package/dist/client/cache/memory.js +76 -18
- package/dist/client/client.d.ts +30 -7
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +114 -22
- package/dist/client/clientPublicMainnet.advanced.d.ts +2 -1
- package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.advanced.js +1 -1
- package/dist/client/clientPublicMainnet.d.ts +2 -1
- package/dist/client/clientPublicMainnet.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.js +1 -6
- package/dist/client/clientPublicTestnet.advanced.d.ts +2 -1
- package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicTestnet.advanced.js +1 -1
- package/dist/client/clientPublicTestnet.d.ts +2 -1
- package/dist/client/clientPublicTestnet.d.ts.map +1 -1
- package/dist/client/clientTypes.advanced.d.ts +3 -0
- package/dist/client/clientTypes.advanced.d.ts.map +1 -1
- package/dist/client/clientTypes.advanced.js +3 -0
- package/dist/client/clientTypes.d.ts +110 -38
- package/dist/client/clientTypes.d.ts.map +1 -1
- package/dist/client/clientTypes.js +118 -31
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/jsonRpc/client.d.ts +4 -4
- package/dist/client/jsonRpc/client.d.ts.map +1 -1
- package/dist/client/jsonRpc/client.js +4 -4
- package/dist/client/jsonRpc/transformers.js +3 -3
- package/dist/client/knownScript.d.ts +26 -0
- package/dist/client/knownScript.d.ts.map +1 -0
- package/dist/client/knownScript.js +27 -0
- package/dist/jsonRpc/transports/webSocket.d.ts.map +1 -1
- package/dist/jsonRpc/transports/webSocket.js +7 -3
- package/dist/molecule/predefined.d.ts +10 -10
- package/dist/molecule/predefined.d.ts.map +1 -1
- package/dist/num/index.d.ts.map +1 -1
- package/dist/num/index.js +17 -1
- package/dist/signer/ckb/signerCkbPublicKey.d.ts.map +1 -1
- package/dist/signer/ckb/signerCkbPublicKey.js +1 -5
- package/dist/signer/nostr/index.d.ts +1 -0
- package/dist/signer/nostr/index.d.ts.map +1 -1
- package/dist/signer/nostr/index.js +1 -0
- package/dist/signer/nostr/signerNostr.d.ts +1 -1
- package/dist/signer/nostr/signerNostr.d.ts.map +1 -1
- package/dist/signer/nostr/signerNostr.js +8 -0
- package/dist/signer/nostr/signerNostrPrivateKey.d.ts +5 -7
- package/dist/signer/nostr/signerNostrPrivateKey.d.ts.map +1 -1
- package/dist/signer/nostr/signerNostrPrivateKey.js +6 -12
- package/dist/signer/nostr/signerNostrPublicKeyReadonly.d.ts +11 -0
- package/dist/signer/nostr/signerNostrPublicKeyReadonly.d.ts.map +1 -0
- package/dist/signer/nostr/signerNostrPublicKeyReadonly.js +22 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -1
- package/dist.commonjs/advanced.js +17 -7
- package/dist.commonjs/ckb/script.d.ts +2 -1
- package/dist.commonjs/ckb/script.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.d.ts +125 -7
- package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.js +352 -160
- package/dist.commonjs/client/cache/cache.d.ts +67 -11
- package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
- package/dist.commonjs/client/cache/cache.js +94 -9
- package/dist.commonjs/client/cache/memory.advanced.d.ts +2 -2
- package/dist.commonjs/client/cache/memory.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.advanced.js +19 -7
- package/dist.commonjs/client/cache/memory.d.ts +24 -7
- package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.js +75 -17
- package/dist.commonjs/client/client.d.ts +30 -7
- package/dist.commonjs/client/client.d.ts.map +1 -1
- package/dist.commonjs/client/client.js +112 -20
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +2 -1
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.advanced.js +21 -21
- package/dist.commonjs/client/clientPublicMainnet.d.ts +2 -1
- package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.js +1 -6
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +2 -1
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicTestnet.advanced.js +21 -21
- package/dist.commonjs/client/clientPublicTestnet.d.ts +2 -1
- package/dist.commonjs/client/clientPublicTestnet.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.advanced.d.ts +3 -0
- package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.advanced.js +4 -0
- package/dist.commonjs/client/clientTypes.d.ts +110 -38
- package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.js +123 -31
- package/dist.commonjs/client/index.d.ts +1 -0
- package/dist.commonjs/client/index.d.ts.map +1 -1
- package/dist.commonjs/client/index.js +1 -0
- package/dist.commonjs/client/jsonRpc/client.d.ts +4 -4
- package/dist.commonjs/client/jsonRpc/client.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/client.js +4 -4
- package/dist.commonjs/client/jsonRpc/transformers.js +2 -2
- package/dist.commonjs/client/knownScript.d.ts +26 -0
- package/dist.commonjs/client/knownScript.d.ts.map +1 -0
- package/dist.commonjs/client/knownScript.js +30 -0
- package/dist.commonjs/index.js +17 -7
- package/dist.commonjs/jsonRpc/transports/webSocket.d.ts.map +1 -1
- package/dist.commonjs/jsonRpc/transports/webSocket.js +7 -3
- package/dist.commonjs/molecule/index.js +17 -7
- package/dist.commonjs/num/index.d.ts.map +1 -1
- package/dist.commonjs/num/index.js +17 -1
- package/dist.commonjs/signer/ckb/signerCkbPublicKey.d.ts.map +1 -1
- package/dist.commonjs/signer/ckb/signerCkbPublicKey.js +1 -5
- package/dist.commonjs/signer/nostr/index.d.ts +1 -0
- package/dist.commonjs/signer/nostr/index.d.ts.map +1 -1
- package/dist.commonjs/signer/nostr/index.js +1 -0
- package/dist.commonjs/signer/nostr/signerNostr.d.ts +1 -1
- package/dist.commonjs/signer/nostr/signerNostr.d.ts.map +1 -1
- package/dist.commonjs/signer/nostr/signerNostr.js +8 -0
- package/dist.commonjs/signer/nostr/signerNostrPrivateKey.d.ts +5 -7
- package/dist.commonjs/signer/nostr/signerNostrPrivateKey.d.ts.map +1 -1
- package/dist.commonjs/signer/nostr/signerNostrPrivateKey.js +6 -12
- package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.d.ts +11 -0
- package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.d.ts.map +1 -0
- package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.js +26 -0
- package/dist.commonjs/utils/index.d.ts +4 -0
- package/dist.commonjs/utils/index.d.ts.map +1 -1
- package/dist.commonjs/utils/index.js +13 -0
- package/package.json +1 -1
- package/src/ckb/script.ts +2 -1
- package/src/ckb/transaction.ts +376 -97
- package/src/client/cache/cache.ts +126 -13
- package/src/client/cache/memory.advanced.ts +24 -7
- package/src/client/cache/memory.ts +130 -30
- package/src/client/client.ts +172 -28
- package/src/client/clientPublicMainnet.advanced.ts +2 -1
- package/src/client/clientPublicMainnet.ts +3 -7
- package/src/client/clientPublicTestnet.advanced.ts +2 -1
- package/src/client/clientPublicTestnet.ts +2 -1
- package/src/client/clientTypes.advanced.ts +4 -0
- package/src/client/clientTypes.ts +224 -61
- package/src/client/index.ts +1 -0
- package/src/client/jsonRpc/client.ts +11 -9
- package/src/client/jsonRpc/transformers.ts +2 -2
- package/src/client/knownScript.ts +27 -0
- package/src/jsonRpc/transports/webSocket.ts +17 -13
- package/src/num/index.ts +21 -1
- package/src/signer/ckb/signerCkbPublicKey.ts +3 -5
- package/src/signer/nostr/index.ts +1 -0
- package/src/signer/nostr/signerNostr.ts +3 -1
- package/src/signer/nostr/signerNostrPrivateKey.ts +7 -14
- package/src/signer/nostr/signerNostrPublicKeyReadonly.ts +29 -0
- package/src/utils/index.ts +14 -1
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import { Transaction, } from "../../ckb/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* @public
|
|
4
|
+
* The ClientCache class is mainly designed for chained transactions.
|
|
5
|
+
* Consumed & Created cells are "marked" so they can be correctly handled when composing transactions.
|
|
6
|
+
* It also act as cache for rpc requests to reduce cost, but this is optional.
|
|
7
|
+
*/
|
|
2
8
|
export class ClientCache {
|
|
9
|
+
async markUsable(...cellLikes) {
|
|
10
|
+
await this.recordCells(...cellLikes);
|
|
11
|
+
return this.markUsableNoCache(...cellLikes);
|
|
12
|
+
}
|
|
3
13
|
async markTransactions(...transactionLike) {
|
|
4
14
|
await Promise.all([
|
|
5
|
-
this.
|
|
15
|
+
this.recordTransactionResponses(transactionLike.flat().map((transaction) => ({
|
|
16
|
+
transaction: transaction,
|
|
17
|
+
status: "sent",
|
|
18
|
+
}))),
|
|
6
19
|
...transactionLike.flat().map((transactionLike) => {
|
|
7
20
|
const tx = Transaction.from(transactionLike);
|
|
8
21
|
const txHash = tx.hash();
|
|
@@ -20,24 +33,96 @@ export class ClientCache {
|
|
|
20
33
|
}),
|
|
21
34
|
]);
|
|
22
35
|
}
|
|
36
|
+
// ======
|
|
37
|
+
// Following methods are for requests caching and optional.
|
|
38
|
+
// ======
|
|
23
39
|
/**
|
|
24
|
-
* Record known
|
|
40
|
+
* Record known cells
|
|
41
|
+
* Implement this method to enable cells query caching
|
|
42
|
+
* @param _cells
|
|
43
|
+
*/
|
|
44
|
+
async recordCells(..._cells) { }
|
|
45
|
+
/**
|
|
46
|
+
* Get a known cell by out point
|
|
47
|
+
* Implement this method to enable cells query caching
|
|
48
|
+
* @param _outPoint
|
|
49
|
+
*/
|
|
50
|
+
async getCell(_outPoint) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Record known transaction responses.
|
|
25
55
|
* Implement this method to enable transactions query caching
|
|
26
56
|
* @param _transactions
|
|
27
57
|
*/
|
|
28
|
-
async
|
|
58
|
+
async recordTransactionResponses(..._transactions) { }
|
|
29
59
|
/**
|
|
30
|
-
* Get a known transaction by hash
|
|
60
|
+
* Get a known transaction response by hash
|
|
31
61
|
* Implement this method to enable transactions query caching
|
|
32
62
|
* @param _txHash
|
|
33
63
|
*/
|
|
34
|
-
async
|
|
64
|
+
async getTransactionResponse(_txHash) {
|
|
35
65
|
return;
|
|
36
66
|
}
|
|
37
67
|
/**
|
|
38
|
-
* Record known
|
|
39
|
-
*
|
|
40
|
-
* @param _cells
|
|
68
|
+
* Record known transactions.
|
|
69
|
+
* @param transactions
|
|
41
70
|
*/
|
|
42
|
-
async
|
|
71
|
+
async recordTransactions(...transactions) {
|
|
72
|
+
return this.recordTransactionResponses(transactions.flat().map((transaction) => ({
|
|
73
|
+
transaction,
|
|
74
|
+
status: "unknown",
|
|
75
|
+
})));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get a known transaction by hash
|
|
79
|
+
* @param txHash
|
|
80
|
+
*/
|
|
81
|
+
async getTransaction(txHash) {
|
|
82
|
+
return (await this.getTransactionResponse(txHash))?.transaction;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Record known block headers.
|
|
86
|
+
* Implement this method to enable block headers query caching
|
|
87
|
+
* @param _headers
|
|
88
|
+
*/
|
|
89
|
+
async recordHeaders(..._headers) { }
|
|
90
|
+
/**
|
|
91
|
+
* Get a known block header by hash
|
|
92
|
+
* Implement this method to enable block headers query caching
|
|
93
|
+
* @param _hash
|
|
94
|
+
*/
|
|
95
|
+
async getHeaderByHash(_hash) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get a known block header by number
|
|
100
|
+
* Implement this method to enable block headers query caching
|
|
101
|
+
* @param _number
|
|
102
|
+
*/
|
|
103
|
+
async getHeaderByNumber(_number) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Record known blocks.
|
|
108
|
+
* Implement this method to enable blocks query caching
|
|
109
|
+
* @param _blocks
|
|
110
|
+
*/
|
|
111
|
+
async recordBlocks(..._blocks) { }
|
|
112
|
+
/**
|
|
113
|
+
* Get a known block header by hash
|
|
114
|
+
* Implement this method to enable block headers query caching
|
|
115
|
+
* @param _hash
|
|
116
|
+
*/
|
|
117
|
+
async getBlockByHash(_hash) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get a known block header by number
|
|
122
|
+
* Implement this method to enable block headers query caching
|
|
123
|
+
* @param _number
|
|
124
|
+
*/
|
|
125
|
+
async getBlockByNumber(_number) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
43
128
|
}
|
|
@@ -15,8 +15,8 @@ export declare class MapLru<K, V> extends Map<K, V> {
|
|
|
15
15
|
private readonly capacity;
|
|
16
16
|
private readonly lru;
|
|
17
17
|
constructor(capacity: number);
|
|
18
|
-
|
|
19
|
-
get(key: K): V | undefined;
|
|
18
|
+
get(key: K): (V & ({} | null)) | undefined;
|
|
20
19
|
set(key: K, value: V): this;
|
|
20
|
+
delete(key: K): boolean;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=memory.advanced.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.advanced.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAE/B,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,UAAU,GAClB;IACE,KAAK;IACL,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;CAC1E,GACD,CAAC,IAAI,EAAE,IAAI,CAAC,GACZ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEtB,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACzC,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,GACpC,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,OAAO,CAYT;AAED,wBAAgB,UAAU,CACxB,aAAa,EAAE,8BAA8B,EAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CA4CT;AAED,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;gBAEF,QAAQ,EAAE,MAAM;IAI7C,
|
|
1
|
+
{"version":3,"file":"memory.advanced.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAE/B,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,UAAU,GAClB;IACE,KAAK;IACL,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;CAC1E,GACD,CAAC,IAAI,EAAE,IAAI,CAAC,GACZ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEtB,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACzC,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,GACpC,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,OAAO,CAYT;AAED,wBAAgB,UAAU,CACxB,aAAa,EAAE,8BAA8B,EAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CA4CT;AAED,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;gBAEF,QAAQ,EAAE,MAAM;IAI7C,GAAG,CAAC,GAAG,EAAE,CAAC;IAmBV,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAOpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;CAYxB"}
|
|
@@ -84,7 +84,11 @@ export class MapLru extends Map {
|
|
|
84
84
|
this.capacity = capacity;
|
|
85
85
|
this.lru = [];
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
get(key) {
|
|
88
|
+
const val = super.get(key);
|
|
89
|
+
if (val === undefined) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
88
92
|
const index = this.lru.indexOf(key);
|
|
89
93
|
if (index !== -1) {
|
|
90
94
|
this.lru.splice(index, 1);
|
|
@@ -94,13 +98,21 @@ export class MapLru extends Map {
|
|
|
94
98
|
this.delete(this.lru[0]);
|
|
95
99
|
this.lru.shift();
|
|
96
100
|
}
|
|
97
|
-
|
|
98
|
-
get(key) {
|
|
99
|
-
this.access(key);
|
|
100
|
-
return super.get(key);
|
|
101
|
+
return val;
|
|
101
102
|
}
|
|
102
103
|
set(key, value) {
|
|
103
|
-
this.
|
|
104
|
-
|
|
104
|
+
this.get(key);
|
|
105
|
+
super.set(key, value);
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
delete(key) {
|
|
109
|
+
if (!super.delete(key)) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
const index = this.lru.indexOf(key);
|
|
113
|
+
if (index !== -1) {
|
|
114
|
+
this.lru.splice(index, 1);
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
105
117
|
}
|
|
106
118
|
}
|
|
@@ -1,27 +1,44 @@
|
|
|
1
|
-
import { Cell, CellLike, OutPointLike
|
|
1
|
+
import { Cell, CellLike, OutPointLike } from "../../ckb/index.js";
|
|
2
2
|
import { HexLike } from "../../hex/index.js";
|
|
3
|
+
import { NumLike } from "../../num/index.js";
|
|
3
4
|
import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
|
|
5
|
+
import { ClientBlock, ClientBlockHeader, ClientBlockHeaderLike, ClientBlockLike, ClientTransactionResponse, ClientTransactionResponseLike } from "../clientTypes.js";
|
|
4
6
|
import { ClientCache } from "./cache.js";
|
|
5
7
|
export declare class ClientCacheMemory extends ClientCache {
|
|
6
8
|
private readonly maxCells;
|
|
7
9
|
private readonly maxTxs;
|
|
10
|
+
private readonly maxBlocks;
|
|
8
11
|
/**
|
|
9
12
|
* OutPoint => [isLive, Cell | OutPoint]
|
|
10
13
|
*/
|
|
11
14
|
private readonly cells;
|
|
12
15
|
/**
|
|
13
|
-
* TX Hash => Transaction
|
|
16
|
+
* TX Hash => Transaction Response
|
|
14
17
|
*/
|
|
15
18
|
private readonly knownTransactions;
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Block Number => Block Hash
|
|
21
|
+
*/
|
|
22
|
+
private readonly knownBlockHashes;
|
|
23
|
+
/**
|
|
24
|
+
* Block Hash => Block Header / Full Block
|
|
25
|
+
*/
|
|
26
|
+
private readonly knownBlocks;
|
|
27
|
+
constructor(maxCells?: number, maxTxs?: number, maxBlocks?: number);
|
|
28
|
+
markUsableNoCache(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
18
29
|
markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
|
|
19
30
|
clear(): Promise<void>;
|
|
20
31
|
findCells(keyLike: ClientCollectableSearchKeyLike): AsyncGenerator<Cell>;
|
|
21
|
-
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
22
32
|
isUnusable(outPointLike: OutPointLike): Promise<boolean>;
|
|
23
|
-
recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
|
|
24
|
-
getTransaction(txHashLike: HexLike): Promise<Transaction | undefined>;
|
|
25
33
|
recordCells(...cells: (CellLike | CellLike[])[]): Promise<void>;
|
|
34
|
+
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
35
|
+
recordTransactionResponses(...transactions: (ClientTransactionResponseLike | ClientTransactionResponseLike[])[]): Promise<void>;
|
|
36
|
+
getTransactionResponse(txHashLike: HexLike): Promise<ClientTransactionResponse | undefined>;
|
|
37
|
+
recordHeaders(...headers: (ClientBlockHeaderLike | ClientBlockHeaderLike[])[]): Promise<void>;
|
|
38
|
+
getHeaderByHash(hashLike: HexLike): Promise<ClientBlockHeader | undefined>;
|
|
39
|
+
getHeaderByNumber(numberLike: NumLike): Promise<ClientBlockHeader | undefined>;
|
|
40
|
+
recordBlocks(...blocks: (ClientBlockLike | ClientBlockLike[])[]): Promise<void>;
|
|
41
|
+
getBlockByHash(hashLike: HexLike): Promise<ClientBlock | undefined>;
|
|
42
|
+
getBlockByNumber(numberLike: NumLike): Promise<ClientBlock | undefined>;
|
|
26
43
|
}
|
|
27
44
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,SAAQ,WAAW;IAyB9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IA1B5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;gBAGiB,QAAQ,SAAM,EACd,MAAM,SAAM,EACZ,SAAS,SAAM;IAe5B,iBAAiB,CACrB,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GACtC,OAAO,CAAC,IAAI,CAAC;IASV,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;IAcjB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAS9D,0BAA0B,CAC9B,GAAG,YAAY,EAAE,CACb,6BAA6B,GAC7B,6BAA6B,EAAE,CAClC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IAMV,sBAAsB,CAC1B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAK3C,aAAa,CACjB,GAAG,OAAO,EAAE,CAAC,qBAAqB,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAaV,eAAe,CACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAQnC,iBAAiB,CACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAUnC,YAAY,CAChB,GAAG,MAAM,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IAQV,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWnE,gBAAgB,CACpB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CASpC"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
import { Cell, OutPoint
|
|
1
|
+
import { Cell, OutPoint } from "../../ckb/index.js";
|
|
2
2
|
import { hexFrom } from "../../hex/index.js";
|
|
3
|
+
import { numFrom } from "../../num/index.js";
|
|
4
|
+
import { ClientBlock, ClientBlockHeader, ClientTransactionResponse, } from "../clientTypes.js";
|
|
3
5
|
import { ClientCache } from "./cache.js";
|
|
4
6
|
import { filterCell, MapLru } from "./memory.advanced.js";
|
|
5
7
|
export class ClientCacheMemory extends ClientCache {
|
|
6
|
-
constructor(maxCells = 512, maxTxs = 256) {
|
|
8
|
+
constructor(maxCells = 512, maxTxs = 256, maxBlocks = 128) {
|
|
7
9
|
super();
|
|
8
10
|
this.maxCells = maxCells;
|
|
9
11
|
this.maxTxs = maxTxs;
|
|
12
|
+
this.maxBlocks = maxBlocks;
|
|
10
13
|
this.cells = new MapLru(this.maxCells);
|
|
11
14
|
this.knownTransactions = new MapLru(this.maxTxs);
|
|
15
|
+
this.knownBlockHashes = new MapLru(this.maxBlocks);
|
|
16
|
+
this.knownBlocks = new MapLru(this.maxBlocks);
|
|
12
17
|
}
|
|
13
|
-
async
|
|
18
|
+
async markUsableNoCache(...cellLikes) {
|
|
14
19
|
cellLikes.flat().forEach((cellLike) => {
|
|
15
20
|
const cell = Cell.from(cellLike).clone();
|
|
16
21
|
const outPointStr = hexFrom(cell.outPoint.toBytes());
|
|
@@ -41,10 +46,24 @@ export class ClientCacheMemory extends ClientCache {
|
|
|
41
46
|
if (!filterCell(keyLike, cell)) {
|
|
42
47
|
continue;
|
|
43
48
|
}
|
|
44
|
-
this.cells.
|
|
49
|
+
this.cells.get(key);
|
|
45
50
|
yield cell.clone();
|
|
46
51
|
}
|
|
47
52
|
}
|
|
53
|
+
async isUnusable(outPointLike) {
|
|
54
|
+
const outPoint = OutPoint.from(outPointLike);
|
|
55
|
+
return !(this.cells.get(hexFrom(outPoint.toBytes()))?.[0] ?? true);
|
|
56
|
+
}
|
|
57
|
+
async recordCells(...cells) {
|
|
58
|
+
cells.flat().map((cellLike) => {
|
|
59
|
+
const cell = Cell.from(cellLike);
|
|
60
|
+
const outPointStr = hexFrom(cell.outPoint.toBytes());
|
|
61
|
+
if (this.cells.get(outPointStr)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.cells.set(outPointStr, [undefined, cell]);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
48
67
|
async getCell(outPointLike) {
|
|
49
68
|
const outPoint = OutPoint.from(outPointLike);
|
|
50
69
|
const cell = this.cells.get(hexFrom(outPoint.toBytes()))?.[1];
|
|
@@ -52,28 +71,67 @@ export class ClientCacheMemory extends ClientCache {
|
|
|
52
71
|
return Cell.from(cell.clone());
|
|
53
72
|
}
|
|
54
73
|
}
|
|
55
|
-
async
|
|
56
|
-
const outPoint = OutPoint.from(outPointLike);
|
|
57
|
-
return !(this.cells.get(hexFrom(outPoint.toBytes()))?.[0] ?? true);
|
|
58
|
-
}
|
|
59
|
-
async recordTransactions(...transactions) {
|
|
74
|
+
async recordTransactionResponses(...transactions) {
|
|
60
75
|
transactions.flat().map((txLike) => {
|
|
61
|
-
const tx =
|
|
62
|
-
this.knownTransactions.set(tx.hash(), tx);
|
|
76
|
+
const tx = ClientTransactionResponse.from(txLike);
|
|
77
|
+
this.knownTransactions.set(tx.transaction.hash(), tx);
|
|
63
78
|
});
|
|
64
79
|
}
|
|
65
|
-
async
|
|
80
|
+
async getTransactionResponse(txHashLike) {
|
|
66
81
|
const txHash = hexFrom(txHashLike);
|
|
67
82
|
return this.knownTransactions.get(txHash)?.clone();
|
|
68
83
|
}
|
|
69
|
-
async
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
84
|
+
async recordHeaders(...headers) {
|
|
85
|
+
headers.flat().map((headerLike) => {
|
|
86
|
+
const header = ClientBlockHeader.from(headerLike);
|
|
87
|
+
this.knownBlockHashes.set(header.number, header.hash);
|
|
88
|
+
const existed = this.knownBlocks.get(header.hash);
|
|
89
|
+
if (existed) {
|
|
74
90
|
return;
|
|
75
91
|
}
|
|
76
|
-
this.
|
|
92
|
+
this.knownBlocks.set(header.hash, { header });
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async getHeaderByHash(hashLike) {
|
|
96
|
+
const hash = hexFrom(hashLike);
|
|
97
|
+
const block = this.knownBlocks.get(hash);
|
|
98
|
+
if (block) {
|
|
99
|
+
this.knownBlockHashes.get(block.header.number); // For LRU
|
|
100
|
+
}
|
|
101
|
+
return block?.header;
|
|
102
|
+
}
|
|
103
|
+
async getHeaderByNumber(numberLike) {
|
|
104
|
+
const number = numFrom(numberLike);
|
|
105
|
+
const hash = this.knownBlockHashes.get(number);
|
|
106
|
+
if (!hash) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
return this.getHeaderByHash(hash);
|
|
110
|
+
}
|
|
111
|
+
async recordBlocks(...blocks) {
|
|
112
|
+
blocks.flat().map((blockLike) => {
|
|
113
|
+
const block = ClientBlock.from(blockLike);
|
|
114
|
+
this.knownBlockHashes.set(block.header.number, block.header.hash);
|
|
115
|
+
this.knownBlocks.set(block.header.hash, block);
|
|
77
116
|
});
|
|
78
117
|
}
|
|
118
|
+
async getBlockByHash(hashLike) {
|
|
119
|
+
const hash = hexFrom(hashLike);
|
|
120
|
+
const block = this.knownBlocks.get(hash);
|
|
121
|
+
if (block) {
|
|
122
|
+
this.knownBlockHashes.get(block.header.number); // For LRU
|
|
123
|
+
if ("transactions" in block) {
|
|
124
|
+
return block;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
async getBlockByNumber(numberLike) {
|
|
130
|
+
const number = numFrom(numberLike);
|
|
131
|
+
const hash = this.knownBlockHashes.get(number);
|
|
132
|
+
if (!hash) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
return this.getBlockByHash(hash);
|
|
136
|
+
}
|
|
79
137
|
}
|
package/dist/client/client.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import { Hex, HexLike } from "../hex/index.js";
|
|
|
3
3
|
import { Num, NumLike } from "../num/index.js";
|
|
4
4
|
import { ClientCache } from "./cache/index.js";
|
|
5
5
|
import { ClientCollectableSearchKeyLike } from "./clientTypes.advanced.js";
|
|
6
|
-
import { CellDepInfoLike, ClientBlock, ClientBlockHeader, ClientFindCellsResponse, ClientFindTransactionsGroupedResponse, ClientFindTransactionsResponse, ClientIndexerSearchKeyLike, ClientIndexerSearchKeyTransactionLike, ClientTransactionResponse,
|
|
6
|
+
import { CellDepInfoLike, ClientBlock, ClientBlockHeader, ClientFindCellsResponse, ClientFindTransactionsGroupedResponse, ClientFindTransactionsResponse, ClientIndexerSearchKeyLike, ClientIndexerSearchKeyTransactionLike, ClientTransactionResponse, OutputsValidator, ScriptInfo } from "./clientTypes.js";
|
|
7
|
+
import { KnownScript } from "./knownScript.js";
|
|
7
8
|
/**
|
|
8
9
|
* @public
|
|
9
10
|
*/
|
|
@@ -19,18 +20,28 @@ export declare abstract class Client {
|
|
|
19
20
|
mean: Num;
|
|
20
21
|
median: Num;
|
|
21
22
|
}>;
|
|
22
|
-
getFeeRate(blockRange?: NumLike
|
|
23
|
+
getFeeRate(blockRange?: NumLike, options?: {
|
|
24
|
+
maxFeeRate?: NumLike;
|
|
25
|
+
}): Promise<Num>;
|
|
23
26
|
abstract getTip(): Promise<Num>;
|
|
24
27
|
abstract getTipHeader(verbosity?: number | null): Promise<ClientBlockHeader>;
|
|
25
|
-
abstract
|
|
26
|
-
abstract
|
|
27
|
-
abstract
|
|
28
|
-
abstract
|
|
28
|
+
abstract getBlockByNumberNoCache(blockNumber: NumLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
29
|
+
abstract getBlockByHashNoCache(blockHash: HexLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
30
|
+
abstract getHeaderByNumberNoCache(blockNumber: NumLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
31
|
+
abstract getHeaderByHashNoCache(blockHash: HexLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
32
|
+
getBlockByNumber(blockNumber: NumLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
33
|
+
getBlockByHash(blockHash: HexLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
34
|
+
getHeaderByNumber(blockNumber: NumLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
35
|
+
getHeaderByHash(blockHash: HexLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
29
36
|
abstract estimateCycles(transaction: TransactionLike): Promise<Num>;
|
|
30
37
|
abstract sendTransactionDry(transaction: TransactionLike, validator?: OutputsValidator): Promise<Num>;
|
|
31
38
|
abstract sendTransactionNoCache(transaction: TransactionLike, validator?: OutputsValidator): Promise<Hex>;
|
|
32
39
|
abstract getTransactionNoCache(txHash: HexLike): Promise<ClientTransactionResponse | undefined>;
|
|
33
40
|
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
41
|
+
getCellWithHeader(outPointLike: OutPointLike): Promise<{
|
|
42
|
+
cell: Cell;
|
|
43
|
+
header?: ClientBlockHeader;
|
|
44
|
+
} | undefined>;
|
|
34
45
|
abstract getCellLiveNoCache(outPointLike: OutPointLike, withData?: boolean | null, includeTxPool?: boolean | null): Promise<Cell | undefined>;
|
|
35
46
|
getCellLive(outPointLike: OutPointLike, withData?: boolean | null, includeTxPool?: boolean | null): Promise<Cell | undefined>;
|
|
36
47
|
abstract findCellsPagedNoCache(key: ClientIndexerSearchKeyLike, order?: "asc" | "desc", limit?: NumLike, after?: string): Promise<ClientFindCellsResponse>;
|
|
@@ -38,6 +49,7 @@ export declare abstract class Client {
|
|
|
38
49
|
findCellsOnChain(key: ClientIndexerSearchKeyLike, order?: "asc" | "desc", limit?: number): AsyncGenerator<Cell>;
|
|
39
50
|
/**
|
|
40
51
|
* Find cells by search key designed for collectable cells.
|
|
52
|
+
* The result also includes cached cells, the order param only works for cells fetched from RPC.
|
|
41
53
|
*
|
|
42
54
|
* @param keyLike - The search key.
|
|
43
55
|
* @returns A async generator for yielding cells.
|
|
@@ -70,8 +82,19 @@ export declare abstract class Client {
|
|
|
70
82
|
abstract getCellsCapacity(key: ClientIndexerSearchKeyLike): Promise<Num>;
|
|
71
83
|
getBalanceSingle(lock: ScriptLike): Promise<Num>;
|
|
72
84
|
getBalance(locks: ScriptLike[]): Promise<Num>;
|
|
73
|
-
sendTransaction(transaction: TransactionLike, validator?: OutputsValidator
|
|
85
|
+
sendTransaction(transaction: TransactionLike, validator?: OutputsValidator, options?: {
|
|
86
|
+
maxFeeRate?: NumLike;
|
|
87
|
+
}): Promise<Hex>;
|
|
74
88
|
getTransaction(txHashLike: HexLike): Promise<ClientTransactionResponse | undefined>;
|
|
89
|
+
/**
|
|
90
|
+
* This method gets specified transaction with its block header (if existed).
|
|
91
|
+
* This is mainly for caching because we need the header to test if we can safely trust the cached tx status.
|
|
92
|
+
* @param txHashLike
|
|
93
|
+
*/
|
|
94
|
+
getTransactionWithHeader(txHashLike: HexLike): Promise<{
|
|
95
|
+
transaction: ClientTransactionResponse;
|
|
96
|
+
header?: ClientBlockHeader;
|
|
97
|
+
} | undefined>;
|
|
75
98
|
waitTransaction(txHash: HexLike, confirmations?: number, timeout?: number, interval?: number): Promise<ClientTransactionResponse | undefined>;
|
|
76
99
|
}
|
|
77
100
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EAEP,YAAY,EACZ,UAAU,EAEV,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|