voltaire-effect 0.2.23 → 0.2.25
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.
- package/dist/KZGService-B7PJerOb.d.ts +146 -0
- package/dist/ProviderService-BZ5pqDrD.d.ts +319 -0
- package/dist/{X25519Test-DGsk1V9o.d.ts → X25519Test-D5Q-5fL9.d.ts} +4 -143
- package/dist/crypto/index.d.ts +5 -6
- package/dist/crypto/index.js +227 -201
- package/dist/{index-IgkEHjBe.d.ts → index-BCOuszKZ.d.ts} +17634 -11962
- package/dist/index.d.ts +3195 -976
- package/dist/index.js +6994 -4679
- package/dist/native/index.d.ts +25 -16
- package/dist/native/index.js +7020 -4705
- package/dist/primitives/index.d.ts +14 -8
- package/dist/primitives/index.js +4060 -2539
- package/dist/services/index.d.ts +9054 -30
- package/dist/services/index.js +1592 -1331
- package/package.json +2 -2
- package/src/crypto/ERC6492/ERC6492.test.ts +32 -14
- package/src/crypto/ERC6492/verifySignature.ts +4 -5
- package/src/crypto/Keccak256/Keccak256.test.ts +42 -1
- package/src/crypto/Keccak256/hashSync.ts +53 -0
- package/src/crypto/Keccak256/index.ts +2 -0
- package/src/index.ts +7 -2
- package/src/primitives/Abi/decode.test.ts +38 -0
- package/src/primitives/Abi/decode.ts +67 -0
- package/src/primitives/Abi/decodeData.test.ts +37 -0
- package/src/primitives/Abi/decodeData.ts +77 -0
- package/src/primitives/Abi/decodeLog.test.ts +32 -0
- package/src/primitives/Abi/decodeLog.ts +81 -0
- package/src/primitives/Abi/decodeWrappedError.test.ts +41 -0
- package/src/primitives/Abi/decodeWrappedError.ts +68 -0
- package/src/primitives/Abi/encode.test.ts +43 -0
- package/src/primitives/Abi/encode.ts +67 -0
- package/src/primitives/Abi/encodePacked.test.ts +35 -0
- package/src/primitives/Abi/encodePacked.ts +62 -0
- package/src/primitives/Abi/encodeWrappedError.test.ts +21 -0
- package/src/primitives/Abi/encodeWrappedError.ts +64 -0
- package/src/primitives/Abi/findSelectorCollisions.test.ts +50 -0
- package/src/primitives/Abi/findSelectorCollisions.ts +83 -0
- package/src/primitives/Abi/index.ts +33 -7
- package/src/primitives/Abi/parseLogs.test.ts +37 -0
- package/src/primitives/Abi/parseLogs.ts +62 -0
- package/src/primitives/AccessList/AccessList.test.ts +229 -0
- package/src/primitives/AccessList/AccessListTypeSchema.ts +16 -0
- package/src/primitives/AccessList/addressCount.ts +21 -0
- package/src/primitives/AccessList/assertValid.ts +37 -0
- package/src/primitives/AccessList/create.ts +19 -0
- package/src/primitives/AccessList/deduplicate.ts +23 -0
- package/src/primitives/AccessList/from.ts +39 -0
- package/src/primitives/AccessList/fromBytes.ts +36 -0
- package/src/primitives/AccessList/gasCost.ts +22 -0
- package/src/primitives/AccessList/gasSavings.ts +26 -0
- package/src/primitives/AccessList/hasSavings.ts +23 -0
- package/src/primitives/AccessList/includesAddress.ts +25 -0
- package/src/primitives/AccessList/includesStorageKey.ts +28 -0
- package/src/primitives/AccessList/index.ts +99 -19
- package/src/primitives/AccessList/is.ts +23 -0
- package/src/primitives/AccessList/isEmpty.ts +23 -0
- package/src/primitives/AccessList/isItem.ts +22 -0
- package/src/primitives/AccessList/keysFor.ts +29 -0
- package/src/primitives/AccessList/merge.ts +24 -0
- package/src/primitives/AccessList/storageKeyCount.ts +21 -0
- package/src/primitives/AccessList/toBytes.ts +23 -0
- package/src/primitives/AccessList/withAddress.ts +27 -0
- package/src/primitives/AccessList/withStorageKey.ts +30 -0
- package/src/primitives/Address/Address.test.ts +146 -0
- package/src/primitives/Address/assert.ts +51 -0
- package/src/primitives/Address/calculateCreate2Address.ts +33 -0
- package/src/primitives/Address/calculateCreateAddress.ts +30 -0
- package/src/primitives/Address/deduplicateAddresses.ts +20 -0
- package/src/primitives/Address/from.ts +41 -0
- package/src/primitives/Address/fromAbiEncoded.ts +35 -0
- package/src/primitives/Address/fromBase64.ts +25 -0
- package/src/primitives/Address/fromBytes.ts +25 -0
- package/src/primitives/Address/fromHex.ts +31 -0
- package/src/primitives/Address/fromNumber.ts +25 -0
- package/src/primitives/Address/fromPrivateKey.ts +25 -0
- package/src/primitives/Address/fromPublicKey.ts +56 -0
- package/src/primitives/Address/index.ts +99 -35
- package/src/primitives/Address/is.ts +20 -0
- package/src/primitives/Address/isAddress.ts +22 -0
- package/src/primitives/Address/sortAddresses.ts +19 -0
- package/src/primitives/Address/toChecksummed.ts +32 -0
- package/src/primitives/Address/toHex.ts +18 -0
- package/src/primitives/Address/zero.ts +18 -0
- package/src/primitives/Base64/Base64.test.ts +75 -0
- package/src/primitives/Base64/convert.ts +37 -0
- package/src/primitives/Base64/decode.ts +59 -0
- package/src/primitives/Base64/encode.ts +42 -0
- package/src/primitives/Base64/from.ts +39 -0
- package/src/primitives/Base64/index.ts +81 -1
- package/src/primitives/Base64/size.ts +16 -0
- package/src/primitives/Base64/validation.ts +16 -0
- package/src/primitives/Blob/Blob.test.ts +292 -0
- package/src/primitives/Blob/calculateGas.ts +30 -0
- package/src/primitives/Blob/estimateBlobCount.ts +30 -0
- package/src/primitives/Blob/from.ts +38 -0
- package/src/primitives/Blob/fromData.ts +36 -0
- package/src/primitives/Blob/index.ts +99 -12
- package/src/primitives/Blob/isValidVersion.ts +27 -0
- package/src/primitives/Blob/joinData.ts +43 -0
- package/src/primitives/Blob/splitData.ts +36 -0
- package/src/primitives/Blob/toCommitment.ts +43 -0
- package/src/primitives/Blob/toProof.ts +50 -0
- package/src/primitives/Blob/toVersionedHash.ts +35 -0
- package/src/primitives/Blob/verify.ts +49 -0
- package/src/primitives/Blob/verifyBatch.ts +119 -0
- package/src/primitives/BloomFilter/BloomFilter.test.ts +138 -0
- package/src/primitives/BloomFilter/add.ts +23 -0
- package/src/primitives/BloomFilter/combine.ts +21 -0
- package/src/primitives/BloomFilter/contains.ts +26 -0
- package/src/primitives/BloomFilter/create.ts +35 -0
- package/src/primitives/BloomFilter/density.ts +22 -0
- package/src/primitives/BloomFilter/expectedFalsePositiveRate.ts +25 -0
- package/src/primitives/BloomFilter/fromHex.ts +37 -0
- package/src/primitives/BloomFilter/hash.ts +43 -0
- package/src/primitives/BloomFilter/index.ts +59 -37
- package/src/primitives/BloomFilter/isEmpty.ts +22 -0
- package/src/primitives/BloomFilter/merge.ts +24 -0
- package/src/primitives/BloomFilter/toHex.ts +22 -0
- package/src/primitives/Bytecode/analyze.ts +58 -0
- package/src/primitives/Bytecode/detectFusions.ts +10 -0
- package/src/primitives/Bytecode/equals.ts +10 -0
- package/src/primitives/Bytecode/extractRuntime.ts +12 -0
- package/src/primitives/Bytecode/format.ts +16 -0
- package/src/primitives/Bytecode/from.ts +16 -0
- package/src/primitives/Bytecode/fromHex.ts +14 -0
- package/src/primitives/Bytecode/getBlock.ts +12 -0
- package/src/primitives/Bytecode/getNextPc.ts +12 -0
- package/src/primitives/Bytecode/getPushSize.ts +8 -0
- package/src/primitives/Bytecode/hasMetadata.ts +10 -0
- package/src/primitives/Bytecode/hash.ts +9 -0
- package/src/primitives/Bytecode/index.ts +103 -13
- package/src/primitives/Bytecode/isPush.ts +8 -0
- package/src/primitives/Bytecode/isTerminator.ts +8 -0
- package/src/primitives/Bytecode/isValidJumpDest.ts +12 -0
- package/src/primitives/Bytecode/parseInstructions.ts +10 -0
- package/src/primitives/Bytecode/prettyPrint.ts +12 -0
- package/src/primitives/Bytecode/scan.ts +20 -0
- package/src/primitives/Bytecode/size.ts +9 -0
- package/src/primitives/Bytecode/stripMetadata.ts +10 -0
- package/src/primitives/Bytecode/toAbi.ts +10 -0
- package/src/primitives/Bytecode/toHex.ts +10 -0
- package/src/primitives/Bytecode/types.ts +23 -0
- package/src/primitives/Bytecode/validate.ts +9 -0
- package/src/primitives/ContractSignature/ContractSignature.test.ts +1 -13
- package/src/primitives/ContractSignature/verifySignature.ts +88 -62
- package/src/primitives/Ens/Ens.test.ts +71 -0
- package/src/primitives/Ens/convert.ts +13 -0
- package/src/primitives/Ens/from.ts +32 -0
- package/src/primitives/Ens/hash.ts +46 -0
- package/src/primitives/Ens/index.ts +86 -4
- package/src/primitives/Ens/normalize.ts +45 -0
- package/src/primitives/Ens/validation.ts +38 -0
- package/src/primitives/EventLog/accessors.ts +32 -0
- package/src/primitives/EventLog/clone.ts +17 -0
- package/src/primitives/EventLog/create.ts +46 -0
- package/src/primitives/EventLog/filtering.ts +48 -0
- package/src/primitives/EventLog/index.ts +96 -6
- package/src/primitives/EventLog/status.ts +17 -0
- package/src/primitives/EventLog/toRpc.ts +49 -0
- package/src/primitives/Hardfork/HardforkSchema.ts +3 -3
- package/src/primitives/Hardfork/allIds.ts +13 -0
- package/src/primitives/Hardfork/allNames.ts +13 -0
- package/src/primitives/Hardfork/compare.ts +17 -0
- package/src/primitives/Hardfork/comparisons.ts +45 -0
- package/src/primitives/Hardfork/equals.ts +17 -0
- package/src/primitives/Hardfork/features.ts +61 -0
- package/src/primitives/Hardfork/fromString.ts +16 -0
- package/src/primitives/Hardfork/index.ts +128 -18
- package/src/primitives/Hardfork/isValidName.ts +14 -0
- package/src/primitives/Hardfork/minMax.ts +23 -0
- package/src/primitives/Hardfork/range.ts +19 -0
- package/src/primitives/Hardfork/toString.ts +16 -0
- package/src/primitives/Hash/Hash.test.ts +104 -0
- package/src/primitives/Hash/from.ts +47 -0
- package/src/primitives/Hash/fromBytes.ts +46 -0
- package/src/primitives/Hash/fromHex.ts +44 -0
- package/src/primitives/Hash/index.ts +45 -8
- package/src/primitives/Hash/isHash.ts +31 -0
- package/src/primitives/Hash/toHex.ts +29 -0
- package/src/primitives/Hex/Hex.test.ts +327 -153
- package/src/primitives/Hex/assertSize.ts +41 -0
- package/src/primitives/Hex/concat.ts +37 -0
- package/src/primitives/Hex/from.ts +38 -0
- package/src/primitives/Hex/fromBigInt.ts +40 -0
- package/src/primitives/Hex/fromBoolean.ts +29 -0
- package/src/primitives/Hex/fromNumber.ts +41 -0
- package/src/primitives/Hex/fromString.ts +28 -0
- package/src/primitives/Hex/index.ts +68 -37
- package/src/primitives/Hex/pad.ts +40 -0
- package/src/primitives/Hex/padRight.ts +39 -0
- package/src/primitives/Hex/size.ts +29 -0
- package/src/primitives/Hex/slice.ts +42 -0
- package/src/primitives/Hex/toBigInt.ts +27 -0
- package/src/primitives/Hex/toBoolean.ts +38 -0
- package/src/primitives/Hex/toNumber.ts +37 -0
- package/src/primitives/Hex/toStringHex.ts +39 -0
- package/src/primitives/Hex/trim.ts +27 -0
- package/src/primitives/Hex/validate.ts +37 -0
- package/src/primitives/Hex/xor.ts +39 -0
- package/src/primitives/Opcode/OpcodeSchema.ts +1 -1
- package/src/primitives/Opcode/disassemble.ts +15 -0
- package/src/primitives/Opcode/dupPosition.ts +15 -0
- package/src/primitives/Opcode/format.ts +15 -0
- package/src/primitives/Opcode/getters.ts +54 -0
- package/src/primitives/Opcode/index.ts +301 -11
- package/src/primitives/Opcode/info.ts +18 -0
- package/src/primitives/Opcode/jumpDests.ts +15 -0
- package/src/primitives/Opcode/logTopics.ts +15 -0
- package/src/primitives/Opcode/name.ts +15 -0
- package/src/primitives/Opcode/parse.ts +15 -0
- package/src/primitives/Opcode/predicates.ts +72 -0
- package/src/primitives/Opcode/pushBytes.ts +15 -0
- package/src/primitives/Opcode/pushOpcode.ts +15 -0
- package/src/primitives/Opcode/swapPosition.ts +15 -0
- package/src/primitives/Rlp/decodeBatch.ts +46 -0
- package/src/primitives/Rlp/decodeObject.ts +46 -0
- package/src/primitives/Rlp/decodeValue.ts +51 -0
- package/src/primitives/Rlp/encodeBatch.ts +50 -0
- package/src/primitives/Rlp/encodeObject.ts +48 -0
- package/src/primitives/Rlp/encodeVariadic.ts +49 -0
- package/src/primitives/Rlp/equals.ts +22 -0
- package/src/primitives/Rlp/from.ts +44 -0
- package/src/primitives/Rlp/fromJSON.ts +45 -0
- package/src/primitives/Rlp/getEncodedLength.ts +47 -0
- package/src/primitives/Rlp/getLength.ts +44 -0
- package/src/primitives/Rlp/index.ts +67 -14
- package/src/primitives/Rlp/isBytesData.ts +21 -0
- package/src/primitives/Rlp/isCanonical.ts +32 -0
- package/src/primitives/Rlp/isData.ts +21 -0
- package/src/primitives/Rlp/isList.ts +46 -0
- package/src/primitives/Rlp/isListData.ts +21 -0
- package/src/primitives/Rlp/isString.ts +46 -0
- package/src/primitives/Rlp/toJSON.ts +20 -0
- package/src/primitives/Rlp/toRaw.ts +31 -0
- package/src/primitives/Signature/Signature.test.ts +217 -0
- package/src/primitives/Signature/from.ts +38 -0
- package/src/primitives/Signature/fromBytes.ts +31 -0
- package/src/primitives/Signature/fromCompact.ts +33 -0
- package/src/primitives/Signature/fromDER.ts +35 -0
- package/src/primitives/Signature/fromEd25519.ts +24 -0
- package/src/primitives/Signature/fromHex.ts +29 -0
- package/src/primitives/Signature/fromP256.ts +25 -0
- package/src/primitives/Signature/fromRpc.ts +38 -0
- package/src/primitives/Signature/fromSecp256k1.ts +29 -0
- package/src/primitives/Signature/fromTuple.ts +33 -0
- package/src/primitives/Signature/getR.ts +24 -0
- package/src/primitives/Signature/getS.ts +24 -0
- package/src/primitives/Signature/getV.ts +24 -0
- package/src/primitives/Signature/index.ts +61 -11
- package/src/primitives/Signature/toDER.ts +24 -0
- package/src/primitives/Signature/toHex.ts +24 -0
- package/src/primitives/Signature/toRpc.ts +35 -0
- package/src/primitives/Signature/toTuple.ts +29 -0
- package/src/primitives/Signature/verify.ts +31 -0
- package/src/primitives/Siwe/create.ts +56 -0
- package/src/primitives/Siwe/hash.ts +27 -0
- package/src/primitives/Siwe/index.ts +57 -21
- package/src/primitives/Siwe/parse.ts +24 -0
- package/src/primitives/Siwe/verify.ts +47 -0
- package/src/primitives/Transaction/Transaction.test.ts +309 -0
- package/src/primitives/Transaction/index.ts +467 -2
- package/src/primitives/Uint/Uint.test.ts +200 -0
- package/src/primitives/Uint/dividedBy.ts +34 -0
- package/src/primitives/Uint/from.ts +35 -0
- package/src/primitives/Uint/fromAbiEncoded.ts +29 -0
- package/src/primitives/Uint/fromBigInt.ts +30 -0
- package/src/primitives/Uint/fromBytes.ts +32 -0
- package/src/primitives/Uint/fromHex.ts +32 -0
- package/src/primitives/Uint/fromNumber.ts +30 -0
- package/src/primitives/Uint/index.ts +90 -45
- package/src/primitives/Uint/isUint256.ts +25 -0
- package/src/primitives/Uint/isValid.ts +25 -0
- package/src/primitives/Uint/modulo.ts +34 -0
- package/src/primitives/Uint/toHex.ts +31 -0
- package/src/primitives/Uint/tryFrom.ts +30 -0
- package/src/services/Contract/Contract.test.ts +46 -41
- package/src/services/Contract/Contract.ts +25 -29
- package/src/services/Contract/ContractTypes.ts +6 -3
- package/src/services/Contract/estimateGas.test.ts +21 -9
- package/src/services/Contract/estimateGas.ts +21 -23
- package/src/services/Debug/Debug.ts +1 -1
- package/src/services/Debug/DebugService.ts +1 -1
- package/src/services/FeeEstimator/DefaultFeeEstimator.ts +10 -6
- package/src/services/FeeEstimator/FeeEstimator.test.ts +68 -62
- package/src/services/Multicall/BalanceResolver.ts +1 -1
- package/src/services/Multicall/GetBalance.ts +1 -1
- package/src/services/Multicall/Multicall.ts +1 -1
- package/src/services/NonceManager/DefaultNonceManager.ts +4 -7
- package/src/services/NonceManager/NonceManager.test.ts +20 -33
- package/src/services/Provider/Provider.test.ts +155 -349
- package/src/services/Provider/Provider.ts +14 -1180
- package/src/services/Provider/ProviderService.ts +14 -1199
- package/src/services/Provider/actions/multicall.test.ts +29 -39
- package/src/services/Provider/actions/multicall.ts +2 -2
- package/src/services/Provider/actions/readContract.test.ts +45 -50
- package/src/services/Provider/actions/readContract.ts +2 -6
- package/src/services/Provider/actions/simulateContract.test.ts +55 -232
- package/src/services/Provider/actions/simulateContract.ts +2 -3
- package/src/services/Provider/ens/getEnsAddress.ts +11 -14
- package/src/services/Provider/ens/getEnsName.ts +15 -18
- package/src/services/Provider/ens/getEnsResolver.ts +11 -14
- package/src/services/Provider/ens/getEnsText.ts +15 -18
- package/src/services/Provider/functions/backfillBlocks.ts +97 -0
- package/src/services/Provider/functions/call.ts +45 -0
- package/src/services/Provider/functions/createAccessList.ts +61 -0
- package/src/services/Provider/functions/createBlockFilter.ts +41 -0
- package/src/services/Provider/functions/createEventFilter.ts +43 -0
- package/src/services/Provider/functions/createPendingTransactionFilter.ts +41 -0
- package/src/services/Provider/functions/estimateGas.ts +52 -0
- package/src/services/Provider/functions/getAccounts.ts +40 -0
- package/src/services/Provider/functions/getBalance.ts +50 -0
- package/src/services/Provider/functions/getBlobBaseFee.ts +46 -0
- package/src/services/Provider/functions/getBlock.ts +95 -0
- package/src/services/Provider/functions/getBlockNumber.ts +51 -0
- package/src/services/Provider/functions/getBlockReceipts.ts +78 -0
- package/src/services/Provider/functions/getBlockTransactionCount.ts +86 -0
- package/src/services/Provider/functions/getChainId.ts +46 -0
- package/src/services/Provider/functions/getCode.ts +43 -0
- package/src/services/Provider/functions/getCoinbase.ts +40 -0
- package/src/services/Provider/functions/getFeeHistory.ts +85 -0
- package/src/services/Provider/functions/getFilterChanges.ts +42 -0
- package/src/services/Provider/functions/getFilterLogs.ts +44 -0
- package/src/services/Provider/functions/getGasPrice.ts +46 -0
- package/src/services/Provider/functions/getHashrate.ts +46 -0
- package/src/services/Provider/functions/getLogs.ts +45 -0
- package/src/services/Provider/functions/getMaxPriorityFeePerGas.ts +46 -0
- package/src/services/Provider/functions/getMining.ts +40 -0
- package/src/services/Provider/functions/getProof.ts +52 -0
- package/src/services/Provider/functions/getProtocolVersion.ts +40 -0
- package/src/services/Provider/functions/getStorageAt.ts +52 -0
- package/src/services/Provider/functions/getSyncing.ts +56 -0
- package/src/services/Provider/functions/getTransaction.ts +57 -0
- package/src/services/Provider/functions/getTransactionByBlockHashAndIndex.ts +73 -0
- package/src/services/Provider/functions/getTransactionByBlockNumberAndIndex.ts +86 -0
- package/src/services/Provider/functions/getTransactionConfirmations.ts +70 -0
- package/src/services/Provider/functions/getTransactionCount.ts +50 -0
- package/src/services/Provider/functions/getTransactionReceipt.ts +57 -0
- package/src/services/Provider/functions/getUncle.ts +97 -0
- package/src/services/Provider/functions/getUncleCount.ts +86 -0
- package/src/services/Provider/functions/index.ts +73 -0
- package/src/services/Provider/functions/netVersion.ts +40 -0
- package/src/services/Provider/functions/sendRawTransaction.ts +40 -0
- package/src/services/Provider/functions/sendTransaction.ts +48 -0
- package/src/services/Provider/functions/sign.ts +50 -0
- package/src/services/Provider/functions/signTransaction.ts +52 -0
- package/src/services/Provider/functions/simulateV1.ts +95 -0
- package/src/services/Provider/functions/simulateV2.ts +51 -0
- package/src/services/Provider/functions/subscribe.ts +49 -0
- package/src/services/Provider/functions/uninstallFilter.ts +40 -0
- package/src/services/Provider/functions/unsubscribe.ts +41 -0
- package/src/services/Provider/functions/waitForTransactionReceipt.ts +168 -0
- package/src/services/Provider/functions/watchBlocks.ts +98 -0
- package/src/services/Provider/index.ts +29 -178
- package/src/services/Provider/types.ts +780 -0
- package/src/services/Provider/utils.ts +204 -0
- package/src/services/RawProvider/ForkProviderTransport.ts +2 -3
- package/src/services/RawProvider/HttpProviderTransport.ts +3 -3
- package/src/services/RawProvider/InMemoryProviderTransport.ts +3 -3
- package/src/services/RawProvider/WebSocketProviderTransport.ts +3 -3
- package/src/services/Signer/Signer.test.ts +211 -187
- package/src/services/Signer/Signer.ts +26 -16
- package/src/services/Signer/actions/deployContract.test.ts +125 -105
- package/src/services/Signer/actions/deployContract.ts +3 -2
- package/src/services/Signer/actions/prepareAuthorization.test.ts +47 -48
- package/src/services/Signer/actions/prepareAuthorization.ts +3 -3
- package/src/services/Signer/actions/signAuthorization.test.ts +39 -45
- package/src/services/Signer/actions/signAuthorization.ts +3 -3
- package/src/services/Signer/actions/writeContract.test.ts +41 -57
- package/src/services/Transport/FallbackTransport.ts +3 -3
- package/src/services/Transport/HttpTransport.ts +3 -3
- package/src/services/Transport/config.ts +7 -7
- package/src/services/Transport/index.ts +3 -4
- package/src/services/errors.test.ts +3 -8
- package/src/services/index.ts +8 -90
- package/src/services/presets/index.ts +9 -10
- package/src/services/presets/presets.test.ts +14 -29
- package/src/standards/ERC165.test.ts +19 -20
- package/src/standards/ERC165.ts +9 -11
- package/src/type-exports.test.ts +37 -0
- package/dist/AccountService-BetXokad.d.ts +0 -1717
- package/dist/RpcResolver-BpvqybjD.d.ts +0 -6439
- package/src/services/Provider/Account.ts +0 -33
- package/src/services/Provider/AccountService.ts +0 -84
- package/src/services/Provider/Blocks.ts +0 -32
- package/src/services/Provider/BlocksService.ts +0 -73
- package/src/services/Provider/Events.ts +0 -33
- package/src/services/Provider/EventsService.ts +0 -71
- package/src/services/Provider/Network.ts +0 -41
- package/src/services/Provider/NetworkService.ts +0 -114
- package/src/services/Provider/Simulation.ts +0 -34
- package/src/services/Provider/SimulationService.ts +0 -161
- package/src/services/Provider/Streaming.ts +0 -30
- package/src/services/Provider/StreamingService.ts +0 -58
- package/src/services/Provider/Transaction.ts +0 -39
- package/src/services/Provider/TransactionService.ts +0 -83
- package/src/services/Provider/filters.ts +0 -91
- package/src/services/Provider/getBlobBaseFee.ts +0 -170
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { Effect, Exit } from "effect";
|
|
1
2
|
import * as S from "effect/Schema";
|
|
2
3
|
import { describe, expect, it } from "vitest";
|
|
4
|
+
import type { HexType } from "@tevm/voltaire/Hex";
|
|
3
5
|
import * as Hex from "./index.js";
|
|
4
6
|
|
|
5
7
|
describe("Hex.String", () => {
|
|
@@ -159,62 +161,48 @@ describe("Hex.Bytes", () => {
|
|
|
159
161
|
});
|
|
160
162
|
});
|
|
161
163
|
|
|
162
|
-
describe("pure functions", () => {
|
|
164
|
+
describe("pure functions (infallible)", () => {
|
|
163
165
|
describe("isHex", () => {
|
|
164
166
|
it("returns true for valid hex with prefix", () => {
|
|
165
|
-
|
|
166
|
-
expect(result).toBe(true);
|
|
167
|
+
expect(Hex.isHex("0x1234")).toBe(true);
|
|
167
168
|
});
|
|
168
169
|
|
|
169
170
|
it("returns false for empty hex 0x", () => {
|
|
170
|
-
|
|
171
|
-
expect(result).toBe(false);
|
|
171
|
+
expect(Hex.isHex("0x")).toBe(false);
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
it("returns false for hex without prefix", () => {
|
|
175
|
-
|
|
176
|
-
expect(result).toBe(false);
|
|
175
|
+
expect(Hex.isHex("1234")).toBe(false);
|
|
177
176
|
});
|
|
178
177
|
|
|
179
178
|
it("returns false for invalid hex characters", () => {
|
|
180
|
-
|
|
181
|
-
expect(result).toBe(false);
|
|
179
|
+
expect(Hex.isHex("0xZZZZ")).toBe(false);
|
|
182
180
|
});
|
|
183
181
|
|
|
184
182
|
it("returns true for odd-length hex", () => {
|
|
185
|
-
|
|
186
|
-
expect(result).toBe(true);
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
it("returns false for non-hex string", () => {
|
|
190
|
-
const result = Hex.isHex("hello");
|
|
191
|
-
expect(result).toBe(false);
|
|
183
|
+
expect(Hex.isHex("0xabc")).toBe(true);
|
|
192
184
|
});
|
|
193
185
|
});
|
|
194
186
|
|
|
195
187
|
describe("isSized", () => {
|
|
196
188
|
it("returns true for correct size", () => {
|
|
197
189
|
const hex = S.decodeSync(Hex.String)("0x1234");
|
|
198
|
-
|
|
199
|
-
expect(result).toBe(true);
|
|
190
|
+
expect(Hex.isSized(hex, 2)).toBe(true);
|
|
200
191
|
});
|
|
201
192
|
|
|
202
193
|
it("returns false for incorrect size", () => {
|
|
203
194
|
const hex = S.decodeSync(Hex.String)("0x1234");
|
|
204
|
-
|
|
205
|
-
expect(result).toBe(false);
|
|
195
|
+
expect(Hex.isSized(hex, 4)).toBe(false);
|
|
206
196
|
});
|
|
207
197
|
|
|
208
198
|
it("returns true for empty hex with size 0", () => {
|
|
209
199
|
const hex = S.decodeSync(Hex.String)("0x");
|
|
210
|
-
|
|
211
|
-
expect(result).toBe(true);
|
|
200
|
+
expect(Hex.isSized(hex, 0)).toBe(true);
|
|
212
201
|
});
|
|
213
202
|
|
|
214
203
|
it("checks 32-byte hex correctly", () => {
|
|
215
204
|
const hex = S.decodeSync(Hex.String)(`0x${"ab".repeat(32)}`);
|
|
216
|
-
|
|
217
|
-
expect(result).toBe(true);
|
|
205
|
+
expect(Hex.isSized(hex, 32)).toBe(true);
|
|
218
206
|
});
|
|
219
207
|
});
|
|
220
208
|
|
|
@@ -248,11 +236,6 @@ describe("pure functions", () => {
|
|
|
248
236
|
expect(result).toBe(`0x${"00".repeat(32)}`);
|
|
249
237
|
expect(result.length).toBe(66);
|
|
250
238
|
});
|
|
251
|
-
|
|
252
|
-
it("creates 1-byte zero hex", () => {
|
|
253
|
-
const result = Hex.zero(1);
|
|
254
|
-
expect(result).toBe("0x00");
|
|
255
|
-
});
|
|
256
239
|
});
|
|
257
240
|
|
|
258
241
|
describe("random", () => {
|
|
@@ -278,201 +261,392 @@ describe("pure functions", () => {
|
|
|
278
261
|
expect(result).toMatch(/^0x[0-9a-f]{16}$/);
|
|
279
262
|
});
|
|
280
263
|
});
|
|
281
|
-
});
|
|
282
264
|
|
|
283
|
-
describe("
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
265
|
+
describe("equals", () => {
|
|
266
|
+
it("returns true for equal hex", () => {
|
|
267
|
+
const a = S.decodeSync(Hex.String)("0xdeadbeef");
|
|
268
|
+
const b = S.decodeSync(Hex.String)("0xdeadbeef");
|
|
269
|
+
expect(Hex.equals(a, b)).toBe(true);
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
it("returns false for different hex", () => {
|
|
273
|
+
const a = S.decodeSync(Hex.String)("0xdeadbeef");
|
|
274
|
+
const b = S.decodeSync(Hex.String)("0x12345678");
|
|
275
|
+
expect(Hex.equals(a, b)).toBe(false);
|
|
276
|
+
});
|
|
288
277
|
});
|
|
289
278
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
279
|
+
describe("size", () => {
|
|
280
|
+
it("returns correct size for hex", () => {
|
|
281
|
+
const hex = S.decodeSync(Hex.String)("0xdeadbeef");
|
|
282
|
+
expect(Hex.size(hex)).toBe(4);
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
it("returns 0 for empty hex", () => {
|
|
286
|
+
const hex = S.decodeSync(Hex.String)("0x");
|
|
287
|
+
expect(Hex.size(hex)).toBe(0);
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
it("returns correct size for 32-byte hex", () => {
|
|
291
|
+
const hex = S.decodeSync(Hex.String)(`0x${"ab".repeat(32)}`);
|
|
292
|
+
expect(Hex.size(hex)).toBe(32);
|
|
293
|
+
});
|
|
293
294
|
});
|
|
294
295
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
296
|
+
describe("trim", () => {
|
|
297
|
+
it("trims leading zeros", () => {
|
|
298
|
+
const hex = "0x00001234" as HexType;
|
|
299
|
+
expect(Hex.trim(hex)).toBe("0x1234");
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
it("preserves non-zero hex", () => {
|
|
303
|
+
const hex = "0xdeadbeef" as HexType;
|
|
304
|
+
expect(Hex.trim(hex)).toBe("0xdeadbeef");
|
|
305
|
+
});
|
|
298
306
|
});
|
|
299
307
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
308
|
+
describe("fromBoolean", () => {
|
|
309
|
+
it("converts true to 0x01", () => {
|
|
310
|
+
expect(Hex.fromBoolean(true)).toBe("0x01");
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it("converts false to 0x00", () => {
|
|
314
|
+
expect(Hex.fromBoolean(false)).toBe("0x00");
|
|
315
|
+
});
|
|
303
316
|
});
|
|
304
|
-
});
|
|
305
317
|
|
|
306
|
-
describe("
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
expect(() =>
|
|
310
|
-
S.decodeSync(Hex.String)(null as unknown as string),
|
|
311
|
-
).toThrow();
|
|
318
|
+
describe("fromString", () => {
|
|
319
|
+
it("encodes string to hex", () => {
|
|
320
|
+
expect(Hex.fromString("hello")).toBe("0x68656c6c6f");
|
|
312
321
|
});
|
|
313
322
|
|
|
314
|
-
it("
|
|
315
|
-
expect(()
|
|
316
|
-
|
|
317
|
-
|
|
323
|
+
it("encodes empty string", () => {
|
|
324
|
+
expect(Hex.fromString("")).toBe("0x");
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
describe("toBigInt", () => {
|
|
329
|
+
it("converts hex to bigint", () => {
|
|
330
|
+
const hex = S.decodeSync(Hex.String)("0xff");
|
|
331
|
+
expect(Hex.toBigInt(hex)).toBe(255n);
|
|
318
332
|
});
|
|
319
333
|
|
|
320
|
-
it("
|
|
321
|
-
|
|
334
|
+
it("handles large values", () => {
|
|
335
|
+
const hex = S.decodeSync(Hex.String)("0xde0b6b3a7640000");
|
|
336
|
+
expect(Hex.toBigInt(hex)).toBe(1000000000000000000n);
|
|
322
337
|
});
|
|
338
|
+
});
|
|
339
|
+
});
|
|
323
340
|
|
|
324
|
-
|
|
325
|
-
|
|
341
|
+
describe("Effect functions (fallible)", () => {
|
|
342
|
+
describe("from", () => {
|
|
343
|
+
it("parses valid hex string", async () => {
|
|
344
|
+
const result = await Effect.runPromise(Hex.from("0xdeadbeef"));
|
|
345
|
+
expect(result).toBe("0xdeadbeef");
|
|
326
346
|
});
|
|
327
347
|
|
|
328
|
-
it("
|
|
329
|
-
|
|
348
|
+
it("parses bytes", async () => {
|
|
349
|
+
const result = await Effect.runPromise(
|
|
350
|
+
Hex.from(new Uint8Array([0xde, 0xad])),
|
|
351
|
+
);
|
|
352
|
+
expect(result).toBe("0xdead");
|
|
330
353
|
});
|
|
331
354
|
|
|
332
|
-
it("fails on
|
|
333
|
-
|
|
355
|
+
it("fails on invalid hex", async () => {
|
|
356
|
+
const exit = await Effect.runPromiseExit(Hex.from("invalid"));
|
|
357
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
334
358
|
});
|
|
359
|
+
});
|
|
335
360
|
|
|
336
|
-
|
|
337
|
-
|
|
361
|
+
describe("fromNumber", () => {
|
|
362
|
+
it("converts number to hex", async () => {
|
|
363
|
+
const result = await Effect.runPromise(Hex.fromNumber(255));
|
|
364
|
+
expect(result).toBe("0xff");
|
|
338
365
|
});
|
|
339
366
|
|
|
340
|
-
it("
|
|
341
|
-
|
|
367
|
+
it("pads to size", async () => {
|
|
368
|
+
const result = await Effect.runPromise(Hex.fromNumber(255, 2));
|
|
369
|
+
expect(result).toBe("0x00ff");
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
it("fails on negative number", async () => {
|
|
373
|
+
const exit = await Effect.runPromiseExit(Hex.fromNumber(-1));
|
|
374
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
342
375
|
});
|
|
343
376
|
});
|
|
344
377
|
|
|
345
|
-
describe("
|
|
346
|
-
it("
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
).toThrow();
|
|
378
|
+
describe("fromBigInt", () => {
|
|
379
|
+
it("converts bigint to hex", async () => {
|
|
380
|
+
const result = await Effect.runPromise(Hex.fromBigInt(255n));
|
|
381
|
+
expect(result).toBe("0xff");
|
|
350
382
|
});
|
|
351
383
|
|
|
352
|
-
it("
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
384
|
+
it("pads to size", async () => {
|
|
385
|
+
const result = await Effect.runPromise(Hex.fromBigInt(255n, 2));
|
|
386
|
+
expect(result).toBe("0x00ff");
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
it("fails on negative bigint", async () => {
|
|
390
|
+
const exit = await Effect.runPromiseExit(Hex.fromBigInt(-1n));
|
|
391
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
describe("toNumber", () => {
|
|
396
|
+
it("converts hex to number", async () => {
|
|
397
|
+
const hex = S.decodeSync(Hex.String)("0xff");
|
|
398
|
+
const result = await Effect.runPromise(Hex.toNumber(hex));
|
|
399
|
+
expect(result).toBe(255);
|
|
356
400
|
});
|
|
357
401
|
});
|
|
358
|
-
});
|
|
359
402
|
|
|
360
|
-
describe("
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
const result = Hex.
|
|
403
|
+
describe("toBoolean", () => {
|
|
404
|
+
it("converts 0x01 to true", async () => {
|
|
405
|
+
const hex = "0x01" as HexType;
|
|
406
|
+
const result = await Effect.runPromise(Hex.toBoolean(hex));
|
|
364
407
|
expect(result).toBe(true);
|
|
365
408
|
});
|
|
366
409
|
|
|
367
|
-
it("
|
|
368
|
-
const
|
|
410
|
+
it("converts 0x00 to false", async () => {
|
|
411
|
+
const hex = "0x00" as HexType;
|
|
412
|
+
const result = await Effect.runPromise(Hex.toBoolean(hex));
|
|
369
413
|
expect(result).toBe(false);
|
|
370
414
|
});
|
|
371
415
|
|
|
372
|
-
it("
|
|
373
|
-
const
|
|
374
|
-
|
|
416
|
+
it("fails on invalid boolean hex", async () => {
|
|
417
|
+
const hex = "0xff" as HexType;
|
|
418
|
+
const exit = await Effect.runPromiseExit(Hex.toBoolean(hex));
|
|
419
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
375
420
|
});
|
|
376
421
|
});
|
|
377
422
|
|
|
378
|
-
describe("
|
|
379
|
-
it("
|
|
380
|
-
const hex =
|
|
381
|
-
const result = Hex.
|
|
382
|
-
expect(result).toBe(
|
|
423
|
+
describe("toStringHex", () => {
|
|
424
|
+
it("decodes hex to string", async () => {
|
|
425
|
+
const hex = "0x68656c6c6f" as HexType;
|
|
426
|
+
const result = await Effect.runPromise(Hex.toStringHex(hex));
|
|
427
|
+
expect(result).toBe("hello");
|
|
383
428
|
});
|
|
429
|
+
});
|
|
384
430
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
const
|
|
388
|
-
|
|
431
|
+
describe("concat", () => {
|
|
432
|
+
it("concatenates hex strings", async () => {
|
|
433
|
+
const a = "0x1234" as HexType;
|
|
434
|
+
const b = "0x5678" as HexType;
|
|
435
|
+
const result = await Effect.runPromise(Hex.concat(a, b));
|
|
436
|
+
expect(result).toBe("0x12345678");
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
it("concatenates multiple hex strings", async () => {
|
|
440
|
+
const a = "0x12" as HexType;
|
|
441
|
+
const b = "0x34" as HexType;
|
|
442
|
+
const c = "0x56" as HexType;
|
|
443
|
+
const result = await Effect.runPromise(Hex.concat(a, b, c));
|
|
444
|
+
expect(result).toBe("0x123456");
|
|
445
|
+
});
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
describe("pad", () => {
|
|
449
|
+
it("left-pads hex to size", async () => {
|
|
450
|
+
const hex = "0x12" as HexType;
|
|
451
|
+
const result = await Effect.runPromise(Hex.pad(hex, 4));
|
|
452
|
+
expect(result).toBe("0x00000012");
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
it("fails when hex exceeds target size", async () => {
|
|
456
|
+
const hex = "0x12345678" as HexType;
|
|
457
|
+
const exit = await Effect.runPromiseExit(Hex.pad(hex, 2));
|
|
458
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
389
459
|
});
|
|
390
460
|
});
|
|
391
461
|
|
|
392
|
-
describe("
|
|
393
|
-
it("
|
|
394
|
-
const
|
|
395
|
-
|
|
462
|
+
describe("padRight", () => {
|
|
463
|
+
it("right-pads hex to size", async () => {
|
|
464
|
+
const hex = "0x12" as HexType;
|
|
465
|
+
const result = await Effect.runPromise(Hex.padRight(hex, 4));
|
|
466
|
+
expect(result).toBe("0x12000000");
|
|
396
467
|
});
|
|
397
468
|
});
|
|
398
469
|
|
|
399
|
-
describe("
|
|
400
|
-
it("
|
|
401
|
-
const
|
|
402
|
-
|
|
403
|
-
expect(result.
|
|
470
|
+
describe("slice", () => {
|
|
471
|
+
it("slices hex from start", async () => {
|
|
472
|
+
const hex = "0x123456" as HexType;
|
|
473
|
+
const result = await Effect.runPromise(Hex.slice(hex, 1));
|
|
474
|
+
expect(result).toBe("0x3456");
|
|
404
475
|
});
|
|
405
476
|
|
|
406
|
-
it("
|
|
407
|
-
const
|
|
408
|
-
|
|
477
|
+
it("slices hex with range", async () => {
|
|
478
|
+
const hex = "0x123456" as HexType;
|
|
479
|
+
const result = await Effect.runPromise(Hex.slice(hex, 0, 1));
|
|
480
|
+
expect(result).toBe("0x12");
|
|
409
481
|
});
|
|
410
482
|
});
|
|
411
483
|
|
|
412
|
-
describe("
|
|
413
|
-
it("
|
|
414
|
-
const
|
|
415
|
-
|
|
416
|
-
|
|
484
|
+
describe("validate", () => {
|
|
485
|
+
it("validates valid hex", async () => {
|
|
486
|
+
const result = await Effect.runPromise(Hex.validate("0x1234"));
|
|
487
|
+
expect(result).toBe("0x1234");
|
|
488
|
+
});
|
|
489
|
+
|
|
490
|
+
it("fails on invalid hex", async () => {
|
|
491
|
+
const exit = await Effect.runPromiseExit(Hex.validate("invalid"));
|
|
492
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
417
493
|
});
|
|
418
494
|
});
|
|
419
495
|
|
|
420
|
-
describe("
|
|
421
|
-
it("
|
|
422
|
-
const
|
|
423
|
-
const
|
|
424
|
-
|
|
496
|
+
describe("xor", () => {
|
|
497
|
+
it("xors two hex strings", async () => {
|
|
498
|
+
const a = "0xff00" as HexType;
|
|
499
|
+
const b = "0x00ff" as HexType;
|
|
500
|
+
const result = await Effect.runPromise(Hex.xor(a, b));
|
|
501
|
+
expect(result).toBe("0xffff");
|
|
425
502
|
});
|
|
503
|
+
});
|
|
426
504
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
);
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
505
|
+
describe("assertSize", () => {
|
|
506
|
+
it("succeeds when size matches", async () => {
|
|
507
|
+
const hex = "0x1234" as HexType;
|
|
508
|
+
const result = await Effect.runPromise(Hex.assertSize(hex, 2));
|
|
509
|
+
expect(result).toBe("0x1234");
|
|
510
|
+
});
|
|
511
|
+
|
|
512
|
+
it("fails when size doesn't match", async () => {
|
|
513
|
+
const hex = "0x1234" as HexType;
|
|
514
|
+
const exit = await Effect.runPromiseExit(Hex.assertSize(hex, 4));
|
|
515
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
435
516
|
});
|
|
436
517
|
});
|
|
437
518
|
});
|
|
438
519
|
|
|
439
|
-
describe("
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
520
|
+
describe("direct voltaire re-exports", () => {
|
|
521
|
+
describe("fromBytes (pure function)", () => {
|
|
522
|
+
it("converts Uint8Array to hex string directly (no Effect)", () => {
|
|
523
|
+
const bytes = new Uint8Array([0xde, 0xad, 0xbe, 0xef]);
|
|
524
|
+
const result = Hex.fromBytes(bytes);
|
|
525
|
+
expect(result).toBe("0xdeadbeef");
|
|
526
|
+
expect(typeof result).toBe("string");
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
it("converts empty bytes to 0x", () => {
|
|
530
|
+
const result = Hex.fromBytes(new Uint8Array([]));
|
|
531
|
+
expect(result).toBe("0x");
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
it("converts single byte", () => {
|
|
535
|
+
const result = Hex.fromBytes(new Uint8Array([0xff]));
|
|
536
|
+
expect(result).toBe("0xff");
|
|
537
|
+
});
|
|
538
|
+
|
|
539
|
+
it("converts zero bytes", () => {
|
|
540
|
+
const result = Hex.fromBytes(new Uint8Array([0x00, 0x00]));
|
|
541
|
+
expect(result).toBe("0x0000");
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
it("handles large arrays", () => {
|
|
545
|
+
const bytes = new Uint8Array(100).fill(0xab);
|
|
546
|
+
const result = Hex.fromBytes(bytes);
|
|
547
|
+
expect(result.length).toBe(202);
|
|
548
|
+
expect(result.startsWith("0x")).toBe(true);
|
|
549
|
+
});
|
|
446
550
|
});
|
|
447
551
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
552
|
+
describe("toBytes (pure function)", () => {
|
|
553
|
+
it("converts hex string to Uint8Array directly (no Effect)", () => {
|
|
554
|
+
const hex = "0xdeadbeef" as HexType;
|
|
555
|
+
const result = Hex.toBytes(hex);
|
|
556
|
+
expect(result).toBeInstanceOf(Uint8Array);
|
|
557
|
+
expect(result.length).toBe(4);
|
|
558
|
+
expect(result[0]).toBe(0xde);
|
|
559
|
+
expect(result[1]).toBe(0xad);
|
|
560
|
+
expect(result[2]).toBe(0xbe);
|
|
561
|
+
expect(result[3]).toBe(0xef);
|
|
562
|
+
});
|
|
563
|
+
|
|
564
|
+
it("converts empty hex to empty array", () => {
|
|
565
|
+
const result = Hex.toBytes("0x" as HexType);
|
|
566
|
+
expect(result).toBeInstanceOf(Uint8Array);
|
|
567
|
+
expect(result.length).toBe(0);
|
|
568
|
+
});
|
|
451
569
|
});
|
|
570
|
+
});
|
|
571
|
+
|
|
572
|
+
describe("API consistency", () => {
|
|
573
|
+
it("infallible ops return directly, not Effect", () => {
|
|
574
|
+
const hex = S.decodeSync(Hex.String)("0xdeadbeef");
|
|
452
575
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
expect(typeof
|
|
576
|
+
expect(typeof Hex.clone(hex)).toBe("string");
|
|
577
|
+
expect(typeof Hex.isHex("0x1234")).toBe("boolean");
|
|
578
|
+
expect(typeof Hex.isSized(hex, 4)).toBe("boolean");
|
|
579
|
+
expect(typeof Hex.zero(4)).toBe("string");
|
|
580
|
+
expect(typeof Hex.random(8)).toBe("string");
|
|
581
|
+
expect(typeof Hex.equals(hex, hex)).toBe("boolean");
|
|
582
|
+
expect(typeof Hex.size(hex)).toBe("number");
|
|
583
|
+
expect(typeof Hex.trim(hex)).toBe("string");
|
|
584
|
+
expect(typeof Hex.fromBoolean(true)).toBe("string");
|
|
585
|
+
expect(typeof Hex.fromString("hello")).toBe("string");
|
|
457
586
|
});
|
|
458
587
|
|
|
459
|
-
it("
|
|
460
|
-
const
|
|
461
|
-
|
|
462
|
-
expect(
|
|
588
|
+
it("fromBytes and toBytes are pure functions (not Effect-wrapped)", () => {
|
|
589
|
+
const bytes = new Uint8Array([0x12, 0x34]);
|
|
590
|
+
const hex = Hex.fromBytes(bytes);
|
|
591
|
+
expect(typeof hex).toBe("string");
|
|
592
|
+
expect(hex).toBe("0x1234");
|
|
593
|
+
|
|
594
|
+
const backToBytes = Hex.toBytes(hex);
|
|
595
|
+
expect(backToBytes).toBeInstanceOf(Uint8Array);
|
|
596
|
+
expect(Array.from(backToBytes)).toEqual([0x12, 0x34]);
|
|
463
597
|
});
|
|
598
|
+
});
|
|
599
|
+
|
|
600
|
+
describe("error cases", () => {
|
|
601
|
+
describe("Hex.String errors", () => {
|
|
602
|
+
it("fails on null", () => {
|
|
603
|
+
expect(() =>
|
|
604
|
+
S.decodeSync(Hex.String)(null as unknown as string),
|
|
605
|
+
).toThrow();
|
|
606
|
+
});
|
|
607
|
+
|
|
608
|
+
it("fails on undefined", () => {
|
|
609
|
+
expect(() =>
|
|
610
|
+
S.decodeSync(Hex.String)(undefined as unknown as string),
|
|
611
|
+
).toThrow();
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
it("fails on object", () => {
|
|
615
|
+
expect(() => S.decodeSync(Hex.String)({} as unknown as string)).toThrow();
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
it("fails on array", () => {
|
|
619
|
+
expect(() => S.decodeSync(Hex.String)([] as unknown as string)).toThrow();
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
it("fails on empty string", () => {
|
|
623
|
+
expect(() => S.decodeSync(Hex.String)("")).toThrow();
|
|
624
|
+
});
|
|
625
|
+
|
|
626
|
+
it("fails on whitespace", () => {
|
|
627
|
+
expect(() => S.decodeSync(Hex.String)(" ")).toThrow();
|
|
628
|
+
});
|
|
464
629
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
630
|
+
it("fails on 0x with spaces", () => {
|
|
631
|
+
expect(() => S.decodeSync(Hex.String)("0x 12")).toThrow();
|
|
632
|
+
});
|
|
633
|
+
|
|
634
|
+
it("fails on special characters", () => {
|
|
635
|
+
expect(() => S.decodeSync(Hex.String)("0x!@#$")).toThrow();
|
|
636
|
+
});
|
|
469
637
|
});
|
|
470
638
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
639
|
+
describe("Hex.Bytes errors", () => {
|
|
640
|
+
it("fails on null", () => {
|
|
641
|
+
expect(() =>
|
|
642
|
+
S.decodeSync(Hex.Bytes)(null as unknown as Uint8Array),
|
|
643
|
+
).toThrow();
|
|
644
|
+
});
|
|
645
|
+
|
|
646
|
+
it("fails on string input", () => {
|
|
647
|
+
expect(() =>
|
|
648
|
+
S.decodeSync(Hex.Bytes)("0xab" as unknown as Uint8Array),
|
|
649
|
+
).toThrow();
|
|
650
|
+
});
|
|
477
651
|
});
|
|
478
652
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Effect wrapper for Hex.assertSize.
|
|
3
|
+
* Asserts that Hex is exactly the specified size.
|
|
4
|
+
* @module voltaire-effect/primitives/Hex/assertSize
|
|
5
|
+
* @since 0.1.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
type HexType,
|
|
10
|
+
type Sized,
|
|
11
|
+
Hex as VoltaireHex,
|
|
12
|
+
InvalidLengthError,
|
|
13
|
+
} from "@tevm/voltaire/Hex";
|
|
14
|
+
import { Effect } from "effect";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Assert that Hex is exactly the specified size.
|
|
18
|
+
*
|
|
19
|
+
* @param hex - Hex string to check
|
|
20
|
+
* @param targetSize - Expected size in bytes
|
|
21
|
+
* @returns Effect that succeeds with Sized<T> or fails with InvalidLengthError
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import * as Hex from 'voltaire-effect/primitives/Hex'
|
|
26
|
+
* import { Effect } from 'effect'
|
|
27
|
+
*
|
|
28
|
+
* const sized = yield* Hex.assertSize('0x1234', 2) // succeeds with Sized<2>
|
|
29
|
+
* yield* Hex.assertSize('0x1234', 4) // fails with InvalidLengthError
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @since 0.1.0
|
|
33
|
+
*/
|
|
34
|
+
export const assertSize = <TSize extends number>(
|
|
35
|
+
hex: HexType,
|
|
36
|
+
targetSize: TSize,
|
|
37
|
+
): Effect.Effect<Sized<TSize>, InvalidLengthError> =>
|
|
38
|
+
Effect.try({
|
|
39
|
+
try: () => VoltaireHex.assertSize(hex, targetSize),
|
|
40
|
+
catch: (e) => e as InvalidLengthError,
|
|
41
|
+
});
|