@ckb-ccc/core 1.2.2 → 1.3.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 (145) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/advancedBarrel.d.ts +1 -0
  3. package/dist/advancedBarrel.d.ts.map +1 -1
  4. package/dist/advancedBarrel.js +1 -0
  5. package/dist/barrel.d.ts +1 -0
  6. package/dist/barrel.d.ts.map +1 -1
  7. package/dist/barrel.js +1 -0
  8. package/dist/ckb/script.d.ts +1 -0
  9. package/dist/ckb/script.d.ts.map +1 -1
  10. package/dist/ckb/script.js +1 -0
  11. package/dist/ckb/transaction.d.ts +3 -1
  12. package/dist/ckb/transaction.d.ts.map +1 -1
  13. package/dist/ckb/transaction.js +25 -2
  14. package/dist/client/advanced.d.ts +0 -1
  15. package/dist/client/advanced.d.ts.map +1 -1
  16. package/dist/client/advanced.js +0 -1
  17. package/dist/client/clientPublicMainnet.d.ts +3 -9
  18. package/dist/client/clientPublicMainnet.d.ts.map +1 -1
  19. package/dist/client/clientPublicTestnet.d.ts +3 -9
  20. package/dist/client/clientPublicTestnet.d.ts.map +1 -1
  21. package/dist/client/jsonRpc/client.d.ts +160 -0
  22. package/dist/client/jsonRpc/client.d.ts.map +1 -0
  23. package/dist/client/jsonRpc/client.js +220 -0
  24. package/dist/client/jsonRpc/index.d.ts +1 -182
  25. package/dist/client/jsonRpc/index.d.ts.map +1 -1
  26. package/dist/client/jsonRpc/index.js +1 -293
  27. package/dist/jsonRpc/advanced.d.ts +2 -0
  28. package/dist/jsonRpc/advanced.d.ts.map +1 -0
  29. package/dist/jsonRpc/advanced.js +1 -0
  30. package/dist/jsonRpc/index.d.ts +2 -0
  31. package/dist/jsonRpc/index.d.ts.map +1 -0
  32. package/dist/jsonRpc/index.js +1 -0
  33. package/dist/jsonRpc/requestor.d.ts +48 -0
  34. package/dist/jsonRpc/requestor.d.ts.map +1 -0
  35. package/dist/jsonRpc/requestor.js +107 -0
  36. package/dist/jsonRpc/transports/advanced.d.ts +5 -0
  37. package/dist/jsonRpc/transports/advanced.d.ts.map +1 -0
  38. package/dist/jsonRpc/transports/advanced.js +4 -0
  39. package/dist/{client/transports/advanced.d.ts → jsonRpc/transports/factory.d.ts} +1 -4
  40. package/dist/jsonRpc/transports/factory.d.ts.map +1 -0
  41. package/dist/{client/transports/advanced.js → jsonRpc/transports/factory.js} +0 -3
  42. package/dist/jsonRpc/transports/http.d.ts.map +1 -0
  43. package/dist/jsonRpc/transports/transport.d.ts +18 -0
  44. package/dist/jsonRpc/transports/transport.d.ts.map +1 -0
  45. package/dist/jsonRpc/transports/webSocket.d.ts.map +1 -0
  46. package/dist/molecule/codec.d.ts.map +1 -1
  47. package/dist/molecule/codec.js +3 -3
  48. package/dist/molecule/predefined.d.ts +12 -0
  49. package/dist/molecule/predefined.d.ts.map +1 -1
  50. package/dist/molecule/predefined.js +28 -0
  51. package/dist/num/index.d.ts.map +1 -1
  52. package/dist/num/index.js +10 -2
  53. package/dist.commonjs/advancedBarrel.d.ts +1 -0
  54. package/dist.commonjs/advancedBarrel.d.ts.map +1 -1
  55. package/dist.commonjs/advancedBarrel.js +1 -0
  56. package/dist.commonjs/barrel.d.ts +1 -0
  57. package/dist.commonjs/barrel.d.ts.map +1 -1
  58. package/dist.commonjs/barrel.js +1 -0
  59. package/dist.commonjs/ckb/script.d.ts +1 -0
  60. package/dist.commonjs/ckb/script.d.ts.map +1 -1
  61. package/dist.commonjs/ckb/script.js +2 -1
  62. package/dist.commonjs/ckb/transaction.d.ts +3 -1
  63. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  64. package/dist.commonjs/ckb/transaction.js +25 -2
  65. package/dist.commonjs/client/advanced.d.ts +0 -1
  66. package/dist.commonjs/client/advanced.d.ts.map +1 -1
  67. package/dist.commonjs/client/advanced.js +0 -1
  68. package/dist.commonjs/client/clientPublicMainnet.d.ts +3 -9
  69. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
  70. package/dist.commonjs/client/clientPublicTestnet.d.ts +3 -9
  71. package/dist.commonjs/client/clientPublicTestnet.d.ts.map +1 -1
  72. package/dist.commonjs/client/jsonRpc/client.d.ts +160 -0
  73. package/dist.commonjs/client/jsonRpc/client.d.ts.map +1 -0
  74. package/dist.commonjs/client/jsonRpc/client.js +224 -0
  75. package/dist.commonjs/client/jsonRpc/index.d.ts +1 -182
  76. package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
  77. package/dist.commonjs/client/jsonRpc/index.js +15 -295
  78. package/dist.commonjs/jsonRpc/advanced.d.ts +2 -0
  79. package/dist.commonjs/jsonRpc/advanced.d.ts.map +1 -0
  80. package/dist.commonjs/jsonRpc/advanced.js +17 -0
  81. package/dist.commonjs/jsonRpc/index.d.ts +2 -0
  82. package/dist.commonjs/jsonRpc/index.d.ts.map +1 -0
  83. package/dist.commonjs/jsonRpc/index.js +17 -0
  84. package/dist.commonjs/jsonRpc/requestor.d.ts +48 -0
  85. package/dist.commonjs/jsonRpc/requestor.d.ts.map +1 -0
  86. package/dist.commonjs/jsonRpc/requestor.js +111 -0
  87. package/dist.commonjs/jsonRpc/transports/advanced.d.ts +5 -0
  88. package/dist.commonjs/jsonRpc/transports/advanced.d.ts.map +1 -0
  89. package/dist.commonjs/{client → jsonRpc}/transports/advanced.js +1 -9
  90. package/dist.commonjs/{client/transports/advanced.d.ts → jsonRpc/transports/factory.d.ts} +1 -4
  91. package/dist.commonjs/jsonRpc/transports/factory.d.ts.map +1 -0
  92. package/dist.commonjs/jsonRpc/transports/factory.js +11 -0
  93. package/dist.commonjs/jsonRpc/transports/http.d.ts.map +1 -0
  94. package/dist.commonjs/jsonRpc/transports/transport.d.ts +18 -0
  95. package/dist.commonjs/jsonRpc/transports/transport.d.ts.map +1 -0
  96. package/dist.commonjs/jsonRpc/transports/webSocket.d.ts.map +1 -0
  97. package/dist.commonjs/molecule/codec.d.ts.map +1 -1
  98. package/dist.commonjs/molecule/codec.js +3 -3
  99. package/dist.commonjs/molecule/predefined.d.ts +12 -0
  100. package/dist.commonjs/molecule/predefined.d.ts.map +1 -1
  101. package/dist.commonjs/molecule/predefined.js +30 -1
  102. package/dist.commonjs/num/index.d.ts.map +1 -1
  103. package/dist.commonjs/num/index.js +10 -2
  104. package/package.json +1 -1
  105. package/src/advancedBarrel.ts +1 -0
  106. package/src/barrel.ts +1 -0
  107. package/src/ckb/script.ts +1 -0
  108. package/src/ckb/transaction.ts +52 -2
  109. package/src/client/advanced.ts +0 -1
  110. package/src/client/clientPublicMainnet.ts +2 -8
  111. package/src/client/clientPublicTestnet.ts +2 -8
  112. package/src/client/jsonRpc/client.ts +395 -0
  113. package/src/client/jsonRpc/index.ts +1 -490
  114. package/src/jsonRpc/advanced.ts +1 -0
  115. package/src/jsonRpc/index.ts +1 -0
  116. package/src/jsonRpc/requestor.ts +157 -0
  117. package/src/jsonRpc/transports/advanced.ts +4 -0
  118. package/src/{client/transports/advanced.ts → jsonRpc/transports/factory.ts} +0 -4
  119. package/src/jsonRpc/transports/transport.ts +18 -0
  120. package/src/molecule/codec.ts +5 -3
  121. package/src/molecule/predefined.ts +32 -0
  122. package/src/num/index.ts +12 -2
  123. package/dist/client/transports/advanced.d.ts.map +0 -1
  124. package/dist/client/transports/http.d.ts.map +0 -1
  125. package/dist/client/transports/transport.d.ts +0 -10
  126. package/dist/client/transports/transport.d.ts.map +0 -1
  127. package/dist/client/transports/webSocket.d.ts.map +0 -1
  128. package/dist.commonjs/client/transports/advanced.d.ts.map +0 -1
  129. package/dist.commonjs/client/transports/http.d.ts.map +0 -1
  130. package/dist.commonjs/client/transports/transport.d.ts +0 -10
  131. package/dist.commonjs/client/transports/transport.d.ts.map +0 -1
  132. package/dist.commonjs/client/transports/webSocket.d.ts.map +0 -1
  133. package/src/client/transports/transport.ts +0 -10
  134. /package/dist/{client → jsonRpc}/transports/http.d.ts +0 -0
  135. /package/dist/{client → jsonRpc}/transports/http.js +0 -0
  136. /package/dist/{client → jsonRpc}/transports/transport.js +0 -0
  137. /package/dist/{client → jsonRpc}/transports/webSocket.d.ts +0 -0
  138. /package/dist/{client → jsonRpc}/transports/webSocket.js +0 -0
  139. /package/dist.commonjs/{client → jsonRpc}/transports/http.d.ts +0 -0
  140. /package/dist.commonjs/{client → jsonRpc}/transports/http.js +0 -0
  141. /package/dist.commonjs/{client → jsonRpc}/transports/transport.js +0 -0
  142. /package/dist.commonjs/{client → jsonRpc}/transports/webSocket.d.ts +0 -0
  143. /package/dist.commonjs/{client → jsonRpc}/transports/webSocket.js +0 -0
  144. /package/src/{client → jsonRpc}/transports/http.ts +0 -0
  145. /package/src/{client → jsonRpc}/transports/webSocket.ts +0 -0
