ox 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Abi/package.json +6 -0
- package/Abi.ts +163 -0
- package/AbiConstructor/package.json +6 -0
- package/AbiConstructor.ts +413 -0
- package/AbiError/package.json +6 -0
- package/AbiError.ts +719 -0
- package/AbiEvent/package.json +6 -0
- package/AbiEvent.ts +1284 -0
- package/AbiFunction/package.json +6 -0
- package/AbiFunction.ts +813 -0
- package/AbiItem/package.json +6 -0
- package/AbiItem.ts +779 -0
- package/AbiParameters/package.json +6 -0
- package/AbiParameters.ts +712 -0
- package/AccessList/package.json +6 -0
- package/AccessList.ts +124 -0
- package/AccountProof/package.json +6 -0
- package/AccountProof.ts +35 -0
- package/Address/package.json +6 -0
- package/Address.ts +359 -0
- package/AesGcm/package.json +6 -0
- package/AesGcm.ts +220 -0
- package/Authorization/package.json +6 -0
- package/Authorization.ts +639 -0
- package/Base58/package.json +6 -0
- package/Base58.ts +180 -0
- package/Base64/package.json +6 -0
- package/Base64.ts +333 -0
- package/Blobs/package.json +6 -0
- package/Blobs.ts +982 -0
- package/Block/package.json +6 -0
- package/Block.ts +317 -0
- package/Bloom/package.json +6 -0
- package/Bloom.ts +80 -0
- package/Bls/package.json +6 -0
- package/Bls.ts +496 -0
- package/BlsPoint/package.json +6 -0
- package/BlsPoint.ts +232 -0
- package/Bytes/package.json +6 -0
- package/Bytes.ts +963 -0
- package/CHANGELOG.md +7 -0
- package/Caches/package.json +6 -0
- package/Caches.ts +21 -0
- package/ContractAddress/package.json +6 -0
- package/ContractAddress.ts +181 -0
- package/Ens/package.json +6 -0
- package/Ens.ts +116 -0
- package/Errors/package.json +6 -0
- package/Errors.ts +95 -0
- package/Fee/package.json +6 -0
- package/Fee.ts +57 -0
- package/Filter/package.json +6 -0
- package/Filter.ts +144 -0
- package/Hash/package.json +6 -0
- package/Hash.ts +210 -0
- package/HdKey/package.json +6 -0
- package/HdKey.ts +175 -0
- package/Hex/package.json +6 -0
- package/Hex.ts +1040 -0
- package/Json/package.json +6 -0
- package/Json.ts +84 -0
- package/Kzg/package.json +6 -0
- package/Kzg.ts +51 -0
- package/LICENSE +21 -0
- package/Log/package.json +6 -0
- package/Log.ts +248 -0
- package/Mnemonic/package.json +6 -0
- package/Mnemonic.ts +249 -0
- package/P256/package.json +6 -0
- package/P256.ts +230 -0
- package/PersonalMessage/package.json +6 -0
- package/PersonalMessage.ts +70 -0
- package/Provider/package.json +6 -0
- package/Provider.ts +354 -0
- package/PublicKey/package.json +6 -0
- package/PublicKey.ts +545 -0
- package/README.md +75 -26
- package/Rlp/package.json +6 -0
- package/Rlp.ts +390 -0
- package/RpcRequest/package.json +6 -0
- package/RpcRequest.ts +192 -0
- package/RpcResponse/package.json +6 -0
- package/RpcResponse.ts +389 -0
- package/RpcSchema/package.json +6 -0
- package/RpcSchema.ts +273 -0
- package/RpcTransport/package.json +6 -0
- package/RpcTransport.ts +198 -0
- package/Secp256k1/package.json +6 -0
- package/Secp256k1.ts +304 -0
- package/Signature/package.json +6 -0
- package/Signature.ts +909 -0
- package/Siwe/package.json +6 -0
- package/Siwe.ts +516 -0
- package/Solidity/package.json +6 -0
- package/Solidity.ts +109 -0
- package/Transaction/package.json +6 -0
- package/Transaction.ts +429 -0
- package/TransactionEnvelope/package.json +6 -0
- package/TransactionEnvelope.ts +205 -0
- package/TransactionEnvelopeEip1559/package.json +6 -0
- package/TransactionEnvelopeEip1559.ts +656 -0
- package/TransactionEnvelopeEip2930/package.json +6 -0
- package/TransactionEnvelopeEip2930.ts +624 -0
- package/TransactionEnvelopeEip4844/package.json +6 -0
- package/TransactionEnvelopeEip4844.ts +764 -0
- package/TransactionEnvelopeEip7702/package.json +6 -0
- package/TransactionEnvelopeEip7702.ts +639 -0
- package/TransactionEnvelopeLegacy/package.json +6 -0
- package/TransactionEnvelopeLegacy.ts +674 -0
- package/TransactionReceipt/package.json +6 -0
- package/TransactionReceipt.ts +341 -0
- package/TransactionRequest/package.json +6 -0
- package/TransactionRequest.ts +151 -0
- package/TypedData/package.json +6 -0
- package/TypedData.ts +931 -0
- package/ValidatorData/package.json +6 -0
- package/ValidatorData.ts +87 -0
- package/Value/package.json +6 -0
- package/Value.ts +242 -0
- package/WebAuthnP256/package.json +6 -0
- package/WebAuthnP256.ts +803 -0
- package/WebCryptoP256/package.json +6 -0
- package/WebCryptoP256.ts +190 -0
- package/Withdrawal/package.json +6 -0
- package/Withdrawal.ts +95 -0
- package/_cjs/Abi.js +17 -0
- package/_cjs/Abi.js.map +1 -0
- package/_cjs/AbiConstructor.js +42 -0
- package/_cjs/AbiConstructor.js.map +1 -0
- package/_cjs/AbiError.js +98 -0
- package/_cjs/AbiError.js.map +1 -0
- package/_cjs/AbiEvent.js +338 -0
- package/_cjs/AbiEvent.js.map +1 -0
- package/_cjs/AbiFunction.js +85 -0
- package/_cjs/AbiFunction.js.map +1 -0
- package/_cjs/AbiItem.js +180 -0
- package/_cjs/AbiItem.js.map +1 -0
- package/_cjs/AbiParameters.js +229 -0
- package/_cjs/AbiParameters.js.map +1 -0
- package/_cjs/AccessList.js +51 -0
- package/_cjs/AccessList.js.map +1 -0
- package/_cjs/AccountProof.js +3 -0
- package/_cjs/AccountProof.js.map +1 -0
- package/_cjs/Address.js +121 -0
- package/_cjs/Address.js.map +1 -0
- package/_cjs/AesGcm.js +55 -0
- package/_cjs/AesGcm.js.map +1 -0
- package/_cjs/Authorization.js +99 -0
- package/_cjs/Authorization.js.map +1 -0
- package/_cjs/Base58.js +52 -0
- package/_cjs/Base58.js.map +1 -0
- package/_cjs/Base64.js +76 -0
- package/_cjs/Base64.js.map +1 -0
- package/_cjs/Blobs.js +255 -0
- package/_cjs/Blobs.js.map +1 -0
- package/_cjs/Block.js +87 -0
- package/_cjs/Block.js.map +1 -0
- package/_cjs/Bloom.js +23 -0
- package/_cjs/Bloom.js.map +1 -0
- package/_cjs/Bls.js +79 -0
- package/_cjs/Bls.js.map +1 -0
- package/_cjs/BlsPoint.js +32 -0
- package/_cjs/BlsPoint.js.map +1 -0
- package/_cjs/Bytes.js +279 -0
- package/_cjs/Bytes.js.map +1 -0
- package/_cjs/Caches.js +14 -0
- package/_cjs/Caches.js.map +1 -0
- package/_cjs/ContractAddress.js +39 -0
- package/_cjs/ContractAddress.js.map +1 -0
- package/_cjs/Ens.js +37 -0
- package/_cjs/Ens.js.map +1 -0
- package/_cjs/Errors.js +99 -0
- package/_cjs/Errors.js.map +1 -0
- package/_cjs/Fee.js +3 -0
- package/_cjs/Fee.js.map +1 -0
- package/_cjs/Filter.js +43 -0
- package/_cjs/Filter.js.map +1 -0
- package/_cjs/Hash.js +40 -0
- package/_cjs/Hash.js.map +1 -0
- package/_cjs/HdKey.js +30 -0
- package/_cjs/HdKey.js.map +1 -0
- package/_cjs/Hex.js +324 -0
- package/_cjs/Hex.js.map +1 -0
- package/_cjs/Json.js +25 -0
- package/_cjs/Json.js.map +1 -0
- package/_cjs/Kzg.js +14 -0
- package/_cjs/Kzg.js.map +1 -0
- package/_cjs/Log.js +35 -0
- package/_cjs/Log.js.map +1 -0
- package/_cjs/Mnemonic.js +56 -0
- package/_cjs/Mnemonic.js.map +1 -0
- package/_cjs/P256.js +52 -0
- package/_cjs/P256.js.map +1 -0
- package/_cjs/PersonalMessage.js +16 -0
- package/_cjs/PersonalMessage.js.map +1 -0
- package/_cjs/Provider.js +90 -0
- package/_cjs/Provider.js.map +1 -0
- package/_cjs/PublicKey.js +192 -0
- package/_cjs/PublicKey.js.map +1 -0
- package/_cjs/Rlp.js +179 -0
- package/_cjs/Rlp.js.map +1 -0
- package/_cjs/RpcRequest.js +27 -0
- package/_cjs/RpcRequest.js.map +1 -0
- package/_cjs/RpcResponse.js +368 -0
- package/_cjs/RpcResponse.js.map +1 -0
- package/_cjs/RpcSchema.js +7 -0
- package/_cjs/RpcSchema.js.map +1 -0
- package/_cjs/RpcTransport.js +95 -0
- package/_cjs/RpcTransport.js.map +1 -0
- package/_cjs/Secp256k1.js +57 -0
- package/_cjs/Secp256k1.js.map +1 -0
- package/_cjs/Signature.js +305 -0
- package/_cjs/Signature.js.map +1 -0
- package/_cjs/Siwe.js +231 -0
- package/_cjs/Siwe.js.map +1 -0
- package/_cjs/Solidity.js +104 -0
- package/_cjs/Solidity.js.map +1 -0
- package/_cjs/Transaction.js +106 -0
- package/_cjs/Transaction.js.map +1 -0
- package/_cjs/TransactionEnvelope.js +80 -0
- package/_cjs/TransactionEnvelope.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip1559.js +182 -0
- package/_cjs/TransactionEnvelopeEip1559.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip2930.js +166 -0
- package/_cjs/TransactionEnvelopeEip2930.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip4844.js +224 -0
- package/_cjs/TransactionEnvelopeEip4844.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip7702.js +156 -0
- package/_cjs/TransactionEnvelopeEip7702.js.map +1 -0
- package/_cjs/TransactionEnvelopeLegacy.js +221 -0
- package/_cjs/TransactionEnvelopeLegacy.js.map +1 -0
- package/_cjs/TransactionReceipt.js +76 -0
- package/_cjs/TransactionReceipt.js.map +1 -0
- package/_cjs/TransactionRequest.js +51 -0
- package/_cjs/TransactionRequest.js.map +1 -0
- package/_cjs/TypedData.js +318 -0
- package/_cjs/TypedData.js.map +1 -0
- package/_cjs/ValidatorData.js +16 -0
- package/_cjs/ValidatorData.js.map +1 -0
- package/_cjs/Value.js +96 -0
- package/_cjs/Value.js.map +1 -0
- package/_cjs/WebAuthnP256.js +245 -0
- package/_cjs/WebAuthnP256.js.map +1 -0
- package/_cjs/WebCryptoP256.js +46 -0
- package/_cjs/WebCryptoP256.js.map +1 -0
- package/_cjs/Withdrawal.js +24 -0
- package/_cjs/Withdrawal.js.map +1 -0
- package/_cjs/index.js +66 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/internal/abi.js +11 -0
- package/_cjs/internal/abi.js.map +1 -0
- package/_cjs/internal/abiConstructor.js +3 -0
- package/_cjs/internal/abiConstructor.js.map +1 -0
- package/_cjs/internal/abiError.js +3 -0
- package/_cjs/internal/abiError.js.map +1 -0
- package/_cjs/internal/abiEvent.js +3 -0
- package/_cjs/internal/abiEvent.js.map +1 -0
- package/_cjs/internal/abiFunction.js +3 -0
- package/_cjs/internal/abiFunction.js.map +1 -0
- package/_cjs/internal/abiItem.js +110 -0
- package/_cjs/internal/abiItem.js.map +1 -0
- package/_cjs/internal/abiParameters.js +376 -0
- package/_cjs/internal/abiParameters.js.map +1 -0
- package/_cjs/internal/base58.js +89 -0
- package/_cjs/internal/base58.js.map +1 -0
- package/_cjs/internal/bytes.js +88 -0
- package/_cjs/internal/bytes.js.map +1 -0
- package/_cjs/internal/cursor.js +210 -0
- package/_cjs/internal/cursor.js.map +1 -0
- package/_cjs/internal/ens.js +43 -0
- package/_cjs/internal/ens.js.map +1 -0
- package/_cjs/internal/errors.js +28 -0
- package/_cjs/internal/errors.js.map +1 -0
- package/_cjs/internal/hdKey.js +19 -0
- package/_cjs/internal/hdKey.js.map +1 -0
- package/_cjs/internal/hex.js +66 -0
- package/_cjs/internal/hex.js.map +1 -0
- package/_cjs/internal/lru.js +34 -0
- package/_cjs/internal/lru.js.map +1 -0
- package/_cjs/internal/mnemonic/wordlists.js +24 -0
- package/_cjs/internal/mnemonic/wordlists.js.map +1 -0
- package/_cjs/internal/promise.js +49 -0
- package/_cjs/internal/promise.js.map +1 -0
- package/_cjs/internal/register.js +3 -0
- package/_cjs/internal/register.js.map +1 -0
- package/_cjs/internal/rpcSchema.js +3 -0
- package/_cjs/internal/rpcSchema.js.map +1 -0
- package/_cjs/internal/rpcSchemas/eth.js +3 -0
- package/_cjs/internal/rpcSchemas/eth.js.map +1 -0
- package/_cjs/internal/rpcSchemas/wallet.js +3 -0
- package/_cjs/internal/rpcSchemas/wallet.js.map +1 -0
- package/_cjs/internal/rpcTransport.js +19 -0
- package/_cjs/internal/rpcTransport.js.map +1 -0
- package/_cjs/internal/types.js +3 -0
- package/_cjs/internal/types.js.map +1 -0
- package/_cjs/internal/uid.js +17 -0
- package/_cjs/internal/uid.js.map +1 -0
- package/_cjs/internal/webauthn.js +28 -0
- package/_cjs/internal/webauthn.js.map +1 -0
- package/_cjs/package.json +1 -0
- package/_cjs/trusted-setups/Paths.js +6 -0
- package/_cjs/trusted-setups/Paths.js.map +1 -0
- package/_cjs/trusted-setups/index.js +5 -0
- package/_cjs/trusted-setups/index.js.map +1 -0
- package/_cjs/trusted-setups/internal/paths.js +11 -0
- package/_cjs/trusted-setups/internal/paths.js.map +1 -0
- package/_cjs/version.js +5 -0
- package/_cjs/version.js.map +1 -0
- package/_cjs/window/index.js +3 -0
- package/_cjs/window/index.js.map +1 -0
- package/_esm/Abi.js +19 -0
- package/_esm/Abi.js.map +1 -0
- package/_esm/AbiConstructor.js +102 -0
- package/_esm/AbiConstructor.js.map +1 -0
- package/_esm/AbiError.js +364 -0
- package/_esm/AbiError.js.map +1 -0
- package/_esm/AbiEvent.js +1038 -0
- package/_esm/AbiEvent.js.map +1 -0
- package/_esm/AbiFunction.js +549 -0
- package/_esm/AbiFunction.js.map +1 -0
- package/_esm/AbiItem.js +574 -0
- package/_esm/AbiItem.js.map +1 -0
- package/_esm/AbiParameters.js +543 -0
- package/_esm/AbiParameters.js.map +1 -0
- package/_esm/AccessList.js +105 -0
- package/_esm/AccessList.js.map +1 -0
- package/_esm/AccountProof.js +2 -0
- package/_esm/AccountProof.js.map +1 -0
- package/_esm/Address.js +268 -0
- package/_esm/Address.js.map +1 -0
- package/_esm/AesGcm.js +124 -0
- package/_esm/AesGcm.js.map +1 -0
- package/_esm/Authorization.js +441 -0
- package/_esm/Authorization.js.map +1 -0
- package/_esm/Base58.js +142 -0
- package/_esm/Base58.js.map +1 -0
- package/_esm/Base64.js +236 -0
- package/_esm/Base64.js.map +1 -0
- package/_esm/Blobs.js +624 -0
- package/_esm/Blobs.js.map +1 -0
- package/_esm/Block.js +177 -0
- package/_esm/Block.js.map +1 -0
- package/_esm/Bloom.js +57 -0
- package/_esm/Bloom.js.map +1 -0
- package/_esm/Bls.js +141 -0
- package/_esm/Bls.js.map +1 -0
- package/_esm/BlsPoint.js +59 -0
- package/_esm/BlsPoint.js.map +1 -0
- package/_esm/Bytes.js +719 -0
- package/_esm/Bytes.js.map +1 -0
- package/_esm/Caches.js +19 -0
- package/_esm/Caches.js.map +1 -0
- package/_esm/ContractAddress.js +110 -0
- package/_esm/ContractAddress.js.map +1 -0
- package/_esm/Ens.js +84 -0
- package/_esm/Ens.js.map +1 -0
- package/_esm/Errors.js +105 -0
- package/_esm/Errors.js.map +1 -0
- package/_esm/Fee.js +2 -0
- package/_esm/Fee.js.map +1 -0
- package/_esm/Filter.js +100 -0
- package/_esm/Filter.js.map +1 -0
- package/_esm/Hash.js +126 -0
- package/_esm/Hash.js.map +1 -0
- package/_esm/HdKey.js +107 -0
- package/_esm/HdKey.js.map +1 -0
- package/_esm/Hex.js +763 -0
- package/_esm/Hex.js.map +1 -0
- package/_esm/Json.js +62 -0
- package/_esm/Json.js.map +1 -0
- package/_esm/Kzg.js +30 -0
- package/_esm/Kzg.js.map +1 -0
- package/_esm/Log.js +181 -0
- package/_esm/Log.js.map +1 -0
- package/_esm/Mnemonic.js +154 -0
- package/_esm/Mnemonic.js.map +1 -0
- package/_esm/P256.js +131 -0
- package/_esm/P256.js.map +1 -0
- package/_esm/PersonalMessage.js +46 -0
- package/_esm/PersonalMessage.js.map +1 -0
- package/_esm/Provider.js +122 -0
- package/_esm/Provider.js.map +1 -0
- package/_esm/PublicKey.js +395 -0
- package/_esm/PublicKey.js.map +1 -0
- package/_esm/Rlp.js +267 -0
- package/_esm/Rlp.js.map +1 -0
- package/_esm/RpcRequest.js +131 -0
- package/_esm/RpcRequest.js.map +1 -0
- package/_esm/RpcResponse.js +457 -0
- package/_esm/RpcResponse.js.map +1 -0
- package/_esm/RpcSchema.js +46 -0
- package/_esm/RpcSchema.js.map +1 -0
- package/_esm/RpcTransport.js +110 -0
- package/_esm/RpcTransport.js.map +1 -0
- package/_esm/Secp256k1.js +173 -0
- package/_esm/Secp256k1.js.map +1 -0
- package/_esm/Signature.js +696 -0
- package/_esm/Signature.js.map +1 -0
- package/_esm/Siwe.js +374 -0
- package/_esm/Siwe.js.map +1 -0
- package/_esm/Solidity.js +104 -0
- package/_esm/Solidity.js.map +1 -0
- package/_esm/Transaction.js +176 -0
- package/_esm/Transaction.js.map +1 -0
- package/_esm/TransactionEnvelope.js +139 -0
- package/_esm/TransactionEnvelope.js.map +1 -0
- package/_esm/TransactionEnvelopeEip1559.js +455 -0
- package/_esm/TransactionEnvelopeEip1559.js.map +1 -0
- package/_esm/TransactionEnvelopeEip2930.js +439 -0
- package/_esm/TransactionEnvelopeEip2930.js.map +1 -0
- package/_esm/TransactionEnvelopeEip4844.js +542 -0
- package/_esm/TransactionEnvelopeEip4844.js.map +1 -0
- package/_esm/TransactionEnvelopeEip7702.js +442 -0
- package/_esm/TransactionEnvelopeEip7702.js.map +1 -0
- package/_esm/TransactionEnvelopeLegacy.js +495 -0
- package/_esm/TransactionEnvelopeLegacy.js.map +1 -0
- package/_esm/TransactionReceipt.js +229 -0
- package/_esm/TransactionReceipt.js.map +1 -0
- package/_esm/TransactionRequest.js +89 -0
- package/_esm/TransactionRequest.js.map +1 -0
- package/_esm/TypedData.js +635 -0
- package/_esm/TypedData.js.map +1 -0
- package/_esm/ValidatorData.js +52 -0
- package/_esm/ValidatorData.js.map +1 -0
- package/_esm/Value.js +196 -0
- package/_esm/Value.js.map +1 -0
- package/_esm/WebAuthnP256.js +471 -0
- package/_esm/WebAuthnP256.js.map +1 -0
- package/_esm/WebCryptoP256.js +116 -0
- package/_esm/WebCryptoP256.js.map +1 -0
- package/_esm/Withdrawal.js +72 -0
- package/_esm/Withdrawal.js.map +1 -0
- package/_esm/index.js +3366 -0
- package/_esm/index.js.map +1 -0
- package/_esm/internal/abi.js +9 -0
- package/_esm/internal/abi.js.map +1 -0
- package/_esm/internal/abiConstructor.js +2 -0
- package/_esm/internal/abiConstructor.js.map +1 -0
- package/_esm/internal/abiError.js +2 -0
- package/_esm/internal/abiError.js.map +1 -0
- package/_esm/internal/abiEvent.js +2 -0
- package/_esm/internal/abiEvent.js.map +1 -0
- package/_esm/internal/abiFunction.js +2 -0
- package/_esm/internal/abiFunction.js.map +1 -0
- package/_esm/internal/abiItem.js +122 -0
- package/_esm/internal/abiItem.js.map +1 -0
- package/_esm/internal/abiParameters.js +419 -0
- package/_esm/internal/abiParameters.js.map +1 -0
- package/_esm/internal/base58.js +91 -0
- package/_esm/internal/base58.js.map +1 -0
- package/_esm/internal/bytes.js +86 -0
- package/_esm/internal/bytes.js.map +1 -0
- package/_esm/internal/cursor.js +207 -0
- package/_esm/internal/cursor.js.map +1 -0
- package/_esm/internal/ens.js +47 -0
- package/_esm/internal/ens.js.map +1 -0
- package/_esm/internal/errors.js +26 -0
- package/_esm/internal/errors.js.map +1 -0
- package/_esm/internal/hdKey.js +17 -0
- package/_esm/internal/hdKey.js.map +1 -0
- package/_esm/internal/hex.js +64 -0
- package/_esm/internal/hex.js.map +1 -0
- package/_esm/internal/lru.js +36 -0
- package/_esm/internal/lru.js.map +1 -0
- package/_esm/internal/mnemonic/wordlists.js +11 -0
- package/_esm/internal/mnemonic/wordlists.js.map +1 -0
- package/_esm/internal/promise.js +52 -0
- package/_esm/internal/promise.js.map +1 -0
- package/_esm/internal/register.js +2 -0
- package/_esm/internal/register.js.map +1 -0
- package/_esm/internal/rpcSchema.js +2 -0
- package/_esm/internal/rpcSchema.js.map +1 -0
- package/_esm/internal/rpcSchemas/eth.js +2 -0
- package/_esm/internal/rpcSchemas/eth.js.map +1 -0
- package/_esm/internal/rpcSchemas/wallet.js +2 -0
- package/_esm/internal/rpcSchemas/wallet.js.map +1 -0
- package/_esm/internal/rpcTransport.js +20 -0
- package/_esm/internal/rpcTransport.js.map +1 -0
- package/_esm/internal/types.js +2 -0
- package/_esm/internal/types.js.map +1 -0
- package/_esm/internal/uid.js +15 -0
- package/_esm/internal/uid.js.map +1 -0
- package/_esm/internal/webauthn.js +35 -0
- package/_esm/internal/webauthn.js.map +1 -0
- package/_esm/package.json +1 -0
- package/_esm/trusted-setups/Paths.js +3 -0
- package/_esm/trusted-setups/Paths.js.map +1 -0
- package/_esm/trusted-setups/index.js +2 -0
- package/_esm/trusted-setups/index.js.map +1 -0
- package/_esm/trusted-setups/internal/paths.js +12 -0
- package/_esm/trusted-setups/internal/paths.js.map +1 -0
- package/_esm/version.js +3 -0
- package/_esm/version.js.map +1 -0
- package/_esm/window/index.js +2 -0
- package/_esm/window/index.js.map +1 -0
- package/_test/Abi.test-d/package.json +6 -0
- package/_test/AbiConstructor.test-d/package.json +6 -0
- package/_test/AbiError.test-d/package.json +6 -0
- package/_test/AbiEvent.snap-d/package.json +6 -0
- package/_test/AbiEvent.snap-d.ts +329 -0
- package/_test/AbiFunction.snap-d/package.json +6 -0
- package/_test/AbiFunction.snap-d.ts +262 -0
- package/_test/AbiItem.snap-d/package.json +6 -0
- package/_test/AbiItem.snap-d.ts +131 -0
- package/_test/AbiParameters.bench/package.json +6 -0
- package/_test/AbiParameters.snap-d/package.json +6 -0
- package/_test/AbiParameters.snap-d.ts +66 -0
- package/_test/Address.bench/package.json +6 -0
- package/_test/Base58.bench/package.json +6 -0
- package/_test/Hex.bench/package.json +6 -0
- package/_test/Hex.test-d/package.json +6 -0
- package/_test/PublicKey.test-d/package.json +6 -0
- package/_test/Rlp.bench/package.json +6 -0
- package/_test/Rlp.test-d/package.json +6 -0
- package/_test/Signature.snap-d/package.json +6 -0
- package/_test/Signature.snap-d.ts +96 -0
- package/_test/TransactionEnvelopeEip1559.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip2930.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip4844.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip7702.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeLegacy.test-d/package.json +6 -0
- package/_test/TypedData.test-d/package.json +6 -0
- package/_types/Abi.d.ts +137 -0
- package/_types/Abi.d.ts.map +1 -0
- package/_types/AbiConstructor.d.ts +305 -0
- package/_types/AbiConstructor.d.ts.map +1 -0
- package/_types/AbiError.d.ts +522 -0
- package/_types/AbiError.d.ts.map +1 -0
- package/_types/AbiEvent.d.ts +892 -0
- package/_types/AbiEvent.d.ts.map +1 -0
- package/_types/AbiFunction.d.ts +602 -0
- package/_types/AbiFunction.d.ts.map +1 -0
- package/_types/AbiItem.d.ts +544 -0
- package/_types/AbiItem.d.ts.map +1 -0
- package/_types/AbiParameters.d.ts +466 -0
- package/_types/AbiParameters.d.ts.map +1 -0
- package/_types/AccessList.d.ts +83 -0
- package/_types/AccessList.d.ts.map +1 -0
- package/_types/AccountProof.d.ts +32 -0
- package/_types/AccountProof.d.ts.map +1 -0
- package/_types/Address.d.ts +244 -0
- package/_types/Address.d.ts.map +1 -0
- package/_types/AesGcm.d.ts +116 -0
- package/_types/AesGcm.d.ts.map +1 -0
- package/_types/Authorization.d.ts +461 -0
- package/_types/Authorization.d.ts.map +1 -0
- package/_types/Base58.d.ts +131 -0
- package/_types/Base58.d.ts.map +1 -0
- package/_types/Base64.d.ts +244 -0
- package/_types/Base64.d.ts.map +1 -0
- package/_types/Blobs.d.ts +556 -0
- package/_types/Blobs.d.ts.map +1 -0
- package/_types/Block.d.ts +190 -0
- package/_types/Block.d.ts.map +1 -0
- package/_types/Bloom.d.ts +54 -0
- package/_types/Bloom.d.ts.map +1 -0
- package/_types/Bls.d.ts +365 -0
- package/_types/Bls.d.ts.map +1 -0
- package/_types/BlsPoint.d.ts +187 -0
- package/_types/BlsPoint.d.ts.map +1 -0
- package/_types/Bytes.d.ts +674 -0
- package/_types/Bytes.d.ts.map +1 -0
- package/_types/Caches.d.ts +13 -0
- package/_types/Caches.d.ts.map +1 -0
- package/_types/ContractAddress.d.ts +115 -0
- package/_types/ContractAddress.d.ts.map +1 -0
- package/_types/Ens.d.ts +72 -0
- package/_types/Ens.d.ts.map +1 -0
- package/_types/Errors.d.ts +33 -0
- package/_types/Errors.d.ts.map +1 -0
- package/_types/Fee.d.ts +41 -0
- package/_types/Fee.d.ts.map +1 -0
- package/_types/Filter.d.ts +100 -0
- package/_types/Filter.d.ts.map +1 -0
- package/_types/Hash.d.ts +135 -0
- package/_types/Hash.d.ts.map +1 -0
- package/_types/HdKey.d.ts +146 -0
- package/_types/HdKey.d.ts.map +1 -0
- package/_types/Hex.d.ts +711 -0
- package/_types/Hex.d.ts.map +1 -0
- package/_types/Json.d.ts +53 -0
- package/_types/Json.d.ts.map +1 -0
- package/_types/Kzg.d.ts +42 -0
- package/_types/Kzg.d.ts.map +1 -0
- package/_types/Log.d.ts +194 -0
- package/_types/Log.d.ts.map +1 -0
- package/_types/Mnemonic.d.ts +176 -0
- package/_types/Mnemonic.d.ts.map +1 -0
- package/_types/P256.d.ts +207 -0
- package/_types/P256.d.ts.map +1 -0
- package/_types/PersonalMessage.d.ts +49 -0
- package/_types/PersonalMessage.d.ts.map +1 -0
- package/_types/Provider.d.ts +268 -0
- package/_types/Provider.d.ts.map +1 -0
- package/_types/PublicKey.d.ts +327 -0
- package/_types/PublicKey.d.ts.map +1 -0
- package/_types/Rlp.d.ts +153 -0
- package/_types/Rlp.d.ts.map +1 -0
- package/_types/RpcRequest.d.ts +144 -0
- package/_types/RpcRequest.d.ts.map +1 -0
- package/_types/RpcResponse.d.ts +266 -0
- package/_types/RpcResponse.d.ts.map +1 -0
- package/_types/RpcSchema.d.ts +248 -0
- package/_types/RpcSchema.d.ts.map +1 -0
- package/_types/RpcTransport.d.ts +65 -0
- package/_types/RpcTransport.d.ts.map +1 -0
- package/_types/Secp256k1.d.ts +277 -0
- package/_types/Secp256k1.d.ts.map +1 -0
- package/_types/Signature.d.ts +601 -0
- package/_types/Signature.d.ts.map +1 -0
- package/_types/Siwe.d.ts +249 -0
- package/_types/Siwe.d.ts.map +1 -0
- package/_types/Solidity.d.ts +100 -0
- package/_types/Solidity.d.ts.map +1 -0
- package/_types/Transaction.d.ts +235 -0
- package/_types/Transaction.d.ts.map +1 -0
- package/_types/TransactionEnvelope.d.ts +141 -0
- package/_types/TransactionEnvelope.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip1559.d.ts +367 -0
- package/_types/TransactionEnvelopeEip1559.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip2930.d.ts +364 -0
- package/_types/TransactionEnvelopeEip2930.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip4844.d.ts +419 -0
- package/_types/TransactionEnvelopeEip4844.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip7702.d.ts +377 -0
- package/_types/TransactionEnvelopeEip7702.d.ts.map +1 -0
- package/_types/TransactionEnvelopeLegacy.d.ts +358 -0
- package/_types/TransactionEnvelopeLegacy.d.ts.map +1 -0
- package/_types/TransactionReceipt.d.ts +271 -0
- package/_types/TransactionReceipt.d.ts.map +1 -0
- package/_types/TransactionRequest.d.ts +92 -0
- package/_types/TransactionRequest.d.ts.map +1 -0
- package/_types/TypedData.d.ts +496 -0
- package/_types/TypedData.d.ts.map +1 -0
- package/_types/ValidatorData.d.ts +64 -0
- package/_types/ValidatorData.d.ts.map +1 -0
- package/_types/Value.d.ts +159 -0
- package/_types/Value.d.ts.map +1 -0
- package/_types/WebAuthnP256.d.ts +445 -0
- package/_types/WebAuthnP256.d.ts.map +1 -0
- package/_types/WebCryptoP256.d.ts +119 -0
- package/_types/WebCryptoP256.d.ts.map +1 -0
- package/_types/Withdrawal.d.ts +74 -0
- package/_types/Withdrawal.d.ts.map +1 -0
- package/_types/index.d.ts +3367 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/internal/abi.d.ts +4 -0
- package/_types/internal/abi.d.ts.map +1 -0
- package/_types/internal/abiConstructor.d.ts +11 -0
- package/_types/internal/abiConstructor.d.ts.map +1 -0
- package/_types/internal/abiError.d.ts +11 -0
- package/_types/internal/abiError.d.ts.map +1 -0
- package/_types/internal/abiEvent.d.ts +60 -0
- package/_types/internal/abiEvent.d.ts.map +1 -0
- package/_types/internal/abiFunction.d.ts +11 -0
- package/_types/internal/abiFunction.d.ts.map +1 -0
- package/_types/internal/abiItem.d.ts +100 -0
- package/_types/internal/abiItem.d.ts.map +1 -0
- package/_types/internal/abiParameters.d.ts +169 -0
- package/_types/internal/abiParameters.d.ts.map +1 -0
- package/_types/internal/base58.d.ts +17 -0
- package/_types/internal/base58.d.ts.map +1 -0
- package/_types/internal/bytes.d.ts +52 -0
- package/_types/internal/bytes.d.ts.map +1 -0
- package/_types/internal/cursor.d.ts +70 -0
- package/_types/internal/cursor.d.ts.map +1 -0
- package/_types/internal/ens.d.ts +23 -0
- package/_types/internal/ens.d.ts.map +1 -0
- package/_types/internal/errors.d.ts +7 -0
- package/_types/internal/errors.d.ts.map +1 -0
- package/_types/internal/hdKey.d.ts +10 -0
- package/_types/internal/hdKey.d.ts.map +1 -0
- package/_types/internal/hex.d.ts +39 -0
- package/_types/internal/hex.d.ts.map +1 -0
- package/_types/internal/lru.d.ts +13 -0
- package/_types/internal/lru.d.ts.map +1 -0
- package/_types/internal/mnemonic/wordlists.d.ts +11 -0
- package/_types/internal/mnemonic/wordlists.d.ts.map +1 -0
- package/_types/internal/promise.d.ts +27 -0
- package/_types/internal/promise.d.ts.map +1 -0
- package/_types/internal/register.d.ts +13 -0
- package/_types/internal/register.d.ts.map +1 -0
- package/_types/internal/rpcSchema.d.ts +12 -0
- package/_types/internal/rpcSchema.d.ts.map +1 -0
- package/_types/internal/rpcSchemas/eth.d.ts +718 -0
- package/_types/internal/rpcSchemas/eth.d.ts.map +1 -0
- package/_types/internal/rpcSchemas/wallet.d.ts +416 -0
- package/_types/internal/rpcSchemas/wallet.d.ts.map +1 -0
- package/_types/internal/rpcTransport.d.ts +38 -0
- package/_types/internal/rpcTransport.d.ts.map +1 -0
- package/_types/internal/types.d.ts +284 -0
- package/_types/internal/types.d.ts.map +1 -0
- package/_types/internal/uid.d.ts +3 -0
- package/_types/internal/uid.d.ts.map +1 -0
- package/_types/internal/webauthn.d.ts +127 -0
- package/_types/internal/webauthn.d.ts.map +1 -0
- package/_types/trusted-setups/Paths.d.ts +2 -0
- package/_types/trusted-setups/Paths.d.ts.map +1 -0
- package/_types/trusted-setups/index.d.ts +2 -0
- package/_types/trusted-setups/index.d.ts.map +1 -0
- package/_types/trusted-setups/internal/paths.d.ts +3 -0
- package/_types/trusted-setups/internal/paths.d.ts.map +1 -0
- package/_types/version.d.ts +3 -0
- package/_types/version.d.ts.map +1 -0
- package/_types/window/index.d.ts +7 -0
- package/_types/window/index.d.ts.map +1 -0
- package/index.ts +3427 -0
- package/internal/abi.ts +11 -0
- package/internal/abiConstructor.ts +32 -0
- package/internal/abiError.ts +30 -0
- package/internal/abiEvent.ts +154 -0
- package/internal/abiFunction.ts +32 -0
- package/internal/abiItem.ts +593 -0
- package/internal/abiParameters.ts +741 -0
- package/internal/base58.ts +106 -0
- package/internal/bytes.ts +152 -0
- package/internal/cursor.ts +252 -0
- package/internal/ens.ts +64 -0
- package/internal/errors.ts +26 -0
- package/internal/hdKey.ts +25 -0
- package/internal/hex.ts +123 -0
- package/internal/lru.ts +34 -0
- package/internal/mnemonic/wordlists.ts +10 -0
- package/internal/promise.ts +66 -0
- package/internal/register.ts +15 -0
- package/internal/rpcSchema.ts +20 -0
- package/internal/rpcSchemas/eth.ts +727 -0
- package/internal/rpcSchemas/wallet.ts +428 -0
- package/internal/rpcTransport.ts +74 -0
- package/internal/types.ts +414 -0
- package/internal/uid.ts +15 -0
- package/internal/webauthn.ts +198 -0
- package/package.json +500 -20
- package/trusted-setups/Paths/package.json +6 -0
- package/trusted-setups/Paths.ts +3 -0
- package/trusted-setups/index.ts +1 -0
- package/trusted-setups/internal/paths.ts +13 -0
- package/trusted-setups/internal/setups/mainnet.json +8265 -0
- package/trusted-setups/internal/setups/mainnet.txt +4163 -0
- package/trusted-setups/package.json +6 -0
- package/tsdoc.json +4 -0
- package/version/package.json +6 -0
- package/version.ts +2 -0
- package/window/index.ts +7 -0
- package/window/package.json +6 -0
- package/cl/ansiesc.js +0 -25
- package/cl/deps.js +0 -7
- package/cl/editor.js +0 -141
- package/cl/index.html +0 -19
- package/cl/ox.js +0 -44
- package/cl/socket.io.js +0 -1922
- package/cl/style.css +0 -37
- package/srv/deps.js +0 -88
- package/srv/httpSrv.js +0 -82
- package/srv/ox.js +0 -44
- package/srv/remoteXtermReq.js +0 -70
package/Hex.ts
ADDED
|
@@ -0,0 +1,1040 @@
|
|
|
1
|
+
import { equalBytes } from '@noble/curves/abstract/utils'
|
|
2
|
+
import * as Bytes from './Bytes.js'
|
|
3
|
+
import * as Errors from './Errors.js'
|
|
4
|
+
import * as Json from './Json.js'
|
|
5
|
+
import * as internal_bytes from './internal/bytes.js'
|
|
6
|
+
import * as internal from './internal/hex.js'
|
|
7
|
+
|
|
8
|
+
const encoder = /*#__PURE__*/ new TextEncoder()
|
|
9
|
+
|
|
10
|
+
const hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>
|
|
11
|
+
i.toString(16).padStart(2, '0'),
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
/** Root type for a Hex string. */
|
|
15
|
+
export type Hex = `0x${string}`
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Asserts if the given value is {@link ox#Hex.Hex}.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts twoslash
|
|
22
|
+
* import { Hex } from 'ox'
|
|
23
|
+
*
|
|
24
|
+
* Hex.assert('abc')
|
|
25
|
+
* // @error: InvalidHexValueTypeError:
|
|
26
|
+
* // @error: Value `"abc"` of type `string` is an invalid hex type.
|
|
27
|
+
* // @error: Hex types must be represented as `"0x\${string}"`.
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param value - The value to assert.
|
|
31
|
+
* @param options - Options.
|
|
32
|
+
*/
|
|
33
|
+
export function assert(
|
|
34
|
+
value: unknown,
|
|
35
|
+
options: assert.Options = {},
|
|
36
|
+
): asserts value is Hex {
|
|
37
|
+
const { strict = false } = options
|
|
38
|
+
if (!value) throw new InvalidHexTypeError(value)
|
|
39
|
+
if (typeof value !== 'string') throw new InvalidHexTypeError(value)
|
|
40
|
+
if (strict) {
|
|
41
|
+
if (!/^0x[0-9a-fA-F]*$/.test(value)) throw new InvalidHexValueError(value)
|
|
42
|
+
}
|
|
43
|
+
if (!value.startsWith('0x')) throw new InvalidHexValueError(value)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export declare namespace assert {
|
|
47
|
+
type Options = {
|
|
48
|
+
/** Checks if the {@link ox#Hex.Hex} value contains invalid hexadecimal characters. @default false */
|
|
49
|
+
strict?: boolean | undefined
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
type ErrorType =
|
|
53
|
+
| InvalidHexTypeError
|
|
54
|
+
| InvalidHexValueError
|
|
55
|
+
| Errors.GlobalErrorType
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* v8 ignore next */
|
|
59
|
+
assert.parseError = (error: unknown) => error as assert.ErrorType
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Concatenates two or more {@link ox#Hex.Hex}.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts twoslash
|
|
66
|
+
* import { Hex } from 'ox'
|
|
67
|
+
*
|
|
68
|
+
* Hex.concat('0x123', '0x456')
|
|
69
|
+
* // @log: '0x123456'
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @param values - The {@link ox#Hex.Hex} values to concatenate.
|
|
73
|
+
* @returns The concatenated {@link ox#Hex.Hex} value.
|
|
74
|
+
*/
|
|
75
|
+
export function concat(...values: readonly Hex[]): Hex {
|
|
76
|
+
return `0x${(values as Hex[]).reduce((acc, x) => acc + x.replace('0x', ''), '')}`
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export declare namespace concat {
|
|
80
|
+
type ErrorType = Errors.GlobalErrorType
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* v8 ignore next */
|
|
84
|
+
concat.parseError = (error: unknown) => error as concat.ErrorType
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Instantiates a {@link ox#Hex.Hex} value from a hex string or {@link ox#Bytes.Bytes} value.
|
|
88
|
+
*
|
|
89
|
+
* :::tip
|
|
90
|
+
*
|
|
91
|
+
* To instantiate from a **Boolean**, **String**, or **Number**, use one of the following:
|
|
92
|
+
*
|
|
93
|
+
* - `Hex.fromBoolean`
|
|
94
|
+
*
|
|
95
|
+
* - `Hex.fromString`
|
|
96
|
+
*
|
|
97
|
+
* - `Hex.fromNumber`
|
|
98
|
+
*
|
|
99
|
+
* :::
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts twoslash
|
|
103
|
+
* import { Bytes, Hex } from 'ox'
|
|
104
|
+
*
|
|
105
|
+
* Hex.from('0x48656c6c6f20576f726c6421')
|
|
106
|
+
* // @log: '0x48656c6c6f20576f726c6421'
|
|
107
|
+
*
|
|
108
|
+
* Hex.from(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))
|
|
109
|
+
* // @log: '0x48656c6c6f20576f726c6421'
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* @param value - The {@link ox#Bytes.Bytes} value to encode.
|
|
113
|
+
* @returns The encoded {@link ox#Hex.Hex} value.
|
|
114
|
+
*/
|
|
115
|
+
export function from(value: Hex | Bytes.Bytes | readonly number[]): Hex {
|
|
116
|
+
if (value instanceof Uint8Array) return fromBytes(value)
|
|
117
|
+
if (Array.isArray(value)) return fromBytes(new Uint8Array(value))
|
|
118
|
+
return value as never
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export declare namespace from {
|
|
122
|
+
type Options = {
|
|
123
|
+
/** The size (in bytes) of the output hex value. */
|
|
124
|
+
size?: number | undefined
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
type ErrorType = fromBytes.ErrorType | Errors.GlobalErrorType
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* v8 ignore next */
|
|
131
|
+
from.parseError = (error: unknown) => error as from.ErrorType
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Encodes a boolean into a {@link ox#Hex.Hex} value.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```ts twoslash
|
|
138
|
+
* import { Hex } from 'ox'
|
|
139
|
+
*
|
|
140
|
+
* Hex.fromBoolean(true)
|
|
141
|
+
* // @log: '0x1'
|
|
142
|
+
*
|
|
143
|
+
* Hex.fromBoolean(false)
|
|
144
|
+
* // @log: '0x0'
|
|
145
|
+
*
|
|
146
|
+
* Hex.fromBoolean(true, { size: 32 })
|
|
147
|
+
* // @log: '0x0000000000000000000000000000000000000000000000000000000000000001'
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* @param value - The boolean value to encode.
|
|
151
|
+
* @param options - Options.
|
|
152
|
+
* @returns The encoded {@link ox#Hex.Hex} value.
|
|
153
|
+
*/
|
|
154
|
+
export function fromBoolean(
|
|
155
|
+
value: boolean,
|
|
156
|
+
options: fromBoolean.Options = {},
|
|
157
|
+
): Hex {
|
|
158
|
+
const hex: Hex = `0x0${Number(value)}`
|
|
159
|
+
if (typeof options.size === 'number') {
|
|
160
|
+
internal.assertSize(hex, options.size)
|
|
161
|
+
return padLeft(hex, options.size)
|
|
162
|
+
}
|
|
163
|
+
return hex
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export declare namespace fromBoolean {
|
|
167
|
+
type Options = {
|
|
168
|
+
/** The size (in bytes) of the output hex value. */
|
|
169
|
+
size?: number | undefined
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
type ErrorType =
|
|
173
|
+
| internal.assertSize.ErrorType
|
|
174
|
+
| padLeft.ErrorType
|
|
175
|
+
| Errors.GlobalErrorType
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
fromBoolean.parseError = (error: unknown) =>
|
|
179
|
+
/* v8 ignore next */
|
|
180
|
+
error as fromBoolean.ErrorType
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Encodes a {@link ox#Bytes.Bytes} value into a {@link ox#Hex.Hex} value.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts twoslash
|
|
187
|
+
* import { Bytes, Hex } from 'ox'
|
|
188
|
+
*
|
|
189
|
+
* Hex.fromBytes(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))
|
|
190
|
+
* // @log: '0x48656c6c6f20576f726c6421'
|
|
191
|
+
* ```
|
|
192
|
+
*
|
|
193
|
+
* @param value - The {@link ox#Bytes.Bytes} value to encode.
|
|
194
|
+
* @param options - Options.
|
|
195
|
+
* @returns The encoded {@link ox#Hex.Hex} value.
|
|
196
|
+
*/
|
|
197
|
+
export function fromBytes(
|
|
198
|
+
value: Bytes.Bytes,
|
|
199
|
+
options: fromBytes.Options = {},
|
|
200
|
+
): Hex {
|
|
201
|
+
let string = ''
|
|
202
|
+
for (let i = 0; i < value.length; i++) string += hexes[value[i]!]
|
|
203
|
+
const hex = `0x${string}` as const
|
|
204
|
+
|
|
205
|
+
if (typeof options.size === 'number') {
|
|
206
|
+
internal.assertSize(hex, options.size)
|
|
207
|
+
return padRight(hex, options.size)
|
|
208
|
+
}
|
|
209
|
+
return hex
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export declare namespace fromBytes {
|
|
213
|
+
type Options = {
|
|
214
|
+
/** The size (in bytes) of the output hex value. */
|
|
215
|
+
size?: number | undefined
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
type ErrorType =
|
|
219
|
+
| internal.assertSize.ErrorType
|
|
220
|
+
| padRight.ErrorType
|
|
221
|
+
| Errors.GlobalErrorType
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* v8 ignore next */
|
|
225
|
+
fromBytes.parseError = (error: unknown) => error as fromBytes.ErrorType
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Encodes a number or bigint into a {@link ox#Hex.Hex} value.
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts twoslash
|
|
232
|
+
* import { Hex } from 'ox'
|
|
233
|
+
*
|
|
234
|
+
* Hex.fromNumber(420)
|
|
235
|
+
* // @log: '0x1a4'
|
|
236
|
+
*
|
|
237
|
+
* Hex.fromNumber(420, { size: 32 })
|
|
238
|
+
* // @log: '0x00000000000000000000000000000000000000000000000000000000000001a4'
|
|
239
|
+
* ```
|
|
240
|
+
*
|
|
241
|
+
* @param value - The number or bigint value to encode.
|
|
242
|
+
* @param options - Options.
|
|
243
|
+
* @returns The encoded {@link ox#Hex.Hex} value.
|
|
244
|
+
*/
|
|
245
|
+
export function fromNumber(
|
|
246
|
+
value: number | bigint,
|
|
247
|
+
options: fromNumber.Options = {},
|
|
248
|
+
): Hex {
|
|
249
|
+
const { signed, size } = options
|
|
250
|
+
|
|
251
|
+
const value_ = BigInt(value)
|
|
252
|
+
|
|
253
|
+
let maxValue: bigint | number | undefined
|
|
254
|
+
if (size) {
|
|
255
|
+
if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n
|
|
256
|
+
else maxValue = 2n ** (BigInt(size) * 8n) - 1n
|
|
257
|
+
} else if (typeof value === 'number') {
|
|
258
|
+
maxValue = BigInt(Number.MAX_SAFE_INTEGER)
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0
|
|
262
|
+
|
|
263
|
+
if ((maxValue && value_ > maxValue) || value_ < minValue) {
|
|
264
|
+
const suffix = typeof value === 'bigint' ? 'n' : ''
|
|
265
|
+
throw new IntegerOutOfRangeError({
|
|
266
|
+
max: maxValue ? `${maxValue}${suffix}` : undefined,
|
|
267
|
+
min: `${minValue}${suffix}`,
|
|
268
|
+
signed,
|
|
269
|
+
size,
|
|
270
|
+
value: `${value}${suffix}`,
|
|
271
|
+
})
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const stringValue = (
|
|
275
|
+
signed && value_ < 0 ? (1n << BigInt(size * 8)) + BigInt(value_) : value_
|
|
276
|
+
).toString(16)
|
|
277
|
+
|
|
278
|
+
const hex =
|
|
279
|
+
`0x${stringValue.length % 2 === 0 ? stringValue : `0${stringValue}`}` as Hex
|
|
280
|
+
if (size) return padLeft(hex, size) as Hex
|
|
281
|
+
return hex
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export declare namespace fromNumber {
|
|
285
|
+
type Options =
|
|
286
|
+
| {
|
|
287
|
+
/** Whether or not the number of a signed representation. */
|
|
288
|
+
signed?: boolean | undefined
|
|
289
|
+
/** The size (in bytes) of the output hex value. */
|
|
290
|
+
size: number
|
|
291
|
+
}
|
|
292
|
+
| {
|
|
293
|
+
signed?: undefined
|
|
294
|
+
/** The size (in bytes) of the output hex value. */
|
|
295
|
+
size?: number | undefined
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
type ErrorType =
|
|
299
|
+
| IntegerOutOfRangeError
|
|
300
|
+
| padLeft.ErrorType
|
|
301
|
+
| Errors.GlobalErrorType
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
fromNumber.parseError = (error: unknown) =>
|
|
305
|
+
/* v8 ignore next */
|
|
306
|
+
error as fromNumber.ErrorType
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Encodes a string into a {@link ox#Hex.Hex} value.
|
|
310
|
+
*
|
|
311
|
+
* @example
|
|
312
|
+
* ```ts twoslash
|
|
313
|
+
* import { Hex } from 'ox'
|
|
314
|
+
* Hex.fromString('Hello World!')
|
|
315
|
+
* // '0x48656c6c6f20576f726c6421'
|
|
316
|
+
*
|
|
317
|
+
* Hex.fromString('Hello World!', { size: 32 })
|
|
318
|
+
* // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'
|
|
319
|
+
* ```
|
|
320
|
+
*
|
|
321
|
+
* @param value - The string value to encode.
|
|
322
|
+
* @param options - Options.
|
|
323
|
+
* @returns The encoded {@link ox#Hex.Hex} value.
|
|
324
|
+
*/
|
|
325
|
+
export function fromString(
|
|
326
|
+
value: string,
|
|
327
|
+
options: fromString.Options = {},
|
|
328
|
+
): Hex {
|
|
329
|
+
return fromBytes(encoder.encode(value), options)
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export declare namespace fromString {
|
|
333
|
+
type Options = {
|
|
334
|
+
/** The size (in bytes) of the output hex value. */
|
|
335
|
+
size?: number | undefined
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
type ErrorType = fromBytes.ErrorType | Errors.GlobalErrorType
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
fromString.parseError = (error: unknown) =>
|
|
342
|
+
/* v8 ignore next */
|
|
343
|
+
error as fromString.ErrorType
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Checks if two {@link ox#Hex.Hex} values are equal.
|
|
347
|
+
*
|
|
348
|
+
* @example
|
|
349
|
+
* ```ts twoslash
|
|
350
|
+
* import { Hex } from 'ox'
|
|
351
|
+
*
|
|
352
|
+
* Hex.isEqual('0xdeadbeef', '0xdeadbeef')
|
|
353
|
+
* // @log: true
|
|
354
|
+
*
|
|
355
|
+
* Hex.isEqual('0xda', '0xba')
|
|
356
|
+
* // @log: false
|
|
357
|
+
* ```
|
|
358
|
+
*
|
|
359
|
+
* @param hexA - The first {@link ox#Hex.Hex} value.
|
|
360
|
+
* @param hexB - The second {@link ox#Hex.Hex} value.
|
|
361
|
+
* @returns `true` if the two {@link ox#Hex.Hex} values are equal, `false` otherwise.
|
|
362
|
+
*/
|
|
363
|
+
export function isEqual(hexA: Hex, hexB: Hex) {
|
|
364
|
+
return equalBytes(Bytes.fromHex(hexA), Bytes.fromHex(hexB))
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
export declare namespace isEqual {
|
|
368
|
+
type ErrorType = Bytes.fromHex.ErrorType | Errors.GlobalErrorType
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/* v8 ignore next */
|
|
372
|
+
isEqual.parseError = (error: unknown) => error as isEqual.ErrorType
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Pads a {@link ox#Hex.Hex} value to the left with zero bytes until it reaches the given `size` (default: 32 bytes).
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```ts twoslash
|
|
379
|
+
* import { Hex } from 'ox'
|
|
380
|
+
*
|
|
381
|
+
* Hex.padLeft('0x1234', 4)
|
|
382
|
+
* // @log: '0x00001234'
|
|
383
|
+
* ```
|
|
384
|
+
*
|
|
385
|
+
* @param value - The {@link ox#Hex.Hex} value to pad.
|
|
386
|
+
* @param size - The size (in bytes) of the output hex value.
|
|
387
|
+
* @returns The padded {@link ox#Hex.Hex} value.
|
|
388
|
+
*/
|
|
389
|
+
export function padLeft(
|
|
390
|
+
value: Hex,
|
|
391
|
+
size?: number | undefined,
|
|
392
|
+
): padLeft.ReturnType {
|
|
393
|
+
return internal.pad(value, { dir: 'left', size })
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export declare namespace padLeft {
|
|
397
|
+
type ReturnType = Hex
|
|
398
|
+
type ErrorType = internal.pad.ErrorType | Errors.GlobalErrorType
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* v8 ignore next */
|
|
402
|
+
padLeft.parseError = (error: unknown) => error as padLeft.ErrorType
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Pads a {@link ox#Hex.Hex} value to the right with zero bytes until it reaches the given `size` (default: 32 bytes).
|
|
406
|
+
*
|
|
407
|
+
* @example
|
|
408
|
+
* ```ts
|
|
409
|
+
* import { Hex } from 'ox'
|
|
410
|
+
*
|
|
411
|
+
* Hex.padRight('0x1234', 4)
|
|
412
|
+
* // @log: '0x12340000'
|
|
413
|
+
* ```
|
|
414
|
+
*
|
|
415
|
+
* @param value - The {@link ox#Hex.Hex} value to pad.
|
|
416
|
+
* @param size - The size (in bytes) of the output hex value.
|
|
417
|
+
* @returns The padded {@link ox#Hex.Hex} value.
|
|
418
|
+
*/
|
|
419
|
+
export function padRight(
|
|
420
|
+
value: Hex,
|
|
421
|
+
size?: number | undefined,
|
|
422
|
+
): padRight.ReturnType {
|
|
423
|
+
return internal.pad(value, { dir: 'right', size })
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
export declare namespace padRight {
|
|
427
|
+
type ReturnType = Hex
|
|
428
|
+
type ErrorType = internal.pad.ErrorType | Errors.GlobalErrorType
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/* v8 ignore next */
|
|
432
|
+
padRight.parseError = (error: unknown) => error as padRight.ErrorType
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Generates a random {@link ox#Hex.Hex} value of the specified length.
|
|
436
|
+
*
|
|
437
|
+
* @example
|
|
438
|
+
* ```ts twoslash
|
|
439
|
+
* import { Hex } from 'ox'
|
|
440
|
+
*
|
|
441
|
+
* const hex = Hex.random(32)
|
|
442
|
+
* // @log: '0x...'
|
|
443
|
+
* ```
|
|
444
|
+
*
|
|
445
|
+
* @returns Random {@link ox#Hex.Hex} value.
|
|
446
|
+
*/
|
|
447
|
+
export function random(length: number): Hex {
|
|
448
|
+
return fromBytes(Bytes.random(length))
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
export declare namespace random {
|
|
452
|
+
type ErrorType = Errors.GlobalErrorType
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/* v8 ignore next */
|
|
456
|
+
random.parseError = (error: unknown) => error as random.ErrorType
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Returns a section of a {@link ox#Bytes.Bytes} value given a start/end bytes offset.
|
|
460
|
+
*
|
|
461
|
+
* @example
|
|
462
|
+
* ```ts twoslash
|
|
463
|
+
* import { Hex } from 'ox'
|
|
464
|
+
*
|
|
465
|
+
* Hex.slice('0x0123456789', 1, 4)
|
|
466
|
+
* // @log: '0x234567'
|
|
467
|
+
* ```
|
|
468
|
+
*
|
|
469
|
+
* @param value - The {@link ox#Hex.Hex} value to slice.
|
|
470
|
+
* @param start - The start offset (in bytes).
|
|
471
|
+
* @param end - The end offset (in bytes).
|
|
472
|
+
* @param options - Options.
|
|
473
|
+
* @returns The sliced {@link ox#Hex.Hex} value.
|
|
474
|
+
*/
|
|
475
|
+
export function slice(
|
|
476
|
+
value: Hex,
|
|
477
|
+
start?: number | undefined,
|
|
478
|
+
end?: number | undefined,
|
|
479
|
+
options: slice.Options = {},
|
|
480
|
+
): Hex {
|
|
481
|
+
const { strict } = options
|
|
482
|
+
internal.assertStartOffset(value, start)
|
|
483
|
+
const value_ = `0x${value
|
|
484
|
+
.replace('0x', '')
|
|
485
|
+
.slice((start ?? 0) * 2, (end ?? value.length) * 2)}` as const
|
|
486
|
+
if (strict) internal.assertEndOffset(value_, start, end)
|
|
487
|
+
return value_
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
export declare namespace slice {
|
|
491
|
+
type Options = {
|
|
492
|
+
/** Asserts that the sliced value is the same size as the given start/end offsets. */
|
|
493
|
+
strict?: boolean | undefined
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
type ErrorType =
|
|
497
|
+
| internal.assertStartOffset.ErrorType
|
|
498
|
+
| internal.assertEndOffset.ErrorType
|
|
499
|
+
| Errors.GlobalErrorType
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/* v8 ignore next */
|
|
503
|
+
slice.parseError = (error: unknown) => error as slice.ErrorType
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Retrieves the size of a {@link ox#Hex.Hex} value (in bytes).
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```ts twoslash
|
|
510
|
+
* import { Hex } from 'ox'
|
|
511
|
+
*
|
|
512
|
+
* Hex.size('0xdeadbeef')
|
|
513
|
+
* // @log: 4
|
|
514
|
+
* ```
|
|
515
|
+
*
|
|
516
|
+
* @param value - The {@link ox#Hex.Hex} value to get the size of.
|
|
517
|
+
* @returns The size of the {@link ox#Hex.Hex} value (in bytes).
|
|
518
|
+
*/
|
|
519
|
+
export function size(value: Hex): number {
|
|
520
|
+
return Math.ceil((value.length - 2) / 2)
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
export declare namespace size {
|
|
524
|
+
export type ErrorType = Errors.GlobalErrorType
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/* v8 ignore next */
|
|
528
|
+
size.parseError = (error: unknown) => error as size.ErrorType
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Trims leading zeros from a {@link ox#Hex.Hex} value.
|
|
532
|
+
*
|
|
533
|
+
* @example
|
|
534
|
+
* ```ts twoslash
|
|
535
|
+
* import { Hex } from 'ox'
|
|
536
|
+
*
|
|
537
|
+
* Hex.trimLeft('0x00000000deadbeef')
|
|
538
|
+
* // @log: '0xdeadbeef'
|
|
539
|
+
* ```
|
|
540
|
+
*
|
|
541
|
+
* @param value - The {@link ox#Hex.Hex} value to trim.
|
|
542
|
+
* @returns The trimmed {@link ox#Hex.Hex} value.
|
|
543
|
+
*/
|
|
544
|
+
export function trimLeft(value: Hex): trimLeft.ReturnType {
|
|
545
|
+
return internal.trim(value, { dir: 'left' })
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
export declare namespace trimLeft {
|
|
549
|
+
type ReturnType = Hex
|
|
550
|
+
|
|
551
|
+
type ErrorType = internal.trim.ErrorType | Errors.GlobalErrorType
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/* v8 ignore next */
|
|
555
|
+
trimLeft.parseError = (error: unknown) => error as trimLeft.ErrorType
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* Trims trailing zeros from a {@link ox#Hex.Hex} value.
|
|
559
|
+
*
|
|
560
|
+
* @example
|
|
561
|
+
* ```ts twoslash
|
|
562
|
+
* import { Hex } from 'ox'
|
|
563
|
+
*
|
|
564
|
+
* Hex.trimRight('0xdeadbeef00000000')
|
|
565
|
+
* // @log: '0xdeadbeef'
|
|
566
|
+
* ```
|
|
567
|
+
*
|
|
568
|
+
* @param value - The {@link ox#Hex.Hex} value to trim.
|
|
569
|
+
* @returns The trimmed {@link ox#Hex.Hex} value.
|
|
570
|
+
*/
|
|
571
|
+
export function trimRight(value: Hex): trimRight.ReturnType {
|
|
572
|
+
return internal.trim(value, { dir: 'right' })
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
export declare namespace trimRight {
|
|
576
|
+
type ReturnType = Hex
|
|
577
|
+
|
|
578
|
+
type ErrorType = internal.trim.ErrorType | Errors.GlobalErrorType
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
/* v8 ignore next */
|
|
582
|
+
trimRight.parseError = (error: unknown) => error as trimRight.ErrorType
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Decodes a {@link ox#Hex.Hex} value into a BigInt.
|
|
586
|
+
*
|
|
587
|
+
* @example
|
|
588
|
+
* ```ts twoslash
|
|
589
|
+
* import { Hex } from 'ox'
|
|
590
|
+
*
|
|
591
|
+
* Hex.toBigInt('0x1a4')
|
|
592
|
+
* // @log: 420n
|
|
593
|
+
*
|
|
594
|
+
* Hex.toBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })
|
|
595
|
+
* // @log: 420n
|
|
596
|
+
* ```
|
|
597
|
+
*
|
|
598
|
+
* @param hex - The {@link ox#Hex.Hex} value to decode.
|
|
599
|
+
* @param options - Options.
|
|
600
|
+
* @returns The decoded BigInt.
|
|
601
|
+
*/
|
|
602
|
+
export function toBigInt(hex: Hex, options: toBigInt.Options = {}): bigint {
|
|
603
|
+
const { signed } = options
|
|
604
|
+
|
|
605
|
+
if (options.size) internal.assertSize(hex, options.size)
|
|
606
|
+
|
|
607
|
+
const value = BigInt(hex)
|
|
608
|
+
if (!signed) return value
|
|
609
|
+
|
|
610
|
+
const size = (hex.length - 2) / 2
|
|
611
|
+
|
|
612
|
+
const max_unsigned = (1n << (BigInt(size) * 8n)) - 1n
|
|
613
|
+
const max_signed = max_unsigned >> 1n
|
|
614
|
+
|
|
615
|
+
if (value <= max_signed) return value
|
|
616
|
+
return value - max_unsigned - 1n
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
export declare namespace toBigInt {
|
|
620
|
+
type Options = {
|
|
621
|
+
/** Whether or not the number of a signed representation. */
|
|
622
|
+
signed?: boolean | undefined
|
|
623
|
+
/** Size (in bytes) of the hex value. */
|
|
624
|
+
size?: number | undefined
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
type ErrorType = internal.assertSize.ErrorType | Errors.GlobalErrorType
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/* v8 ignore next */
|
|
631
|
+
toBigInt.parseError = (error: unknown) => error as toBigInt.ErrorType
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Decodes a {@link ox#Hex.Hex} value into a boolean.
|
|
635
|
+
*
|
|
636
|
+
* @example
|
|
637
|
+
* ```ts twoslash
|
|
638
|
+
* import { Hex } from 'ox'
|
|
639
|
+
*
|
|
640
|
+
* Hex.toBoolean('0x01')
|
|
641
|
+
* // @log: true
|
|
642
|
+
*
|
|
643
|
+
* Hex.toBoolean('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })
|
|
644
|
+
* // @log: true
|
|
645
|
+
* ```
|
|
646
|
+
*
|
|
647
|
+
* @param hex - The {@link ox#Hex.Hex} value to decode.
|
|
648
|
+
* @param options - Options.
|
|
649
|
+
* @returns The decoded boolean.
|
|
650
|
+
*/
|
|
651
|
+
export function toBoolean(hex: Hex, options: toBoolean.Options = {}): boolean {
|
|
652
|
+
let hex_ = hex
|
|
653
|
+
if (options.size) {
|
|
654
|
+
internal.assertSize(hex, options.size)
|
|
655
|
+
hex_ = trimLeft(hex_)
|
|
656
|
+
}
|
|
657
|
+
if (trimLeft(hex_) === '0x00') return false
|
|
658
|
+
if (trimLeft(hex_) === '0x01') return true
|
|
659
|
+
throw new InvalidHexBooleanError(hex_)
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
export declare namespace toBoolean {
|
|
663
|
+
type Options = {
|
|
664
|
+
/** Size (in bytes) of the hex value. */
|
|
665
|
+
size?: number | undefined
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
type ErrorType =
|
|
669
|
+
| internal.assertSize.ErrorType
|
|
670
|
+
| trimLeft.ErrorType
|
|
671
|
+
| InvalidHexBooleanError
|
|
672
|
+
| Errors.GlobalErrorType
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/* v8 ignore next */
|
|
676
|
+
toBoolean.parseError = (error: unknown) => error as toBoolean.ErrorType
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* Decodes a {@link ox#Hex.Hex} value into a {@link ox#Bytes.Bytes}.
|
|
680
|
+
*
|
|
681
|
+
* @example
|
|
682
|
+
* ```ts twoslash
|
|
683
|
+
* import { Hex } from 'ox'
|
|
684
|
+
*
|
|
685
|
+
* const data = Hex.toBytes('0x48656c6c6f20776f726c6421')
|
|
686
|
+
* // @log: Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])
|
|
687
|
+
* ```
|
|
688
|
+
*
|
|
689
|
+
* @param hex - The {@link ox#Hex.Hex} value to decode.
|
|
690
|
+
* @param options - Options.
|
|
691
|
+
* @returns The decoded {@link ox#Bytes.Bytes}.
|
|
692
|
+
*/
|
|
693
|
+
export function toBytes(hex: Hex, options: toBytes.Options = {}): Bytes.Bytes {
|
|
694
|
+
return Bytes.fromHex(hex, options)
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
export declare namespace toBytes {
|
|
698
|
+
type Options = {
|
|
699
|
+
/** Size (in bytes) of the hex value. */
|
|
700
|
+
size?: number | undefined
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
type ErrorType = Bytes.fromHex.ErrorType | Errors.GlobalErrorType
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/* v8 ignore next */
|
|
707
|
+
toBytes.parseError = (error: unknown) => error as toBytes.ErrorType
|
|
708
|
+
|
|
709
|
+
/**
|
|
710
|
+
* Decodes a {@link ox#Hex.Hex} value into a number.
|
|
711
|
+
*
|
|
712
|
+
* @example
|
|
713
|
+
* ```ts twoslash
|
|
714
|
+
* import { Hex } from 'ox'
|
|
715
|
+
*
|
|
716
|
+
* Hex.toNumber('0x1a4')
|
|
717
|
+
* // @log: 420
|
|
718
|
+
*
|
|
719
|
+
* Hex.toNumber('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })
|
|
720
|
+
* // @log: 420
|
|
721
|
+
* ```
|
|
722
|
+
*
|
|
723
|
+
* @param hex - The {@link ox#Hex.Hex} value to decode.
|
|
724
|
+
* @param options - Options.
|
|
725
|
+
* @returns The decoded number.
|
|
726
|
+
*/
|
|
727
|
+
export function toNumber(hex: Hex, options: toNumber.Options = {}): number {
|
|
728
|
+
const { signed, size } = options
|
|
729
|
+
if (!signed && !size) return Number(hex)
|
|
730
|
+
return Number(toBigInt(hex, options))
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
export declare namespace toNumber {
|
|
734
|
+
type Options = toBigInt.Options
|
|
735
|
+
|
|
736
|
+
type ErrorType = toBigInt.ErrorType | Errors.GlobalErrorType
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
/* v8 ignore next */
|
|
740
|
+
toNumber.parseError = (error: unknown) => error as toNumber.ErrorType
|
|
741
|
+
|
|
742
|
+
/**
|
|
743
|
+
* Decodes a {@link ox#Hex.Hex} value into a string.
|
|
744
|
+
*
|
|
745
|
+
* @example
|
|
746
|
+
* ```ts twoslash
|
|
747
|
+
* import { Hex } from 'ox'
|
|
748
|
+
*
|
|
749
|
+
* Hex.toString('0x48656c6c6f20576f726c6421')
|
|
750
|
+
* // @log: 'Hello world!'
|
|
751
|
+
*
|
|
752
|
+
* Hex.toString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {
|
|
753
|
+
* size: 32,
|
|
754
|
+
* })
|
|
755
|
+
* // @log: 'Hello world'
|
|
756
|
+
* ```
|
|
757
|
+
*
|
|
758
|
+
* @param hex - The {@link ox#Hex.Hex} value to decode.
|
|
759
|
+
* @param options - Options.
|
|
760
|
+
* @returns The decoded string.
|
|
761
|
+
*/
|
|
762
|
+
export function toString(hex: Hex, options: toString.Options = {}): string {
|
|
763
|
+
const { size } = options
|
|
764
|
+
|
|
765
|
+
let bytes = Bytes.fromHex(hex)
|
|
766
|
+
if (size) {
|
|
767
|
+
internal_bytes.assertSize(bytes, size)
|
|
768
|
+
bytes = Bytes.trimRight(bytes)
|
|
769
|
+
}
|
|
770
|
+
return new TextDecoder().decode(bytes)
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
export declare namespace toString {
|
|
774
|
+
type Options = {
|
|
775
|
+
/** Size (in bytes) of the hex value. */
|
|
776
|
+
size?: number | undefined
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
type ErrorType =
|
|
780
|
+
| internal_bytes.assertSize.ErrorType
|
|
781
|
+
| Bytes.fromHex.ErrorType
|
|
782
|
+
| Bytes.trimRight.ErrorType
|
|
783
|
+
| Errors.GlobalErrorType
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
/* v8 ignore next */
|
|
787
|
+
toString.parseError = (error: unknown) => error as toString.ErrorType
|
|
788
|
+
|
|
789
|
+
/**
|
|
790
|
+
* Checks if the given value is {@link ox#Hex.Hex}.
|
|
791
|
+
*
|
|
792
|
+
* @example
|
|
793
|
+
* ```ts twoslash
|
|
794
|
+
* import { Bytes, Hex } from 'ox'
|
|
795
|
+
*
|
|
796
|
+
* Hex.validate('0xdeadbeef')
|
|
797
|
+
* // @log: true
|
|
798
|
+
*
|
|
799
|
+
* Hex.validate(Bytes.from([1, 2, 3]))
|
|
800
|
+
* // @log: false
|
|
801
|
+
* ```
|
|
802
|
+
*
|
|
803
|
+
* @param value - The value to check.
|
|
804
|
+
* @param options - Options.
|
|
805
|
+
* @returns `true` if the value is a {@link ox#Hex.Hex}, `false` otherwise.
|
|
806
|
+
*/
|
|
807
|
+
export function validate(
|
|
808
|
+
value: unknown,
|
|
809
|
+
options: validate.Options = {},
|
|
810
|
+
): value is Hex {
|
|
811
|
+
const { strict = false } = options
|
|
812
|
+
try {
|
|
813
|
+
assert(value, { strict })
|
|
814
|
+
return true
|
|
815
|
+
} catch {
|
|
816
|
+
return false
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
export declare namespace validate {
|
|
821
|
+
type Options = {
|
|
822
|
+
/** Checks if the {@link ox#Hex.Hex} value contains invalid hexadecimal characters. @default false */
|
|
823
|
+
strict?: boolean | undefined
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
type ErrorType = Errors.GlobalErrorType
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
/* v8 ignore next */
|
|
830
|
+
validate.parseError = (error: unknown) => error as validate.ErrorType
|
|
831
|
+
|
|
832
|
+
/**
|
|
833
|
+
* Thrown when the provided integer is out of range, and cannot be represented as a hex value.
|
|
834
|
+
*
|
|
835
|
+
* @example
|
|
836
|
+
* ```ts twoslash
|
|
837
|
+
* import { Hex } from 'ox'
|
|
838
|
+
*
|
|
839
|
+
* Hex.fromNumber(420182738912731283712937129)
|
|
840
|
+
* // @error: Hex.IntegerOutOfRangeError: Number \`4.2018273891273126e+26\` is not in safe unsigned integer range (`0` to `9007199254740991`)
|
|
841
|
+
* ```
|
|
842
|
+
*/
|
|
843
|
+
export class IntegerOutOfRangeError extends Errors.BaseError {
|
|
844
|
+
override readonly name = 'Hex.IntegerOutOfRangeError'
|
|
845
|
+
|
|
846
|
+
constructor({
|
|
847
|
+
max,
|
|
848
|
+
min,
|
|
849
|
+
signed,
|
|
850
|
+
size,
|
|
851
|
+
value,
|
|
852
|
+
}: {
|
|
853
|
+
max?: string | undefined
|
|
854
|
+
min: string
|
|
855
|
+
signed?: boolean | undefined
|
|
856
|
+
size?: number | undefined
|
|
857
|
+
value: string
|
|
858
|
+
}) {
|
|
859
|
+
super(
|
|
860
|
+
`Number \`${value}\` is not in safe${
|
|
861
|
+
size ? ` ${size * 8}-bit` : ''
|
|
862
|
+
}${signed ? ' signed' : ' unsigned'} integer range ${max ? `(\`${min}\` to \`${max}\`)` : `(above \`${min}\`)`}`,
|
|
863
|
+
)
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
/**
|
|
868
|
+
* Thrown when the provided hex value cannot be represented as a boolean.
|
|
869
|
+
*
|
|
870
|
+
* @example
|
|
871
|
+
* ```ts twoslash
|
|
872
|
+
* import { Hex } from 'ox'
|
|
873
|
+
*
|
|
874
|
+
* Hex.toBoolean('0xa')
|
|
875
|
+
* // @error: Hex.InvalidHexBooleanError: Hex value `"0xa"` is not a valid boolean.
|
|
876
|
+
* // @error: The hex value must be `"0x0"` (false) or `"0x1"` (true).
|
|
877
|
+
* ```
|
|
878
|
+
*/
|
|
879
|
+
export class InvalidHexBooleanError extends Errors.BaseError {
|
|
880
|
+
override readonly name = 'Hex.InvalidHexBooleanError'
|
|
881
|
+
|
|
882
|
+
constructor(hex: Hex) {
|
|
883
|
+
super(`Hex value \`"${hex}"\` is not a valid boolean.`, {
|
|
884
|
+
metaMessages: [
|
|
885
|
+
'The hex value must be `"0x0"` (false) or `"0x1"` (true).',
|
|
886
|
+
],
|
|
887
|
+
})
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
/**
|
|
892
|
+
* Thrown when the provided value is not a valid hex type.
|
|
893
|
+
*
|
|
894
|
+
* @example
|
|
895
|
+
* ```ts twoslash
|
|
896
|
+
* import { Hex } from 'ox'
|
|
897
|
+
*
|
|
898
|
+
* Hex.assert(1)
|
|
899
|
+
* // @error: Hex.InvalidHexTypeError: Value `1` of type `number` is an invalid hex type.
|
|
900
|
+
* ```
|
|
901
|
+
*/
|
|
902
|
+
export class InvalidHexTypeError extends Errors.BaseError {
|
|
903
|
+
override readonly name = 'Hex.InvalidHexTypeError'
|
|
904
|
+
|
|
905
|
+
constructor(value: unknown) {
|
|
906
|
+
super(
|
|
907
|
+
`Value \`${typeof value === 'object' ? Json.stringify(value) : value}\` of type \`${typeof value}\` is an invalid hex type.`,
|
|
908
|
+
{
|
|
909
|
+
metaMessages: ['Hex types must be represented as `"0x${string}"`.'],
|
|
910
|
+
},
|
|
911
|
+
)
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
/**
|
|
916
|
+
* Thrown when the provided hex value is invalid.
|
|
917
|
+
*
|
|
918
|
+
* @example
|
|
919
|
+
* ```ts twoslash
|
|
920
|
+
* import { Hex } from 'ox'
|
|
921
|
+
*
|
|
922
|
+
* Hex.assert('0x0123456789abcdefg')
|
|
923
|
+
* // @error: Hex.InvalidHexValueError: Value `0x0123456789abcdefg` is an invalid hex value.
|
|
924
|
+
* // @error: Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).
|
|
925
|
+
* ```
|
|
926
|
+
*/
|
|
927
|
+
export class InvalidHexValueError extends Errors.BaseError {
|
|
928
|
+
override readonly name = 'Hex.InvalidHexValueError'
|
|
929
|
+
|
|
930
|
+
constructor(value: unknown) {
|
|
931
|
+
super(`Value \`${value}\` is an invalid hex value.`, {
|
|
932
|
+
metaMessages: [
|
|
933
|
+
'Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).',
|
|
934
|
+
],
|
|
935
|
+
})
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
/**
|
|
940
|
+
* Thrown when the provided hex value is an odd length.
|
|
941
|
+
*
|
|
942
|
+
* @example
|
|
943
|
+
* ```ts twoslash
|
|
944
|
+
* import { Bytes } from 'ox'
|
|
945
|
+
*
|
|
946
|
+
* Bytes.fromHex('0xabcde')
|
|
947
|
+
* // @error: Hex.InvalidLengthError: Hex value `"0xabcde"` is an odd length (5 nibbles).
|
|
948
|
+
* ```
|
|
949
|
+
*/
|
|
950
|
+
export class InvalidLengthError extends Errors.BaseError {
|
|
951
|
+
override readonly name = 'Hex.InvalidLengthError'
|
|
952
|
+
|
|
953
|
+
constructor(value: Hex) {
|
|
954
|
+
super(
|
|
955
|
+
`Hex value \`"${value}"\` is an odd length (${value.length - 2} nibbles).`,
|
|
956
|
+
{
|
|
957
|
+
metaMessages: ['It must be an even length.'],
|
|
958
|
+
},
|
|
959
|
+
)
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* Thrown when the size of the value exceeds the expected max size.
|
|
965
|
+
*
|
|
966
|
+
* @example
|
|
967
|
+
* ```ts twoslash
|
|
968
|
+
* import { Hex } from 'ox'
|
|
969
|
+
*
|
|
970
|
+
* Hex.fromString('Hello World!', { size: 8 })
|
|
971
|
+
* // @error: Hex.SizeOverflowError: Size cannot exceed `8` bytes. Given size: `12` bytes.
|
|
972
|
+
* ```
|
|
973
|
+
*/
|
|
974
|
+
export class SizeOverflowError extends Errors.BaseError {
|
|
975
|
+
override readonly name = 'Hex.SizeOverflowError'
|
|
976
|
+
|
|
977
|
+
constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {
|
|
978
|
+
super(
|
|
979
|
+
`Size cannot exceed \`${maxSize}\` bytes. Given size: \`${givenSize}\` bytes.`,
|
|
980
|
+
)
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
/**
|
|
985
|
+
* Thrown when the slice offset exceeds the bounds of the value.
|
|
986
|
+
*
|
|
987
|
+
* @example
|
|
988
|
+
* ```ts twoslash
|
|
989
|
+
* import { Hex } from 'ox'
|
|
990
|
+
*
|
|
991
|
+
* Hex.slice('0x0123456789', 6)
|
|
992
|
+
* // @error: Hex.SliceOffsetOutOfBoundsError: Slice starting at offset `6` is out-of-bounds (size: `5`).
|
|
993
|
+
* ```
|
|
994
|
+
*/
|
|
995
|
+
export class SliceOffsetOutOfBoundsError extends Errors.BaseError {
|
|
996
|
+
override readonly name = 'Hex.SliceOffsetOutOfBoundsError'
|
|
997
|
+
|
|
998
|
+
constructor({
|
|
999
|
+
offset,
|
|
1000
|
+
position,
|
|
1001
|
+
size,
|
|
1002
|
+
}: { offset: number; position: 'start' | 'end'; size: number }) {
|
|
1003
|
+
super(
|
|
1004
|
+
`Slice ${
|
|
1005
|
+
position === 'start' ? 'starting' : 'ending'
|
|
1006
|
+
} at offset \`${offset}\` is out-of-bounds (size: \`${size}\`).`,
|
|
1007
|
+
)
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
/**
|
|
1012
|
+
* Thrown when the size of the value exceeds the pad size.
|
|
1013
|
+
*
|
|
1014
|
+
* @example
|
|
1015
|
+
* ```ts twoslash
|
|
1016
|
+
* import { Hex } from 'ox'
|
|
1017
|
+
*
|
|
1018
|
+
* Hex.padLeft('0x1a4e12a45a21323123aaa87a897a897a898a6567a578a867a98778a667a85a875a87a6a787a65a675a6a9', 32)
|
|
1019
|
+
* // @error: Hex.SizeExceedsPaddingSizeError: Hex size (`43`) exceeds padding size (`32`).
|
|
1020
|
+
* ```
|
|
1021
|
+
*/
|
|
1022
|
+
export class SizeExceedsPaddingSizeError extends Errors.BaseError {
|
|
1023
|
+
override readonly name = 'Hex.SizeExceedsPaddingSizeError'
|
|
1024
|
+
|
|
1025
|
+
constructor({
|
|
1026
|
+
size,
|
|
1027
|
+
targetSize,
|
|
1028
|
+
type,
|
|
1029
|
+
}: {
|
|
1030
|
+
size: number
|
|
1031
|
+
targetSize: number
|
|
1032
|
+
type: 'Hex' | 'Bytes'
|
|
1033
|
+
}) {
|
|
1034
|
+
super(
|
|
1035
|
+
`${type.charAt(0).toUpperCase()}${type
|
|
1036
|
+
.slice(1)
|
|
1037
|
+
.toLowerCase()} size (\`${size}\`) exceeds padding size (\`${targetSize}\`).`,
|
|
1038
|
+
)
|
|
1039
|
+
}
|
|
1040
|
+
}
|