@ckb-ccc/core 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/ckb/transaction.d.ts +57 -4
  3. package/dist/ckb/transaction.d.ts.map +1 -1
  4. package/dist/ckb/transaction.js +83 -26
  5. package/dist/client/cache/cache.d.ts +67 -11
  6. package/dist/client/cache/cache.d.ts.map +1 -1
  7. package/dist/client/cache/cache.js +94 -9
  8. package/dist/client/cache/memory.advanced.d.ts +2 -2
  9. package/dist/client/cache/memory.advanced.d.ts.map +1 -1
  10. package/dist/client/cache/memory.advanced.js +19 -7
  11. package/dist/client/cache/memory.d.ts +24 -7
  12. package/dist/client/cache/memory.d.ts.map +1 -1
  13. package/dist/client/cache/memory.js +76 -18
  14. package/dist/client/client.d.ts +27 -6
  15. package/dist/client/client.d.ts.map +1 -1
  16. package/dist/client/client.js +113 -22
  17. package/dist/client/clientPublicMainnet.d.ts.map +1 -1
  18. package/dist/client/clientPublicMainnet.js +1 -6
  19. package/dist/client/clientTypes.advanced.d.ts +3 -0
  20. package/dist/client/clientTypes.advanced.d.ts.map +1 -1
  21. package/dist/client/clientTypes.advanced.js +3 -0
  22. package/dist/client/clientTypes.d.ts +110 -13
  23. package/dist/client/clientTypes.d.ts.map +1 -1
  24. package/dist/client/clientTypes.js +118 -4
  25. package/dist/client/jsonRpc/client.d.ts +4 -4
  26. package/dist/client/jsonRpc/client.d.ts.map +1 -1
  27. package/dist/client/jsonRpc/client.js +4 -4
  28. package/dist/client/jsonRpc/transformers.js +3 -3
  29. package/dist/jsonRpc/transports/webSocket.d.ts.map +1 -1
  30. package/dist/jsonRpc/transports/webSocket.js +7 -3
  31. package/dist/molecule/predefined.d.ts +10 -10
  32. package/dist/molecule/predefined.d.ts.map +1 -1
  33. package/dist/utils/index.d.ts +4 -0
  34. package/dist/utils/index.d.ts.map +1 -1
  35. package/dist/utils/index.js +13 -1
  36. package/dist.commonjs/advanced.js +17 -7
  37. package/dist.commonjs/ckb/transaction.d.ts +57 -4
  38. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  39. package/dist.commonjs/ckb/transaction.js +83 -26
  40. package/dist.commonjs/client/cache/cache.d.ts +67 -11
  41. package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
  42. package/dist.commonjs/client/cache/cache.js +94 -9
  43. package/dist.commonjs/client/cache/memory.advanced.d.ts +2 -2
  44. package/dist.commonjs/client/cache/memory.advanced.d.ts.map +1 -1
  45. package/dist.commonjs/client/cache/memory.advanced.js +19 -7
  46. package/dist.commonjs/client/cache/memory.d.ts +24 -7
  47. package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
  48. package/dist.commonjs/client/cache/memory.js +75 -17
  49. package/dist.commonjs/client/client.d.ts +27 -6
  50. package/dist.commonjs/client/client.d.ts.map +1 -1
  51. package/dist.commonjs/client/client.js +111 -20
  52. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
  53. package/dist.commonjs/client/clientPublicMainnet.js +1 -6
  54. package/dist.commonjs/client/clientTypes.advanced.d.ts +3 -0
  55. package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -1
  56. package/dist.commonjs/client/clientTypes.advanced.js +4 -0
  57. package/dist.commonjs/client/clientTypes.d.ts +110 -13
  58. package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
  59. package/dist.commonjs/client/clientTypes.js +123 -4
  60. package/dist.commonjs/client/jsonRpc/client.d.ts +4 -4
  61. package/dist.commonjs/client/jsonRpc/client.d.ts.map +1 -1
  62. package/dist.commonjs/client/jsonRpc/client.js +4 -4
  63. package/dist.commonjs/client/jsonRpc/transformers.js +2 -2
  64. package/dist.commonjs/index.js +17 -7
  65. package/dist.commonjs/jsonRpc/transports/webSocket.d.ts.map +1 -1
  66. package/dist.commonjs/jsonRpc/transports/webSocket.js +7 -3
  67. package/dist.commonjs/molecule/index.js +17 -7
  68. package/dist.commonjs/utils/index.d.ts +4 -0
  69. package/dist.commonjs/utils/index.d.ts.map +1 -1
  70. package/dist.commonjs/utils/index.js +13 -0
  71. package/package.json +1 -1
  72. package/src/ckb/transaction.ts +112 -41
  73. package/src/client/cache/cache.ts +126 -13
  74. package/src/client/cache/memory.advanced.ts +24 -7
  75. package/src/client/cache/memory.ts +130 -30
  76. package/src/client/client.ts +170 -27
  77. package/src/client/clientPublicMainnet.ts +1 -6
  78. package/src/client/clientTypes.advanced.ts +4 -0
  79. package/src/client/clientTypes.ts +224 -33
  80. package/src/client/jsonRpc/client.ts +11 -9
  81. package/src/client/jsonRpc/transformers.ts +2 -2
  82. package/src/jsonRpc/transports/webSocket.ts +17 -13
  83. package/src/utils/index.ts +14 -1
