@ckb-ccc/core 1.9.1 → 1.11.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 (99) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/ckb/hash.d.ts +18 -0
  3. package/dist/ckb/hash.d.ts.map +1 -0
  4. package/dist/ckb/hash.js +19 -0
  5. package/dist/ckb/index.d.ts +2 -0
  6. package/dist/ckb/index.d.ts.map +1 -1
  7. package/dist/ckb/index.js +2 -0
  8. package/dist/ckb/script.d.ts +12 -0
  9. package/dist/ckb/script.d.ts.map +1 -1
  10. package/dist/ckb/script.js +17 -0
  11. package/dist/ckb/transaction.d.ts +326 -25
  12. package/dist/ckb/transaction.d.ts.map +1 -1
  13. package/dist/ckb/transaction.js +354 -79
  14. package/dist/ckb/transactionErrors.d.ts +15 -0
  15. package/dist/ckb/transactionErrors.d.ts.map +1 -0
  16. package/dist/ckb/transactionErrors.js +21 -0
  17. package/dist/client/cache/cache.d.ts +7 -0
  18. package/dist/client/cache/cache.d.ts.map +1 -1
  19. package/dist/client/cache/cache.js +11 -0
  20. package/dist/client/cache/memory.advanced.d.ts +36 -3
  21. package/dist/client/cache/memory.advanced.d.ts.map +1 -1
  22. package/dist/client/cache/memory.advanced.js +53 -25
  23. package/dist/client/cache/memory.d.ts +10 -1
  24. package/dist/client/cache/memory.d.ts.map +1 -1
  25. package/dist/client/cache/memory.js +13 -2
  26. package/dist/client/client.d.ts.map +1 -1
  27. package/dist/client/client.js +6 -9
  28. package/dist/client/clientTypes.advanced.d.ts +0 -1
  29. package/dist/client/clientTypes.advanced.d.ts.map +1 -1
  30. package/dist/client/clientTypes.advanced.js +0 -1
  31. package/dist/hasher/hasherCkb.d.ts +0 -16
  32. package/dist/hasher/hasherCkb.d.ts.map +1 -1
  33. package/dist/hasher/hasherCkb.js +0 -18
  34. package/dist/molecule/codec.d.ts +30 -10
  35. package/dist/molecule/codec.d.ts.map +1 -1
  36. package/dist/molecule/codec.js +46 -13
  37. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts +18 -6
  38. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
  39. package/dist/signer/ckb/signerCkbScriptReadonly.js +18 -6
  40. package/dist/signer/signer/index.d.ts +11 -1
  41. package/dist/signer/signer/index.d.ts.map +1 -1
  42. package/dist/signer/signer/index.js +23 -0
  43. package/dist.commonjs/ckb/hash.d.ts +18 -0
  44. package/dist.commonjs/ckb/hash.d.ts.map +1 -0
  45. package/dist.commonjs/ckb/hash.js +22 -0
  46. package/dist.commonjs/ckb/index.d.ts +2 -0
  47. package/dist.commonjs/ckb/index.d.ts.map +1 -1
  48. package/dist.commonjs/ckb/index.js +2 -0
  49. package/dist.commonjs/ckb/script.d.ts +12 -0
  50. package/dist.commonjs/ckb/script.d.ts.map +1 -1
  51. package/dist.commonjs/ckb/script.js +17 -0
  52. package/dist.commonjs/ckb/transaction.d.ts +326 -25
  53. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  54. package/dist.commonjs/ckb/transaction.js +353 -78
  55. package/dist.commonjs/ckb/transactionErrors.d.ts +15 -0
  56. package/dist.commonjs/ckb/transactionErrors.d.ts.map +1 -0
  57. package/dist.commonjs/ckb/transactionErrors.js +26 -0
  58. package/dist.commonjs/client/cache/cache.d.ts +7 -0
  59. package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
  60. package/dist.commonjs/client/cache/cache.js +11 -0
  61. package/dist.commonjs/client/cache/memory.advanced.d.ts +36 -3
  62. package/dist.commonjs/client/cache/memory.advanced.d.ts.map +1 -1
  63. package/dist.commonjs/client/cache/memory.advanced.js +54 -26
  64. package/dist.commonjs/client/cache/memory.d.ts +10 -1
  65. package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
  66. package/dist.commonjs/client/cache/memory.js +12 -1
  67. package/dist.commonjs/client/client.d.ts.map +1 -1
  68. package/dist.commonjs/client/client.js +5 -8
  69. package/dist.commonjs/client/clientTypes.advanced.d.ts +0 -1
  70. package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -1
  71. package/dist.commonjs/client/clientTypes.advanced.js +1 -2
  72. package/dist.commonjs/hasher/hasherCkb.d.ts +0 -16
  73. package/dist.commonjs/hasher/hasherCkb.d.ts.map +1 -1
  74. package/dist.commonjs/hasher/hasherCkb.js +2 -21
  75. package/dist.commonjs/molecule/codec.d.ts +30 -10
  76. package/dist.commonjs/molecule/codec.d.ts.map +1 -1
  77. package/dist.commonjs/molecule/codec.js +46 -13
  78. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +18 -6
  79. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
  80. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +18 -6
  81. package/dist.commonjs/signer/signer/index.d.ts +11 -1
  82. package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
  83. package/dist.commonjs/signer/signer/index.js +23 -0
  84. package/package.json +1 -1
  85. package/prettier.config.mjs +1 -1
  86. package/src/ckb/hash.ts +28 -0
  87. package/src/ckb/index.ts +2 -0
  88. package/src/ckb/script.ts +20 -0
  89. package/src/ckb/transaction.ts +436 -80
  90. package/src/ckb/transactionErrors.ts +36 -0
  91. package/src/client/cache/cache.ts +14 -1
  92. package/src/client/cache/memory.advanced.ts +57 -30
  93. package/src/client/cache/memory.ts +18 -1
  94. package/src/client/client.ts +5 -10
  95. package/src/client/clientTypes.advanced.ts +0 -1
  96. package/src/hasher/hasherCkb.ts +0 -26
  97. package/src/molecule/codec.ts +50 -13
  98. package/src/signer/ckb/signerCkbScriptReadonly.ts +24 -8
  99. package/src/signer/signer/index.ts +34 -0
