effect 4.0.0-beta.5 → 4.0.0-beta.7

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 (482) hide show
  1. package/dist/Cache.d.ts +2 -2
  2. package/dist/Cache.d.ts.map +1 -1
  3. package/dist/Cache.js +1 -1
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/Cause.d.ts +1 -1
  6. package/dist/Cause.d.ts.map +1 -1
  7. package/dist/Channel.d.ts.map +1 -1
  8. package/dist/Channel.js +6 -4
  9. package/dist/Channel.js.map +1 -1
  10. package/dist/Config.d.ts +3 -3
  11. package/dist/Config.js +3 -3
  12. package/dist/Config.js.map +1 -1
  13. package/dist/Data.d.ts +3 -2
  14. package/dist/Data.d.ts.map +1 -1
  15. package/dist/Data.js +9 -8
  16. package/dist/Data.js.map +1 -1
  17. package/dist/DateTime.d.ts +23 -161
  18. package/dist/DateTime.d.ts.map +1 -1
  19. package/dist/DateTime.js +6 -51
  20. package/dist/DateTime.js.map +1 -1
  21. package/dist/Duration.d.ts +12 -12
  22. package/dist/Duration.d.ts.map +1 -1
  23. package/dist/Duration.js +12 -12
  24. package/dist/Duration.js.map +1 -1
  25. package/dist/Effect.d.ts +13 -239
  26. package/dist/Effect.d.ts.map +1 -1
  27. package/dist/Effect.js +1 -119
  28. package/dist/Effect.js.map +1 -1
  29. package/dist/Encoding.d.ts +194 -0
  30. package/dist/Encoding.d.ts.map +1 -0
  31. package/dist/Encoding.js +352 -0
  32. package/dist/Encoding.js.map +1 -0
  33. package/dist/Equal.js.map +1 -1
  34. package/dist/FileSystem.js +2 -2
  35. package/dist/FileSystem.js.map +1 -1
  36. package/dist/Formatter.d.ts +131 -47
  37. package/dist/Formatter.d.ts.map +1 -1
  38. package/dist/Formatter.js +229 -51
  39. package/dist/Formatter.js.map +1 -1
  40. package/dist/Graph.d.ts.map +1 -1
  41. package/dist/Graph.js +2 -2
  42. package/dist/Graph.js.map +1 -1
  43. package/dist/JsonSchema.d.ts +299 -10
  44. package/dist/JsonSchema.d.ts.map +1 -1
  45. package/dist/JsonSchema.js +323 -4
  46. package/dist/JsonSchema.js.map +1 -1
  47. package/dist/Latch.d.ts +109 -0
  48. package/dist/Latch.d.ts.map +1 -0
  49. package/dist/Latch.js +72 -0
  50. package/dist/Latch.js.map +1 -0
  51. package/dist/LayerMap.d.ts +4 -4
  52. package/dist/LayerMap.d.ts.map +1 -1
  53. package/dist/LogLevel.d.ts +27 -0
  54. package/dist/LogLevel.d.ts.map +1 -1
  55. package/dist/LogLevel.js +28 -100
  56. package/dist/LogLevel.js.map +1 -1
  57. package/dist/Logger.d.ts +4 -4
  58. package/dist/Logger.d.ts.map +1 -1
  59. package/dist/Metric.d.ts +2 -2
  60. package/dist/Metric.d.ts.map +1 -1
  61. package/dist/Metric.js +1 -1
  62. package/dist/Metric.js.map +1 -1
  63. package/dist/Pipeable.d.ts +17 -0
  64. package/dist/Pipeable.d.ts.map +1 -1
  65. package/dist/Pipeable.js +19 -1
  66. package/dist/Pipeable.js.map +1 -1
  67. package/dist/Pool.d.ts +6 -4
  68. package/dist/Pool.d.ts.map +1 -1
  69. package/dist/Pool.js +7 -5
  70. package/dist/Pool.js.map +1 -1
  71. package/dist/PubSub.d.ts +3 -2
  72. package/dist/PubSub.d.ts.map +1 -1
  73. package/dist/PubSub.js +3 -2
  74. package/dist/PubSub.js.map +1 -1
  75. package/dist/Random.d.ts +1 -1
  76. package/dist/Random.d.ts.map +1 -1
  77. package/dist/Random.js +3 -12
  78. package/dist/Random.js.map +1 -1
  79. package/dist/RcMap.d.ts +2 -2
  80. package/dist/RcMap.d.ts.map +1 -1
  81. package/dist/RcMap.js +1 -1
  82. package/dist/RcMap.js.map +1 -1
  83. package/dist/RcRef.d.ts +1 -1
  84. package/dist/RcRef.d.ts.map +1 -1
  85. package/dist/Request.d.ts +1 -1
  86. package/dist/Request.d.ts.map +1 -1
  87. package/dist/Request.js +2 -1
  88. package/dist/Request.js.map +1 -1
  89. package/dist/RequestResolver.d.ts +6 -26
  90. package/dist/RequestResolver.d.ts.map +1 -1
  91. package/dist/RequestResolver.js +0 -20
  92. package/dist/RequestResolver.js.map +1 -1
  93. package/dist/Schedule.d.ts +22 -13
  94. package/dist/Schedule.d.ts.map +1 -1
  95. package/dist/Schedule.js +53 -25
  96. package/dist/Schedule.js.map +1 -1
  97. package/dist/Schema.d.ts +196 -46
  98. package/dist/Schema.d.ts.map +1 -1
  99. package/dist/Schema.js +385 -71
  100. package/dist/Schema.js.map +1 -1
  101. package/dist/SchemaGetter.d.ts +2 -2
  102. package/dist/SchemaGetter.d.ts.map +1 -1
  103. package/dist/SchemaGetter.js +12 -14
  104. package/dist/SchemaGetter.js.map +1 -1
  105. package/dist/SchemaRepresentation.d.ts +44 -43
  106. package/dist/SchemaRepresentation.d.ts.map +1 -1
  107. package/dist/SchemaRepresentation.js +5 -2
  108. package/dist/SchemaRepresentation.js.map +1 -1
  109. package/dist/SchemaTransformation.d.ts +37 -0
  110. package/dist/SchemaTransformation.d.ts.map +1 -1
  111. package/dist/SchemaTransformation.js +80 -0
  112. package/dist/SchemaTransformation.js.map +1 -1
  113. package/dist/ScopedCache.d.ts +2 -2
  114. package/dist/ScopedCache.d.ts.map +1 -1
  115. package/dist/ScopedCache.js +1 -1
  116. package/dist/ScopedCache.js.map +1 -1
  117. package/dist/Semaphore.d.ts +211 -0
  118. package/dist/Semaphore.d.ts.map +1 -0
  119. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  120. package/dist/Semaphore.js.map +1 -0
  121. package/dist/Stream.d.ts +19 -19
  122. package/dist/Stream.d.ts.map +1 -1
  123. package/dist/Stream.js +12 -11
  124. package/dist/Stream.js.map +1 -1
  125. package/dist/Struct.d.ts +16 -0
  126. package/dist/Struct.d.ts.map +1 -1
  127. package/dist/Struct.js +22 -0
  128. package/dist/Struct.js.map +1 -1
  129. package/dist/SubscriptionRef.d.ts +2 -1
  130. package/dist/SubscriptionRef.d.ts.map +1 -1
  131. package/dist/SubscriptionRef.js +2 -1
  132. package/dist/SubscriptionRef.js.map +1 -1
  133. package/dist/SynchronizedRef.d.ts +2 -1
  134. package/dist/SynchronizedRef.d.ts.map +1 -1
  135. package/dist/SynchronizedRef.js +2 -1
  136. package/dist/SynchronizedRef.js.map +1 -1
  137. package/dist/Types.d.ts +8 -0
  138. package/dist/Types.d.ts.map +1 -1
  139. package/dist/index.d.ts +148 -5
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +148 -5
  142. package/dist/index.js.map +1 -1
  143. package/dist/internal/core.js +11 -3
  144. package/dist/internal/core.js.map +1 -1
  145. package/dist/internal/dateTime.js +3 -11
  146. package/dist/internal/dateTime.js.map +1 -1
  147. package/dist/internal/effect.js +2 -2
  148. package/dist/internal/effect.js.map +1 -1
  149. package/dist/internal/random.d.ts +2 -0
  150. package/dist/internal/random.d.ts.map +1 -0
  151. package/dist/internal/random.js +13 -0
  152. package/dist/internal/random.js.map +1 -0
  153. package/dist/internal/rcRef.js +3 -2
  154. package/dist/internal/rcRef.js.map +1 -1
  155. package/dist/testing/TestClock.d.ts +7 -6
  156. package/dist/testing/TestClock.d.ts.map +1 -1
  157. package/dist/testing/TestClock.js +6 -4
  158. package/dist/testing/TestClock.js.map +1 -1
  159. package/dist/testing/TestSchema.d.ts +6 -6
  160. package/dist/testing/TestSchema.d.ts.map +1 -1
  161. package/dist/unstable/ai/AiError.d.ts +48 -48
  162. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  163. package/dist/unstable/ai/Chat.d.ts +3 -3
  164. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  165. package/dist/unstable/ai/Chat.js +4 -3
  166. package/dist/unstable/ai/Chat.js.map +1 -1
  167. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  168. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  169. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  170. package/dist/unstable/ai/McpServer.d.ts +1 -1
  171. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  172. package/dist/unstable/ai/McpServer.js.map +1 -1
  173. package/dist/unstable/ai/Prompt.d.ts +20 -20
  174. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  175. package/dist/unstable/ai/Response.d.ts +26 -26
  176. package/dist/unstable/ai/Response.d.ts.map +1 -1
  177. package/dist/unstable/ai/Response.js +1 -1
  178. package/dist/unstable/ai/Response.js.map +1 -1
  179. package/dist/unstable/cli/CliError.d.ts +5 -5
  180. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  181. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  182. package/dist/unstable/cluster/ClusterCron.js +1 -1
  183. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  184. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  185. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  186. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  187. package/dist/unstable/cluster/Entity.d.ts +5 -4
  188. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  189. package/dist/unstable/cluster/Entity.js.map +1 -1
  190. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  191. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  192. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  193. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  194. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  195. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  196. package/dist/unstable/cluster/Message.d.ts +5 -5
  197. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  198. package/dist/unstable/cluster/MessageStorage.js +2 -1
  199. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  200. package/dist/unstable/cluster/Reply.d.ts +3 -3
  201. package/dist/unstable/cluster/Runner.d.ts +1 -1
  202. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  203. package/dist/unstable/cluster/Runners.js +4 -3
  204. package/dist/unstable/cluster/Runners.js.map +1 -1
  205. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  206. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  207. package/dist/unstable/cluster/Sharding.js +8 -6
  208. package/dist/unstable/cluster/Sharding.js.map +1 -1
  209. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  210. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  211. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  212. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  213. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  214. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  215. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  216. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  217. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  218. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  219. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  220. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  221. package/dist/unstable/encoding/Sse.d.ts +3 -3
  222. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  223. package/dist/unstable/encoding/Sse.js.map +1 -1
  224. package/dist/unstable/eventlog/EventJournal.d.ts +1 -1
  225. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  226. package/dist/unstable/eventlog/EventLog.js +2 -1
  227. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  228. package/dist/unstable/eventlog/EventLogRemote.d.ts +5 -5
  229. package/dist/unstable/http/Cookies.d.ts +2 -2
  230. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  231. package/dist/unstable/http/Cookies.js +2 -2
  232. package/dist/unstable/http/Cookies.js.map +1 -1
  233. package/dist/unstable/http/HttpClient.d.ts +4 -4
  234. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  235. package/dist/unstable/http/HttpClientRequest.d.ts +11 -11
  236. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  237. package/dist/unstable/http/HttpClientRequest.js +8 -1
  238. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  239. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  240. package/dist/unstable/http/HttpEffect.js +18 -26
  241. package/dist/unstable/http/HttpEffect.js.map +1 -1
  242. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  243. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  244. package/dist/unstable/http/HttpMethod.js +3 -3
  245. package/dist/unstable/http/HttpMethod.js.map +1 -1
  246. package/dist/unstable/http/Multipart.d.ts +2 -2
  247. package/dist/unstable/http/UrlParams.d.ts +1 -1
  248. package/dist/unstable/httpapi/HttpApiBuilder.js +2 -2
  249. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  250. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  251. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  252. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  253. package/dist/unstable/observability/Otlp.d.ts +12 -12
  254. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  255. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  256. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  257. package/dist/unstable/observability/OtlpExporter.js +1 -1
  258. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  259. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  260. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  261. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  262. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  263. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  264. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  265. package/dist/unstable/persistence/KeyValueStore.js +4 -4
  266. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  267. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  268. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  269. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  270. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  271. package/dist/unstable/persistence/PersistedCache.js +2 -1
  272. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  273. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  274. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  275. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  276. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  277. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  278. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  279. package/dist/unstable/persistence/Persistence.js +2 -2
  280. package/dist/unstable/persistence/Persistence.js.map +1 -1
  281. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  282. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  283. package/dist/unstable/persistence/RateLimiter.js +1 -1
  284. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  285. package/dist/unstable/process/ChildProcess.d.ts +1 -1
  286. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  287. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  288. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  289. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  290. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  291. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  292. package/dist/unstable/reactivity/Atom.js +3 -3
  293. package/dist/unstable/reactivity/Atom.js.map +1 -1
  294. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  295. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  296. package/dist/unstable/reactivity/AtomHttpApi.js +1 -1
  297. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  298. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  299. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  300. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  301. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  302. package/dist/unstable/reactivity/index.d.ts +2 -2
  303. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  304. package/dist/unstable/reactivity/index.js +2 -2
  305. package/dist/unstable/reactivity/index.js.map +1 -1
  306. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  307. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  308. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  309. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  310. package/dist/unstable/rpc/RpcClient.js +6 -13
  311. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  312. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  313. package/dist/unstable/rpc/RpcServer.js +5 -3
  314. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  315. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  316. package/dist/unstable/rpc/Utils.js +2 -1
  317. package/dist/unstable/rpc/Utils.js.map +1 -1
  318. package/dist/unstable/socket/Socket.d.ts +4 -4
  319. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  320. package/dist/unstable/socket/Socket.js +3 -2
  321. package/dist/unstable/socket/Socket.js.map +1 -1
  322. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  323. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  324. package/dist/unstable/sql/SqlModel.js +3 -3
  325. package/dist/unstable/sql/SqlModel.js.map +1 -1
  326. package/dist/unstable/sql/SqlSchema.d.ts +16 -5
  327. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  328. package/dist/unstable/sql/SqlSchema.js +17 -7
  329. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  330. package/dist/unstable/sql/Statement.js +0 -1
  331. package/dist/unstable/sql/Statement.js.map +1 -1
  332. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  333. package/dist/unstable/workers/Worker.js +2 -1
  334. package/dist/unstable/workers/Worker.js.map +1 -1
  335. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  336. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  337. package/dist/unstable/workflow/DurableClock.js +3 -3
  338. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  339. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  340. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  341. package/dist/unstable/workflow/Workflow.d.ts +1 -1
  342. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
  343. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  344. package/dist/unstable/workflow/WorkflowEngine.js +2 -1
  345. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  346. package/package.json +1 -2
  347. package/src/Cache.ts +3 -3
  348. package/src/Cause.ts +1 -1
  349. package/src/Channel.ts +6 -4
  350. package/src/Config.ts +3 -3
  351. package/src/Data.ts +10 -9
  352. package/src/DateTime.ts +24 -164
  353. package/src/Duration.ts +15 -15
  354. package/src/Effect.ts +15 -261
  355. package/src/Encoding.ts +879 -0
  356. package/src/Equal.ts +2 -2
  357. package/src/FileSystem.ts +4 -4
  358. package/src/Formatter.ts +253 -51
  359. package/src/Graph.ts +8 -5
  360. package/src/JsonSchema.ts +383 -10
  361. package/src/Latch.ts +112 -0
  362. package/src/LayerMap.ts +5 -5
  363. package/src/LogLevel.ts +31 -0
  364. package/src/Logger.ts +5 -5
  365. package/src/Metric.ts +4 -4
  366. package/src/Pipeable.ts +32 -1
  367. package/src/Pool.ts +13 -11
  368. package/src/PubSub.ts +10 -9
  369. package/src/Random.ts +5 -14
  370. package/src/RcMap.ts +5 -5
  371. package/src/RcRef.ts +1 -1
  372. package/src/Request.ts +3 -2
  373. package/src/RequestResolver.ts +9 -29
  374. package/src/Schedule.ts +261 -140
  375. package/src/Schema.ts +571 -109
  376. package/src/SchemaGetter.ts +12 -14
  377. package/src/SchemaRepresentation.ts +5 -2
  378. package/src/SchemaTransformation.ts +104 -0
  379. package/src/ScopedCache.ts +3 -3
  380. package/src/Semaphore.ts +356 -0
  381. package/src/Stream.ts +43 -42
  382. package/src/Struct.ts +26 -0
  383. package/src/SubscriptionRef.ts +3 -2
  384. package/src/SynchronizedRef.ts +3 -2
  385. package/src/Types.ts +9 -0
  386. package/src/index.ts +151 -6
  387. package/src/internal/core.ts +10 -2
  388. package/src/internal/dateTime.ts +9 -30
  389. package/src/internal/effect.ts +24 -23
  390. package/src/internal/random.ts +20 -0
  391. package/src/internal/rcRef.ts +4 -3
  392. package/src/testing/TestClock.ts +13 -11
  393. package/src/testing/TestSchema.ts +8 -8
  394. package/src/unstable/ai/AiError.ts +2 -2
  395. package/src/unstable/ai/Chat.ts +12 -11
  396. package/src/unstable/ai/LanguageModel.ts +3 -3
  397. package/src/unstable/ai/McpServer.ts +2 -2
  398. package/src/unstable/ai/Prompt.ts +37 -37
  399. package/src/unstable/ai/Response.ts +25 -25
  400. package/src/unstable/cluster/ClusterCron.ts +2 -2
  401. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  402. package/src/unstable/cluster/Entity.ts +7 -6
  403. package/src/unstable/cluster/EntityResource.ts +4 -4
  404. package/src/unstable/cluster/Envelope.ts +1 -1
  405. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  406. package/src/unstable/cluster/MessageStorage.ts +3 -5
  407. package/src/unstable/cluster/Runners.ts +6 -5
  408. package/src/unstable/cluster/Sharding.ts +11 -9
  409. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  410. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  411. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  412. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  413. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  414. package/src/unstable/encoding/Sse.ts +2 -4
  415. package/src/unstable/eventlog/EventLog.ts +2 -1
  416. package/src/unstable/http/Cookies.ts +3 -3
  417. package/src/unstable/http/HttpClient.ts +4 -4
  418. package/src/unstable/http/HttpClientRequest.ts +15 -11
  419. package/src/unstable/http/HttpEffect.ts +17 -25
  420. package/src/unstable/http/HttpMethod.ts +16 -4
  421. package/src/unstable/http/Multipart.ts +2 -2
  422. package/src/unstable/http/UrlParams.ts +1 -1
  423. package/src/unstable/httpapi/HttpApiBuilder.ts +2 -2
  424. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  425. package/src/unstable/observability/Otlp.ts +12 -12
  426. package/src/unstable/observability/OtlpExporter.ts +3 -3
  427. package/src/unstable/observability/OtlpLogger.ts +4 -4
  428. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  429. package/src/unstable/observability/OtlpTracer.ts +4 -4
  430. package/src/unstable/persistence/KeyValueStore.ts +4 -4
  431. package/src/unstable/persistence/Persistable.ts +2 -2
  432. package/src/unstable/persistence/PersistedCache.ts +20 -9
  433. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  434. package/src/unstable/persistence/Persistence.ts +3 -3
  435. package/src/unstable/persistence/RateLimiter.ts +4 -4
  436. package/src/unstable/process/ChildProcess.ts +1 -1
  437. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  438. package/src/unstable/reactivity/Atom.ts +13 -13
  439. package/src/unstable/reactivity/AtomHttpApi.ts +3 -3
  440. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  441. package/src/unstable/reactivity/index.ts +2 -2
  442. package/src/unstable/rpc/Rpc.ts +3 -3
  443. package/src/unstable/rpc/RpcClient.ts +12 -54
  444. package/src/unstable/rpc/RpcServer.ts +6 -4
  445. package/src/unstable/rpc/Utils.ts +2 -1
  446. package/src/unstable/socket/Socket.ts +7 -6
  447. package/src/unstable/sql/SqlModel.ts +5 -5
  448. package/src/unstable/sql/SqlSchema.ts +41 -25
  449. package/src/unstable/sql/Statement.ts +0 -1
  450. package/src/unstable/workers/Worker.ts +2 -1
  451. package/src/unstable/workflow/DurableClock.ts +8 -8
  452. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  453. package/src/unstable/workflow/WorkflowEngine.ts +3 -2
  454. package/dist/PartitionedSemaphore.d.ts +0 -52
  455. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  456. package/dist/PartitionedSemaphore.js.map +0 -1
  457. package/dist/encoding/Base64.d.ts +0 -67
  458. package/dist/encoding/Base64.d.ts.map +0 -1
  459. package/dist/encoding/Base64.js +0 -146
  460. package/dist/encoding/Base64.js.map +0 -1
  461. package/dist/encoding/Base64Url.d.ts +0 -60
  462. package/dist/encoding/Base64Url.d.ts.map +0 -1
  463. package/dist/encoding/Base64Url.js +0 -89
  464. package/dist/encoding/Base64Url.js.map +0 -1
  465. package/dist/encoding/EncodingError.d.ts +0 -31
  466. package/dist/encoding/EncodingError.d.ts.map +0 -1
  467. package/dist/encoding/EncodingError.js +0 -22
  468. package/dist/encoding/EncodingError.js.map +0 -1
  469. package/dist/encoding/Hex.d.ts +0 -61
  470. package/dist/encoding/Hex.d.ts.map +0 -1
  471. package/dist/encoding/Hex.js +0 -115
  472. package/dist/encoding/Hex.js.map +0 -1
  473. package/dist/encoding/index.d.ts +0 -26
  474. package/dist/encoding/index.d.ts.map +0 -1
  475. package/dist/encoding/index.js +0 -27
  476. package/dist/encoding/index.js.map +0 -1
  477. package/src/PartitionedSemaphore.ts +0 -182
  478. package/src/encoding/Base64.ts +0 -366
  479. package/src/encoding/Base64Url.ts +0 -104
  480. package/src/encoding/EncodingError.ts +0 -35
  481. package/src/encoding/Hex.ts +0 -390
  482. package/src/encoding/index.ts +0 -31