@@ -1,293 +1 @@
1
- import { Cell, OutPoint, } from "../../ckb/index.js";
2
- import { hexFrom } from "../../hex/index.js";
3
- import { numFrom, numToHex } from "../../num/index.js";
4
- import { apply } from "../../utils/index.js";
5
- import { Client } from "../client.js";
6
- import { ErrorClientBase, ErrorClientDuplicatedTransaction, ErrorClientRBFRejected, ErrorClientResolveUnknown, ErrorClientVerification, } from "../clientTypes.js";
7
- import { transportFromUri, } from "../transports/advanced.js";
8
- import { JsonRpcTransformers, } from "./advanced.js";
9
- /**
10
- * Applies a transformation function to a value if the transformer is provided.
11
- *
12
- * @param value - The value to be transformed.
13
- * @param transformer - An optional transformation function.
14
- * @returns The transformed value if a transformer is provided, otherwise the original value.
15
- *
16
- * @example
17
- * ```typescript
18
- * const result = transform(5, (x) => x * 2); // Outputs 10
19
- * const resultWithoutTransformer = transform(5); // Outputs 5
20
- * ```
21
- */
22
- function transform(value, transformer) {
23
- if (transformer) {
24
- return transformer(value);
25
- }
26
- return value;
27
- }
28
- const ERROR_PARSERS = [
29
- [
30
- "Resolve\\(Unknown\\(OutPoint\\((0x.*)\\)\\)\\)",
31
- (error, match) => new ErrorClientResolveUnknown(error, OutPoint.fromBytes(match[1])),
32
- ],
33
- [
34
- "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",
35
- (error, match) => new ErrorClientVerification(error, match[3] === "Lock"
36
- ? "lock"
37
- : match[1] === "Inputs"
38
- ? "inputType"
39
- : "outputType", match[2], Number(match[4]), match[5] === "data" ? "data" : "type", match[6]),
40
- ],
41
- [
42
- "Duplicated\\(Byte32\\((0x.*)\\)\\)",
43
- (error, match) => new ErrorClientDuplicatedTransaction(error, match[1]),
44
- ],
45
- [
46
- 'RBFRejected\\("Tx\'s current fee is ([0-9]*), expect it to >= ([0-9]*) to replace old txs"\\)',
47
- (error, match) => new ErrorClientRBFRejected(error, match[1], match[2]),
48
- ],
49
- ];
50
- /**
51
- * An abstract class implementing JSON-RPC client functionality for a specific URL and timeout.
52
- * Provides methods for sending transactions and building JSON-RPC payloads.
53
- */
54
- export class ClientJsonRpc extends Client {
55
- /**
56
- * Creates an instance of ClientJsonRpc.
57
- *
58
- * @param url_ - The URL of the JSON-RPC server.
59
- * @param timeout - The timeout for requests in milliseconds
60
- */
61
- constructor(url_, config) {
62
- super(config);
63
- this.url_ = url_;
64
- this.concurrent = 0;
65
- this.pending = [];
66
- this.id = 0;
67
- /**
68
- * Get fee rate statistics
69
- *
70
- * @returns Fee rate statistics
71
- */
72
- this.getFeeRateStatistics = this.buildSender("get_fee_rate_statistics", [(n) => apply(numFrom, n)], ({ mean, median }) => ({
73
- mean: numFrom(mean),
74
- median: numFrom(median),
75
- }));
76
- /**
77
- * Get tip block number
78
- *
79
- * @returns Tip block number
80
- */
81
- this.getTip = this.buildSender("get_tip_block_number", [], numFrom);
82
- /**
83
- * Get tip block header
84
- *
85
- * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
86
- * @returns BlockHeader
87
- */
88
- this.getTipHeader = this.buildSender("get_tip_header", [], (b) => apply(JsonRpcTransformers.blockHeaderTo, b));
89
- /**
90
- * Get block by block number
91
- *
92
- * @param blockNumber - The block number.
93
- * @param verbosity - result format which allows 0 and 2. (Optional, the default is 2.)
94
- * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
95
- * @returns Block
96
- */
97
- this.getBlockByNumber = this.buildSender("get_block_by_number", [(v) => numToHex(numFrom(v))], (b) => apply(JsonRpcTransformers.blockTo, b));
98
- /**
99
- * Get block by block hash
100
- *
101
- * @param blockHash - The block hash.
102
- * @param verbosity - result format which allows 0 and 2. (Optional, the default is 2.)
103
- * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)
104
- * @returns Block
105
- */
106
- this.getBlockByHash = this.buildSender("get_block", [hexFrom], (b) => apply(JsonRpcTransformers.blockTo, b));
107
- /**
108
- * Get header by block number
109
- *
110
- * @param blockNumber - The block number.
111
- * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
112
- * @returns BlockHeader
113
- */
114
- this.getHeaderByNumber = this.buildSender("get_header_by_number", [(v) => numToHex(numFrom(v))], (b) => apply(JsonRpcTransformers.blockHeaderTo, b));
115
- /**
116
- * Get header by block hash
117
- *
118
- * @param blockHash - The block hash.
119
- * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)
120
- * @returns BlockHeader
121
- */
122
- this.getHeaderByHash = this.buildSender("get_header", [hexFrom], (b) => apply(JsonRpcTransformers.blockHeaderTo, b));
123
- /**
124
- * Estimate cycles of a transaction.
125
- *
126
- * @param transaction - The transaction to estimate.
127
- * @returns Consumed cycles
128
- */
129
- this.estimateCycles = this.buildSender("estimate_cycles", [JsonRpcTransformers.transactionFrom], ({ cycles }) => numFrom(cycles));
130
- /**
131
- * Test a transaction.
132
- *
133
- * @param transaction - The transaction to test.
134
- * @param validator - "passthrough": Disable validation. "well_known_scripts_only": Only accept well known scripts in the transaction.
135
- * @returns Consumed cycles
136
- */
137
- this.sendTransactionDry = this.buildSender("test_tx_pool_accept", [JsonRpcTransformers.transactionFrom], ({ cycles }) => numFrom(cycles));
138
- /**
139
- * Send a transaction to node.
140
- *
141
- * @param transaction - The transaction to send.
142
- * @param validator - "passthrough": Disable validation. "well_known_scripts_only": Only accept well known scripts in the transaction.
143
- * @returns Transaction hash.
144
- */
145
- this.sendTransactionNoCache = this.buildSender("send_transaction", [JsonRpcTransformers.transactionFrom], hexFrom);
146
- /**
147
- * Get a transaction from node.
148
- *
149
- * @param txHash - The hash of the transaction.
150
- * @returns The transaction with status.
151
- */
152
- this.getTransactionNoCache = this.buildSender("get_transaction", [hexFrom], JsonRpcTransformers.transactionResponseTo);
153
- /**
154
- * find cells from node.
155
- *
156
- * @param key - The search key of cells.
157
- * @param order - The order of cells.
158
- * @param limit - The max return size of cells.
159
- * @param after - Pagination parameter.
160
- * @returns The found cells.
161
- */
162
- this.findCellsPagedNoCache = this.buildSender("get_cells", [
163
- JsonRpcTransformers.indexerSearchKeyFrom,
164
- (order) => order ?? "asc",
165
- (limit) => numToHex(limit ?? 10),
166
- ], JsonRpcTransformers.findCellsResponseTo);
167
- /**
168
- * find transactions from node.
169
- *
170
- * @param key - The search key of transactions.
171
- * @param order - The order of transactions.
172
- * @param limit - The max return size of transactions.
173
- * @param after - Pagination parameter.
174
- * @returns The found transactions.
175
- */
176
- this.findTransactionsPaged = this.buildSender("get_transactions", [
177
- JsonRpcTransformers.indexerSearchKeyTransactionFrom,
178
- (order) => order ?? "asc",
179
- (limit) => numToHex(limit ?? 10),
180
- ], JsonRpcTransformers.findTransactionsResponseTo);
181
- /**
182
- * get cells capacity from node.
183
- *
184
- * @param key - The search key of cells.
185
- * @returns The sum of cells capacity.
186
- */
187
- this.getCellsCapacity = this.buildSender("get_cells_capacity", [JsonRpcTransformers.indexerSearchKeyFrom], ({ capacity }) => numFrom(capacity));
188
- this.maxConcurrent = config?.maxConcurrent;
189
- this.transport = config?.transport ?? transportFromUri(url_, config);
190
- }
191
- /**
192
- * Returns the URL of the JSON-RPC server.
193
- *
194
- * @returns The URL of the JSON-RPC server.
195
- */
196
- get url() {
197
- return this.url_;
198
- }
199
- /**
200
- * Get a live cell from node.
201
- *
202
- * @param outPoint - The out point of the cell.
203
- * @param withData - Include data in the response.
204
- * @param includeTxPool - Include cells in the tx pool.
205
- * @returns The cell
206
- */
207
- getCellLiveNoCache(outPoint, withData, includeTxPool) {
208
- return this.buildSender("get_live_cell", [JsonRpcTransformers.outPointFrom], ({ cell, }) => apply(({ output, data, }) => Cell.from({
209
- cellOutput: JsonRpcTransformers.cellOutputTo(output),
210
- outputData: data?.content ?? "0x",
211
- outPoint,
212
- }), cell))(outPoint, withData ?? true, includeTxPool);
213
- }
214
- /**
215
- * Builds a sender function for a JSON-RPC method.
216
- *
217
- * @param rpcMethod - The JSON-RPC method.
218
- * @param inTransformers - An array of input transformers.
219
- * @param outTransformer - An output transformer function.
220
- * @returns A function that sends a JSON-RPC request with the given method and transformed parameters.
221
- */
222
- buildSender(rpcMethod,
223
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
224
- inTransformers,
225
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
226
- outTransformer) {
227
- return async (...req) => {
228
- const payload = this.buildPayload(rpcMethod, req
229
- .concat(Array.from(new Array(Math.max(inTransformers.length - req.length, 0))))
230
- .map((v, i) => transform(v, inTransformers[i])));
231
- try {
232
- return transform(await this.send(payload), outTransformer);
233
- }
234
- catch (errAny) {
235
- if (typeof errAny !== "object" ||
236
- errAny === null ||
237
- !("data" in errAny) ||
238
- typeof errAny.data !== "string") {
239
- throw errAny;
240
- }
241
- const err = errAny;
242
- for (const [regexp, builder] of ERROR_PARSERS) {
243
- const match = err.data.match(regexp);
244
- if (match) {
245
- throw builder(err, match);
246
- }
247
- }
248
- throw new ErrorClientBase(err);
249
- }
250
- };
251
- }
252
- /**
253
- * Sends a JSON-RPC request to the server.
254
- *
255
- * @param payload - The JSON-RPC payload to send.
256
- * @returns The result of the JSON-RPC request.
257
- *
258
- * @throws Will throw an error if the response ID does not match the request ID, or if the response contains an error.
259
- */
260
- async send(payload) {
261
- if (this.maxConcurrent !== undefined &&
262
- this.concurrent >= this.maxConcurrent) {
263
- const pending = new Promise((resolve) => this.pending.push(resolve));
264
- await pending;
265
- }
266
- this.concurrent += 1;
267
- const res = (await this.transport.request(payload));
268
- this.concurrent -= 1;
269
- this.pending.shift()?.();
270
- if (res.id !== payload.id) {
271
- throw new Error(`Id mismatched, got ${res.id}, expected ${payload.id}`);
272
- }
273
- if (res.error) {
274
- throw res.error;
275
- }
276
- return res.result;
277
- }
278
- /**
279
- * Builds a JSON-RPC payload for the given method and parameters.
280
- *
281
- * @param method - The JSON-RPC method name.
282
- * @param req - The parameters for the JSON-RPC method.
283
- * @returns The JSON-RPC payload.
284
- */
285
- buildPayload(method, req) {
286
- return {
287
- id: this.id++,
288
- method,
289
- params: req,
290
- jsonrpc: "2.0",
291
- };
292
- }
293
- }
1
+ export * from "./client.js";
@@ -0,0 +1,2 @@
1
+ export * from "./transports/advanced.js";
2
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/jsonRpc/advanced.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./transports/advanced.js";
@@ -0,0 +1,2 @@
1
+ export * from "./requestor.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jsonRpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./requestor.js";
@@ -0,0 +1,48 @@
1
+ import { JsonRpcPayload, Transport } from "./transports/advanced.js";
2
+ export type RequestorJsonRpcConfig = {
3
+ timeout?: number;
4
+ maxConcurrent?: number;
5
+ transport?: Transport;
6
+ };
7
+ export declare class RequestorJsonRpc {
8
+ private readonly url_;
9
+ private readonly onError?;
10
+ readonly maxConcurrent?: number;
11
+ private concurrent;
12
+ private readonly pending;
13
+ readonly transport: Transport;
14
+ private id;
15
+ /**
16
+ * Creates an instance of ClientJsonRpc.
17
+ *
18
+ * @param url_ - The URL of the JSON-RPC server.
19
+ * @param timeout - The timeout for requests in milliseconds
20
+ */
21
+ constructor(url_: string, config?: RequestorJsonRpcConfig, onError?: ((err: unknown) => Promise<void> | void) | undefined);
22
+ /**
23
+ * Returns the URL of the JSON-RPC server.
24
+ *
25
+ * @returns The URL of the JSON-RPC server.
26
+ */
27
+ get url(): string;
28
+ /**
29
+ * request a JSON-RPC method.
30
+ *
31
+ * @param rpcMethod - The JSON-RPC method.
32
+ * @param params - Params for the method.
33
+ * @param inTransformers - An array of input transformers.
34
+ * @param outTransformer - An output transformer function.
35
+ * @returns Method response.
36
+ */
37
+ request(rpcMethod: string, params: unknown[], inTransformers?: (((_: any) => unknown) | undefined)[], outTransformer?: (_: any) => unknown): Promise<unknown>;
38
+ requestPayload(payload: JsonRpcPayload): Promise<unknown>;
39
+ /**
40
+ * Builds a JSON-RPC payload for the given method and parameters.
41
+ *
42
+ * @param method - The JSON-RPC method name.
43
+ * @param req - The parameters for the JSON-RPC method.
44
+ * @returns The JSON-RPC payload.
45
+ */
46
+ buildPayload(method: string, req: unknown[]): JsonRpcPayload;
47
+ }
48
+ //# sourceMappingURL=requestor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestor.d.ts","sourceRoot":"","sources":["../../src/jsonRpc/requestor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAsBlC,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,qBAAa,gBAAgB;IAgBzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAjB3B,SAAgB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,SAAgB,SAAS,EAAE,SAAS,CAAC;IAErC,OAAO,CAAC,EAAE,CAAK;IAEf;;;;;OAKG;gBAEgB,IAAI,EAAE,MAAM,EAC7B,MAAM,CAAC,EAAE,sBAAsB,EACd,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,aAAA;IAMnE;;;;OAIG;IAEH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;;;;;OAQG;IACG,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EAAE,EAEjB,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE,EAEtD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,GACnC,OAAO,CAAC,OAAO,CAAC;IA6Bb,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B/D;;;;;;OAMG;IAEH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc;CAQ7D"}
@@ -0,0 +1,107 @@
1
+ import { transportFromUri, } from "./transports/advanced.js";
2
+ /**
3
+ * Applies a transformation function to a value if the transformer is provided.
4
+ *
5
+ * @param value - The value to be transformed.
6
+ * @param transformer - An optional transformation function.
7
+ * @returns The transformed value if a transformer is provided, otherwise the original value.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const result = transform(5, (x) => x * 2); // Outputs 10
12
+ * const resultWithoutTransformer = transform(5); // Outputs 5
13
+ * ```
14
+ */
15
+ function transform(value, transformer) {
16
+ if (transformer) {
17
+ return transformer(value);
18
+ }
19
+ return value;
20
+ }
21
+ export class RequestorJsonRpc {
22
+ /**
23
+ * Creates an instance of ClientJsonRpc.
24
+ *
25
+ * @param url_ - The URL of the JSON-RPC server.
26
+ * @param timeout - The timeout for requests in milliseconds
27
+ */
28
+ constructor(url_, config, onError) {
29
+ this.url_ = url_;
30
+ this.onError = onError;
31
+ this.concurrent = 0;
32
+ this.pending = [];
33
+ this.id = 0;
34
+ this.maxConcurrent = config?.maxConcurrent;
35
+ this.transport = config?.transport ?? transportFromUri(url_, config);
36
+ }
37
+ /**
38
+ * Returns the URL of the JSON-RPC server.
39
+ *
40
+ * @returns The URL of the JSON-RPC server.
41
+ */
42
+ get url() {
43
+ return this.url_;
44
+ }
45
+ /**
46
+ * request a JSON-RPC method.
47
+ *
48
+ * @param rpcMethod - The JSON-RPC method.
49
+ * @param params - Params for the method.
50
+ * @param inTransformers - An array of input transformers.
51
+ * @param outTransformer - An output transformer function.
52
+ * @returns Method response.
53
+ */
54
+ async request(rpcMethod, params,
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ inTransformers,
57
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ outTransformer) {
59
+ const payload = this.buildPayload(rpcMethod, inTransformers
60
+ ? await Promise.all(params
61
+ .concat(Array.from(new Array(Math.max(inTransformers.length - params.length, 0))))
62
+ .map((v, i) => transform(v, inTransformers[i])))
63
+ : params);
64
+ try {
65
+ return await transform(await this.requestPayload(payload), outTransformer);
66
+ }
67
+ catch (err) {
68
+ if (!this.onError) {
69
+ throw err;
70
+ }
71
+ await this.onError(err);
72
+ }
73
+ }
74
+ async requestPayload(payload) {
75
+ if (this.maxConcurrent !== undefined &&
76
+ this.concurrent >= this.maxConcurrent) {
77
+ const pending = new Promise((resolve) => this.pending.push(resolve));
78
+ await pending;
79
+ }
80
+ this.concurrent += 1;
81
+ const res = (await this.transport.request(payload));
82
+ this.concurrent -= 1;
83
+ this.pending.shift()?.();
84
+ if (res.id !== payload.id) {
85
+ throw new Error(`Id mismatched, got ${res.id}, expected ${payload.id}`);
86
+ }
87
+ if (res.error) {
88
+ throw res.error;
89
+ }
90
+ return res.result;
91
+ }
92
+ /**
93
+ * Builds a JSON-RPC payload for the given method and parameters.
94
+ *
95
+ * @param method - The JSON-RPC method name.
96
+ * @param req - The parameters for the JSON-RPC method.
97
+ * @returns The JSON-RPC payload.
98
+ */
99
+ buildPayload(method, req) {
100
+ return {
101
+ id: this.id++,
102
+ method,
103
+ params: req,
104
+ jsonrpc: "2.0",
105
+ };
106
+ }
107
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./factory.js";
2
+ export * from "./http.js";
3
+ export * from "./transport.js";
4
+ export * from "./webSocket.js";
5
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../../src/jsonRpc/transports/advanced.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./factory.js";
2
+ export * from "./http.js";
3
+ export * from "./transport.js";
4
+ export * from "./webSocket.js";
@@ -1,9 +1,6 @@
1
1
  import { TransportHttp } from "./http.js";
2
2
  import { TransportWebSocket } from "./webSocket.js";
3
- export * from "./http.js";
4
- export * from "./transport.js";
5
- export * from "./webSocket.js";
6
3
  export declare function transportFromUri(uri: string, config?: {
7
4
  timeout?: number;
8
5
  }): TransportHttp | TransportWebSocket;
9
- //# sourceMappingURL=advanced.d.ts.map
6
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/jsonRpc/transports/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,sCAM1E"}
@@ -1,8 +1,5 @@
1
1
  import { TransportHttp } from "./http.js";
2
2
  import { TransportWebSocket } from "./webSocket.js";
3
- export * from "./http.js";
4
- export * from "./transport.js";
5
- export * from "./webSocket.js";
6
3
  export function transportFromUri(uri, config) {
7
4
  if (uri.startsWith("wss://") || uri.startsWith("ws://")) {
8
5
  return new TransportWebSocket(uri, config?.timeout);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/jsonRpc/transports/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,aAAc,YAAW,SAAS;IAE3C,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,GAAG,EAAE,MAAM,EACX,OAAO,SAAQ;IAG5B,OAAO,CAAC,OAAO,EAAE,cAAc;CAmBtC"}
@@ -0,0 +1,18 @@
1
+ export type JsonRpcPayload = {
2
+ id: number;
3
+ jsonrpc: "2.0";
4
+ method: string;
5
+ params: unknown[] | Record<string, unknown>;
6
+ };
7
+ export interface Transport {
8
+ /**
9
+ * Sends a JSON-RPC request to the server.
10
+ *
11
+ * @param payload - The JSON-RPC payload to send.
12
+ * @returns The result of the JSON-RPC request.
13
+ *
14
+ * @throws Will throw an error if the response ID does not match the request ID, or if the response contains an error.
15
+ */
16
+ request(data: JsonRpcPayload): Promise<unknown>;
17
+ }
18
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/jsonRpc/transports/transport.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webSocket.d.ts","sourceRoot":"","sources":["../../../src/jsonRpc/transports/webSocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,SAAS;IAahD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAb1B,OAAO,CAAC,OAAO,CAOD;IACd,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAqB;gBAGrB,GAAG,EAAE,MAAM,EACX,OAAO,SAAQ;IAGlC,OAAO,CAAC,IAAI,EAAE,cAAc;CAyF7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/molecule/codec.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EAIL,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,GAAG,EAIH,OAAO,EAER,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,IAAI;IACtD,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,KAAK,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AACF,qBAAa,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS;aAE7B,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,KAAK;aACvC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO;aACzC,UAAU,CAAC,EAAE,MAAM;gBAFnB,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,KAAK,EACvC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,EACzC,UAAU,CAAC,EAAE,MAAM,YAAA;IAGrC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,EAC1C,MAAM,EACN,MAAM,EACN,UAAU,GACX,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;IAI5D,GAAG,CAAC,YAAY,GAAG,SAAS,EAAE,UAAU,GAAG,OAAO,EAAE,EAClD,KAAK,EACL,MAAM,GACP,EAAE;QACD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,SAAS,CAAC;QAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC;KAC3C,GAAG,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC;IAYnC,KAAK,CAAC,YAAY,EAChB,GAAG,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,SAAS,GAC1C,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC;IAI/B,MAAM,CAAC,UAAU,EACf,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,GACpC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;CAGhC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IACrD,CAAC,SAAS,SAAS,CAAC,MAAM,SAAS,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;AACpE,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IACnD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;AAU5D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,EAC7C,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GACvC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CA+CzC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,OAAO,EAC3C,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GACvC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CA2DzC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EACvC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GACvC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAKzC;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EACvC,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GACxC,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC,CAwB1D;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,OAAO,EACxC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,GACnC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CA+B3B;AAED,MAAM,MAAM,2BAA2B,CACrC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAC3C;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,KAAK,GACjE,KAAK,GACL,CAAC;CACN,CAAC,MAAM,CAAC,CAAC,CAAC;AACX,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI;KAC1E,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CACrE,CAAC,CAAC,GAAG,CAAC,CACP;CACF,GAAG;KACD,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAC3C;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,KAAK,GAC/D,KAAK,GACL,CAAC;CACN,CAAC,MAAM,CAAC,CAAC,CAAC;AACX,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI;KACxE,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC5E,GAAG;KACD,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CACnB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC7C,SAAS,SAAS,eAAe,CAAC,CAAC,CAAC,EACpC,OAAO,SAAS,aAAa,CAAC,CAAC,CAAC,EAChC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAuD3C;AAED,KAAK,cAAc,CACjB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC7C,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IACzB,CAAC,SAAS,OAAO,GACjB;IACE,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,GACD,KAAK,CAAC;AACV,KAAK,YAAY,CACf,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC7C,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IACzB,CAAC,SAAS,OAAO,GACjB;IACE,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1B,GACD,KAAK,CAAC;AAEV;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACjE,WAAW,EAAE,CAAC,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,GAClD,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CA0D3C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC7C,SAAS,SAAS,eAAe,CAAC,CAAC,CAAC,EACpC,OAAO,SAAS,aAAa,CAAC,CAAC,CAAC,EAChC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAyC3C;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,OAAO,EACtC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,EACxC,SAAS,EAAE,MAAM,GAChB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAwCzC;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAClB,UAAU,EAAE,MAAM,EAClB,YAAY,UAAQ,GACnB,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAkBrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,YAAY,UAAQ,GACnB,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAOxB"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/molecule/codec.ts"],"names":[],"mappings":"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"}
@@ -239,13 +239,13 @@ export function table(codecLayout) {
239
239
  },
240
240
  decode(buffer) {
241
241
  const value = bytesFrom(buffer);
242
+ if (value.byteLength < 4) {
243
+ throw new Error(`table: too short buffer, expected at least 4 bytes, but got ${value.byteLength}`);
244
+ }
242
245
  const byteLength = uint32From(value.slice(0, 4));
243
246
  if (byteLength !== value.byteLength) {
244
247
  throw new Error(`table: invalid buffer size, expected ${byteLength}, but got ${value.byteLength}`);
245
248
  }
246
- if (byteLength <= 4) {
247
- throw new Error("table: empty buffer");
248
- }
249
249
  const offsets = keys.map((_, index) => uint32From(value.slice(4 + index * 4, 8 + index * 4)));
250
250
  offsets.push(byteLength);
251
251
  const object = {};
@@ -36,6 +36,18 @@ export declare const Uint512Vec: Codec<import("../barrel.js").NumLike[], bigint[
36
36
  export declare const Bytes: Codec<HexLike, Hex>;
37
37
  export declare const BytesOpt: Codec<import("../bytes/index.js").BytesLike | null | undefined, `0x${string}` | undefined>;
38
38
  export declare const BytesVec: Codec<import("../bytes/index.js").BytesLike[], `0x${string}`[]>;
39
+ export declare const Bool: Codec<boolean>;
40
+ export declare const BoolOpt: Codec<boolean | null | undefined, boolean | undefined>;
41
+ export declare const BoolVec: Codec<boolean[], boolean[]>;
42
+ export declare const Byte4: Codec<HexLike, Hex>;
43
+ export declare const Byte4Opt: Codec<import("../bytes/index.js").BytesLike | null | undefined, `0x${string}` | undefined>;
44
+ export declare const Byte4Vec: Codec<import("../bytes/index.js").BytesLike[], `0x${string}`[]>;
45
+ export declare const Byte8: Codec<HexLike, Hex>;
46
+ export declare const Byte8Opt: Codec<import("../bytes/index.js").BytesLike | null | undefined, `0x${string}` | undefined>;
47
+ export declare const Byte8Vec: Codec<import("../bytes/index.js").BytesLike[], `0x${string}`[]>;
48
+ export declare const Byte16: Codec<HexLike, Hex>;
49
+ export declare const Byte16Opt: Codec<import("../bytes/index.js").BytesLike | null | undefined, `0x${string}` | undefined>;
50
+ export declare const Byte16Vec: Codec<import("../bytes/index.js").BytesLike[], `0x${string}`[]>;
39
51
  export declare const Byte32: Codec<HexLike, Hex>;
40
52
  export declare const Byte32Opt: Codec<import("../bytes/index.js").BytesLike | null | undefined, `0x${string}` | undefined>;
41
53
  export declare const Byte32Vec: Codec<import("../bytes/index.js").BytesLike[], `0x${string}`[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"predefined.d.ts","sourceRoot":"","sources":["../../src/molecule/predefined.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAW,KAAK,EAAoC,MAAM,YAAY,CAAC;AAE9E,eAAO,MAAM,KAAK,+CAAsB,CAAC;AACzC,eAAO,MAAM,QAAQ,8EAAgB,CAAC;AACtC,eAAO,MAAM,QAAQ,mDAAgB,CAAC;AAEtC,eAAO,MAAM,QAAQ,+CAAsB,CAAC;AAC5C,eAAO,MAAM,QAAQ,+CAAgB,CAAC;AACtC,eAAO,MAAM,MAAM,+CAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,8EAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,mDAAiB,CAAC;AAExC,eAAO,MAAM,QAAQ,+CAAsB,CAAC;AAC5C,eAAO,MAAM,QAAQ,+CAAgB,CAAC;AACtC,eAAO,MAAM,MAAM,+CAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,8EAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,mDAAiB,CAAC;AAExC,eAAO,MAAM,QAAQ,+CAAgB,CAAC;AACtC,eAAO,MAAM,QAAQ,+CAAU,CAAC;AAChC,eAAO,MAAM,MAAM,+CAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,8EAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,mDAAiB,CAAC;AAExC,eAAO,MAAM,SAAS,+CAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,+CAAW,CAAC;AAClC,eAAO,MAAM,OAAO,+CAAY,CAAC;AACjC,eAAO,MAAM,UAAU,8EAAkB,CAAC;AAC1C,eAAO,MAAM,UAAU,mDAAkB,CAAC;AAE1C,eAAO,MAAM,SAAS,+CAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,+CAAW,CAAC;AAClC,eAAO,MAAM,OAAO,+CAAY,CAAC;AACjC,eAAO,MAAM,UAAU,8EAAkB,CAAC;AAC1C,eAAO,MAAM,UAAU,mDAAkB,CAAC;AAE1C,eAAO,MAAM,SAAS,+CAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,+CAAW,CAAC;AAClC,eAAO,MAAM,OAAO,+CAAY,CAAC;AACjC,eAAO,MAAM,UAAU,8EAAkB,CAAC;AAC1C,eAAO,MAAM,UAAU,mDAAkB,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAGpC,CAAC;AACH,eAAO,MAAM,QAAQ,4FAAgB,CAAC;AACtC,eAAO,MAAM,QAAQ,iEAAgB,CAAC;AAEtC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAIrC,CAAC;AACH,eAAO,MAAM,SAAS,4FAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,iEAAiB,CAAC;AAExC,eAAO,MAAM,MAAM,uBAGjB,CAAC;AACH,eAAO,MAAM,SAAS,2BAAiB,CAAC;AACxC,eAAO,MAAM,SAAS,sDAAiB,CAAC"}
1
+ {"version":3,"file":"predefined.d.ts","sourceRoot":"","sources":["../../src/molecule/predefined.ts"],"names":[],"mappings":"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"}