@@ -87,5 +87,12 @@ export declare abstract class ClientCache {
87
87
  * @param _number
88
88
  */
89
89
  getBlockByNumber(_number: NumLike): Promise<ClientBlock | undefined>;
90
+ /**
91
+ * Checks if a block header is considered confirmed.
92
+ * The default implementation compares the header's timestamp against the current time
93
+ * and a configured confirmation time. Override this method for custom confirmation logic.
94
+ * @param header
95
+ */
96
+ hasHeaderConfirmed(header: ClientBlockHeader): boolean;
90
97
  }
91
98
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { Transaction, } from "../../ckb/index.js";
2
+ import { numFrom } from "../../num/index.js";
3
+ import { DEFAULT_CONFIRMED_BLOCK_TIME } from "./memory.advanced.js";
2
4
  /**
3
5
  * @public
4
6
  * The ClientCache class is mainly designed for chained transactions.
@@ -125,4 +127,13 @@ export class ClientCache {
125
127
  async getBlockByNumber(_number) {
126
128
  return;
127
129
  }
130
+ /**
131
+ * Checks if a block header is considered confirmed.
132
+ * The default implementation compares the header's timestamp against the current time
133
+ * and a configured confirmation time. Override this method for custom confirmation logic.
134
+ * @param header
135
+ */
136
+ hasHeaderConfirmed(header) {
137
+ return (numFrom(Date.now()) - header.timestamp >= DEFAULT_CONFIRMED_BLOCK_TIME);
138
+ }
128
139
  }
@@ -2,6 +2,7 @@ import { Cell, CellLike, ScriptLike } from "../../ckb/index.js";
2
2
  import { HexLike } from "../../hex/index.js";
3
3
  import { NumLike } from "../../num/index.js";
4
4
  import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
