@ckb-ccc/core 0.0.13-alpha.2 → 0.0.13-alpha.4

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.
Files changed (47) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/client/cache/cache.d.ts +3 -2
  3. package/dist/client/cache/cache.d.ts.map +1 -1
  4. package/dist/client/cache/memory.d.ts +3 -2
  5. package/dist/client/cache/memory.d.ts.map +1 -1
  6. package/dist/client/cache/memory.js +34 -15
  7. package/dist/client/client.d.ts +3 -1
  8. package/dist/client/client.d.ts.map +1 -1
  9. package/dist/client/client.js +3 -11
  10. package/dist/client/clientPublicMainnet.d.ts +12 -4
  11. package/dist/client/clientPublicMainnet.d.ts.map +1 -1
  12. package/dist/client/clientPublicMainnet.js +8 -4
  13. package/dist/client/clientPublicTestnet.d.ts +12 -4
  14. package/dist/client/clientPublicTestnet.d.ts.map +1 -1
  15. package/dist/client/clientPublicTestnet.js +8 -4
  16. package/dist/client/jsonRpc/index.d.ts +5 -2
  17. package/dist/client/jsonRpc/index.d.ts.map +1 -1
  18. package/dist/client/jsonRpc/index.js +4 -5
  19. package/dist/client/transports/webSocket.d.ts.map +1 -1
  20. package/dist/client/transports/webSocket.js +1 -0
  21. package/dist.commonjs/client/cache/cache.d.ts +3 -2
  22. package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
  23. package/dist.commonjs/client/cache/memory.d.ts +3 -2
  24. package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
  25. package/dist.commonjs/client/cache/memory.js +34 -15
  26. package/dist.commonjs/client/client.d.ts +3 -1
  27. package/dist.commonjs/client/client.d.ts.map +1 -1
  28. package/dist.commonjs/client/client.js +3 -11
  29. package/dist.commonjs/client/clientPublicMainnet.d.ts +12 -4
  30. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
  31. package/dist.commonjs/client/clientPublicMainnet.js +12 -5
  32. package/dist.commonjs/client/clientPublicTestnet.d.ts +12 -4
  33. package/dist.commonjs/client/clientPublicTestnet.d.ts.map +1 -1
  34. package/dist.commonjs/client/clientPublicTestnet.js +12 -5
  35. package/dist.commonjs/client/jsonRpc/index.d.ts +5 -2
  36. package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
  37. package/dist.commonjs/client/jsonRpc/index.js +6 -7
  38. package/dist.commonjs/client/transports/webSocket.d.ts.map +1 -1
  39. package/dist.commonjs/client/transports/webSocket.js +5 -1
  40. package/package.json +4 -2
  41. package/src/client/cache/cache.ts +7 -2
  42. package/src/client/cache/memory.ts +50 -15
  43. package/src/client/client.ts +7 -16
  44. package/src/client/clientPublicMainnet.ts +14 -5
  45. package/src/client/clientPublicTestnet.ts +14 -5
  46. package/src/client/jsonRpc/index.ts +5 -4
  47. package/src/client/transports/webSocket.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @ckb-ccc/core
2
2
 