package/src/Equal.ts CHANGED
@@ -269,7 +269,7 @@ function compareRecords(
269
269
 
270
270
  /** @internal */
271
271
  export function makeCompareMap<K, V>(keyEquivalence: Equivalence<K>, valueEquivalence: Equivalence<V>) {
272
- return function compareMaps(self: ReadonlyMap<K, V>, that: ReadonlyMap<K, V>): boolean {
272
+ return function compareMaps(self: Iterable<[K, V]>, that: Iterable<[K, V]>): boolean {
273
273
  for (const [selfKey, selfValue] of self) {
274
274
  let found = false
275
275
  for (const [thatKey, thatValue] of that) {
@@ -291,7 +291,7 @@ const compareMaps = makeCompareMap(compareBoth, compareBoth)
291
291
 
292
292
  /** @internal */
293
293
  export function makeCompareSet<A>(equivalence: Equivalence<A>) {
294
- return function compareSets(self: ReadonlySet<A>, that: ReadonlySet<A>): boolean {
294
+ return function compareSets(self: Iterable<A>, that: Iterable<A>): boolean {
295
295
  for (const selfValue of self) {
296
296
  let found = false
297
297
  for (const thatValue of that) {
package/src/FileSystem.ts CHANGED
@@ -756,16 +756,16 @@ export const make = (
756
756
  const bytesToRead = options?.bytesToRead !== undefined ? Size(options.bytesToRead) : undefined
757
757
  let totalBytesRead = BigInt(0)
758
758
  const chunkSize = Size(options?.chunkSize ?? 64 * 1024)
759
+ const readChunk = file.readAlloc(chunkSize)
759
760
  return Stream.fromPull(Effect.succeed(
760
761
  Effect.flatMap(
761
762
  Effect.suspend((): Pull.Pull<Uint8Array | undefined, PlatformError> => {
762
763
  if (bytesToRead !== undefined && bytesToRead <= totalBytesRead) {
763
764
  return Cause.done()
764
765
  }
765
- const toRead = bytesToRead !== undefined && (bytesToRead - totalBytesRead) < chunkSize
766
- ? bytesToRead - totalBytesRead
767
- : chunkSize
768
- return file.readAlloc(toRead)
766
+ return bytesToRead !== undefined && (bytesToRead - totalBytesRead) < chunkSize
767
+ ? file.readAlloc(bytesToRead - totalBytesRead)
768
+ : readChunk
769
769
  }),
770
770
  (buf) => {
771
771
  if (!buf) return Cause.done()
package/src/Formatter.ts CHANGED
@@ -1,10 +1,85 @@
1
1
  /**
2
+ * Utilities for converting arbitrary JavaScript values into human-readable
3
+ * strings, with support for circular references, redaction, and common JS
4
+ * types that `JSON.stringify` handles poorly.
5
+ *
6
+ * Mental model:
7
+ * - A `Formatter<Value, Format>` is a callable `(value: Value) => Format`.
8
+ * - {@link format} is the general-purpose pretty-printer: it handles
9
+ * primitives, arrays, objects, `BigInt`, `Symbol`, `Date`, `RegExp`,
10
+ * `Set`, `Map`, class instances, and circular references.
11
+ * - {@link formatJson} is a safe `JSON.stringify` wrapper that silently
12
+ * drops circular references and applies redaction.
13
+ * - Both functions accept a `space` option for indentation control.
14
+ *
15
+ * Common tasks:
16
+ * - Pretty-print any value for debugging / logging -> {@link format}
17
+ * - Serialize to JSON safely (no circular throws) -> {@link formatJson}
18
+ * - Format a single object property key -> {@link formatPropertyKey}
19
+ * - Format a property path like `["a"]["b"]` -> {@link formatPath}
20
+ * - Format a `Date` to ISO string safely -> {@link formatDate}
21
+ *
22
+ * Gotchas:
23
+ * - {@link format} output is **not** valid JSON; use {@link formatJson} when
24
+ * you need parseable JSON.
25
+ * - {@link format} calls `toString()` on objects by default; pass
26
+ * `ignoreToString: true` to disable.
27
+ * - {@link formatJson} silently omits circular references (the key is
28
+ * dropped from the output).
29
+ * - Values implementing the `Redactable` protocol are automatically
30
+ * redacted by both {@link format} and {@link formatJson}.
31
+ *
32
+ * **Example** (Pretty-print a value)
33
+ *
34
+ * ```ts
35
+ * import { Formatter } from "effect"
36
+ *
37
+ * const obj = { name: "Alice", scores: [100, 97] }
38
+ * console.log(Formatter.format(obj))
39
+ * // {"name":"Alice","scores":[100,97]}
40
+ *
41
+ * console.log(Formatter.format(obj, { space: 2 }))
42
+ * // {
43
+ * // "name": "Alice",
44
+ * // "scores": [
45
+ * // 100,
46
+ * // 97
47
+ * // ]
48
+ * // }
49
+ * ```
50
+ *
51
+ * See also: {@link Formatter}, {@link format}, {@link formatJson}
52
+ *
2
53
  * @since 4.0.0
3
54
  */
4
55
  import * as Predicate from "./Predicate.ts"
5
56
  import { getRedacted, redact, symbolRedactable } from "./Redactable.ts"
6
57
 
7
58
  /**
59
+ * A callable interface representing a function that converts a `Value` into a
60
+ * `Format` (defaults to `string`).
61
+ *
62
+ * When to use:
63
+ * - You want to type a formatting / rendering function generically.
64
+ * - You are building a pipeline that accepts pluggable formatters.
65
+ *
66
+ * Behavior:
67
+ * - Pure callable type; carries no runtime implementation.
68
+ * - Contravariant in `Value`, covariant in `Format`.
69
+ *
70
+ * **Example** (Define a custom formatter)
71
+ *
72
+ * ```ts
73
+ * import type { Formatter } from "effect"
74
+ *
75
+ * const upper: Formatter.Formatter<string> = (s) => s.toUpperCase()
76
+ *
77
+ * console.log(upper("hello"))
78
+ * // HELLO
79
+ * ```
80
+ *
81
+ * See also: {@link format}, {@link formatJson}
82
+ *
8
83
  * @category Model
9
84
  * @since 4.0.0
10
85
  */
@@ -15,31 +90,71 @@ export interface Formatter<in Value, out Format = string> {
15
90
  /**
16
91
  * Converts any JavaScript value into a human-readable string.
17
92
  *
18
- * For objects that don't have a `toString` method, it applies redaction to
19
- * protect sensitive information.
20
- *
21
- * Unlike `JSON.stringify`, this formatter:
22
- * - Handles circular references (printed as `"[Circular]"`).
23
- * - Supports additional types like `BigInt`, `Symbol`, `Set`, `Map`, `Date`, `RegExp`, and
24
- * objects with custom `toString` methods.
25
- * - Includes constructor names for class instances (e.g. `MyClass({"a":1})`).
26
- * - Does not guarantee valid JSON output — the result is intended for debugging and inspection.
27
- *
28
- * Formatting rules:
29
- * - Primitives are stringified naturally (`null`, `undefined`, `123`, `"abc"`, `true`).
30
- * - Strings are JSON-quoted.
31
- * - Arrays and objects with a single element/property are formatted inline.
32
- * - Larger arrays/objects are pretty-printed with optional indentation.
33
- * - Circular references are replaced with the literal `"[Circular]"`.
34
- *
35
- * **Options**:
36
- * - `space`: Indentation used when pretty-printing:
37
- * - If a number, that many spaces will be used.
38
- * - If a string, the string is used as the indentation unit (e.g. `"\t"`).
39
- * - If `0`, empty string, or `undefined`, output is compact (no indentation).
40
- * Defaults to `0`.
41
- * - `ignoreToString`: If `true`, the `toString` method is not called on the value.
42
- * Defaults to `false`.
93
+ * When to use:
94
+ * - Pretty-printing values for debugging, logging, or error messages.
95
+ * - You need to handle `BigInt`, `Symbol`, `Set`, `Map`, `Date`, `RegExp`,
96
+ * or class instances that `JSON.stringify` cannot represent.
97
+ * - You want circular references shown as `"[Circular]"` instead of
98
+ * throwing.
99
+ *
100
+ * Behavior:
101
+ * - Does not mutate input.
102
+ * - Output is **not** valid JSON; use {@link formatJson} when you need
103
+ * parseable JSON.
104
+ * - Primitives: stringified naturally (`null`, `undefined`, `123`, `true`).
105
+ * Strings are JSON-quoted.
106
+ * - Objects with a custom `toString` (not `Object.prototype.toString`):
107
+ * `toString()` is called unless `ignoreToString` is `true`.
108
+ * - Errors with a `cause`: formatted as `"<message> (cause: <cause>)"`.
109
+ * - Iterables (`Set`, `Map`, etc.): formatted as
110
+ * `ClassName([...elements])`.
111
+ * - Class instances: wrapped as `ClassName({...})`.
112
+ * - `Redactable` values are automatically redacted.
113
+ * - Arrays/objects with 0–1 entries are inline; larger ones are
114
+ * pretty-printed when `space` is set.
115
+ * - Circular references are replaced with `"[Circular]"`.
116
+ *
117
+ * Options:
118
+ * - `space` — indentation unit (number of spaces, or a string like
119
+ * `"\t"`). Defaults to `0` (compact).
120
+ * - `ignoreToString` — skip calling `toString()`. Defaults to `false`.
121
+ *
122
+ * **Example** (Compact output)
123
+ *
124
+ * ```ts
125
+ * import { Formatter } from "effect"
126
+ *
127
+ * console.log(Formatter.format({ a: 1, b: [2, 3] }))
128
+ * // {"a":1,"b":[2,3]}
129
+ * ```
130
+ *
131
+ * **Example** (Pretty-printed output)
132
+ *
133
+ * ```ts
134
+ * import { Formatter } from "effect"
135
+ *
136
+ * console.log(Formatter.format({ a: 1, b: [2, 3] }, { space: 2 }))
137
+ * // {
138
+ * // "a": 1,
139
+ * // "b": [
140
+ * // 2,
141
+ * // 3
142
+ * // ]
143
+ * // }
144
+ * ```
145
+ *
146
+ * **Example** (Circular reference handling)
147
+ *
148
+ * ```ts
149
+ * import { Formatter } from "effect"
150
+ *
151
+ * const obj: any = { name: "loop" }
152
+ * obj.self = obj
153
+ * console.log(Formatter.format(obj))
154
+ * // {"name":"loop","self":[Circular]}
155
+ * ```
156
+ *
157
+ * See also: {@link formatJson}, {@link Formatter}
43
158
  *
44
159
  * @since 4.0.0
45
160
  */
@@ -101,7 +216,7 @@ export function format(input: unknown, options?: {
101
216
 
102
217
  if (typeof v === "bigint") return String(v) + "n"
103
218
 
104
- if (Predicate.isObject(v)) {
219
+ if (typeof v === "object" || typeof v === "function") {
105
220
  if (seen.has(v)) return CIRCULAR
106
221
  seen.add(v)
107
222
 
@@ -131,7 +246,29 @@ export function format(input: unknown, options?: {
131
246
  const CIRCULAR = "[Circular]"
132
247
 
133
248
  /**
134
- * Fast path for formatting property keys.
249
+ * Formats a single property key for display.
250
+ *
251
+ * When to use:
252
+ * - You are building a custom formatter that needs to render object keys.
253
+ *
254
+ * Behavior:
255
+ * - String keys are JSON-quoted (e.g. `"foo"`).
256
+ * - Symbol and number keys are converted with `String()`.
257
+ * - Pure function; does not mutate input.
258
+ *
259
+ * **Example** (Format property keys)
260
+ *
261
+ * ```ts
262
+ * import { Formatter } from "effect"
263
+ *
264
+ * console.log(Formatter.formatPropertyKey("name"))
265
+ * // "name"
266
+ *
267
+ * console.log(Formatter.formatPropertyKey(Symbol.for("id")))
268
+ * // Symbol(id)
269
+ * ```
270
+ *
271
+ * See also: {@link formatPath}, {@link format}
135
272
  *
136
273
  * @internal
137
274
  */
@@ -140,7 +277,28 @@ export function formatPropertyKey(name: PropertyKey): string {
140
277
  }
141
278
 
142
279
  /**
143
- * Fast path for formatting property paths.
280
+ * Formats an array of property keys as a bracket-notation path string.
281
+ *
282
+ * When to use:
283
+ * - You need to display a path through a nested object (e.g. in error
284
+ * messages or schema validation output).
285
+ *
286
+ * Behavior:
287
+ * - Each key is wrapped in brackets and formatted via
288
+ * {@link formatPropertyKey}.
289
+ * - Returns an empty string for an empty path.
290
+ * - Pure function; does not mutate input.
291
+ *
292
+ * **Example** (Render a property path)
293
+ *
294
+ * ```ts
295
+ * import { Formatter } from "effect"
296
+ *
297
+ * console.log(Formatter.formatPath(["users", 0, "name"]))
298
+ * // ["users"][0]["name"]
299
+ * ```
300
+ *
301
+ * See also: {@link formatPropertyKey}, {@link format}
144
302
  *
145
303
  * @internal
146
304
  */
@@ -149,7 +307,31 @@ export function formatPath(path: ReadonlyArray<PropertyKey>): string {
149
307
  }
150
308
 
151
309
  /**
152
- * Fast path for formatting dates.
310
+ * Formats a `Date` as an ISO 8601 string, returning `"Invalid Date"` for
311
+ * invalid dates instead of throwing.
312
+ *
313
+ * When to use:
314
+ * - You want a safe `toISOString()` that never throws.
315
+ *
316
+ * Behavior:
317
+ * - Returns `date.toISOString()` on success.
318
+ * - Returns `"Invalid Date"` if `toISOString()` throws (e.g. for
319
+ * `new Date(NaN)`).
320
+ * - Pure function; does not mutate input.
321
+ *
322
+ * **Example** (Safe date formatting)
323
+ *
324
+ * ```ts
325
+ * import { Formatter } from "effect"
326
+ *
327
+ * console.log(Formatter.formatDate(new Date("2024-01-15T10:30:00Z")))
328
+ * // 2024-01-15T10:30:00.000Z
329
+ *
330
+ * console.log(Formatter.formatDate(new Date("invalid")))
331
+ * // Invalid Date
332
+ * ```
333
+ *
334
+ * See also: {@link format}
153
335
  *
154
336
  * @internal
155
337
  */
@@ -171,42 +353,62 @@ function safeToString(input: any): string {
171
353
  }
172
354
 
173
355
  /**
174
- * Safely stringifies objects that may contain circular references.
356
+ * Safely stringifies a value to JSON, silently dropping circular references.
357
+ *
358
+ * When to use:
359
+ * - You need valid JSON output (unlike {@link format}).
360
+ * - The input may contain circular references and you want them silently
361
+ * omitted rather than throwing a `TypeError`.
175
362
  *
176
- * This function performs JSON.stringify with circular reference detection and handling.
177
- * It also applies redaction to sensitive values and provides a safe fallback for
178
- * any objects that can't be serialized normally.
363
+ * Behavior:
364
+ * - Does not mutate input.
365
+ * - Uses `JSON.stringify` internally with a replacer that tracks seen
366
+ * objects.
367
+ * - Circular references are replaced with `undefined` (omitted from
368
+ * output).
369
+ * - `Redactable` values are automatically redacted before serialization.
370
+ * - Types not supported by JSON (`BigInt`, `Symbol`, `undefined`,
371
+ * functions) follow standard `JSON.stringify` behavior (omitted or
372
+ * `null` in arrays).
179
373
  *
180
- * **Options**:
181
- * - `space`: Indentation used when pretty-printing:
182
- * - If a number, that many spaces will be used.
183
- * - If a string, the string is used as the indentation unit (e.g. `"\t"`).
184
- * - If `0`, empty string, or `undefined`, output is compact (no indentation).
185
- * Defaults to `0`.
374
+ * Options:
375
+ * - `space` indentation unit (number of spaces, or a string like
376
+ * `"\t"`). Defaults to `0` (compact).
377
+ *
378
+ * **Example** (Compact JSON)
186
379
  *
187
- * @example
188
380
  * ```ts
189
- * import { formatJson } from "effect/Formatter"
381
+ * import { Formatter } from "effect"
190
382
  *
191
- * // Normal object
192
- * const simple = { name: "Alice", age: 30 }
193
- * console.log(formatJson(simple))
383
+ * console.log(Formatter.formatJson({ name: "Alice", age: 30 }))
194
384
  * // {"name":"Alice","age":30}
385
+ * ```
386
+ *
387
+ * **Example** (Circular reference handling)
388
+ *
389
+ * ```ts
390
+ * import { Formatter } from "effect"
195
391
  *
196
- * // Object with circular reference
197
- * const circular: any = { name: "test" }
198
- * circular.self = circular
199
- * console.log(formatJson(circular))
200
- * // {"name":"test"} (circular reference omitted)
392
+ * const obj: any = { name: "test" }
393
+ * obj.self = obj
394
+ * console.log(Formatter.formatJson(obj))
395
+ * // {"name":"test"}
396
+ * ```
397
+ *
398
+ * **Example** (Pretty-printed JSON)
201
399
  *
202
- * // With formatting
203
- * console.log(formatJson(simple, { space: 2 }))
400
+ * ```ts
401
+ * import { Formatter } from "effect"
402
+ *
403
+ * console.log(Formatter.formatJson({ name: "Alice", age: 30 }, { space: 2 }))
204
404
  * // {
205
405
  * // "name": "Alice",
206
406
  * // "age": 30
207
407
  * // }
208
408
  * ```
209
409
  *
410
+ * See also: {@link format}, {@link Formatter}
411
+ *
210
412
  * @since 4.0.0
211
413
  */
212
414
  export function formatJson(input: unknown, options?: {
package/src/Graph.ts CHANGED
@@ -1200,11 +1200,14 @@ export const reverse = <N, E, T extends Kind = "directed">(
1200
1200
  ): void => {
1201
1201
  // Reverse all edges by swapping source and target
1202
1202
  for (const [index, edgeData] of mutable.edges) {
1203
- mutable.edges.set(index, {
1204
- source: edgeData.target,
1205
- target: edgeData.source,
1206
- data: edgeData.data
1207
- })
1203
+ mutable.edges.set(
1204
+ index,
1205
+ new Edge({
1206
+ source: edgeData.target,
1207
+ target: edgeData.source,
1208
+ data: edgeData.data
1209
+ })
1210
+ )
1208
1211
  }
1209
1212
 
1210
1213
  // Clear and rebuild adjacency lists with reversed directions