5
+ export declare const DEFAULT_CONFIRMED_BLOCK_TIME: bigint;
5
6
  export type CellRecord = [
6
7
  false,
7
8
  Pick<Cell, "outPoint"> & Partial<Pick<Cell, "cellOutput" | "outputData">>
@@ -11,12 +12,44 @@ export declare function filterScript(valueLike: ScriptLike | undefined, filterLi
11
12
  export declare function filterNumByRange(lengthLike: NumLike, range: [NumLike, NumLike] | undefined): boolean;
12
13
  export declare function filterScriptByLenRange(valueLike?: ScriptLike, scriptLenRange?: [NumLike, NumLike]): boolean;
13
14
  export declare function filterCell(searchKeyLike: ClientCollectableSearchKeyLike, cellLike: CellLike): boolean;
15
+ /**
16
+ * A Least Recently Used (LRU) cache implemented using a Map.
17
+ *
18
+ * This class extends the built-in Map to provide an LRU cache with a fixed capacity.
19
+ * When the cache is full, the least recently used entry is automatically evicted.
20
+ *
21
+ * @template K The type of the keys in the cache.
22
+ * @template V The type of the values in the cache.
23
+ */
14
24
  export declare class MapLru<K, V> extends Map<K, V> {
15
25
  private readonly capacity;
16
- private readonly lru;
26
+ /**
27
+ * Constructs a new MapLru instance.
28
+ *
29
+ * @param capacity The maximum number of entries the cache can hold. Must be a positive integer.
30
+ * @throws {Error} If the capacity is not a positive integer.
31
+ */
17
32
  constructor(capacity: number);
18
- get(key: K): (V & ({} | null)) | undefined;
33
+ /**
34
+ * Retrieves a value from the cache.
35
+ *
36
+ * If the key is present in the cache, the value is moved to the most-recently-used position.
37
+ *
38
+ * @param key The key of the value to retrieve.
39
+ * @returns The value associated with the key, or undefined if the key is not present.
40
+ */
41
+ get(key: K): V | undefined;
42
+ /**
43
+ * Inserts a new value into the cache, or updates an existing value.
44
+ *
45
+ * If the key is already present in the cache, it is first deleted so that the re-insertion
46
+ * moves it to the most-recently-used position.
47
+ * If the cache is over capacity after the insertion, the least recently used entry is evicted.
48
+ *
49
+ * @param key The key of the value to insert or update.
50
+ * @param value The value to associate with the key.
51
+ * @returns This MapLru instance.
52
+ */
19
53
  set(key: K, value: V): this;
20
- delete(key: K): boolean;
21
54
  }
22
55
  //# sourceMappingURL=memory.advanced.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.advanced.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAE/B,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,UAAU,GAClB;IACE,KAAK;IACL,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;CAC1E,GACD,CAAC,IAAI,EAAE,IAAI,CAAC,GACZ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEtB,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACzC,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,GACpC,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,OAAO,CAYT;AAED,wBAAgB,UAAU,CACxB,aAAa,EAAE,8BAA8B,EAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CA4CT;AAED,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;gBAEF,QAAQ,EAAE,MAAM;IAI7C,GAAG,CAAC,GAAG,EAAE,CAAC;IAmBV,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAOpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;CAYxB"}
1
+ {"version":3,"file":"memory.advanced.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAE/B,MAAM,4BAA4B,CAAC;AAGpC,eAAO,MAAM,4BAA4B,QAA0B,CAAC;AAGpE,MAAM,MAAM,UAAU,GAClB;IACE,KAAK;IACL,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;CAC1E,GACD,CAAC,IAAI,EAAE,IAAI,CAAC,GACZ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEtB,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACzC,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,GACpC,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,OAAO,CAYT;AAED,wBAAgB,UAAU,CACxB,aAAa,EAAE,8BAA8B,EAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CA4CT;AAED;;;;;;;;GAQG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAO7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC;;;;;OAKG;gBAC0B,QAAQ,EAAE,MAAM;IAO7C;;;;;;;OAOG;IACM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAenC;;;;;;;;;;OAUG;IACM,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAarC"}
@@ -4,6 +4,7 @@ import { hexFrom } from "../../hex/index.js";
4
4
  import { numFrom } from "../../num/index.js";
5
5
  import { clientSearchKeyRangeFrom, } from "../clientTypes.advanced.js";
6
6
  import { ClientIndexerSearchKey } from "../clientTypes.js";
7
+ export const DEFAULT_CONFIRMED_BLOCK_TIME = numFrom(1000 * 10 * 50); // 50 blocks * 10s
7
8
  export function filterData(dataLike, filterLike, filterMode) {
8
9
  if (!filterLike) {
9
10
  return true;
@@ -78,41 +79,68 @@ export function filterCell(searchKeyLike, cellLike) {
78
79
  }
79
80
  return true;
80
81
  }
82
+ /**
83
+ * A Least Recently Used (LRU) cache implemented using a Map.
84
+ *
85
+ * This class extends the built-in Map to provide an LRU cache with a fixed capacity.
86
+ * When the cache is full, the least recently used entry is automatically evicted.
87
+ *
88
+ * @template K The type of the keys in the cache.
89
+ * @template V The type of the values in the cache.
90
+ */
81
91
  export class MapLru extends Map {
92
+ /**
93
+ * Constructs a new MapLru instance.
94
+ *
95
+ * @param capacity The maximum number of entries the cache can hold. Must be a positive integer.
96
+ * @throws {Error} If the capacity is not a positive integer.
97
+ */
82
98
  constructor(capacity) {
83
99
  super();
84
100
  this.capacity = capacity;
85
- this.lru = [];
101
+ if (!Number.isInteger(capacity) || capacity < 1) {
102
+ throw new Error("Capacity must be a positive integer");
103
+ }
86
104
  }
105
+ /**
106
+ * Retrieves a value from the cache.
107
+ *
108
+ * If the key is present in the cache, the value is moved to the most-recently-used position.
109
+ *
110
+ * @param key The key of the value to retrieve.
111
+ * @returns The value associated with the key, or undefined if the key is not present.
112
+ */
87
113
  get(key) {
88
- const val = super.get(key);
89
- if (val === undefined) {
90
- return;
91
- }
92
- const index = this.lru.indexOf(key);
93
- if (index !== -1) {
94
- this.lru.splice(index, 1);
95
- }
96
- this.lru.push(key);
97
- if (this.lru.length > this.capacity) {
98
- this.delete(this.lru[0]);
99
- this.lru.shift();
114
+ // Check if the key exists. If not, return undefined.
115
+ if (!super.has(key)) {
116
+ return undefined;
100
117
  }
101
- return val;
118
+ const value = super.get(key);
119
+ // Move to most-recently-used position
120
+ super.delete(key);
121
+ super.set(key, value);
122
+ return value;
102
123
  }
124
+ /**
125
+ * Inserts a new value into the cache, or updates an existing value.
126
+ *
127
+ * If the key is already present in the cache, it is first deleted so that the re-insertion
128
+ * moves it to the most-recently-used position.
129
+ * If the cache is over capacity after the insertion, the least recently used entry is evicted.
130
+ *
131
+ * @param key The key of the value to insert or update.
132
+ * @param value The value to associate with the key.
133
+ * @returns This MapLru instance.
134
+ */
103
135
  set(key, value) {
104
- this.get(key);
136
+ // Delete and re-insert to move key to the end (most-recently-used)
137
+ super.delete(key);
105
138
  super.set(key, value);
106
- return this;
107
- }
108
- delete(key) {
109
- if (!super.delete(key)) {
110
- return false;
111
- }
112
- const index = this.lru.indexOf(key);
113
- if (index !== -1) {
114
- this.lru.splice(index, 1);
139
+ // Evict oldest if over capacity
140
+ if (super.size > this.capacity) {
141
+ const oldestKey = super.keys().next().value;
142
+ super.delete(oldestKey);
115
143
  }
116
- return true;
144
+ return this;
117
145
  }
118
146
  }
@@ -8,6 +8,7 @@ export declare class ClientCacheMemory extends ClientCache {
8
8
  private readonly maxCells;
9
9
  private readonly maxTxs;
10
10
  private readonly maxBlocks;
11
+ private readonly confirmedBlockTime;
11
12
  /**
12
13
  * OutPoint => [isLive, Cell | OutPoint]
13
14
  */
@@ -24,7 +25,14 @@ export declare class ClientCacheMemory extends ClientCache {
24
25
  * Block Hash => Block Header / Full Block
25
26
  */
26
27
  private readonly knownBlocks;
27
- constructor(maxCells?: number, maxTxs?: number, maxBlocks?: number);
28
+ /**
29
+ * @param maxCells - Maximum number of cells to store in the cache. Defaults to 512.
30
+ * @param maxTxs - Maximum number of transactions to store in the cache. Defaults to 256.
31
+ * @param maxBlocks - Maximum number of blocks to store in the cache. Defaults to 128.
32
+ * @param confirmedBlockTime - Time in milliseconds after which a block is considered confirmed.
33
+ * Defaults to DEFAULT_CONFIRMED_BLOCK_TIME (50 blocks * 10s).
34
+ */
35
+ constructor(maxCells?: number, maxTxs?: number, maxBlocks?: number, confirmedBlockTime?: bigint);
28
36
  markUsableNoCache(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
29
37
  markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
30
38
  clear(): Promise<void>;
@@ -40,5 +48,6 @@ export declare class ClientCacheMemory extends ClientCache {
40
48
  recordBlocks(...blocks: (ClientBlockLike | ClientBlockLike[])[]): Promise<void>;
41
49
  getBlockByHash(hashLike: HexLike): Promise<ClientBlock | undefined>;
42
50
  getBlockByNumber(numberLike: NumLike): Promise<ClientBlock | undefined>;
51
+ hasHeaderConfirmed(header: ClientBlockHeader): boolean;
43
52
  }
44
53
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,SAAQ,WAAW;IAyB9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IA1B5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;gBAGiB,QAAQ,SAAM,EACd,MAAM,SAAM,EACZ,SAAS,SAAM;IAe5B,iBAAiB,CACrB,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GACtC,OAAO,CAAC,IAAI,CAAC;IASV,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;IAcjB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAS9D,0BAA0B,CAC9B,GAAG,YAAY,EAAE,CACb,6BAA6B,GAC7B,6BAA6B,EAAE,CAClC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IAMV,sBAAsB,CAC1B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAK3C,aAAa,CACjB,GAAG,OAAO,EAAE,CAAC,qBAAqB,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAaV,eAAe,CACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAQnC,iBAAiB,CACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAUnC,YAAY,CAChB,GAAG,MAAM,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IAQV,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWnE,gBAAgB,CACpB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CASpC"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQzC,qBAAa,iBAAkB,SAAQ,WAAW;IAgC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAlCrC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;IAEF;;;;;;OAMG;gBAEgB,QAAQ,SAAM,EACd,MAAM,SAAM,EACZ,SAAS,SAAM,EACf,kBAAkB,SAA+B;IAe9D,iBAAiB,CACrB,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GACtC,OAAO,CAAC,IAAI,CAAC;IASV,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;IAcjB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAS9D,0BAA0B,CAC9B,GAAG,YAAY,EAAE,CACb,6BAA6B,GAC7B,6BAA6B,EAAE,CAClC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IAMV,sBAAsB,CAC1B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAK3C,aAAa,CACjB,GAAG,OAAO,EAAE,CAAC,qBAAqB,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAaV,eAAe,CACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAQnC,iBAAiB,CACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAUnC,YAAY,CAChB,GAAG,MAAM,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IAQV,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWnE,gBAAgB,CACpB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAUnC,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;CAGvD"}
@@ -3,13 +3,21 @@ import { hexFrom } from "../../hex/index.js";
3
3
  import { numFrom } from "../../num/index.js";
4
4
  import { ClientBlock, ClientBlockHeader, ClientTransactionResponse, } from "../clientTypes.js";
5
5
  import { ClientCache } from "./cache.js";
6
- import { filterCell, MapLru } from "./memory.advanced.js";
6
+ import { DEFAULT_CONFIRMED_BLOCK_TIME, filterCell, MapLru, } from "./memory.advanced.js";
7
7
  export class ClientCacheMemory extends ClientCache {
8
- constructor(maxCells = 512, maxTxs = 256, maxBlocks = 128) {
8
+ /**
9
+ * @param maxCells - Maximum number of cells to store in the cache. Defaults to 512.
10
+ * @param maxTxs - Maximum number of transactions to store in the cache. Defaults to 256.
11
+ * @param maxBlocks - Maximum number of blocks to store in the cache. Defaults to 128.
12
+ * @param confirmedBlockTime - Time in milliseconds after which a block is considered confirmed.
13
+ * Defaults to DEFAULT_CONFIRMED_BLOCK_TIME (50 blocks * 10s).
14
+ */
15
+ constructor(maxCells = 512, maxTxs = 256, maxBlocks = 128, confirmedBlockTime = DEFAULT_CONFIRMED_BLOCK_TIME) {
9
16
  super();
10
17
  this.maxCells = maxCells;
11
18
  this.maxTxs = maxTxs;
12
19
  this.maxBlocks = maxBlocks;
20
+ this.confirmedBlockTime = confirmedBlockTime;
13
21
  this.cells = new MapLru(this.maxCells);
14
22
  this.knownTransactions = new MapLru(this.maxTxs);
15
23
  this.knownBlockHashes = new MapLru(this.maxBlocks);
@@ -134,4 +142,7 @@ export class ClientCacheMemory extends ClientCache {
134
142
  }
135
143
  return this.getBlockByHash(hash);
136
144
  }
145
+ hasHeaderConfirmed(header) {
146
+ return numFrom(Date.now()) - header.timestamp >= this.confirmedBlockTime;
147
+ }
137
148
  }
@@ -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":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EAEP,YAAY,EACZ,UAAU,EAEV,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,OAAO,EAA2B,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EACL,8BAA8B,EAG/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,qCAAqC,EACrC,8BAA8B,EAE9B,0BAA0B,EAC1B,qCAAqC,EACrC,yBAAyB,EAGzB,gBAAgB,EAChB,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,8BAAsB,MAAM;IACnB,KAAK,EAAE,WAAW,CAAC;gBAEd,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE;IAI5C,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC;IAC3B,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC;IAErC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAEjE,QAAQ,CAAC,oBAAoB,CAC3B,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,CAAC;IAChC,UAAU,CACd,UAAU,CAAC,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,GAAG,CAAC;IAcf,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC5E,QAAQ,CAAC,uBAAuB,CAC9B,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,qBAAqB,CAC5B,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,wBAAwB,CAC/B,WAAW,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAC7B,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACnC,gBAAgB,CACpB,WAAW,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAgB7B,cAAc,CAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAgB7B,iBAAiB,CACrB,WAAW,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAYnC,eAAe,CACnB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAazC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IACnE,QAAQ,CAAC,kBAAkB,CACzB,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC;IAEf,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;IAyB9D,iBAAiB,CACrB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,SAAS,CAAC;IAsBlE,QAAQ,CAAC,kBAAkB,CACzB,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,EACzB,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IACtB,WAAW,CACf,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,EACzB,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAY5B,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,gBAAgB,CACrB,GAAG,EAAE,0BAA0B,EAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,SAAK,GACT,cAAc,CAAC,IAAI,CAAC;IAoBvB;;;;;;OAMG;IACI,SAAS,CACd,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,EAC5B,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,GAAG,CAAC;IAeT,cAAc,CAClB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAWjD;;;;OAIG;IACG,wBAAwB,CAC5B,UAAU,EAAE,OAAO,GAClB,OAAO,CACN;QAAE,WAAW,EAAE,yBAAyB,CAAC;QAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GACtE,SAAS,CACZ;IA2BK,eAAe,CACnB,MAAM,EAAE,OAAO,EACf,aAAa,GAAE,MAAU,EACzB,OAAO,GAAE,MAAc,EACvB,QAAQ,GAAE,MAAa,GACtB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;CAsClD"}
@@ -4,11 +4,8 @@ import { hexFrom } from "../hex/index.js";
4
4
  import { numFrom, numMax, numMin } from "../num/index.js";
5
5
  import { reduceAsync, sleep } from "../utils/index.js";
6
6
  import { ClientCacheMemory } from "./cache/memory.js";
7
- import { CONFIRMED_BLOCK_TIME, DEFAULT_MAX_FEE_RATE, DEFAULT_MIN_FEE_RATE, } from "./clientTypes.advanced.js";
7
+ import { DEFAULT_MAX_FEE_RATE, DEFAULT_MIN_FEE_RATE, } from "./clientTypes.advanced.js";
8
8
  import { CellDepInfo, ClientIndexerSearchKey, ErrorClientMaxFeeRateExceeded, ErrorClientWaitTransactionTimeout, } from "./clientTypes.js";
9
- function hasHeaderConfirmed(header) {
10
- return numFrom(Date.now()) - header.timestamp >= CONFIRMED_BLOCK_TIME;
11
- }
12
9
  /**
13
10
  * @public
14
11
  */
@@ -30,7 +27,7 @@ export class Client {
30
27
  return block;
31
28
  }
32
29
  const res = await this.getBlockByNumberNoCache(blockNumber, verbosity, withCycles);
33
- if (res && hasHeaderConfirmed(res.header)) {
30
+ if (res && this.cache.hasHeaderConfirmed(res.header)) {
34
31
  await this.cache.recordBlocks(res);
35
32
  }
36
33
  return res;
@@ -41,7 +38,7 @@ export class Client {
41
38
  return block;
42
39
  }
43
40
  const res = await this.getBlockByHashNoCache(blockHash, verbosity, withCycles);
44
- if (res && hasHeaderConfirmed(res.header)) {
41
+ if (res && this.cache.hasHeaderConfirmed(res.header)) {
45
42
  await this.cache.recordBlocks(res);
46
43
  }
47
44
  return res;
@@ -52,7 +49,7 @@ export class Client {
52
49
  return header;
53
50
  }
54
51
  const res = await this.getHeaderByNumberNoCache(blockNumber, verbosity);
55
- if (res && hasHeaderConfirmed(res)) {
52
+ if (res && this.cache.hasHeaderConfirmed(res)) {
56
53
  await this.cache.recordHeaders(res);
57
54
  }
58
55
  return res;
@@ -63,7 +60,7 @@ export class Client {
63
60
  return header;
64
61
  }
65
62
  const res = await this.getHeaderByHashNoCache(blockHash, verbosity);
66
- if (res && hasHeaderConfirmed(res)) {
63
+ if (res && this.cache.hasHeaderConfirmed(res)) {
67
64
  await this.cache.recordHeaders(res);
68
65
  }
69
66
  return res;
@@ -270,7 +267,7 @@ export class Client {
270
267
  const tx = await this.cache.getTransactionResponse(txHash);
271
268
  if (tx?.blockHash) {
272
269
  const header = await this.getHeaderByHash(tx.blockHash);
273
- if (header && hasHeaderConfirmed(header)) {
270
+ if (header && this.cache.hasHeaderConfirmed(header)) {
274
271
  return {
275
272
  transaction: tx,
276
273
  header,
@@ -1,7 +1,6 @@
1
1
  import { ScriptLike } from "../ckb/index.js";
2
2
  import { HexLike } from "../hex/index.js";
3
3
  import { Num, NumLike } from "../num/index.js";
4
- export declare const CONFIRMED_BLOCK_TIME: bigint;
5
4
  export declare const DEFAULT_MAX_FEE_RATE: bigint;
6
5
  export declare const DEFAULT_MIN_FEE_RATE: bigint;
7
6
  export declare function clientSearchKeyRangeFrom([a, b]: [NumLike, NumLike]): [
@@ -1 +1 @@
1
- {"version":3,"file":"clientTypes.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientTypes.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,QAAoB,CAAC;AACtD,eAAO,MAAM,oBAAoB,QAAgB,CAAC;AAElD,wBAAgB,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG;IACpE,GAAG;IACH,GAAG;CACJ,CAEA;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7D,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjD,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,oCAAoC,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"clientTypes.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientTypes.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAO,MAAM,oBAAoB,QAAoB,CAAC;AACtD,eAAO,MAAM,oBAAoB,QAAgB,CAAC;AAElD,wBAAgB,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG;IACpE,GAAG;IACH,GAAG;CACJ,CAEA;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7D,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjD,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,oCAAoC,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { numFrom } from "../num/index.js";
2
- export const CONFIRMED_BLOCK_TIME = numFrom(1000 * 10 * 50); // 50 blocks * 10s
3
2
  export const DEFAULT_MAX_FEE_RATE = numFrom(10000000);
4
3
  export const DEFAULT_MIN_FEE_RATE = numFrom(1000);
5
4
  export function clientSearchKeyRangeFrom([a, b]) {
@@ -1,7 +1,5 @@
1
1
  import { BytesLike } from "../bytes/index.js";
2
- import { CellInputLike } from "../ckb/index.js";
3
2
  import { Hex } from "../hex/index.js";
4
- import { NumLike } from "../num/index.js";
5
3
  import { Hasher } from "./hasher.js";
6
4
  /**
7
5
  * @public
@@ -56,18 +54,4 @@ export declare class HasherCkb implements Hasher {
56
54
  * ```
57
55
  */
58
56
  export declare function hashCkb(...data: BytesLike[]): Hex;
59
- /**
60
- * Computes the Type ID hash of the given data.
61
- * @public
62
- *
63
- * @param cellInputLike - The first cell input of the transaction.
64
- * @param outputIndex - The output index of the Type ID cell.
65
- * @returns The hexadecimal string representation of the hash.
66
- *
67
- * @example
68
- * ```typescript
69
- * const hash = hashTypeId(cellInput, outputIndex); // Outputs something like "0x..."
70
- * ```
71
- */
72
- export declare function hashTypeId(cellInputLike: CellInputLike, outputIndex: NumLike): Hex;
73
57
  //# sourceMappingURL=hasherCkb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasherCkb.d.ts","sourceRoot":"","sources":["../../src/hasher/hasherCkb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAgB,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAEhE;;;;;OAKG;gBAES,SAAS,SAAK,EAAE,QAAQ,SAAuB;IAO3D;;;;;;;;;;;;OAYG;IAEH,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAKlC;;;;;;;;;;;OAWG;IAEH,MAAM,IAAI,GAAG;CAGd;AAED;;;;;;;;;;;GAWG;AAEH,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAIjD;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,UAAU,CACxB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,OAAO,GACnB,GAAG,CAKL"}
1
+ {"version":3,"file":"hasherCkb.d.ts","sourceRoot":"","sources":["../../src/hasher/hasherCkb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAEhE;;;;;OAKG;gBAES,SAAS,SAAK,EAAE,QAAQ,SAAuB;IAO3D;;;;;;;;;;;;OAYG;IAEH,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAKlC;;;;;;;;;;;OAWG;IAEH,MAAM,IAAI,GAAG;CAGd;AAED;;;;;;;;;;;GAWG;AAEH,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAIjD"}
@@ -1,8 +1,6 @@
1
1
  import { blake2b } from "@noble/hashes/blake2b";
2
2
  import { bytesFrom } from "../bytes/index.js";
3
- import { CellInput } from "../ckb/index.js";
4
3
  import { hexFrom } from "../hex/index.js";
5
- import { numLeToBytes } from "../num/index.js";
6
4
  import { CKB_BLAKE2B_PERSONAL } from "./advanced.js";
7
5
  /**
8
6
  * @public
@@ -70,19 +68,3 @@ export function hashCkb(...data) {
70
68
  data.forEach((d) => hasher.update(d));
71
69
  return hasher.digest();
72
70
  }
73
- /**
74
- * Computes the Type ID hash of the given data.
75
- * @public
76
- *
77
- * @param cellInputLike - The first cell input of the transaction.
78
- * @param outputIndex - The output index of the Type ID cell.
79
- * @returns The hexadecimal string representation of the hash.
80
- *
81
- * @example
82
- * ```typescript
83
- * const hash = hashTypeId(cellInput, outputIndex); // Outputs something like "0x..."
84
- * ```
85
- */
86
- export function hashTypeId(cellInputLike, outputIndex) {
87
- return hashCkb(CellInput.from(cellInputLike).toBytes(), numLeToBytes(outputIndex, 8));
88
- }
@@ -84,17 +84,37 @@ type UnionDecoded<T extends Record<string, CodecLike<any, any>>, K extends keyof
84
84
  value: DecodedType<T[K]>;
85
85
  } : never;
86
86
  /**
87
- * Union is a dynamic-size type.
88
- * Serializing a union has two steps:
89
- * - Serialize an item type id in bytes as a 32 bit unsigned integer in little-endian. The item type id is the index of the inner items, and it's starting at 0.
90
- * - Serialize the inner item.
91
- * @param codecLayout the union item record
92
- * @param fields the custom item type id record
87
+ * Constructs a union codec that can serialize and deserialize values tagged with a type identifier.
88
+ *
89
+ * If all variants have the same fixed size, the resulting union codec is fixed-size (header + payload).
90
+ * Otherwise, it falls back to a dynamic-size codec.
91
+ *
92
+ * Serialization format:
93
+ * 1. 4-byte little-endian unsigned integer for the variant index.
94
+ * 2. Encoded bytes of the selected variant.
95
+ *
96
+ * @typeParam T
97
+ * A record mapping variant names to codecs.
98
+ * @param codecLayout
99
+ * An object whose keys are variant names and values are codecs for each variant.
100
+ * @param fields
101
+ * Optional mapping from variant names to custom numeric IDs. If omitted, the index
102
+ * of each variant in `codecLayout` is used as its ID.
103
+ *
104
+ *
93
105
  * @example
94
- * // without custom id
95
- * union({ cafe: Uint8, bee: Uint8 })
96
- * // with custom id
97
- * union({ cafe: Uint8, bee: Uint8 }, { cafe: 0xcafe, bee: 0xbee })
106
+ * // Dynamic union without custom numeric IDs
107
+ * union({ cafe: Uint8, bee: Uint16 })
108
+ *
109
+ * // Dynamic union with custom numeric IDs
110
+ * union({ cafe: Uint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
111
+ *
112
+ * // Fixed-size union without custom numeric IDs
113
+ * const PaddedUint8 = struct({ data : u8, padding : u8 })
114
+ * union({ cafe: PaddedUint8, bee: Uint16 });
115
+ *
116
+ * // Fixed-size union with custom numeric IDs
117
+ * union({ cafe: PaddedUint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
98
118
  */
99
119
  export declare function union<T extends Record<string, CodecLike<any, any>>>(codecLayout: T, fields?: Record<keyof T, number | undefined | null>): Codec<UnionEncodable<T>, UnionDecoded<T>>;
100
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/molecule/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/molecule/codec.ts"],"names":[],"mappings":"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"}
@@ -292,28 +292,61 @@ export function table(codecLayout) {
292
292
  });
293
293
  }
294
294
  /**
295
- * Union is a dynamic-size type.
296
- * Serializing a union has two steps:
297
- * - Serialize an item type id in bytes as a 32 bit unsigned integer in little-endian. The item type id is the index of the inner items, and it's starting at 0.
298
- * - Serialize the inner item.
299
- * @param codecLayout the union item record
300
- * @param fields the custom item type id record
295
+ * Constructs a union codec that can serialize and deserialize values tagged with a type identifier.
296
+ *
297
+ * If all variants have the same fixed size, the resulting union codec is fixed-size (header + payload).
298
+ * Otherwise, it falls back to a dynamic-size codec.
299
+ *
300
+ * Serialization format:
301
+ * 1. 4-byte little-endian unsigned integer for the variant index.
302
+ * 2. Encoded bytes of the selected variant.
303
+ *
304
+ * @typeParam T
305
+ * A record mapping variant names to codecs.
306
+ * @param codecLayout
307
+ * An object whose keys are variant names and values are codecs for each variant.
308
+ * @param fields
309
+ * Optional mapping from variant names to custom numeric IDs. If omitted, the index
310
+ * of each variant in `codecLayout` is used as its ID.
311
+ *
312
+ *
301
313
  * @example
302
- * // without custom id
303
- * union({ cafe: Uint8, bee: Uint8 })
304
- * // with custom id
305
- * union({ cafe: Uint8, bee: Uint8 }, { cafe: 0xcafe, bee: 0xbee })
314
+ * // Dynamic union without custom numeric IDs
315
+ * union({ cafe: Uint8, bee: Uint16 })
316
+ *
317
+ * // Dynamic union with custom numeric IDs
318
+ * union({ cafe: Uint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
319
+ *
320
+ * // Fixed-size union without custom numeric IDs
321
+ * const PaddedUint8 = struct({ data : u8, padding : u8 })
322
+ * union({ cafe: PaddedUint8, bee: Uint16 });
323
+ *
324
+ * // Fixed-size union with custom numeric IDs
325
+ * union({ cafe: PaddedUint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
306
326
  */
307
327
  export function union(codecLayout, fields) {
308
- const keys = Object.keys(codecLayout);
328
+ const entries = Object.entries(codecLayout);
329
+ // Determine if all variants have a fixed and equal byteLength.
330
+ let byteLength;
331
+ if (entries.length > 0) {
332
+ const firstLen = entries[0][1].byteLength;
333
+ if (firstLen !== undefined &&
334
+ entries.every(([, { byteLength: len }]) => len === firstLen)) {
335
+ // Add 4 bytes for the type header
336
+ byteLength = firstLen + 4;
337
+ }
338
+ }
309
339
  return Codec.from({
340
+ byteLength,
310
341
  encode({ type, value }) {
311
342
  const typeStr = type.toString();
312
343
  const codec = codecLayout[typeStr];
313
344
  if (!codec) {
314
- throw new Error(`union: invalid type, expected ${keys.toString()}, but got ${typeStr}`);
345
+ throw new Error(`union: invalid type, expected ${entries.map((e) => e[0]).toString()}, but got ${typeStr}`);
315
346
  }
316
- const fieldId = fields ? (fields[typeStr] ?? -1) : keys.indexOf(typeStr);
347
+ const fieldId = fields
348
+ ? (fields[typeStr] ?? -1)
349
+ : entries.findIndex((e) => e[0] === typeStr);
317
350
  if (fieldId < 0) {
318
351
  throw new Error(`union: invalid field id ${fieldId} of ${typeStr}`);
319
352
  }