@btc-vision/transaction 1.7.6 → 1.7.10

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 (183) hide show
  1. package/browser/_version.d.ts +1 -0
  2. package/browser/chain/ChainData.d.ts +4 -0
  3. package/browser/{src/deterministic → deterministic}/DeterministicMap.d.ts +3 -3
  4. package/browser/deterministic/FastMap.d.ts +24 -0
  5. package/browser/{src/epoch → epoch}/interfaces/IChallengeSolution.d.ts +4 -4
  6. package/browser/{src/generators → generators}/Features.d.ts +6 -1
  7. package/browser/{src/generators → generators}/Generator.d.ts +1 -0
  8. package/browser/generators/MLDSAData.d.ts +15 -0
  9. package/browser/index.js +1 -1
  10. package/browser/{src/keypair → keypair}/Address.d.ts +9 -3
  11. package/browser/{src/keypair → keypair}/MessageSigner.d.ts +9 -0
  12. package/browser/{src/opnet.d.ts → opnet.d.ts} +2 -1
  13. package/browser/{src/transaction → transaction}/browser/Web3Provider.d.ts +15 -4
  14. package/browser/transaction/browser/types/OPWallet.d.ts +6 -0
  15. package/browser/{src/transaction → transaction}/builders/CustomScriptTransaction.d.ts +1 -0
  16. package/browser/{src/transaction → transaction}/builders/DeploymentTransaction.d.ts +1 -0
  17. package/browser/{src/transaction → transaction}/builders/TransactionBuilder.d.ts +4 -0
  18. package/browser/{src/transaction → transaction}/interfaces/ITransactionParameters.d.ts +3 -0
  19. package/browser/{src/transaction → transaction}/shared/TweakedTransaction.d.ts +6 -0
  20. package/browser/{src/utxo → utxo}/OPNetLimitedProvider.d.ts +1 -0
  21. package/build/_version.d.ts +1 -1
  22. package/build/_version.js +1 -1
  23. package/build/chain/ChainData.d.ts +4 -0
  24. package/build/chain/ChainData.js +20 -0
  25. package/build/deterministic/AddressMap.js +2 -2
  26. package/build/deterministic/DeterministicMap.d.ts +3 -3
  27. package/build/deterministic/DeterministicMap.js +2 -2
  28. package/build/deterministic/FastMap.d.ts +24 -0
  29. package/build/deterministic/{Map.js → FastMap.js} +22 -28
  30. package/build/epoch/ChallengeSolution.js +4 -4
  31. package/build/epoch/interfaces/IChallengeSolution.d.ts +4 -4
  32. package/build/generators/Features.d.ts +6 -1
  33. package/build/generators/Features.js +1 -0
  34. package/build/generators/Generator.d.ts +1 -0
  35. package/build/generators/Generator.js +24 -2
  36. package/build/generators/MLDSAData.d.ts +15 -0
  37. package/build/generators/MLDSAData.js +19 -0
  38. package/build/generators/builders/CalldataGenerator.js +1 -1
  39. package/build/generators/builders/DeploymentGenerator.js +1 -1
  40. package/build/generators/builders/P2WDAGenerator.js +1 -1
  41. package/build/keypair/Address.d.ts +9 -3
  42. package/build/keypair/Address.js +63 -38
  43. package/build/keypair/MessageSigner.d.ts +9 -0
  44. package/build/keypair/MessageSigner.js +101 -3
  45. package/build/opnet.d.ts +2 -1
  46. package/build/opnet.js +2 -1
  47. package/build/transaction/TransactionFactory.js +3 -0
  48. package/build/transaction/browser/Web3Provider.d.ts +15 -4
  49. package/build/transaction/browser/types/OPWallet.d.ts +2 -10
  50. package/build/transaction/browser/types/OPWallet.js +4 -2
  51. package/build/transaction/builders/CustomScriptTransaction.d.ts +1 -0
  52. package/build/transaction/builders/CustomScriptTransaction.js +3 -0
  53. package/build/transaction/builders/DeploymentTransaction.d.ts +1 -0
  54. package/build/transaction/builders/DeploymentTransaction.js +26 -1
  55. package/build/transaction/builders/InteractionTransaction.js +14 -1
  56. package/build/transaction/builders/InteractionTransactionP2WDA.js +14 -1
  57. package/build/transaction/builders/TransactionBuilder.d.ts +4 -0
  58. package/build/transaction/builders/TransactionBuilder.js +77 -0
  59. package/build/transaction/interfaces/ITransactionParameters.d.ts +3 -0
  60. package/build/transaction/shared/P2TR_MS.js +1 -0
  61. package/build/transaction/shared/TweakedTransaction.d.ts +6 -0
  62. package/build/transaction/shared/TweakedTransaction.js +19 -0
  63. package/build/utxo/OPNetLimitedProvider.d.ts +1 -0
  64. package/build/utxo/OPNetLimitedProvider.js +11 -1
  65. package/eslint.config.js +2 -1
  66. package/package.json +1 -1
  67. package/src/_version.ts +1 -1
  68. package/src/chain/ChainData.ts +32 -0
  69. package/src/deterministic/AddressMap.ts +3 -3
  70. package/src/deterministic/DeterministicMap.ts +9 -6
  71. package/src/deterministic/{Map.ts → FastMap.ts} +46 -33
  72. package/src/epoch/ChallengeSolution.ts +4 -4
  73. package/src/epoch/interfaces/IChallengeSolution.ts +4 -4
  74. package/src/generators/Features.ts +8 -2
  75. package/src/generators/Generator.ts +35 -2
  76. package/src/generators/MLDSAData.ts +30 -0
  77. package/src/generators/builders/CalldataGenerator.ts +1 -1
  78. package/src/generators/builders/DeploymentGenerator.ts +2 -1
  79. package/src/generators/builders/LegacyCalldataGenerator.ts +1 -0
  80. package/src/generators/builders/P2WDAGenerator.ts +5 -1
  81. package/src/keypair/Address.ts +78 -38
  82. package/src/keypair/MessageSigner.ts +214 -15
  83. package/src/opnet.ts +3 -1
  84. package/src/transaction/TransactionFactory.ts +3 -0
  85. package/src/transaction/browser/Web3Provider.ts +64 -4
  86. package/src/transaction/browser/types/OPWallet.ts +6 -53
  87. package/src/transaction/builders/CustomScriptTransaction.ts +4 -0
  88. package/src/transaction/builders/DeploymentTransaction.ts +36 -8
  89. package/src/transaction/builders/InteractionTransaction.ts +17 -7
  90. package/src/transaction/builders/InteractionTransactionP2WDA.ts +17 -7
  91. package/src/transaction/builders/TransactionBuilder.ts +107 -0
  92. package/src/transaction/interfaces/ITransactionParameters.ts +12 -0
  93. package/src/transaction/shared/P2TR_MS.ts +1 -0
  94. package/src/transaction/shared/TweakedTransaction.ts +35 -0
  95. package/src/utxo/OPNetLimitedProvider.ts +19 -2
  96. package/test/address.test.ts +18 -20
  97. package/test/addressmap.test.ts +783 -0
  98. package/test/addressverificator-mldsa.test.ts +40 -16
  99. package/test/fastmap-setall.test.ts +143 -0
  100. package/test/fastmap.test.ts +917 -0
  101. package/test/messagesigner-mldsa.test.ts +50 -50
  102. package/test/messagesigner-schnorr.test.ts +40 -40
  103. package/test/old/FastBigIntMap.ts +132 -0
  104. package/test/oldfastmap.test.ts +917 -0
  105. package/tsconfig.webpack.json +2 -6
  106. package/webpack.config.js +1 -1
  107. package/browser/src/_version.d.ts +0 -1
  108. package/browser/src/deterministic/Map.d.ts +0 -19
  109. package/browser/src/transaction/browser/types/OPWallet.d.ts +0 -14
  110. package/browser/test/address.test.d.ts +0 -1
  111. package/browser/test/addressverificator-mldsa.test.d.ts +0 -1
  112. package/browser/test/derivePath.test.d.ts +0 -1
  113. package/browser/test/messagesigner-mldsa.test.d.ts +0 -1
  114. package/browser/test/messagesigner-schnorr.test.d.ts +0 -1
  115. package/browser/test/network-awareness.test.d.ts +0 -1
  116. package/build/deterministic/Map.d.ts +0 -19
  117. /package/browser/{src/abi → abi}/ABICoder.d.ts +0 -0
  118. /package/browser/{src/buffer → buffer}/BinaryReader.d.ts +0 -0
  119. /package/browser/{src/buffer → buffer}/BinaryWriter.d.ts +0 -0
  120. /package/browser/{src/bytecode → bytecode}/Compressor.d.ts +0 -0
  121. /package/browser/{src/consensus → consensus}/Consensus.d.ts +0 -0
  122. /package/browser/{src/consensus → consensus}/ConsensusConfig.d.ts +0 -0
  123. /package/browser/{src/consensus → consensus}/metadata/RoswellConsensus.d.ts +0 -0
  124. /package/browser/{src/crypto → crypto}/crypto-browser.d.ts +0 -0
  125. /package/browser/{src/crypto → crypto}/crypto.d.ts +0 -0
  126. /package/browser/{src/deterministic → deterministic}/AddressMap.d.ts +0 -0
  127. /package/browser/{src/deterministic → deterministic}/AddressSet.d.ts +0 -0
  128. /package/browser/{src/deterministic → deterministic}/CustomMap.d.ts +0 -0
  129. /package/browser/{src/deterministic → deterministic}/DeterministicSet.d.ts +0 -0
  130. /package/browser/{src/epoch → epoch}/ChallengeSolution.d.ts +0 -0
  131. /package/browser/{src/epoch → epoch}/validator/EpochValidator.d.ts +0 -0
  132. /package/browser/{src/event → event}/NetEvent.d.ts +0 -0
  133. /package/browser/{src/generators → generators}/AddressGenerator.d.ts +0 -0
  134. /package/browser/{src/generators → generators}/builders/CalldataGenerator.d.ts +0 -0
  135. /package/browser/{src/generators → generators}/builders/CustomGenerator.d.ts +0 -0
  136. /package/browser/{src/generators → generators}/builders/DeploymentGenerator.d.ts +0 -0
  137. /package/browser/{src/generators → generators}/builders/LegacyCalldataGenerator.d.ts +0 -0
  138. /package/browser/{src/generators → generators}/builders/MultiSignGenerator.d.ts +0 -0
  139. /package/browser/{src/generators → generators}/builders/P2WDAGenerator.d.ts +0 -0
  140. /package/browser/{src/index.d.ts → index.d.ts} +0 -0
  141. /package/browser/{src/keypair → keypair}/AddressVerificator.d.ts +0 -0
  142. /package/browser/{src/keypair → keypair}/EcKeyPair.d.ts +0 -0
  143. /package/browser/{src/keypair → keypair}/Secp256k1PointDeriver.d.ts +0 -0
  144. /package/browser/{src/keypair → keypair}/Wallet.d.ts +0 -0
  145. /package/browser/{src/keypair → keypair}/interfaces/IWallet.d.ts +0 -0
  146. /package/browser/{src/metadata → metadata}/ContractBaseMetadata.d.ts +0 -0
  147. /package/browser/{src/metadata → metadata}/tokens.d.ts +0 -0
  148. /package/browser/{src/mnemonic → mnemonic}/BIPStandard.d.ts +0 -0
  149. /package/browser/{src/mnemonic → mnemonic}/Mnemonic.d.ts +0 -0
  150. /package/browser/{src/mnemonic → mnemonic}/MnemonicStrength.d.ts +0 -0
  151. /package/browser/{src/network → network}/ChainId.d.ts +0 -0
  152. /package/browser/{src/p2wda → p2wda}/P2WDADetector.d.ts +0 -0
  153. /package/browser/{src/signer → signer}/SignerUtils.d.ts +0 -0
  154. /package/browser/{src/signer → signer}/TweakedSigner.d.ts +0 -0
  155. /package/browser/{src/transaction → transaction}/ContractAddress.d.ts +0 -0
  156. /package/browser/{src/transaction → transaction}/TransactionFactory.d.ts +0 -0
  157. /package/browser/{src/transaction → transaction}/browser/BrowserSignerBase.d.ts +0 -0
  158. /package/browser/{src/transaction → transaction}/browser/extensions/UnisatSigner.d.ts +0 -0
  159. /package/browser/{src/transaction → transaction}/browser/extensions/XverseSigner.d.ts +0 -0
  160. /package/browser/{src/transaction → transaction}/browser/types/Unisat.d.ts +0 -0
  161. /package/browser/{src/transaction → transaction}/browser/types/Xverse.d.ts +0 -0
  162. /package/browser/{src/transaction → transaction}/builders/CancelTransaction.d.ts +0 -0
  163. /package/browser/{src/transaction → transaction}/builders/ChallengeSolutionTransaction.d.ts +0 -0
  164. /package/browser/{src/transaction → transaction}/builders/FundingTransaction.d.ts +0 -0
  165. /package/browser/{src/transaction → transaction}/builders/InteractionTransaction.d.ts +0 -0
  166. /package/browser/{src/transaction → transaction}/builders/InteractionTransactionP2WDA.d.ts +0 -0
  167. /package/browser/{src/transaction → transaction}/builders/MultiSignTransaction.d.ts +0 -0
  168. /package/browser/{src/transaction → transaction}/builders/SharedInteractionTransaction.d.ts +0 -0
  169. /package/browser/{src/transaction → transaction}/enums/TransactionType.d.ts +0 -0
  170. /package/browser/{src/transaction → transaction}/interfaces/Tap.d.ts +0 -0
  171. /package/browser/{src/transaction → transaction}/mineable/IP2WSHAddress.d.ts +0 -0
  172. /package/browser/{src/transaction → transaction}/mineable/TimelockGenerator.d.ts +0 -0
  173. /package/browser/{src/transaction → transaction}/processor/PsbtTransaction.d.ts +0 -0
  174. /package/browser/{src/transaction → transaction}/psbt/PSBTTypes.d.ts +0 -0
  175. /package/browser/{src/transaction → transaction}/shared/P2TR_MS.d.ts +0 -0
  176. /package/browser/{src/utils → utils}/BitcoinUtils.d.ts +0 -0
  177. /package/browser/{src/utils → utils}/BufferHelper.d.ts +0 -0
  178. /package/browser/{src/utils → utils}/StringToBuffer.d.ts +0 -0
  179. /package/browser/{src/utils → utils}/lengths.d.ts +0 -0
  180. /package/browser/{src/utils → utils}/types.d.ts +0 -0
  181. /package/browser/{src/utxo → utxo}/interfaces/BroadcastResponse.d.ts +0 -0
  182. /package/browser/{src/utxo → utxo}/interfaces/IUTXO.d.ts +0 -0
  183. /package/browser/{src/verification → verification}/TapscriptVerificator.d.ts +0 -0
