@prb/effect-evm 1.0.0-beta.1 → 1.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DOCS.md +13 -0
- package/README.md +4 -0
- package/dist/abi/erc165.js.map +1 -1
- package/dist/abi/erc20-no-output.js.map +1 -1
- package/dist/abi/erc20.js.map +1 -1
- package/dist/abi/erc721.js.map +1 -1
- package/dist/abi/index.js.map +1 -1
- package/dist/balance/index.js.map +1 -1
- package/dist/balance/service.js.map +1 -1
- package/dist/balance/service.test.integration.d.ts +2 -0
- package/dist/balance/service.test.integration.d.ts.map +1 -0
- package/dist/balance/service.test.integration.js +289 -0
- package/dist/balance/service.test.integration.js.map +1 -0
- package/dist/balance/utils.js.map +1 -1
- package/dist/block/errors.js.map +1 -1
- package/dist/block/index.js.map +1 -1
- package/dist/block/service.js.map +1 -1
- package/dist/block/service.test.integration.d.ts +2 -0
- package/dist/block/service.test.integration.d.ts.map +1 -0
- package/dist/block/service.test.integration.js +190 -0
- package/dist/block/service.test.integration.js.map +1 -0
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -5
- package/dist/constants/index.js.map +1 -1
- package/dist/contract/cross-chain-reader.js.map +1 -1
- package/dist/contract/index.js.map +1 -1
- package/dist/contract/pipeline/index.js.map +1 -1
- package/dist/contract/pipeline/internal/core.d.ts +2 -2
- package/dist/contract/pipeline/internal/core.d.ts.map +1 -1
- package/dist/contract/pipeline/internal/core.js.map +1 -1
- package/dist/contract/pipeline/internal/helpers.js.map +1 -1
- package/dist/contract/pipeline/internal/nonce.js.map +1 -1
- package/dist/contract/pipeline/internal/prepare.js.map +1 -1
- package/dist/contract/pipeline/internal/receipt.d.ts +2 -2
- package/dist/contract/pipeline/internal/receipt.d.ts.map +1 -1
- package/dist/contract/pipeline/internal/receipt.js +1 -1
- package/dist/contract/pipeline/internal/receipt.js.map +1 -1
- package/dist/contract/pipeline/live.js.map +1 -1
- package/dist/contract/pipeline/service.d.ts +3 -3
- package/dist/contract/pipeline/service.d.ts.map +1 -1
- package/dist/contract/pipeline/service.js.map +1 -1
- package/dist/contract/pipeline/types.d.ts +2 -2
- package/dist/contract/pipeline/types.d.ts.map +1 -1
- package/dist/contract/pipeline/types.js.map +1 -1
- package/dist/contract/pipeline/write-and-track.d.ts.map +1 -1
- package/dist/contract/pipeline/write-and-track.js +5 -6
- package/dist/contract/pipeline/write-and-track.js.map +1 -1
- package/dist/contract/pipeline/write-and-wait.d.ts +1 -1
- package/dist/contract/pipeline/write-and-wait.d.ts.map +1 -1
- package/dist/contract/pipeline/write-and-wait.js.map +1 -1
- package/dist/contract/pipeline.js.map +1 -1
- package/dist/contract/reader.js.map +1 -1
- package/dist/contract/typed-contract.js.map +1 -1
- package/dist/contract/writer.js.map +1 -1
- package/dist/core/clients/index.js.map +1 -1
- package/dist/core/clients/public-client.js.map +1 -1
- package/dist/core/clients/wallet-client.js.map +1 -1
- package/dist/core/errors/client.js.map +1 -1
- package/dist/core/errors/contract.js.map +1 -1
- package/dist/core/errors/erc20.js.map +1 -1
- package/dist/core/errors/event.js.map +1 -1
- package/dist/core/errors/index.js.map +1 -1
- package/dist/core/errors/predicates.js.map +1 -1
- package/dist/core/errors/transaction.d.ts +7 -7
- package/dist/core/errors/transaction.d.ts.map +1 -1
- package/dist/core/errors/transaction.js +2 -2
- package/dist/core/errors/transaction.js.map +1 -1
- package/dist/core/errors/viem-mapper.d.ts +3 -3
- package/dist/core/errors/viem-mapper.d.ts.map +1 -1
- package/dist/core/errors/viem-mapper.js +14 -5
- package/dist/core/errors/viem-mapper.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/deploy/errors.js.map +1 -1
- package/dist/deploy/index.js.map +1 -1
- package/dist/deploy/service.d.ts +3 -3
- package/dist/deploy/service.d.ts.map +1 -1
- package/dist/deploy/service.js.map +1 -1
- package/dist/eip7702/erc7579.js.map +1 -1
- package/dist/eip7702/errors.d.ts +3 -3
- package/dist/eip7702/errors.d.ts.map +1 -1
- package/dist/eip7702/errors.js +1 -1
- package/dist/eip7702/errors.js.map +1 -1
- package/dist/eip7702/index.js.map +1 -1
- package/dist/eip7702/service.d.ts +8 -8
- package/dist/eip7702/service.d.ts.map +1 -1
- package/dist/eip7702/service.js +2 -2
- package/dist/eip7702/service.js.map +1 -1
- package/dist/ens/ens.d.ts.map +1 -1
- package/dist/ens/ens.js +6 -6
- package/dist/ens/ens.js.map +1 -1
- package/dist/ens/errors.js.map +1 -1
- package/dist/ens/index.js.map +1 -1
- package/dist/erc20/allowance/core.js.map +1 -1
- package/dist/erc20/allowance/index.js.map +1 -1
- package/dist/erc20/allowance/no-output.js.map +1 -1
- package/dist/erc20/allowance/types.js.map +1 -1
- package/dist/erc20/index.d.ts +1 -0
- package/dist/erc20/index.d.ts.map +1 -1
- package/dist/erc20/index.js +1 -0
- package/dist/erc20/index.js.map +1 -1
- package/dist/erc20/metadata.d.ts +16 -0
- package/dist/erc20/metadata.d.ts.map +1 -0
- package/dist/erc20/metadata.js +67 -0
- package/dist/erc20/metadata.js.map +1 -0
- package/dist/erc721/errors.js.map +1 -1
- package/dist/erc721/helpers.js.map +1 -1
- package/dist/erc721/index.js.map +1 -1
- package/dist/erc721/metadata.js.map +1 -1
- package/dist/erc721/service.js.map +1 -1
- package/dist/events/backfill.js.map +1 -1
- package/dist/events/backfill.test.integration.d.ts +2 -0
- package/dist/events/backfill.test.integration.d.ts.map +1 -0
- package/dist/events/backfill.test.integration.js +112 -0
- package/dist/events/backfill.test.integration.js.map +1 -0
- package/dist/events/cursor.js.map +1 -1
- package/dist/events/decoder.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/reliable-stream-simple.test.integration.d.ts +2 -0
- package/dist/events/reliable-stream-simple.test.integration.d.ts.map +1 -0
- package/dist/events/reliable-stream-simple.test.integration.js +22 -0
- package/dist/events/reliable-stream-simple.test.integration.js.map +1 -0
- package/dist/events/reliable-stream.js.map +1 -1
- package/dist/events/reliable-stream.test.integration.d.ts +2 -0
- package/dist/events/reliable-stream.test.integration.d.ts.map +1 -0
- package/dist/events/reliable-stream.test.integration.js +327 -0
- package/dist/events/reliable-stream.test.integration.js.map +1 -0
- package/dist/events/stream.js.map +1 -1
- package/dist/events/stream.test.integration.d.ts +2 -0
- package/dist/events/stream.test.integration.d.ts.map +1 -0
- package/dist/events/stream.test.integration.js +120 -0
- package/dist/events/stream.test.integration.js.map +1 -0
- package/dist/gas/errors.js.map +1 -1
- package/dist/gas/estimator.d.ts.map +1 -1
- package/dist/gas/estimator.js +75 -58
- package/dist/gas/estimator.js.map +1 -1
- package/dist/gas/index.js.map +1 -1
- package/dist/gas/service.d.ts.map +1 -1
- package/dist/gas/service.js +14 -2
- package/dist/gas/service.js.map +1 -1
- package/dist/gas/service.test.integration.d.ts +2 -0
- package/dist/gas/service.test.integration.d.ts.map +1 -0
- package/dist/gas/service.test.integration.js +152 -0
- package/dist/gas/service.test.integration.js.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/react-hooks/convenience/index.js.map +1 -1
- package/dist/integrations/react-hooks/internal/error.js.map +1 -1
- package/dist/integrations/react-hooks/internal/is-dev.js.map +1 -1
- package/dist/integrations/react-hooks/internal/runtime.js.map +1 -1
- package/dist/integrations/react-hooks/internal/scoped-run.js.map +1 -1
- package/dist/integrations/react-hooks/internal/stable.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-effect-memo-factory.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-effect.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-fork-effect.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-stream.js.map +1 -1
- package/dist/integrations/react-hooks/primitives.js.map +1 -1
- package/dist/integrations/react-hooks/provider.js.map +1 -1
- package/dist/integrations/react-hooks/wagmi/index.js.map +1 -1
- package/dist/integrations/react-hooks/wallet-provider-ref.js.map +1 -1
- package/dist/integrations/wagmi/index.js.map +1 -1
- package/dist/integrations/wagmi/layers.js.map +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/numbers.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/stream-adapters.js.map +1 -1
- package/dist/internal/viem-effect.js.map +1 -1
- package/dist/nonce/index.js.map +1 -1
- package/dist/nonce/manager.js.map +1 -1
- package/dist/nonce/service.js.map +1 -1
- package/dist/nonce/service.test.integration.d.ts +2 -0
- package/dist/nonce/service.test.integration.d.ts.map +1 -0
- package/dist/nonce/service.test.integration.js +141 -0
- package/dist/nonce/service.test.integration.js.map +1 -0
- package/dist/platform/browser/cursor-store/index.js.map +1 -1
- package/dist/platform/browser/cursor-store/local-storage.js.map +1 -1
- package/dist/platform/browser/index.js.map +1 -1
- package/dist/platform/browser/layers.js.map +1 -1
- package/dist/platform/browser/storage/errors.js.map +1 -1
- package/dist/platform/browser/storage/index.js.map +1 -1
- package/dist/platform/browser/storage/local-storage.js.map +1 -1
- package/dist/platform/browser/tx-persistence/index.js.map +1 -1
- package/dist/platform/browser/tx-persistence/persistence.js.map +1 -1
- package/dist/platform/browser/tx-store/errors.js.map +1 -1
- package/dist/platform/browser/tx-store/index.js.map +1 -1
- package/dist/platform/browser/tx-store/local-storage.js.map +1 -1
- package/dist/platform/browser/tx-store/store.js.map +1 -1
- package/dist/platform/browser/tx-store/types.js.map +1 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layers.js.map +1 -1
- package/dist/presets/transports.js.map +1 -1
- package/dist/query/chain-head.js.map +1 -1
- package/dist/query/client.js.map +1 -1
- package/dist/query/client.test.integration.d.ts +2 -0
- package/dist/query/client.test.integration.d.ts.map +1 -0
- package/dist/query/client.test.integration.js +94 -0
- package/dist/query/client.test.integration.js.map +1 -0
- package/dist/query/contract-query.js.map +1 -1
- package/dist/query/contract-query.test.integration.d.ts +2 -0
- package/dist/query/contract-query.test.integration.d.ts.map +1 -0
- package/dist/query/contract-query.test.integration.js +133 -0
- package/dist/query/contract-query.test.integration.js.map +1 -0
- package/dist/query/index.js.map +1 -1
- package/dist/query/multicall-batcher.js.map +1 -1
- package/dist/react-hooks/index.d.ts +0 -2
- package/dist/react-hooks/index.d.ts.map +1 -1
- package/dist/react-hooks/index.js +0 -2
- package/dist/react-hooks/index.js.map +1 -1
- package/dist/react-hooks/wagmi/index.js.map +1 -1
- package/dist/rpc/cache.js.map +1 -1
- package/dist/rpc/circuit-breaker.js.map +1 -1
- package/dist/rpc/dedup.js.map +1 -1
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/retry.js.map +1 -1
- package/dist/rpc/routemesh.js.map +1 -1
- package/dist/signature/errors.js.map +1 -1
- package/dist/signature/index.js.map +1 -1
- package/dist/signature/service.js.map +1 -1
- package/dist/signature/service.test.integration.d.ts +2 -0
- package/dist/signature/service.test.integration.d.ts.map +1 -0
- package/dist/signature/service.test.integration.js +179 -0
- package/dist/signature/service.test.integration.js.map +1 -0
- package/dist/signature/utils.js.map +1 -1
- package/dist/simulation/errors.js.map +1 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/simulation/service.js.map +1 -1
- package/dist/simulation/tenderly.js.map +1 -1
- package/dist/simulation/tenderly.test.integration.d.ts +2 -0
- package/dist/simulation/tenderly.test.integration.d.ts.map +1 -0
- package/dist/simulation/tenderly.test.integration.js +104 -0
- package/dist/simulation/tenderly.test.integration.js.map +1 -0
- package/dist/simulation/types.js.map +1 -1
- package/dist/subscriptions/block-subscription.js.map +1 -1
- package/dist/subscriptions/errors.js.map +1 -1
- package/dist/subscriptions/index.js.map +1 -1
- package/dist/subscriptions/log-subscription.js.map +1 -1
- package/dist/subscriptions/pending-tx.d.ts +1 -1
- package/dist/subscriptions/pending-tx.d.ts.map +1 -1
- package/dist/subscriptions/pending-tx.js +1 -1
- package/dist/subscriptions/pending-tx.js.map +1 -1
- package/dist/subscriptions/service.d.ts +2 -2
- package/dist/subscriptions/service.d.ts.map +1 -1
- package/dist/subscriptions/service.js +4 -4
- package/dist/subscriptions/service.js.map +1 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/logger.js.map +1 -1
- package/dist/telemetry/tracer.d.ts +2 -2
- package/dist/telemetry/tracer.js +2 -2
- package/dist/telemetry/tracer.js.map +1 -1
- package/dist/testing-kit/_fixtures/addresses.js.map +1 -1
- package/dist/testing-kit/_fixtures/receipts.js.map +1 -1
- package/dist/testing-kit/helpers.js.map +1 -1
- package/dist/testing-kit/index.js.map +1 -1
- package/dist/testing-kit/mock-balance-service.js.map +1 -1
- package/dist/testing-kit/mock-block-service.js.map +1 -1
- package/dist/testing-kit/mock-cross-chain-reader.js.map +1 -1
- package/dist/testing-kit/mock-deploy-service.js.map +1 -1
- package/dist/testing-kit/mock-erc721-service.js.map +1 -1
- package/dist/testing-kit/mock-gas-service.js.map +1 -1
- package/dist/testing-kit/mock-nonce-service.js.map +1 -1
- package/dist/testing-kit/mock-public-client.js.map +1 -1
- package/dist/testing-kit/mock-signature-service.js.map +1 -1
- package/dist/testing-kit/mock-simulation-service.js.map +1 -1
- package/dist/testing-kit/mock-subscription-service.d.ts +2 -2
- package/dist/testing-kit/mock-subscription-service.d.ts.map +1 -1
- package/dist/testing-kit/mock-subscription-service.js +5 -5
- package/dist/testing-kit/mock-subscription-service.js.map +1 -1
- package/dist/testing-kit/mock-transfer-service.d.ts +3 -3
- package/dist/testing-kit/mock-transfer-service.d.ts.map +1 -1
- package/dist/testing-kit/mock-transfer-service.js.map +1 -1
- package/dist/testing-kit/mock-wallet-client.js.map +1 -1
- package/dist/testing-kit/mock-wallet-provider.js.map +1 -1
- package/dist/testing-kit/test-layer.js.map +1 -1
- package/dist/transfer/index.js.map +1 -1
- package/dist/transfer/service.d.ts +8 -11
- package/dist/transfer/service.d.ts.map +1 -1
- package/dist/transfer/service.js +32 -13
- package/dist/transfer/service.js.map +1 -1
- package/dist/tx/fees.d.ts.map +1 -1
- package/dist/tx/fees.js +3 -0
- package/dist/tx/fees.js.map +1 -1
- package/dist/tx/index.js.map +1 -1
- package/dist/tx/manager.d.ts +3 -2
- package/dist/tx/manager.d.ts.map +1 -1
- package/dist/tx/manager.js +232 -216
- package/dist/tx/manager.js.map +1 -1
- package/dist/tx/manager.test.integration.d.ts +2 -0
- package/dist/tx/manager.test.integration.d.ts.map +1 -0
- package/dist/tx/manager.test.integration.js +177 -0
- package/dist/tx/manager.test.integration.js.map +1 -0
- package/dist/tx/policy.d.ts +1 -1
- package/dist/tx/policy.d.ts.map +1 -1
- package/dist/tx/policy.js.map +1 -1
- package/dist/tx/replacement.d.ts +3 -3
- package/dist/tx/replacement.d.ts.map +1 -1
- package/dist/tx/replacement.js +3 -3
- package/dist/tx/replacement.js.map +1 -1
- package/dist/tx/tracker.d.ts +6 -6
- package/dist/tx/tracker.d.ts.map +1 -1
- package/dist/tx/tracker.js +9 -9
- package/dist/tx/tracker.js.map +1 -1
- package/dist/types/abi.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/params.d.ts +1 -1
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/params.js.map +1 -1
- package/dist/types/tx-overrides.d.ts +1 -1
- package/dist/types/tx-overrides.d.ts.map +1 -1
- package/dist/types/tx-overrides.js.map +1 -1
- package/dist/wagmi/index.js.map +1 -1
- package/dist/wagmi/layers.js.map +1 -1
- package/dist/wallet/errors.d.ts +3 -3
- package/dist/wallet/errors.d.ts.map +1 -1
- package/dist/wallet/errors.js +1 -1
- package/dist/wallet/errors.js.map +1 -1
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/lifecycle.js.map +1 -1
- package/dist/wallet/operations.d.ts +2 -2
- package/dist/wallet/operations.d.ts.map +1 -1
- package/dist/wallet/operations.js +2 -2
- package/dist/wallet/operations.js.map +1 -1
- package/dist/wallet/provider-ref.js.map +1 -1
- package/dist/wallet/service.d.ts +2 -2
- package/dist/wallet/service.d.ts.map +1 -1
- package/dist/wallet/service.js.map +1 -1
- package/dist/wallet/types.js.map +1 -1
- package/package.json +25 -14
- package/dist/react-hooks/use-is-safe-multisig.d.ts +0 -2
- package/dist/react-hooks/use-is-safe-multisig.d.ts.map +0 -1
- package/dist/react-hooks/use-is-safe-multisig.js +0 -44
- package/dist/react-hooks/use-is-safe-multisig.js.map +0 -1
- package/dist/react-hooks/use-safe-context.d.ts +0 -2
- package/dist/react-hooks/use-safe-context.d.ts.map +0 -1
- package/dist/react-hooks/use-safe-context.js +0 -41
- package/dist/react-hooks/use-safe-context.js.map +0 -1
- package/dist/safe/adapter.d.ts +0 -9
- package/dist/safe/adapter.d.ts.map +0 -1
- package/dist/safe/adapter.js +0 -13
- package/dist/safe/adapter.js.map +0 -1
- package/dist/safe/detection.d.ts +0 -26
- package/dist/safe/detection.d.ts.map +0 -1
- package/dist/safe/detection.js +0 -102
- package/dist/safe/detection.js.map +0 -1
- package/dist/safe/errors.d.ts +0 -79
- package/dist/safe/errors.d.ts.map +0 -1
- package/dist/safe/errors.js +0 -34
- package/dist/safe/errors.js.map +0 -1
- package/dist/safe/index.d.ts +0 -8
- package/dist/safe/index.d.ts.map +0 -1
- package/dist/safe/index.js +0 -6
- package/dist/safe/index.js.map +0 -1
- package/dist/safe/live.d.ts +0 -8
- package/dist/safe/live.d.ts.map +0 -1
- package/dist/safe/live.js +0 -250
- package/dist/safe/live.js.map +0 -1
- package/dist/safe/service.d.ts +0 -26
- package/dist/safe/service.d.ts.map +0 -1
- package/dist/safe/service.js +0 -4
- package/dist/safe/service.js.map +0 -1
- package/dist/safe/simulation/abis.d.ts +0 -73
- package/dist/safe/simulation/abis.d.ts.map +0 -1
- package/dist/safe/simulation/abis.js +0 -61
- package/dist/safe/simulation/abis.js.map +0 -1
- package/dist/safe/simulation/addresses.d.ts +0 -4
- package/dist/safe/simulation/addresses.d.ts.map +0 -1
- package/dist/safe/simulation/addresses.js +0 -40
- package/dist/safe/simulation/addresses.js.map +0 -1
- package/dist/safe/simulation/encoding.d.ts +0 -16
- package/dist/safe/simulation/encoding.d.ts.map +0 -1
- package/dist/safe/simulation/encoding.js +0 -36
- package/dist/safe/simulation/encoding.js.map +0 -1
- package/dist/safe/simulation/errors.d.ts +0 -56
- package/dist/safe/simulation/errors.d.ts.map +0 -1
- package/dist/safe/simulation/errors.js +0 -37
- package/dist/safe/simulation/errors.js.map +0 -1
- package/dist/safe/simulation/index.d.ts +0 -7
- package/dist/safe/simulation/index.d.ts.map +0 -1
- package/dist/safe/simulation/index.js +0 -6
- package/dist/safe/simulation/index.js.map +0 -1
- package/dist/safe/simulation/service.d.ts +0 -14
- package/dist/safe/simulation/service.d.ts.map +0 -1
- package/dist/safe/simulation/service.js +0 -140
- package/dist/safe/simulation/service.js.map +0 -1
- package/dist/safe/simulation/types.d.ts +0 -20
- package/dist/safe/simulation/types.d.ts.map +0 -1
- package/dist/safe/simulation/types.js +0 -2
- package/dist/safe/simulation/types.js.map +0 -1
- package/dist/safe/types.d.ts +0 -61
- package/dist/safe/types.d.ts.map +0 -1
- package/dist/safe/types.js +0 -2
- package/dist/safe/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-tx.d.ts","sourceRoot":"","sources":["../../src/subscriptions/pending-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEtF,wBAAgB,
|
|
1
|
+
{"version":3,"file":"pending-tx.d.ts","sourceRoot":"","sources":["../../src/subscriptions/pending-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEtF,wBAAgB,eAAe,CAC7B,mBAAmB,EAAE,wBAAwB,EAC7C,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,2LA4CF"}
|
|
@@ -2,7 +2,7 @@ import { Effect } from "effect";
|
|
|
2
2
|
import { fromWatchCallback } from "../internal/index.js";
|
|
3
3
|
import { SpanNames } from "../telemetry/index.js";
|
|
4
4
|
import { SubscriptionDroppedError, SubscriptionNotSupportedError } from "./errors.js";
|
|
5
|
-
export function
|
|
5
|
+
export function watchPendingTxs(publicClientService, params) {
|
|
6
6
|
return Effect.gen(function* () {
|
|
7
7
|
const client = yield* publicClientService.get(params.chainId);
|
|
8
8
|
if (client.transport.type !== "webSocket") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-tx.js","sourceRoot":"","sources":["../../src/subscriptions/pending-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"pending-tx.js","sourceRoot":"","sources":["../../src/subscriptions/pending-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,UAAU,eAAe,CAC7B,mBAA6C,EAC7C,MAGC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAG9D,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,6BAA6B,CAAC;gBAChC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,+DAA+D;gBACxE,gBAAgB,EAAE,qBAAqB;aACxC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAiC;YAC/D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,IAAI,wBAAwB,CAAC;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,qDAAqD,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;gBAChG,gBAAgB,EAAE,qBAAqB;aACxC,CAAC;YACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,MAAM,CAAC,wBAAwB,CAAC;gBAC9B,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;oBACzB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,6BAA6B,EAAE;QACvD,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { Hash } from \"viem\";\nimport type { PublicClientServiceShape } from \"@/src/core/index.js\";\nimport { fromWatchCallback } from \"@/src/internal/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport { SubscriptionDroppedError, SubscriptionNotSupportedError } from \"./errors.js\";\n\nexport function watchPendingTxs(\n publicClientService: PublicClientServiceShape,\n params: {\n chainId: number;\n pollingInterval?: number;\n }\n) {\n return Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n // Check if WebSocket is available - pending tx subscriptions typically require it\n if (client.transport.type !== \"webSocket\") {\n return yield* Effect.fail(\n new SubscriptionNotSupportedError({\n chainId: params.chainId,\n message: \"Pending transaction subscriptions require WebSocket transport\",\n subscriptionType: \"pendingTransactions\",\n })\n );\n }\n\n const stream = fromWatchCallback<Hash, SubscriptionDroppedError>({\n mapError: (error) =>\n new SubscriptionDroppedError({\n chainId: params.chainId,\n message: `Pending transaction subscription dropped on chain ${params.chainId}: ${String(error)}`,\n subscriptionType: \"pendingTransactions\",\n }),\n watch: (cb) =>\n client.watchPendingTransactions({\n onError: cb.onError,\n onTransactions: (hashes) => {\n for (const hash of hashes) {\n cb.onData(hash);\n }\n },\n pollingInterval: params.pollingInterval,\n }),\n });\n\n return stream;\n }).pipe(\n Effect.withSpan(SpanNames.SUBSCRIPTION_WATCH_PENDING_TX, {\n attributes: {\n chainId: params.chainId,\n pollingInterval: params.pollingInterval,\n },\n })\n );\n}\n"]}
|
|
@@ -32,7 +32,7 @@ export type SubscriptionServiceShape = {
|
|
|
32
32
|
topics?: (Hex | Hex[] | null)[];
|
|
33
33
|
pollingInterval?: number;
|
|
34
34
|
}) => Effect.Effect<Stream.Stream<Log, SubscriptionDroppedError>, ClientNotFoundError>;
|
|
35
|
-
readonly
|
|
35
|
+
readonly watchPendingTxs: (params: {
|
|
36
36
|
chainId: number;
|
|
37
37
|
pollingInterval?: number;
|
|
38
38
|
}) => Effect.Effect<Stream.Stream<Hash, SubscriptionDroppedError>, SubscriptionNotSupportedError | ClientNotFoundError>;
|
|
@@ -49,7 +49,7 @@ export type SubscriptionServiceShape = {
|
|
|
49
49
|
pollingInterval?: number;
|
|
50
50
|
retry?: SubscriptionRetryConfig;
|
|
51
51
|
}) => Effect.Effect<RetryingSubscriptionStream<Log>, ClientNotFoundError>;
|
|
52
|
-
readonly
|
|
52
|
+
readonly watchPendingTxsRetrying: (params: {
|
|
53
53
|
chainId: number;
|
|
54
54
|
pollingInterval?: number;
|
|
55
55
|
retry?: SubscriptionRetryConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/subscriptions/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAI3F,MAAM,MAAM,uBAAuB,GAAG;IAIpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAI5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAI3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GACnC;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAC1C,CAAC;AAYF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,wBAAwB,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAEzF,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAChC,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAEvF,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/subscriptions/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { PublicClientService } from "../core/index.js";
|
|
|
4
4
|
import { makeBackoffSchedule } from "../internal/index.js";
|
|
5
5
|
import { watchBlocks } from "./block-subscription.js";
|
|
6
6
|
import { watchLogs } from "./log-subscription.js";
|
|
7
|
-
import {
|
|
7
|
+
import { watchPendingTxs } from "./pending-tx.js";
|
|
8
8
|
const makeSubscriptionRetrySchedule = (config) => makeBackoffSchedule({
|
|
9
9
|
baseDelay: config?.baseDelay ?? DEFAULT_SUBSCRIPTION_BASE_DELAY,
|
|
10
10
|
jitter: config?.jitter ?? true,
|
|
@@ -41,14 +41,14 @@ export const SubscriptionServiceLive = Layer.effect(SubscriptionService, Effect.
|
|
|
41
41
|
const stream = (yield* watchLogs(publicClientService, watchParams)).pipe(Stream.onStart(SubscriptionRef.set(stateRef, { status: "connected" })), Stream.tapError((error) => SubscriptionRef.set(stateRef, { error, status: "retrying" })), Stream.retry(schedule), Stream.catchAll(() => neverStream()));
|
|
42
42
|
return { stateRef, stream };
|
|
43
43
|
}),
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
watchPendingTxs: (params) => watchPendingTxs(publicClientService, params),
|
|
45
|
+
watchPendingTxsRetrying: (params) => Effect.gen(function* () {
|
|
46
46
|
const stateRef = yield* SubscriptionRef.make({
|
|
47
47
|
status: "connecting",
|
|
48
48
|
});
|
|
49
49
|
const { retry, ...watchParams } = params;
|
|
50
50
|
const schedule = makeSubscriptionRetrySchedule(retry);
|
|
51
|
-
const stream = (yield*
|
|
51
|
+
const stream = (yield* watchPendingTxs(publicClientService, watchParams)).pipe(Stream.onStart(SubscriptionRef.set(stateRef, { status: "connected" })), Stream.tapError((error) => SubscriptionRef.set(stateRef, { error, status: "retrying" })), Stream.retry(schedule), Stream.catchAll(() => neverStream()));
|
|
52
52
|
return { stateRef, stream };
|
|
53
53
|
}),
|
|
54
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/subscriptions/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/subscriptions/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer, Stream, SubscriptionRef } from \"effect\";\nimport type { Address, Block, Hash, Hex, Log } from \"viem\";\nimport { DEFAULT_MAX_DELAY, DEFAULT_SUBSCRIPTION_BASE_DELAY } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport { PublicClientService } from \"@/src/core/index.js\";\nimport { makeBackoffSchedule } from \"@/src/internal/index.js\";\nimport { watchBlocks } from \"./block-subscription.js\";\nimport type { SubscriptionDroppedError, SubscriptionNotSupportedError } from \"./errors.js\";\nimport { watchLogs } from \"./log-subscription.js\";\nimport { watchPendingTxs } from \"./pending-tx.js\";\n\nexport type SubscriptionRetryConfig = {\n /**\n * Base delay in milliseconds for exponential backoff (default: 500ms)\n */\n readonly baseDelay?: number;\n /**\n * Maximum delay in milliseconds between retries (default: 30s)\n */\n readonly maxDelay?: number;\n /**\n * Add jitter to retry delays (default: true)\n */\n readonly jitter?: boolean;\n};\n\nexport type SubscriptionConnectionState =\n | { status: \"connecting\" }\n | { status: \"connected\" }\n | { status: \"retrying\"; error: SubscriptionDroppedError };\n\nexport type RetryingSubscriptionStream<A> = {\n readonly stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n readonly stream: Stream.Stream<A, never>;\n};\n\nconst makeSubscriptionRetrySchedule = (config?: SubscriptionRetryConfig) =>\n makeBackoffSchedule({\n baseDelay: config?.baseDelay ?? DEFAULT_SUBSCRIPTION_BASE_DELAY,\n jitter: config?.jitter ?? true,\n maxDelay: config?.maxDelay ?? DEFAULT_MAX_DELAY,\n maxRetries: Number.POSITIVE_INFINITY, // subscriptions retry forever\n });\n\nconst neverStream = <A>(): Stream.Stream<A, never> => Stream.async(() => Effect.never);\n\nexport type SubscriptionServiceShape = {\n readonly watchBlocks: (params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Block, SubscriptionDroppedError>, ClientNotFoundError>;\n\n readonly watchLogs: (params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Log, SubscriptionDroppedError>, ClientNotFoundError>;\n\n readonly watchPendingTxs: (params: {\n chainId: number;\n pollingInterval?: number;\n }) => Effect.Effect<\n Stream.Stream<Hash, SubscriptionDroppedError>,\n SubscriptionNotSupportedError | ClientNotFoundError\n >;\n\n readonly watchBlocksRetrying: (params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<RetryingSubscriptionStream<Block>, ClientNotFoundError>;\n\n readonly watchLogsRetrying: (params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<RetryingSubscriptionStream<Log>, ClientNotFoundError>;\n\n readonly watchPendingTxsRetrying: (params: {\n chainId: number;\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<\n RetryingSubscriptionStream<Hash>,\n SubscriptionNotSupportedError | ClientNotFoundError\n >;\n\n readonly hasWebSocket: (chainId: number) => Effect.Effect<boolean, ClientNotFoundError>;\n};\n\nexport class SubscriptionService extends Context.Tag(\"ew3/SubscriptionService\")<\n SubscriptionService,\n SubscriptionServiceShape\n>() {}\n\nexport const SubscriptionServiceLive = Layer.effect(\n SubscriptionService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n\n return {\n hasWebSocket: (chainId) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(chainId);\n // Check if transport is WebSocket-based\n return client.transport.type === \"webSocket\";\n }),\n watchBlocks: (params) => watchBlocks(publicClientService, params),\n\n watchBlocksRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connecting\",\n });\n\n const { retry, ...watchParams } = params;\n const schedule = makeSubscriptionRetrySchedule(retry);\n const stream = (yield* watchBlocks(publicClientService, watchParams)).pipe(\n Stream.onStart(SubscriptionRef.set(stateRef, { status: \"connected\" })),\n Stream.tapError((error) =>\n SubscriptionRef.set(stateRef, { error, status: \"retrying\" })\n ),\n Stream.retry(schedule),\n Stream.catchAll(() => neverStream<Block>())\n );\n\n return { stateRef, stream };\n }),\n\n watchLogs: (params) => watchLogs(publicClientService, params),\n\n watchLogsRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connecting\",\n });\n\n const { retry, ...watchParams } = params;\n const schedule = makeSubscriptionRetrySchedule(retry);\n const stream = (yield* watchLogs(publicClientService, watchParams)).pipe(\n Stream.onStart(SubscriptionRef.set(stateRef, { status: \"connected\" })),\n Stream.tapError((error) =>\n SubscriptionRef.set(stateRef, { error, status: \"retrying\" })\n ),\n Stream.retry(schedule),\n Stream.catchAll(() => neverStream<Log>())\n );\n\n return { stateRef, stream };\n }),\n\n watchPendingTxs: (params) => watchPendingTxs(publicClientService, params),\n\n watchPendingTxsRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connecting\",\n });\n\n const { retry, ...watchParams } = params;\n const schedule = makeSubscriptionRetrySchedule(retry);\n const stream = (yield* watchPendingTxs(publicClientService, watchParams)).pipe(\n Stream.onStart(SubscriptionRef.set(stateRef, { status: \"connected\" })),\n Stream.tapError((error) =>\n SubscriptionRef.set(stateRef, { error, status: \"retrying\" })\n ),\n Stream.retry(schedule),\n Stream.catchAll(() => neverStream<Hash>())\n );\n\n return { stateRef, stream };\n }),\n };\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC","sourcesContent":["export * from \"./logger.js\";\nexport * from \"./tracer.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/telemetry/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAI/B,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAKhC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgE,EAAE,EAAE,CACjG,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAIhC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA6C,EAAE,EAAE,CACxE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/telemetry/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAI/B,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAKhC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgE,EAAE,EAAE,CACjG,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAIhC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA6C,EAAE,EAAE,CACxE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["import { Effect } from \"effect\";\n\n/**\n * Log levels for different operations\n */\nexport const logContractRead = (params: {\n address: string;\n functionName: string;\n chainId: number;\n}) => Effect.logDebug(\"Contract read\", params);\n\nexport const logContractWrite = (params: {\n address: string;\n functionName: string;\n chainId: number;\n hash?: string;\n}) => Effect.logInfo(\"Contract write\", params);\n\nexport const logTxLifecycle = (params: { hash: string; status: string; confirmations?: number }) =>\n Effect.logDebug(\"Transaction lifecycle\", params);\n\nexport const logEventReceived = (params: {\n eventName: string;\n address: string;\n blockNumber: bigint;\n}) => Effect.logDebug(\"Event received\", params);\n\nexport const logError = (params: { operation: string; error: unknown }) =>\n Effect.logError(\"Operation failed\", params);\n"]}
|
|
@@ -63,9 +63,9 @@ export declare const SpanNames: {
|
|
|
63
63
|
readonly SAFE_ENABLE_OFFCHAIN: "ew3.safe.enableOffchainSigning";
|
|
64
64
|
readonly SAFE_GET_INFO: "ew3.safe.getInfo";
|
|
65
65
|
readonly SAFE_GET_OFFCHAIN_SIG: "ew3.safe.getOffchainSignature";
|
|
66
|
-
readonly SAFE_GET_TX: "ew3.safe.
|
|
66
|
+
readonly SAFE_GET_TX: "ew3.safe.getTx";
|
|
67
67
|
readonly SAFE_POLL_OFFCHAIN_SIG: "ew3.safe.pollOffchainSignature";
|
|
68
|
-
readonly SAFE_SEND_TXS: "ew3.safe.
|
|
68
|
+
readonly SAFE_SEND_TXS: "ew3.safe.sendTxs";
|
|
69
69
|
readonly SAFE_SIGN_TYPED_DATA: "ew3.safe.signTypedData";
|
|
70
70
|
readonly SAFE_WAIT_RECEIPT: "ew3.safe.waitForReceipt";
|
|
71
71
|
readonly SIGNATURE_HASH_MESSAGE: "ew3.signature.hashMessage";
|
package/dist/telemetry/tracer.js
CHANGED
|
@@ -63,9 +63,9 @@ export const SpanNames = {
|
|
|
63
63
|
SAFE_ENABLE_OFFCHAIN: "ew3.safe.enableOffchainSigning",
|
|
64
64
|
SAFE_GET_INFO: "ew3.safe.getInfo",
|
|
65
65
|
SAFE_GET_OFFCHAIN_SIG: "ew3.safe.getOffchainSignature",
|
|
66
|
-
SAFE_GET_TX: "ew3.safe.
|
|
66
|
+
SAFE_GET_TX: "ew3.safe.getTx",
|
|
67
67
|
SAFE_POLL_OFFCHAIN_SIG: "ew3.safe.pollOffchainSignature",
|
|
68
|
-
SAFE_SEND_TXS: "ew3.safe.
|
|
68
|
+
SAFE_SEND_TXS: "ew3.safe.sendTxs",
|
|
69
69
|
SAFE_SIGN_TYPED_DATA: "ew3.safe.signTypedData",
|
|
70
70
|
SAFE_WAIT_RECEIPT: "ew3.safe.waitForReceipt",
|
|
71
71
|
SIGNATURE_HASH_MESSAGE: "ew3.signature.hashMessage",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/telemetry/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,IAAY,EAAE,UAAoC,EAAE,EAAE,CACvD,CAAU,MAA8B,EAA0B,EAAE,CAClE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAKlD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,aAAa,EAAE,mBAAmB;IAClC,mBAAmB,EAAE,wBAAwB;IAC7C,WAAW,EAAE,iBAAiB;IAC9B,iBAAiB,EAAE,sBAAsB;IACzC,uBAAuB,EAAE,2BAA2B;IACpD,aAAa,EAAE,mBAAmB;IAClC,mBAAmB,EAAE,wBAAwB;IAC7C,SAAS,EAAE,eAAe;IAC1B,iBAAiB,EAAE,qBAAqB;IACxC,gBAAgB,EAAE,qBAAqB;IACvC,eAAe,EAAE,oBAAoB;IACrC,mBAAmB,EAAE,wBAAwB;IAC7C,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,qBAAqB,EAAE,0BAA0B;IACjD,aAAa,EAAE,mBAAmB;IAClC,iBAAiB,EAAE,uBAAuB;IAC1C,cAAc,EAAE,oBAAoB;IACpC,yBAAyB,EAAE,6BAA6B;IACxD,oBAAoB,EAAE,wBAAwB;IAC9C,qBAAqB,EAAE,yBAAyB;IAChD,sBAAsB,EAAE,2BAA2B;IACnD,eAAe,EAAE,qBAAqB;IACtC,aAAa,EAAE,mBAAmB;IAClC,eAAe,EAAE,oBAAoB;IACrC,cAAc,EAAE,mBAAmB;IACnC,YAAY,EAAE,iBAAiB;IAC/B,gBAAgB,EAAE,qBAAqB;IACvC,YAAY,EAAE,iBAAiB;IAC/B,cAAc,EAAE,oBAAoB;IACpC,iBAAiB,EAAE,sBAAsB;IACzC,qBAAqB,EAAE,0BAA0B;IACjD,mBAAmB,EAAE,wBAAwB;IAC7C,0BAA0B,EAAE,6BAA6B;IACzD,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,oBAAoB;IACrC,yBAAyB,EAAE,6BAA6B;IACxD,2BAA2B,EAAE,8BAA8B;IAC3D,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,qBAAqB;IACvC,mBAAmB,EAAE,wBAAwB;IAC7C,oBAAoB,EAAE,yBAAyB;IAC/C,cAAc,EAAE,oBAAoB;IACpC,WAAW,EAAE,iBAAiB;IAC9B,iBAAiB,EAAE,sBAAsB;IACzC,gBAAgB,EAAE,qBAAqB;IACvC,qBAAqB,EAAE,yBAAyB;IAChD,gBAAgB,EAAE,oBAAoB;IACtC,wBAAwB,EAAE,2BAA2B;IACrD,oBAAoB,EAAE,yBAAyB;IAC/C,SAAS,EAAE,wBAAwB;IACnC,aAAa,EAAE,mBAAmB;IAClC,yBAAyB,EAAE,6BAA6B;IACxD,cAAc,EAAE,mBAAmB;IACnC,cAAc,EAAE,mBAAmB;IACnC,uBAAuB,EAAE,2BAA2B;IACpD,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,oBAAoB,EAAE,gCAAgC;IAGtD,aAAa,EAAE,kBAAkB;IACjC,qBAAqB,EAAE,+BAA+B;IACtD,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/telemetry/tracer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\n\n/**\n * Wrap an effect with a span for tracing\n */\nexport const withSpan =\n (name: string, attributes?: Record<string, unknown>) =>\n <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>\n Effect.withSpan(name, { attributes })(effect);\n\n/**\n * Common span names for RPC operations\n */\nexport const SpanNames = {\n BALANCE_CHECK: \"ew3.balance.check\",\n BALANCE_CHECK_TOKEN: \"ew3.balance.checkToken\",\n BALANCE_GET: \"ew3.balance.get\",\n BALANCE_GET_TOKEN: \"ew3.balance.getToken\",\n BALANCE_GET_TOKEN_BATCH: \"ew3.balance.getTokenBatch\",\n BALANCE_WATCH: \"ew3.balance.watch\",\n BALANCE_WATCH_TOKEN: \"ew3.balance.watchToken\",\n BLOCK_GET: \"ew3.block.get\",\n BLOCK_GET_BY_HASH: \"ew3.block.getByHash\",\n BLOCK_GET_NUMBER: \"ew3.block.getNumber\",\n BLOCK_GET_RANGE: \"ew3.block.getRange\",\n BLOCK_GET_TIMESTAMP: \"ew3.block.getTimestamp\",\n BLOCK_WAIT: \"ew3.block.wait\",\n BLOCK_WATCH: \"ew3.block.watch\",\n CONTRACT_ESTIMATE_GAS: \"ew3.contract.estimateGas\",\n CONTRACT_READ: \"ew3.contract.read\",\n CONTRACT_SIMULATE: \"ew3.contract.simulate\",\n CONTRACT_WRITE: \"ew3.contract.write\",\n CROSS_CHAIN_MULTICALL_ALL: \"ew3.crossChain.multicallAll\",\n CROSS_CHAIN_READ_ALL: \"ew3.crossChain.readAll\",\n CROSS_CHAIN_READ_SAME: \"ew3.crossChain.readSame\",\n DEPLOY_COMPUTE_ADDRESS: \"ew3.deploy.computeAddress\",\n DEPLOY_CONTRACT: \"ew3.deploy.contract\",\n DEPLOY_VERIFY: \"ew3.deploy.verify\",\n ENS_GET_ADDRESS: \"ew3.ens.getAddress\",\n ENS_GET_AVATAR: \"ew3.ens.getAvatar\",\n ENS_GET_NAME: \"ew3.ens.getName\",\n ENS_GET_RESOLVER: \"ew3.ens.getResolver\",\n ENS_GET_TEXT: \"ew3.ens.getText\",\n ERC721_APPROVE: \"ew3.erc721.approve\",\n ERC721_BALANCE_OF: \"ew3.erc721.balanceOf\",\n ERC721_FETCH_METADATA: \"ew3.erc721.fetchMetadata\",\n ERC721_GET_APPROVED: \"ew3.erc721.getApproved\",\n ERC721_IS_APPROVED_FOR_ALL: \"ew3.erc721.isApprovedForAll\",\n ERC721_NAME: \"ew3.erc721.name\",\n ERC721_OWNER_OF: \"ew3.erc721.ownerOf\",\n ERC721_SAFE_TRANSFER_FROM: \"ew3.erc721.safeTransferFrom\",\n ERC721_SET_APPROVAL_FOR_ALL: \"ew3.erc721.setApprovalForAll\",\n ERC721_SYMBOL: \"ew3.erc721.symbol\",\n ERC721_TOKEN_URI: \"ew3.erc721.tokenURI\",\n ERC721_TOTAL_SUPPLY: \"ew3.erc721.totalSupply\",\n ERC721_TRANSFER_FROM: \"ew3.erc721.transferFrom\",\n EVENT_BACKFILL: \"ew3.event.backfill\",\n EVENT_WATCH: \"ew3.event.watch\",\n GAS_ESTIMATE_FEES: \"ew3.gas.estimateFees\",\n GAS_ESTIMATE_GAS: \"ew3.gas.estimateGas\",\n GAS_GET_ALL_ESTIMATES: \"ew3.gas.getAllEstimates\",\n GAS_GET_BASE_FEE: \"ew3.gas.getBaseFee\",\n GAS_GET_MAX_PRIORITY_FEE: \"ew3.gas.getMaxPriorityFee\",\n GAS_SUPPORTS_EIP1559: \"ew3.gas.supportsEip1559\",\n MULTICALL: \"ew3.contract.multicall\",\n NONCE_CONFIRM: \"ew3.nonce.confirm\",\n NONCE_GET_CONFIRMED_COUNT: \"ew3.nonce.getConfirmedCount\",\n NONCE_GET_GAPS: \"ew3.nonce.getGaps\",\n NONCE_GET_NEXT: \"ew3.nonce.getNext\",\n NONCE_GET_PENDING_COUNT: \"ew3.nonce.getPendingCount\",\n NONCE_RELEASE: \"ew3.nonce.release\",\n NONCE_RESERVE: \"ew3.nonce.reserve\",\n NONCE_SYNC: \"ew3.nonce.sync\",\n SAFE_ENABLE_OFFCHAIN: \"ew3.safe.enableOffchainSigning\",\n\n // Safe Apps\n SAFE_GET_INFO: \"ew3.safe.getInfo\",\n SAFE_GET_OFFCHAIN_SIG: \"ew3.safe.getOffchainSignature\",\n SAFE_GET_TX: \"ew3.safe.getTx\",\n SAFE_POLL_OFFCHAIN_SIG: \"ew3.safe.pollOffchainSignature\",\n SAFE_SEND_TXS: \"ew3.safe.sendTxs\",\n SAFE_SIGN_TYPED_DATA: \"ew3.safe.signTypedData\",\n SAFE_WAIT_RECEIPT: \"ew3.safe.waitForReceipt\",\n SIGNATURE_HASH_MESSAGE: \"ew3.signature.hashMessage\",\n SIGNATURE_HASH_TYPED_DATA: \"ew3.signature.hashTypedData\",\n SIGNATURE_JOIN: \"ew3.signature.join\",\n SIGNATURE_RECOVER_ADDRESS: \"ew3.signature.recoverAddress\",\n SIGNATURE_RECOVER_TYPED_DATA_ADDRESS: \"ew3.signature.recoverTypedDataAddress\",\n SIGNATURE_SPLIT: \"ew3.signature.split\",\n SIGNATURE_VERIFY_MESSAGE: \"ew3.signature.verifyMessage\",\n SIGNATURE_VERIFY_TYPED_DATA: \"ew3.signature.verifyTypedData\",\n SIMULATION_SIMULATE: \"ew3.simulation.simulate\",\n SIMULATION_SIMULATE_BUNDLE: \"ew3.simulation.simulateBundle\",\n SUBSCRIPTION_WATCH_BLOCKS: \"ew3.subscription.watchBlocks\",\n SUBSCRIPTION_WATCH_LOGS: \"ew3.subscription.watchLogs\",\n SUBSCRIPTION_WATCH_PENDING_TX: \"ew3.subscription.watchPendingTx\",\n TRANSFER_ESTIMATE: \"ew3.transfer.estimateGas\",\n TRANSFER_SEND: \"ew3.transfer.send\",\n TRANSFER_SEND_AND_WAIT: \"ew3.transfer.sendAndWait\",\n TX_GET_CONFIRMATIONS: \"ew3.tx.getConfirmations\",\n TX_TRACK: \"ew3.tx.track\",\n TX_WAIT: \"ew3.tx.wait\",\n WALLET_CONNECT: \"ew3.wallet.connect\",\n WALLET_SIGN_MESSAGE: \"ew3.wallet.signMessage\",\n WALLET_SIGN_TYPED_DATA: \"ew3.wallet.signTypedData\",\n} as const;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/addresses.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,4CAAqD,CAAC;AACpF,MAAM,CAAC,MAAM,YAAY,GACvB,oEAA6E,CAAC;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/addresses.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,4CAAqD,CAAC;AACpF,MAAM,CAAC,MAAM,YAAY,GACvB,oEAA6E,CAAC;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC","sourcesContent":["/**\n * Test addresses and constants for effect-evm test suite\n */\n\nimport { mainnet } from \"viem/chains\";\n\nexport const TEST_ADDRESS = \"0x1234567890123456789012345678901234567890\" as const;\nexport const TEST_ADDRESS_2 = \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as const;\nexport const TEST_TX_HASH =\n \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as const;\nexport const TEST_CHAIN_ID = mainnet.id;\nexport const UNKNOWN_CHAIN_ID = 123_456_789;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/receipts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,oEAAoE;IAC/E,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,WAAW;IAC9B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,YAAY;IAChB,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,CAAC;IACnB,IAAI,EAAE,SAAS;CACsB,CAAC;AAaxC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,YAAyC,EAAE,EACvB,EAAE,CAAC,CAAC;IACxB,GAAG,YAAY;IACf,GAAG,SAAS;CACb,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/receipts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,oEAAoE;IAC/E,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,WAAW;IAC9B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,YAAY;IAChB,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,CAAC;IACnB,IAAI,EAAE,SAAS;CACsB,CAAC;AAaxC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,YAAyC,EAAE,EACvB,EAAE,CAAC,CAAC;IACxB,GAAG,YAAY;IACf,GAAG,SAAS;CACb,CAAC,CAAC","sourcesContent":["/**\n * Transaction receipt fixtures for effect-evm test suite\n */\n\nimport type { TransactionReceipt } from \"viem\";\nimport { TEST_ADDRESS, TEST_TX_HASH } from \"./addresses.js\";\n\nexport const TEST_RECEIPT = {\n blockHash: \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n blockNumber: 1000n,\n contractAddress: null,\n cumulativeGasUsed: 50000n,\n effectiveGasPrice: 1000000000n,\n from: TEST_ADDRESS,\n gasUsed: 50000n,\n logs: [],\n logsBloom: \"0x00\",\n status: \"success\",\n to: TEST_ADDRESS,\n transactionHash: TEST_TX_HASH,\n transactionIndex: 0,\n type: \"eip1559\",\n} as const satisfies TransactionReceipt;\n\n/**\n * Factory function to create test receipts with custom overrides\n *\n * @param overrides - Partial TransactionReceipt properties to override defaults\n * @returns A complete TransactionReceipt for testing\n *\n * @example\n * ```typescript\n * const receipt = makeTestReceipt({ status: \"reverted\", gasUsed: 100000n });\n * ```\n */\nexport const makeTestReceipt = (\n overrides: Partial<TransactionReceipt> = {}\n): TransactionReceipt => ({\n ...TEST_RECEIPT,\n ...overrides,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/testing-kit/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAcnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAA2B,EAC3B,WAAsB,EAChB,EAAE;IACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAE,KAAK,CAAC,KAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAO,MAA2B,EAAK,EAAE;IACjE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,MAA2B,EAAK,EAAE;IAClE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAkBF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAI,gBAAwB,EAAE,QAAiB,EAAE,EAAE,CACnD,CAAC,OAAe,EAAE,EAAE,CAClB,OAAO,KAAK,gBAAgB;IAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,IAAI,mBAAmB,CAAC;QACtB,OAAO;QACP,OAAO,EAAE,qCAAqC,OAAO,EAAE;KACxD,CAAC,CACH,CAAC;AAmBV,MAAM,CAAC,MAAM,cAAc,GACzB,CACE,gBAAwB,EACxB,YAAuD,EACvD,EAAsC,EACM,EAAE,CAChD,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,OAAO,KAAK,gBAAgB;IACjC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;IACZ,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,YAAY,CACV,MAAM,CAAC,OAAO,EACd,SAAS,MAAM,CAAC,OAAO,8BAA8B,gBAAgB,iBAAiB,CACvF,CACF,CAAC;AAkBV,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,gBAAwB,EACxB,EAAsC,EACsB,EAAE,CAC9D,cAAc,CACZ,gBAAgB,EAChB,CAAC,OAAO,EAAE,EAAE,CACV,IAAI,mBAAmB,CAAC;IACtB,OAAO;IACP,OAAO,EAAE,qCAAqC,OAAO,EAAE;CACxD,CAAC,EACJ,EAAE,CACH,CAAC;AAkBJ,MAAM,CAAC,MAAM,uBAAuB,GAClC,CAAI,gBAAwB,EAAE,QAAiB,EAAE,EAAE,CACnD,CAAC,OAAe,EAAE,EAAE,CAClB,OAAO,KAAK,gBAAgB;IAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,IAAI,uBAAuB,CAAC;QAC1B,OAAO;QACP,OAAO,EAAE,2CAA2C,OAAO,EAAE;KAC9D,CAAC,CACH,CAAC;AAkBV,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,gBAAwB,EACxB,EAAsC,EAC0B,EAAE,CAClE,cAAc,CACZ,gBAAgB,EAChB,CAAC,OAAO,EAAE,EAAE,CACV,IAAI,uBAAuB,CAAC;IAC1B,OAAO;IACP,OAAO,EAAE,2CAA2C,OAAO,EAAE;CAC9D,CAAC,EACJ,EAAE,CACH,CAAC;AAyCJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAA6B,EAC7B,QAAW,EACX,MAAkB,EAClB,UAA4B,EACZ,EAAE;IAClB,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAO,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/testing-kit/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Test assertion helpers for effect-evm\n *\n * Provides type-safe utilities for asserting on Effect types in tests.\n */\n\nimport type { Context } from \"effect\";\nimport { Cause, Effect, Either, Exit, Layer, Option } from \"effect\";\nimport { expect } from \"vitest\";\nimport { ClientNotFoundError, WalletNotConnectedError } from \"@/src/core/index.js\";\n\n/**\n * Assert an Exit is a failure with a specific tagged error\n *\n * @param exit - The Exit to assert on\n * @param expectedTag - The expected error tag\n *\n * @example\n * ```typescript\n * const exit = yield* Effect.exit(someEffect);\n * expectTaggedFailure(exit, \"ClientNotFoundError\");\n * ```\n */\nexport const expectTaggedFailure = <E extends { _tag: string }>(\n exit: Exit.Exit<unknown, E>,\n expectedTag: E[\"_tag\"]\n): void => {\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(Option.isSome(error)).toBe(true);\n if (Option.isSome(error)) {\n expect((error.value as { _tag: string })._tag).toBe(expectedTag);\n }\n }\n};\n\n/**\n * Type-safe assertion for Either.Left - returns the left value for further assertions\n *\n * @param either - The Either to assert on\n * @returns The left value for further assertions\n * @throws Error if Either is Right\n *\n * @example\n * ```typescript\n * const result = Either.left(new Error(\"boom\"));\n * const error = assertLeft(result);\n * expect(error.message).toBe(\"boom\");\n * ```\n */\nexport const assertLeft = <L, R>(either: Either.Either<R, L>): L => {\n expect(Either.isLeft(either)).toBe(true);\n if (!Either.isLeft(either)) {\n throw new Error(\"Expected Left\");\n }\n return either.left;\n};\n\n/**\n * Type-safe assertion for Either.Right - returns the right value for further assertions\n *\n * @param either - The Either to assert on\n * @returns The right value for further assertions\n * @throws Error if Either is Left\n *\n * @example\n * ```typescript\n * const result = Either.right(42);\n * const value = assertRight(result);\n * expect(value).toBe(42);\n * ```\n */\nexport const assertRight = <L, R>(either: Either.Either<R, L>): R => {\n expect(Either.isRight(either)).toBe(true);\n if (!Either.isRight(either)) {\n throw new Error(\"Expected Right\");\n }\n return either.right;\n};\n\n/**\n * Creates a chainId-gated getter for mock services.\n * Returns the value if chainId matches, otherwise fails with ClientNotFoundError.\n *\n * @param supportedChainId - The chainId this mock supports\n * @param getValue - Function that returns the value when chainId matches\n * @returns A function that takes a chainId and returns an Effect\n *\n * @example\n * ```typescript\n * const mockClient = { chain: { id: 1 }, ... };\n * const get = makeChainIdGetter(1, () => mockClient);\n * // get(1) => Effect.succeed(mockClient)\n * // get(2) => Effect.fail(ClientNotFoundError)\n * ```\n */\nexport const makeChainIdGetter =\n <A>(supportedChainId: number, getValue: () => A) =>\n (chainId: number) =>\n chainId === supportedChainId\n ? Effect.succeed(getValue())\n : Effect.fail(\n new ClientNotFoundError({\n chainId,\n message: `No client configured for chain ID ${chainId}`,\n })\n );\n\n/**\n * Generic chain validation helper that accepts a custom error factory.\n * This is the base implementation used by withChainIdCheck and withWalletChainIdCheck.\n *\n * @param supportedChainId - The chainId this mock supports\n * @param errorFactory - Function to create the error when chainId doesn't match\n * @param fn - Function to call if chainId matches\n * @returns A wrapped function that validates chainId first\n *\n * @example\n * ```typescript\n * const withCustomCheck = <P extends { chainId: number }, A, E>(\n * supportedChainId: number,\n * fn: (params: P) => Effect.Effect<A, E>\n * ) => withChainCheck(supportedChainId, (chainId) => new CustomError({ chainId }), fn);\n * ```\n */\nexport const withChainCheck =\n <P extends { chainId: number }, A, E, Err>(\n supportedChainId: number,\n errorFactory: (chainId: number, message: string) => Err,\n fn: (params: P) => Effect.Effect<A, E>\n ): ((params: P) => Effect.Effect<A, E | Err>) =>\n (params) =>\n params.chainId === supportedChainId\n ? fn(params)\n : Effect.fail(\n errorFactory(\n params.chainId,\n `Chain ${params.chainId} not supported. Only chain ${supportedChainId} is configured.`\n )\n );\n\n/**\n * Wraps a function that takes params with chainId to validate chain support first.\n * If chainId matches, calls the function; otherwise fails with ClientNotFoundError.\n *\n * @param supportedChainId - The chainId this mock supports\n * @param fn - Function to call if chainId matches\n * @returns A wrapped function that validates chainId first\n *\n * @example\n * ```typescript\n * const getBlock = (params: { chainId: number }) => Effect.succeed(mockBlock);\n * const wrapped = withChainIdCheck(1, getBlock);\n * // wrapped({ chainId: 1 }) => Effect.succeed(mockBlock)\n * // wrapped({ chainId: 2 }) => Effect.fail(ClientNotFoundError)\n * ```\n */\nexport const withChainIdCheck = <P extends { chainId: number }, A, E>(\n supportedChainId: number,\n fn: (params: P) => Effect.Effect<A, E>\n): ((params: P) => Effect.Effect<A, E | ClientNotFoundError>) =>\n withChainCheck(\n supportedChainId,\n (chainId) =>\n new ClientNotFoundError({\n chainId,\n message: `No client configured for chain ID ${chainId}`,\n }),\n fn\n );\n\n/**\n * Creates a chainId-gated getter for mock wallet services.\n * Returns the value if chainId matches, otherwise fails with WalletNotConnectedError.\n *\n * @param supportedChainId - The chainId this mock supports\n * @param getValue - Function that returns the value when chainId matches\n * @returns A function that takes a chainId and returns an Effect\n *\n * @example\n * ```typescript\n * const mockWallet = { account: { address: \"0x...\" }, ... };\n * const get = makeWalletChainIdGetter(1, () => mockWallet);\n * // get(1) => Effect.succeed(mockWallet)\n * // get(2) => Effect.fail(WalletNotConnectedError)\n * ```\n */\nexport const makeWalletChainIdGetter =\n <A>(supportedChainId: number, getValue: () => A) =>\n (chainId: number) =>\n chainId === supportedChainId\n ? Effect.succeed(getValue())\n : Effect.fail(\n new WalletNotConnectedError({\n chainId,\n message: `No wallet client connected for chain ID ${chainId}`,\n })\n );\n\n/**\n * Wraps a function that takes params with chainId to validate wallet chain support first.\n * If chainId matches, calls the function; otherwise fails with WalletNotConnectedError.\n *\n * @param supportedChainId - The chainId this mock wallet supports\n * @param fn - Function to call if chainId matches\n * @returns A wrapped function that validates chainId first\n *\n * @example\n * ```typescript\n * const writeContract = (params: { chainId: number, ... }) => Effect.succeed(mockHash);\n * const wrapped = withWalletChainIdCheck(1, writeContract);\n * // wrapped({ chainId: 1, ... }) => Effect.succeed(mockHash)\n * // wrapped({ chainId: 2, ... }) => Effect.fail(WalletNotConnectedError)\n * ```\n */\nexport const withWalletChainIdCheck = <P extends { chainId: number }, A, E>(\n supportedChainId: number,\n fn: (params: P) => Effect.Effect<A, E>\n): ((params: P) => Effect.Effect<A, E | WalletNotConnectedError>) =>\n withChainCheck(\n supportedChainId,\n (chainId) =>\n new WalletNotConnectedError({\n chainId,\n message: `No wallet client connected for chain ID ${chainId}`,\n }),\n fn\n );\n\n/**\n * Generic factory for creating mock service layers.\n * Eliminates boilerplate by abstracting the common pattern of:\n * 1. Merging default config with overrides\n * 2. Mapping merged config to service shape\n * 3. Creating a Layer.succeed\n *\n * @param ServiceTag - The Effect Context.Tag for the service\n * @param defaults - Default configuration object\n * @param config - Partial configuration to override defaults\n * @param mapToShape - Function that maps merged config to the service shape\n * @returns A Layer providing the service\n *\n * @example\n * ```typescript\n * // In a mock service file:\n * export const makeMockGasServiceLayer = (\n * config: MockGasServiceConfig = {},\n * supportedChainId = 1\n * ): Layer.Layer<GasService> => {\n * const defaults = {\n * estimateFees: () => Effect.succeed(DEFAULT_FEE_ESTIMATE),\n * getBaseFee: () => Effect.succeed(30000000000n),\n * // ... other defaults\n * };\n *\n * return makeMockServiceLayer(\n * GasService,\n * defaults,\n * config,\n * (merged) => ({\n * estimateFees: withChainIdCheck(supportedChainId, merged.estimateFees),\n * getBaseFee: withChainIdCheck(supportedChainId, merged.getBaseFee),\n * // ... other methods\n * })\n * );\n * };\n * ```\n */\nexport const makeMockServiceLayer = <I, S, C extends Record<string, unknown>>(\n ServiceTag: Context.Tag<I, S>,\n defaults: C,\n config: Partial<C>,\n mapToShape: (merged: C) => S\n): Layer.Layer<I> => {\n const merged = { ...defaults, ...config } as C;\n const serviceShape = mapToShape(merged);\n return Layer.succeed(ServiceTag, ServiceTag.of(serviceShape));\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing-kit/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAE9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing-kit/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAE9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["/**\n * Testing Kit for effect-evm\n *\n * This module exports mock builders and test utilities for downstream\n * consumers to easily test code that depends on effect-evm services.\n *\n * @example\n * ```typescript\n * import { makeEffectEvmTestLayer } from \"effect-evm/testing-kit\";\n *\n * const testLayer = makeEffectEvmTestLayer({\n * publicClient: {\n * readContract: async () => 1000n,\n * },\n * });\n * ```\n */\n\n// Fixtures\nexport {\n TEST_ADDRESS,\n TEST_ADDRESS_2,\n TEST_CHAIN_ID,\n TEST_TX_HASH,\n UNKNOWN_CHAIN_ID,\n} from \"./_fixtures/addresses.js\";\nexport { makeTestReceipt, TEST_RECEIPT } from \"./_fixtures/receipts.js\";\n\n// Test helpers\nexport {\n assertLeft,\n assertRight,\n expectTaggedFailure,\n makeChainIdGetter,\n makeWalletChainIdGetter,\n withChainIdCheck,\n withWalletChainIdCheck,\n} from \"./helpers.js\";\n\nexport type { MockBalanceServiceConfig } from \"./mock-balance-service.js\";\nexport { makeMockBalanceServiceLayer } from \"./mock-balance-service.js\";\nexport type { MockBlockServiceConfig } from \"./mock-block-service.js\";\nexport { makeMockBlockServiceLayer } from \"./mock-block-service.js\";\nexport type { MockCrossChainReaderConfig } from \"./mock-cross-chain-reader.js\";\nexport { makeMockCrossChainReaderLayer } from \"./mock-cross-chain-reader.js\";\nexport type { MockDeployServiceConfig } from \"./mock-deploy-service.js\";\nexport { makeMockDeployServiceLayer } from \"./mock-deploy-service.js\";\nexport type { MockErc721ServiceConfig } from \"./mock-erc721-service.js\";\nexport { makeMockErc721ServiceLayer } from \"./mock-erc721-service.js\";\nexport type { MockGasServiceConfig } from \"./mock-gas-service.js\";\nexport { makeMockGasServiceLayer } from \"./mock-gas-service.js\";\nexport type { MockNonceServiceConfig } from \"./mock-nonce-service.js\";\nexport { makeMockNonceServiceLayer } from \"./mock-nonce-service.js\";\n// Mock layer builders\nexport type { MockPublicClientConfig } from \"./mock-public-client.js\";\nexport { makeMockPublicClientLayer } from \"./mock-public-client.js\";\nexport type { MockSignatureServiceConfig } from \"./mock-signature-service.js\";\nexport { makeMockSignatureServiceLayer } from \"./mock-signature-service.js\";\nexport type { MockSimulationServiceConfig } from \"./mock-simulation-service.js\";\nexport { makeMockSimulationServiceLayer } from \"./mock-simulation-service.js\";\nexport type { MockSubscriptionServiceConfig } from \"./mock-subscription-service.js\";\nexport { makeMockSubscriptionServiceLayer } from \"./mock-subscription-service.js\";\nexport type { MockTransferServiceConfig } from \"./mock-transfer-service.js\";\nexport { makeMockTransferServiceLayer } from \"./mock-transfer-service.js\";\nexport type { MockWalletClientConfig } from \"./mock-wallet-client.js\";\nexport { makeMockWalletClientLayer } from \"./mock-wallet-client.js\";\nexport type { MockWalletProviderConfig } from \"./mock-wallet-provider.js\";\nexport { makeMockWalletProvider } from \"./mock-wallet-provider.js\";\n// Test layer composer\nexport type { TestLayerConfig } from \"./test-layer.js\";\nexport { makeEffectEvmTestLayer } from \"./test-layer.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-balance-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-balance-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOxD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAsDtE,MAAM,aAAa,GAAuC;IACxD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACtD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IAClD,gBAAgB,EAAE,CAAC,MAAqC,EAAE,EAAE,CAC1D,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO;QACP,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC,CACJ;IACH,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACrD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrE,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CAClE,CAAC;AA+BF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAmC,EAAE,EACrC,gBAAgB,GAAG,CAAC,EACS,EAAE,CAC/B,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACjE,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3E,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC7E,oBAAoB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IACrF,yBAAyB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC/F,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;IACrE,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;CAChF,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-balance-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-balance-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOxD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAsDtE,MAAM,aAAa,GAAuC;IACxD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACtD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IAClD,gBAAgB,EAAE,CAAC,MAAqC,EAAE,EAAE,CAC1D,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO;QACP,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC,CACJ;IACH,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACrD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrE,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CAClE,CAAC;AA+BF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAmC,EAAE,EACrC,gBAAgB,GAAG,CAAC,EACS,EAAE,CAC/B,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACjE,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3E,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC7E,oBAAoB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IACrF,yBAAyB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC/F,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;IACrE,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;CAChF,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect, Stream } from \"effect\";\nimport type { Address } from \"viem\";\nimport type { TokenBalance } from \"@/src/balance/index.js\";\nimport { BalanceService } from \"@/src/balance/index.js\";\nimport type {\n ClientNotFoundError,\n ContractReadError,\n MulticallError,\n TransportError,\n} from \"@/src/core/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock BalanceService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockBalanceServiceConfig = {\n getBalance?: (params: {\n chainId: number;\n address: Address;\n blockTag?: \"latest\" | \"pending\";\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n getTokenBalance?: (params: {\n chainId: number;\n address: Address;\n tokenAddress: Address;\n }) => Effect.Effect<bigint, ContractReadError | ClientNotFoundError>;\n\n getTokenBalances?: (params: {\n chainId: number;\n address: Address;\n tokenAddresses: Address[];\n }) => Effect.Effect<TokenBalance[], ClientNotFoundError | MulticallError>;\n\n watchBalance?: (params: {\n chainId: number;\n address: Address;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<bigint, unknown>, ClientNotFoundError>;\n\n watchTokenBalance?: (params: {\n chainId: number;\n address: Address;\n tokenAddress: Address;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<bigint, unknown>, ClientNotFoundError>;\n\n hasSufficientBalance?: (params: {\n chainId: number;\n address: Address;\n required: bigint;\n }) => Effect.Effect<boolean, ClientNotFoundError | TransportError>;\n\n hasSufficientTokenBalance?: (params: {\n chainId: number;\n address: Address;\n tokenAddress: Address;\n required: bigint;\n }) => Effect.Effect<boolean, ContractReadError | ClientNotFoundError>;\n};\n\nconst defaultConfig: Required<MockBalanceServiceConfig> = {\n getBalance: () => Effect.succeed(1000000000000000000n), // 1 ETH\n getTokenBalance: () => Effect.succeed(1000000000n), // typical token balance\n getTokenBalances: (params: { tokenAddresses: Address[] }) =>\n Effect.succeed(\n params.tokenAddresses.map((address) => ({\n address,\n balance: 1000000000n,\n decimals: 18,\n name: \"Mock Token\",\n symbol: \"MOCK\",\n }))\n ),\n hasSufficientBalance: () => Effect.succeed(true),\n hasSufficientTokenBalance: () => Effect.succeed(true),\n watchBalance: () => Effect.succeed(Stream.make(1000000000000000000n)),\n watchTokenBalance: () => Effect.succeed(Stream.make(1000000000n)),\n};\n\n/**\n * Creates a mock BalanceService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockBalanceServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockBalanceServiceLayer({\n * getBalance: () => Effect.succeed(5000000000000000000n), // 5 ETH\n * getTokenBalance: () => Effect.succeed(1000000000000n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const balanceService = yield* BalanceService;\n * const balance = yield* balanceService.getBalance({\n * chainId: mainnet.id,\n * address: \"0x...\",\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockBalanceServiceLayer = (\n config: MockBalanceServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<BalanceService> =>\n makeMockServiceLayer(BalanceService, defaultConfig, config, (merged) => ({\n getBalance: withChainIdCheck(supportedChainId, merged.getBalance),\n getTokenBalance: withChainIdCheck(supportedChainId, merged.getTokenBalance),\n getTokenBalances: withChainIdCheck(supportedChainId, merged.getTokenBalances),\n hasSufficientBalance: withChainIdCheck(supportedChainId, merged.hasSufficientBalance),\n hasSufficientTokenBalance: withChainIdCheck(supportedChainId, merged.hasSufficientTokenBalance),\n watchBalance: withChainIdCheck(supportedChainId, merged.watchBalance),\n watchTokenBalance: withChainIdCheck(supportedChainId, merged.watchTokenBalance),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-block-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-block-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-block-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-block-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect, Stream } from \"effect\";\nimport type { Block, Hash } from \"viem\";\nimport type { BlockNotFoundError, BlockTimeoutError } from \"@/src/block/index.js\";\nimport { BlockService } from \"@/src/block/index.js\";\nimport type { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\n\nconst DEFAULT_BLOCK: Block = {\n baseFeePerGas: 30000000000n,\n blobGasUsed: 0n,\n difficulty: 0n,\n excessBlobGas: 0n,\n extraData: \"0x\",\n gasLimit: 30000000n,\n gasUsed: 12000000n,\n hash: DEFAULT_HASH,\n logsBloom: \"0x00\",\n miner: \"0x0000000000000000000000000000000000000000\",\n mixHash: DEFAULT_HASH,\n nonce: \"0x0000000000000000\",\n number: 1000n,\n parentHash: DEFAULT_HASH,\n receiptsRoot: DEFAULT_HASH,\n sealFields: [],\n sha3Uncles: DEFAULT_HASH,\n size: 1024n,\n stateRoot: DEFAULT_HASH,\n timestamp: 1700000000n,\n totalDifficulty: 0n,\n transactions: [],\n transactionsRoot: DEFAULT_HASH,\n uncles: [],\n};\n\n/**\n * Configuration for the mock BlockService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockBlockServiceConfig = {\n getBlock?: (params: {\n chainId: number;\n blockNumber?: bigint;\n blockTag?: \"latest\" | \"pending\" | \"earliest\" | \"safe\" | \"finalized\";\n includeTransactions?: boolean;\n }) => Effect.Effect<Block, BlockNotFoundError | ClientNotFoundError>;\n\n getBlockByHash?: (params: {\n chainId: number;\n hash: Hash;\n includeTransactions?: boolean;\n }) => Effect.Effect<Block, BlockNotFoundError | ClientNotFoundError>;\n\n getBlockNumber?: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n watchBlocks?: (params: {\n chainId: number;\n pollingInterval?: number;\n includeTransactions?: boolean;\n }) => Effect.Effect<Stream.Stream<Block, unknown>, ClientNotFoundError>;\n\n waitForBlock?: (params: {\n chainId: number;\n blockNumber: bigint;\n timeout?: number;\n }) => Effect.Effect<\n Block,\n BlockNotFoundError | BlockTimeoutError | ClientNotFoundError | TransportError\n >;\n\n getBlocks?: (params: {\n chainId: number;\n fromBlock: bigint;\n toBlock: bigint;\n includeTransactions?: boolean;\n }) => Effect.Effect<Block[], ClientNotFoundError | BlockNotFoundError>;\n\n getBlockTimestamp?: (params: {\n chainId: number;\n blockNumber?: bigint;\n }) => Effect.Effect<bigint, ClientNotFoundError | BlockNotFoundError>;\n};\n\nconst defaultConfig: Required<MockBlockServiceConfig> = {\n getBlock: () => Effect.succeed(DEFAULT_BLOCK),\n getBlockByHash: () => Effect.succeed(DEFAULT_BLOCK),\n getBlockNumber: () => Effect.succeed(1000n),\n getBlocks: (params: { fromBlock: bigint; toBlock: bigint }) => {\n const count = Number(params.toBlock - params.fromBlock) + 1;\n return Effect.succeed(\n Array.from({ length: count }, (_, i) => ({\n ...DEFAULT_BLOCK,\n number: params.fromBlock + BigInt(i),\n }))\n );\n },\n getBlockTimestamp: () => Effect.succeed(1700000000n),\n waitForBlock: () => Effect.succeed(DEFAULT_BLOCK),\n watchBlocks: () => Effect.succeed(Stream.make(DEFAULT_BLOCK)),\n};\n\n/**\n * Creates a mock BlockService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockBlockServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockBlockServiceLayer({\n * getBlockNumber: () => Effect.succeed(2000n),\n * getBlock: () => Effect.succeed({ ...customBlock }),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const blockService = yield* BlockService;\n * const blockNumber = yield* blockService.getBlockNumber({ chainId: mainnet.id });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockBlockServiceLayer = (\n config: MockBlockServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<BlockService> =>\n makeMockServiceLayer(BlockService, defaultConfig, config, (merged) => ({\n getBlock: withChainIdCheck(supportedChainId, merged.getBlock),\n getBlockByHash: withChainIdCheck(supportedChainId, merged.getBlockByHash),\n getBlockNumber: withChainIdCheck(supportedChainId, merged.getBlockNumber),\n getBlocks: withChainIdCheck(supportedChainId, merged.getBlocks),\n getBlockTimestamp: withChainIdCheck(supportedChainId, merged.getBlockTimestamp),\n waitForBlock: withChainIdCheck(supportedChainId, merged.waitForBlock),\n watchBlocks: withChainIdCheck(supportedChainId, merged.watchBlocks),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-cross-chain-reader.js","sourceRoot":"","sources":["../../src/testing-kit/mock-cross-chain-reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-cross-chain-reader.js","sourceRoot":"","sources":["../../src/testing-kit/mock-cross-chain-reader.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Layer } from \"effect\";\nimport type {\n ChainMulticallBatch,\n CrossChainCall,\n CrossChainReader,\n CrossChainReaderShape,\n ReadSameParams,\n} from \"@/src/contract/index.js\";\nimport { CrossChainReader as CrossChainReaderTag } from \"@/src/contract/index.js\";\nimport type { ClientNotFoundError, ContractReadError, MulticallError } from \"@/src/core/index.js\";\nimport { ClientNotFoundError as ClientNotFoundErrorClass } from \"@/src/core/index.js\";\nimport type {\n Abi,\n ContractFunctionName,\n ContractFunctionReturnType,\n MulticallResult,\n} from \"@/src/types/index.js\";\n\n/**\n * Configuration for the mock CrossChainReader\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockCrossChainReaderConfig = {\n readAll?: <const TCalls extends readonly CrossChainCall[]>(\n calls: TCalls\n ) => Effect.Effect<Map<number, unknown[]>, ContractReadError | ClientNotFoundError>;\n\n readSame?: <TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, \"pure\" | \"view\">>(\n params: ReadSameParams<TAbi, TFunctionName>\n ) => Effect.Effect<\n Map<number, ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFunctionName>>,\n ContractReadError | ClientNotFoundError\n >;\n\n multicallAll?: <const TBatches extends readonly ChainMulticallBatch[]>(\n batches: TBatches\n ) => Effect.Effect<\n Map<number, readonly MulticallResult<unknown>[]>,\n MulticallError | ClientNotFoundError\n >;\n};\n\n/**\n * Creates a mock CrossChainReader layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainIds - The chainIds this mock supports (default: [1])\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockCrossChainReaderLayer();\n *\n * // Override specific methods\n * const layer = makeMockCrossChainReaderLayer({\n * readSame: (params) => {\n * const resultMap = new Map();\n * for (const chainId of params.chainIds) {\n * resultMap.set(chainId, 1000n);\n * }\n * return Effect.succeed(resultMap);\n * },\n * }, [1, 137, 42161]);\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const crossChainReader = yield* CrossChainReader;\n * const results = yield* crossChainReader.readSame({\n * chainIds: [1, 137],\n * address: tokenAddr,\n * abi: ERC20_ABI,\n * functionName: \"balanceOf\",\n * args: [userAddr],\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockCrossChainReaderLayer = (\n config: MockCrossChainReaderConfig = {},\n supportedChainIds: readonly number[] = [1]\n): Layer.Layer<CrossChainReader> => {\n const readAll =\n config.readAll ??\n (<const TCalls extends readonly CrossChainCall[]>(calls: TCalls) => {\n const resultMap = new Map<number, unknown[]>();\n const chainIds = new Set(calls.map((c) => c.chainId));\n\n for (const chainId of chainIds) {\n if (!supportedChainIds.includes(chainId)) {\n return Effect.fail(\n new ClientNotFoundErrorClass({\n chainId,\n message: `No client configured for chain ID ${chainId}`,\n })\n );\n }\n }\n\n for (const chainId of chainIds) {\n const chainCalls = calls.filter((c) => c.chainId === chainId);\n resultMap.set(\n chainId,\n chainCalls.map(() => 0n)\n );\n }\n\n return Effect.succeed(resultMap);\n });\n\n const readSame =\n config.readSame ??\n (<TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, \"pure\" | \"view\">>(\n params: ReadSameParams<TAbi, TFunctionName>\n ) => {\n const resultMap = new Map<\n number,\n ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFunctionName>\n >();\n\n for (const chainId of params.chainIds) {\n if (!supportedChainIds.includes(chainId)) {\n return Effect.fail(\n new ClientNotFoundErrorClass({\n chainId,\n message: `No client configured for chain ID ${chainId}`,\n })\n );\n }\n }\n\n for (const chainId of params.chainIds) {\n resultMap.set(\n chainId,\n 0n as ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFunctionName>\n );\n }\n\n return Effect.succeed(resultMap);\n });\n\n const multicallAll =\n config.multicallAll ??\n (<const TBatches extends readonly ChainMulticallBatch[]>(batches: TBatches) => {\n const resultMap = new Map<number, readonly MulticallResult<unknown>[]>();\n\n for (const batch of batches) {\n if (!supportedChainIds.includes(batch.chainId)) {\n return Effect.fail(\n new ClientNotFoundErrorClass({\n chainId: batch.chainId,\n message: `No client configured for chain ID ${batch.chainId}`,\n })\n );\n }\n }\n\n for (const batch of batches) {\n resultMap.set(\n batch.chainId,\n batch.calls.map(() => ({\n result: 0n,\n status: \"success\" as const,\n }))\n );\n }\n\n return Effect.succeed(resultMap);\n });\n\n const mockCrossChainReader: CrossChainReaderShape = {\n multicallAll,\n readAll,\n readSame,\n };\n\n return Layer.succeed(CrossChainReaderTag, CrossChainReaderTag.of(mockCrossChainReader));\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-deploy-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-deploy-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiDtE,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,gBAAgB,GACpB,wEAA+E,CAAC;AAElF,MAAM,eAAe,GAAuB;IAC1C,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,eAAe;IAChC,iBAAiB,EAAE,UAAU;IAC7B,iBAAiB,EAAE,WAAW;IAC9B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,MAAiB;IAC5B,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,IAAI;IACR,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,CAAC;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,aAAa,GAAsC;IACvD,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IACrD,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,gBAAgB;QAClC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,eAAe;KACzB,CAAC;IACJ,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5B,OAAO,EAAE,eAAe;YACxB,gBAAgB,EAAE,gBAAgB;YAClC,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC,CAAC;IACJ,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CACnD,CAAC;AA8BF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,SAAkC,EAAE,EACpC,gBAAgB,GAAG,CAAC,EACQ,EAAE,CAC9B,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IAEzD,MAAM,EAAE,gBAAgB,CACtB,gBAAgB,EAChB,MAAM,CAAC,MAAM,CAC6B;IAE5C,cAAc,EAAE,gBAAgB,CAC9B,gBAAgB,EAChB,MAAM,CAAC,cAAc,CAC6B;IACpD,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC7E,sBAAsB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,sBAAsB,CAAC;CAC1F,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-deploy-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-deploy-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiDtE,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,gBAAgB,GACpB,wEAA+E,CAAC;AAElF,MAAM,eAAe,GAAuB;IAC1C,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,eAAe;IAChC,iBAAiB,EAAE,UAAU;IAC7B,iBAAiB,EAAE,WAAW;IAC9B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,MAAiB;IAC5B,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,IAAI;IACR,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,CAAC;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,aAAa,GAAsC;IACvD,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IACrD,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,gBAAgB;QAClC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,eAAe;KACzB,CAAC;IACJ,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5B,OAAO,EAAE,eAAe;YACxB,gBAAgB,EAAE,gBAAgB;YAClC,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC,CAAC;IACJ,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CACnD,CAAC;AA8BF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,SAAkC,EAAE,EACpC,gBAAgB,GAAG,CAAC,EACQ,EAAE,CAC9B,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IAEzD,MAAM,EAAE,gBAAgB,CACtB,gBAAgB,EAChB,MAAM,CAAC,MAAM,CAC6B;IAE5C,cAAc,EAAE,gBAAgB,CAC9B,gBAAgB,EAChB,MAAM,CAAC,cAAc,CAC6B;IACpD,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC7E,sBAAsB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,sBAAsB,CAAC;CAC1F,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect, SubscriptionRef } from \"effect\";\nimport type { Abi, Address, ContractConstructorArgs, Hash, Hex, TransactionReceipt } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { DeployResult, DeployServiceShape } from \"@/src/deploy/index.js\";\nimport { DeployService } from \"@/src/deploy/index.js\";\nimport type { TxState } from \"@/src/tx/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\ntype DeployArgsField<TAbi extends Abi> =\n readonly [] extends ContractConstructorArgs<TAbi>\n ? { args?: ContractConstructorArgs<TAbi> | undefined }\n : { args: ContractConstructorArgs<TAbi> };\n\n/**\n * Configuration for the mock DeployService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockDeployServiceConfig = {\n deploy?: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n gas?: bigint;\n } & DeployArgsField<TAbi>\n ) => Effect.Effect<DeployResult>;\n\n deployAndTrack?: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n } & DeployArgsField<TAbi>\n ) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<TxState>;\n result: Effect.Effect<DeployResult>;\n }>;\n\n computeAddress?: (params: { from: Address; nonce: bigint }) => Effect.Effect<Address>;\n\n verifyDeployment?: (params: { chainId: number; address: Address }) => Effect.Effect<boolean>;\n\n verifyDeploymentStrict?: (params: {\n chainId: number;\n address: Address;\n expectedBytecode: Hex;\n }) => Effect.Effect<boolean>;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\nconst DEFAULT_BYTECODE =\n \"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063\" as Hex;\n\nconst DEFAULT_RECEIPT: TransactionReceipt = {\n blockHash: DEFAULT_HASH,\n blockNumber: 1000n,\n contractAddress: DEFAULT_ADDRESS,\n cumulativeGasUsed: MIN_TX_GAS,\n effectiveGasPrice: 1000000000n,\n from: DEFAULT_ADDRESS,\n gasUsed: MIN_TX_GAS,\n logs: [],\n logsBloom: \"0x00\" as Address,\n status: \"success\",\n to: null,\n transactionHash: DEFAULT_HASH,\n transactionIndex: 0,\n type: \"eip1559\",\n};\n\nconst defaultConfig: Required<MockDeployServiceConfig> = {\n computeAddress: () => Effect.succeed(DEFAULT_ADDRESS),\n deploy: () =>\n Effect.succeed({\n address: DEFAULT_ADDRESS,\n deployedBytecode: DEFAULT_BYTECODE,\n hash: DEFAULT_HASH,\n receipt: DEFAULT_RECEIPT,\n }),\n deployAndTrack: () =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<TxState>({ status: \"idle\" });\n const result = Effect.succeed({\n address: DEFAULT_ADDRESS,\n deployedBytecode: DEFAULT_BYTECODE,\n hash: DEFAULT_HASH,\n receipt: DEFAULT_RECEIPT,\n });\n return { result, stateRef };\n }),\n verifyDeployment: () => Effect.succeed(true),\n verifyDeploymentStrict: () => Effect.succeed(true),\n};\n\n/**\n * Creates a mock DeployService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockDeployServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockDeployServiceLayer({\n * deploy: () => Effect.succeed({\n * hash: \"0x...\",\n * address: \"0x...\",\n * receipt: { ... },\n * deployedBytecode: \"0x...\",\n * }),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const deployService = yield* DeployService;\n * const result = yield* deployService.deploy({ ... });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockDeployServiceLayer = (\n config: MockDeployServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<DeployService> =>\n makeMockServiceLayer(DeployService, defaultConfig, config, (merged) => ({\n computeAddress: (params) => merged.computeAddress(params),\n // Cast to widen error type from ClientNotFoundError to full DeployService errors\n deploy: withChainIdCheck(\n supportedChainId,\n merged.deploy\n ) as unknown as DeployServiceShape[\"deploy\"],\n // For deployAndTrack, cast the whole function to match the shape\n deployAndTrack: withChainIdCheck(\n supportedChainId,\n merged.deployAndTrack\n ) as unknown as DeployServiceShape[\"deployAndTrack\"],\n verifyDeployment: withChainIdCheck(supportedChainId, merged.verifyDeployment),\n verifyDeploymentStrict: withChainIdCheck(supportedChainId, merged.verifyDeploymentStrict),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-erc721-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-erc721-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAgF9F,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAElG,MAAM,aAAa,GAAsC;IAEvD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IAC3C,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,aAAa,EAAE,GAAG,EAAE,CAClB,MAAM,CAAC,OAAO,CAAC;QACb,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,iCAAiC;QAC9C,KAAK,EAAE,6BAA6B;QACpC,IAAI,EAAE,UAAU;KACjB,CAAC;IACJ,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IAClD,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAErC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IAC9C,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACpD,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACrD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC;IACjE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;CACjD,CAAC;AA0BF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,SAAkC,EAAE,EACpC,gBAAgB,GAAG,CAAC,EACQ,EAAE,CAC9B,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtE,OAAO,EAAE,sBAAsB,CAC7B,gBAAgB,EAChB,MAAM,CAAC,OAAO,CACkB;IAElC,SAAS,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC;IAC/D,aAAa,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC;IACvE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC7E,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;IACrD,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAkC;IAC5F,gBAAgB,EAAE,sBAAsB,CACtC,gBAAgB,EAChB,MAAM,CAAC,gBAAgB,CACkB;IAC3C,iBAAiB,EAAE,sBAAsB,CACvC,gBAAgB,EAChB,MAAM,CAAC,iBAAiB,CACkB;IAC5C,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC;IACzD,QAAQ,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAmC;IAC/F,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,YAAY,EAAE,sBAAsB,CAClC,gBAAgB,EAChB,MAAM,CAAC,YAAY,CACkB;CACxC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-erc721-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-erc721-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hash, Hex } from \"viem\";\nimport type { Erc721ServiceShape, NftMetadata } from \"@/src/erc721/index.js\";\nimport { Erc721Service } from \"@/src/erc721/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck, withWalletChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock Erc721Service\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockErc721ServiceConfig = {\n // Read methods\n ownerOf?: (params: {\n address: Address;\n chainId: number;\n tokenId: bigint;\n }) => Effect.Effect<Address>;\n balanceOf?: (params: {\n address: Address;\n chainId: number;\n owner: Address;\n }) => Effect.Effect<bigint>;\n getApproved?: (params: {\n address: Address;\n chainId: number;\n tokenId: bigint;\n }) => Effect.Effect<Address>;\n isApprovedForAll?: (params: {\n address: Address;\n chainId: number;\n operator: Address;\n owner: Address;\n }) => Effect.Effect<boolean>;\n tokenURI?: (params: {\n address: Address;\n chainId: number;\n tokenId: bigint;\n }) => Effect.Effect<string>;\n fetchMetadata?: (params: {\n address: Address;\n chainId: number;\n gateways?: { arweave?: string; ipfs?: string };\n tokenId: bigint;\n }) => Effect.Effect<NftMetadata>;\n name?: (params: { address: Address; chainId: number }) => Effect.Effect<string>;\n symbol?: (params: { address: Address; chainId: number }) => Effect.Effect<string>;\n totalSupply?: (params: { address: Address; chainId: number }) => Effect.Effect<bigint>;\n\n // Write methods\n approve?: (params: {\n account?: Address;\n address: Address;\n chainId: number;\n to: Address;\n tokenId: bigint;\n }) => Effect.Effect<Hash>;\n setApprovalForAll?: (params: {\n account?: Address;\n address: Address;\n approved: boolean;\n chainId: number;\n operator: Address;\n }) => Effect.Effect<Hash>;\n transferFrom?: (params: {\n account?: Address;\n address: Address;\n chainId: number;\n from: Address;\n to: Address;\n tokenId: bigint;\n }) => Effect.Effect<Hash>;\n safeTransferFrom?: (params: {\n account?: Address;\n address: Address;\n chainId: number;\n data?: Hex;\n from: Address;\n to: Address;\n tokenId: bigint;\n }) => Effect.Effect<Hash>;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\n\nconst defaultConfig: Required<MockErc721ServiceConfig> = {\n // Write defaults\n approve: () => Effect.succeed(DEFAULT_HASH),\n balanceOf: () => Effect.succeed(5n),\n fetchMetadata: () =>\n Effect.succeed({\n attributes: [],\n description: \"A mock NFT for testing purposes\",\n image: \"ipfs://QmMockHash/image.png\",\n name: \"Mock NFT\",\n }),\n getApproved: () => Effect.succeed(DEFAULT_ADDRESS),\n isApprovedForAll: () => Effect.succeed(false),\n name: () => Effect.succeed(\"MockNFT\"),\n // Read defaults\n ownerOf: () => Effect.succeed(DEFAULT_ADDRESS),\n safeTransferFrom: () => Effect.succeed(DEFAULT_HASH),\n setApprovalForAll: () => Effect.succeed(DEFAULT_HASH),\n symbol: () => Effect.succeed(\"MNFT\"),\n tokenURI: () => Effect.succeed(\"ipfs://QmMockHash/metadata.json\"),\n totalSupply: () => Effect.succeed(10000n),\n transferFrom: () => Effect.succeed(DEFAULT_HASH),\n};\n\n/**\n * Creates a mock Erc721Service layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockErc721ServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockErc721ServiceLayer({\n * ownerOf: () => Effect.succeed(\"0x...\" as Address),\n * balanceOf: () => Effect.succeed(10n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const erc721 = yield* Erc721Service;\n * const owner = yield* erc721.ownerOf({ ... });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockErc721ServiceLayer = (\n config: MockErc721ServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<Erc721Service> =>\n makeMockServiceLayer(Erc721Service, defaultConfig, config, (merged) => ({\n // Write methods use WalletNotConnectedError - cast to widen to expected error types\n approve: withWalletChainIdCheck(\n supportedChainId,\n merged.approve\n ) as Erc721ServiceShape[\"approve\"],\n // Read methods use ClientNotFoundError - cast where needed to widen error types\n balanceOf: withChainIdCheck(supportedChainId, merged.balanceOf),\n fetchMetadata: withChainIdCheck(supportedChainId, merged.fetchMetadata),\n getApproved: withChainIdCheck(supportedChainId, merged.getApproved),\n isApprovedForAll: withChainIdCheck(supportedChainId, merged.isApprovedForAll),\n name: withChainIdCheck(supportedChainId, merged.name),\n ownerOf: withChainIdCheck(supportedChainId, merged.ownerOf) as Erc721ServiceShape[\"ownerOf\"],\n safeTransferFrom: withWalletChainIdCheck(\n supportedChainId,\n merged.safeTransferFrom\n ) as Erc721ServiceShape[\"safeTransferFrom\"],\n setApprovalForAll: withWalletChainIdCheck(\n supportedChainId,\n merged.setApprovalForAll\n ) as Erc721ServiceShape[\"setApprovalForAll\"],\n symbol: withChainIdCheck(supportedChainId, merged.symbol),\n tokenURI: withChainIdCheck(supportedChainId, merged.tokenURI) as Erc721ServiceShape[\"tokenURI\"],\n totalSupply: withChainIdCheck(supportedChainId, merged.totalSupply),\n transferFrom: withWalletChainIdCheck(\n supportedChainId,\n merged.transferFrom\n ) as Erc721ServiceShape[\"transferFrom\"],\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-gas-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-gas-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,oBAAoB,GAAgB;IACxC,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,YAAY;IAC9B,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,YAAY;IAC1B,oBAAoB,EAAE,WAAW;CAClC,CAAC;AAEF,MAAM,yBAAyB,GAAkC;IAC/D,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;CACF,CAAC;AA0CF,MAAM,aAAa,GAAmC;IACpD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACnE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5C,CAAC;AA4BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA+B,EAAE,EACjC,gBAAgB,GAAG,CAAC,EACK,EAAE,CAC3B,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnE,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;IACrE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,kBAAkB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IACjF,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACjE,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;CAC5E,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-gas-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-gas-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,oBAAoB,GAAgB;IACxC,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,YAAY;IAC9B,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,YAAY;IAC1B,oBAAoB,EAAE,WAAW;CAClC,CAAC;AAEF,MAAM,yBAAyB,GAAkC;IAC/D,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;CACF,CAAC;AA0CF,MAAM,aAAa,GAAmC;IACpD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACnE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5C,CAAC;AA4BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA+B,EAAE,EACjC,gBAAgB,GAAG,CAAC,EACK,EAAE,CAC3B,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnE,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;IACrE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,kBAAkB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IACjF,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACjE,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;CAC5E,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type { FeeEstimate, GasPriceUnavailableError, GasSpeed } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\nconst DEFAULT_FEE_ESTIMATE: FeeEstimate = {\n confidence: 85,\n estimatedBaseFee: 30000000000n, // 30 gwei\n gasPrice: 45000000000n, // 45 gwei for legacy\n maxFeePerGas: 90000000000n, // 90 gwei\n maxPriorityFeePerGas: 1500000000n, // 1.5 gwei\n};\n\nconst DEFAULT_ALL_FEE_ESTIMATES: Record<GasSpeed, FeeEstimate> = {\n fast: {\n confidence: 95,\n estimatedBaseFee: 30000000000n,\n gasPrice: 60000000000n,\n maxFeePerGas: 110000000000n,\n maxPriorityFeePerGas: 2500000000n,\n },\n instant: {\n confidence: 99,\n estimatedBaseFee: 30000000000n,\n gasPrice: 80000000000n,\n maxFeePerGas: 140000000000n,\n maxPriorityFeePerGas: 5000000000n,\n },\n slow: {\n confidence: 70,\n estimatedBaseFee: 30000000000n,\n gasPrice: 35000000000n,\n maxFeePerGas: 70000000000n,\n maxPriorityFeePerGas: 1000000000n,\n },\n standard: {\n confidence: 85,\n estimatedBaseFee: 30000000000n,\n gasPrice: 45000000000n,\n maxFeePerGas: 90000000000n,\n maxPriorityFeePerGas: 1500000000n,\n },\n};\n\n/**\n * Configuration for the mock GasService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockGasServiceConfig = {\n estimateFees?: (params: {\n chainId: number;\n speed?: GasSpeed;\n }) => Effect.Effect<FeeEstimate, GasPriceUnavailableError | ClientNotFoundError>;\n\n getAllFeeEstimates?: (params: {\n chainId: number;\n }) => Effect.Effect<\n Record<GasSpeed, FeeEstimate>,\n GasPriceUnavailableError | ClientNotFoundError\n >;\n\n getBaseFee?: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n getMaxPriorityFee?: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n estimateGas?: (params: {\n chainId: number;\n data?: Hex;\n from?: Address;\n to: Address;\n value?: bigint;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n supportsEip1559?: (params: {\n chainId: number;\n }) => Effect.Effect<boolean, GasPriceUnavailableError | ClientNotFoundError>;\n};\n\nconst defaultConfig: Required<MockGasServiceConfig> = {\n estimateFees: () => Effect.succeed(DEFAULT_FEE_ESTIMATE),\n estimateGas: () => Effect.succeed(MIN_TX_GAS), // Standard transfer\n getAllFeeEstimates: () => Effect.succeed(DEFAULT_ALL_FEE_ESTIMATES),\n getBaseFee: () => Effect.succeed(30000000000n), // 30 gwei\n getMaxPriorityFee: () => Effect.succeed(1500000000n), // 1.5 gwei\n supportsEip1559: () => Effect.succeed(true),\n};\n\n/**\n * Creates a mock GasService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockGasServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockGasServiceLayer({\n * estimateFees: () => Effect.succeed({ maxFeePerGas: 100000000000n, ... }),\n * supportsEip1559: () => Effect.succeed(false),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const gasService = yield* GasService;\n * const fees = yield* gasService.estimateFees({ chainId: mainnet.id });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockGasServiceLayer = (\n config: MockGasServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<GasService> =>\n makeMockServiceLayer(GasService, defaultConfig, config, (merged) => ({\n estimateFees: withChainIdCheck(supportedChainId, merged.estimateFees),\n estimateGas: withChainIdCheck(supportedChainId, merged.estimateGas),\n getAllFeeEstimates: withChainIdCheck(supportedChainId, merged.getAllFeeEstimates),\n getBaseFee: withChainIdCheck(supportedChainId, merged.getBaseFee),\n getMaxPriorityFee: withChainIdCheck(supportedChainId, merged.getMaxPriorityFee),\n supportsEip1559: withChainIdCheck(supportedChainId, merged.supportsEip1559),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-nonce-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-nonce-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAoDtE,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC;AA+BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACO,EAAE,CAC7B,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAG1F,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1F,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;CACtD,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-nonce-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-nonce-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAoDtE,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC;AA+BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACO,EAAE,CAC7B,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAG1F,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1F,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;CACtD,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address } from \"viem\";\nimport type { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport { NonceService } from \"@/src/nonce/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock NonceService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockNonceServiceConfig = {\n getNext?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n reserve?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n release?: (params: {\n address: Address;\n chainId: number;\n nonce: bigint;\n }) => Effect.Effect<void, never>;\n\n confirm?: (params: {\n address: Address;\n chainId: number;\n nonce: bigint;\n }) => Effect.Effect<void, never>;\n\n getPendingCount?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n getConfirmedCount?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n getGaps?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint[], ClientNotFoundError>;\n\n sync?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n};\n\nconst defaultConfig: Required<MockNonceServiceConfig> = {\n confirm: () => Effect.succeed(undefined),\n getConfirmedCount: () => Effect.succeed(0n),\n getGaps: () => Effect.succeed([]),\n getNext: () => Effect.succeed(0n),\n getPendingCount: () => Effect.succeed(0n),\n release: () => Effect.succeed(undefined),\n reserve: () => Effect.succeed(0n),\n sync: () => Effect.succeed(0n),\n};\n\n/**\n * Creates a mock NonceService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockNonceServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockNonceServiceLayer({\n * getNext: () => Effect.succeed(5n),\n * reserve: () => Effect.succeed(5n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const nonceService = yield* NonceService;\n * const nonce = yield* nonceService.getNext({\n * chainId: mainnet.id,\n * address: \"0x...\",\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockNonceServiceLayer = (\n config: MockNonceServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<NonceService> =>\n makeMockServiceLayer(NonceService, defaultConfig, config, (merged) => ({\n // Methods that never fail - they succeed silently for unsupported chains\n confirm: (params) =>\n params.chainId === supportedChainId ? merged.confirm(params) : Effect.succeed(undefined),\n\n // Methods that can fail with ClientNotFoundError\n getConfirmedCount: withChainIdCheck(supportedChainId, merged.getConfirmedCount),\n getGaps: withChainIdCheck(supportedChainId, merged.getGaps),\n getNext: withChainIdCheck(supportedChainId, merged.getNext),\n getPendingCount: withChainIdCheck(supportedChainId, merged.getPendingCount),\n release: (params) =>\n params.chainId === supportedChainId ? merged.release(params) : Effect.succeed(undefined),\n reserve: withChainIdCheck(supportedChainId, merged.reserve),\n sync: withChainIdCheck(supportedChainId, merged.sync),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-public-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-public-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-public-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-public-client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Effect } from \"effect\";\nimport { Layer } from \"effect\";\nimport { constVoid as noop } from \"effect/Function\";\nimport type {\n Address,\n Block,\n Hash,\n Hex,\n TransactionReceipt,\n WatchContractEventParameters,\n} from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { PublicClientServiceShape } from \"@/src/core/index.js\";\nimport { PublicClientService } from \"@/src/core/index.js\";\nimport { makeChainIdGetter } from \"./helpers.js\";\n\n/**\n * Configuration for the mock PublicClient\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockPublicClientConfig = {\n // Contract methods\n readContract?: (params: unknown) => Promise<unknown>;\n multicall?: (\n params: unknown\n ) => Promise<Array<{ status: \"success\"; result: unknown } | { status: \"failure\"; error: Error }>>;\n estimateContractGas?: (params: unknown) => Promise<bigint>;\n simulateContract?: (params: unknown) => Promise<{ request: unknown; result: unknown }>;\n\n // Balance methods\n getBalance?: (params: {\n address: Address;\n blockTag?: \"latest\" | \"pending\";\n blockNumber?: bigint;\n }) => Promise<bigint>;\n\n // Transaction methods\n waitForTransactionReceipt?: (params: { hash: Hash }) => Promise<TransactionReceipt>;\n getTransactionConfirmations?: (\n params: { hash: Hash } | { transactionReceipt: TransactionReceipt }\n ) => Promise<bigint>;\n getTransactionCount?: (params: {\n address: Address;\n blockTag: \"latest\" | \"pending\";\n }) => Promise<number>;\n\n // Event methods\n watchContractEvent?: (params: WatchContractEventParameters) => () => void;\n getLogs?: (params: unknown) => Promise<unknown[]>;\n\n // Block methods\n getBlockNumber?: () => Promise<bigint>;\n getBlock?: (params: unknown) => Promise<Block>;\n watchBlockNumber?: (params: unknown) => () => void;\n watchBlocks?: (params: unknown) => () => void;\n watchEvent?: (params: unknown) => () => void;\n watchPendingTransactions?: (params: unknown) => () => void;\n\n // Gas methods\n getGasPrice?: () => Promise<bigint>;\n estimateMaxPriorityFeePerGas?: () => Promise<bigint>;\n estimateGas?: (params: unknown) => Promise<bigint>;\n\n // Bytecode methods\n getBytecode?: (params: { address: Address }) => Promise<Hex | null>;\n\n // ENS methods\n getEnsAddress?: (params: unknown) => Promise<Address | null>;\n getEnsName?: (params: unknown) => Promise<string | null>;\n getEnsAvatar?: (params: unknown) => Promise<string | null>;\n getEnsText?: (params: unknown) => Promise<string | null>;\n getEnsResolver?: (params: unknown) => Promise<Address | null>;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\nconst DEFAULT_RESOLVER = \"0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41\" as Address;\nconst DEFAULT_BYTECODE = \"0x608060405234801561001057600080fd5b50\" as Hex;\n\nconst DEFAULT_BLOCK: Block = {\n baseFeePerGas: 30000000000n,\n blobGasUsed: 0n,\n difficulty: 0n,\n excessBlobGas: 0n,\n extraData: \"0x\",\n gasLimit: 30000000n,\n gasUsed: 12000000n,\n hash: DEFAULT_HASH,\n logsBloom: \"0x00\",\n miner: \"0x0000000000000000000000000000000000000000\",\n mixHash: DEFAULT_HASH,\n nonce: \"0x0000000000000000\",\n number: 1000n,\n parentHash: DEFAULT_HASH,\n receiptsRoot: DEFAULT_HASH,\n sealFields: [],\n sha3Uncles: DEFAULT_HASH,\n size: 1024n,\n stateRoot: DEFAULT_HASH,\n timestamp: 1700000000n,\n totalDifficulty: 0n,\n transactions: [],\n transactionsRoot: DEFAULT_HASH,\n uncles: [],\n};\n\n/**\n * Creates a mock PublicClientService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockPublicClientLayer();\n *\n * // Override specific methods\n * const layer = makeMockPublicClientLayer({\n * readContract: async () => 1000n,\n * getEnsAddress: async () => \"0x...\",\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const reader = yield* ContractReader;\n * const result = yield* reader.read({ ... });\n * }).pipe(\n * Effect.provide(Layer.provide(ContractReaderLive, layer))\n * );\n * ```\n */\nexport const makeMockPublicClientLayer = (\n config: MockPublicClientConfig = {},\n supportedChainId = 1\n): Layer.Layer<PublicClientService> => {\n const defaultMulticall: NonNullable<MockPublicClientConfig[\"multicall\"]> = (params: unknown) => {\n const calls = (params as { contracts?: unknown[] }).contracts ?? [];\n return Promise.resolve(calls.map(() => ({ result: 100n, status: \"success\" as const })));\n };\n\n const defaultWaitForTransactionReceipt: NonNullable<\n MockPublicClientConfig[\"waitForTransactionReceipt\"]\n > = async (params: { hash: Hash }): Promise<TransactionReceipt> => ({\n blockHash: DEFAULT_HASH,\n blockNumber: 1000n,\n contractAddress: null,\n cumulativeGasUsed: MIN_TX_GAS,\n effectiveGasPrice: 1000000000n,\n from: DEFAULT_ADDRESS,\n gasUsed: MIN_TX_GAS,\n logs: [],\n logsBloom: \"0x00\" as Address,\n status: \"success\",\n to: \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Address,\n transactionHash: params.hash,\n transactionIndex: 0,\n type: \"eip1559\",\n });\n\n const {\n estimateContractGas = async () => MIN_TX_GAS,\n estimateGas = async () => MIN_TX_GAS,\n estimateMaxPriorityFeePerGas = async () => 1500000000n,\n getBalance = async () => 1000000000000000000n,\n getBlock = async () => DEFAULT_BLOCK,\n getBlockNumber = async () => 1000n,\n getBytecode = async () => DEFAULT_BYTECODE,\n getEnsAddress = async () => DEFAULT_ADDRESS,\n getEnsAvatar = async () => \"https://example.com/avatar.png\",\n getEnsName = async () => \"mock.eth\",\n getEnsResolver = async () => DEFAULT_RESOLVER,\n getEnsText = async () => \"mock-text-record\",\n getGasPrice = async () => 45000000000n,\n getLogs = async () => [],\n getTransactionConfirmations = async () => 3n,\n getTransactionCount = async () => 0,\n multicall = defaultMulticall,\n readContract = async () => 100n,\n simulateContract = async () => ({ request: {}, result: true }),\n waitForTransactionReceipt = defaultWaitForTransactionReceipt,\n watchBlockNumber = () => noop,\n watchBlocks = () => noop,\n watchContractEvent = () => noop,\n watchEvent = () => noop,\n watchPendingTransactions = () => noop,\n } = config;\n\n // Create mock PublicClient\n const mockPublicClient = {\n chain: { id: supportedChainId },\n estimateContractGas,\n estimateGas,\n estimateMaxPriorityFeePerGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBytecode,\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n getGasPrice,\n getLogs,\n getTransactionConfirmations,\n getTransactionCount,\n multicall,\n readContract,\n simulateContract,\n transport: { type: \"http\", url: \"http://localhost\" },\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n } as unknown as ReturnType<PublicClientServiceShape[\"get\"]> extends Effect.Effect<\n infer A,\n infer _E,\n infer _R\n >\n ? A\n : never;\n\n return Layer.succeed(\n PublicClientService,\n PublicClientService.of({\n get: makeChainIdGetter(supportedChainId, () => mockPublicClient),\n })\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-signature-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-signature-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA2E,CAAC;AAmEjG,MAAM,aAAa,GAAyC;IAC1D,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACvD,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAuD;IACpF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CACZ,sIAA6I,CAC9I;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5D,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,CACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAiE;IACjG,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAC7B,MAAM,CAAC,OAAO,CAAC;QACb,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,GAAG;KACP,CAAC;IACJ,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAyD;CAC/E,CAAC;AA+BF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,SAAqC,EAAE,EACR,EAAE,CACjC,oBAAoB,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,aAAa,EAAE,MAAM,CAAC,aAAuD;IAC7E,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,uBAAuB,EACrB,MAAM,CAAC,uBAA2E;IACpF,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,eAAe,EAAE,MAAM,CAAC,eAA2D;CACpF,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-signature-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-signature-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA2E,CAAC;AAmEjG,MAAM,aAAa,GAAyC;IAC1D,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACvD,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAuD;IACpF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CACZ,sIAA6I,CAC9I;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5D,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,CACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAiE;IACjG,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAC7B,MAAM,CAAC,OAAO,CAAC;QACb,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,GAAG;KACP,CAAC;IACJ,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAyD;CAC/E,CAAC;AA+BF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,SAAqC,EAAE,EACR,EAAE,CACjC,oBAAoB,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,aAAa,EAAE,MAAM,CAAC,aAAuD;IAC7E,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,uBAAuB,EACrB,MAAM,CAAC,uBAA2E;IACpF,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,eAAe,EAAE,MAAM,CAAC,eAA2D;CACpF,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hex, TypedData, TypedDataDomain } from \"viem\";\nimport type {\n InvalidSignatureError,\n SignatureRecoveryError,\n SignatureServiceShape,\n SignatureVerificationError,\n} from \"@/src/signature/index.js\";\nimport { SignatureService } from \"@/src/signature/index.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hex;\n\n/**\n * Configuration for the mock SignatureService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSignatureServiceConfig = {\n verifyMessage?: (params: {\n address: Address;\n message: string | Uint8Array;\n signature: Hex;\n }) => Effect.Effect<boolean, SignatureVerificationError>;\n\n verifyTypedData?: <\n const TTypedData extends TypedData,\n TPrimaryType extends keyof TTypedData,\n >(params: {\n address: Address;\n domain: TypedDataDomain;\n types: TTypedData;\n primaryType: TPrimaryType;\n message: Record<string, unknown>;\n signature: Hex;\n }) => Effect.Effect<boolean, SignatureVerificationError>;\n\n recoverAddress?: (params: {\n message: string | Uint8Array;\n signature: Hex;\n }) => Effect.Effect<Address, SignatureRecoveryError>;\n\n recoverTypedDataAddress?: <\n const TTypedData extends TypedData,\n TPrimaryType extends keyof TTypedData,\n >(params: {\n domain: TypedDataDomain;\n types: TTypedData;\n primaryType: TPrimaryType;\n message: Record<string, unknown>;\n signature: Hex;\n }) => Effect.Effect<Address, SignatureRecoveryError>;\n\n splitSignature?: (signature: Hex) => Effect.Effect<\n {\n r: Hex;\n s: Hex;\n v: bigint;\n },\n InvalidSignatureError\n >;\n\n joinSignature?: (params: { r: Hex; s: Hex; v: bigint }) => Effect.Effect<Hex, never>;\n\n hashMessage?: (message: string | Uint8Array) => Effect.Effect<Hex, never>;\n\n hashTypedData?: <\n const TTypedData extends TypedData,\n TPrimaryType extends keyof TTypedData,\n >(params: {\n domain: TypedDataDomain;\n types: TTypedData;\n primaryType: TPrimaryType;\n message: Record<string, unknown>;\n }) => Effect.Effect<Hex, never>;\n};\n\nconst defaultConfig: Required<MockSignatureServiceConfig> = {\n hashMessage: (_message) => Effect.succeed(DEFAULT_HASH),\n hashTypedData: (_params) =>\n Effect.succeed(DEFAULT_HASH) as ReturnType<SignatureServiceShape[\"hashTypedData\"]>,\n joinSignature: (_params) =>\n Effect.succeed(\n \"0x1234567890123456789012345678901234567890123456789012345678901234abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd1b\" as Hex\n ),\n recoverAddress: (_params) => Effect.succeed(DEFAULT_ADDRESS),\n recoverTypedDataAddress: (_params) =>\n Effect.succeed(DEFAULT_ADDRESS) as ReturnType<SignatureServiceShape[\"recoverTypedDataAddress\"]>,\n splitSignature: (_signature) =>\n Effect.succeed({\n r: \"0x1234567890123456789012345678901234567890123456789012345678901234\" as Hex,\n s: \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Hex,\n v: 27n,\n }),\n verifyMessage: (_params) => Effect.succeed(true),\n verifyTypedData: (_params) =>\n Effect.succeed(true) as ReturnType<SignatureServiceShape[\"verifyTypedData\"]>,\n};\n\n/**\n * Creates a mock SignatureService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockSignatureServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockSignatureServiceLayer({\n * verifyMessage: () => Effect.succeed(true),\n * recoverAddress: () => Effect.succeed(\"0x...\" as Address),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const signatureService = yield* SignatureService;\n * const isValid = yield* signatureService.verifyMessage({\n * address: \"0x...\",\n * message: \"Hello\",\n * signature: \"0x...\",\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockSignatureServiceLayer = (\n config: MockSignatureServiceConfig = {}\n): Layer.Layer<SignatureService> =>\n makeMockServiceLayer(SignatureService, defaultConfig, config, (merged) => ({\n hashMessage: merged.hashMessage,\n hashTypedData: merged.hashTypedData as SignatureServiceShape[\"hashTypedData\"],\n joinSignature: merged.joinSignature,\n recoverAddress: merged.recoverAddress,\n recoverTypedDataAddress:\n merged.recoverTypedDataAddress as SignatureServiceShape[\"recoverTypedDataAddress\"],\n splitSignature: merged.splitSignature,\n verifyMessage: merged.verifyMessage,\n verifyTypedData: merged.verifyTypedData as SignatureServiceShape[\"verifyTypedData\"],\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-simulation-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-simulation-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiCtE,MAAM,yBAAyB,GAAqB;IAClD,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,aAAa,GAA0C;IAC3D,kBAAkB,EAAE,CAAC,MAAwB,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACzD,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,OAAO,MAAM,CAAC,OAAO,CACnB,qCAAqC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,UAAU,GAAG,CAC7I,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC;CAC3E,CAAC;AA+BF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,SAAsC,EAAE,EACxC,gBAAgB,GAAG,CAAC,EACY,EAAE,CAClC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC;IAE3E,QAAQ,EAAE,gBAAgB,CACxB,gBAAgB,EAChB,MAAM,CAAC,QAAQ,CACiC;IAClD,cAAc,EAAE,gBAAgB,CAC9B,gBAAgB,EAChB,MAAM,CAAC,cAAc,CACiC;CACzD,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-simulation-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-simulation-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiCtE,MAAM,yBAAyB,GAAqB;IAClD,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,aAAa,GAA0C;IAC3D,kBAAkB,EAAE,CAAC,MAAwB,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACzD,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,OAAO,MAAM,CAAC,OAAO,CACnB,qCAAqC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,UAAU,GAAG,CAC7I,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC;CAC3E,CAAC;AA+BF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,SAAsC,EAAE,EACxC,gBAAgB,GAAG,CAAC,EACY,EAAE,CAClC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC;IAE3E,QAAQ,EAAE,gBAAgB,CACxB,gBAAgB,EAChB,MAAM,CAAC,QAAQ,CACiC;IAClD,cAAc,EAAE,gBAAgB,CAC9B,gBAAgB,EAChB,MAAM,CAAC,cAAc,CACiC;CACzD,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Abi, Address, Hex } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport { formatPercent } from \"@/src/internal/index.js\";\nimport type { SimulationResult, SimulationServiceShape } from \"@/src/simulation/index.js\";\nimport { SimulationService } from \"@/src/simulation/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock SimulationService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSimulationServiceConfig = {\n simulate?: (params: {\n chainId: number;\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n blockNumber?: bigint;\n }) => Effect.Effect<SimulationResult>;\n\n simulateBundle?: (params: {\n chainId: number;\n transactions: Array<{\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n }>;\n blockNumber?: bigint;\n }) => Effect.Effect<SimulationResult[]>;\n\n getReadableSummary?: (result: SimulationResult, abi?: Abi) => Effect.Effect<string>;\n};\n\nconst DEFAULT_SIMULATION_RESULT: SimulationResult = {\n gasLimit: 30000000n,\n gasUsed: MIN_TX_GAS,\n logs: [],\n stateDiff: [],\n success: true,\n trace: [],\n};\n\nconst defaultConfig: Required<MockSimulationServiceConfig> = {\n getReadableSummary: (result: SimulationResult) => {\n const status = result.success ? \"✓ Success\" : \"✗ Failed\";\n const gasPercent =\n result.gasLimit > 0n ? formatPercent(Number(result.gasUsed) / Number(result.gasLimit)) : \"0%\";\n return Effect.succeed(\n `Mock simulation summary:\\nStatus: ${status}\\nGas: ${result.gasUsed.toLocaleString()} / ${result.gasLimit.toLocaleString()} (${gasPercent})`\n );\n },\n simulate: () => Effect.succeed(DEFAULT_SIMULATION_RESULT),\n simulateBundle: (params) =>\n Effect.succeed(params.transactions.map(() => DEFAULT_SIMULATION_RESULT)),\n};\n\n/**\n * Creates a mock SimulationService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockSimulationServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockSimulationServiceLayer({\n * simulate: () => Effect.succeed({\n * success: true,\n * gasUsed: 50000n,\n * gasLimit: 100000n,\n * logs: [],\n * stateDiff: [],\n * }),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const simService = yield* SimulationService;\n * const result = yield* simService.simulate({ ... });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockSimulationServiceLayer = (\n config: MockSimulationServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<SimulationService> =>\n makeMockServiceLayer(SimulationService, defaultConfig, config, (merged) => ({\n getReadableSummary: (result, abi) => merged.getReadableSummary(result, abi),\n // Cast to widen error type from ClientNotFoundError to TenderlyErrors\n simulate: withChainIdCheck(\n supportedChainId,\n merged.simulate\n ) as unknown as SimulationServiceShape[\"simulate\"],\n simulateBundle: withChainIdCheck(\n supportedChainId,\n merged.simulateBundle\n ) as unknown as SimulationServiceShape[\"simulateBundle\"],\n }));\n"]}
|
|
@@ -15,7 +15,7 @@ export type MockSubscriptionServiceConfig = {
|
|
|
15
15
|
topics?: (Hex | Hex[] | null)[];
|
|
16
16
|
pollingInterval?: number;
|
|
17
17
|
}) => Effect.Effect<Stream.Stream<Log, never>>;
|
|
18
|
-
|
|
18
|
+
watchPendingTxs?: (params: {
|
|
19
19
|
chainId: number;
|
|
20
20
|
pollingInterval?: number;
|
|
21
21
|
}) => Effect.Effect<Stream.Stream<Hash, never>>;
|
|
@@ -38,7 +38,7 @@ export type MockSubscriptionServiceConfig = {
|
|
|
38
38
|
stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;
|
|
39
39
|
stream: Stream.Stream<Log, never>;
|
|
40
40
|
}>;
|
|
41
|
-
|
|
41
|
+
watchPendingTxsRetrying?: (params: {
|
|
42
42
|
chainId: number;
|
|
43
43
|
pollingInterval?: number;
|
|
44
44
|
retry?: SubscriptionRetryConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-subscription-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3D,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AASnE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAChC,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAE/C,
|
|
1
|
+
{"version":3,"file":"mock-subscription-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"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"}
|