@prb/effect-evm 1.0.0-beta.0 → 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.d.ts +14 -10
- package/dist/contract/cross-chain-reader.d.ts.map +1 -1
- package/dist/contract/cross-chain-reader.js +2 -8
- 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 +10 -8
- package/dist/core/errors/transaction.d.ts.map +1 -1
- package/dist/core/errors/transaction.js +126 -4
- 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 -16
- 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.d.ts +3 -10
- package/dist/testing-kit/mock-cross-chain-reader.d.ts.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 +8 -15
- 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":"local-storage.js","sourceRoot":"","sources":["../../../../src/platform/browser/cursor-store/local-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../../src/platform/browser/cursor-store/local-storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Layer, Ref } from \"effect\";\nimport { DEFAULT_CURSOR_FLUSH_DELAY } from \"@/src/constants/index.js\";\nimport type { StreamCursor } from \"@/src/events/index.js\";\nimport { CursorStore } from \"@/src/events/index.js\";\nimport { BrowserStorage } from \"@/src/platform/browser/storage/index.js\";\n\n/**\n * Key format for cursor storage entries.\n * Format: ew3:v1:cursor:{cursorKey}\n */\nconst makeCursorStorageKey = (cursorKey: string): string => `ew3:v1:cursor:${cursorKey}`;\n\n/**\n * Serialize a StreamCursor to JSON string.\n * Converts bigint lastBlockNumber to string for JSON compatibility.\n */\nconst serializeCursor = (cursor: StreamCursor): string =>\n JSON.stringify({\n address: cursor.address,\n chainId: cursor.chainId,\n eventName: cursor.eventName,\n lastBlockNumber: cursor.lastBlockNumber.toString(),\n lastLogIndex: cursor.lastLogIndex,\n updatedAt: cursor.updatedAt,\n });\n\n/**\n * Deserialize a JSON string to StreamCursor.\n * Converts string lastBlockNumber back to bigint.\n */\nconst deserializeCursor = (json: string): StreamCursor => {\n const parsed = JSON.parse(json);\n return {\n address: parsed.address,\n chainId: parsed.chainId,\n eventName: parsed.eventName,\n lastBlockNumber: BigInt(parsed.lastBlockNumber),\n lastLogIndex: parsed.lastLogIndex,\n updatedAt: parsed.updatedAt,\n };\n};\n\n/**\n * Type for pending write operations.\n */\ntype PendingWrite = {\n cursor: StreamCursor;\n scheduledAt: number;\n};\n\n/**\n * Live implementation of CursorStore using browser localStorage.\n *\n * Features:\n * - Stores cursors in localStorage with key prefix \"ew3:v1:cursor:\"\n * - Write throttling: buffers writes to max once per 250ms per key\n * - Automatic corruption handling: logs warning and deletes corrupt entries\n * - Depends on BrowserStorage service for low-level storage operations\n */\nexport const LocalStorageCursorStoreLive = Layer.effect(\n CursorStore,\n Effect.gen(function* () {\n const storage = yield* BrowserStorage;\n\n // Store pending writes per key with their scheduled time\n const pendingWrites = yield* Ref.make(new Map<string, PendingWrite>());\n\n // Store active timers per key to prevent multiple timers\n const activeTimers = yield* Ref.make(new Map<string, NodeJS.Timeout>());\n\n /**\n * Get cursor from storage.\n * On decode error: logs warning, deletes corrupt entry, returns null.\n */\n const get = (key: string) =>\n Effect.gen(function* () {\n const storageKey = makeCursorStorageKey(key);\n const value = yield* storage.get(storageKey);\n\n if (value === null) {\n return null;\n }\n\n try {\n return deserializeCursor(value);\n } catch (_error) {\n // Log warning about corrupt data\n yield* Effect.logWarning(`Corrupt cursor data for key \"${key}\", deleting entry`);\n\n // Delete corrupt entry\n yield* storage.remove(storageKey).pipe(Effect.catchAll(() => Effect.void));\n\n return null;\n }\n });\n\n /**\n * Set cursor in storage with write throttling.\n * Writes are buffered to max once per 250ms per key.\n */\n const set = (key: string, cursor: StreamCursor) =>\n Effect.gen(function* () {\n const now = Date.now();\n const storageKey = makeCursorStorageKey(key);\n\n // Update pending write\n yield* Ref.update(pendingWrites, (map) => {\n const newMap = new Map(map);\n newMap.set(key, { cursor, scheduledAt: now });\n return newMap;\n });\n\n // Check if timer already exists for this key\n const timers = yield* Ref.get(activeTimers);\n const existingTimer = timers.get(key);\n\n if (existingTimer !== undefined) {\n // Timer already scheduled, pending write will be picked up\n return;\n }\n\n // Schedule flush after 250ms\n const flushWrite = Effect.gen(function* () {\n // Wait 250ms\n yield* Effect.sleep(DEFAULT_CURSOR_FLUSH_DELAY);\n\n // Get the pending write\n const pending = yield* Ref.get(pendingWrites);\n const pendingWrite = pending.get(key);\n\n if (pendingWrite === undefined) {\n return;\n }\n\n // Remove from pending\n yield* Ref.update(pendingWrites, (map) => {\n const newMap = new Map(map);\n newMap.delete(key);\n return newMap;\n });\n\n // Remove timer reference\n yield* Ref.update(activeTimers, (map) => {\n const newMap = new Map(map);\n newMap.delete(key);\n return newMap;\n });\n\n // Perform the actual write\n const serialized = serializeCursor(pendingWrite.cursor);\n yield* storage.set(storageKey, serialized);\n });\n\n // Fork the flush operation so it runs in background\n const _fiber = yield* Effect.fork(flushWrite);\n\n // Store a placeholder timer reference (we can't store the actual timeout)\n // The effect fiber itself manages the scheduling\n yield* Ref.update(activeTimers, (map) => {\n const newMap = new Map(map);\n // Use a placeholder value since we're using Effect.fork\n newMap.set(key, {} as NodeJS.Timeout);\n return newMap;\n });\n });\n\n /**\n * Delete cursor from storage.\n */\n const deleteKey = (key: string) =>\n Effect.gen(function* () {\n const storageKey = makeCursorStorageKey(key);\n\n // Remove any pending write\n yield* Ref.update(pendingWrites, (map) => {\n const newMap = new Map(map);\n newMap.delete(key);\n return newMap;\n });\n\n // Remove from storage\n yield* storage.remove(storageKey);\n });\n\n return CursorStore.of({\n delete: deleteKey,\n get,\n set,\n });\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AAExC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/browser/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AAExC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,qBAAqB,CAAC","sourcesContent":["// Storage\n\n// Cursor Store\nexport * from \"./cursor-store/index.js\";\n// Layers\nexport * from \"./layers.js\";\nexport * from \"./storage/index.js\";\n\n// Tx Persistence\nexport * from \"./tx-persistence/index.js\";\n// Tx Store\nexport * from \"./tx-store/index.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../../src/platform/browser/layers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAalE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,OAAgC,EAAE,EAAE,CACnF,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAMtE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAkC,EAAE,EAAE,CACjF,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAM9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAiC,EAAE,EAAE,CAC/E,KAAK,CAAC,QAAQ,CACZ,gCAAgC,CAAC,MAAM,CAAC,EACxC,4BAA4B,CAAC,MAAM,CAAC,CAErC,CAAC"}
|
|
1
|
+
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../../src/platform/browser/layers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAalE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,OAAgC,EAAE,EAAE,CACnF,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAMtE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAkC,EAAE,EAAE,CACjF,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAM9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAiC,EAAE,EAAE,CAC/E,KAAK,CAAC,QAAQ,CACZ,gCAAgC,CAAC,MAAM,CAAC,EACxC,4BAA4B,CAAC,MAAM,CAAC,CAErC,CAAC","sourcesContent":["import { Layer } from \"effect\";\nimport { LocalStorageCursorStoreLive } from \"./cursor-store/index.js\";\nimport { BrowserStorageLive } from \"./storage/index.js\";\nimport type { LocalStorageTxStoreConfig } from \"./tx-store/index.js\";\nimport { makeLocalStorageTxStoreLive } from \"./tx-store/index.js\";\n// import { TxPersistenceWithRehydrationLive } from \"./tx-persistence/index.js\";\n\nexport type BrowserPersistenceConfig = {\n namespace?: string; // For future namespacing support\n maxTxs?: number;\n ttlMs?: number;\n};\n\n/**\n * Create a CursorStore layer backed by browser localStorage.\n * Requires BrowserStorage to be provided.\n */\nexport const makeLocalStorageCursorStoreLayer = (_config?: { namespace?: string }) =>\n LocalStorageCursorStoreLive.pipe(Layer.provide(BrowserStorageLive));\n\n/**\n * Create a TxStore layer backed by browser localStorage with configurable limits.\n * Requires BrowserStorage to be provided.\n */\nexport const makeLocalStorageTxStoreLayer = (config?: LocalStorageTxStoreConfig) =>\n makeLocalStorageTxStoreLive(config).pipe(Layer.provide(BrowserStorageLive));\n\n/**\n * Combined browser persistence layer providing both cursor and transaction storage.\n * All storage is backed by browser localStorage.\n */\nexport const makeBrowserPersistenceLayer = (config?: BrowserPersistenceConfig) =>\n Layer.mergeAll(\n makeLocalStorageCursorStoreLayer(config),\n makeLocalStorageTxStoreLayer(config)\n // TxPersistence will be added when ready\n );\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/platform/browser/storage/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CACxF,yBAAyB,EACzB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAMJ,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,WAAW,EAA6B,CAC5F,2BAA2B,EAC3B;IACE,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAMJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/platform/browser/storage/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CACxF,yBAAyB,EACzB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAMJ,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,WAAW,EAA6B,CAC5F,2BAA2B,EAC3B;IACE,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAMJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\n/**\n * Error thrown when browser storage is unavailable.\n * This can occur in SSR contexts, when storage is blocked by browser settings,\n * or when a SecurityError is thrown by the browser.\n */\nexport class StorageUnavailableError extends Schema.TaggedError<StorageUnavailableError>()(\n \"StorageUnavailableError\",\n {\n message: Schema.String,\n }\n) {}\n\n/**\n * Error thrown when storage quota is exceeded.\n * Occurs when attempting to store data beyond the browser's storage limit.\n */\nexport class StorageQuotaExceededError extends Schema.TaggedError<StorageQuotaExceededError>()(\n \"StorageQuotaExceededError\",\n {\n key: Schema.String,\n message: Schema.String,\n }\n) {}\n\n/**\n * Error thrown when stored data cannot be decoded.\n * This can occur due to schema mismatches or data corruption.\n */\nexport class StorageDecodeError extends Schema.TaggedError<StorageDecodeError>()(\n \"StorageDecodeError\",\n {\n cause: Schema.Unknown,\n key: Schema.String,\n message: Schema.String,\n }\n) {}\n\n/**\n * Union type of all storage errors.\n */\nexport type StorageError = StorageUnavailableError | StorageQuotaExceededError | StorageDecodeError;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAElB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAElB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["// Errors\nexport {\n StorageDecodeError,\n type StorageError,\n StorageQuotaExceededError,\n StorageUnavailableError,\n} from \"./errors.js\";\n\n// BrowserStorage service\nexport { BrowserStorage, BrowserStorageLive } from \"./local-storage.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../../src/platform/browser/storage/local-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../../src/platform/browser/storage/local-storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { StorageError } from \"./errors.js\";\nimport {\n StorageDecodeError,\n StorageQuotaExceededError,\n StorageUnavailableError,\n} from \"./errors.js\";\n\n/**\n * Service interface for browser storage operations.\n * Provides a safe, Effect-based API for localStorage access.\n */\nexport type BrowserStorage = {\n /**\n * Retrieve a value from storage by key.\n * Returns null if the key does not exist.\n */\n readonly get: (key: string) => Effect.Effect<string | null, StorageError>;\n\n /**\n * Store a value in storage under the given key.\n */\n readonly set: (key: string, value: string) => Effect.Effect<void, StorageError>;\n\n /**\n * Remove a value from storage by key.\n */\n readonly remove: (key: string) => Effect.Effect<void, StorageError>;\n};\n\n/**\n * Context tag for the BrowserStorage service.\n */\nexport const BrowserStorage = Context.GenericTag<BrowserStorage>(\"ew3/BrowserStorage\");\n\n/**\n * Check if localStorage is available in the current environment.\n */\nconst isStorageAvailable = (): boolean =>\n typeof window !== \"undefined\" && typeof window.localStorage !== \"undefined\";\n\n/**\n * Live implementation of BrowserStorage using the browser's localStorage API.\n */\nexport const BrowserStorageLive = Layer.succeed(\n BrowserStorage,\n BrowserStorage.of({\n get: (key: string) =>\n Effect.try({\n catch: (error) => {\n if (error instanceof StorageUnavailableError) {\n return error;\n }\n if (error instanceof Error && error.name === \"SecurityError\") {\n return new StorageUnavailableError({\n message: `localStorage access denied: ${error.message}`,\n });\n }\n return new StorageDecodeError({\n cause: error,\n key,\n message: \"Failed to retrieve value from localStorage\",\n });\n },\n try: () => {\n if (!isStorageAvailable()) {\n throw new StorageUnavailableError({\n message: \"localStorage is not available (SSR or blocked by browser)\",\n });\n }\n return window.localStorage.getItem(key);\n },\n }),\n\n remove: (key: string) =>\n Effect.try({\n catch: (error) => {\n if (error instanceof StorageUnavailableError) {\n return error;\n }\n if (error instanceof Error && error.name === \"SecurityError\") {\n return new StorageUnavailableError({\n message: `localStorage access denied: ${error.message}`,\n });\n }\n return new StorageDecodeError({\n cause: error,\n key,\n message: \"Failed to remove value from localStorage\",\n });\n },\n try: () => {\n if (!isStorageAvailable()) {\n throw new StorageUnavailableError({\n message: \"localStorage is not available (SSR or blocked by browser)\",\n });\n }\n window.localStorage.removeItem(key);\n },\n }),\n\n set: (key: string, value: string) =>\n Effect.try({\n catch: (error) => {\n if (error instanceof StorageUnavailableError) {\n return error;\n }\n if (\n error instanceof Error &&\n (error.name === \"QuotaExceededError\" || error.name === \"NS_ERROR_DOM_QUOTA_REACHED\")\n ) {\n return new StorageQuotaExceededError({\n key,\n message: \"Storage quota exceeded\",\n });\n }\n if (error instanceof Error && error.name === \"SecurityError\") {\n return new StorageUnavailableError({\n message: `localStorage access denied: ${error.message}`,\n });\n }\n return new StorageDecodeError({\n cause: error,\n key,\n message: \"Failed to store value in localStorage\",\n });\n },\n try: () => {\n if (!isStorageAvailable()) {\n throw new StorageUnavailableError({\n message: \"localStorage is not available (SSR or blocked by browser)\",\n });\n }\n window.localStorage.setItem(key, value);\n },\n }),\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EAGjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EAGjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC","sourcesContent":["export {\n TxPersistence,\n TxPersistenceLive,\n type TxPersistenceMeta,\n type TxPersistenceShape,\n TxPersistenceWithRehydrationLive,\n} from \"./persistence.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-persistence/persistence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-persistence/persistence.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope, SubscriptionRef } from \"effect\";\nimport { Clock, Context, Effect, Layer, Stream } from \"effect\";\nimport type { Hash } from \"viem\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type { PersistedTx, TxStoreShape } from \"@/src/platform/browser/tx-store/index.js\";\nimport { makeTxId, TxStore } from \"@/src/platform/browser/tx-store/index.js\";\nimport type { TxRequestMeta, TxState } from \"@/src/tx/index.js\";\nimport { TxManager } from \"@/src/tx/index.js\";\n\n/**\n * Optional metadata for persisting a transaction.\n */\nexport type TxPersistenceMeta = {\n /**\n * Human-readable description of the transaction.\n */\n readonly description?: string;\n\n /**\n * User-defined tags for categorization.\n */\n readonly tags?: string[];\n\n /**\n * Transaction request metadata (gas, nonce, etc).\n */\n readonly txRequest?: TxRequestMeta;\n};\n\n/**\n * Service shape for TxPersistence.\n * Combines TxManager tracking with TxStore persistence.\n */\nexport type TxPersistenceShape = {\n /**\n * Track a transaction and persist its state changes to the store.\n *\n * @param chainId - Chain ID for the transaction\n * @param hash - Transaction hash to track\n * @param meta - Optional metadata (description, tags, txRequest)\n * @returns SubscriptionRef with live transaction state updates\n */\n readonly trackAndPersist: (\n chainId: number,\n hash: Hash,\n meta?: TxPersistenceMeta\n ) => Effect.Effect<SubscriptionRef.SubscriptionRef<TxState>, ClientNotFoundError, Scope.Scope>;\n};\n\n/**\n * Context tag for TxPersistence service.\n */\nexport class TxPersistence extends Context.Tag(\"ew3/TxPersistence\")<\n TxPersistence,\n TxPersistenceShape\n>() {}\n\n/**\n * Convert TxState to PersistedTx status.\n */\nfunction mapTxStateToStatus(state: TxState): PersistedTx[\"status\"] {\n switch (state.status) {\n case \"idle\":\n case \"simulating\":\n case \"estimated\":\n case \"signing\":\n case \"submitted\":\n return \"submitted\";\n case \"pending\":\n return \"pending\";\n case \"mined\":\n return \"mined\";\n case \"failed\":\n return \"failed\";\n case \"replaced\":\n // Replaced is a transition state, maintain current status\n return \"submitted\";\n }\n}\n\n/**\n * Convert TxRequestMeta to PersistedTxMeta (string representation).\n */\nfunction convertTxRequestMeta(meta?: TxRequestMeta) {\n if (!meta) {\n return undefined;\n }\n\n return {\n gas: meta.gas?.toString(),\n gasPrice: meta.gasPrice?.toString(),\n maxFeePerGas: meta.maxFeePerGas?.toString(),\n maxPriorityFeePerGas: meta.maxPriorityFeePerGas?.toString(),\n nonce: meta.nonce?.toString(),\n type: meta.type?.toString(),\n };\n}\n\n/**\n * Handle replacement events by updating the store with new hash and replacement history.\n */\nfunction handleReplacement(options: {\n txId: string;\n state: Extract<TxState, { status: \"replaced\" }>;\n lastStatus: PersistedTx[\"status\"];\n initialTx: PersistedTx;\n txStore: TxStoreShape;\n}) {\n return Effect.gen(function* () {\n const timestamp = yield* Clock.currentTimeMillis;\n const existingTx = yield* options.txStore.get(options.txId);\n const replacements = existingTx?.replacements ?? [];\n\n const updatedTx: PersistedTx = {\n ...(existingTx ?? options.initialTx),\n currentHash: options.state.newHash,\n replacements: [\n ...replacements,\n {\n at: timestamp,\n newHash: options.state.newHash,\n oldHash: options.state.oldHash,\n reason: options.state.reason,\n },\n ],\n status: options.lastStatus,\n updatedAt: timestamp,\n };\n\n yield* options.txStore.upsert(updatedTx).pipe(Effect.catchAll(() => Effect.void));\n\n return options.state.newHash;\n });\n}\n\n/**\n * Handle status changes by updating the store.\n */\nfunction handleStatusChange(options: {\n txId: string;\n newStatus: PersistedTx[\"status\"];\n currentHash: Hash;\n initialTx: PersistedTx;\n txStore: TxStoreShape;\n}) {\n return Effect.gen(function* () {\n const timestamp = yield* Clock.currentTimeMillis;\n const existingTx = yield* options.txStore.get(options.txId);\n\n const updatedTx: PersistedTx = {\n ...(existingTx ?? options.initialTx),\n currentHash: options.currentHash,\n status: options.newStatus,\n updatedAt: timestamp,\n };\n\n yield* options.txStore.upsert(updatedTx).pipe(Effect.catchAll(() => Effect.void));\n\n // Return true if terminal state reached\n return options.newStatus === \"mined\" || options.newStatus === \"failed\";\n });\n}\n\n/**\n * Live implementation of TxPersistence service.\n */\nexport const TxPersistenceLive = Layer.effect(\n TxPersistence,\n Effect.gen(function* () {\n const txManager = yield* TxManager;\n const txStore = yield* TxStore;\n\n return TxPersistence.of({\n trackAndPersist: (chainId: number, hash: Hash, meta?: TxPersistenceMeta) =>\n Effect.scoped(\n Effect.gen(function* () {\n const createdAt = yield* Clock.currentTimeMillis;\n const txId = makeTxId(chainId, hash);\n\n // Create initial persisted entry\n const initialTx: PersistedTx = {\n chainId,\n createdAt,\n currentHash: hash,\n description: meta?.description,\n id: txId,\n replacements: [],\n rootHash: hash,\n status: \"submitted\",\n tags: meta?.tags,\n txMeta: convertTxRequestMeta(meta?.txRequest),\n updatedAt: createdAt,\n };\n\n // Persist initial state (ignore errors)\n yield* txStore.upsert(initialTx).pipe(Effect.catchAll(() => Effect.void));\n\n // Track the transaction\n const stateRef = yield* txManager.track(chainId, hash);\n\n // Fork a fiber to listen to state changes and update the store\n yield* Effect.forkScoped(\n Effect.gen(function* () {\n let lastStatus: PersistedTx[\"status\"] = \"submitted\";\n let currentHash = hash;\n\n yield* Stream.runForEach(stateRef.changes, (state) =>\n Effect.gen(function* () {\n const newStatus = mapTxStateToStatus(state);\n\n // Handle replacement events\n if (state.status === \"replaced\") {\n currentHash = yield* handleReplacement({\n initialTx,\n lastStatus,\n state,\n txId,\n txStore,\n });\n return;\n }\n\n // Only update on status change\n if (newStatus !== lastStatus) {\n lastStatus = newStatus;\n const isTerminal = yield* handleStatusChange({\n currentHash,\n initialTx,\n newStatus,\n txId,\n txStore,\n });\n\n if (isTerminal) {\n yield* Effect.interrupt;\n }\n }\n })\n );\n })\n );\n\n return stateRef;\n })\n ),\n });\n })\n);\n\n/**\n * Rehydrate all in-flight transactions from the store.\n * Creates tracking fibers for each transaction.\n */\nconst rehydrateAll = Effect.gen(function* () {\n const txStore = yield* TxStore;\n const txManager = yield* TxManager;\n\n const inFlightTxs = yield* txStore.getInFlight().pipe(Effect.catchAll(() => Effect.succeed([])));\n\n yield* Effect.all(\n inFlightTxs.map(\n (tx: PersistedTx) =>\n Effect.gen(function* () {\n // Track the current hash\n const stateRef = yield* txManager.track(tx.chainId, tx.currentHash);\n\n // Fork persistence fiber\n yield* Effect.forkScoped(\n Effect.gen(function* () {\n let lastStatus = tx.status;\n let currentHash = tx.currentHash;\n\n yield* Stream.runForEach(stateRef.changes, (state) =>\n Effect.gen(function* () {\n const newStatus = mapTxStateToStatus(state);\n\n // Handle replacement events\n if (state.status === \"replaced\") {\n currentHash = yield* handleReplacement({\n initialTx: tx,\n lastStatus,\n state,\n txId: tx.id,\n txStore,\n });\n return;\n }\n\n // Only update on status change\n if (newStatus !== lastStatus) {\n lastStatus = newStatus;\n const isTerminal = yield* handleStatusChange({\n currentHash,\n initialTx: tx,\n newStatus,\n txId: tx.id,\n txStore,\n });\n\n if (isTerminal) {\n yield* Effect.interrupt;\n }\n }\n })\n );\n })\n );\n }).pipe(Effect.catchAll(() => Effect.void)) // Ignore errors for individual txs\n ),\n { concurrency: \"unbounded\" }\n );\n});\n\n/**\n * Live implementation with auto-rehydration.\n * On initialization, loads all in-flight transactions and starts tracking them.\n */\nexport const TxPersistenceWithRehydrationLive = Layer.scopedDiscard(\n Effect.forkScoped(rehydrateAll)\n).pipe(Layer.provideMerge(TxPersistenceLive));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/errors.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/errors.ts"],"names":[],"mappings":"","sourcesContent":["import type { StorageError } from \"../storage/index.js\";\n\n/**\n * Union type of all TxStore errors.\n * Re-exports storage errors since TxStore depends on the storage layer.\n */\nexport type TxStoreError = StorageError;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAqB,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,QAAQ,GAIT,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAqB,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,QAAQ,GAIT,MAAM,YAAY,CAAC","sourcesContent":["// Types\n\n// Errors\nexport type { TxStoreError } from \"./errors.js\";\n// LocalStorage implementation\nexport {\n type LocalStorageTxStoreConfig,\n LocalStorageTxStoreLive,\n makeLocalStorageTxStoreLive,\n} from \"./local-storage.js\";\n\n// TxStore service\nexport { InMemoryTxStoreLive, TxStore, type TxStoreShape } from \"./store.js\";\nexport {\n makeTxId,\n type PersistedTx,\n type PersistedTxMeta,\n type TxReplacement,\n} from \"./types.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/local-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/local-storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Layer } from \"effect\";\nimport { BrowserStorage } from \"../storage/index.js\";\nimport type { TxStoreError } from \"./errors.js\";\nimport { TxStore } from \"./store.js\";\nimport type { PersistedTx } from \"./types.js\";\n\n/**\n * Configuration for LocalStorageTxStore.\n */\nexport type LocalStorageTxStoreConfig = {\n /**\n * Maximum number of transactions to retain in storage.\n * When exceeded, oldest terminal (mined/failed) transactions are pruned.\n * @default 200\n */\n maxTxs?: number;\n};\n\n/**\n * Default configuration for LocalStorageTxStore.\n */\nconst DEFAULT_CONFIG: Required<LocalStorageTxStoreConfig> = {\n maxTxs: 200,\n};\n\n/**\n * Key prefix for transaction storage.\n */\nconst TX_KEY_PREFIX = \"ew3:v1:tx:\";\n\n/**\n * Key for the transaction index (stores array of tx IDs).\n */\nconst INDEX_KEY = \"ew3:v1:tx:index\";\n\n/**\n * Key prefix for quarantined corrupt transactions.\n */\nconst CORRUPT_KEY_PREFIX = \"ew3:v1:tx:corrupt:\";\n\n/**\n * Generate a storage key for a transaction.\n */\nfunction makeTxKey(chainId: number, rootHash: string): string {\n return `${TX_KEY_PREFIX}${chainId}:${rootHash}`;\n}\n\n/**\n * Parse transaction ID into chainId and rootHash.\n */\nfunction parseTxId(id: string): { chainId: number; rootHash: string } | null {\n const parts = id.split(\":\");\n if (parts.length !== 2) {\n return null;\n }\n\n const chainId = Number.parseInt(parts[0], 10);\n if (Number.isNaN(chainId)) {\n return null;\n }\n\n return { chainId, rootHash: parts[1] };\n}\n\n/**\n * Read the transaction index from storage.\n */\nfunction readIndex(storage: BrowserStorage): Effect.Effect<string[], TxStoreError> {\n return Effect.gen(function* () {\n const raw = yield* storage.get(INDEX_KEY);\n if (raw === null) {\n return [];\n }\n\n try {\n const parsed = JSON.parse(raw);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n // Index corrupted, reset to empty\n return [];\n }\n });\n}\n\n/**\n * Write the transaction index to storage.\n */\nfunction writeIndex(storage: BrowserStorage, index: string[]): Effect.Effect<void, TxStoreError> {\n return storage.set(INDEX_KEY, JSON.stringify(index));\n}\n\n/**\n * Read a single transaction from storage.\n * Returns null if not found or if decode fails (quarantines corrupt data).\n */\nfunction readTx(\n storage: BrowserStorage,\n id: string\n): Effect.Effect<PersistedTx | null, TxStoreError> {\n return Effect.gen(function* () {\n const parsed = parseTxId(id);\n if (!parsed) {\n return null;\n }\n\n const key = makeTxKey(parsed.chainId, parsed.rootHash);\n const raw = yield* storage.get(key);\n if (raw === null) {\n return null;\n }\n\n try {\n const tx = JSON.parse(raw) as PersistedTx;\n return tx;\n } catch (_error) {\n // Quarantine corrupt data\n const quarantineKey = `${CORRUPT_KEY_PREFIX}${id}:${Date.now()}`;\n yield* storage.set(quarantineKey, raw);\n yield* storage.remove(key);\n return null;\n }\n });\n}\n\n/**\n * Write a single transaction to storage.\n */\nfunction writeTx(storage: BrowserStorage, tx: PersistedTx): Effect.Effect<void, TxStoreError> {\n return Effect.gen(function* () {\n const parsed = parseTxId(tx.id);\n if (!parsed) {\n return;\n }\n\n const key = makeTxKey(parsed.chainId, parsed.rootHash);\n const raw = JSON.stringify(tx);\n yield* storage.set(key, raw);\n });\n}\n\n/**\n * Delete a single transaction from storage.\n */\nfunction deleteTx(storage: BrowserStorage, id: string): Effect.Effect<void, TxStoreError> {\n return Effect.gen(function* () {\n const parsed = parseTxId(id);\n if (!parsed) {\n return;\n }\n\n const key = makeTxKey(parsed.chainId, parsed.rootHash);\n yield* storage.remove(key);\n });\n}\n\n/**\n * Prune oldest terminal transactions if maxTxs is exceeded.\n */\nfunction pruneIfNeeded(\n storage: BrowserStorage,\n txs: PersistedTx[],\n maxTxs: number\n): Effect.Effect<PersistedTx[], TxStoreError> {\n return Effect.gen(function* () {\n if (txs.length <= maxTxs) {\n return txs;\n }\n\n // Separate in-flight from terminal\n const inFlight = txs.filter((tx) => tx.status === \"submitted\" || tx.status === \"pending\");\n const terminal = txs.filter((tx) => tx.status === \"mined\" || tx.status === \"failed\");\n\n // Sort terminal by updatedAt (oldest first)\n terminal.sort((a, b) => a.updatedAt - b.updatedAt);\n\n // Calculate how many to prune\n const totalAfterPrune = maxTxs;\n const keepTerminal = Math.max(0, totalAfterPrune - inFlight.length);\n const toPrune = terminal.slice(0, terminal.length - keepTerminal);\n\n // Delete pruned transactions\n for (const tx of toPrune) {\n yield* deleteTx(storage, tx.id);\n }\n\n // Return remaining transactions\n const kept = terminal.slice(terminal.length - keepTerminal);\n return [...inFlight, ...kept];\n });\n}\n\n/**\n * LocalStorage-based implementation of TxStore.\n * Uses an index to track all transaction IDs for efficient retrieval.\n */\nexport const makeLocalStorageTxStoreLive = (\n config: LocalStorageTxStoreConfig = {}\n): Layer.Layer<TxStore, never, BrowserStorage> => {\n const finalConfig = { ...DEFAULT_CONFIG, ...config };\n\n return Layer.effect(\n TxStore,\n Effect.gen(function* () {\n const storage = yield* BrowserStorage;\n\n return TxStore.of({\n delete: (id: string) =>\n Effect.gen(function* () {\n // Delete the transaction\n yield* deleteTx(storage, id);\n\n // Remove from index\n const index = yield* readIndex(storage);\n const newIndex = index.filter((txId) => txId !== id);\n yield* writeIndex(storage, newIndex);\n }),\n\n get: (id: string) => readTx(storage, id),\n getAll: () =>\n Effect.gen(function* () {\n const index = yield* readIndex(storage);\n const txs: PersistedTx[] = [];\n\n for (const id of index) {\n const tx = yield* readTx(storage, id);\n if (tx !== null) {\n txs.push(tx);\n }\n }\n\n // Update index to remove any IDs that failed to load\n const validIds = txs.map((tx) => tx.id);\n if (validIds.length !== index.length) {\n yield* writeIndex(storage, validIds);\n }\n\n return txs;\n }),\n\n getInFlight: () =>\n Effect.gen(function* () {\n const index = yield* readIndex(storage);\n const inFlight: PersistedTx[] = [];\n\n for (const id of index) {\n const tx = yield* readTx(storage, id);\n if (tx !== null && (tx.status === \"submitted\" || tx.status === \"pending\")) {\n inFlight.push(tx);\n }\n }\n\n return inFlight;\n }),\n\n upsert: (tx: PersistedTx) =>\n Effect.gen(function* () {\n // Write the transaction\n yield* writeTx(storage, tx);\n\n // Update index\n const index = yield* readIndex(storage);\n if (!index.includes(tx.id)) {\n index.push(tx.id);\n }\n\n // Load all transactions for pruning\n const allTxs: PersistedTx[] = [];\n for (const id of index) {\n const loadedTx = yield* readTx(storage, id);\n if (loadedTx !== null) {\n allTxs.push(loadedTx);\n }\n }\n\n // Prune if needed\n const prunedTxs = yield* pruneIfNeeded(storage, allTxs, finalConfig.maxTxs);\n const prunedIds = prunedTxs.map((t) => t.id);\n\n // Write updated index\n yield* writeIndex(storage, prunedIds);\n }),\n });\n })\n );\n};\n\n/**\n * LocalStorage-based TxStore layer with default configuration.\n */\nexport const LocalStorageTxStoreLive = makeLocalStorageTxStoreLive();\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAuCrD,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAyB;CAAG;AAMnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAuB,CAAC,CAAC;IAE9D,OAAO,OAAO,CAAC,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,EAAU,EAAE,EAAE,CACrB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEJ,GAAG,EAAE,CAAC,EAAU,EAAE,EAAE,CAClB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAC7B,CAAC,CAAC;QACJ,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC;QAEJ,WAAW,EAAE,GAAG,EAAE,CAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACpC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAC7D,CAAC;QACJ,CAAC,CAAC;QAEJ,MAAM,EAAE,CAAC,EAAe,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;KACL,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAuCrD,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAyB;CAAG;AAMnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAuB,CAAC,CAAC;IAE9D,OAAO,OAAO,CAAC,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,EAAU,EAAE,EAAE,CACrB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEJ,GAAG,EAAE,CAAC,EAAU,EAAE,EAAE,CAClB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAC7B,CAAC,CAAC;QACJ,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC;QAEJ,WAAW,EAAE,GAAG,EAAE,CAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACpC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAC7D,CAAC;QACJ,CAAC,CAAC;QAEJ,MAAM,EAAE,CAAC,EAAe,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;KACL,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC","sourcesContent":["import { Context, Effect, Layer, Ref } from \"effect\";\nimport type { TxStoreError } from \"./errors.js\";\nimport type { PersistedTx } from \"./types.js\";\n\n/**\n * Service interface for transaction store operations.\n * Provides CRUD operations for persisted transaction records.\n */\nexport type TxStoreShape = {\n /**\n * Retrieve all transactions from the store.\n */\n readonly getAll: () => Effect.Effect<PersistedTx[], TxStoreError>;\n\n /**\n * Retrieve a single transaction by ID.\n * Returns null if the transaction does not exist.\n */\n readonly get: (id: string) => Effect.Effect<PersistedTx | null, TxStoreError>;\n\n /**\n * Insert or update a transaction in the store.\n */\n readonly upsert: (tx: PersistedTx) => Effect.Effect<void, TxStoreError>;\n\n /**\n * Delete a transaction from the store by ID.\n */\n readonly delete: (id: string) => Effect.Effect<void, TxStoreError>;\n\n /**\n * Retrieve all in-flight transactions (submitted or pending status).\n */\n readonly getInFlight: () => Effect.Effect<PersistedTx[], TxStoreError>;\n};\n\n/**\n * Context tag for the TxStore service.\n */\nexport class TxStore extends Context.Tag(\"ew3/TxStore\")<TxStore, TxStoreShape>() {}\n\n/**\n * In-memory implementation of TxStore using a Ref-based Map.\n * Useful for testing or when persistence is not required.\n */\nexport const InMemoryTxStoreLive = Layer.effect(\n TxStore,\n Effect.gen(function* () {\n const store = yield* Ref.make(new Map<string, PersistedTx>());\n\n return TxStore.of({\n delete: (id: string) =>\n Effect.gen(function* () {\n yield* Ref.update(store, (map) => {\n const newMap = new Map(map);\n newMap.delete(id);\n return newMap;\n });\n }),\n\n get: (id: string) =>\n Effect.gen(function* () {\n const map = yield* Ref.get(store);\n return map.get(id) ?? null;\n }),\n getAll: () =>\n Effect.gen(function* () {\n const map = yield* Ref.get(store);\n return Array.from(map.values());\n }),\n\n getInFlight: () =>\n Effect.gen(function* () {\n const map = yield* Ref.get(store);\n return Array.from(map.values()).filter(\n (tx) => tx.status === \"submitted\" || tx.status === \"pending\"\n );\n }),\n\n upsert: (tx: PersistedTx) =>\n Effect.gen(function* () {\n yield* Ref.update(store, (map) => {\n const newMap = new Map(map);\n newMap.set(tx.id, tx);\n return newMap;\n });\n }),\n });\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/types.ts"],"names":[],"mappings":"AAuJA,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,QAAc;IACtD,OAAO,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platform/browser/tx-store/types.ts"],"names":[],"mappings":"AAuJA,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,QAAc;IACtD,OAAO,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;AAClC,CAAC","sourcesContent":["import type { Hash } from \"viem\";\n\n/**\n * Represents a transaction replacement event (cancellation, repricing, or replacement).\n */\nexport type TxReplacement = {\n /**\n * Unix timestamp (milliseconds) when the replacement occurred.\n */\n at: number;\n\n /**\n * The original transaction hash that was replaced.\n */\n oldHash: Hash;\n\n /**\n * The new transaction hash after replacement.\n */\n newHash: Hash;\n\n /**\n * The reason for the replacement.\n */\n reason: \"cancelled\" | \"replaced\" | \"repriced\";\n};\n\n/**\n * Optional metadata about transaction gas parameters.\n * Stored as decimal strings to support bigint serialization.\n */\nexport type PersistedTxMeta = {\n /**\n * Gas limit as decimal string.\n */\n gas?: string;\n\n /**\n * Gas price as decimal string (legacy transactions).\n */\n gasPrice?: string;\n\n /**\n * Max fee per gas as decimal string (EIP-1559 transactions).\n */\n maxFeePerGas?: string;\n\n /**\n * Max priority fee per gas as decimal string (EIP-1559 transactions).\n */\n maxPriorityFeePerGas?: string;\n\n /**\n * Transaction nonce as decimal string.\n */\n nonce?: string;\n\n /**\n * Transaction type as decimal string (0 = legacy, 2 = EIP-1559, etc.).\n */\n type?: string;\n};\n\n/**\n * Persisted transaction record stored in browser storage.\n * Tracks the full lifecycle of a transaction including replacements.\n */\nexport type PersistedTx = {\n /**\n * Unique identifier: `${chainId}:${rootHash}`\n */\n id: string;\n\n /**\n * Chain ID where the transaction was submitted.\n */\n chainId: number;\n\n /**\n * The first submitted transaction hash (never changes).\n */\n rootHash: Hash;\n\n /**\n * The current transaction hash (updated after replacements).\n */\n currentHash: Hash;\n\n /**\n * Current status of the transaction.\n */\n status: \"submitted\" | \"pending\" | \"mined\" | \"failed\";\n\n /**\n * Unix timestamp (milliseconds) when the transaction was first created.\n */\n createdAt: number;\n\n /**\n * Unix timestamp (milliseconds) when the transaction was last updated.\n */\n updatedAt: number;\n\n /**\n * History of transaction replacements.\n */\n replacements: TxReplacement[];\n\n /**\n * Optional transaction metadata (gas parameters, nonce, etc.).\n */\n txMeta?: PersistedTxMeta;\n\n /**\n * Recipient address.\n */\n to?: string;\n\n /**\n * Sender address.\n */\n from?: string;\n\n /**\n * Transaction value as decimal string.\n */\n value?: string;\n\n /**\n * Transaction calldata as hex string.\n */\n data?: string;\n\n /**\n * Human-readable description of the transaction.\n */\n description?: string;\n\n /**\n * User-defined tags for categorization.\n */\n tags?: string[];\n};\n\n/**\n * Generate a unique transaction ID from chain ID and root hash.\n *\n * @param chainId - The chain ID\n * @param rootHash - The root transaction hash\n * @returns Transaction ID in format `${chainId}:${rootHash}`\n */\nexport function makeTxId(chainId: number, rootHash: Hash): string {\n return `${chainId}:${rootHash}`;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC","sourcesContent":["export * from \"./layers.js\";\nexport * from \"./transports.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/presets/layers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/presets/layers.ts"],"names":[],"mappings":"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","sourcesContent":["import { FetchHttpClient } from \"@effect/platform\";\nimport { Effect, Layer, Option } from \"effect\";\nimport type { Chain, PublicClient, Transport, WalletClient } from \"viem\";\nimport { createPublicClient, createWalletClient, custom, fallback, webSocket } from \"viem\";\nimport type { BalanceService } from \"@/src/balance/index.js\";\nimport { BalanceServiceLive } from \"@/src/balance/index.js\";\nimport type { BlockService } from \"@/src/block/index.js\";\nimport { BlockServiceLive } from \"@/src/block/index.js\";\nimport type { ContractPipeline, ContractReader, ContractWriter } from \"@/src/contract/index.js\";\nimport {\n ContractPipelineLive,\n ContractReaderLive,\n ContractWriterLive,\n} from \"@/src/contract/index.js\";\nimport {\n ClientNotFoundError,\n PublicClientService,\n WalletClientService,\n WalletNotConnectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport type { DeployService } from \"@/src/deploy/index.js\";\nimport { DeployServiceLive } from \"@/src/deploy/index.js\";\nimport type { Eip7702Service } from \"@/src/eip7702/index.js\";\nimport { Eip7702ServiceLive } from \"@/src/eip7702/index.js\";\nimport type { EnsResolver } from \"@/src/ens/index.js\";\nimport { EnsResolverLive } from \"@/src/ens/index.js\";\nimport type { Erc721Service } from \"@/src/erc721/index.js\";\nimport { Erc721ServiceLive } from \"@/src/erc721/index.js\";\nimport type {\n CursorStore,\n CursorStream,\n EventBackfill,\n EventStream,\n ReliableEventStream,\n} from \"@/src/events/index.js\";\nimport {\n CursorStreamLive,\n EventBackfillLive,\n EventStreamLive,\n InMemoryCursorStoreLive,\n ReliableEventStreamLive,\n} from \"@/src/events/index.js\";\nimport type { GasService } from \"@/src/gas/index.js\";\nimport { GasServiceLive } from \"@/src/gas/index.js\";\nimport { parseHexInt } from \"@/src/internal/index.js\";\nimport type { NonceService } from \"@/src/nonce/index.js\";\nimport { NonceServiceLive } from \"@/src/nonce/index.js\";\nimport type { ChainHead, ContractQuery, MulticallBatcher, QueryClient } from \"@/src/query/index.js\";\nimport {\n ChainHeadLive,\n ContractQueryLive,\n MulticallBatcherLive,\n QueryClientLive,\n} from \"@/src/query/index.js\";\nimport type { RequestDedup, RpcCache } from \"@/src/rpc/index.js\";\nimport { makeRpcCacheLive, RequestDedupLive } from \"@/src/rpc/index.js\";\nimport type { SignatureService } from \"@/src/signature/index.js\";\nimport { SignatureServiceLive } from \"@/src/signature/index.js\";\nimport type { SimulationService } from \"@/src/simulation/index.js\";\nimport { SimulationServiceLive } from \"@/src/simulation/index.js\";\nimport type { SubscriptionService } from \"@/src/subscriptions/index.js\";\nimport { SubscriptionServiceLive } from \"@/src/subscriptions/index.js\";\nimport type { TxManager, TxReplacement } from \"@/src/tx/index.js\";\nimport { TxManagerLive, TxReplacementLive } from \"@/src/tx/index.js\";\nimport type { WalletLifecycle, WalletProvider, WalletService } from \"@/src/wallet/index.js\";\nimport {\n makeWalletLifecycleLive,\n makeWalletProviderRefLive,\n makeWalletServiceLive,\n WalletLifecycleFromProviderRefLive,\n WalletProviderRef,\n WalletServiceFromProviderRefLive,\n} from \"@/src/wallet/index.js\";\nimport type { HttpTransportOptions } from \"./transports.js\";\nimport { makeHttpTransport } from \"./transports.js\";\n\nconst UNKNOWN_CHAIN_ID = 0;\n\nexport type TransportRetryConfig = {\n /** The max number of times to retry. */\n readonly retryCount?: number | undefined;\n /** Base delay (in ms) between retries. */\n readonly retryDelay?: number | undefined;\n /** Timeout (in ms) for requests. */\n readonly timeout?: number | undefined;\n};\n\nexport type TransportCircuitBreakerConfig = {\n /**\n * Open the circuit after this many consecutive failures.\n * @default 5\n */\n readonly failureThreshold?: number | undefined;\n /**\n * Time (ms) to keep the circuit open before allowing a trial request.\n * @default 15_000\n */\n readonly resetTimeoutMs?: number | undefined;\n};\n\nexport type RpcMiddlewareConfig = {\n /**\n * Transport-level retry options (applied to URL-based transports).\n * Note: viem also has built-in retry for some transports; this config is passed through.\n */\n readonly retry?: TransportRetryConfig | undefined;\n /** Simple circuit breaker guarding transport request/subscribe */\n readonly circuitBreaker?: TransportCircuitBreakerConfig | undefined;\n /**\n * Optional in-flight request dedup for safe methods only.\n * Safe-method allowlist is intentionally strict.\n */\n readonly dedup?: boolean | undefined;\n};\n\nexport type ChainConfig = {\n readonly chainId: number;\n readonly chain: Chain;\n /** HTTP RPC URLs (fallback order). Required unless `transport` is provided. */\n readonly rpcUrls: readonly string[];\n /** Optional WS RPC URLs (fallback order). Used for subscription-backed operations when present. */\n readonly wsUrls?: readonly string[] | undefined;\n /**\n * Escape hatch: provide a fully constructed viem transport.\n * Takes precedence over `rpcUrls`/`wsUrls`/`http` options.\n */\n readonly transport?: Transport | undefined;\n /** HTTP transport options applied per URL when building from `rpcUrls`. */\n readonly http?: TransportRetryConfig | undefined;\n /** WebSocket transport options applied per URL when building from `wsUrls`. */\n readonly ws?:\n | (TransportRetryConfig & {\n readonly keepAlive?: boolean | undefined;\n readonly reconnect?: boolean | undefined;\n })\n | undefined;\n /** Optional middleware wrappers. */\n readonly rpcMiddleware?: RpcMiddlewareConfig | undefined;\n};\n\nconst toHttpOptions = (retry: TransportRetryConfig | undefined): HttpTransportOptions => ({\n retryCount: retry?.retryCount,\n retryDelay: retry?.retryDelay,\n timeout: retry?.timeout,\n});\n\nconst safeMethodAllowlist = new Set([\n \"eth_blockNumber\",\n \"eth_call\",\n \"eth_chainId\",\n \"eth_feeHistory\",\n \"eth_gasPrice\",\n \"eth_getBalance\",\n \"eth_getBlockByHash\",\n \"eth_getBlockByNumber\",\n \"eth_getCode\",\n \"eth_getLogs\",\n \"eth_getStorageAt\",\n \"eth_getTransactionByHash\",\n \"eth_getTransactionCount\",\n \"eth_getTransactionReceipt\",\n \"net_version\",\n]);\n\nconst stableStringify = (value: unknown): string =>\n JSON.stringify(value, (_, v) => (typeof v === \"bigint\" ? v.toString() : v));\n\nconst withDedup =\n (transport: Transport): Transport =>\n (args) => {\n const inner = transport(args);\n const inflight = new Map<string, ReturnType<typeof inner.request>>();\n\n const request = ((rpcRequest: unknown) => {\n const method = (rpcRequest as { method?: unknown }).method;\n if (typeof method !== \"string\" || !safeMethodAllowlist.has(method)) {\n return inner.request(rpcRequest as never);\n }\n\n const chainId = args.chain?.id ?? \"unknown\";\n const key = `${chainId}:${method}:${stableStringify((rpcRequest as { params?: unknown }).params)}`;\n\n const existing = inflight.get(key);\n if (existing) {\n return existing;\n }\n\n const promise = inner.request(rpcRequest as never);\n inflight.set(key, promise);\n\n (promise as Promise<unknown>).finally(() => {\n inflight.delete(key);\n });\n\n return promise;\n }) as unknown as typeof inner.request;\n\n return { ...inner, request };\n };\n\nconst withCircuitBreaker = (\n transport: Transport,\n config: TransportCircuitBreakerConfig\n): Transport => {\n const failureThreshold = config.failureThreshold ?? 5;\n const resetTimeoutMs = config.resetTimeoutMs ?? 15_000;\n\n let consecutiveFailures = 0;\n let openedAtMs: number | undefined;\n\n const isOpen = (): boolean =>\n openedAtMs !== undefined && Date.now() - openedAtMs < resetTimeoutMs;\n\n const noteFailure = () => {\n consecutiveFailures += 1;\n if (consecutiveFailures >= failureThreshold && openedAtMs === undefined) {\n openedAtMs = Date.now();\n }\n };\n\n const noteSuccess = () => {\n consecutiveFailures = 0;\n openedAtMs = undefined;\n };\n\n return (args) => {\n const inner = transport(args);\n\n const request = ((rpcRequest: unknown) => {\n if (isOpen()) {\n return Promise.reject(new Error(\"RPC circuit breaker is open\")) as ReturnType<\n typeof inner.request\n >;\n }\n\n const result = inner.request(rpcRequest as never);\n return (result as Promise<unknown>).then(\n (resultValue) => {\n noteSuccess();\n return resultValue;\n },\n (e) => {\n noteFailure();\n throw e;\n }\n ) as ReturnType<typeof inner.request>;\n }) as unknown as typeof inner.request;\n\n const value = (() => {\n const v = inner.value;\n if (typeof v !== \"object\" || v === null) {\n return v;\n }\n if (!(\"subscribe\" in v)) {\n return v;\n }\n\n const subscribeValue = (v as { subscribe?: unknown }).subscribe;\n if (typeof subscribeValue !== \"function\") {\n return v;\n }\n\n const subscribe = subscribeValue as (\n ...subscribeArgs: readonly unknown[]\n ) => Promise<unknown>;\n\n return {\n ...(v as Record<string, unknown>),\n subscribe: async (...subscribeArgs: readonly unknown[]) => {\n if (isOpen()) {\n throw new Error(\"RPC circuit breaker is open\");\n }\n\n try {\n const result = await subscribe(...subscribeArgs);\n noteSuccess();\n return result;\n } catch (e) {\n noteFailure();\n throw e;\n }\n },\n };\n })();\n\n return { ...inner, request, value };\n };\n};\n\nconst makePublicTransportForChain = (config: ChainConfig): Transport => {\n const middlewareRetry = config.rpcMiddleware?.retry;\n const httpOptions = toHttpOptions(config.http ?? middlewareRetry);\n\n const baseTransport =\n config.transport ??\n (() => {\n if (config.rpcUrls.length === 0) {\n throw new Error(\n `Invalid ChainConfig for chainId=${config.chainId}: rpcUrls must be non-empty when transport is not provided`\n );\n }\n\n const httpTransports = config.rpcUrls.map((url) =>\n makeHttpTransport({ url, ...httpOptions })\n );\n const httpTransport =\n httpTransports.length === 1 ? httpTransports[0] : fallback(httpTransports);\n\n const wsUrls = config.wsUrls ?? [];\n if (wsUrls.length === 0) {\n return httpTransport;\n }\n\n const wsConfig = config.ws ?? middlewareRetry;\n const wsTransports = wsUrls.map((url) =>\n webSocket(url, {\n keepAlive: config.ws?.keepAlive,\n reconnect: config.ws?.reconnect,\n retryCount: wsConfig?.retryCount,\n retryDelay: wsConfig?.retryDelay,\n timeout: wsConfig?.timeout,\n })\n );\n const wsTransport = wsTransports.length === 1 ? wsTransports[0] : fallback(wsTransports);\n\n // Prefer WS for subscription-backed flows, while keeping HTTP fallback for requests.\n // `fallback()` does not reliably preserve `subscribe`, so stitch `subscribe` back in from WS.\n const requestTransport = fallback([wsTransport, httpTransport]);\n return (args) => {\n const req = requestTransport(args);\n const ws = wsTransport(args);\n const wsValue = ws.value;\n\n const subscribe =\n typeof wsValue === \"object\" &&\n wsValue !== null &&\n \"subscribe\" in wsValue &&\n typeof (wsValue as { subscribe?: unknown }).subscribe === \"function\"\n ? (wsValue as { subscribe: unknown }).subscribe\n : undefined;\n\n return subscribe\n ? {\n ...req,\n value: { ...(req.value as Record<string, unknown>), subscribe },\n }\n : req;\n };\n })();\n\n const deduped = config.rpcMiddleware?.dedup ? withDedup(baseTransport) : baseTransport;\n const circuitBreaker =\n config.rpcMiddleware?.circuitBreaker !== undefined\n ? withCircuitBreaker(deduped, config.rpcMiddleware.circuitBreaker)\n : deduped;\n\n return circuitBreaker;\n};\n\n/**\n * Create a PublicClientService layer from chain configurations\n */\nexport function makePublicClientLayer(configs: ChainConfig[]): Layer.Layer<PublicClientService> {\n const clients = new Map<number, PublicClient>();\n\n for (const config of configs) {\n const client = createPublicClient({\n chain: config.chain,\n transport: makePublicTransportForChain(config),\n });\n clients.set(config.chainId, client);\n }\n\n return Layer.succeed(PublicClientService, {\n get: (chainId: number) =>\n Effect.gen(function* () {\n const client = clients.get(chainId);\n if (!client) {\n return yield* Effect.fail(\n new ClientNotFoundError({\n chainId,\n message: `No public client found for chain ${chainId}`,\n })\n );\n }\n return client;\n }),\n });\n}\n\n/**\n * Create a WalletClientService layer from an EIP-1193 provider\n */\nexport function makeWalletClientLayer(\n provider: { request: (...args: unknown[]) => Promise<unknown> },\n chains: Map<number, Chain>\n): Layer.Layer<WalletClientService> {\n return Layer.succeed(WalletClientService, {\n get: (chainId: number) =>\n Effect.gen(function* () {\n const chain = chains.get(chainId);\n if (!chain) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId,\n message: `No chain configuration found for chain ${chainId}`,\n })\n );\n }\n\n const actualChainId = yield* Effect.tryPromise({\n catch: (cause) =>\n new WalletNotConnectedError({\n chainId,\n message:\n cause instanceof Error\n ? cause.message\n : `Failed to read wallet chainId for ${chainId}`,\n }),\n try: async () => {\n const hex = await provider.request({ method: \"eth_chainId\" });\n if (typeof hex !== \"string\") {\n throw new Error(\"Invalid eth_chainId response\");\n }\n return Option.getOrElse(parseHexInt(hex), () => UNKNOWN_CHAIN_ID);\n },\n });\n\n if (actualChainId !== chainId) {\n return yield* Effect.fail(\n new WrongNetworkError({\n actualChainId,\n expectedChainId: chainId,\n message: `Wallet is on chainId=${actualChainId} but expected chainId=${chainId}`,\n })\n );\n }\n\n const client = createWalletClient({\n chain,\n transport: custom(provider),\n });\n\n return client as WalletClient;\n }),\n });\n}\n\n/**\n * Create a WalletClientService layer from a dynamic provider ref.\n *\n * This is the key building block for \"stable runtime\" frontends: the runtime stays alive,\n * while the provider can be set/cleared/changed without reconstructing the Layer/Runtime.\n */\nexport function makeWalletClientLayerFromProviderRef(\n chains: Map<number, Chain>\n): Layer.Layer<WalletClientService, never, WalletProviderRef> {\n return Layer.effect(\n WalletClientService,\n Effect.gen(function* () {\n const providerRef = yield* WalletProviderRef;\n\n return WalletClientService.of({\n get: (chainId: number) =>\n Effect.gen(function* () {\n const chain = chains.get(chainId);\n if (!chain) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId,\n message: `No chain configuration found for chain ${chainId}`,\n })\n );\n }\n\n const current = yield* providerRef.get;\n if (Option.isNone(current)) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId,\n message: \"No wallet provider set\",\n })\n );\n }\n\n const provider = current.value;\n const actualChainId = yield* Effect.tryPromise({\n catch: (cause) =>\n new WalletNotConnectedError({\n chainId,\n message:\n cause instanceof Error\n ? cause.message\n : `Failed to read wallet chainId for ${chainId}`,\n }),\n try: async () => {\n const hex = await provider.request({ method: \"eth_chainId\" });\n if (typeof hex !== \"string\") {\n throw new Error(\"Invalid eth_chainId response\");\n }\n return Option.getOrElse(parseHexInt(hex), () => UNKNOWN_CHAIN_ID);\n },\n });\n\n if (actualChainId !== chainId) {\n return yield* Effect.fail(\n new WrongNetworkError({\n actualChainId,\n expectedChainId: chainId,\n message: `Wallet is on chainId=${actualChainId} but expected chainId=${chainId}`,\n })\n );\n }\n\n const client = createWalletClient({\n chain,\n transport: custom(provider),\n });\n\n return client as WalletClient;\n }),\n });\n })\n );\n}\n\n/**\n * Compose all effect-evm services into a single layer\n * Requires PublicClientService and WalletClientService to be provided\n * Note: WalletService and WalletLifecycle require a provider and should be added via makeEffectEvmLayer\n */\nconst cursorServices = Layer.mergeAll(EventStreamLive, EventBackfillLive, InMemoryCursorStoreLive);\n\nconst cursorStreamServices = Layer.provideMerge(CursorStreamLive, cursorServices);\n\nconst baseServices = Layer.mergeAll(\n BlockServiceLive,\n ContractReaderLive,\n ContractWriterLive,\n Erc721ServiceLive,\n cursorServices,\n cursorStreamServices,\n EnsResolverLive,\n GasServiceLive,\n NonceServiceLive,\n SignatureServiceLive,\n SubscriptionServiceLive,\n makeRpcCacheLive(),\n RequestDedupLive\n);\n\nconst txServices = Layer.provideMerge(\n TxManagerLive,\n Layer.provideMerge(TxReplacementLive, baseServices)\n);\n\nconst queryServices = Layer.provideMerge(\n ContractQueryLive,\n Layer.provideMerge(\n MulticallBatcherLive,\n Layer.provideMerge(QueryClientLive, Layer.provideMerge(ChainHeadLive, txServices))\n )\n);\n\nexport const effectEvmServices = Layer.provideMerge(\n Layer.mergeAll(\n BalanceServiceLive,\n ContractPipelineLive,\n Eip7702ServiceLive,\n DeployServiceLive,\n ReliableEventStreamLive,\n SimulationServiceLive\n ),\n queryServices\n).pipe(Layer.provide(FetchHttpClient.layer));\n\n/**\n * Create a complete effect-evm layer from chain configurations and provider\n */\nexport function makeEffectEvmLayer(\n configs: ChainConfig[],\n provider: { request: (...args: unknown[]) => Promise<unknown> }\n): Layer.Layer<\n | PublicClientService\n | WalletClientService\n | BalanceService\n | BlockService\n | ChainHead\n | ContractReader\n | ContractQuery\n | ContractWriter\n | ContractPipeline\n | Eip7702Service\n | DeployService\n | Erc721Service\n | GasService\n | NonceService\n | QueryClient\n | MulticallBatcher\n | RpcCache\n | RequestDedup\n | SignatureService\n | SimulationService\n | SubscriptionService\n | TxManager\n | TxReplacement\n | EventBackfill\n | EventStream\n | CursorStore\n | CursorStream\n | ReliableEventStream\n | EnsResolver\n | WalletService\n | WalletLifecycle\n> {\n const chains = new Map(configs.map((c) => [c.chainId, c.chain]));\n\n const clientLayers = Layer.mergeAll(\n makePublicClientLayer(configs),\n makeWalletClientLayer(provider, chains)\n );\n\n const walletLayers = Layer.mergeAll(\n makeWalletServiceLive(provider),\n makeWalletLifecycleLive(provider)\n );\n\n return Layer.provideMerge(Layer.mergeAll(effectEvmServices, walletLayers), clientLayers);\n}\n\n/**\n * Create a complete effect-evm layer with a dynamic wallet provider reference.\n *\n * This is intended for frontends (e.g. Next.js) that want a stable Effect runtime\n * while the wallet provider changes over time.\n *\n * Set/clear the provider by using `WalletProviderRef` (e.g. from React via `useForkEffect`).\n */\nexport function makeEffectEvmLayerWithWalletProviderRef(\n configs: ChainConfig[],\n initialProvider?: WalletProvider | undefined\n): Layer.Layer<\n | PublicClientService\n | WalletClientService\n | BalanceService\n | BlockService\n | ChainHead\n | ContractReader\n | ContractQuery\n | ContractWriter\n | ContractPipeline\n | Eip7702Service\n | DeployService\n | Erc721Service\n | GasService\n | NonceService\n | QueryClient\n | MulticallBatcher\n | RpcCache\n | RequestDedup\n | SignatureService\n | SimulationService\n | SubscriptionService\n | TxManager\n | TxReplacement\n | EventBackfill\n | EventStream\n | CursorStore\n | CursorStream\n | ReliableEventStream\n | EnsResolver\n | WalletService\n | WalletLifecycle\n | WalletProviderRef\n> {\n const chains = new Map(configs.map((c) => [c.chainId, c.chain]));\n const providerRefLayer = makeWalletProviderRefLive(initialProvider);\n\n const walletClientLayer = Layer.provideMerge(\n makeWalletClientLayerFromProviderRef(chains),\n providerRefLayer\n );\n\n const clientLayers = Layer.mergeAll(makePublicClientLayer(configs), walletClientLayer);\n\n const walletLayers = Layer.provideMerge(\n Layer.mergeAll(WalletServiceFromProviderRefLive, WalletLifecycleFromProviderRefLive),\n providerRefLayer\n );\n\n return Layer.provideMerge(\n Layer.mergeAll(effectEvmServices, walletLayers, providerRefLayer),\n clientLayers\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/presets/transports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAkBxF,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACtB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,mBAAmB;QACpD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,uBAAuB;KACnD,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,UAAU,qBAAqB,CACnC,IAAuB,EACvB,UAAgC,EAAE;IAElC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAKD,MAAM,UAAU,mBAAmB,CACjC,MAIG;IAEH,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAA+B,CAChC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/presets/transports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAkBxF,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACtB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,mBAAmB;QACpD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,uBAAuB;KACnD,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,UAAU,qBAAqB,CACnC,IAAuB,EACvB,UAAgC,EAAE;IAElC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAKD,MAAM,UAAU,mBAAmB,CACjC,MAIG;IAEH,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAA+B,CAChC,CAAC;AACJ,CAAC","sourcesContent":["import type { Transport } from \"viem\";\nimport { fallback, http } from \"viem\";\nimport { DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_DELAY } from \"@/src/constants/index.js\";\n\nexport type TransportConfig = {\n /** RPC URL */\n url: string;\n /** Timeout in milliseconds */\n timeout?: number;\n /** Number of retries on failure */\n retryCount?: number;\n /** Delay between retries in milliseconds */\n retryDelay?: number;\n};\n\nexport type HttpTransportOptions = Omit<TransportConfig, \"url\">;\n\n/**\n * Create an HTTP transport with configurable retry behavior\n */\nexport function makeHttpTransport(config: TransportConfig): Transport {\n return http(config.url, {\n retryCount: config.retryCount ?? 3,\n retryDelay: config.retryDelay ?? DEFAULT_RETRY_DELAY,\n timeout: config.timeout ?? DEFAULT_REQUEST_TIMEOUT,\n });\n}\n\n/**\n * Create a fallback transport from multiple URLs\n */\nexport function makeFallbackTransport(\n urls: readonly string[],\n options: HttpTransportOptions = {}\n): Transport {\n return fallback(urls.map((url) => makeHttpTransport({ url, ...options })));\n}\n\n/**\n * Create transports map for multiple chains\n */\nexport function makeChainTransports(\n chains: {\n chainId: number;\n rpcUrls: readonly string[];\n http?: HttpTransportOptions | undefined;\n }[]\n): Record<number, Transport> {\n return chains.reduce(\n (acc, chain) => {\n acc[chain.chainId] = makeFallbackTransport(chain.rpcUrls, chain.http ?? {});\n return acc;\n },\n {} as Record<number, Transport>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-head.js","sourceRoot":"","sources":["../../src/query/chain-head.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,mBAAmB,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAYrD,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAA6B;CAAG;AAE3F,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CACvC,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IACvD,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IAEvD,OAAO,SAAS,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEvD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;oBACtB,KAAK;oBACL,OAAO,EAAE,+CAA+C,OAAO,GAAG;oBAClE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS;iBACvC,CAAC;gBACJ,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE;YAC1C,UAAU,EAAE,EAAE,OAAO,EAAE;SACxB,CAAC,CACH;QAEH,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;gBAChE,OAAO;aACR,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,CAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CACjE,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;YACrC,UAAU,EAAE,EAAE,OAAO,EAAE;SACxB,CAAC,CACH;KACJ,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"chain-head.js","sourceRoot":"","sources":["../../src/query/chain-head.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,mBAAmB,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAYrD,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAA6B;CAAG;AAE3F,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CACvC,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IACvD,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IAEvD,OAAO,SAAS,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEvD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;oBACtB,KAAK;oBACL,OAAO,EAAE,+CAA+C,OAAO,GAAG;oBAClE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS;iBACvC,CAAC;gBACJ,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE;YAC1C,UAAU,EAAE,EAAE,OAAO,EAAE;SACxB,CAAC,CACH;QAEH,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;gBAChE,OAAO;aACR,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,CAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CACjE,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;YACrC,UAAU,EAAE,EAAE,OAAO,EAAE;SACxB,CAAC,CACH;KACJ,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC","sourcesContent":["import { Context, Effect, Layer, Stream } from \"effect\";\nimport type { Block } from \"viem\";\nimport type { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport { PublicClientService, TransportError as TransportErrorClass } from \"@/src/core/index.js\";\nimport { SubscriptionService } from \"@/src/subscriptions/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\n\nexport type ChainHeadShape = {\n readonly current: (\n chainId: number\n ) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n readonly watch: (\n chainId: number\n ) => Effect.Effect<Stream.Stream<bigint, never>, ClientNotFoundError>;\n};\n\nexport class ChainHead extends Context.Tag(\"ew3/ChainHead\")<ChainHead, ChainHeadShape>() {}\n\nexport const ChainHeadLive = Layer.effect(\n ChainHead,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n const subscriptionService = yield* SubscriptionService;\n\n return ChainHead.of({\n current: (chainId) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(chainId);\n\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new TransportErrorClass({\n cause,\n message: `Failed to get current block number (chainId=${chainId})`,\n url: client.transport.url ?? \"unknown\",\n }),\n try: () => client.getBlockNumber(),\n });\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_GET_NUMBER, {\n attributes: { chainId },\n })\n ),\n\n watch: (chainId) =>\n Effect.gen(function* () {\n const { stream } = yield* subscriptionService.watchBlocksRetrying({\n chainId,\n });\n\n return stream.pipe(\n Stream.map((block: Block) => block.number),\n Stream.filter((n): n is bigint => n !== null && n !== undefined)\n );\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_WATCH, {\n attributes: { chainId },\n })\n ),\n });\n })\n);\n"]}
|
package/dist/query/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/query/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/query/client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Fiber } from \"effect\";\nimport { Context, Effect, Layer, Ref, Stream } from \"effect\";\nimport { ChainHead } from \"@/src/query/chain-head.js\";\nimport { RequestDedup, RpcCache } from \"@/src/rpc/index.js\";\n\nexport type QueryOptions = {\n readonly ttl?: number | undefined;\n readonly blockScoped?: boolean | undefined;\n readonly chainId?: number | undefined;\n};\n\nexport type WatchOptions = QueryOptions & {\n readonly refetchOn: Stream.Stream<unknown, never>;\n};\n\nexport type QueryClientShape = {\n readonly query: <A, E, R>(\n key: string,\n effect: Effect.Effect<A, E, R>,\n options?: QueryOptions | undefined\n ) => Effect.Effect<A, E, R>;\n\n readonly watch: <A, E, R>(\n key: string,\n effect: Effect.Effect<A, E, R>,\n options: WatchOptions\n ) => Stream.Stream<A, E, R>;\n};\n\nexport class QueryClient extends Context.Tag(\"ew3/QueryClient\")<QueryClient, QueryClientShape>() {}\n\nexport const QueryClientLive = Layer.scoped(\n QueryClient,\n Effect.gen(function* () {\n const cache = yield* RpcCache;\n const dedup = yield* RequestDedup;\n const chainHead = yield* ChainHead;\n const scope = yield* Effect.scope;\n\n type InvalidatorState = Fiber.RuntimeFiber<void, never> | \"starting\";\n const invalidatorsRef = yield* Ref.make(new Map<number, InvalidatorState>());\n\n const ensureInvalidator = (chainId: number): Effect.Effect<void> =>\n Effect.gen(function* () {\n const shouldStart = yield* Ref.modify(invalidatorsRef, (current) => {\n if (current.has(chainId)) {\n return [false, current] as const;\n }\n const next = new Map(current);\n next.set(chainId, \"starting\");\n return [true, next] as const;\n });\n\n if (!shouldStart) {\n return;\n }\n\n const stream = yield* chainHead.watch(chainId);\n const started = Stream.runForEach(stream, (blockNumber) =>\n cache.invalidateBlock(blockNumber)\n )\n .pipe(Effect.forkIn(scope))\n .pipe(\n Effect.tap((fiber) =>\n Ref.update(invalidatorsRef, (current) => {\n const next = new Map(current);\n next.set(chainId, fiber);\n return next;\n })\n ),\n Effect.catchAll(() =>\n Ref.update(invalidatorsRef, (current) => {\n const next = new Map(current);\n next.delete(chainId);\n return next;\n })\n )\n );\n\n yield* started;\n }).pipe(Effect.catchAll(() => Effect.void));\n\n const query: QueryClientShape[\"query\"] = <A, E, R>(\n key: string,\n effect: Effect.Effect<A, E, R>,\n options?: QueryOptions | undefined\n ) =>\n Effect.gen(function* () {\n if (options?.blockScoped && options.chainId !== undefined) {\n yield* ensureInvalidator(options.chainId);\n }\n\n const cached = yield* cache.get<A>(key);\n if (cached !== null) {\n return cached;\n }\n\n return yield* dedup.dedupe(key, effect).pipe(\n Effect.tap((value) =>\n Effect.gen(function* () {\n if (options?.blockScoped && options.chainId !== undefined) {\n const current = yield* chainHead.current(options.chainId).pipe(Effect.either);\n if (current._tag === \"Right\") {\n yield* cache.set(key, value, current.right, options.ttl);\n return;\n }\n }\n yield* cache.set(key, value, undefined, options?.ttl);\n })\n )\n );\n });\n\n const watch: QueryClientShape[\"watch\"] = <A, E, R>(\n key: string,\n effect: Effect.Effect<A, E, R>,\n options: WatchOptions\n ) => {\n const initial = Stream.fromEffect(query(key, effect, options));\n const refetch = options.refetchOn.pipe(Stream.mapEffect(() => query(key, effect, options)));\n return Stream.concat(initial, refetch);\n };\n\n return QueryClient.of({ query, watch });\n })\n);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.integration.d.ts","sourceRoot":"","sources":["../../src/query/client.test.integration.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, expect, it } from "@effect/vitest";
|
|
2
|
+
import { Deferred, Effect, Fiber, Layer, Ref, Stream, SubscriptionRef } from "effect";
|
|
3
|
+
import { ChainHead, QueryClient, QueryClientLive } from "../query/index.js";
|
|
4
|
+
import { makeRpcCacheLive, RequestDedupLive, RpcCache } from "../rpc/index.js";
|
|
5
|
+
import { TEST_CHAIN_ID } from "../testing-kit/index.js";
|
|
6
|
+
describe("QueryClient", () => {
|
|
7
|
+
it.effect("caches repeated queries", () => Effect.gen(function* () {
|
|
8
|
+
const queryClient = yield* QueryClient;
|
|
9
|
+
let executions = 0;
|
|
10
|
+
const effect = Effect.sync(() => {
|
|
11
|
+
executions += 1;
|
|
12
|
+
return "value";
|
|
13
|
+
});
|
|
14
|
+
const result1 = yield* queryClient.query("key", effect, { ttl: 60_000 });
|
|
15
|
+
const result2 = yield* queryClient.query("key", effect, { ttl: 60_000 });
|
|
16
|
+
expect(result1).toBe("value");
|
|
17
|
+
expect(result2).toBe("value");
|
|
18
|
+
expect(executions).toBe(1);
|
|
19
|
+
}).pipe(Effect.provide(Layer.provide(QueryClientLive, Layer.mergeAll(Layer.succeed(ChainHead, ChainHead.of({
|
|
20
|
+
current: () => Effect.succeed(1n),
|
|
21
|
+
watch: () => Effect.succeed(Stream.empty),
|
|
22
|
+
})), makeRpcCacheLive({ ttl: 60_000 }), RequestDedupLive)))));
|
|
23
|
+
it.effect("dedupes concurrent queries with the same key", () => Effect.gen(function* () {
|
|
24
|
+
const queryClient = yield* QueryClient;
|
|
25
|
+
const started = yield* Deferred.make();
|
|
26
|
+
const gate = yield* Deferred.make();
|
|
27
|
+
let executions = 0;
|
|
28
|
+
const effect = Effect.gen(function* () {
|
|
29
|
+
executions += 1;
|
|
30
|
+
yield* Deferred.succeed(started, undefined);
|
|
31
|
+
yield* Deferred.await(gate);
|
|
32
|
+
return "shared";
|
|
33
|
+
});
|
|
34
|
+
const fiber1 = yield* Effect.fork(queryClient.query("key", effect, { ttl: 60_000 }));
|
|
35
|
+
const fiber2 = yield* Effect.fork(queryClient.query("key", effect, { ttl: 60_000 }));
|
|
36
|
+
yield* Deferred.await(started);
|
|
37
|
+
yield* Deferred.succeed(gate, undefined);
|
|
38
|
+
const result1 = yield* Fiber.join(fiber1);
|
|
39
|
+
const result2 = yield* Fiber.join(fiber2);
|
|
40
|
+
expect(result1).toBe("shared");
|
|
41
|
+
expect(result2).toBe("shared");
|
|
42
|
+
expect(executions).toBe(1);
|
|
43
|
+
}).pipe(Effect.provide(Layer.provide(QueryClientLive, Layer.mergeAll(Layer.succeed(ChainHead, ChainHead.of({
|
|
44
|
+
current: () => Effect.succeed(1n),
|
|
45
|
+
watch: () => Effect.succeed(Stream.empty),
|
|
46
|
+
})), makeRpcCacheLive({ ttl: 60_000 }), RequestDedupLive)))));
|
|
47
|
+
it.effect("invalidates block-scoped cache entries on new head blocks", () => Effect.gen(function* () {
|
|
48
|
+
const headRef = yield* SubscriptionRef.make(1n);
|
|
49
|
+
const watchStarted = yield* Deferred.make();
|
|
50
|
+
const invalidated = yield* Deferred.make();
|
|
51
|
+
const invalidationsRef = yield* Ref.make([]);
|
|
52
|
+
const queryClientLayer = Layer.provideMerge(QueryClientLive, Layer.mergeAll(Layer.succeed(ChainHead, ChainHead.of({
|
|
53
|
+
current: () => SubscriptionRef.get(headRef),
|
|
54
|
+
watch: () => Effect.succeed(headRef.changes.pipe(Stream.onStart(Deferred.succeed(watchStarted, undefined)))),
|
|
55
|
+
})), Layer.provide(Layer.effect(RpcCache, Effect.gen(function* () {
|
|
56
|
+
const base = yield* RpcCache;
|
|
57
|
+
return RpcCache.of({
|
|
58
|
+
...base,
|
|
59
|
+
invalidateBlock: (blockNumber) => base.invalidateBlock(blockNumber).pipe(Effect.tap(() => Ref.update(invalidationsRef, (current) => [...current, blockNumber])), Effect.tap(() => blockNumber === 2n
|
|
60
|
+
? Deferred.succeed(invalidated, undefined).pipe(Effect.asVoid)
|
|
61
|
+
: Effect.void)),
|
|
62
|
+
});
|
|
63
|
+
})), makeRpcCacheLive({ ttl: 60_000 })), RequestDedupLive));
|
|
64
|
+
return yield* Effect.gen(function* () {
|
|
65
|
+
const queryClient = yield* QueryClient;
|
|
66
|
+
const cache = yield* RpcCache;
|
|
67
|
+
let executions = 0;
|
|
68
|
+
const effect = Effect.sync(() => {
|
|
69
|
+
executions += 1;
|
|
70
|
+
return "value";
|
|
71
|
+
});
|
|
72
|
+
const result1 = yield* queryClient.query("key", effect, {
|
|
73
|
+
blockScoped: true,
|
|
74
|
+
chainId: TEST_CHAIN_ID,
|
|
75
|
+
ttl: 60_000,
|
|
76
|
+
});
|
|
77
|
+
expect(yield* cache.get("key")).toBe("value");
|
|
78
|
+
yield* Deferred.await(watchStarted);
|
|
79
|
+
yield* SubscriptionRef.set(headRef, 2n);
|
|
80
|
+
yield* Deferred.await(invalidated);
|
|
81
|
+
expect(yield* cache.get("key")).toBeNull();
|
|
82
|
+
expect(yield* Ref.get(invalidationsRef)).toContain(2n);
|
|
83
|
+
const result2 = yield* queryClient.query("key", effect, {
|
|
84
|
+
blockScoped: true,
|
|
85
|
+
chainId: TEST_CHAIN_ID,
|
|
86
|
+
ttl: 60_000,
|
|
87
|
+
});
|
|
88
|
+
expect(result1).toBe("value");
|
|
89
|
+
expect(result2).toBe("value");
|
|
90
|
+
expect(executions).toBe(2);
|
|
91
|
+
}).pipe(Effect.provide(queryClientLayer));
|
|
92
|
+
}).pipe(Effect.scoped));
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=client.test.integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.integration.js","sourceRoot":"","sources":["../../src/query/client.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Deferred, Effect, Fiber, Layer, Ref, Stream, SubscriptionRef } from \"effect\";\nimport { ChainHead, QueryClient, QueryClientLive } from \"@/src/query/index.js\";\nimport { makeRpcCacheLive, RequestDedupLive, RpcCache } from \"@/src/rpc/index.js\";\nimport { TEST_CHAIN_ID } from \"@/src/testing-kit/index.js\";\n\ndescribe(\"QueryClient\", () => {\n it.effect(\"caches repeated queries\", () =>\n Effect.gen(function* () {\n const queryClient = yield* QueryClient;\n\n let executions = 0;\n const effect = Effect.sync(() => {\n executions += 1;\n return \"value\";\n });\n\n const result1 = yield* queryClient.query(\"key\", effect, { ttl: 60_000 });\n const result2 = yield* queryClient.query(\"key\", effect, { ttl: 60_000 });\n\n expect(result1).toBe(\"value\");\n expect(result2).toBe(\"value\");\n expect(executions).toBe(1);\n }).pipe(\n Effect.provide(\n Layer.provide(\n QueryClientLive,\n Layer.mergeAll(\n Layer.succeed(\n ChainHead,\n ChainHead.of({\n current: () => Effect.succeed(1n),\n watch: () => Effect.succeed(Stream.empty),\n })\n ),\n makeRpcCacheLive({ ttl: 60_000 }),\n RequestDedupLive\n )\n )\n )\n )\n );\n\n it.effect(\"dedupes concurrent queries with the same key\", () =>\n Effect.gen(function* () {\n const queryClient = yield* QueryClient;\n const started = yield* Deferred.make<void>();\n const gate = yield* Deferred.make<void>();\n\n let executions = 0;\n const effect = Effect.gen(function* () {\n executions += 1;\n yield* Deferred.succeed(started, undefined);\n yield* Deferred.await(gate);\n return \"shared\";\n });\n\n const fiber1 = yield* Effect.fork(queryClient.query(\"key\", effect, { ttl: 60_000 }));\n const fiber2 = yield* Effect.fork(queryClient.query(\"key\", effect, { ttl: 60_000 }));\n\n yield* Deferred.await(started);\n yield* Deferred.succeed(gate, undefined);\n\n const result1 = yield* Fiber.join(fiber1);\n const result2 = yield* Fiber.join(fiber2);\n\n expect(result1).toBe(\"shared\");\n expect(result2).toBe(\"shared\");\n expect(executions).toBe(1);\n }).pipe(\n Effect.provide(\n Layer.provide(\n QueryClientLive,\n Layer.mergeAll(\n Layer.succeed(\n ChainHead,\n ChainHead.of({\n current: () => Effect.succeed(1n),\n watch: () => Effect.succeed(Stream.empty),\n })\n ),\n makeRpcCacheLive({ ttl: 60_000 }),\n RequestDedupLive\n )\n )\n )\n )\n );\n\n it.effect(\"invalidates block-scoped cache entries on new head blocks\", () =>\n Effect.gen(function* () {\n const headRef = yield* SubscriptionRef.make(1n);\n const watchStarted = yield* Deferred.make<void>();\n const invalidated = yield* Deferred.make<void>();\n const invalidationsRef = yield* Ref.make<readonly bigint[]>([]);\n\n const queryClientLayer = Layer.provideMerge(\n QueryClientLive,\n Layer.mergeAll(\n Layer.succeed(\n ChainHead,\n ChainHead.of({\n current: () => SubscriptionRef.get(headRef),\n watch: () =>\n Effect.succeed(\n headRef.changes.pipe(Stream.onStart(Deferred.succeed(watchStarted, undefined)))\n ),\n })\n ),\n Layer.provide(\n Layer.effect(\n RpcCache,\n Effect.gen(function* () {\n const base = yield* RpcCache;\n return RpcCache.of({\n ...base,\n invalidateBlock: (blockNumber) =>\n base.invalidateBlock(blockNumber).pipe(\n Effect.tap(() =>\n Ref.update(invalidationsRef, (current) => [...current, blockNumber])\n ),\n Effect.tap(() =>\n blockNumber === 2n\n ? Deferred.succeed(invalidated, undefined).pipe(Effect.asVoid)\n : Effect.void\n )\n ),\n });\n })\n ),\n makeRpcCacheLive({ ttl: 60_000 })\n ),\n RequestDedupLive\n )\n );\n\n return yield* Effect.gen(function* () {\n const queryClient = yield* QueryClient;\n const cache = yield* RpcCache;\n\n let executions = 0;\n const effect = Effect.sync(() => {\n executions += 1;\n return \"value\";\n });\n\n const result1 = yield* queryClient.query(\"key\", effect, {\n blockScoped: true,\n chainId: TEST_CHAIN_ID,\n ttl: 60_000,\n });\n\n expect(yield* cache.get<string>(\"key\")).toBe(\"value\");\n\n yield* Deferred.await(watchStarted);\n\n // Set the new block - this will trigger invalidation via headRef.changes\n yield* SubscriptionRef.set(headRef, 2n);\n\n yield* Deferred.await(invalidated);\n expect(yield* cache.get<string>(\"key\")).toBeNull();\n expect(yield* Ref.get(invalidationsRef)).toContain(2n);\n\n const result2 = yield* queryClient.query(\"key\", effect, {\n blockScoped: true,\n chainId: TEST_CHAIN_ID,\n ttl: 60_000,\n });\n\n expect(result1).toBe(\"value\");\n expect(result2).toBe(\"value\");\n expect(executions).toBe(2);\n }).pipe(Effect.provide(queryClientLayer));\n }).pipe(Effect.scoped)\n );\n});\n"]}
|