@prb/effect-evm 1.0.0-beta.1 → 1.0.0-beta.3

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.
Files changed (276) hide show
  1. package/dist/abi/erc165.js.map +1 -1
  2. package/dist/abi/erc20-no-output.js.map +1 -1
  3. package/dist/abi/erc20.js.map +1 -1
  4. package/dist/abi/erc721.js.map +1 -1
  5. package/dist/abi/index.js.map +1 -1
  6. package/dist/balance/index.js.map +1 -1
  7. package/dist/balance/service.js.map +1 -1
  8. package/dist/balance/service.test.integration.d.ts +2 -0
  9. package/dist/balance/service.test.integration.d.ts.map +1 -0
  10. package/dist/balance/service.test.integration.js +289 -0
  11. package/dist/balance/service.test.integration.js.map +1 -0
  12. package/dist/balance/utils.js.map +1 -1
  13. package/dist/block/errors.js.map +1 -1
  14. package/dist/block/index.js.map +1 -1
  15. package/dist/block/service.js.map +1 -1
  16. package/dist/block/service.test.integration.d.ts +2 -0
  17. package/dist/block/service.test.integration.d.ts.map +1 -0
  18. package/dist/block/service.test.integration.js +190 -0
  19. package/dist/block/service.test.integration.js.map +1 -0
  20. package/dist/constants/index.js.map +1 -1
  21. package/dist/contract/cross-chain-reader.js.map +1 -1
  22. package/dist/contract/index.js.map +1 -1
  23. package/dist/contract/pipeline/index.js.map +1 -1
  24. package/dist/contract/pipeline/internal/core.js.map +1 -1
  25. package/dist/contract/pipeline/internal/helpers.js.map +1 -1
  26. package/dist/contract/pipeline/internal/nonce.js.map +1 -1
  27. package/dist/contract/pipeline/internal/prepare.js.map +1 -1
  28. package/dist/contract/pipeline/internal/receipt.js.map +1 -1
  29. package/dist/contract/pipeline/live.js.map +1 -1
  30. package/dist/contract/pipeline/service.js.map +1 -1
  31. package/dist/contract/pipeline/types.js.map +1 -1
  32. package/dist/contract/pipeline/write-and-track.js.map +1 -1
  33. package/dist/contract/pipeline/write-and-wait.js.map +1 -1
  34. package/dist/contract/pipeline.js.map +1 -1
  35. package/dist/contract/reader.js.map +1 -1
  36. package/dist/contract/typed-contract.js.map +1 -1
  37. package/dist/contract/writer.js.map +1 -1
  38. package/dist/core/clients/index.js.map +1 -1
  39. package/dist/core/clients/public-client.js.map +1 -1
  40. package/dist/core/clients/wallet-client.js.map +1 -1
  41. package/dist/core/errors/client.js.map +1 -1
  42. package/dist/core/errors/contract.js.map +1 -1
  43. package/dist/core/errors/erc20.js.map +1 -1
  44. package/dist/core/errors/event.js.map +1 -1
  45. package/dist/core/errors/index.js.map +1 -1
  46. package/dist/core/errors/predicates.js.map +1 -1
  47. package/dist/core/errors/transaction.js.map +1 -1
  48. package/dist/core/errors/viem-mapper.d.ts.map +1 -1
  49. package/dist/core/errors/viem-mapper.js +11 -2
  50. package/dist/core/errors/viem-mapper.js.map +1 -1
  51. package/dist/core/index.js.map +1 -1
  52. package/dist/deploy/errors.js.map +1 -1
  53. package/dist/deploy/index.js.map +1 -1
  54. package/dist/deploy/service.js.map +1 -1
  55. package/dist/eip7702/erc7579.js.map +1 -1
  56. package/dist/eip7702/errors.js.map +1 -1
  57. package/dist/eip7702/index.js.map +1 -1
  58. package/dist/eip7702/service.js.map +1 -1
  59. package/dist/ens/ens.js.map +1 -1
  60. package/dist/ens/errors.js.map +1 -1
  61. package/dist/ens/index.js.map +1 -1
  62. package/dist/erc20/allowance/core.js.map +1 -1
  63. package/dist/erc20/allowance/index.js.map +1 -1
  64. package/dist/erc20/allowance/no-output.js.map +1 -1
  65. package/dist/erc20/allowance/types.js.map +1 -1
  66. package/dist/erc20/index.d.ts +1 -0
  67. package/dist/erc20/index.d.ts.map +1 -1
  68. package/dist/erc20/index.js +1 -0
  69. package/dist/erc20/index.js.map +1 -1
  70. package/dist/erc20/metadata.d.ts +16 -0
  71. package/dist/erc20/metadata.d.ts.map +1 -0
  72. package/dist/erc20/metadata.js +67 -0
  73. package/dist/erc20/metadata.js.map +1 -0
  74. package/dist/erc721/errors.js.map +1 -1
  75. package/dist/erc721/helpers.js.map +1 -1
  76. package/dist/erc721/index.js.map +1 -1
  77. package/dist/erc721/metadata.js.map +1 -1
  78. package/dist/erc721/service.js.map +1 -1
  79. package/dist/events/backfill.js.map +1 -1
  80. package/dist/events/backfill.test.integration.d.ts +2 -0
  81. package/dist/events/backfill.test.integration.d.ts.map +1 -0
  82. package/dist/events/backfill.test.integration.js +112 -0
  83. package/dist/events/backfill.test.integration.js.map +1 -0
  84. package/dist/events/cursor.js.map +1 -1
  85. package/dist/events/decoder.js.map +1 -1
  86. package/dist/events/index.js.map +1 -1
  87. package/dist/events/reliable-stream-simple.test.integration.d.ts +2 -0
  88. package/dist/events/reliable-stream-simple.test.integration.d.ts.map +1 -0
  89. package/dist/events/reliable-stream-simple.test.integration.js +22 -0
  90. package/dist/events/reliable-stream-simple.test.integration.js.map +1 -0
  91. package/dist/events/reliable-stream.js.map +1 -1
  92. package/dist/events/reliable-stream.test.integration.d.ts +2 -0
  93. package/dist/events/reliable-stream.test.integration.d.ts.map +1 -0
  94. package/dist/events/reliable-stream.test.integration.js +327 -0
  95. package/dist/events/reliable-stream.test.integration.js.map +1 -0
  96. package/dist/events/stream.js.map +1 -1
  97. package/dist/events/stream.test.integration.d.ts +2 -0
  98. package/dist/events/stream.test.integration.d.ts.map +1 -0
  99. package/dist/events/stream.test.integration.js +120 -0
  100. package/dist/events/stream.test.integration.js.map +1 -0
  101. package/dist/gas/errors.js.map +1 -1
  102. package/dist/gas/estimator.js.map +1 -1
  103. package/dist/gas/index.js.map +1 -1
  104. package/dist/gas/service.js.map +1 -1
  105. package/dist/gas/service.test.integration.d.ts +2 -0
  106. package/dist/gas/service.test.integration.d.ts.map +1 -0
  107. package/dist/gas/service.test.integration.js +128 -0
  108. package/dist/gas/service.test.integration.js.map +1 -0
  109. package/dist/index.js.map +1 -1
  110. package/dist/integrations/react-hooks/convenience/index.js.map +1 -1
  111. package/dist/integrations/react-hooks/internal/error.js.map +1 -1
  112. package/dist/integrations/react-hooks/internal/is-dev.js.map +1 -1
  113. package/dist/integrations/react-hooks/internal/runtime.js.map +1 -1
  114. package/dist/integrations/react-hooks/internal/scoped-run.js.map +1 -1
  115. package/dist/integrations/react-hooks/internal/stable.js.map +1 -1
  116. package/dist/integrations/react-hooks/primitives/use-effect-memo-factory.js.map +1 -1
  117. package/dist/integrations/react-hooks/primitives/use-effect.js.map +1 -1
  118. package/dist/integrations/react-hooks/primitives/use-fork-effect.js.map +1 -1
  119. package/dist/integrations/react-hooks/primitives/use-stream.js.map +1 -1
  120. package/dist/integrations/react-hooks/primitives.js.map +1 -1
  121. package/dist/integrations/react-hooks/provider.js.map +1 -1
  122. package/dist/integrations/react-hooks/wagmi/index.js.map +1 -1
  123. package/dist/integrations/react-hooks/wallet-provider-ref.js.map +1 -1
  124. package/dist/integrations/wagmi/index.js.map +1 -1
  125. package/dist/integrations/wagmi/layers.js.map +1 -1
  126. package/dist/internal/index.js.map +1 -1
  127. package/dist/internal/numbers.js.map +1 -1
  128. package/dist/internal/schedule.js.map +1 -1
  129. package/dist/internal/stream-adapters.js.map +1 -1
  130. package/dist/internal/viem-effect.js.map +1 -1
  131. package/dist/nonce/index.js.map +1 -1
  132. package/dist/nonce/manager.js.map +1 -1
  133. package/dist/nonce/service.js.map +1 -1
  134. package/dist/nonce/service.test.integration.d.ts +2 -0
  135. package/dist/nonce/service.test.integration.d.ts.map +1 -0
  136. package/dist/nonce/service.test.integration.js +141 -0
  137. package/dist/nonce/service.test.integration.js.map +1 -0
  138. package/dist/platform/browser/cursor-store/index.js.map +1 -1
  139. package/dist/platform/browser/cursor-store/local-storage.js.map +1 -1
  140. package/dist/platform/browser/index.js.map +1 -1
  141. package/dist/platform/browser/layers.js.map +1 -1
  142. package/dist/platform/browser/storage/errors.js.map +1 -1
  143. package/dist/platform/browser/storage/index.js.map +1 -1
  144. package/dist/platform/browser/storage/local-storage.js.map +1 -1
  145. package/dist/platform/browser/tx-persistence/index.js.map +1 -1
  146. package/dist/platform/browser/tx-persistence/persistence.js.map +1 -1
  147. package/dist/platform/browser/tx-store/errors.js.map +1 -1
  148. package/dist/platform/browser/tx-store/index.js.map +1 -1
  149. package/dist/platform/browser/tx-store/local-storage.js.map +1 -1
  150. package/dist/platform/browser/tx-store/store.js.map +1 -1
  151. package/dist/platform/browser/tx-store/types.js.map +1 -1
  152. package/dist/presets/index.js.map +1 -1
  153. package/dist/presets/layers.js.map +1 -1
  154. package/dist/presets/transports.js.map +1 -1
  155. package/dist/query/chain-head.js.map +1 -1
  156. package/dist/query/client.js.map +1 -1
  157. package/dist/query/client.test.integration.d.ts +2 -0
  158. package/dist/query/client.test.integration.d.ts.map +1 -0
  159. package/dist/query/client.test.integration.js +94 -0
  160. package/dist/query/client.test.integration.js.map +1 -0
  161. package/dist/query/contract-query.js.map +1 -1
  162. package/dist/query/contract-query.test.integration.d.ts +2 -0
  163. package/dist/query/contract-query.test.integration.d.ts.map +1 -0
  164. package/dist/query/contract-query.test.integration.js +133 -0
  165. package/dist/query/contract-query.test.integration.js.map +1 -0
  166. package/dist/query/index.js.map +1 -1
  167. package/dist/query/multicall-batcher.js.map +1 -1
  168. package/dist/react-hooks/index.js.map +1 -1
  169. package/dist/react-hooks/use-is-safe-multisig.js.map +1 -1
  170. package/dist/react-hooks/use-safe-context.js.map +1 -1
  171. package/dist/react-hooks/wagmi/index.js.map +1 -1
  172. package/dist/rpc/cache.js.map +1 -1
  173. package/dist/rpc/circuit-breaker.js.map +1 -1
  174. package/dist/rpc/dedup.js.map +1 -1
  175. package/dist/rpc/index.js.map +1 -1
  176. package/dist/rpc/retry.js.map +1 -1
  177. package/dist/rpc/routemesh.js.map +1 -1
  178. package/dist/safe/adapter.js.map +1 -1
  179. package/dist/safe/detection.js.map +1 -1
  180. package/dist/safe/detection.test.integration.d.ts +2 -0
  181. package/dist/safe/detection.test.integration.d.ts.map +1 -0
  182. package/dist/safe/detection.test.integration.js +92 -0
  183. package/dist/safe/detection.test.integration.js.map +1 -0
  184. package/dist/safe/errors.js.map +1 -1
  185. package/dist/safe/index.js.map +1 -1
  186. package/dist/safe/live.js.map +1 -1
  187. package/dist/safe/service.js.map +1 -1
  188. package/dist/safe/service.test.integration.d.ts +2 -0
  189. package/dist/safe/service.test.integration.d.ts.map +1 -0
  190. package/dist/safe/service.test.integration.js +173 -0
  191. package/dist/safe/service.test.integration.js.map +1 -0
  192. package/dist/safe/simulation/abis.js.map +1 -1
  193. package/dist/safe/simulation/addresses.js.map +1 -1
  194. package/dist/safe/simulation/encoding.js.map +1 -1
  195. package/dist/safe/simulation/errors.d.ts +3 -3
  196. package/dist/safe/simulation/errors.js +1 -1
  197. package/dist/safe/simulation/errors.js.map +1 -1
  198. package/dist/safe/simulation/index.d.ts +1 -1
  199. package/dist/safe/simulation/index.js +1 -1
  200. package/dist/safe/simulation/index.js.map +1 -1
  201. package/dist/safe/simulation/service.d.ts +2 -2
  202. package/dist/safe/simulation/service.js +2 -2
  203. package/dist/safe/simulation/service.js.map +1 -1
  204. package/dist/safe/simulation/types.js.map +1 -1
  205. package/dist/safe/types.js.map +1 -1
  206. package/dist/signature/errors.js.map +1 -1
  207. package/dist/signature/index.js.map +1 -1
  208. package/dist/signature/service.js.map +1 -1
  209. package/dist/signature/service.test.integration.d.ts +2 -0
  210. package/dist/signature/service.test.integration.d.ts.map +1 -0
  211. package/dist/signature/service.test.integration.js +179 -0
  212. package/dist/signature/service.test.integration.js.map +1 -0
  213. package/dist/signature/utils.js.map +1 -1
  214. package/dist/simulation/errors.js.map +1 -1
  215. package/dist/simulation/index.js.map +1 -1
  216. package/dist/simulation/service.js.map +1 -1
  217. package/dist/simulation/tenderly.js.map +1 -1
  218. package/dist/simulation/tenderly.test.integration.d.ts +2 -0
  219. package/dist/simulation/tenderly.test.integration.d.ts.map +1 -0
  220. package/dist/simulation/tenderly.test.integration.js +104 -0
  221. package/dist/simulation/tenderly.test.integration.js.map +1 -0
  222. package/dist/simulation/types.js.map +1 -1
  223. package/dist/subscriptions/block-subscription.js.map +1 -1
  224. package/dist/subscriptions/errors.js.map +1 -1
  225. package/dist/subscriptions/index.js.map +1 -1
  226. package/dist/subscriptions/log-subscription.js.map +1 -1
  227. package/dist/subscriptions/pending-tx.js.map +1 -1
  228. package/dist/subscriptions/service.js.map +1 -1
  229. package/dist/telemetry/index.js.map +1 -1
  230. package/dist/telemetry/logger.js.map +1 -1
  231. package/dist/telemetry/tracer.js.map +1 -1
  232. package/dist/testing-kit/_fixtures/addresses.js.map +1 -1
  233. package/dist/testing-kit/_fixtures/receipts.js.map +1 -1
  234. package/dist/testing-kit/helpers.js.map +1 -1
  235. package/dist/testing-kit/index.js.map +1 -1
  236. package/dist/testing-kit/mock-balance-service.js.map +1 -1
  237. package/dist/testing-kit/mock-block-service.js.map +1 -1
  238. package/dist/testing-kit/mock-cross-chain-reader.js.map +1 -1
  239. package/dist/testing-kit/mock-deploy-service.js.map +1 -1
  240. package/dist/testing-kit/mock-erc721-service.js.map +1 -1
  241. package/dist/testing-kit/mock-gas-service.js.map +1 -1
  242. package/dist/testing-kit/mock-nonce-service.js.map +1 -1
  243. package/dist/testing-kit/mock-public-client.js.map +1 -1
  244. package/dist/testing-kit/mock-signature-service.js.map +1 -1
  245. package/dist/testing-kit/mock-simulation-service.js.map +1 -1
  246. package/dist/testing-kit/mock-subscription-service.js.map +1 -1
  247. package/dist/testing-kit/mock-transfer-service.js.map +1 -1
  248. package/dist/testing-kit/mock-wallet-client.js.map +1 -1
  249. package/dist/testing-kit/mock-wallet-provider.js.map +1 -1
  250. package/dist/testing-kit/test-layer.js.map +1 -1
  251. package/dist/transfer/index.js.map +1 -1
  252. package/dist/transfer/service.js.map +1 -1
  253. package/dist/tx/fees.js.map +1 -1
  254. package/dist/tx/index.js.map +1 -1
  255. package/dist/tx/manager.js.map +1 -1
  256. package/dist/tx/manager.test.integration.d.ts +2 -0
  257. package/dist/tx/manager.test.integration.d.ts.map +1 -0
  258. package/dist/tx/manager.test.integration.js +157 -0
  259. package/dist/tx/manager.test.integration.js.map +1 -0
  260. package/dist/tx/policy.js.map +1 -1
  261. package/dist/tx/replacement.js.map +1 -1
  262. package/dist/tx/tracker.js.map +1 -1
  263. package/dist/types/abi.js.map +1 -1
  264. package/dist/types/index.js.map +1 -1
  265. package/dist/types/params.js.map +1 -1
  266. package/dist/types/tx-overrides.js.map +1 -1
  267. package/dist/wagmi/index.js.map +1 -1
  268. package/dist/wagmi/layers.js.map +1 -1
  269. package/dist/wallet/errors.js.map +1 -1
  270. package/dist/wallet/index.js.map +1 -1
  271. package/dist/wallet/lifecycle.js.map +1 -1
  272. package/dist/wallet/operations.js.map +1 -1
  273. package/dist/wallet/provider-ref.js.map +1 -1
  274. package/dist/wallet/service.js.map +1 -1
  275. package/dist/wallet/types.js.map +1 -1
  276. package/package.json +25 -9