@@ -169,11 +169,11 @@ export abstract class ClientJsonRpc extends Client {
169
169
  * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
170
170
  * @returns Block
171
171
  */
172
- getBlockByNumber = this.buildSender(
172
+ getBlockByNumberNoCache = this.buildSender(
173
173
  "get_block_by_number",
174
174
  [(v: NumLike) => numToHex(numFrom(v))],
175
175
  (b: JsonRpcBlock) => apply(JsonRpcTransformers.blockTo, b),
176
- ) as Client["getBlockByNumber"];
176
+ ) as Client["getBlockByNumberNoCache"];
177
177
 
178
178
  /**
179
179
  * Get block by block hash
@@ -183,9 +183,11 @@ export abstract class ClientJsonRpc extends Client {
183
183
  * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
184
184
  * @returns Block
185
185
  */
186
- getBlockByHash = this.buildSender("get_block", [hexFrom], (b: JsonRpcBlock) =>
187
- apply(JsonRpcTransformers.blockTo, b),
188
- ) as Client["getBlockByHash"];
186
+ getBlockByHashNoCache = this.buildSender(
187
+ "get_block",
188
+ [hexFrom],
189
+ (b: JsonRpcBlock) => apply(JsonRpcTransformers.blockTo, b),
190
+ ) as Client["getBlockByHashNoCache"];
189
191
 
190
192
  /**
191
193
  * Get header by block number
@@ -194,11 +196,11 @@ export abstract class ClientJsonRpc extends Client {
194
196
  * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
195
197
  * @returns BlockHeader
196
198
  */
197
- getHeaderByNumber = this.buildSender(
199
+ getHeaderByNumberNoCache = this.buildSender(
198
200
  "get_header_by_number",
199
201
  [(v: NumLike) => numToHex(numFrom(v))],
200
202
  (b: JsonRpcBlockHeader) => apply(JsonRpcTransformers.blockHeaderTo, b),
201
- ) as Client["getHeaderByNumber"];
203
+ ) as Client["getHeaderByNumberNoCache"];
202
204
 
203
205
  /**
204
206
  * Get header by block hash
@@ -207,11 +209,11 @@ export abstract class ClientJsonRpc extends Client {
207
209
  * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
208
210
  * @returns BlockHeader
209
211
  */
210
- getHeaderByHash = this.buildSender(
212
+ getHeaderByHashNoCache = this.buildSender(
211
213
  "get_header",
212
214
  [hexFrom],
213
215
  (b: JsonRpcBlockHeader) => apply(JsonRpcTransformers.blockHeaderTo, b),
214
- ) as Client["getHeaderByHash"];
216
+ ) as Client["getHeaderByHashNoCache"];
215
217
 
216
218
  /**
217
219
  * Estimate cycles of a transaction.
@@ -192,7 +192,7 @@ export class JsonRpcTransformers {
192
192
  return;
193
193
  }
194
194
 
195
- return {
195
+ return ClientTransactionResponse.from({
196
196
  transaction: JsonRpcTransformers.transactionTo(transaction),
197
197
  status,
198
198
  cycles: apply(numFrom, cycles),
@@ -200,7 +200,7 @@ export class JsonRpcTransformers {
200
200
  blockNumber: apply(numFrom, block_number),
201
201
  txIndex: apply(numFrom, tx_index),
202
202
  reason,
203
- };
203
+ });
204
204
  }
205
205
  static blockHeaderTo(header: JsonRpcBlockHeader): ClientBlockHeader {
206
206
  const dao = bytesFrom(header.dao);
@@ -87,24 +87,28 @@ export class TransportWebSocket implements Transport {
87
87
  reject,
88
88
  setTimeout(() => {
89
89
  this.ongoing.delete(data.id);
90
- void socket.then((socket) => socket.close());
90
+ void socket
91
+ .then((socket) => socket.close())
92
+ .catch((err) => reject(err));
91
93
  reject(new Error("Request timeout"));
92
94
  }, this.timeout),
93
95
  ];
94
96
  this.ongoing.set(data.id, req);
95
97
 
96
- void socket.then((socket) => {
97
- if (
98
- socket.readyState === socket.CLOSED ||
99
- socket.readyState === socket.CLOSING
100
- ) {
101
- clearTimeout(req[2]);
102
- this.ongoing.delete(data.id);
103
- reject(new Error("Connection closed"));
104
- } else {
105
- socket.send(JSON.stringify(data));
106
- }
107
- });
98
+ void socket
99
+ .then((socket) => {
100
+ if (
101
+ socket.readyState === socket.CLOSED ||
102
+ socket.readyState === socket.CLOSING
103
+ ) {
104
+ clearTimeout(req[2]);
105
+ this.ongoing.delete(data.id);
106
+ reject(new Error("Connection closed"));
107
+ } else {
108
+ socket.send(JSON.stringify(data));
109
+ }
110
+ })
111
+ .catch((err) => reject(err));
108
112
  });
109
113
  }
110
114
  }
@@ -1,4 +1,4 @@
1
- import { NumLike, numFrom } from "../num/index.js";
1
+ import { NumLike, numFrom, numToHex } from "../num/index.js";
2
2
 
3
3
  /**
4
4
  * A type safe way to apply a transformer on a value if it's not empty.
@@ -183,3 +183,16 @@ export type Constructor<T> = {
183
183
  export function isWebview(userAgent: string): boolean {
184
184
  return /webview|wv|ip((?!.*Safari)|(?=.*like Safari))/i.test(userAgent);
185
185
  }
186
+
187
+ /**
188
+ * @public
189
+ */
190
+ export function stringify(val: unknown) {
191
+ return JSON.stringify(val, (_, value) => {
192
+ if (typeof value === "bigint") {
193
+ return numToHex(value);
194
+ }
195
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
196
+ return value;
197
+ });
198
+ }