@@ -204,9 +204,12 @@ describe('AddressVerificator ML-DSA Support', () => {
204
204
  const wallet = mnemonic.derive(0);
205
205
  const p2opAddress = wallet.address.p2op(networks.bitcoin);
206
206
 
207
- const isValid = AddressVerificator.isValidP2OPAddress(p2opAddress, networks.bitcoin);
207
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
208
+ p2opAddress,
209
+ networks.bitcoin,
210
+ );
208
211
 
209
- expect(isValid).toBe(true);
212
+ expect(isValidLegacyPublicKey).toBe(true);
210
213
  });
211
214
 
212
215
  it('should validate testnet P2OP address', () => {
@@ -219,9 +222,12 @@ describe('AddressVerificator ML-DSA Support', () => {
219
222
  const wallet = mnemonic.derive(0);
220
223
  const p2opAddress = wallet.address.p2op(networks.testnet);
221
224
 
222
- const isValid = AddressVerificator.isValidP2OPAddress(p2opAddress, networks.testnet);
225
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
226
+ p2opAddress,
227
+ networks.testnet,
228
+ );
223
229
 
224
- expect(isValid).toBe(true);
230
+ expect(isValidLegacyPublicKey).toBe(true);
225
231
  });
226
232
 
227
233
  it('should validate regtest P2OP address', () => {
@@ -234,9 +240,12 @@ describe('AddressVerificator ML-DSA Support', () => {
234
240
  const wallet = mnemonic.derive(0);
235
241
  const p2opAddress = wallet.address.p2op(networks.regtest);
236
242
 
237
- const isValid = AddressVerificator.isValidP2OPAddress(p2opAddress, networks.regtest);
243
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
244
+ p2opAddress,
245
+ networks.regtest,
246
+ );
238
247
 
239
- expect(isValid).toBe(true);
248
+ expect(isValidLegacyPublicKey).toBe(true);
240
249
  });
241
250
 
242
251
  it('should reject P2TR address as P2OP', () => {
@@ -249,9 +258,12 @@ describe('AddressVerificator ML-DSA Support', () => {
249
258
  const wallet = mnemonic.derive(0);
250
259
  const p2trAddress = wallet.p2tr;
251
260
 
252
- const isValid = AddressVerificator.isValidP2OPAddress(p2trAddress, networks.bitcoin);
261
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
262
+ p2trAddress,
263
+ networks.bitcoin,
264
+ );
253
265
 
254
- expect(isValid).toBe(false);
266
+ expect(isValidLegacyPublicKey).toBe(false);
255
267
  });
256
268
 
257
269
  it('should reject P2WPKH address as P2OP', () => {
@@ -264,22 +276,31 @@ describe('AddressVerificator ML-DSA Support', () => {
264
276
  const wallet = mnemonic.derive(0);
265
277
  const p2wpkhAddress = wallet.p2wpkh;
266
278
 
267
- const isValid = AddressVerificator.isValidP2OPAddress(p2wpkhAddress, networks.bitcoin);
279
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
280
+ p2wpkhAddress,
281
+ networks.bitcoin,
282
+ );
268
283
 
269
- expect(isValid).toBe(false);
284
+ expect(isValidLegacyPublicKey).toBe(false);
270
285
  });
271
286
 
272
287
  it('should reject invalid address string', () => {
273
288
  const invalidAddress = 'not a valid address';
274
- const isValid = AddressVerificator.isValidP2OPAddress(invalidAddress, networks.bitcoin);
289
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
290
+ invalidAddress,
291
+ networks.bitcoin,
292
+ );
275
293
 
276
- expect(isValid).toBe(false);
294
+ expect(isValidLegacyPublicKey).toBe(false);
277
295
  });
278
296
 
279
297
  it('should reject empty string', () => {
280
- const isValid = AddressVerificator.isValidP2OPAddress('', networks.bitcoin);
298
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
299
+ '',
300
+ networks.bitcoin,
301
+ );
281
302
 
282
- expect(isValid).toBe(false);
303
+ expect(isValidLegacyPublicKey).toBe(false);
283
304
  });
284
305
 
285
306
  it('should reject address on wrong network', () => {
@@ -293,9 +314,12 @@ describe('AddressVerificator ML-DSA Support', () => {
293
314
  const p2opAddress = wallet.address.p2op(networks.bitcoin);
294
315
 
295
316
  // Try to validate mainnet address on testnet
296
- const isValid = AddressVerificator.isValidP2OPAddress(p2opAddress, networks.testnet);
317
+ const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
318
+ p2opAddress,
319
+ networks.testnet,
320
+ );
297
321
 
298
- expect(isValid).toBe(false);
322
+ expect(isValidLegacyPublicKey).toBe(false);
299
323
  });
300
324
  });
301
325
 
@@ -0,0 +1,143 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { FastBigIntMap } from './old/FastBigIntMap.js';
3
+ import { FastMap } from '../src';
4
+
5
+ describe('setAll bug', () => {
6
+ describe('FastBigIntMap (original - correct behavior)', () => {
7
+ it('should replace all entries, not merge', () => {
8
+ const map1 = new FastBigIntMap([
9
+ [1n, 100n],
10
+ [2n, 200n],
11
+ ]);
12
+
13
+ const map2 = new FastBigIntMap([
14
+ [3n, 300n],
15
+ [4n, 400n],
16
+ ]);
17
+
18
+ // setAll should REPLACE, not merge
19
+ map2.setAll(map1);
20
+
21
+ // Should have entries from map1 only
22
+ expect(map2.size).toBe(2);
23
+ expect(map2.get(1n)).toBe(100n);
24
+ expect(map2.get(2n)).toBe(200n);
25
+
26
+ // Old entries should be GONE
27
+ expect(map2.has(3n)).toBe(false);
28
+ expect(map2.has(4n)).toBe(false);
29
+ expect(map2.get(3n)).toBeUndefined();
30
+ expect(map2.get(4n)).toBeUndefined();
31
+ });
32
+ });
33
+
34
+ describe('FastMap (replacement - should match original behavior)', () => {
35
+ it('should replace all entries, not merge', () => {
36
+ const map1 = new FastMap<bigint, bigint>([
37
+ [1n, 100n],
38
+ [2n, 200n],
39
+ ]);
40
+
41
+ const map2 = new FastMap<bigint, bigint>([
42
+ [3n, 300n],
43
+ [4n, 400n],
44
+ ]);
45
+
46
+ // setAll should REPLACE, not merge
47
+ map2.setAll(map1);
48
+
49
+ // Should have entries from map1 only
50
+ expect(map2.size).toBe(2);
51
+ expect(map2.get(1n)).toBe(100n);
52
+ expect(map2.get(2n)).toBe(200n);
53
+
54
+ // Old entries should be GONE
55
+ expect(map2.has(3n)).toBe(false);
56
+ expect(map2.has(4n)).toBe(false);
57
+ expect(map2.get(3n)).toBeUndefined();
58
+ expect(map2.get(4n)).toBeUndefined();
59
+ });
60
+
61
+ it('should not leak old keys in iteration', () => {
62
+ const map1 = new FastMap<bigint, bigint>([[1n, 100n]]);
63
+
64
+ const map2 = new FastMap<bigint, bigint>([
65
+ [2n, 200n],
66
+ [3n, 300n],
67
+ ]);
68
+
69
+ map2.setAll(map1);
70
+
71
+ const keys = [...map2.keys()];
72
+ const values = [...map2.values()];
73
+ const entries = [...map2.entries()];
74
+
75
+ expect(keys).toEqual([1n]);
76
+ expect(values).toEqual([100n]);
77
+ expect(entries).toEqual([[1n, 100n]]);
78
+ });
79
+
80
+ it('should handle overlapping keys correctly', () => {
81
+ const map1 = new FastMap<bigint, bigint>([
82
+ [1n, 100n],
83
+ [2n, 200n],
84
+ ]);
85
+
86
+ const map2 = new FastMap<bigint, bigint>([
87
+ [2n, 999n], // overlapping key
88
+ [3n, 300n],
89
+ ]);
90
+
91
+ map2.setAll(map1);
92
+
93
+ // Should have map1's values, including overwriting the overlapping key
94
+ expect(map2.size).toBe(2);
95
+ expect(map2.get(1n)).toBe(100n);
96
+ expect(map2.get(2n)).toBe(200n); // map1's value, not 999n
97
+
98
+ // 3n should be gone
99
+ expect(map2.has(3n)).toBe(false);
100
+ });
101
+ });
102
+
103
+ describe('behavior parity', () => {
104
+ it('FastMap.setAll should behave identically to FastBigIntMap.setAll', () => {
105
+ // Setup identical scenarios
106
+ const oldMap1 = new FastBigIntMap([
107
+ [1n, 10n],
108
+ [2n, 20n],
109
+ ]);
110
+ const oldMap2 = new FastBigIntMap([
111
+ [3n, 30n],
112
+ [4n, 40n],
113
+ [5n, 50n],
114
+ ]);
115
+
116
+ const newMap1 = new FastMap<bigint, bigint>([
117
+ [1n, 10n],
118
+ [2n, 20n],
119
+ ]);
120
+ const newMap2 = new FastMap<bigint, bigint>([
121
+ [3n, 30n],
122
+ [4n, 40n],
123
+ [5n, 50n],
124
+ ]);
125
+
126
+ // Perform setAll on both
127
+ oldMap2.setAll(oldMap1);
128
+ newMap2.setAll(newMap1);
129
+
130
+ // Compare sizes
131
+ expect(newMap2.size).toBe(oldMap2.size);
132
+
133
+ // Compare keys
134
+ expect([...newMap2.keys()]).toEqual([...oldMap2.keys()]);
135
+
136
+ // Compare values
137
+ expect([...newMap2.values()]).toEqual([...oldMap2.values()]);
138
+
139
+ // Compare entries
140
+ expect([...newMap2.entries()]).toEqual([...oldMap2.entries()]);
141
+ });
142
+ });
143
+ });