@@ -0,0 +1,120 @@
1
+ import { describe, expect, it } from "@effect/vitest";
2
+ import { Chunk, Effect, Exit, Layer, Stream } from "effect";
3
+ import { constVoid as noop } from "effect/Function";
4
+ import { erc20Abi } from "viem";
5
+ import { MIN_TX_GAS } from "../constants/index.js";
6
+ import { EventStream, EventStreamLive } from "../events/index.js";
7
+ import { makeMockPublicClientLayer, TEST_ADDRESS, TEST_CHAIN_ID, UNKNOWN_CHAIN_ID, } from "../testing-kit/index.js";
8
+ describe("EventStream", () => {
9
+ describe("watch", () => {
10
+ it.effect("returns Stream that emits decoded events", () => Effect.gen(function* () {
11
+ const stream = yield* EventStream;
12
+ const eventStream = yield* stream.watch({
13
+ abi: erc20Abi,
14
+ address: TEST_ADDRESS,
15
+ chainId: TEST_CHAIN_ID,
16
+ eventName: "Transfer",
17
+ });
18
+ const events = yield* Stream.runCollect(Stream.take(eventStream, 1));
19
+ const eventArray = Chunk.toReadonlyArray(events);
20
+ expect(eventArray).toHaveLength(1);
21
+ expect(eventArray[0].eventName).toBe("Transfer");
22
+ }).pipe(Effect.provide(Layer.provide(EventStreamLive, makeMockPublicClientLayer({
23
+ watchContractEvent: (params) => {
24
+ setTimeout(() => {
25
+ if (params.onLogs) {
26
+ params.onLogs([
27
+ {
28
+ address: TEST_ADDRESS,
29
+ blockHash: "0xblockhash",
30
+ blockNumber: 100n,
31
+ data: "0x0000000000000000000000000000000000000000000000000000000000000064",
32
+ logIndex: 0,
33
+ removed: false,
34
+ topics: [
35
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
36
+ "0x0000000000000000000000001234567890123456789012345678901234567890",
37
+ "0x0000000000000000000000000987654321098765432109876543210987654321",
38
+ ],
39
+ transactionHash: "0xtxhash",
40
+ transactionIndex: 0,
41
+ },
42
+ ]);
43
+ }
44
+ }, 10);
45
+ return noop;
46
+ },
47
+ })))));
48
+ it.effect("returns ClientNotFoundError for unknown chainId", () => Effect.gen(function* () {
49
+ const stream = yield* EventStream;
50
+ const exit = yield* Effect.exit(stream.watch({
51
+ abi: erc20Abi,
52
+ address: TEST_ADDRESS,
53
+ chainId: UNKNOWN_CHAIN_ID,
54
+ eventName: "Transfer",
55
+ }));
56
+ expect(Exit.isFailure(exit)).toBe(true);
57
+ }).pipe(Effect.provide(Layer.provide(EventStreamLive, makeMockPublicClientLayer()))));
58
+ it.effect("Stream fails with EventWatchError when onError is called", () => Effect.gen(function* () {
59
+ const stream = yield* EventStream;
60
+ const eventStream = yield* stream.watch({
61
+ abi: erc20Abi,
62
+ address: TEST_ADDRESS,
63
+ chainId: TEST_CHAIN_ID,
64
+ eventName: "Transfer",
65
+ });
66
+ const exit = yield* Effect.exit(Stream.runCollect(eventStream));
67
+ expect(Exit.isFailure(exit)).toBe(true);
68
+ }).pipe(Effect.provide(Layer.provide(EventStreamLive, makeMockPublicClientLayer({
69
+ watchContractEvent: (params) => {
70
+ setTimeout(() => {
71
+ if (params.onError) {
72
+ params.onError(new Error("Watch error"));
73
+ }
74
+ }, 10);
75
+ return noop;
76
+ },
77
+ })))));
78
+ });
79
+ describe("decodeReceipt", () => {
80
+ it.effect("decodes events from receipt", () => Effect.gen(function* () {
81
+ const stream = yield* EventStream;
82
+ const mockReceipt = {
83
+ blockHash: "0xblock",
84
+ blockNumber: 100n,
85
+ contractAddress: null,
86
+ cumulativeGasUsed: MIN_TX_GAS,
87
+ effectiveGasPrice: 1n,
88
+ from: "0xfrom",
89
+ gasUsed: MIN_TX_GAS,
90
+ logs: [
91
+ {
92
+ address: TEST_ADDRESS,
93
+ blockHash: "0xblock",
94
+ blockNumber: 100n,
95
+ data: "0x0000000000000000000000000000000000000000000000000000000000000064",
96
+ logIndex: 0,
97
+ removed: false,
98
+ topics: [
99
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
100
+ "0x0000000000000000000000001234567890123456789012345678901234567890",
101
+ "0x0000000000000000000000000987654321098765432109876543210987654321",
102
+ ],
103
+ transactionHash: "0xtxhash",
104
+ transactionIndex: 0,
105
+ },
106
+ ],
107
+ logsBloom: "0x",
108
+ status: "success",
109
+ to: "0xto",
110
+ transactionHash: "0xtxhash",
111
+ transactionIndex: 0,
112
+ type: "0x2",
113
+ };
114
+ const events = yield* stream.decodeReceipt(mockReceipt, erc20Abi);
115
+ expect(events).toHaveLength(1);
116
+ expect(events[0].eventName).toBe("Transfer");
117
+ }).pipe(Effect.provide(Layer.provide(EventStreamLive, makeMockPublicClientLayer()))));
118
+ });
119
+ });
120
+ //# sourceMappingURL=stream.test.integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.test.integration.js","sourceRoot":"","sources":["../../src/events/stream.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Chunk, Effect, Exit, Layer, Stream } from \"effect\";\nimport { constVoid as noop } from \"effect/Function\";\nimport type { Log, TransactionReceipt, WatchContractEventParameters } from \"viem\";\nimport { erc20Abi } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport { EventStream, EventStreamLive } from \"@/src/events/index.js\";\nimport {\n makeMockPublicClientLayer,\n TEST_ADDRESS,\n TEST_CHAIN_ID,\n UNKNOWN_CHAIN_ID,\n} from \"@/src/testing-kit/index.js\";\n\ndescribe(\"EventStream\", () => {\n describe(\"watch\", () => {\n it.effect(\"returns Stream that emits decoded events\", () =>\n Effect.gen(function* () {\n const stream = yield* EventStream;\n const eventStream = yield* stream.watch({\n abi: erc20Abi,\n address: TEST_ADDRESS,\n chainId: TEST_CHAIN_ID,\n eventName: \"Transfer\",\n });\n\n const events = yield* Stream.runCollect(Stream.take(eventStream, 1));\n const eventArray = Chunk.toReadonlyArray(events);\n\n expect(eventArray).toHaveLength(1);\n expect(eventArray[0].eventName).toBe(\"Transfer\");\n }).pipe(\n Effect.provide(\n Layer.provide(\n EventStreamLive,\n makeMockPublicClientLayer({\n watchContractEvent: (params: WatchContractEventParameters) => {\n setTimeout(() => {\n if (params.onLogs) {\n params.onLogs([\n {\n address: TEST_ADDRESS,\n blockHash: \"0xblockhash\",\n blockNumber: 100n,\n data: \"0x0000000000000000000000000000000000000000000000000000000000000064\",\n logIndex: 0,\n removed: false,\n topics: [\n \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n \"0x0000000000000000000000001234567890123456789012345678901234567890\",\n \"0x0000000000000000000000000987654321098765432109876543210987654321\",\n ],\n transactionHash: \"0xtxhash\",\n transactionIndex: 0,\n },\n ] satisfies Log[]);\n }\n }, 10);\n return noop;\n },\n })\n )\n )\n )\n );\n\n it.effect(\"returns ClientNotFoundError for unknown chainId\", () =>\n Effect.gen(function* () {\n const stream = yield* EventStream;\n const exit = yield* Effect.exit(\n stream.watch({\n abi: erc20Abi,\n address: TEST_ADDRESS,\n chainId: UNKNOWN_CHAIN_ID,\n eventName: \"Transfer\",\n })\n );\n\n expect(Exit.isFailure(exit)).toBe(true);\n }).pipe(Effect.provide(Layer.provide(EventStreamLive, makeMockPublicClientLayer())))\n );\n\n it.effect(\"Stream fails with EventWatchError when onError is called\", () =>\n Effect.gen(function* () {\n const stream = yield* EventStream;\n const eventStream = yield* stream.watch({\n abi: erc20Abi,\n address: TEST_ADDRESS,\n chainId: TEST_CHAIN_ID,\n eventName: \"Transfer\",\n });\n\n const exit = yield* Effect.exit(Stream.runCollect(eventStream));\n expect(Exit.isFailure(exit)).toBe(true);\n }).pipe(\n Effect.provide(\n Layer.provide(\n EventStreamLive,\n makeMockPublicClientLayer({\n watchContractEvent: (params: WatchContractEventParameters) => {\n setTimeout(() => {\n if (params.onError) {\n params.onError(new Error(\"Watch error\"));\n }\n }, 10);\n return noop;\n },\n })\n )\n )\n )\n );\n });\n\n describe(\"decodeReceipt\", () => {\n it.effect(\"decodes events from receipt\", () =>\n Effect.gen(function* () {\n const stream = yield* EventStream;\n\n const mockReceipt: TransactionReceipt = {\n blockHash: \"0xblock\",\n blockNumber: 100n,\n contractAddress: null,\n cumulativeGasUsed: MIN_TX_GAS,\n effectiveGasPrice: 1n,\n from: \"0xfrom\",\n gasUsed: MIN_TX_GAS,\n logs: [\n {\n address: TEST_ADDRESS,\n blockHash: \"0xblock\",\n blockNumber: 100n,\n data: \"0x0000000000000000000000000000000000000000000000000000000000000064\",\n logIndex: 0,\n removed: false,\n topics: [\n \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n \"0x0000000000000000000000001234567890123456789012345678901234567890\",\n \"0x0000000000000000000000000987654321098765432109876543210987654321\",\n ],\n transactionHash: \"0xtxhash\",\n transactionIndex: 0,\n },\n ],\n logsBloom: \"0x\",\n status: \"success\",\n to: \"0xto\",\n transactionHash: \"0xtxhash\",\n transactionIndex: 0,\n type: \"0x2\",\n };\n\n const events = yield* stream.decodeReceipt(mockReceipt, erc20Abi);\n\n expect(events).toHaveLength(1);\n expect(events[0].eventName).toBe(\"Transfer\");\n }).pipe(Effect.provide(Layer.provide(EventStreamLive, makeMockPublicClientLayer())))\n );\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/gas/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/gas/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\nexport class GasPriceUnavailableError extends Schema.TaggedError<GasPriceUnavailableError>()(\n \"GasPriceUnavailableError\",\n {\n cause: Schema.optional(Schema.Unknown),\n chainId: Schema.Number,\n message: Schema.String,\n }\n) {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"estimator.js","sourceRoot":"","sources":["../../src/gas/estimator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"estimator.js","sourceRoot":"","sources":["../../src/gas/estimator.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport type { ClientNotFoundError } from \"@/src/core/errors/index.js\";\nimport type { PublicClientServiceShape } from \"@/src/core/index.js\";\nimport { GasPriceUnavailableError } from \"@/src/gas/errors.js\";\n\nexport type GasSpeed = \"slow\" | \"standard\" | \"fast\" | \"instant\";\n\nexport type FeeEstimate = {\n confidence: number; // 0-100\n estimatedBaseFee: bigint;\n gasPrice?: bigint;\n maxFeePerGas: bigint;\n maxPriorityFeePerGas: bigint;\n};\n\n// Priority fee adjustments in gwei\nconst SPEED_ADJUSTMENTS: Record<GasSpeed, bigint> = {\n fast: 2_500_000_000n, // 2.5 gwei\n instant: 5_000_000_000n, // 5 gwei\n slow: 1_000_000_000n, // 1 gwei\n standard: 1_500_000_000n, // 1.5 gwei\n};\n\n// Confidence levels for each speed tier\nconst SPEED_CONFIDENCE: Record<GasSpeed, number> = {\n fast: 95,\n instant: 99,\n slow: 70,\n standard: 85,\n};\n\nexport const supportsEip1559Impl = (\n publicClientService: PublicClientServiceShape,\n chainId: number\n): Effect.Effect<boolean, GasPriceUnavailableError | ClientNotFoundError> =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(chainId);\n const block = yield* Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId,\n message: `Failed to check EIP-1559 support: ${String(cause)}`,\n }),\n try: () => client.getBlock({ blockTag: \"latest\" }),\n });\n return block.baseFeePerGas !== null && block.baseFeePerGas !== undefined;\n });\n\nexport const getAllFeeEstimatesImpl = (\n publicClientService: PublicClientServiceShape,\n chainId: number\n): Effect.Effect<Record<GasSpeed, FeeEstimate>, GasPriceUnavailableError | ClientNotFoundError> =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(chainId);\n const supportsEip1559 = yield* supportsEip1559Impl(publicClientService, chainId);\n\n if (supportsEip1559) {\n // EIP-1559 fee estimation\n const [block, maxPriorityFeePerGas] = yield* Effect.all(\n [\n Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId,\n message: `Failed to get pending block: ${String(cause)}`,\n }),\n try: () => client.getBlock({ blockTag: \"pending\" }),\n }),\n Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId,\n message: `Failed to estimate max priority fee: ${String(cause)}`,\n }),\n try: () => client.estimateMaxPriorityFeePerGas(),\n }),\n ],\n { concurrency: 2 }\n );\n\n const baseFee = block.baseFeePerGas;\n if (!baseFee) {\n return yield* Effect.fail(\n new GasPriceUnavailableError({\n chainId,\n message: \"Base fee not available despite EIP-1559 support\",\n })\n );\n }\n\n // Build estimates for each speed tier\n const makeEstimate = (speed: GasSpeed): FeeEstimate => {\n const priority = maxPriorityFeePerGas + SPEED_ADJUSTMENTS[speed];\n return {\n confidence: SPEED_CONFIDENCE[speed],\n estimatedBaseFee: baseFee,\n maxFeePerGas: baseFee * 2n + priority,\n maxPriorityFeePerGas: priority,\n };\n };\n\n const estimates: Record<GasSpeed, FeeEstimate> = {\n fast: makeEstimate(\"fast\"),\n instant: makeEstimate(\"instant\"),\n slow: makeEstimate(\"slow\"),\n standard: makeEstimate(\"standard\"),\n };\n\n return estimates;\n }\n\n // Legacy gas price estimation\n const gasPrice = yield* Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId,\n message: `Failed to get gas price: ${String(cause)}`,\n }),\n try: () => client.getGasPrice(),\n });\n\n // Create estimates using gas price multipliers\n const estimates: Record<GasSpeed, FeeEstimate> = {\n fast: {\n confidence: SPEED_CONFIDENCE.fast,\n estimatedBaseFee: 0n,\n gasPrice: (gasPrice * 125n) / 100n, // 1.25x\n maxFeePerGas: (gasPrice * 125n) / 100n,\n maxPriorityFeePerGas: 0n,\n },\n instant: {\n confidence: SPEED_CONFIDENCE.instant,\n estimatedBaseFee: 0n,\n gasPrice: (gasPrice * 150n) / 100n, // 1.5x\n maxFeePerGas: (gasPrice * 150n) / 100n,\n maxPriorityFeePerGas: 0n,\n },\n slow: {\n confidence: SPEED_CONFIDENCE.slow,\n estimatedBaseFee: 0n,\n gasPrice: (gasPrice * 90n) / 100n, // 0.9x\n maxFeePerGas: (gasPrice * 90n) / 100n,\n maxPriorityFeePerGas: 0n,\n },\n standard: {\n confidence: SPEED_CONFIDENCE.standard,\n estimatedBaseFee: 0n,\n gasPrice,\n maxFeePerGas: gasPrice,\n maxPriorityFeePerGas: 0n,\n },\n };\n\n return estimates;\n });\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gas/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gas/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./errors.js\";\nexport * from \"./estimator.js\";\nexport * from \"./service.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/gas/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/gas/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport type { ClientNotFoundError } from \"@/src/core/errors/index.js\";\nimport { PublicClientService } from \"@/src/core/index.js\";\nimport { GasPriceUnavailableError } from \"@/src/gas/errors.js\";\nimport type { FeeEstimate, GasSpeed } from \"@/src/gas/estimator.js\";\nimport { getAllFeeEstimatesImpl, supportsEip1559Impl } from \"@/src/gas/estimator.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\n\nexport type GasServiceShape = {\n readonly estimateFees: (params: {\n chainId: number;\n speed?: GasSpeed;\n }) => Effect.Effect<FeeEstimate, GasPriceUnavailableError | ClientNotFoundError>;\n\n readonly getAllFeeEstimates: (params: {\n chainId: number;\n }) => Effect.Effect<\n Record<GasSpeed, FeeEstimate>,\n GasPriceUnavailableError | ClientNotFoundError\n >;\n\n readonly getBaseFee: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n readonly getMaxPriorityFee: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n readonly estimateGas: (params: {\n chainId: number;\n data?: Hex;\n from?: Address;\n to: Address;\n value?: bigint;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n readonly supportsEip1559: (params: {\n chainId: number;\n }) => Effect.Effect<boolean, GasPriceUnavailableError | ClientNotFoundError>;\n};\n\nexport class GasService extends Context.Tag(\"ew3/GasService\")<GasService, GasServiceShape>() {}\n\nexport const GasServiceLive = Layer.effect(\n GasService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n\n return GasService.of({\n estimateFees: (params: { chainId: number; speed?: GasSpeed }) =>\n Effect.gen(function* () {\n const allEstimates = yield* getAllFeeEstimatesImpl(publicClientService, params.chainId);\n const speed = params.speed ?? \"standard\";\n return allEstimates[speed];\n }).pipe(\n Effect.withSpan(SpanNames.GAS_ESTIMATE_FEES, {\n attributes: {\n chainId: params.chainId,\n speed: params.speed ?? \"standard\",\n },\n })\n ),\n\n estimateGas: (params: {\n chainId: number;\n data?: Hex;\n from?: Address;\n to: Address;\n value?: bigint;\n }) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId: params.chainId,\n message: `Failed to estimate gas: ${String(cause)}`,\n }),\n try: () =>\n client.estimateGas({\n ...(params.from ? { account: params.from } : {}),\n data: params.data,\n to: params.to,\n value: params.value,\n }),\n });\n }).pipe(\n Effect.withSpan(SpanNames.GAS_ESTIMATE_GAS, {\n attributes: {\n chainId: params.chainId,\n to: params.to,\n },\n })\n ),\n\n getAllFeeEstimates: (params: { chainId: number }) =>\n Effect.gen(function* () {\n return yield* getAllFeeEstimatesImpl(publicClientService, params.chainId);\n }).pipe(\n Effect.withSpan(SpanNames.GAS_GET_ALL_ESTIMATES, {\n attributes: {\n chainId: params.chainId,\n },\n })\n ),\n\n getBaseFee: (params: { chainId: number }) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n const block = yield* Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId: params.chainId,\n message: `Failed to get base fee: ${String(cause)}`,\n }),\n try: () => client.getBlock({ blockTag: \"pending\" }),\n });\n\n if (!block.baseFeePerGas) {\n return yield* Effect.fail(\n new GasPriceUnavailableError({\n chainId: params.chainId,\n message: \"Base fee not available (chain may not support EIP-1559)\",\n })\n );\n }\n\n return block.baseFeePerGas;\n }).pipe(\n Effect.withSpan(SpanNames.GAS_GET_BASE_FEE, {\n attributes: {\n chainId: params.chainId,\n },\n })\n ),\n\n getMaxPriorityFee: (params: { chainId: number }) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new GasPriceUnavailableError({\n cause,\n chainId: params.chainId,\n message: `Failed to get max priority fee: ${String(cause)}`,\n }),\n try: () => client.estimateMaxPriorityFeePerGas(),\n });\n }).pipe(\n Effect.withSpan(SpanNames.GAS_GET_MAX_PRIORITY_FEE, {\n attributes: {\n chainId: params.chainId,\n },\n })\n ),\n\n supportsEip1559: (params: { chainId: number }) =>\n Effect.gen(function* () {\n return yield* supportsEip1559Impl(publicClientService, params.chainId);\n }).pipe(\n Effect.withSpan(SpanNames.GAS_SUPPORTS_EIP1559, {\n attributes: {\n chainId: params.chainId,\n },\n })\n ),\n });\n })\n);\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=service.test.integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.test.integration.d.ts","sourceRoot":"","sources":["../../src/gas/service.test.integration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,128 @@
1
+ import { describe, expect, it } from "@effect/vitest";
2
+ import { Cause, Effect, Exit } from "effect";
3
+ import { mainnet } from "viem/chains";
4
+ import { MIN_TX_GAS } from "../constants/index.js";
5
+ import { ClientNotFoundError } from "../core/index.js";
6
+ import { GasPriceUnavailableError, GasService } from "../gas/index.js";
7
+ import { makeEffectEvmTestLayer } from "../testing-kit/index.js";
8
+ const DEFAULT_BLOCK = {
9
+ baseFeePerGas: 30000000000n,
10
+ blobGasUsed: 0n,
11
+ difficulty: 0n,
12
+ excessBlobGas: 0n,
13
+ extraData: "0x",
14
+ gasLimit: 30000000n,
15
+ gasUsed: 12000000n,
16
+ hash: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
17
+ logsBloom: "0x00",
18
+ miner: "0x0000000000000000000000000000000000000000",
19
+ mixHash: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
20
+ nonce: "0x0000000000000000",
21
+ number: 1000n,
22
+ parentHash: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
23
+ receiptsRoot: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
24
+ sealFields: [],
25
+ sha3Uncles: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
26
+ size: 1024n,
27
+ stateRoot: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
28
+ timestamp: 1700000000n,
29
+ totalDifficulty: 0n,
30
+ transactions: [],
31
+ transactionsRoot: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
32
+ uncles: [],
33
+ };
34
+ describe("GasService (Live)", () => {
35
+ const eip1559Layer = makeEffectEvmTestLayer({
36
+ publicClient: {
37
+ estimateGas: async () => MIN_TX_GAS,
38
+ estimateMaxPriorityFeePerGas: async () => 1500000000n,
39
+ getBlock: async () => DEFAULT_BLOCK,
40
+ getGasPrice: async () => 45000000000n,
41
+ },
42
+ });
43
+ describe("EIP-1559 estimation", () => {
44
+ it.effect("uses estimateMaxPriorityFeePerGas as baseline", () => Effect.gen(function* () {
45
+ const service = yield* GasService;
46
+ const estimates = yield* service.getAllFeeEstimates({
47
+ chainId: mainnet.id,
48
+ });
49
+ expect(estimates.slow.maxPriorityFeePerGas).toBe(2500000000n);
50
+ expect(estimates.standard.maxPriorityFeePerGas).toBe(3000000000n);
51
+ expect(estimates.fast.maxPriorityFeePerGas).toBe(4000000000n);
52
+ expect(estimates.instant.maxPriorityFeePerGas).toBe(6500000000n);
53
+ expect(estimates.instant.maxPriorityFeePerGas).toBeGreaterThan(estimates.fast.maxPriorityFeePerGas);
54
+ expect(estimates.fast.maxPriorityFeePerGas).toBeGreaterThan(estimates.standard.maxPriorityFeePerGas);
55
+ expect(estimates.standard.maxPriorityFeePerGas).toBeGreaterThan(estimates.slow.maxPriorityFeePerGas);
56
+ }).pipe(Effect.provide(eip1559Layer)));
57
+ it.effect("supportsEip1559 returns true", () => Effect.gen(function* () {
58
+ const service = yield* GasService;
59
+ const supports = yield* service.supportsEip1559({
60
+ chainId: mainnet.id,
61
+ });
62
+ expect(supports).toBe(true);
63
+ }).pipe(Effect.provide(eip1559Layer)));
64
+ });
65
+ describe("Legacy estimation", () => {
66
+ const legacyLayer = makeEffectEvmTestLayer({
67
+ publicClient: {
68
+ getBlock: async () => ({ ...DEFAULT_BLOCK, baseFeePerGas: null }),
69
+ getGasPrice: async () => 1000n,
70
+ },
71
+ });
72
+ it.effect("falls back to gasPrice multipliers", () => Effect.gen(function* () {
73
+ const service = yield* GasService;
74
+ const estimates = yield* service.getAllFeeEstimates({
75
+ chainId: mainnet.id,
76
+ });
77
+ expect(estimates.standard.gasPrice).toBe(1000n);
78
+ expect(estimates.slow.gasPrice).toBe(900n);
79
+ expect(estimates.fast.gasPrice).toBe(1250n);
80
+ expect(estimates.instant.gasPrice).toBe(1500n);
81
+ expect(estimates.standard.maxPriorityFeePerGas).toBe(0n);
82
+ }).pipe(Effect.provide(legacyLayer)));
83
+ it.effect("supportsEip1559 returns false", () => Effect.gen(function* () {
84
+ const service = yield* GasService;
85
+ const supports = yield* service.supportsEip1559({
86
+ chainId: mainnet.id,
87
+ });
88
+ expect(supports).toBe(false);
89
+ }).pipe(Effect.provide(legacyLayer)));
90
+ it.effect("getBaseFee fails with GasPriceUnavailableError", () => Effect.gen(function* () {
91
+ const service = yield* GasService;
92
+ const exit = yield* service.getBaseFee({ chainId: mainnet.id }).pipe(Effect.exit);
93
+ expect(Exit.isFailure(exit)).toBe(true);
94
+ if (Exit.isFailure(exit)) {
95
+ const error = Cause.failureOption(exit.cause);
96
+ expect(error._tag).toBe("Some");
97
+ if (error._tag === "Some") {
98
+ expect(error.value).toBeInstanceOf(GasPriceUnavailableError);
99
+ }
100
+ }
101
+ }).pipe(Effect.provide(legacyLayer)));
102
+ });
103
+ describe("estimateGas", () => {
104
+ it.effect("returns gas estimate", () => Effect.gen(function* () {
105
+ const service = yield* GasService;
106
+ const gas = yield* service.estimateGas({
107
+ chainId: mainnet.id,
108
+ to: "0x1234567890123456789012345678901234567890",
109
+ });
110
+ expect(gas).toBe(MIN_TX_GAS);
111
+ }).pipe(Effect.provide(eip1559Layer)));
112
+ });
113
+ describe("unsupported chainId", () => {
114
+ it.effect("fails with ClientNotFoundError", () => Effect.gen(function* () {
115
+ const service = yield* GasService;
116
+ const exit = yield* service.getAllFeeEstimates({ chainId: 999 }).pipe(Effect.exit);
117
+ expect(Exit.isFailure(exit)).toBe(true);
118
+ if (Exit.isFailure(exit)) {
119
+ const error = Cause.failureOption(exit.cause);
120
+ expect(error._tag).toBe("Some");
121
+ if (error._tag === "Some") {
122
+ expect(error.value).toBeInstanceOf(ClientNotFoundError);
123
+ }
124
+ }
125
+ }).pipe(Effect.provide(eip1559Layer)));
126
+ });
127
+ });
128
+ //# sourceMappingURL=service.test.integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/gas/service.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Cause, Effect, Exit } from \"effect\";\nimport type { Address, Block } from \"viem\";\nimport { mainnet } from \"viem/chains\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport { ClientNotFoundError } from \"@/src/core/index.js\";\nimport { GasPriceUnavailableError, GasService } from \"@/src/gas/index.js\";\nimport { makeEffectEvmTestLayer } from \"@/src/testing-kit/index.js\";\n\nconst DEFAULT_BLOCK: Block = {\n baseFeePerGas: 30000000000n,\n blobGasUsed: 0n,\n difficulty: 0n,\n excessBlobGas: 0n,\n extraData: \"0x\",\n gasLimit: 30000000n,\n gasUsed: 12000000n,\n hash: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n logsBloom: \"0x00\",\n miner: \"0x0000000000000000000000000000000000000000\",\n mixHash: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n nonce: \"0x0000000000000000\",\n number: 1000n,\n parentHash: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n receiptsRoot: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n sealFields: [],\n sha3Uncles: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n size: 1024n,\n stateRoot: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n timestamp: 1700000000n,\n totalDifficulty: 0n,\n transactions: [],\n transactionsRoot: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n uncles: [],\n};\n\ndescribe(\"GasService (Live)\", () => {\n const eip1559Layer = makeEffectEvmTestLayer({\n publicClient: {\n estimateGas: async () => MIN_TX_GAS,\n estimateMaxPriorityFeePerGas: async () => 1500000000n, // 1.5 gwei baseline\n getBlock: async () => DEFAULT_BLOCK,\n getGasPrice: async () => 45000000000n,\n },\n });\n\n describe(\"EIP-1559 estimation\", () => {\n it.effect(\"uses estimateMaxPriorityFeePerGas as baseline\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const estimates = yield* service.getAllFeeEstimates({\n chainId: mainnet.id,\n });\n\n expect(estimates.slow.maxPriorityFeePerGas).toBe(2500000000n);\n expect(estimates.standard.maxPriorityFeePerGas).toBe(3000000000n);\n expect(estimates.fast.maxPriorityFeePerGas).toBe(4000000000n);\n expect(estimates.instant.maxPriorityFeePerGas).toBe(6500000000n);\n\n expect(estimates.instant.maxPriorityFeePerGas).toBeGreaterThan(\n estimates.fast.maxPriorityFeePerGas\n );\n expect(estimates.fast.maxPriorityFeePerGas).toBeGreaterThan(\n estimates.standard.maxPriorityFeePerGas\n );\n expect(estimates.standard.maxPriorityFeePerGas).toBeGreaterThan(\n estimates.slow.maxPriorityFeePerGas\n );\n }).pipe(Effect.provide(eip1559Layer))\n );\n\n it.effect(\"supportsEip1559 returns true\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const supports = yield* service.supportsEip1559({\n chainId: mainnet.id,\n });\n expect(supports).toBe(true);\n }).pipe(Effect.provide(eip1559Layer))\n );\n });\n\n describe(\"Legacy estimation\", () => {\n const legacyLayer = makeEffectEvmTestLayer({\n publicClient: {\n getBlock: async () => ({ ...DEFAULT_BLOCK, baseFeePerGas: null }),\n getGasPrice: async () => 1000n,\n },\n });\n\n it.effect(\"falls back to gasPrice multipliers\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const estimates = yield* service.getAllFeeEstimates({\n chainId: mainnet.id,\n });\n\n expect(estimates.standard.gasPrice).toBe(1000n);\n expect(estimates.slow.gasPrice).toBe(900n);\n expect(estimates.fast.gasPrice).toBe(1250n);\n expect(estimates.instant.gasPrice).toBe(1500n);\n expect(estimates.standard.maxPriorityFeePerGas).toBe(0n);\n }).pipe(Effect.provide(legacyLayer))\n );\n\n it.effect(\"supportsEip1559 returns false\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const supports = yield* service.supportsEip1559({\n chainId: mainnet.id,\n });\n expect(supports).toBe(false);\n }).pipe(Effect.provide(legacyLayer))\n );\n\n it.effect(\"getBaseFee fails with GasPriceUnavailableError\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const exit = yield* service.getBaseFee({ chainId: mainnet.id }).pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(error._tag).toBe(\"Some\");\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(GasPriceUnavailableError);\n }\n }\n }).pipe(Effect.provide(legacyLayer))\n );\n });\n\n describe(\"estimateGas\", () => {\n it.effect(\"returns gas estimate\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const gas = yield* service.estimateGas({\n chainId: mainnet.id,\n to: \"0x1234567890123456789012345678901234567890\" as Address,\n });\n\n expect(gas).toBe(MIN_TX_GAS);\n }).pipe(Effect.provide(eip1559Layer))\n );\n });\n\n describe(\"unsupported chainId\", () => {\n it.effect(\"fails with ClientNotFoundError\", () =>\n Effect.gen(function* () {\n const service = yield* GasService;\n const exit = yield* service.getAllFeeEstimates({ chainId: 999 }).pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(error._tag).toBe(\"Some\");\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(ClientNotFoundError);\n }\n }\n }).pipe(Effect.provide(eip1559Layer))\n );\n });\n});\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mBAAmB,CAAC;AAElC,cAAc,mBAAmB,CAAC;AAElC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,sBAAsB,CAAC;AAErC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,eAAe,CAAC;AAE9B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mBAAmB,CAAC;AAElC,cAAc,mBAAmB,CAAC;AAElC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,sBAAsB,CAAC;AAErC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,eAAe,CAAC;AAE9B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mBAAmB,CAAC","sourcesContent":["// ABI exports (ERC-20, ERC-721, etc.)\nexport * from \"./abi/index.js\";\n// Balance utilities\nexport * from \"./balance/index.js\";\n// Block service\nexport * from \"./block/index.js\";\n// Contract I/O\nexport * from \"./contract/index.js\";\n// Core services and clients\nexport * from \"./core/index.js\";\n// Contract deployment\nexport * from \"./deploy/index.js\";\n// EIP-7702 helpers (delegation + batched execution)\nexport * from \"./eip7702/index.js\";\n// ENS resolution\nexport * from \"./ens/index.js\";\n// ERC-20 services\nexport * from \"./erc20/index.js\";\n// ERC-721 services\nexport * from \"./erc721/index.js\";\n// Event handling\nexport * from \"./events/index.js\";\n// Gas estimation\nexport * from \"./gas/index.js\";\n// Nonce management\nexport * from \"./nonce/index.js\";\n// Browser persistence (localStorage-backed cursor and tx stores)\nexport * as browser from \"./platform/browser/index.js\";\n// Presets (layers and transports)\nexport * from \"./presets/index.js\";\n// Query/cache layer\nexport * from \"./query/index.js\";\n// RPC utilities (retry, circuit breaker, cache, deduplication)\nexport * from \"./rpc/index.js\";\n// Signature utilities\nexport * from \"./signature/index.js\";\n// Simulation (Tenderly integration)\nexport * from \"./simulation/index.js\";\n// Subscriptions (blocks, logs, pending transactions)\nexport * from \"./subscriptions/index.js\";\n// Telemetry (tracing and logging)\nexport * from \"./telemetry/index.js\";\n// Native token transfers\nexport * from \"./transfer/index.js\";\n// Transaction lifecycle\nexport * from \"./tx/index.js\";\n// Type definitions\nexport * from \"./types/index.js\";\n// Wallet management\nexport * from \"./wallet/index.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/convenience/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/convenience/index.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as Effect from \"effect/Effect\";\nimport * as Fiber from \"effect/Fiber\";\nimport { constVoid as noop } from \"effect/Function\";\nimport * as Scope from \"effect/Scope\";\nimport * as Stream from \"effect/Stream\";\nimport * as React from \"react\";\nimport type * as Abi_ from \"viem\";\nimport type {\n WriteAndTrackError,\n WriteAndTrackParams,\n WriteAndTrackResult,\n} from \"@/src/contract/index.js\";\nimport { ContractPipeline } from \"@/src/contract/index.js\";\nimport { ContractQuery } from \"@/src/query/index.js\";\nimport type { TxState } from \"@/src/tx/index.js\";\nimport { initialTxState } from \"@/src/tx/index.js\";\nimport type { ContractFunctionName, ReadParams } from \"@/src/types/index.js\";\n\nimport { fromCause, fromUnknown } from \"../internal/error.js\";\nimport { makeScopedRun } from \"../internal/scoped-run.js\";\nimport { stableStringify } from \"../internal/stable.js\";\nimport type { StreamState, UseEffectResult } from \"../primitives.js\";\nimport { useEffectMemo, useStream, useStreamEffect } from \"../primitives.js\";\nimport { useEffectEvmRuntime } from \"../provider.js\";\n\nexport const useContractRead = <\n TAbi extends Abi_.Abi,\n TFn extends ContractFunctionName<TAbi, \"pure\" | \"view\">,\n>(\n params: ReadParams<TAbi, TFn>,\n options: {\n readonly blockScoped?: boolean | undefined;\n readonly initial?: Abi_.ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFn> | undefined;\n readonly ttl?: number | undefined;\n } = {}\n): UseEffectResult<Abi_.ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFn>, unknown> => {\n const deps = [\n stableStringify(params.chainId),\n stableStringify(params.address),\n stableStringify(params.functionName),\n stableStringify(params.args ?? []),\n stableStringify(params.abi),\n stableStringify(params.account),\n stableStringify(params.blockNumber),\n stableStringify(params.blockTag),\n stableStringify(options.blockScoped ?? true),\n stableStringify(options.ttl),\n ];\n\n return useEffectMemo(\n () =>\n Effect.gen(function* () {\n const cq = yield* ContractQuery;\n return yield* cq.read(params, {\n blockScoped: options.blockScoped,\n ttl: options.ttl,\n });\n }),\n deps,\n { initial: options.initial }\n );\n};\n\nexport const useWatchContractRead = <\n TAbi extends Abi_.Abi,\n TFn extends ContractFunctionName<TAbi, \"pure\" | \"view\">,\n>(\n params: ReadParams<TAbi, TFn>,\n options: {\n readonly blockScoped?: boolean | undefined;\n readonly initial?: Abi_.ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFn> | undefined;\n readonly refetchOn?: import(\"effect/Stream\").Stream<unknown, never> | undefined;\n readonly ttl?: number | undefined;\n } = {}\n): StreamState<Abi_.ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFn>> => {\n const deps = [\n stableStringify(params.chainId),\n stableStringify(params.address),\n stableStringify(params.functionName),\n stableStringify(params.args ?? []),\n stableStringify(params.abi),\n stableStringify(params.account),\n stableStringify(params.blockNumber),\n stableStringify(params.blockTag),\n stableStringify(options.blockScoped ?? true),\n stableStringify(options.ttl),\n ];\n\n return useStreamEffect(\n () =>\n Effect.gen(function* () {\n const cq = yield* ContractQuery;\n return yield* cq.watchRead(params, {\n blockScoped: options.blockScoped,\n refetchOn: options.refetchOn,\n ttl: options.ttl,\n });\n }),\n deps,\n { initial: options.initial }\n );\n};\n\nexport type UseWriteAndTrackActions = {\n readonly cancel: () => void;\n readonly speedup: () => void;\n};\n\nexport type UseWriteAndTrackResult<TAbi extends Abi_.Abi> = {\n readonly actions?: UseWriteAndTrackActions | undefined;\n readonly result: UseEffectResult<WriteAndTrackResult<TAbi>, WriteAndTrackError>;\n readonly send: () => void;\n readonly state: TxState;\n};\n\nexport const useWriteAndTrack = <\n TAbi extends Abi_.Abi,\n TFn extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\">,\n>(\n params: WriteAndTrackParams<TAbi, TFn>\n): UseWriteAndTrackResult<TAbi> => {\n const runtime = useEffectEvmRuntime();\n\n const closeRef = React.useRef<(() => void) | null>(null);\n const runIdRef = React.useRef(0);\n\n const [actions, setActions] = React.useState<UseWriteAndTrackActions>();\n const [result, setResult] = React.useState<\n UseEffectResult<WriteAndTrackResult<TAbi>, WriteAndTrackError>\n >({ status: \"idle\" });\n const [stateRef, setStateRef] = React.useState<\n import(\"effect/SubscriptionRef\").SubscriptionRef<TxState> | null\n >(null);\n\n React.useEffect(\n () => () => {\n closeRef.current?.();\n },\n []\n );\n\n const send = React.useCallback(() => {\n runIdRef.current += 1;\n const runId = runIdRef.current;\n\n closeRef.current?.();\n closeRef.current = null;\n\n setResult({ status: \"loading\" });\n\n (async () => {\n const scoped = await makeScopedRun(runtime);\n closeRef.current = scoped.close;\n\n const start = Effect.gen(function* () {\n const pipeline = yield* ContractPipeline;\n return yield* pipeline.writeAndTrack(params);\n });\n\n const started = await runtime.runPromise(Scope.extend(scoped.scope)(start));\n if (runIdRef.current !== runId) {\n scoped.close();\n return;\n }\n\n setStateRef(started.stateRef);\n setActions({\n cancel: () => {\n runtime.runPromise(Scope.extend(scoped.scope)(started.actions.cancel())).catch(noop);\n },\n speedup: () => {\n runtime.runPromise(Scope.extend(scoped.scope)(started.actions.speedup())).catch(noop);\n },\n });\n\n const fiber = scoped.fork(Effect.exit(started.result));\n const exit = await runtime.runPromise(Fiber.join(fiber));\n\n if (runIdRef.current !== runId) {\n scoped.close();\n return;\n }\n\n if (exit._tag === \"Success\") {\n setResult({\n data: exit.value as WriteAndTrackResult<TAbi>,\n status: \"success\",\n });\n } else {\n setResult({\n error: fromCause(exit.cause),\n status: \"error\",\n });\n }\n })().catch((cause) => {\n setResult({\n error: fromUnknown(cause) as unknown as WriteAndTrackError,\n status: \"error\",\n });\n });\n }, [params, runtime]);\n\n const stateStream = React.useMemo(\n () => (stateRef ? stateRef.changes : Stream.succeed(initialTxState)),\n [stateRef]\n );\n const streamState = useStream(stateStream, { initial: initialTxState });\n const state = streamState.status === \"running\" ? streamState.value : initialTxState;\n\n return { actions, result, send, state };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAqB,EAAkB,EAAE;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,KAA4B,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAsB,EAAE,CAChE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAA4B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAqB,EAAkB,EAAE;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,KAA4B,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAsB,EAAE,CAChE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAA4B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import * as Cause from \"effect/Cause\";\nimport * as Option from \"effect/Option\";\n\nexport type EffectError<E> = E | Cause.Cause<never>;\n\nexport const fromCause = <E>(cause: Cause.Cause<E>): EffectError<E> => {\n const failure = Cause.failureOption(cause);\n return Option.isSome(failure) ? failure.value : (cause as Cause.Cause<never>);\n};\n\nexport const fromUnknown = (cause: unknown): Cause.Cause<never> =>\n Cause.isCause(cause) ? (cause as Cause.Cause<never>) : Cause.die(cause);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"is-dev.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/is-dev.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAChB,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,OAAO,CAAC,GAAG,KAAK,WAAW;IAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC"}
1
+ {"version":3,"file":"is-dev.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/is-dev.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAChB,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,OAAO,CAAC,GAAG,KAAK,WAAW;IAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC","sourcesContent":["export const isDev =\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAGpC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAmBvC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAyC,EACd,EAAE;IAC7B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAA6C,CAAC,CAAC,CACtF,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,MAA8B,EAC9B,OAA4C,EAC5C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,CACjB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE9F,MAAM,cAAc,GAAG,CACrB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAElG,OAAO;QACL,OAAO;QACP,UAAU;QACV,cAAc;QACd,OAAO,EAAE,OAA8C;QACvD,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAyC,EAAoB,EAAE;IAC9F,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAA6C,CAAC,CAAC,CACtF,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,MAA8B,EAC9B,OAA4C,EAC5C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,CACjB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE9F,MAAM,cAAc,GAAG,CACrB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAElG,OAAO;QACL,OAAO;QACP,UAAU;QACV,cAAc;QACd,OAAO,EAAE,OAA8C;QACvD,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,KAA4B,EAAiB,EAAE;IAChF,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAGpC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAmBvC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAyC,EACd,EAAE;IAC7B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAA6C,CAAC,CAAC,CACtF,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,MAA8B,EAC9B,OAA4C,EAC5C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,CACjB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE9F,MAAM,cAAc,GAAG,CACrB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAElG,OAAO;QACL,OAAO;QACP,UAAU;QACV,cAAc;QACd,OAAO,EAAE,OAA8C;QACvD,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAyC,EAAoB,EAAE;IAC9F,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAA6C,CAAC,CAAC,CACtF,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,MAA8B,EAC9B,OAA4C,EAC5C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,CACjB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAE9F,MAAM,cAAc,GAAG,CACrB,MAA8B,EAC9B,OAAuD,EACvD,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAiD,EAAE,OAAO,CAAC,CAAC;IAElG,OAAO;QACL,OAAO;QACP,UAAU;QACV,cAAc;QACd,OAAO,EAAE,OAA8C;QACvD,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,KAA4B,EAAiB,EAAE;IAChF,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC","sourcesContent":["import type * as Effect from \"effect/Effect\";\nimport * as Effect_ from \"effect/Effect\";\nimport * as Exit from \"effect/Exit\";\nimport type * as Fiber from \"effect/Fiber\";\nimport type * as Layer from \"effect/Layer\";\nimport * as Layer_ from \"effect/Layer\";\nimport type * as Runtime from \"effect/Runtime\";\nimport * as Runtime_ from \"effect/Runtime\";\nimport type * as Scope from \"effect/Scope\";\nimport * as Scope_ from \"effect/Scope\";\n\nexport type EffectEvmRuntime = {\n readonly runFork: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: Runtime.RunForkOptions | undefined\n ) => Fiber.RuntimeFiber<A, E>;\n readonly runPromise: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: { readonly signal?: AbortSignal } | undefined\n ) => Promise<A>;\n readonly runPromiseExit: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: { readonly signal?: AbortSignal } | undefined\n ) => Promise<Exit.Exit<A, E>>;\n readonly runtime: Runtime.Runtime<unknown>;\n readonly scope: Scope.Scope.Closeable;\n};\n\nexport const buildRuntime = async (\n layer: Layer.Layer<never, unknown, never>\n): Promise<EffectEvmRuntime> => {\n const scope = await Effect_.runPromise(Scope_.make());\n const runtime = await Effect_.runPromise(\n Scope_.extend(scope)(Layer_.toRuntime(layer as Layer.Layer<unknown, unknown, never>))\n );\n\n const runFork = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: Runtime.RunForkOptions | undefined\n ) => Runtime_.runFork(runtime, effect as unknown as Effect.Effect<A, E, unknown>, options);\n\n const runPromise = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: { readonly signal?: AbortSignal } | undefined\n ) => Runtime_.runPromise(runtime, effect as unknown as Effect.Effect<A, E, unknown>, options);\n\n const runPromiseExit = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: { readonly signal?: AbortSignal } | undefined\n ) => Runtime_.runPromiseExit(runtime, effect as unknown as Effect.Effect<A, E, unknown>, options);\n\n return {\n runFork,\n runPromise,\n runPromiseExit,\n runtime: runtime as unknown as Runtime.Runtime<unknown>,\n scope,\n };\n};\n\nexport const buildRuntimeSync = (layer: Layer.Layer<never, unknown, never>): EffectEvmRuntime => {\n const scope = Effect_.runSync(Scope_.make());\n const runtime = Effect_.runSync(\n Scope_.extend(scope)(Layer_.toRuntime(layer as Layer.Layer<unknown, unknown, never>))\n );\n\n const runFork = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: Runtime.RunForkOptions | undefined\n ) => Runtime_.runFork(runtime, effect as unknown as Effect.Effect<A, E, unknown>, options);\n\n const runPromise = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: { readonly signal?: AbortSignal } | undefined\n ) => Runtime_.runPromise(runtime, effect as unknown as Effect.Effect<A, E, unknown>, options);\n\n const runPromiseExit = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n options?: { readonly signal?: AbortSignal } | undefined\n ) => Runtime_.runPromiseExit(runtime, effect as unknown as Effect.Effect<A, E, unknown>, options);\n\n return {\n runFork,\n runPromise,\n runPromiseExit,\n runtime: runtime as unknown as Runtime.Runtime<unknown>,\n scope,\n };\n};\n\nexport const closeRuntime = async (scope: Scope.Scope.Closeable): Promise<void> => {\n await Effect_.runPromise(Scope_.close(scope, Exit.succeed(undefined)));\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-run.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/scoped-run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AASvC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAyB,EAAsB,EAAE;IACnF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACjG,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAU,MAA8B,EAAE,EAAE,CACvD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAiD,CAAC,EAAE;QACvF,KAAK;KACN,CAAC,CAAC;IAEL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC,CAAC"}
1
+ {"version":3,"file":"scoped-run.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/scoped-run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AASvC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAyB,EAAsB,EAAE;IACnF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACjG,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAU,MAA8B,EAAE,EAAE,CACvD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAiD,CAAC,EAAE;QACvF,KAAK;KACN,CAAC,CAAC;IAEL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC,CAAC","sourcesContent":["import type * as Effect from \"effect/Effect\";\nimport * as ExecutionStrategy from \"effect/ExecutionStrategy\";\nimport * as Exit from \"effect/Exit\";\nimport type * as Fiber from \"effect/Fiber\";\nimport { constVoid as noop } from \"effect/Function\";\nimport * as Scope_ from \"effect/Scope\";\nimport type { EffectEvmRuntime } from \"./runtime.js\";\n\nexport type ScopedRun = {\n readonly close: () => void;\n readonly fork: <A, E, R>(effect: Effect.Effect<A, E, R>) => Fiber.RuntimeFiber<A, E>;\n readonly scope: Scope_.Scope.Closeable;\n};\n\nexport const makeScopedRun = async (runtime: EffectEvmRuntime): Promise<ScopedRun> => {\n const scope = await runtime.runPromise(Scope_.fork(runtime.scope, ExecutionStrategy.sequential));\n let closed = false;\n\n const close = () => {\n if (closed) {\n return;\n }\n closed = true;\n runtime.runPromise(Scope_.close(scope, Exit.succeed(undefined))).catch(noop);\n };\n\n const fork = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n runtime.runFork(Scope_.extend(scope)(effect as unknown as Effect.Effect<A, E, unknown>), {\n scope,\n });\n\n return { close, fork, scope };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"stable.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/stable.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE,CACxD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"stable.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/internal/stable.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE,CACxD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC","sourcesContent":["export const stableStringify = (value: unknown): string =>\n JSON.stringify(value, (_, v) => (typeof v === \"bigint\" ? v.toString() : v));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-effect-memo-factory.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/primitives/use-effect-memo-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-effect-memo-factory.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/primitives/use-effect-memo-factory.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as Cause from \"effect/Cause\";\nimport * as Effect from \"effect/Effect\";\nimport type * as Exit from \"effect/Exit\";\nimport * as Fiber from \"effect/Fiber\";\nimport * as React from \"react\";\nimport { makeScopedRun } from \"../internal/scoped-run.js\";\nimport { useEffectEvmRuntime } from \"../provider.js\";\n\nexport type EffectMemoOptions<A> = {\n readonly key?: string | undefined;\n readonly minIntervalMs?: number | undefined;\n readonly debounceMs?: number | undefined;\n readonly transition?: boolean | undefined;\n readonly initial?: A | undefined;\n};\n\nexport const useEffectMemoFactory = <A, E, R>(\n effectFactory: (signal: AbortSignal) => Effect.Effect<A, E, R>,\n deps: React.DependencyList,\n options: EffectMemoOptions<A> = {}\n): A | undefined => {\n const runtime = useEffectEvmRuntime();\n const [value, setValue] = React.useState<A | undefined>(options.initial);\n const inFlightRef = React.useRef<{\n key: string | null;\n fiber: Fiber.RuntimeFiber<Exit.Exit<A, E>, never> | null;\n close: (() => void) | null;\n abort: AbortController | null;\n }>({ abort: null, close: null, fiber: null, key: null });\n const lastRunRef = React.useRef<{ key: string | null; at: number }>({ at: 0, key: null });\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n React.useEffect(() => {\n let active = true;\n\n const key = options.key ?? null;\n const minIntervalMs = options.minIntervalMs ?? 0;\n const debounceMs = options.debounceMs ?? 0;\n const useTransition = options.transition !== false;\n\n const now = Date.now();\n if (key && inFlightRef.current.key === key && inFlightRef.current.fiber) {\n return () => {\n active = false;\n };\n }\n if (\n key &&\n minIntervalMs > 0 &&\n lastRunRef.current.key === key &&\n now - lastRunRef.current.at < minIntervalMs\n ) {\n return () => {\n active = false;\n };\n }\n\n const run = () => {\n const controller = new AbortController();\n\n (async () => {\n const scoped = await makeScopedRun(runtime);\n const effect = effectFactory(controller.signal);\n\n const fiber = scoped.fork(\n Effect.exit(\n (effect as unknown as Effect.Effect<A, E, unknown>).pipe(\n Effect.tap((result) =>\n Effect.sync(() => {\n if (!active) {\n return;\n }\n if (useTransition) {\n React.startTransition(() => setValue(result));\n } else {\n setValue(result);\n }\n })\n ),\n Effect.tapErrorCause((cause) =>\n Effect.sync(() => {\n if (!Cause.isEmpty(cause)) {\n console.error(\"[useEffectMemoFactory] Fiber error:\", Cause.pretty(cause));\n }\n })\n )\n )\n )\n );\n\n inFlightRef.current = { abort: controller, close: scoped.close, fiber, key };\n lastRunRef.current = { at: Date.now(), key };\n\n await runtime.runPromise(Fiber.join(fiber));\n\n if (inFlightRef.current.fiber === fiber) {\n inFlightRef.current = { abort: null, close: null, fiber: null, key: null };\n }\n\n scoped.close();\n })().catch((cause) => {\n if (active && !controller.signal.aborted) {\n console.error(\"[useEffectMemoFactory] Fiber error:\", cause);\n }\n });\n };\n\n if (debounceMs > 0) {\n timeoutRef.current = setTimeout(run, debounceMs);\n } else {\n run();\n }\n\n return () => {\n active = false;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n if (inFlightRef.current.abort) {\n inFlightRef.current.abort.abort();\n }\n\n if (inFlightRef.current.close) {\n inFlightRef.current.close();\n }\n\n if (inFlightRef.current.key === key) {\n inFlightRef.current = { abort: null, close: null, fiber: null, key: null };\n }\n };\n }, [runtime, ...deps]);\n\n return value;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-effect.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/primitives/use-effect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-effect.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/primitives/use-effect.ts"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as Effect from \"effect/Effect\";\nimport * as Fiber from \"effect/Fiber\";\nimport * as React from \"react\";\nimport type { EffectError } from \"../internal/error.js\";\nimport { fromCause, fromUnknown } from \"../internal/error.js\";\nimport { isDev } from \"../internal/is-dev.js\";\nimport { makeScopedRun } from \"../internal/scoped-run.js\";\nimport { useEffectEvmRuntime } from \"../provider.js\";\n\nexport type UseEffectResult<A, E> =\n | {\n readonly status: \"idle\" | \"loading\";\n readonly data?: A | undefined;\n readonly error?: never;\n }\n | { readonly status: \"success\"; readonly data: A; readonly error?: never }\n | {\n readonly status: \"error\";\n readonly data?: never;\n readonly error: EffectError<E>;\n };\n\nexport const useEffectOnce = <A, E, R>(\n makeEffect: () => Effect.Effect<A, E, R>,\n options: { readonly initial?: A | undefined } = {}\n): UseEffectResult<A, E> => {\n const runtime = useEffectEvmRuntime();\n const devRef = React.useRef<{\n makeEffect: () => Effect.Effect<A, E, R>;\n initial: A | undefined;\n warned: boolean;\n } | null>(null);\n if (isDev) {\n if (devRef.current === null) {\n devRef.current = { initial: options.initial, makeEffect, warned: false };\n } else if (\n !devRef.current.warned &&\n (devRef.current.makeEffect !== makeEffect || devRef.current.initial !== options.initial)\n ) {\n devRef.current.warned = true;\n console.warn(\n [\n \"[effect-evm] useEffectOnce ignores changes after the first render.\",\n \"Memoize inputs or switch to useEffectMemo for reactive effects.\",\n ].join(\" \")\n );\n }\n }\n const [state, setState] = React.useState<UseEffectResult<A, E>>(() => ({\n data: options.initial,\n status: \"idle\",\n }));\n\n React.useEffect(() => {\n let cancelled = false;\n let scopedClose: (() => void) | null = null;\n\n setState({ data: options.initial, status: \"loading\" });\n\n (async () => {\n const scoped = await makeScopedRun(runtime);\n scopedClose = scoped.close;\n\n const fiber = scoped.fork(\n Effect.exit(makeEffect() as unknown as Effect.Effect<A, E, unknown>)\n );\n const exit = await runtime.runPromise(Fiber.join(fiber));\n\n if (cancelled) {\n return;\n }\n\n if (exit._tag === \"Success\") {\n setState({ data: exit.value, status: \"success\" });\n return;\n }\n\n setState({ error: fromCause(exit.cause), status: \"error\" });\n })().catch((cause) => {\n if (!cancelled) {\n setState({ error: fromUnknown(cause), status: \"error\" });\n }\n });\n\n return () => {\n cancelled = true;\n scopedClose?.();\n };\n }, [runtime]);\n\n return state;\n};\n\nexport const useEffectMemo = <A, E, R>(\n makeEffect: () => Effect.Effect<A, E, R>,\n deps: React.DependencyList,\n options: { readonly initial?: A | undefined } = {}\n): UseEffectResult<A, E> => {\n const runtime = useEffectEvmRuntime();\n const [state, setState] = React.useState<UseEffectResult<A, E>>(() => ({\n data: options.initial,\n status: \"idle\",\n }));\n\n React.useEffect(() => {\n let cancelled = false;\n let scopedClose: (() => void) | null = null;\n\n setState({ data: options.initial, status: \"loading\" });\n\n (async () => {\n const scoped = await makeScopedRun(runtime);\n scopedClose = scoped.close;\n\n const fiber = scoped.fork(\n Effect.exit(makeEffect() as unknown as Effect.Effect<A, E, unknown>)\n );\n const exit = await runtime.runPromise(Fiber.join(fiber));\n\n if (cancelled) {\n return;\n }\n\n if (exit._tag === \"Success\") {\n setState({ data: exit.value, status: \"success\" });\n return;\n }\n\n setState({ error: fromCause(exit.cause), status: \"error\" });\n })().catch((cause) => {\n if (!cancelled) {\n setState({ error: fromUnknown(cause), status: \"error\" });\n }\n });\n\n return () => {\n cancelled = true;\n scopedClose?.();\n };\n }, [runtime, ...deps]);\n\n return state;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-fork-effect.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/primitives/use-fork-effect.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,UAA+C,EAC/C,IAA0B,EACpB,EAAE;IACR,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,GAAwB,IAAI,CAAC;QAE5C,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAoD,CAAC,CAAC;QAC9E,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjB,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC"}
1
+ {"version":3,"file":"use-fork-effect.js","sourceRoot":"","sources":["../../../../src/integrations/react-hooks/primitives/use-fork-effect.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,UAA+C,EAC/C,IAA0B,EACpB,EAAE;IACR,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,GAAwB,IAAI,CAAC;QAE5C,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAoD,CAAC,CAAC;QAC9E,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjB,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC","sourcesContent":["\"use client\";\n\nimport type * as Effect from \"effect/Effect\";\nimport { constVoid as noop } from \"effect/Function\";\nimport * as React from \"react\";\nimport { makeScopedRun } from \"../internal/scoped-run.js\";\nimport { useEffectEvmRuntime } from \"../provider.js\";\n\nexport const useForkEffect = <R>(\n makeEffect: () => Effect.Effect<void, never, R>,\n deps: React.DependencyList\n): void => {\n const runtime = useEffectEvmRuntime();\n\n React.useEffect(() => {\n let scopedClose: (() => void) | null = null;\n\n (async () => {\n const scoped = await makeScopedRun(runtime);\n scopedClose = scoped.close;\n\n scoped.fork(makeEffect() as unknown as Effect.Effect<void, never, unknown>);\n })().catch(noop);\n\n return () => {\n scopedClose?.();\n };\n }, [runtime, ...deps]);\n};\n"]}