3
+ ## 0.0.13-alpha.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [`3658797`](https://github.com/ckb-ecofund/ccc/commit/3658797e67c42c56b20fa66481d0455ed019e69f) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): node.js websocket
8
+
9
+ - [`642f731`](https://github.com/ckb-ecofund/ccc/commit/642f7317f4951ef801f1245aea96c40b4b6fb73e) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): custom ClientCache
10
+
11
+ ## 0.0.13-alpha.3
12
+
13
+ ### Patch Changes
14
+
15
+ - [`1f999f8`](https://github.com/ckb-ecofund/ccc/commit/1f999f854beb255b3cd9dbbc5a7268e75442b3db) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): ClientCache.markTransactions
16
+
3
17
  ## 0.0.13-alpha.2
4
18
 
5
19
  ### Patch Changes
@@ -2,8 +2,9 @@ import { Cell, CellLike, OutPointLike, Transaction, TransactionLike } from "../.
2
2
  import { HexLike } from "../../hex/index.js";
3
3
  import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
4
4
  export interface ClientCache {
5
- markUsable(cellLike: CellLike): Promise<void>;
6
- markUnusable(outPointLike: OutPointLike): Promise<void>;
5
+ markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
6
+ markUnusable(...outPointLike: (OutPointLike | OutPointLike[])[]): Promise<void>;
7
+ markTransactions(...transactionLike: (TransactionLike | TransactionLike[])[]): Promise<void>;
7
8
  isUnusable(outPointLike: OutPointLike): Promise<boolean>;
8
9
  recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
9
10
  getTransaction(txHash: HexLike): Promise<Transaction | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzD,kBAAkB,CAChB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAElE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,8BAA8B,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;CACzE"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,YAAY,CACV,GAAG,YAAY,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,gBAAgB,CACd,GAAG,eAAe,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzD,kBAAkB,CAChB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAElE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,8BAA8B,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;CACzE"}
@@ -7,8 +7,9 @@ export declare class ClientCacheMemory implements ClientCache {
7
7
  private readonly unusableOutPoints;
8
8
  private readonly usableCells;
9
9
  private readonly knownCells;
10
- markUsable(cellLike: CellLike): Promise<void>;
11
- markUnusable(outPointLike: OutPointLike): Promise<void>;
10
+ markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
11
+ markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
12
+ markTransactions(...transactionLike: (TransactionLike | TransactionLike[])[]): Promise<void>;
12
13
  isUnusable(outPointLike: OutPointLike): Promise<boolean>;
13
14
  recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
14
15
  getTransaction(txHashLike: HexLike): Promise<Transaction | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEnC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD,kBAAkB,CACtB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC;IAGV,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKrE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAK7D,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;CASxB"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEnC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAYV,gBAAgB,CACpB,GAAG,eAAe,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;IAyBV,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD,kBAAkB,CACtB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC;IAGV,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKrE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAK7D,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;CASxB"}
@@ -8,22 +8,41 @@ export class ClientCacheMemory {
8
8
  this.usableCells = [];
9
9
  this.knownCells = [];
10
10
  }
11
- async markUsable(cellLike) {
12
- const cell = Cell.from(cellLike).clone();
13
- this.usableCells.push(cell);
14
- this.knownCells.push(cell);
15
- const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
16
- if (index !== -1) {
17
- this.unusableOutPoints.splice(index, 1);
18
- }
11
+ async markUsable(...cellLikes) {
12
+ cellLikes.flat().forEach((cellLike) => {
13
+ const cell = Cell.from(cellLike).clone();
14
+ this.usableCells.push(cell);
15
+ this.knownCells.push(cell);
16
+ const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
17
+ if (index !== -1) {
18
+ this.unusableOutPoints.splice(index, 1);
19
+ }
20
+ });
19
21
  }
20
- async markUnusable(outPointLike) {
21
- const outPoint = OutPoint.from(outPointLike);
22
- this.unusableOutPoints.push(outPoint.clone());
23
- const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
24
- if (index !== -1) {
25
- this.usableCells.splice(index, 1);
26
- }
22
+ async markUnusable(...outPointLikes) {
23
+ outPointLikes.flat().forEach((outPointLike) => {
24
+ const outPoint = OutPoint.from(outPointLike);
25
+ this.unusableOutPoints.push(outPoint.clone());
26
+ const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
27
+ if (index !== -1) {
28
+ this.usableCells.splice(index, 1);
29
+ }
30
+ });
31
+ }
32
+ async markTransactions(...transactionLike) {
33
+ await Promise.all(transactionLike.flat().map(async (transactionLike) => {
34
+ const tx = Transaction.from(transactionLike);
35
+ const txHash = tx.hash();
36
+ await Promise.all(tx.inputs.map((i) => this.markUnusable(i.previousOutput)));
37
+ await Promise.all(tx.outputs.map((o, i) => this.markUsable({
38
+ cellOutput: o,
39
+ outputData: tx.outputsData[i],
40
+ outPoint: {
41
+ txHash,
42
+ index: i,
43
+ },
44
+ })));
45
+ }));
27
46
  }
28
47
  async isUnusable(outPointLike) {
29
48
  const outPoint = OutPoint.from(outPointLike);
@@ -43,7 +43,9 @@ export declare class CellDepInfo {
43
43
  */
44
44
  export declare abstract class Client {
45
45
  cache: ClientCache;
46
- constructor(cache?: ClientCache);
46
+ constructor(config?: {
47
+ cache?: ClientCache;
48
+ });
47
49
  abstract get url(): string;
48
50
  abstract get addressPrefix(): string;
49
51
  abstract getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EACP,WAAW,EAEX,YAAY,EACZ,MAAM,EACN,UAAU,EAEV,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,qCAAqC,EACrC,8BAA8B,EAE9B,0BAA0B,EAC1B,qCAAqC,EACrC,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,oBAAY,WAAW;IACrB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAW;IAEb,OAAO,EAAE,OAAO;IAChB,IAAI,CAAC;gBADL,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,oBAAQ;IAGtB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,WAAW;CAM3D;AAED;;GAEG;AACH,8BAAsB,MAAM;IACP,KAAK,EAAE,WAAW;gBAAlB,KAAK,GAAE,WAAqC;IAE/D,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC;IAC3B,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC;IAErC,QAAQ,CAAC,cAAc,CACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;IAED,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CACvB,WAAW,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,cAAc,CACrB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,sBAAsB,CAC7B,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC;IACf,QAAQ,CAAC,qBAAqB,CAC5B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAE3C,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IA2BpE,QAAQ,CAAC,qBAAqB,CAC5B,GAAG,EAAE,0BAA0B,EAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC;IAC7B,cAAc,CAClB,GAAG,EAAE,0BAA0B,EAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC;IAM5B,SAAS,CACd,GAAG,EAAE,0BAA0B,EAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,SAAK,GACT,cAAc,CAAC,IAAI,CAAC;IAoBvB;;;;;OAKG;IACI,+BAA+B,CACpC,OAAO,EAAE,8BAA8B,EACvC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,SAAK,GACT,cAAc,CAAC,IAAI,CAAC;IAqBvB,eAAe,CACb,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,EACxB,QAAQ,UAAO,EACf,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,SAAK,GACT,cAAc,CAAC,IAAI,CAAC;IAgBvB,eAAe,CACb,IAAI,EAAE,UAAU,EAChB,QAAQ,UAAO,EACf,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,SAAK,GACT,cAAc,CAAC,IAAI,CAAC;IAajB,uBAAuB,CAC3B,IAAI,EAAE,UAAU,EAChB,QAAQ,UAAQ,GACf,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAWtB,WAAW,CACf,GAAG,gBAAgB,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GAC3D,OAAO,CAAC,OAAO,EAAE,CAAC;IAoBrB,QAAQ,CAAC,qBAAqB,CAC5B,GAAG,EAAE,IAAI,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,GAAG;QACvE,kBAAkB,EAAE,IAAI,CAAC;KAC1B,EACD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,qCAAqC,CAAC;IACjD,QAAQ,CAAC,qBAAqB,CAC5B,GAAG,EAAE,IAAI,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,GAAG;QACvE,kBAAkB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;KACnC,EACD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,8BAA8B,CAAC;IAC1C,QAAQ,CAAC,qBAAqB,CAC5B,GAAG,EAAE,qCAAqC,EAC1C,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CACR,8BAA8B,GAAG,qCAAqC,CACvE;IAED,gBAAgB,CACd,GAAG,EAAE,IAAI,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,GAAG;QACvE,kBAAkB,EAAE,IAAI,CAAC;KAC1B,EACD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,qCAAqC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,gBAAgB,CACd,GAAG,EAAE,IAAI,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,GAAG;QACvE,kBAAkB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;KACnC,EACD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,gBAAgB,CACd,GAAG,EAAE,qCAAqC,EAC1C,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CACb,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACjD,qCAAqC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3D;IA6BD,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,EACnC,kBAAkB,EAAE,IAAI,EACxB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,qCAAqC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,EACxB,kBAAkB,CAAC,EAAE,KAAK,GAAG,IAAI,EACjC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,EACxB,kBAAkB,CAAC,EAAE,OAAO,GAAG,IAAI,EACnC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CACb,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACjD,qCAAqC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3D;IA0BD,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,kBAAkB,EAAE,IAAI,EACxB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,qCAAqC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,kBAAkB,CAAC,EAAE,KAAK,GAAG,IAAI,EACjC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,kBAAkB,CAAC,EAAE,OAAO,GAAG,IAAI,EACnC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CACb,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACjD,qCAAqC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3D;IAsBD,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;IAElE,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAYhD,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ7C,eAAe,CACnB,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC;IAwBT,cAAc,CAClB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;CAwBlD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,8 @@ export class CellDepInfo {
40
40
  * @public
41
41
  */
42
42
  export class Client {
43
- constructor(cache = new ClientCacheMemory()) {
44
- this.cache = cache;
43
+ constructor(config) {
44
+ this.cache = config?.cache ?? new ClientCacheMemory();
45
45
  }
46
46
  async getCell(outPointLike) {
47
47
  const outPoint = OutPoint.from(outPointLike);
@@ -194,15 +194,7 @@ export class Client {
194
194
  const tx = Transaction.from(transaction);
195
195
  const txHash = await this.sendTransactionNoCache(tx, validator);
196
196
  await this.cache.recordTransactions(tx);
197
- await Promise.all(tx.inputs.map((i) => this.cache.markUnusable(i.previousOutput)));
198
- await Promise.all(tx.outputs.map((o, i) => this.cache.markUsable({
199
- cellOutput: o,
200
- outputData: tx.outputsData[i],
201
- outPoint: {
202
- txHash,
203
- index: i,
204
- },
205
- })));
197
+ await this.cache.markTransactions(tx);
206
198
  return txHash;
207
199
  }
208
200
  async getTransaction(txHashLike) {
@@ -1,14 +1,22 @@
1
1
  import { Script } from "../ckb/index.js";
2
+ import { ClientCache } from "./cache/index.js";
2
3
  import { CellDepInfo, KnownScript } from "./client.js";
4
+ import { MAINNET_SCRIPTS } from "./clientPublicMainnet.advanced.js";
3
5
  import { ClientJsonRpc } from "./jsonRpc/index.js";
4
6
  /**
5
7
  * @public
6
8
  */
7
9
  export declare class ClientPublicMainnet extends ClientJsonRpc {
8
- private readonly scripts;
9
- constructor(url?: string, timeout?: number, scripts?: Record<KnownScript, (Pick<Script, "codeHash" | "hashType"> & {
10
- cellDeps: import("./client.js").CellDepInfoLike[];
11
- }) | undefined>);
10
+ private readonly config?;
11
+ constructor(config?: {
12
+ url?: string | undefined;
13
+ timeout?: number | undefined;
14
+ scripts?: Record<KnownScript, (Pick<Script, "codeHash" | "hashType"> & {
15
+ cellDeps: import("./client.js").CellDepInfoLike[];
16
+ }) | undefined> | undefined;
17
+ cache?: ClientCache | undefined;
18
+ } | undefined);
19
+ get scripts(): typeof MAINNET_SCRIPTS;
12
20
  get addressPrefix(): string;
13
21
  getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType"> & {
14
22
  cellDeps: CellDepInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"clientPublicMainnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EACC,OAAO;;mBAAkB;IAW5C,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAYF"}
1
+ {"version":3,"file":"clientPublicMainnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC;;;;;;;iBAKvB;IAWH,IAAI,OAAO,IAAI,OAAO,eAAe,CAEpC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAYF"}
@@ -1,3 +1,4 @@
1
+ import WebSocket from "isomorphic-ws";
1
2
  import { CellDepInfo } from "./client.js";
2
3
  import { MAINNET_SCRIPTS } from "./clientPublicMainnet.advanced.js";
3
4
  import { ClientJsonRpc } from "./jsonRpc/index.js";
@@ -5,12 +6,15 @@ import { ClientJsonRpc } from "./jsonRpc/index.js";
5
6
  * @public
6
7
  */
7
8
  export class ClientPublicMainnet extends ClientJsonRpc {
8
- constructor(url, timeout, scripts = MAINNET_SCRIPTS) {
9
- super(url ??
9
+ constructor(config) {
10
+ super(config?.url ??
10
11
  (typeof WebSocket !== "undefined"
11
12
  ? "wss://mainnet.ckb.dev/ws"
12
- : "https://mainnet.ckb.dev/"), timeout);
13
- this.scripts = scripts;
13
+ : "https://mainnet.ckb.dev/"), config);
14
+ this.config = config;
15
+ }
16
+ get scripts() {
17
+ return this.config?.scripts ?? MAINNET_SCRIPTS;
14
18
  }
15
19
  get addressPrefix() {
16
20
  return "ckb";
@@ -1,14 +1,22 @@
1
1
  import { Script } from "../ckb/index.js";
2
+ import { ClientCache } from "./cache/index.js";
2
3
  import { CellDepInfo, KnownScript } from "./client.js";
4
+ import { TESTNET_SCRIPTS } from "./clientPublicTestnet.advanced.js";
3
5
  import { ClientJsonRpc } from "./jsonRpc/index.js";
4
6
  /**
5
7
  * @public
6
8
  */
7
9
  export declare class ClientPublicTestnet extends ClientJsonRpc {
8
- private readonly scripts;
9
- constructor(url?: string, timeout?: number, scripts?: Record<KnownScript, Pick<Script, "codeHash" | "hashType"> & {
10
- cellDeps: import("./client.js").CellDepInfoLike[];
11
- }>);
10
+ private readonly config?;
11
+ constructor(config?: {
12
+ url?: string | undefined;
13
+ timeout?: number | undefined;
14
+ scripts?: Record<KnownScript, Pick<Script, "codeHash" | "hashType"> & {
15
+ cellDeps: import("./client.js").CellDepInfoLike[];
16
+ }> | undefined;
17
+ cache?: ClientCache | undefined;
18
+ } | undefined);
19
+ get scripts(): typeof TESTNET_SCRIPTS;
12
20
  get addressPrefix(): string;
13
21
  getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType"> & {
14
22
  cellDeps: CellDepInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"clientPublicTestnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicTestnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EACC,OAAO;;MAAkB;IAW5C,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAOF"}
1
+ {"version":3,"file":"clientPublicTestnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicTestnet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC;;;;;;;iBAKvB;IAWH,IAAI,OAAO,IAAI,OAAO,eAAe,CAEpC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAOF"}
@@ -1,3 +1,4 @@
1
+ import WebSocket from "isomorphic-ws";
1
2
  import { CellDepInfo } from "./client.js";
2
3
  import { TESTNET_SCRIPTS } from "./clientPublicTestnet.advanced.js";
3
4
  import { ClientJsonRpc } from "./jsonRpc/index.js";
@@ -5,12 +6,15 @@ import { ClientJsonRpc } from "./jsonRpc/index.js";
5
6
  * @public
6
7
  */
7
8
  export class ClientPublicTestnet extends ClientJsonRpc {
8
- constructor(url, timeout, scripts = TESTNET_SCRIPTS) {
9
- super(url ??
9
+ constructor(config) {
10
+ super(config?.url ??
10
11
  (typeof WebSocket !== "undefined"
11
12
  ? "wss://testnet.ckb.dev/ws"
12
- : "https://testnet.ckb.dev/"), timeout);
13
- this.scripts = scripts;
13
+ : "https://testnet.ckb.dev/"), config);
14
+ this.config = config;
15
+ }
16
+ get scripts() {
17
+ return this.config?.scripts ?? TESTNET_SCRIPTS;
14
18
  }
15
19
  get addressPrefix() {
16
20
  return "ckt";
@@ -1,6 +1,7 @@
1
1
  import { TransactionLike } from "../../ckb/index.js";
2
2
  import { Hex, HexLike } from "../../hex/index.js";
3
3
  import { Num, NumLike } from "../../num/index.js";
4
+ import { ClientCache } from "../cache/index.js";
4
5
  import { Client } from "../client.js";
5
6
  import { ClientFindCellsResponse, ClientIndexerSearchKeyLike, ClientTransactionResponse, OutputsValidator } from "../clientTypes.js";
6
7
  import { JsonRpcPayload } from "../transports/advanced.js";
@@ -10,7 +11,6 @@ import { JsonRpcPayload } from "../transports/advanced.js";
10
11
  */
11
12
  export declare abstract class ClientJsonRpc extends Client {
12
13
  private readonly url_;
13
- private readonly timeout?;
14
14
  private readonly transport;
15
15
  /**
16
16
  * Creates an instance of ClientJsonRpc.
@@ -18,7 +18,10 @@ export declare abstract class ClientJsonRpc extends Client {
18
18
  * @param url_ - The URL of the JSON-RPC server.
19
19
  * @param timeout - The timeout for requests in milliseconds
20
20
  */
21
- constructor(url_: string, timeout?: number | undefined);
21
+ constructor(url_: string, config?: {
22
+ timeout?: number;
23
+ cache?: ClientCache;
24
+ });
22
25
  /**
23
26
  * Returns the URL of the JSON-RPC server.
24
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/jsonRpc/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,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;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAX3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC;;;;;OAKG;gBAGgB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,oBAAQ;IAOnC;;;;OAIG;IAEH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;OAIG;IAEH,MAAM,QAIK,QAAQ,GAAG,CAAC,CAAC;IAExB;;;;;;;OAOG;IACH,gBAAgB,yKAIgB;IAEhC;;;;;;;OAOG;IACH,cAAc,mMAEgB;IAE9B;;;;;;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;IAmB1C;;;;;;;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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/jsonRpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,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,EACzB,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;;;;;;;OAOG;IACH,gBAAgB,yKAIgB;IAEhC;;;;;;;OAOG;IACH,cAAc,mMAEgB;IAE9B;;;;;;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;IAmB1C;;;;;;;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,6 +1,6 @@
1
- import { apply } from "../../barrel.js";
2
1
  import { hexFrom } from "../../hex/index.js";
3
2
  import { numFrom, numToHex } from "../../num/index.js";
3
+ import { apply } from "../../utils/index.js";
4
4
  import { Client } from "../client.js";
5
5
  import { transportFromUri, } from "../transports/advanced.js";
6
6
  import { JsonRpcTransformers } from "./advanced.js";
@@ -34,10 +34,9 @@ export class ClientJsonRpc extends Client {
34
34
  * @param url_ - The URL of the JSON-RPC server.
35
35
  * @param timeout - The timeout for requests in milliseconds
36
36
  */
37
- constructor(url_, timeout) {
38
- super();
37
+ constructor(url_, config) {
38
+ super(config);
39
39
  this.url_ = url_;
40
- this.timeout = timeout;
41
40
  /**
42
41
  * Get tip block number
43
42
  *
@@ -112,7 +111,7 @@ export class ClientJsonRpc extends Client {
112
111
  * @returns The sum of cells capacity.
113
112
  */
114
113
  this.getCellsCapacity = this.buildSender("get_cells_capacity", [JsonRpcTransformers.indexerSearchKeyFrom], ({ capacity }) => numFrom(capacity));
115
- this.transport = transportFromUri(url_);
114
+ this.transport = transportFromUri(url_, config);
116
115
  }
117
116
  /**
118
117
  * Returns the URL of the JSON-RPC server.
@@ -1 +1 @@
1
- {"version":3,"file":"webSocket.d.ts","sourceRoot":"","sources":["../../../src/client/transports/webSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,SAAS;IAYhD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,OAAO,CAOD;IACd,OAAO,CAAC,MAAM,CAAC,CAAqB;gBAGjB,GAAG,EAAE,MAAM,EACX,OAAO,SAAQ;IAG5B,OAAO,CAAC,IAAI,EAAE,cAAc;CA8DnC"}
1
+ {"version":3,"file":"webSocket.d.ts","sourceRoot":"","sources":["../../../src/client/transports/webSocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,SAAS;IAYhD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,OAAO,CAOD;IACd,OAAO,CAAC,MAAM,CAAC,CAAqB;gBAGjB,GAAG,EAAE,MAAM,EACX,OAAO,SAAQ;IAG5B,OAAO,CAAC,IAAI,EAAE,cAAc;CA8DnC"}
@@ -1,3 +1,4 @@
1
+ import WebSocket from "isomorphic-ws";
1
2
  export class TransportWebSocket {
2
3
  constructor(url, timeout = 30000) {
3
4
  this.url = url;
@@ -2,8 +2,9 @@ import { Cell, CellLike, OutPointLike, Transaction, TransactionLike } from "../.
2
2
  import { HexLike } from "../../hex/index.js";
3
3
  import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
4
4
  export interface ClientCache {
5
- markUsable(cellLike: CellLike): Promise<void>;
6
- markUnusable(outPointLike: OutPointLike): Promise<void>;
5
+ markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
6
+ markUnusable(...outPointLike: (OutPointLike | OutPointLike[])[]): Promise<void>;
7
+ markTransactions(...transactionLike: (TransactionLike | TransactionLike[])[]): Promise<void>;
7
8
  isUnusable(outPointLike: OutPointLike): Promise<boolean>;
8
9
  recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
9
10
  getTransaction(txHash: HexLike): Promise<Transaction | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzD,kBAAkB,CAChB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAElE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,8BAA8B,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;CACzE"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,YAAY,CACV,GAAG,YAAY,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,gBAAgB,CACd,GAAG,eAAe,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzD,kBAAkB,CAChB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAElE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,8BAA8B,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;CACzE"}
@@ -7,8 +7,9 @@ export declare class ClientCacheMemory implements ClientCache {
7
7
  private readonly unusableOutPoints;
8
8
  private readonly usableCells;
9
9
  private readonly knownCells;
10
- markUsable(cellLike: CellLike): Promise<void>;
11
- markUnusable(outPointLike: OutPointLike): Promise<void>;
10
+ markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
11
+ markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
12
+ markTransactions(...transactionLike: (TransactionLike | TransactionLike[])[]): Promise<void>;
12
13
  isUnusable(outPointLike: OutPointLike): Promise<boolean>;
13
14
  recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
14
15
  getTransaction(txHashLike: HexLike): Promise<Transaction | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEnC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD,kBAAkB,CACtB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC;IAGV,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKrE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAK7D,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;CASxB"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEnC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAYV,gBAAgB,CACpB,GAAG,eAAe,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;IAyBV,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD,kBAAkB,CACtB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC;IAGV,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKrE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAK7D,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;CASxB"}
@@ -11,22 +11,41 @@ class ClientCacheMemory {
11
11
  this.usableCells = [];
12
12
  this.knownCells = [];
13
13
  }
14
- async markUsable(cellLike) {
15
- const cell = index_js_1.Cell.from(cellLike).clone();
16
- this.usableCells.push(cell);
17
- this.knownCells.push(cell);
18
- const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
19
- if (index !== -1) {
20
- this.unusableOutPoints.splice(index, 1);
21
- }
14
+ async markUsable(...cellLikes) {
15
+ cellLikes.flat().forEach((cellLike) => {
16
+ const cell = index_js_1.Cell.from(cellLike).clone();
17
+ this.usableCells.push(cell);
18
+ this.knownCells.push(cell);
19
+ const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
20
+ if (index !== -1) {
21
+ this.unusableOutPoints.splice(index, 1);
22
+ }
23
+ });
22
24
  }
23
- async markUnusable(outPointLike) {
24
- const outPoint = index_js_1.OutPoint.from(outPointLike);
25
- this.unusableOutPoints.push(outPoint.clone());
26
- const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
27
- if (index !== -1) {
28
- this.usableCells.splice(index, 1);
29
- }
25
+ async markUnusable(...outPointLikes) {
26
+ outPointLikes.flat().forEach((outPointLike) => {
27
+ const outPoint = index_js_1.OutPoint.from(outPointLike);
28
+ this.unusableOutPoints.push(outPoint.clone());
29
+ const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
30
+ if (index !== -1) {
31
+ this.usableCells.splice(index, 1);
32
+ }
33
+ });
34
+ }
35
+ async markTransactions(...transactionLike) {
36
+ await Promise.all(transactionLike.flat().map(async (transactionLike) => {
37
+ const tx = index_js_1.Transaction.from(transactionLike);
38
+ const txHash = tx.hash();
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
+ }));
30
49
  }
31
50
  async isUnusable(outPointLike) {
32
51
  const outPoint = index_js_1.OutPoint.from(outPointLike);
@@ -43,7 +43,9 @@ export declare class CellDepInfo {
43
43
  */
44
44
  export declare abstract class Client {
45
45
  cache: ClientCache;
46
- constructor(cache?: ClientCache);
46
+ constructor(config?: {
47
+ cache?: ClientCache;
48
+ });
47
49
  abstract get url(): string;
48
50
  abstract get addressPrefix(): string;
49
51
  abstract getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -44,8 +44,8 @@ exports.CellDepInfo = CellDepInfo;
44
44
  * @public
45
45
  */
46
46
  class Client {
47
- constructor(cache = new memory_js_1.ClientCacheMemory()) {
48
- this.cache = cache;
47
+ constructor(config) {
48
+ this.cache = config?.cache ?? new memory_js_1.ClientCacheMemory();
49
49
  }
50
50
  async getCell(outPointLike) {
51
51
  const outPoint = index_js_1.OutPoint.from(outPointLike);
@@ -198,15 +198,7 @@ class Client {
198
198
  const tx = index_js_1.Transaction.from(transaction);
199
199
  const txHash = await this.sendTransactionNoCache(tx, validator);
200
200
  await this.cache.recordTransactions(tx);
201
- await Promise.all(tx.inputs.map((i) => this.cache.markUnusable(i.previousOutput)));
202
- await Promise.all(tx.outputs.map((o, i) => this.cache.markUsable({
203
- cellOutput: o,
204
- outputData: tx.outputsData[i],
205
- outPoint: {
206
- txHash,
207
- index: i,
208
- },
209
- })));
201
+ await this.cache.markTransactions(tx);
210
202
  return txHash;
211
203
  }
212
204
  async getTransaction(txHashLike) {
@@ -1,14 +1,22 @@
1
1
  import { Script } from "../ckb/index.js";
2
+ import { ClientCache } from "./cache/index.js";
2
3
  import { CellDepInfo, KnownScript } from "./client.js";
4
+ import { MAINNET_SCRIPTS } from "./clientPublicMainnet.advanced.js";
3
5
  import { ClientJsonRpc } from "./jsonRpc/index.js";
4
6
  /**
5
7
  * @public
6
8
  */
7
9
  export declare class ClientPublicMainnet extends ClientJsonRpc {
8
- private readonly scripts;
9
- constructor(url?: string, timeout?: number, scripts?: Record<KnownScript, (Pick<Script, "codeHash" | "hashType"> & {
10
- cellDeps: import("./client.js").CellDepInfoLike[];
11
- }) | undefined>);
10
+ private readonly config?;
11
+ constructor(config?: {
12
+ url?: string | undefined;
13
+ timeout?: number | undefined;
14
+ scripts?: Record<KnownScript, (Pick<Script, "codeHash" | "hashType"> & {
15
+ cellDeps: import("./client.js").CellDepInfoLike[];
16
+ }) | undefined> | undefined;
17
+ cache?: ClientCache | undefined;
18
+ } | undefined);
19
+ get scripts(): typeof MAINNET_SCRIPTS;
12
20
  get addressPrefix(): string;
13
21
  getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType"> & {
14
22
  cellDeps: CellDepInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"clientPublicMainnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EACC,OAAO;;mBAAkB;IAW5C,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAYF"}
1
+ {"version":3,"file":"clientPublicMainnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC;;;;;;;iBAKvB;IAWH,IAAI,OAAO,IAAI,OAAO,eAAe,CAEpC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAYF"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ClientPublicMainnet = void 0;
7
+ const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
4
8
  const client_js_1 = require("./client.js");
5
9
  const clientPublicMainnet_advanced_js_1 = require("./clientPublicMainnet.advanced.js");
6
10
  const index_js_1 = require("./jsonRpc/index.js");
@@ -8,12 +12,15 @@ const index_js_1 = require("./jsonRpc/index.js");
8
12
  * @public
9
13
  */
10
14
  class ClientPublicMainnet extends index_js_1.ClientJsonRpc {
11
- constructor(url, timeout, scripts = clientPublicMainnet_advanced_js_1.MAINNET_SCRIPTS) {
12
- super(url ??
13
- (typeof WebSocket !== "undefined"
15
+ constructor(config) {
16
+ super(config?.url ??
17
+ (typeof isomorphic_ws_1.default !== "undefined"
14
18
  ? "wss://mainnet.ckb.dev/ws"
15
- : "https://mainnet.ckb.dev/"), timeout);
16
- this.scripts = scripts;
19
+ : "https://mainnet.ckb.dev/"), config);
20
+ this.config = config;
21
+ }
22
+ get scripts() {
23
+ return this.config?.scripts ?? clientPublicMainnet_advanced_js_1.MAINNET_SCRIPTS;
17
24
  }
18
25
  get addressPrefix() {
19
26
  return "ckb";
@@ -1,14 +1,22 @@
1
1
  import { Script } from "../ckb/index.js";
2
+ import { ClientCache } from "./cache/index.js";
2
3
  import { CellDepInfo, KnownScript } from "./client.js";
4
+ import { TESTNET_SCRIPTS } from "./clientPublicTestnet.advanced.js";
3
5
  import { ClientJsonRpc } from "./jsonRpc/index.js";
4
6
  /**
5
7
  * @public
6
8
  */
7
9
  export declare class ClientPublicTestnet extends ClientJsonRpc {
8
- private readonly scripts;
9
- constructor(url?: string, timeout?: number, scripts?: Record<KnownScript, Pick<Script, "codeHash" | "hashType"> & {
10
- cellDeps: import("./client.js").CellDepInfoLike[];
11
- }>);
10
+ private readonly config?;
11
+ constructor(config?: {
12
+ url?: string | undefined;
13
+ timeout?: number | undefined;
14
+ scripts?: Record<KnownScript, Pick<Script, "codeHash" | "hashType"> & {
15
+ cellDeps: import("./client.js").CellDepInfoLike[];
16
+ }> | undefined;
17
+ cache?: ClientCache | undefined;
18
+ } | undefined);
19
+ get scripts(): typeof TESTNET_SCRIPTS;
12
20
  get addressPrefix(): string;
13
21
  getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType"> & {
14
22
  cellDeps: CellDepInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"clientPublicTestnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicTestnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EACC,OAAO;;MAAkB;IAW5C,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAOF"}
1
+ {"version":3,"file":"clientPublicTestnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicTestnet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC;;;;;;;iBAKvB;IAWH,IAAI,OAAO,IAAI,OAAO,eAAe,CAEpC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CACR,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CACpE;CAOF"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ClientPublicTestnet = void 0;
7
+ const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
4
8
  const client_js_1 = require("./client.js");
5
9
  const clientPublicTestnet_advanced_js_1 = require("./clientPublicTestnet.advanced.js");
6
10
  const index_js_1 = require("./jsonRpc/index.js");
@@ -8,12 +12,15 @@ const index_js_1 = require("./jsonRpc/index.js");
8
12
  * @public
9
13
  */
10
14
  class ClientPublicTestnet extends index_js_1.ClientJsonRpc {
11
- constructor(url, timeout, scripts = clientPublicTestnet_advanced_js_1.TESTNET_SCRIPTS) {
12
- super(url ??
13
- (typeof WebSocket !== "undefined"
15
+ constructor(config) {
16
+ super(config?.url ??
17
+ (typeof isomorphic_ws_1.default !== "undefined"
14
18
  ? "wss://testnet.ckb.dev/ws"
15
- : "https://testnet.ckb.dev/"), timeout);
16
- this.scripts = scripts;
19
+ : "https://testnet.ckb.dev/"), config);
20
+ this.config = config;
21
+ }
22
+ get scripts() {
23
+ return this.config?.scripts ?? clientPublicTestnet_advanced_js_1.TESTNET_SCRIPTS;
17
24
  }
18
25
  get addressPrefix() {
19
26
  return "ckt";
@@ -1,6 +1,7 @@
1
1
  import { TransactionLike } from "../../ckb/index.js";
2
2
  import { Hex, HexLike } from "../../hex/index.js";
3
3
  import { Num, NumLike } from "../../num/index.js";
4
+ import { ClientCache } from "../cache/index.js";
4
5
  import { Client } from "../client.js";
5
6
  import { ClientFindCellsResponse, ClientIndexerSearchKeyLike, ClientTransactionResponse, OutputsValidator } from "../clientTypes.js";
6
7
  import { JsonRpcPayload } from "../transports/advanced.js";
@@ -10,7 +11,6 @@ import { JsonRpcPayload } from "../transports/advanced.js";
10
11
  */
11
12
  export declare abstract class ClientJsonRpc extends Client {
12
13
  private readonly url_;
13
- private readonly timeout?;
14
14
  private readonly transport;
15
15
  /**
16
16
  * Creates an instance of ClientJsonRpc.
@@ -18,7 +18,10 @@ export declare abstract class ClientJsonRpc extends Client {
18
18
  * @param url_ - The URL of the JSON-RPC server.
19
19
  * @param timeout - The timeout for requests in milliseconds
20
20
  */
21
- constructor(url_: string, timeout?: number | undefined);
21
+ constructor(url_: string, config?: {
22
+ timeout?: number;
23
+ cache?: ClientCache;
24
+ });
22
25
  /**
23
26
  * Returns the URL of the JSON-RPC server.
24
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/jsonRpc/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,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;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAX3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC;;;;;OAKG;gBAGgB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,oBAAQ;IAOnC;;;;OAIG;IAEH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;OAIG;IAEH,MAAM,QAIK,QAAQ,GAAG,CAAC,CAAC;IAExB;;;;;;;OAOG;IACH,gBAAgB,yKAIgB;IAEhC;;;;;;;OAOG;IACH,cAAc,mMAEgB;IAE9B;;;;;;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;IAmB1C;;;;;;;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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/jsonRpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,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,EACzB,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;;;;;;;OAOG;IACH,gBAAgB,yKAIgB;IAEhC;;;;;;;OAOG;IACH,cAAc,mMAEgB;IAE9B;;;;;;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;IAmB1C;;;;;;;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,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClientJsonRpc = void 0;
4
- const barrel_js_1 = require("../../barrel.js");
5
4
  const index_js_1 = require("../../hex/index.js");
6
5
  const index_js_2 = require("../../num/index.js");
6
+ const index_js_3 = require("../../utils/index.js");
7
7
  const client_js_1 = require("../client.js");
8
8
  const advanced_js_1 = require("../transports/advanced.js");
9
9
  const advanced_js_2 = require("./advanced.js");
@@ -37,10 +37,9 @@ class ClientJsonRpc extends client_js_1.Client {
37
37
  * @param url_ - The URL of the JSON-RPC server.
38
38
  * @param timeout - The timeout for requests in milliseconds
39
39
  */
40
- constructor(url_, timeout) {
41
- super();
40
+ constructor(url_, config) {
41
+ super(config);
42
42
  this.url_ = url_;
43
- this.timeout = timeout;
44
43
  /**
45
44
  * Get tip block number
46
45
  *
@@ -55,7 +54,7 @@ class ClientJsonRpc extends client_js_1.Client {
55
54
  * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
56
55
  * @returns Block
57
56
  */
58
- this.getBlockByNumber = this.buildSender("get_block_by_number", [(v) => (0, index_js_2.numToHex)((0, index_js_2.numFrom)(v))], (b) => (0, barrel_js_1.apply)(advanced_js_2.JsonRpcTransformers.blockTo, b));
57
+ this.getBlockByNumber = this.buildSender("get_block_by_number", [(v) => (0, index_js_2.numToHex)((0, index_js_2.numFrom)(v))], (b) => (0, index_js_3.apply)(advanced_js_2.JsonRpcTransformers.blockTo, b));
59
58
  /**
60
59
  * Get block by block hash
61
60
  *
@@ -64,7 +63,7 @@ class ClientJsonRpc extends client_js_1.Client {
64
63
  * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
65
64
  * @returns Block
66
65
  */
67
- this.getBlockByHash = this.buildSender("get_block", [index_js_1.hexFrom], (b) => (0, barrel_js_1.apply)(advanced_js_2.JsonRpcTransformers.blockTo, b));
66
+ this.getBlockByHash = this.buildSender("get_block", [index_js_1.hexFrom], (b) => (0, index_js_3.apply)(advanced_js_2.JsonRpcTransformers.blockTo, b));
68
67
  /**
69
68
  * Send a transaction to node.
70
69
  *
@@ -115,7 +114,7 @@ class ClientJsonRpc extends client_js_1.Client {
115
114
  * @returns The sum of cells capacity.
116
115
  */
117
116
  this.getCellsCapacity = this.buildSender("get_cells_capacity", [advanced_js_2.JsonRpcTransformers.indexerSearchKeyFrom], ({ capacity }) => (0, index_js_2.numFrom)(capacity));
118
- this.transport = (0, advanced_js_1.transportFromUri)(url_);
117
+ this.transport = (0, advanced_js_1.transportFromUri)(url_, config);
119
118
  }
120
119
  /**
121
120
  * Returns the URL of the JSON-RPC server.
@@ -1 +1 @@
1
- {"version":3,"file":"webSocket.d.ts","sourceRoot":"","sources":["../../../src/client/transports/webSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,SAAS;IAYhD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,OAAO,CAOD;IACd,OAAO,CAAC,MAAM,CAAC,CAAqB;gBAGjB,GAAG,EAAE,MAAM,EACX,OAAO,SAAQ;IAG5B,OAAO,CAAC,IAAI,EAAE,cAAc;CA8DnC"}
1
+ {"version":3,"file":"webSocket.d.ts","sourceRoot":"","sources":["../../../src/client/transports/webSocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,SAAS;IAYhD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,OAAO,CAOD;IACd,OAAO,CAAC,MAAM,CAAC,CAAqB;gBAGjB,GAAG,EAAE,MAAM,EACX,OAAO,SAAQ;IAG5B,OAAO,CAAC,IAAI,EAAE,cAAc;CA8DnC"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TransportWebSocket = void 0;
7
+ const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
4
8
  class TransportWebSocket {
5
9
  constructor(url, timeout = 30000) {
6
10
  this.url = url;
@@ -12,7 +16,7 @@ class TransportWebSocket {
12
16
  if (this.socket) {
13
17
  return this.socket;
14
18
  }
15
- const socket = new WebSocket(this.url);
19
+ const socket = new isomorphic_ws_1.default(this.url);
16
20
  const onMessage = ({ data }) => {
17
21
  const res = JSON.parse(data);
18
22
  if (typeof res !== "object" || res === null) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckb-ccc/core",
3
- "version": "0.0.13-alpha.2",
3
+ "version": "0.0.13-alpha.4",
4
4
  "description": "Core of CCC - CKBer's Codebase",
5
5
  "author": "Hanssen0 <hanssen0@hanssen0.com>",
6
6
  "license": "MIT",
@@ -60,7 +60,9 @@
60
60
  "bitcoinjs-message": "^2.2.0",
61
61
  "buffer": "^6.0.3",
62
62
  "cross-fetch": "^4.0.0",
63
- "ethers": "^6.13.1"
63
+ "ethers": "^6.13.1",
64
+ "isomorphic-ws": "^5.0.0",
65
+ "ws": "^8.18.0"
64
66
  },
65
67
  "scripts": {
66
68
  "test": "jest",
@@ -9,8 +9,13 @@ import { HexLike } from "../../hex/index.js";
9
9
  import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
10
10
 
11
11
  export interface ClientCache {
12
- markUsable(cellLike: CellLike): Promise<void>;
13
- markUnusable(outPointLike: OutPointLike): Promise<void>;
12
+ markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
13
+ markUnusable(
14
+ ...outPointLike: (OutPointLike | OutPointLike[])[]
15
+ ): Promise<void>;
16
+ markTransactions(
17
+ ...transactionLike: (TransactionLike | TransactionLike[])[]
18
+ ): Promise<void>;
14
19
 
15
20
  isUnusable(outPointLike: OutPointLike): Promise<boolean>;
16
21
 
@@ -17,25 +17,60 @@ export class ClientCacheMemory implements ClientCache {
17
17
  private readonly usableCells: Cell[] = [];
18
18
  private readonly knownCells: Cell[] = [];
19
19
 
20
- async markUsable(cellLike: CellLike): Promise<void> {
21
- const cell = Cell.from(cellLike).clone();
22
- this.usableCells.push(cell);
23
- this.knownCells.push(cell);
20
+ async markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void> {
21
+ cellLikes.flat().forEach((cellLike) => {
22
+ const cell = Cell.from(cellLike).clone();
23
+ this.usableCells.push(cell);
24
+ this.knownCells.push(cell);
24
25
 
25
- const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
26
- if (index !== -1) {
27
- this.unusableOutPoints.splice(index, 1);
28
- }
26
+ const index = this.unusableOutPoints.findIndex((o) =>
27
+ cell.outPoint.eq(o),
28
+ );
29
+ if (index !== -1) {
30
+ this.unusableOutPoints.splice(index, 1);
31
+ }
32
+ });
29
33
  }
30
34
 
31
- async markUnusable(outPointLike: OutPointLike): Promise<void> {
32
- const outPoint = OutPoint.from(outPointLike);
33
- this.unusableOutPoints.push(outPoint.clone());
35
+ async markUnusable(
36
+ ...outPointLikes: (OutPointLike | OutPointLike[])[]
37
+ ): Promise<void> {
38
+ outPointLikes.flat().forEach((outPointLike) => {
39
+ const outPoint = OutPoint.from(outPointLike);
40
+ this.unusableOutPoints.push(outPoint.clone());
34
41
 
35
- const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
36
- if (index !== -1) {
37
- this.usableCells.splice(index, 1);
38
- }
42
+ const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
43
+ if (index !== -1) {
44
+ this.usableCells.splice(index, 1);
45
+ }
46
+ });
47
+ }
48
+
49
+ async markTransactions(
50
+ ...transactionLike: (TransactionLike | TransactionLike[])[]
51
+ ): Promise<void> {
52
+ await Promise.all(
53
+ transactionLike.flat().map(async (transactionLike) => {
54
+ const tx = Transaction.from(transactionLike);
55
+ const txHash = tx.hash();
56
+
57
+ await Promise.all(
58
+ tx.inputs.map((i) => this.markUnusable(i.previousOutput)),
59
+ );
60
+ await Promise.all(
61
+ tx.outputs.map((o, i) =>
62
+ this.markUsable({
63
+ cellOutput: o,
64
+ outputData: tx.outputsData[i],
65
+ outPoint: {
66
+ txHash,
67
+ index: i,
68
+ },
69
+ }),
70
+ ),
71
+ );
72
+ }),
73
+ );
39
74
  }
40
75
 
41
76
  async isUnusable(outPointLike: OutPointLike): Promise<boolean> {
@@ -76,7 +76,11 @@ export class CellDepInfo {
76
76
  * @public
77
77
  */
78
78
  export abstract class Client {
79
- constructor(public cache: ClientCache = new ClientCacheMemory()) {}
79
+ public cache: ClientCache;
80
+
81
+ constructor(config?: { cache?: ClientCache }) {
82
+ this.cache = config?.cache ?? new ClientCacheMemory();
83
+ }
80
84
 
81
85
  abstract get url(): string;
82
86
  abstract get addressPrefix(): string;
@@ -479,21 +483,8 @@ export abstract class Client {
479
483
  const txHash = await this.sendTransactionNoCache(tx, validator);
480
484
 
481
485
  await this.cache.recordTransactions(tx);
482
- await Promise.all(
483
- tx.inputs.map((i) => this.cache.markUnusable(i.previousOutput)),
484
- );
485
- await Promise.all(
486
- tx.outputs.map((o, i) =>
487
- this.cache.markUsable({
488
- cellOutput: o,
489
- outputData: tx.outputsData[i],
490
- outPoint: {
491
- txHash,
492
- index: i,
493
- },
494
- }),
495
- ),
496
- );
486
+ await this.cache.markTransactions(tx);
487
+
497
488
  return txHash;
498
489
  }
499
490
 
@@ -1,4 +1,6 @@
1
+ import WebSocket from "isomorphic-ws";
1
2
  import { Script } from "../ckb/index.js";
3
+ import { ClientCache } from "./cache/index.js";
2
4
  import { CellDepInfo, KnownScript } from "./client.js";
3
5
  import { MAINNET_SCRIPTS } from "./clientPublicMainnet.advanced.js";
4
6
  import { ClientJsonRpc } from "./jsonRpc/index.js";
@@ -8,19 +10,26 @@ import { ClientJsonRpc } from "./jsonRpc/index.js";
8
10
  */
9
11
  export class ClientPublicMainnet extends ClientJsonRpc {
10
12
  constructor(
11
- url?: string,
12
- timeout?: number,
13
- private readonly scripts = MAINNET_SCRIPTS,
13
+ private readonly config?: {
14
+ url?: string;
15
+ timeout?: number;
16
+ scripts?: typeof MAINNET_SCRIPTS;
17
+ cache?: ClientCache;
18
+ },
14
19
  ) {
15
20
  super(
16
- url ??
21
+ config?.url ??
17
22
  (typeof WebSocket !== "undefined"
18
23
  ? "wss://mainnet.ckb.dev/ws"
19
24
  : "https://mainnet.ckb.dev/"),
20
- timeout,
25
+ config,
21
26
  );
22
27
  }
23
28
 
29
+ get scripts(): typeof MAINNET_SCRIPTS {
30
+ return this.config?.scripts ?? MAINNET_SCRIPTS;
31
+ }
32
+
24
33
  get addressPrefix(): string {
25
34
  return "ckb";
26
35
  }
@@ -1,4 +1,6 @@
1
+ import WebSocket from "isomorphic-ws";
1
2
  import { Script } from "../ckb/index.js";
3
+ import { ClientCache } from "./cache/index.js";
2
4
  import { CellDepInfo, KnownScript } from "./client.js";
3
5
  import { TESTNET_SCRIPTS } from "./clientPublicTestnet.advanced.js";
4
6
  import { ClientJsonRpc } from "./jsonRpc/index.js";
@@ -8,19 +10,26 @@ import { ClientJsonRpc } from "./jsonRpc/index.js";
8
10
  */
9
11
  export class ClientPublicTestnet extends ClientJsonRpc {
10
12
  constructor(
11
- url?: string,
12
- timeout?: number,
13
- private readonly scripts = TESTNET_SCRIPTS,
13
+ private readonly config?: {
14
+ url?: string;
15
+ timeout?: number;
16
+ scripts?: typeof TESTNET_SCRIPTS;
17
+ cache?: ClientCache;
18
+ },
14
19
  ) {
15
20
  super(
16
- url ??
21
+ config?.url ??
17
22
  (typeof WebSocket !== "undefined"
18
23
  ? "wss://testnet.ckb.dev/ws"
19
24
  : "https://testnet.ckb.dev/"),
20
- timeout,
25
+ config,
21
26
  );
22
27
  }
23
28
 
29
+ get scripts(): typeof TESTNET_SCRIPTS {
30
+ return this.config?.scripts ?? TESTNET_SCRIPTS;
31
+ }
32
+
24
33
  get addressPrefix(): string {
25
34
  return "ckt";
26
35
  }
@@ -1,7 +1,8 @@
1
- import { apply } from "../../barrel.js";
2
1
  import { TransactionLike } from "../../ckb/index.js";
3
2
  import { Hex, HexLike, hexFrom } from "../../hex/index.js";
4
3
  import { Num, NumLike, numFrom, numToHex } from "../../num/index.js";
4
+ import { apply } from "../../utils/index.js";
5
+ import { ClientCache } from "../cache/index.js";
5
6
  import { Client } from "../client.js";
6
7
  import {
7
8
  ClientFindCellsResponse,
@@ -57,11 +58,11 @@ export abstract class ClientJsonRpc extends Client {
57
58
 
58
59
  constructor(
59
60
  private readonly url_: string,
60
- private readonly timeout?: number,
61
+ config?: { timeout?: number; cache?: ClientCache },
61
62
  ) {
62
- super();
63
+ super(config);
63
64
 
64
- this.transport = transportFromUri(url_);
65
+ this.transport = transportFromUri(url_, config);
65
66
  }
66
67
 
67
68
  /**
@@ -1,3 +1,4 @@
1
+ import WebSocket from "isomorphic-ws";
1
2
  import { JsonRpcPayload, Transport } from "./transport.js";
2
3
 
3
4
  export class TransportWebSocket implements Transport {