@ckb-ccc/core 0.0.13-alpha.7 → 0.0.13-alpha.8
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 +12 -0
- package/dist/client/cache/cache.d.ts +29 -9
- package/dist/client/cache/cache.d.ts.map +1 -1
- package/dist/client/cache/cache.js +43 -1
- package/dist/client/cache/memory.d.ts +10 -6
- package/dist/client/cache/memory.d.ts.map +1 -1
- package/dist/client/cache/memory.js +49 -39
- package/dist/client/clientTypes.d.ts +25 -2
- package/dist/client/clientTypes.d.ts.map +1 -1
- package/dist/client/clientTypes.js +26 -1
- package/dist/client/jsonRpc/index.d.ts.map +1 -1
- package/dist/client/jsonRpc/index.js +24 -1
- package/dist/fixedPoint/index.d.ts +3 -3
- package/dist/fixedPoint/index.js +3 -3
- package/dist.commonjs/client/cache/cache.d.ts +29 -9
- package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
- package/dist.commonjs/client/cache/cache.js +45 -0
- package/dist.commonjs/client/cache/memory.d.ts +10 -6
- package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.js +49 -39
- package/dist.commonjs/client/clientTypes.d.ts +25 -2
- package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.js +33 -5
- package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/index.js +40 -17
- package/dist.commonjs/fixedPoint/index.d.ts +3 -3
- package/dist.commonjs/fixedPoint/index.js +3 -3
- package/package.json +1 -1
- package/src/client/cache/cache.ts +58 -13
- package/src/client/cache/memory.ts +60 -52
- package/src/client/clientTypes.ts +54 -3
- package/src/client/jsonRpc/index.ts +44 -2
- package/src/fixedPoint/index.ts +3 -3
|
@@ -3,75 +3,85 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ClientCacheMemory = void 0;
|
|
4
4
|
const index_js_1 = require("../../ckb/index.js");
|
|
5
5
|
const index_js_2 = require("../../hex/index.js");
|
|
6
|
+
const cache_js_1 = require("./cache.js");
|
|
6
7
|
const memory_advanced_js_1 = require("./memory.advanced.js");
|
|
7
|
-
class ClientCacheMemory {
|
|
8
|
+
class ClientCacheMemory extends cache_js_1.ClientCache {
|
|
8
9
|
constructor() {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
super(...arguments);
|
|
11
|
+
/**
|
|
12
|
+
* OutPoint => [isLive, Cell | OutPoint]
|
|
13
|
+
*/
|
|
14
|
+
this.cells = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* TX Hash => Transaction
|
|
17
|
+
*/
|
|
18
|
+
this.knownTransactions = new Map();
|
|
13
19
|
}
|
|
14
20
|
async markUsable(...cellLikes) {
|
|
15
21
|
cellLikes.flat().forEach((cellLike) => {
|
|
16
22
|
const cell = index_js_1.Cell.from(cellLike).clone();
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
|
|
20
|
-
if (index !== -1) {
|
|
21
|
-
this.unusableOutPoints.splice(index, 1);
|
|
22
|
-
}
|
|
23
|
+
const outPointStr = (0, index_js_2.hexFrom)(cell.outPoint.toBytes());
|
|
24
|
+
this.cells.set(outPointStr, [true, cell]);
|
|
23
25
|
});
|
|
24
26
|
}
|
|
25
27
|
async markUnusable(...outPointLikes) {
|
|
26
28
|
outPointLikes.flat().forEach((outPointLike) => {
|
|
27
29
|
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
|
|
30
|
+
const outPointStr = (0, index_js_2.hexFrom)(outPoint.toBytes());
|
|
31
|
+
const existed = this.cells.get(outPointStr);
|
|
32
|
+
if (existed) {
|
|
33
|
+
existed[0] = false;
|
|
34
|
+
return;
|
|
32
35
|
}
|
|
36
|
+
this.cells.set(outPointStr, [false, { outPoint }]);
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
|
-
async
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
await Promise.all(tx.inputs.map((i) => this.markUnusable(i.previousOutput)));
|
|
40
|
-
await Promise.all(tx.outputs.map((o, i) => this.markUsable({
|
|
41
|
-
cellOutput: o,
|
|
42
|
-
outputData: tx.outputsData[i],
|
|
43
|
-
outPoint: {
|
|
44
|
-
txHash,
|
|
45
|
-
index: i,
|
|
46
|
-
},
|
|
47
|
-
})));
|
|
48
|
-
}));
|
|
39
|
+
async clear() {
|
|
40
|
+
for (const val of this.cells.values()) {
|
|
41
|
+
val[0] = undefined;
|
|
42
|
+
}
|
|
49
43
|
}
|
|
50
44
|
async *findCells(keyLike) {
|
|
51
|
-
for (const cell of this.
|
|
45
|
+
for (const [isLive, cell] of this.cells.values()) {
|
|
46
|
+
if (!isLive) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
52
49
|
if (!(0, memory_advanced_js_1.filterCell)(keyLike, cell)) {
|
|
53
50
|
continue;
|
|
54
51
|
}
|
|
55
|
-
yield cell;
|
|
52
|
+
yield cell.clone();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async getCell(outPointLike) {
|
|
56
|
+
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
57
|
+
const cell = this.cells.get((0, index_js_2.hexFrom)(outPoint.toBytes()))?.[1];
|
|
58
|
+
if (cell && cell.cellOutput && cell.outputData) {
|
|
59
|
+
return index_js_1.Cell.from(cell.clone());
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
async isUnusable(outPointLike) {
|
|
59
63
|
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
60
|
-
return this.
|
|
64
|
+
return !(this.cells.get((0, index_js_2.hexFrom)(outPoint.toBytes()))?.[0] ?? true);
|
|
61
65
|
}
|
|
62
66
|
async recordTransactions(...transactions) {
|
|
63
|
-
|
|
67
|
+
transactions.flat().map((txLike) => {
|
|
68
|
+
const tx = index_js_1.Transaction.from(txLike);
|
|
69
|
+
this.knownTransactions.set(tx.hash(), tx);
|
|
70
|
+
});
|
|
64
71
|
}
|
|
65
72
|
async getTransaction(txHashLike) {
|
|
66
73
|
const txHash = (0, index_js_2.hexFrom)(txHashLike);
|
|
67
|
-
return this.knownTransactions.
|
|
74
|
+
return this.knownTransactions.get(txHash)?.clone();
|
|
68
75
|
}
|
|
69
76
|
async recordCells(...cells) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
cells.flat().map((cellLike) => {
|
|
78
|
+
const cell = index_js_1.Cell.from(cellLike);
|
|
79
|
+
const outPointStr = (0, index_js_2.hexFrom)(cell.outPoint.toBytes());
|
|
80
|
+
if (this.cells.get(outPointStr)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.cells.set(outPointStr, [undefined, cell]);
|
|
84
|
+
});
|
|
75
85
|
}
|
|
76
86
|
}
|
|
77
87
|
exports.ClientCacheMemory = ClientCacheMemory;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Cell, Epoch, Script, Transaction } from "../ckb/index.js";
|
|
2
|
-
import { Hex } from "../hex/index.js";
|
|
1
|
+
import { Cell, Epoch, OutPoint, OutPointLike, Script, Transaction } from "../ckb/index.js";
|
|
2
|
+
import { Hex, HexLike } from "../hex/index.js";
|
|
3
3
|
import { Num, NumLike } from "../num/index.js";
|
|
4
4
|
import { ClientCollectableSearchKeyFilterLike, ClientCollectableSearchKeyLike } from "./clientTypes.advanced.js";
|
|
5
5
|
/**
|
|
@@ -167,4 +167,27 @@ export type ClientBlock = {
|
|
|
167
167
|
transactions: Transaction[];
|
|
168
168
|
uncles: ClientBlockUncle[];
|
|
169
169
|
};
|
|
170
|
+
export interface ErrorClientBaseLike {
|
|
171
|
+
message: string;
|
|
172
|
+
code: number;
|
|
173
|
+
data: string;
|
|
174
|
+
}
|
|
175
|
+
export declare class ErrorClientBase extends Error {
|
|
176
|
+
readonly message: string;
|
|
177
|
+
readonly code: number;
|
|
178
|
+
readonly data: string;
|
|
179
|
+
constructor(origin: ErrorClientBaseLike);
|
|
180
|
+
}
|
|
181
|
+
export declare class ErrorClientResolveUnknown extends ErrorClientBase {
|
|
182
|
+
readonly outPoint: OutPoint;
|
|
183
|
+
constructor(origin: ErrorClientBaseLike, outPointLike: OutPointLike);
|
|
184
|
+
}
|
|
185
|
+
export declare class ErrorClientVerification extends ErrorClientBase {
|
|
186
|
+
readonly source: "lock" | "inputType" | "outputType";
|
|
187
|
+
readonly errorCode: number;
|
|
188
|
+
readonly scriptHashType: "data" | "type";
|
|
189
|
+
readonly sourceIndex: Num;
|
|
190
|
+
readonly scriptCodeHash: Hex;
|
|
191
|
+
constructor(origin: ErrorClientBaseLike, source: "lock" | "inputType" | "outputType", sourceIndex: NumLike, errorCode: number, scriptHashType: "data" | "type", scriptCodeHash: HexLike);
|
|
192
|
+
}
|
|
170
193
|
//# sourceMappingURL=clientTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientTypes.d.ts","sourceRoot":"","sources":["../../src/client/clientTypes.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"clientTypes.d.ts","sourceRoot":"","sources":["../../src/client/clientTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,WAAW,EACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AAExD,OAAO,EACL,oCAAoC,EACpC,8BAA8B,EAE/B,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,yBAAyB,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,SAAS,GACT,UAAU,GACV,WAAW,GACX,SAAS,GACT,UAAU,CAAC;AACf;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAC1C,oCAAoC,GAAG;IACrC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC,CAAC;AACJ;;GAEG;AACH,qBAAa,4BAA4B;IAE9B,MAAM,EAAE,MAAM,GAAG,SAAS;IAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;IACtC,UAAU,EAAE,GAAG,GAAG,SAAS;IAC3B,oBAAoB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;IAC1C,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;IAC3C,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;gBANlC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,EACtC,UAAU,EAAE,GAAG,GAAG,SAAS,EAC3B,oBAAoB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,EAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,EAC1C,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,EAC3C,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;IAG3C,MAAM,CAAC,IAAI,CACT,UAAU,EAAE,gCAAgC,GAC3C,4BAA4B;CAWhC;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,GAAG;IACxE,MAAM,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,qBAAa,sBAAsB;IAExB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM,GAAG,MAAM;IAC3B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS;IAChD,MAAM,EAAE,4BAA4B,GAAG,SAAS;IAChD,QAAQ,EAAE,OAAO,GAAG,SAAS;gBAJ7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,EAChD,MAAM,EAAE,4BAA4B,GAAG,SAAS,EAChD,QAAQ,EAAE,OAAO,GAAG,SAAS;IAGtC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,GAAG,sBAAsB;CASzE;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qCAAqC,GAAG,IAAI,CACtD,8BAA8B,EAC9B,UAAU,CACX,GAAG;IACF,MAAM,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,qBAAa,iCAAiC;IAEnC,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM,GAAG,MAAM;IAC3B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS;IAChD,MAAM,EAAE,4BAA4B,GAAG,SAAS;IAChD,kBAAkB,EAAE,OAAO,GAAG,SAAS;gBAJvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,EAChD,MAAM,EAAE,4BAA4B,GAAG,SAAS,EAChD,kBAAkB,EAAE,OAAO,GAAG,SAAS;IAGhD,MAAM,CAAC,IAAI,CACT,OAAO,EAAE,qCAAqC,GAC7C,iCAAiC;CASrC;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE;QACZ,MAAM,EAAE,GAAG,CAAC;QACZ,WAAW,EAAE,GAAG,CAAC;QACjB,OAAO,EAAE,GAAG,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,GAAG,CAAC;KAChB,EAAE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qCAAqC,GAAG;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE;QACZ,MAAM,EAAE,GAAG,CAAC;QACZ,WAAW,EAAE,GAAG,CAAC;QACjB,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE;YACL,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,EAAE,GAAG,CAAC;SAChB,EAAE,CAAC;KACL,EAAE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,GAAG,CAAC;IACnB,GAAG,EAAE;QACH;;WAEG;QACH,CAAC,EAAE,GAAG,CAAC;QACP;;;WAGG;QACH,EAAE,EAAE,GAAG,CAAC;QACR;;;WAGG;QACH,CAAC,EAAE,GAAG,CAAC;QACP;;;WAGG;QACH,CAAC,EAAE,GAAG,CAAC;KACR,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC;IACf,gBAAgB,EAAE,GAAG,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,GAAG,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,MAAM,EAAE,mBAAmB;CAMxC;AAED,qBAAa,yBAA0B,SAAQ,eAAe;IAC5D,SAAgB,QAAQ,EAAE,QAAQ,CAAC;gBACvB,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY;CAIpE;AAED,qBAAa,uBAAwB,SAAQ,eAAe;aAMxC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY;aAE3C,SAAS,EAAE,MAAM;aACjB,cAAc,EAAE,MAAM,GAAG,MAAM;IARjD,SAAgB,WAAW,EAAE,GAAG,CAAC;IACjC,SAAgB,cAAc,EAAE,GAAG,CAAC;gBAGlC,MAAM,EAAE,mBAAmB,EACX,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,EAC3D,WAAW,EAAE,OAAO,EACJ,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GAAG,MAAM,EAC/C,cAAc,EAAE,OAAO;CAM1B"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClientIndexerSearchKeyTransaction = exports.ClientIndexerSearchKey = exports.ClientIndexerSearchKeyFilter = void 0;
|
|
3
|
+
exports.ErrorClientVerification = exports.ErrorClientResolveUnknown = exports.ErrorClientBase = exports.ClientIndexerSearchKeyTransaction = exports.ClientIndexerSearchKey = exports.ClientIndexerSearchKeyFilter = void 0;
|
|
4
4
|
const index_js_1 = require("../ckb/index.js");
|
|
5
5
|
const index_js_2 = require("../hex/index.js");
|
|
6
|
-
const index_js_3 = require("../
|
|
6
|
+
const index_js_3 = require("../num/index.js");
|
|
7
|
+
const index_js_4 = require("../utils/index.js");
|
|
7
8
|
const clientTypes_advanced_js_1 = require("./clientTypes.advanced.js");
|
|
8
9
|
/**
|
|
9
10
|
* @public
|
|
@@ -19,7 +20,7 @@ class ClientIndexerSearchKeyFilter {
|
|
|
19
20
|
this.blockRange = blockRange;
|
|
20
21
|
}
|
|
21
22
|
static from(filterLike) {
|
|
22
|
-
return new ClientIndexerSearchKeyFilter((0,
|
|
23
|
+
return new ClientIndexerSearchKeyFilter((0, index_js_4.apply)(index_js_1.Script.from, filterLike.script), (0, index_js_4.apply)(clientTypes_advanced_js_1.clientSearchKeyRangeFrom, filterLike.scriptLenRange), (0, index_js_4.apply)(index_js_2.hexFrom, filterLike.outputData), filterLike.outputDataSearchMode ?? undefined, (0, index_js_4.apply)(clientTypes_advanced_js_1.clientSearchKeyRangeFrom, filterLike.outputDataLenRange), (0, index_js_4.apply)(clientTypes_advanced_js_1.clientSearchKeyRangeFrom, filterLike.outputCapacityRange), (0, index_js_4.apply)(clientTypes_advanced_js_1.clientSearchKeyRangeFrom, filterLike.blockRange));
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
exports.ClientIndexerSearchKeyFilter = ClientIndexerSearchKeyFilter;
|
|
@@ -35,7 +36,7 @@ class ClientIndexerSearchKey {
|
|
|
35
36
|
this.withData = withData;
|
|
36
37
|
}
|
|
37
38
|
static from(keyLike) {
|
|
38
|
-
return new ClientIndexerSearchKey(index_js_1.Script.from(keyLike.script), keyLike.scriptType, keyLike.scriptSearchMode, (0,
|
|
39
|
+
return new ClientIndexerSearchKey(index_js_1.Script.from(keyLike.script), keyLike.scriptType, keyLike.scriptSearchMode, (0, index_js_4.apply)(ClientIndexerSearchKeyFilter.from, keyLike.filter), keyLike.withData ?? undefined);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
exports.ClientIndexerSearchKey = ClientIndexerSearchKey;
|
|
@@ -51,7 +52,34 @@ class ClientIndexerSearchKeyTransaction {
|
|
|
51
52
|
this.groupByTransaction = groupByTransaction;
|
|
52
53
|
}
|
|
53
54
|
static from(keyLike) {
|
|
54
|
-
return new ClientIndexerSearchKeyTransaction(index_js_1.Script.from(keyLike.script), keyLike.scriptType, keyLike.scriptSearchMode, (0,
|
|
55
|
+
return new ClientIndexerSearchKeyTransaction(index_js_1.Script.from(keyLike.script), keyLike.scriptType, keyLike.scriptSearchMode, (0, index_js_4.apply)(ClientIndexerSearchKeyFilter.from, keyLike.filter), keyLike.groupByTransaction ?? undefined);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
exports.ClientIndexerSearchKeyTransaction = ClientIndexerSearchKeyTransaction;
|
|
59
|
+
class ErrorClientBase extends Error {
|
|
60
|
+
constructor(origin) {
|
|
61
|
+
super(origin.message);
|
|
62
|
+
this.message = origin.message;
|
|
63
|
+
this.code = origin.code;
|
|
64
|
+
this.data = origin.data;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.ErrorClientBase = ErrorClientBase;
|
|
68
|
+
class ErrorClientResolveUnknown extends ErrorClientBase {
|
|
69
|
+
constructor(origin, outPointLike) {
|
|
70
|
+
super(origin);
|
|
71
|
+
this.outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.ErrorClientResolveUnknown = ErrorClientResolveUnknown;
|
|
75
|
+
class ErrorClientVerification extends ErrorClientBase {
|
|
76
|
+
constructor(origin, source, sourceIndex, errorCode, scriptHashType, scriptCodeHash) {
|
|
77
|
+
super(origin);
|
|
78
|
+
this.source = source;
|
|
79
|
+
this.errorCode = errorCode;
|
|
80
|
+
this.scriptHashType = scriptHashType;
|
|
81
|
+
this.sourceIndex = (0, index_js_3.numFrom)(sourceIndex);
|
|
82
|
+
this.scriptCodeHash = (0, index_js_2.hexFrom)(scriptCodeHash);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ErrorClientVerification = ErrorClientVerification;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/jsonRpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/jsonRpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EAKzB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EAGf,MAAM,2BAA2B,CAAC;AA2BnC;;;GAGG;AAEH,8BAAsB,aAAc,SAAQ,MAAM;IAW9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC;;;;;OAKG;gBAGgB,IAAI,EAAE,MAAM,EAC7B,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE;IAOpD;;;;OAIG;IAEH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;OAIG;IAEH,MAAM,QAIK,QAAQ,GAAG,CAAC,CAAC;IAExB;;;;;OAKG;IACH,YAAY,oGAEgB;IAE5B;;;;;;;OAOG;IACH,gBAAgB,yKAIgB;IAEhC;;;;;;;OAOG;IACH,cAAc,mMAEgB;IAE9B;;;;;;OAMG;IACH,iBAAiB,sIAIgB;IAEjC;;;;;;OAMG;IACH,eAAe,gKAEgB;IAE/B;;;;;OAKG;IACH,cAAc,oDAIgB;IAE9B;;;;;;OAMG;IAEH,kBAAkB,8FAIgB;IAElC;;;;;;OAMG;IAEH,sBAAsB,gBAKP,eAAe,cAChB,gBAAgB,GAAG,SAAS,KACrC,QAAQ,GAAG,CAAC,CAAC;IAElB;;;;;OAKG;IAEH,qBAAqB,WAIP,OAAO,KAAK,QAAQ,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAEzE;;;;;;;;OAQG;IAEH,qBAAqB,QASd,0BAA0B,UACvB,KAAK,GAAG,MAAM,UACd,OAAO,UACP,MAAM,KACX,QAAQ,uBAAuB,CAAC,CAAC;IAEtC;;;;;;;;OAQG;IAEH,qBAAqB;;;;;;;;MAQgB;IAErC;;;;;OAKG;IAEH,gBAAgB,QAIL,0BAA0B,KAAK,QAAQ,GAAG,CAAC,CAAC;IAEvD;;;;;;;OAOG;IAEH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE,EACrD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,GACnC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC;IAyD1C;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAerD;;;;;;OAMG;IAEH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc;CAQpE"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClientJsonRpc = void 0;
|
|
4
|
-
const index_js_1 = require("../../
|
|
5
|
-
const index_js_2 = require("../../
|
|
6
|
-
const index_js_3 = require("../../
|
|
4
|
+
const index_js_1 = require("../../ckb/index.js");
|
|
5
|
+
const index_js_2 = require("../../hex/index.js");
|
|
6
|
+
const index_js_3 = require("../../num/index.js");
|
|
7
|
+
const index_js_4 = require("../../utils/index.js");
|
|
7
8
|
const client_js_1 = require("../client.js");
|
|
9
|
+
const clientTypes_js_1 = require("../clientTypes.js");
|
|
8
10
|
const advanced_js_1 = require("../transports/advanced.js");
|
|
9
11
|
const advanced_js_2 = require("./advanced.js");
|
|
10
12
|
/**
|
|
@@ -45,14 +47,14 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
45
47
|
*
|
|
46
48
|
* @returns Tip block number
|
|
47
49
|
*/
|
|
48
|
-
this.getTip = this.buildSender("get_tip_block_number", [],
|
|
50
|
+
this.getTip = this.buildSender("get_tip_block_number", [], index_js_3.numFrom);
|
|
49
51
|
/**
|
|
50
52
|
* Get tip block header
|
|
51
53
|
*
|
|
52
54
|
* @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
|
|
53
55
|
* @returns BlockHeader
|
|
54
56
|
*/
|
|
55
|
-
this.getTipHeader = this.buildSender("get_tip_header", [], (b) => (0,
|
|
57
|
+
this.getTipHeader = this.buildSender("get_tip_header", [], (b) => (0, index_js_4.apply)(advanced_js_2.JsonRpcTransformers.blockHeaderTo, b));
|
|
56
58
|
/**
|
|
57
59
|
* Get block by block number
|
|
58
60
|
*
|
|
@@ -61,7 +63,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
61
63
|
* @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
|
|
62
64
|
* @returns Block
|
|
63
65
|
*/
|
|
64
|
-
this.getBlockByNumber = this.buildSender("get_block_by_number", [(v) => (0,
|
|
66
|
+
this.getBlockByNumber = this.buildSender("get_block_by_number", [(v) => (0, index_js_3.numToHex)((0, index_js_3.numFrom)(v))], (b) => (0, index_js_4.apply)(advanced_js_2.JsonRpcTransformers.blockTo, b));
|
|
65
67
|
/**
|
|
66
68
|
* Get block by block hash
|
|
67
69
|
*
|
|
@@ -70,7 +72,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
70
72
|
* @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
|
|
71
73
|
* @returns Block
|
|
72
74
|
*/
|
|
73
|
-
this.getBlockByHash = this.buildSender("get_block", [
|
|
75
|
+
this.getBlockByHash = this.buildSender("get_block", [index_js_2.hexFrom], (b) => (0, index_js_4.apply)(advanced_js_2.JsonRpcTransformers.blockTo, b));
|
|
74
76
|
/**
|
|
75
77
|
* Get header by block number
|
|
76
78
|
*
|
|
@@ -78,7 +80,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
78
80
|
* @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
|
|
79
81
|
* @returns BlockHeader
|
|
80
82
|
*/
|
|
81
|
-
this.getHeaderByNumber = this.buildSender("get_header_by_number", [(v) => (0,
|
|
83
|
+
this.getHeaderByNumber = this.buildSender("get_header_by_number", [(v) => (0, index_js_3.numToHex)((0, index_js_3.numFrom)(v))], (b) => (0, index_js_4.apply)(advanced_js_2.JsonRpcTransformers.blockHeaderTo, b));
|
|
82
84
|
/**
|
|
83
85
|
* Get header by block hash
|
|
84
86
|
*
|
|
@@ -86,14 +88,14 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
86
88
|
* @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
|
|
87
89
|
* @returns BlockHeader
|
|
88
90
|
*/
|
|
89
|
-
this.getHeaderByHash = this.buildSender("get_header", [
|
|
91
|
+
this.getHeaderByHash = this.buildSender("get_header", [index_js_2.hexFrom], (b) => (0, index_js_4.apply)(advanced_js_2.JsonRpcTransformers.blockHeaderTo, b));
|
|
90
92
|
/**
|
|
91
93
|
* Estimate cycles of a transaction.
|
|
92
94
|
*
|
|
93
95
|
* @param transaction - The transaction to estimate.
|
|
94
96
|
* @returns Consumed cycles
|
|
95
97
|
*/
|
|
96
|
-
this.estimateCycles = this.buildSender("estimate_cycles", [advanced_js_2.JsonRpcTransformers.transactionFrom], ({ cycles }) => (0,
|
|
98
|
+
this.estimateCycles = this.buildSender("estimate_cycles", [advanced_js_2.JsonRpcTransformers.transactionFrom], ({ cycles }) => (0, index_js_3.numFrom)(cycles));
|
|
97
99
|
/**
|
|
98
100
|
* Test a transaction.
|
|
99
101
|
*
|
|
@@ -101,7 +103,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
101
103
|
* @param validator - "passthrough": Disable validation. "well_known_scripts_only": Only accept well known scripts in the transaction.
|
|
102
104
|
* @returns Consumed cycles
|
|
103
105
|
*/
|
|
104
|
-
this.sendTransactionDry = this.buildSender("test_tx_pool_accept", [advanced_js_2.JsonRpcTransformers.transactionFrom], ({ cycles }) => (0,
|
|
106
|
+
this.sendTransactionDry = this.buildSender("test_tx_pool_accept", [advanced_js_2.JsonRpcTransformers.transactionFrom], ({ cycles }) => (0, index_js_3.numFrom)(cycles));
|
|
105
107
|
/**
|
|
106
108
|
* Send a transaction to node.
|
|
107
109
|
*
|
|
@@ -109,14 +111,14 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
109
111
|
* @param validator - "passthrough": Disable validation. "well_known_scripts_only": Only accept well known scripts in the transaction.
|
|
110
112
|
* @returns Transaction hash.
|
|
111
113
|
*/
|
|
112
|
-
this.sendTransactionNoCache = this.buildSender("send_transaction", [advanced_js_2.JsonRpcTransformers.transactionFrom],
|
|
114
|
+
this.sendTransactionNoCache = this.buildSender("send_transaction", [advanced_js_2.JsonRpcTransformers.transactionFrom], index_js_2.hexFrom);
|
|
113
115
|
/**
|
|
114
116
|
* Get a transaction from node.
|
|
115
117
|
*
|
|
116
118
|
* @param txHash - The hash of the transaction.
|
|
117
119
|
* @returns The transaction with status.
|
|
118
120
|
*/
|
|
119
|
-
this.getTransactionNoCache = this.buildSender("get_transaction", [
|
|
121
|
+
this.getTransactionNoCache = this.buildSender("get_transaction", [index_js_2.hexFrom], advanced_js_2.JsonRpcTransformers.transactionResponseTo);
|
|
120
122
|
/**
|
|
121
123
|
* find cells from node.
|
|
122
124
|
*
|
|
@@ -129,7 +131,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
129
131
|
this.findCellsPagedNoCache = this.buildSender("get_cells", [
|
|
130
132
|
advanced_js_2.JsonRpcTransformers.indexerSearchKeyFrom,
|
|
131
133
|
(order) => order ?? "asc",
|
|
132
|
-
(limit) => (0,
|
|
134
|
+
(limit) => (0, index_js_3.numToHex)(limit ?? 10),
|
|
133
135
|
], advanced_js_2.JsonRpcTransformers.findCellsResponseTo);
|
|
134
136
|
/**
|
|
135
137
|
* find transactions from node.
|
|
@@ -143,7 +145,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
143
145
|
this.findTransactionsPaged = this.buildSender("get_transactions", [
|
|
144
146
|
advanced_js_2.JsonRpcTransformers.indexerSearchKeyTransactionFrom,
|
|
145
147
|
(order) => order ?? "asc",
|
|
146
|
-
(limit) => (0,
|
|
148
|
+
(limit) => (0, index_js_3.numToHex)(limit ?? 10),
|
|
147
149
|
], advanced_js_2.JsonRpcTransformers.findTransactionsResponseTo);
|
|
148
150
|
/**
|
|
149
151
|
* get cells capacity from node.
|
|
@@ -151,7 +153,7 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
151
153
|
* @param key - The search key of cells.
|
|
152
154
|
* @returns The sum of cells capacity.
|
|
153
155
|
*/
|
|
154
|
-
this.getCellsCapacity = this.buildSender("get_cells_capacity", [advanced_js_2.JsonRpcTransformers.indexerSearchKeyFrom], ({ capacity }) => (0,
|
|
156
|
+
this.getCellsCapacity = this.buildSender("get_cells_capacity", [advanced_js_2.JsonRpcTransformers.indexerSearchKeyFrom], ({ capacity }) => (0, index_js_3.numFrom)(capacity));
|
|
155
157
|
this.transport = (0, advanced_js_1.transportFromUri)(url_, config);
|
|
156
158
|
}
|
|
157
159
|
/**
|
|
@@ -175,7 +177,28 @@ class ClientJsonRpc extends client_js_1.Client {
|
|
|
175
177
|
const payload = ClientJsonRpc.buildPayload(rpcMethod, await Promise.all(req
|
|
176
178
|
.concat(Array.from(new Array(Math.max(inTransformers.length - req.length, 0))))
|
|
177
179
|
.map((v, i) => transform(v, inTransformers[i]))));
|
|
178
|
-
|
|
180
|
+
try {
|
|
181
|
+
return transform(await this.send(payload), outTransformer);
|
|
182
|
+
}
|
|
183
|
+
catch (errAny) {
|
|
184
|
+
if (typeof errAny !== "object" || errAny === null) {
|
|
185
|
+
throw errAny;
|
|
186
|
+
}
|
|
187
|
+
const err = errAny;
|
|
188
|
+
const unknownOutPointMatch = err.data.match(new RegExp("Resolve\\(Unknown\\(OutPoint\\((0x.*)\\)\\)\\)"))?.[1];
|
|
189
|
+
if (unknownOutPointMatch) {
|
|
190
|
+
throw new clientTypes_js_1.ErrorClientResolveUnknown(err, index_js_1.OutPoint.fromBytes(unknownOutPointMatch));
|
|
191
|
+
}
|
|
192
|
+
const verificationFailedMatch = err.data.match(new RegExp("Verification\\(Error { kind: Script, inner: TransactionScriptError { source: (Inputs|Outputs)\\[([0-9]*)\\].(Lock|Type), cause: ValidationFailure: see error code (-?[0-9])* on page https://nervosnetwork\\.github\\.io/ckb-script-error-codes/by-(type|data)-hash/(.*)\\.html"));
|
|
193
|
+
if (verificationFailedMatch) {
|
|
194
|
+
throw new clientTypes_js_1.ErrorClientVerification(err, verificationFailedMatch[3] === "Lock"
|
|
195
|
+
? "lock"
|
|
196
|
+
: verificationFailedMatch[1] === "Inputs"
|
|
197
|
+
? "inputType"
|
|
198
|
+
: "outputType", verificationFailedMatch[2], Number(verificationFailedMatch[4]), verificationFailedMatch[5] === "data" ? "data" : "type", verificationFailedMatch[6]);
|
|
199
|
+
}
|
|
200
|
+
throw new clientTypes_js_1.ErrorClientBase(err);
|
|
201
|
+
}
|
|
179
202
|
};
|
|
180
203
|
}
|
|
181
204
|
/**
|
|
@@ -20,8 +20,8 @@ export type FixedPointLike = bigint | string | number;
|
|
|
20
20
|
* @example
|
|
21
21
|
* ```typescript
|
|
22
22
|
* const str = fixedPointToString(123456789n, 8); // Outputs "1.23456789"
|
|
23
|
-
* const strFromString = fixedPointToString("
|
|
24
|
-
* const strFromNumber = fixedPointToString(
|
|
23
|
+
* const strFromString = fixedPointToString("1.23456789", 8); // Outputs "1.23456789"
|
|
24
|
+
* const strFromNumber = fixedPointToString(1.23456789, 8); // Outputs "1.23456789"
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
27
|
export declare function fixedPointToString(val: FixedPointLike, decimals?: number): string;
|
|
@@ -35,7 +35,7 @@ export declare function fixedPointToString(val: FixedPointLike, decimals?: numbe
|
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```typescript
|
|
38
|
-
* const fixedPoint = fixedPointFrom(
|
|
38
|
+
* const fixedPoint = fixedPointFrom(123456789n, 8); // Outputs 123456789n
|
|
39
39
|
* const fixedPointFromString = fixedPointFrom("1.23456789", 8); // Outputs 123456789n
|
|
40
40
|
* const fixedPointFromNumber = fixedPointFrom(1.23456789, 8); // Outputs 123456789n
|
|
41
41
|
* ```
|
|
@@ -16,8 +16,8 @@ exports.One = exports.Zero = exports.fixedPointFrom = exports.fixedPointToString
|
|
|
16
16
|
* @example
|
|
17
17
|
* ```typescript
|
|
18
18
|
* const str = fixedPointToString(123456789n, 8); // Outputs "1.23456789"
|
|
19
|
-
* const strFromString = fixedPointToString("
|
|
20
|
-
* const strFromNumber = fixedPointToString(
|
|
19
|
+
* const strFromString = fixedPointToString("1.23456789", 8); // Outputs "1.23456789"
|
|
20
|
+
* const strFromNumber = fixedPointToString(1.23456789, 8); // Outputs "1.23456789"
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
function fixedPointToString(val, decimals = 8) {
|
|
@@ -43,7 +43,7 @@ exports.fixedPointToString = fixedPointToString;
|
|
|
43
43
|
*
|
|
44
44
|
* @example
|
|
45
45
|
* ```typescript
|
|
46
|
-
* const fixedPoint = fixedPointFrom(
|
|
46
|
+
* const fixedPoint = fixedPointFrom(123456789n, 8); // Outputs 123456789n
|
|
47
47
|
* const fixedPointFromString = fixedPointFrom("1.23456789", 8); // Outputs 123456789n
|
|
48
48
|
* const fixedPointFromNumber = fixedPointFrom(1.23456789, 8); // Outputs 123456789n
|
|
49
49
|
* ```
|
package/package.json
CHANGED
|
@@ -8,23 +8,68 @@ import {
|
|
|
8
8
|
import { HexLike } from "../../hex/index.js";
|
|
9
9
|
import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
|
|
10
10
|
|
|
11
|
-
export
|
|
12
|
-
markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
13
|
-
markUnusable(
|
|
11
|
+
export abstract class ClientCache {
|
|
12
|
+
abstract markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
13
|
+
abstract markUnusable(
|
|
14
14
|
...outPointLike: (OutPointLike | OutPointLike[])[]
|
|
15
15
|
): Promise<void>;
|
|
16
|
-
markTransactions(
|
|
16
|
+
async markTransactions(
|
|
17
17
|
...transactionLike: (TransactionLike | TransactionLike[])[]
|
|
18
|
-
): Promise<void
|
|
18
|
+
): Promise<void> {
|
|
19
|
+
await Promise.all([
|
|
20
|
+
this.recordTransactions(...transactionLike),
|
|
21
|
+
...transactionLike.flat().map((transactionLike) => {
|
|
22
|
+
const tx = Transaction.from(transactionLike);
|
|
23
|
+
const txHash = tx.hash();
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
return Promise.all([
|
|
26
|
+
...tx.inputs.map((i) => this.markUnusable(i.previousOutput)),
|
|
27
|
+
...tx.outputs.map((o, i) =>
|
|
28
|
+
this.markUsable({
|
|
29
|
+
cellOutput: o,
|
|
30
|
+
outputData: tx.outputsData[i],
|
|
31
|
+
outPoint: {
|
|
32
|
+
txHash,
|
|
33
|
+
index: i,
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
),
|
|
37
|
+
]);
|
|
38
|
+
}),
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
41
|
+
abstract clear(): Promise<void>;
|
|
42
|
+
abstract findCells(
|
|
43
|
+
filter: ClientCollectableSearchKeyLike,
|
|
44
|
+
): AsyncGenerator<Cell>;
|
|
45
|
+
/**
|
|
46
|
+
* Get a known cell by out point
|
|
47
|
+
* @param _outPoint
|
|
48
|
+
*/
|
|
49
|
+
abstract getCell(_outPoint: OutPointLike): Promise<Cell | undefined>;
|
|
50
|
+
abstract isUnusable(outPointLike: OutPointLike): Promise<boolean>;
|
|
21
51
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Record known transactions
|
|
54
|
+
* Implement this method to enable transactions query caching
|
|
55
|
+
* @param _transactions
|
|
56
|
+
*/
|
|
57
|
+
async recordTransactions(
|
|
58
|
+
..._transactions: (TransactionLike | TransactionLike[])[]
|
|
59
|
+
): Promise<void> {}
|
|
60
|
+
/**
|
|
61
|
+
* Get a known transaction by hash
|
|
62
|
+
* Implement this method to enable transactions query caching
|
|
63
|
+
* @param _txHash
|
|
64
|
+
*/
|
|
65
|
+
async getTransaction(_txHash: HexLike): Promise<Transaction | undefined> {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
26
68
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Record known cells
|
|
71
|
+
* Implement this method to enable cells query caching
|
|
72
|
+
* @param _cells
|
|
73
|
+
*/
|
|
74
|
+
async recordCells(..._cells: (CellLike | CellLike[])[]): Promise<void> {}
|
|
30
75
|
}
|