chore: version packages#285
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
3bd3192 to
126927e
Compare
126927e to
a19b528
Compare
a19b528 to
3a8c563
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
ox@1.0.0
Major Changes
#231
40d9408Thanks @jxom! - Breaking: Changed ABI decode helpers to checksum decoded addresses by default.#231
40d9408Thanks @jxom! - Removed the TempoTokenIdmodule and narrowed Tempo token inputs (feeToken,Channel.token,PoolId.fromtokens) toAddress.Address; also removed the now-redundantChannel.Resolvedtype.TxEnvelopeTempo.from({ // ... - feeToken: 1n, + feeToken: '0x20c0000000000000000000000000000000000001', })#231
40d9408Thanks @jxom! - Upgraded@noble/ciphers,@noble/curves,@noble/hashes,@scure/bip32, and@scure/bip39to v2.Notable behavioral changes inherited from noble v2:
lowS: truefor bothSecp256k1andP256. PreviouslyP256signatures could have high-S values.noblere-exports onSecp256k1,P256,Ed25519,X25519, andBlsnow reference the v2 APIs (e.g.randomSecretKey()instead ofrandomPrivateKey(),Pointinstead ofProjectivePoint/ExtendedPoint,bls.longSignatures.*instead of top-levelbls.sign/verify). If you depended on the v1 shape viaModule.noble, refer to the noble v2 changelog.#231
40d9408Thanks @jxom! - Breaking: Removed the 4844-only blob-sidecar surface in favor of PeerDAS(EIP-7594).
Kzg.Kzgno longer includescomputeBlobKzgProof. Bring a PeerDAS-capablebackend (e.g.
c-kzg≥ v1.5,micro-eth-signer/advanced/kzg.js≥ v0.18, orequivalent). The backend must implement
computeCells,computeCellsAndKzgProofs,recoverCellsAndKzgProofs, andverifyCellKzgProofBatchin addition toblobToKzgCommitment.Blobs.toSidecars,Blobs.toProofs,Blobs.sidecarsToVersionedHashes,Blobs.BlobSidecar, andBlobs.BlobSidecars. Use the upcomingBlobCellsmodule (next phase) forPeerDAS data-column construction.
Kzg.Kzg.blobToKzgCommitmentandBlobs.toVersionedHashesremain for transaction versioned-hash derivation.TxEnvelopeEip4844.sidecars(the legacy "network wrapper" RLP formfor
eth_sendRawTransaction). PeerDAS replaces the network wrapper withcell/column propagation; the on-chain envelope is unchanged.
#231
40d9408Thanks @jxom! - Migrated ECDSA and BLS coordinate fields (r,s,x,y, BLSFp/Fp2) frombigintto paddedHex.Hexstrings (32-byte forsecp256k1/P256/WebAuthnP256, 48-byte for BLS12-381) onSignature,PublicKey,BlsPoint,Transaction,Authorization,TxEnvelope, and related Tempo and ERC envelopes, dropping thebigintTypegeneric.#231
40d9408Thanks @jxom! - Removed theTempoAddressmodule and itstempox-prefixed address format. All Tempo modules now accept plain hexAddress.Addressvalues; remove anyTempoAddress.format/TempoAddress.parse/TempoAddress.resolvecalls at the boundary. TheaddressTypetype parameter has also been dropped fromCall,TxEnvelopeTempo,KeyAuthorization,AuthorizationTempo,TransactionRequest, andTokenId.TokenIdOrAddress.Minor Changes
#231
40d9408Thanks @jxom! - Added anAbiFunction.decodeData(abi, data)overload that extracts the ABI function from the calldata selector.#231
40d9408Thanks @jxom! - Added human-readable ABI parsing and formatting utilities fromabitypeto ox, including runtime validation and type-level safety forAbi,AbiItem,AbiParameters, and the newAbiParametermodule.#231
40d9408Thanks @jxom! - AddedAccountProof.fromRpcandAccountProof.toRpcfor converting between RPC and instantiatedAccountProofshapes returned byeth_getProof.#231
40d9408Thanks @jxom! - AddedBloom.prepare,Bloom.containsPrepared, andBloom.containsHashfor membership checks against a precomputed bloom filter. UseBloom.prepare(bloom)once andBloom.containsPrepared(prepared, input)(orBloom.containsHash(prepared, hash)when the caller already has the keccak hash) inside hot loops to avoid the per-callBytes.fromHexallocation thatBloom.containspays.#231
40d9408Thanks @jxom! - AddedreturnByteLengthandreturnDecodedoptions toCoseKey.toPublicKeyand acceptedUint8Arrayinput in addition toHex.#231
40d9408Thanks @jxom! - Addedas: 'Hex' | 'Bytes' | 'Object'option toSecp256k1.sign/getPublicKey/recoverPublicKey,P256.sign/getPublicKey/recoverPublicKey,WebCryptoP256.sign, andBls.sign/getPublicKey(default'Object'keeps existing behavior); plus acceptHex.Hex | Bytes.Bytes | Signature.Signatureforsignatureparams andHex.Hex | Bytes.Bytes | PublicKey.PublicKeyforpublicKeyparams onverify,recoverAddress,recoverPublicKey,getSharedSecretacross the same modules.#231
40d9408Thanks @jxom! - Added EntryPoint 0.9 ABI, address, UserOperation types,paymasterSignaturepacking, hashing, and RPC support.#231
40d9408Thanks @jxom! - AddedFee.fromHistoryRpc,Fee.toHistoryRpc,Fee.estimateMaxFeePerGas, andFee.effectiveGasPricefor converting between RPC/instantiatedFeeHistoryshapes and computing common EIP-1559 fee values.#231
40d9408Thanks @jxom! - Added the EIP-234blockHashbranch toFilter.Filter(andFilter.Rpc) so log filters can be discriminated againstfromBlock/toBlockandblockHash, matching the execution-apisfilter.yamloneOfschema.Filter.toRpcnow forwardsblockHashwhen present.#231
40d9408Thanks @jxom! - Added directional codec helpers to theox/zodRpcSchemanamespace:decodeParams/encodeParams,decodeReturns/encodeReturns, anddecodeRequest/encodeRequest(decodemaps wire → native,encodemaps native → wire), alongsideparseItemfor method lookup andparseas an alias ofdecodeRequest. Scalar quantity returns inz.RpcSchema.Ethnow decode to their native representation (eth_blockNumber,eth_gasPrice,eth_blobBaseFee,eth_estimateGas,eth_getBalance,eth_maxPriorityFeePerGas→bigint;eth_chainId,eth_getTransactionCount,eth_getBlockTransactionCountBy*,eth_getUncleCountByBlock*→number), while raw transport typing (RpcSchema.FromZod) continues to use wire types.#231
40d9408Thanks @jxom! - Added Zod-backed RPC schema support:z.RpcSchema.from(inox/zod) now accepts a record of{ params, returns }Zod schemas keyed by method name and returns a parseableRpcSchema.Namespace;RpcSchema.Schema/RpcSchema.ToGeneric/RpcSchema.FromZodwere added; andProvider.from/RpcTransport.fromHttpaccept a Zod namespace as theirschemaoption, deriving request/return types from it.#231
40d9408Thanks @jxom! - Theox/zodRpcSchemacodecs (decodeParams/encodeParams,decodeReturns/encodeReturns) now also accept a resolvedRpcSchema.Itemin place of a(namespace, method)pair. A method can be looked up once withz.RpcSchema.parseItemand passed to each codec, so encoding params and decoding returns no longer repeats the namespace and method name.#231
40d9408Thanks @jxom! - AddedSignature.toCompactBytes,Signature.fromCompactBytes,Signature.toRecoveredBytes, andSignature.fromRecoveredBytesfor direct 64 and 65 byte encoded signature interop.#231
40d9408Thanks @jxom! - AddedSolidity.intRange(bits, signed)andSolidity.maxUint(bits)helpers that compute the inclusive range or maximum unsigned value of a Solidity integer of the given bit width without importing one of theSolidity.maxInt*/Solidity.maxUint*constants by name.#231
40d9408Thanks @jxom! - AddedTransactionRequest.toEnvelope(inox/tempo) andTxEnvelopeTempo.toTransactionRequestfor converting between TempoTransactionRequestandTxEnvelopeTemposhapes.toEnvelopefolds flat{ to, data, value }requests intocalls[], resolvesnonceKey: 'random', and drops fields not supported by the Tempo envelope (blobs,gasPrice, corer/s/yParity/v). Extended Tempo'sTransactionRequestwith optionalsignature(SignatureEnvelope) andfeePayerSignature(Signature.Signature<true>) fields so signed envelopes can be round-tripped without information loss;fromRpc/toRpctranslate them via the existingSignatureEnvelope.fromRpc/toRpcandSignature.fromRpc/toRpchelpers.#231
40d9408Thanks @jxom! - WidenedtoRpcinputs (and their symmetric zod*ToRpcencode schemas) to accept numberish values --Hex.Hex | bigint | numberfor bigint-typed quantities andHex.Hex | numberfor number-typed quantities -- while keeping decoded/fromRpcoutput types strictlybigint/number.#231
40d9408Thanks @jxom! - AddedTransactionRequest.toEnvelopeandTransactionEnvelope.toTransactionRequestfor converting betweenTransactionRequestandTxEnvelope*shapes (e.g. when handlingeth_sendTransaction). ExtendedTransactionRequestwith optionalr,s,yParity,vfields so signed payloads can be carried in the same type (with hex↔native coercion infromRpc/toRpc). Also tightenedTransactionEnvelope.getTypeto throw on accidental RPC-style type strings ('0x0'–'0x4'); pass payloads throughTransactionRequest.fromRpcfirst.#231
40d9408Thanks @jxom! - Added genericTxEnveloperouting helpers with property-based type inference for parsing, serialization, validation, hashing, signing payloads, and RPC conversion.#231
40d9408Thanks @jxom! - Threaded an optionaltypeHashescache throughTypedData.encode,TypedData.hashStruct, andTypedData.hashDomainsokeccak256(encodeType(t))is computed once per(primaryType, types)per call instead of once per nested struct or array element (withTypedData.encodepopulating a fresh map internally and advanced callers able to share aMap<string, Hex.Hex>across calls).#231
40d9408Thanks @jxom! - Added:BlobCellsmodule exposing PeerDAS (EIP-7594) cell-level helpers —fromBlobderives the 128 cells + cell KZG proofs of an extended blob,verifyverifies a batch of cell proofs against their commitments,recoverreconstructs the full set of cells/proofs from ≥ 64 known cells, andtoDataColumnsbuilds the 128 per-column packs for a list of blobs.#231
40d9408Thanks @jxom! - Added anas: 'Hex' | 'Bytes'option towebauthn.Authenticator.getAuthenticatorData. The bytes path assembles into a singleUint8Arraydirectly, while the legacy hex path stays in hex throughout to avoidBytes <-> Hexround trips.getSignCountnow acceptsHexorUint8Array, eliminating the unconditionalBytes.fromHexdecode for byte-input callers.#231
40d9408Thanks @jxom! - Added theox/zodentrypoint with module-scoped Zod schemas, direct integer quantity schemas, account proofs, authorizations, blocks, filters, override schemas, logs, RPC responses, RPC method schemas (RpcSchema.Eth/RpcSchema.Walletper-methodparams/returnTypeplusRequestenvelopes), transaction envelopes, transactions, transaction requests, transaction receipts, ABI, and EIP-712 Typed Data.Patch Changes
#231
40d9408Thanks @jxom! - FixedAbiEvent.encodeandAbiEvent.decodeto honor theanonymousflag -- anonymous events no longer prepend or expect a selector topic.#231
40d9408Thanks @jxom! - FixedAbiConstructor.decodeto assert thatdatabegins with the providedbytecodeand allowed constructor encoding and decoding without an ABI constructor when no arguments are present.#231
40d9408Thanks @jxom! - AddedAbiError.extractfor selecting and decoding ABI errors from revert data.#231
40d9408Thanks @jxom! - AddedAbiEvent.decodeLogandAbiEvent.extractLogsfor decoding and extracting event logs directly from an ABI.#231
40d9408Thanks @jxom! - FixedAbiEvent.assertArgsandAbiEvent.encodeto always hashstring/bytesindexed inputs to hex viaHash.keccak256(value, { as: 'Hex' }), so topic comparisons and emitted topics are reliably hex regardless of whether the input is aHex.Hexor aBytes.Bytes.#231
40d9408Thanks @jxom! - FixedAbiFunction.decodeDatato throwAbiParameters.DataSizeTooSmallErrorwhen the calldata is exactly the 4-byte selector but the function declares inputs, instead of silently returningundefined.#231
40d9408Thanks @jxom! - FixedAbiParameters.decodeto surface aDataSizeTooSmallError(with parameter context) instead of leaking aCursor.PositionOutOfBoundsErrorwhen the encoded payload is shorter than the parameter list requires.#231
40d9408Thanks @jxom! - FixedAbiParameters.encodePackedto validate that fixed-array lengths match the supplied value, throwingArrayLengthMismatchError(e.g. foruint256[2]with three elements) instead of silently encoding the wrong arity.#231
40d9408Thanks @jxom! - FixedAbiParameters.decodefor standalone zero-length fixed arrays of dynamic types (e.g.string[0]).#231
40d9408Thanks @jxom! - FixedKeystore.toKeyAsyncto use the async PBKDF2 implementation -- previously it called the synchronouspbkdf2helper and blocked the main thread when decrypting PBKDF2-backed keystores.#231
40d9408Thanks @jxom! - Added validation of KDF parameters inKeystore.pbkdf2,Keystore.pbkdf2Async,Keystore.scrypt, andKeystore.scryptAsync-- PBKDF2 now requiresiterationsto be an integer>= 1000, and scrypt now requiresnto be a power of two>= 1024with positive integerrandp, rejecting trivially weak parameters that previously produced formally valid but cryptographically insecure keystores.#231
40d9408Thanks @jxom! - FixedKeystore.scryptAsyncto honor caller-providedpandroptions -- previously they were silently overridden withp=8andr=1, producing keystores that disagreed with the synchronousKeystore.scryptfor the same inputs.#231
40d9408Thanks @jxom! - FixedMnemonic.toPrivateKeyto returnBytesby default to match its declared return type -- previously it returned aHexstring at runtime even though the defaultaswas'Bytes'.#231
40d9408Thanks @jxom! - FixedWebCryptoP256.verifyrejecting valid signatures whoserorsvalue has a leading zero byte by padding both components to 32 bytes.#231
40d9408Thanks @jxom! - FixedPublicKey.assertso it rejects objects missingx/ywhen thecompressedoption is set explicitly.#231
40d9408Thanks @jxom! - FixedPublicKey.fromHexandPublicKey.fromBytesso they reject deserialized public keys with an invalid SEC1 prefix.#231
40d9408Thanks @jxom! - PreservedBlock.fromRpc().totalDifficultyasundefinedinstead of silently coercing missing values to0n.#231
40d9408Thanks @jxom! - MadeBloom.containsvalidate the bloom argument length and throwBloom.InvalidBloomErrorinstead of silently returningfalsefor malformed bloom inputs.#231
40d9408Thanks @jxom! - MadeFilter.toRpcpreserve explicitaddress: null(andtopics: null) instead of stripping it via truthy checks.#231
40d9408Thanks @jxom! - AddedLog.fromRpcandLog.toRpcsupport for optionalblockTimestampfields.#231
40d9408Thanks @jxom! - Unified the RPC-quantity conversion blocks acrossBlock,BlockOverrides, andStateOverridesbehind an internal helper so optional bigint fields with explicit'0x0'(e.g.baseFeePerGas: '0x0'on a post-merge block) round-trip as0ninstead of being silently dropped by the previous truthy checks.#231
40d9408Thanks @jxom! - Validated array element types and fixed-array lengths inTypedData.assertandTypedData.encodeField, throwingInvalidArrayError/InvalidArrayLengthErrorinstead of silently passing malformed input through to the encoder.#231
40d9408Thanks @jxom! - MadeValidatorData.encodecallAddress.asserton the validator argument so malformed validator addresses are rejected instead of producing invalid ERC-191 payloads.#231
40d9408Thanks @jxom! - TightenedValue.frominput validation to reject malformed numeric strings ('','.','-','-.') and to reject non-integer or negativedecimals, and replacedNumber/Math.roundrounding with string-carry rounding so very long fractions no longer lose precision.#231
40d9408Thanks @jxom! - FixedBytes.fromNumberandRlp.fromHexrejecting valid odd-nibble hex output produced byHex.fromNumber(e.g.0x7,0x311); both now even-pad before handing the value to the strictBytes.fromHexparser.#231
40d9408Thanks @jxom! - FixedBls.aggregateto reject empty arrays and mixed G1/G2 input, and added a fast path that returns the input directly when only one point is supplied.#231
40d9408Thanks @jxom! - FixedBlsPoint.fromBytesto honor its declaredgroupargument and assert the input length matches the requested G1 (48 bytes) or G2 (96 bytes) shape.#231
40d9408Thanks @jxom! - HardenedCoseKey.toPublicKeyto reject COSE_Key inputs with a non-P-256kty,alg, orcrvheader, or withx/ybyte arrays that are not exactly 32 bytes long.#231
40d9408Thanks @jxom! - DocumentedextraEntropyonSecp256k1.signandP256.signcorrectly as@default falseso the JSDoc matches the runtime default.#231
40d9408Thanks @jxom! - FixedKzg.fromto preservethisbinding by wrapping method calls instead of destructuring, so class instances or method-style implementations work correctly.#231
40d9408Thanks @jxom! - DocumentedWebCryptoP256.signlow-S normalization as always-on and corrected theWebCryptoP256.createKeyPair/createKeyPairECDHJSDoc to describepublicKeyas aPublicKey.PublicKey.#231
40d9408Thanks @jxom! - Replaced the plainErrorthrown byWebCryptoP256.getSharedSecretwhen given an ECDSA private key with a typedWebCryptoP256.InvalidPrivateKeyAlgorithmError.#231
40d9408Thanks @jxom! - AddedEns.toCoinTypefor converting chain IDs to ENS coin types.#231
40d9408Thanks @jxom! - NarrowedUserOperation.fromPackedreturn type toUserOperation<'0.7', true>to reflect that the packed format does not carry v0.8authorization.#231
40d9408Thanks @jxom! - Added EntryPoint 0.8 and 0.9 support toUserOperationGasthrough version-specific aliases over the 0.7 gas shape.#231
40d9408Thanks @jxom! - FixedUserOperation.toRpcto preserve v0.6paymasterAndDataand correctedeth_getUserOperationByHashresult typing.#231
40d9408Thanks @jxom! - FixedUserOperationRPC codecs to map nativeauthorizationto wireeip7702Authfor EntryPoint 0.8 and 0.9.#231
40d9408Thanks @jxom! - FixedSignatureErc6492.unwrapto strip the trailing magic bytes before ABI-decoding, and madeSignatureErc6492.fromandassertvalidate object inputs by throwing the newInvalidUnwrappedSignatureErroron malformed values.#231
40d9408Thanks @jxom! - Replaced the exception-driven opData fallback inExecute.decodeBatchOfBatchesDatawith structural detection of the ABI head word, so malformed inputs surface as decode errors instead of being masked by the catch.#231
40d9408Thanks @jxom! - Hardened ERC-8010 by validating the full unwrapped object inSignatureErc8010.assert, capping the suffix length parsed byunwrapagainst the wrapped size to reject overflowing inputs, and skippingSecp256k1.recoverAddressinwrapwhentois already provided.#286
56f299fThanks @jxom! - Addedeth_getRawTransactionByHashtoRpcSchema.Ethandz.RpcSchema.Eth.#231
40d9408Thanks @jxom! - FixedHex.toBytesandBytes.fromHexreturning aUint8Arrayview that aliased Node's sharedBufferpool memory, which broke callers that read.buffer(e.g. WebAuthnattestationObjectround-trips).#291
5ebb88dThanks @jxom! - FixedKeyAuthorization.fromRpcreturn type mismatch under TypeScript configs withoutexactOptionalPropertyTypes.#231
40d9408Thanks @jxom! - Fixed the zodLogschema to accept logs with zero topics (e.g.LOG0/anonymous events) and widenedLog.topicstoHex.Hex[].#231
40d9408Thanks @jxom! -ox/tempo: Removed the TIP-1061 multisigconfig_idconcept to match the updated Tempo reference implementation: multisig account addresses now derive directly from the initial config, owner approval digests bind onlyaccount, the signature wire format is0x05 || rlp([account, signatures, init?]),MultisigConfig.maxOwnersis now 255 withu8weights, and owner approvals may be nested multisig signatures.#231
40d9408Thanks @jxom! - FixedRpcTransport.fromHttp(via internalwithTimeout) producing an unhandled rejection when the wrapped fetch threw a non-AbortErrorafter the timeout setup ran.#231
40d9408Thanks @jxom! - FixedProvider.fromto preserve wrapped providers' prototype methods, accessors, and non-enumerable property descriptors instead of dropping them via object spread.#231
40d9408Thanks @jxom! - FixedProvider.fromto stop sniffing successful EIP-1193 payloads for ajsonrpcfield and reparsing them as JSON-RPC envelopes.#231
40d9408Thanks @jxom! - Added a decode depth limit (1024) toRlp.toBytes/Rlp.toHex, throwingRlp.DepthLimitExceededErrorinstead of overflowing the call stack on deeply nested untrusted RLP input.#231
40d9408Thanks @jxom! - Fixed RLP decoding to reject malformed payloads with trailing bytes (Rlp.TrailingBytesError) or list items overrunning the declared list length (Rlp.ListBoundaryExceededError).#231
40d9408Thanks @jxom! - FixedRpcResponse.fromcrashing when called without arequestoption and missingjsonrpc-- it now validates the envelope and throwsRpcResponse.ParseErrorfor missingid/jsonrpc.#231
40d9408Thanks @jxom! - FixedRpcResponse.parseErrorre-wrapping existingRpcResponse.BaseErrorinstances asInternalError-- existing instances are now returned as-is.#231
40d9408Thanks @jxom! - FixedRpcResponse.parsesilently returningundefinedfor malformed payloads -- it now validates the JSON-RPC envelope (jsonrpc === '2.0', presence ofid, and presence of eitherresultorerror) and throwsRpcResponse.ParseErrorotherwise.#231
40d9408Thanks @jxom! - Fixed the EIP-1898 block identifier param type in the coreeth/tempoRPC request schemas to be wire-typed (Block.Identifier<Hex.Hex>), so itsblockNumberfield is hex like the siblingBlock.Number<Hex.Hex>branch instead of nativebigint. This makesz.RpcSchema.encodeParamsoutput assignable to the core request param types for block-selector methods (eth_call,eth_getBalance,eth_getCode,eth_getStorageAt,eth_getTransactionCount,eth_getBlockTransactionCountByNumber,eth_getUncleCountByBlockNumber,eth_estimateGas, etc.).#231
40d9408Thanks @jxom! - Added an optional 4thblockOverridesparameter to theeth_callandeth_estimateGasschemas (RpcSchema.Defaultand the zodRpcSchema.Eth), matching Geth/Anvil'seth_call(transaction, block, stateOverrides, blockOverrides)signature.#231
40d9408Thanks @jxom! - Addedeth_fillTransactiontoRpcSchema.Eth.#231
40d9408Thanks @jxom! - Updated the zodRpcSchema.Ethrequest-bearing methods (eth_call,eth_estimateGas,eth_sendTransaction,eth_signTransaction,eth_simulateV1) to encode their transaction-request params withTransactionRequestToRpc, soRpcSchema.encodeParamsnow accepts numberish (bigint | number | Hex) quantities. Decoded output is unchanged.#231
40d9408Thanks @jxom! - FixedRpcTransport.fromHttpto throwRpcTransport.MalformedResponseErrorfor empty2xxHTTP bodies instead of silently returningundefined.#231
40d9408Thanks @jxom! - FixedRpcTransport.HttpError.detailsto render raw-text error bodies verbatim instead of JSON-stringifying them with surrounding quotes.#231
40d9408Thanks @jxom! - FixedRpcTransport.fromHttpto surface anHttpError(instead of aSyntaxError) when servers returnContent-Type: application/jsonwith an empty body for non-2xxresponses.#231
40d9408Thanks @jxom! - FixedRpcTransport.fromHttpignoring its owntimeoutwhen the caller supplied afetchOptions.signal; both signals are now composed viaAbortSignal.anyso the timeout always fires.#231
40d9408Thanks @jxom! - ChangedSiwe.Message.chainIdto bigint, parsed SIWE messages to bigint chain IDs, and generated SIWE nonces with cryptographically secure randomness.#231
40d9408Thanks @jxom! - Fixedtempo.AuthorizationTempo.fromto normalizeoptions.signaturethroughSignatureEnvelope.fromso serialized or convenience-shape signatures are accepted as documented.#231
40d9408Thanks @jxom! - Fixed Tempo key authorization RPC decoding to toleratenulloptional fields and preservewitness,isAdmin, andaccountthrough the zod codec.#231
40d9408Thanks @jxom! - Fixedtempo.TransactionRequest.toRpcto generate a full 192-bitnonceKeywhen called withnonceKey: 'random', matching the documented field width.#231
40d9408Thanks @jxom! - FixedPoolId.fromto be order-independent by sorting token addresses canonically before hashing.#231
40d9408Thanks @jxom! - Fixed TempoTransactionReceipt.fromRpc/toRpcto map thetypefield between'0x76'and'tempo'.#231
40d9408Thanks @jxom! - Added the Tempo fieldskeyId,multisigInit,multisigSignatureCount, andcapabilitiestoTransactionRequest.#231
40d9408Thanks @jxom! - Fixed Tempo transaction RPC decoding to toleratenulloptional fields and to omit fabricated flatdata/to/valuecall fields.#231
40d9408Thanks @jxom! - Fixedtempo.TxEnvelopeTempo.deserializeto validate the0x76envelope-type prefix before RLP decoding, rejecting payloads from other envelope types.#231
40d9408Thanks @jxom! - FixedAccessList.fromTupleListsilently normalizing non-32-byte storage keys; it now throwsInvalidStorageKeySizeErrorto match the symmetrictoTupleListvalidation.#231
40d9408Thanks @jxom! - FixedAuthorization.fromTupleListdeclaring its return type asTupleListinstead ofList.#231
40d9408Thanks @jxom! - RequiredblobVersionedHashesto be present and non-empty inTxEnvelopeEip4844.assert; the previousif (blobVersionedHashes)guard let envelopes serialize as "blob transactions with no blob hashes".#231
40d9408Thanks @jxom! - ImprovedTxEnvelopeEip4844.deserializeInvalidSerializedErrordiagnostics by includingmaxFeePerBlobGasandblobVersionedHashesin the attributes map and using the EIP-4844 signature-presence threshold (length > 11) instead of the EIP-1559> 9copy-paste.#231
40d9408Thanks @jxom! - FixedTxEnvelopeEip4844.serializeignoring theinputalias fordata; calldata supplied viainputis now included in the serialized envelope and sign payload.#231
40d9408Thanks @jxom! - Added the missingTxEnvelopeEip7702.toRpcto mirrorEip1559/Eip2930/Eip4844/Legacy, restoring symmetry for callers building EIP-7702 RPC requests.#231
40d9408Thanks @jxom! - FixedTransaction.fromRpcclobbering legacy (type: '0x0')vwith27/28; the original RPCvis now preserved when present.#231
40d9408Thanks @jxom! - FixedTxEnvelopeLegacy.toRpccollapsing every signed legacy envelope tov: '0x1b'/'0x1c'; it now preserves an explicitenvelope.v, otherwise derives EIP-155v = chainId * 2 + 35 + yParitywhen a chain ID is present.#231
40d9408Thanks @jxom! - FixedTransactionRequest.fromRpcmutating the caller-provided RPC object by cloning before assigning parsed fields.#231
40d9408Thanks @jxom! - FixedTransaction.toRpcemittingnullfortransactionIndex: 0instead of0x0.#231
40d9408Thanks @jxom! - Fixedwebauthn.Authentication.getSignPayloadto honor the documentedhashoption by SHA-256 hashing the returned payload whenhash: trueis passed.#231
40d9408Thanks @jxom! - Fixedwebauthn.Authentication.signto decodeclientDataJSONbytes as UTF-8 viaBytes.toStringinstead ofString.fromCharCode(...bytes), which corrupted non-ASCII payloads and could throwRangeErroron large inputs.#231
40d9408Thanks @jxom! - Fixedwebauthn.Authentication.verifyto reject assertionauthenticatorDatawhose flags imply structure not allowed for assertions: theAT(attested credential data) bit is now refused, and anED(extension data) bit must be backed by a CBOR-decodable trailing extension map.#231
40d9408Thanks @jxom! - Fixedwebauthn.Registration.verifyJSDoc for theattestationoption to document the actual runtime default of'none'(matchingRegistration.getOptions) instead of'required'.#284
c86f635Thanks @jxom! - FixedAbiParameters.encodeandAbiParameters.decodehandling of zero-width types (zero-length fixed arrays and empty tuples).