effect 4.0.0-beta.0 → 4.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) 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/Combiner.d.ts +280 -13
  11. package/dist/Combiner.d.ts.map +1 -1
  12. package/dist/Combiner.js +198 -7
  13. package/dist/Combiner.js.map +1 -1
  14. package/dist/Config.d.ts +3 -3
  15. package/dist/Config.js +3 -3
  16. package/dist/Config.js.map +1 -1
  17. package/dist/ConfigProvider.d.ts +1 -1
  18. package/dist/Cron.d.ts +1 -1
  19. package/dist/Data.d.ts +534 -365
  20. package/dist/Data.d.ts.map +1 -1
  21. package/dist/Data.js +132 -79
  22. package/dist/Data.js.map +1 -1
  23. package/dist/DateTime.d.ts +23 -161
  24. package/dist/DateTime.d.ts.map +1 -1
  25. package/dist/DateTime.js +6 -51
  26. package/dist/DateTime.js.map +1 -1
  27. package/dist/Duration.d.ts +12 -12
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +12 -12
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +175 -240
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +73 -119
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Encoding.d.ts +194 -0
  36. package/dist/Encoding.d.ts.map +1 -0
  37. package/dist/Encoding.js +352 -0
  38. package/dist/Encoding.js.map +1 -0
  39. package/dist/Equal.d.ts +276 -109
  40. package/dist/Equal.d.ts.map +1 -1
  41. package/dist/Equal.js +124 -48
  42. package/dist/Equal.js.map +1 -1
  43. package/dist/FileSystem.d.ts +1 -1
  44. package/dist/FileSystem.d.ts.map +1 -1
  45. package/dist/FileSystem.js +5 -5
  46. package/dist/FileSystem.js.map +1 -1
  47. package/dist/Filter.d.ts +30 -1
  48. package/dist/Filter.d.ts.map +1 -1
  49. package/dist/Filter.js +15 -0
  50. package/dist/Filter.js.map +1 -1
  51. package/dist/Formatter.d.ts +131 -47
  52. package/dist/Formatter.d.ts.map +1 -1
  53. package/dist/Formatter.js +229 -51
  54. package/dist/Formatter.js.map +1 -1
  55. package/dist/Graph.d.ts +1 -1
  56. package/dist/Graph.d.ts.map +1 -1
  57. package/dist/Graph.js +2 -2
  58. package/dist/Graph.js.map +1 -1
  59. package/dist/JsonSchema.d.ts +299 -10
  60. package/dist/JsonSchema.d.ts.map +1 -1
  61. package/dist/JsonSchema.js +323 -4
  62. package/dist/JsonSchema.js.map +1 -1
  63. package/dist/Latch.d.ts +109 -0
  64. package/dist/Latch.d.ts.map +1 -0
  65. package/dist/Latch.js +72 -0
  66. package/dist/Latch.js.map +1 -0
  67. package/dist/LayerMap.d.ts +4 -4
  68. package/dist/LayerMap.d.ts.map +1 -1
  69. package/dist/LogLevel.d.ts +27 -0
  70. package/dist/LogLevel.d.ts.map +1 -1
  71. package/dist/LogLevel.js +28 -100
  72. package/dist/LogLevel.js.map +1 -1
  73. package/dist/Logger.d.ts +4 -4
  74. package/dist/Logger.d.ts.map +1 -1
  75. package/dist/Metric.d.ts +2 -2
  76. package/dist/Metric.d.ts.map +1 -1
  77. package/dist/Metric.js +1 -1
  78. package/dist/Metric.js.map +1 -1
  79. package/dist/Optic.d.ts +947 -18
  80. package/dist/Optic.d.ts.map +1 -1
  81. package/dist/Optic.js +454 -5
  82. package/dist/Optic.js.map +1 -1
  83. package/dist/Pipeable.d.ts +17 -0
  84. package/dist/Pipeable.d.ts.map +1 -1
  85. package/dist/Pipeable.js +19 -1
  86. package/dist/Pipeable.js.map +1 -1
  87. package/dist/PlatformError.d.ts +10 -9
  88. package/dist/PlatformError.d.ts.map +1 -1
  89. package/dist/PlatformError.js +2 -2
  90. package/dist/PlatformError.js.map +1 -1
  91. package/dist/Pool.d.ts +6 -4
  92. package/dist/Pool.d.ts.map +1 -1
  93. package/dist/Pool.js +7 -5
  94. package/dist/Pool.js.map +1 -1
  95. package/dist/PubSub.d.ts +3 -2
  96. package/dist/PubSub.d.ts.map +1 -1
  97. package/dist/PubSub.js +3 -2
  98. package/dist/PubSub.js.map +1 -1
  99. package/dist/Random.d.ts +18 -1
  100. package/dist/Random.d.ts.map +1 -1
  101. package/dist/Random.js +29 -12
  102. package/dist/Random.js.map +1 -1
  103. package/dist/RcMap.d.ts +2 -2
  104. package/dist/RcMap.d.ts.map +1 -1
  105. package/dist/RcMap.js +1 -1
  106. package/dist/RcMap.js.map +1 -1
  107. package/dist/RcRef.d.ts +1 -1
  108. package/dist/RcRef.d.ts.map +1 -1
  109. package/dist/Reducer.d.ts +166 -7
  110. package/dist/Reducer.d.ts.map +1 -1
  111. package/dist/Reducer.js +135 -1
  112. package/dist/Reducer.js.map +1 -1
  113. package/dist/Request.d.ts +1 -1
  114. package/dist/Request.d.ts.map +1 -1
  115. package/dist/Request.js +2 -1
  116. package/dist/Request.js.map +1 -1
  117. package/dist/RequestResolver.d.ts +6 -26
  118. package/dist/RequestResolver.d.ts.map +1 -1
  119. package/dist/RequestResolver.js +0 -20
  120. package/dist/RequestResolver.js.map +1 -1
  121. package/dist/Result.d.ts +12 -0
  122. package/dist/Result.d.ts.map +1 -1
  123. package/dist/Result.js +12 -0
  124. package/dist/Result.js.map +1 -1
  125. package/dist/Schedule.d.ts +33 -14
  126. package/dist/Schedule.d.ts.map +1 -1
  127. package/dist/Schedule.js +65 -24
  128. package/dist/Schedule.js.map +1 -1
  129. package/dist/Schema.d.ts +199 -49
  130. package/dist/Schema.d.ts.map +1 -1
  131. package/dist/Schema.js +386 -72
  132. package/dist/Schema.js.map +1 -1
  133. package/dist/SchemaGetter.d.ts +2 -2
  134. package/dist/SchemaGetter.d.ts.map +1 -1
  135. package/dist/SchemaGetter.js +12 -14
  136. package/dist/SchemaGetter.js.map +1 -1
  137. package/dist/SchemaRepresentation.d.ts +44 -43
  138. package/dist/SchemaRepresentation.d.ts.map +1 -1
  139. package/dist/SchemaRepresentation.js +43 -24
  140. package/dist/SchemaRepresentation.js.map +1 -1
  141. package/dist/SchemaTransformation.d.ts +37 -0
  142. package/dist/SchemaTransformation.d.ts.map +1 -1
  143. package/dist/SchemaTransformation.js +80 -0
  144. package/dist/SchemaTransformation.js.map +1 -1
  145. package/dist/ScopedCache.d.ts +2 -2
  146. package/dist/ScopedCache.d.ts.map +1 -1
  147. package/dist/ScopedCache.js +1 -1
  148. package/dist/ScopedCache.js.map +1 -1
  149. package/dist/Semaphore.d.ts +211 -0
  150. package/dist/Semaphore.d.ts.map +1 -0
  151. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  152. package/dist/Semaphore.js.map +1 -0
  153. package/dist/Stream.d.ts +19 -19
  154. package/dist/Stream.d.ts.map +1 -1
  155. package/dist/Stream.js +12 -11
  156. package/dist/Stream.js.map +1 -1
  157. package/dist/Struct.d.ts +16 -0
  158. package/dist/Struct.d.ts.map +1 -1
  159. package/dist/Struct.js +22 -0
  160. package/dist/Struct.js.map +1 -1
  161. package/dist/SubscriptionRef.d.ts +2 -1
  162. package/dist/SubscriptionRef.d.ts.map +1 -1
  163. package/dist/SubscriptionRef.js +2 -1
  164. package/dist/SubscriptionRef.js.map +1 -1
  165. package/dist/SynchronizedRef.d.ts +2 -1
  166. package/dist/SynchronizedRef.d.ts.map +1 -1
  167. package/dist/SynchronizedRef.js +2 -1
  168. package/dist/SynchronizedRef.js.map +1 -1
  169. package/dist/Types.d.ts +14 -6
  170. package/dist/Types.d.ts.map +1 -1
  171. package/dist/index.d.ts +499 -19
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +499 -19
  174. package/dist/index.js.map +1 -1
  175. package/dist/internal/core.js +11 -3
  176. package/dist/internal/core.js.map +1 -1
  177. package/dist/internal/dateTime.js +3 -11
  178. package/dist/internal/dateTime.js.map +1 -1
  179. package/dist/internal/effect.js +37 -22
  180. package/dist/internal/effect.js.map +1 -1
  181. package/dist/internal/random.d.ts +2 -0
  182. package/dist/internal/random.d.ts.map +1 -0
  183. package/dist/internal/random.js +13 -0
  184. package/dist/internal/random.js.map +1 -0
  185. package/dist/internal/rcRef.js +3 -2
  186. package/dist/internal/rcRef.js.map +1 -1
  187. package/dist/testing/TestClock.d.ts +7 -6
  188. package/dist/testing/TestClock.d.ts.map +1 -1
  189. package/dist/testing/TestClock.js +6 -4
  190. package/dist/testing/TestClock.js.map +1 -1
  191. package/dist/testing/TestSchema.d.ts +6 -6
  192. package/dist/testing/TestSchema.d.ts.map +1 -1
  193. package/dist/unstable/ai/AiError.d.ts +48 -48
  194. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  195. package/dist/unstable/ai/Chat.d.ts +3 -3
  196. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  197. package/dist/unstable/ai/Chat.js +4 -3
  198. package/dist/unstable/ai/Chat.js.map +1 -1
  199. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  200. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  201. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  202. package/dist/unstable/ai/McpServer.d.ts +1 -1
  203. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  204. package/dist/unstable/ai/McpServer.js.map +1 -1
  205. package/dist/unstable/ai/Prompt.d.ts +20 -20
  206. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  207. package/dist/unstable/ai/Response.d.ts +26 -26
  208. package/dist/unstable/ai/Response.d.ts.map +1 -1
  209. package/dist/unstable/ai/Response.js +1 -1
  210. package/dist/unstable/ai/Response.js.map +1 -1
  211. package/dist/unstable/cli/CliError.d.ts +5 -5
  212. package/dist/unstable/cli/Prompt.js +2 -2
  213. package/dist/unstable/cli/Prompt.js.map +1 -1
  214. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  215. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  216. package/dist/unstable/cluster/ClusterCron.js +1 -1
  217. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  218. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  219. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  220. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  221. package/dist/unstable/cluster/Entity.d.ts +5 -4
  222. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  223. package/dist/unstable/cluster/Entity.js.map +1 -1
  224. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  225. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  226. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  227. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  228. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  229. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  230. package/dist/unstable/cluster/Message.d.ts +10 -10
  231. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  232. package/dist/unstable/cluster/MessageStorage.js +2 -1
  233. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  234. package/dist/unstable/cluster/Reply.d.ts +6 -6
  235. package/dist/unstable/cluster/Runner.d.ts +1 -1
  236. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  237. package/dist/unstable/cluster/Runners.js +4 -3
  238. package/dist/unstable/cluster/Runners.js.map +1 -1
  239. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  240. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  241. package/dist/unstable/cluster/Sharding.js +8 -6
  242. package/dist/unstable/cluster/Sharding.js.map +1 -1
  243. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  244. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  245. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  246. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  247. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  248. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  249. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  250. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  251. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  252. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  253. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  254. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  255. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  256. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  257. package/dist/unstable/encoding/Sse.d.ts +4 -4
  258. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  259. package/dist/unstable/encoding/Sse.js.map +1 -1
  260. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  261. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  262. package/dist/unstable/eventlog/EventLog.js +2 -1
  263. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  264. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  265. package/dist/unstable/http/Cookies.d.ts +3 -3
  266. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  267. package/dist/unstable/http/Cookies.js +2 -2
  268. package/dist/unstable/http/Cookies.js.map +1 -1
  269. package/dist/unstable/http/HttpBody.d.ts +17 -2
  270. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  271. package/dist/unstable/http/HttpBody.js +28 -1
  272. package/dist/unstable/http/HttpBody.js.map +1 -1
  273. package/dist/unstable/http/HttpClient.d.ts +11 -11
  274. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  275. package/dist/unstable/http/HttpClient.js +4 -4
  276. package/dist/unstable/http/HttpClient.js.map +1 -1
  277. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  278. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  279. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  280. package/dist/unstable/http/HttpClientRequest.js +15 -3
  281. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  282. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  283. package/dist/unstable/http/HttpEffect.js +18 -26
  284. package/dist/unstable/http/HttpEffect.js.map +1 -1
  285. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  286. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  287. package/dist/unstable/http/HttpMethod.js +3 -3
  288. package/dist/unstable/http/HttpMethod.js.map +1 -1
  289. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  290. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  291. package/dist/unstable/http/HttpMiddleware.js +4 -9
  292. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  293. package/dist/unstable/http/HttpServerError.d.ts +6 -6
  294. package/dist/unstable/http/HttpServerResponse.js +1 -1
  295. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  296. package/dist/unstable/http/Multipart.d.ts +3 -3
  297. package/dist/unstable/http/UrlParams.d.ts +14 -6
  298. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  299. package/dist/unstable/http/UrlParams.js +1 -1
  300. package/dist/unstable/http/UrlParams.js.map +1 -1
  301. package/dist/unstable/httpapi/HttpApiBuilder.js +5 -5
  302. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  303. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  304. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  305. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  306. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  307. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  308. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  309. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  310. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  311. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  312. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  313. package/dist/unstable/httpapi/OpenApi.js +18 -16
  314. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  315. package/dist/unstable/observability/Otlp.d.ts +12 -12
  316. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  317. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  318. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  319. package/dist/unstable/observability/OtlpExporter.js +1 -1
  320. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  321. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  322. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  323. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  324. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  325. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  326. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  327. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  328. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  329. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  330. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  331. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  332. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  333. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  334. package/dist/unstable/persistence/PersistedCache.js +2 -1
  335. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  336. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  337. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  338. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  339. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  340. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  341. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  342. package/dist/unstable/persistence/Persistence.js +2 -2
  343. package/dist/unstable/persistence/Persistence.js.map +1 -1
  344. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  345. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  346. package/dist/unstable/persistence/RateLimiter.js +1 -1
  347. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  348. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  349. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  350. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  351. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  352. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  353. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  354. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  355. package/dist/unstable/reactivity/Atom.js +15 -12
  356. package/dist/unstable/reactivity/Atom.js.map +1 -1
  357. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  358. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  359. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  360. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  361. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  362. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  363. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  364. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  365. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  366. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  367. package/dist/unstable/reactivity/Hydration.js +76 -0
  368. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  369. package/dist/unstable/reactivity/index.d.ts +4 -0
  370. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  371. package/dist/unstable/reactivity/index.js +4 -0
  372. package/dist/unstable/reactivity/index.js.map +1 -1
  373. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  374. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  375. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  376. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  377. package/dist/unstable/rpc/RpcClient.js +6 -13
  378. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  379. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  380. package/dist/unstable/rpc/RpcServer.js +5 -3
  381. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  382. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  383. package/dist/unstable/rpc/Utils.js +2 -1
  384. package/dist/unstable/rpc/Utils.js.map +1 -1
  385. package/dist/unstable/schema/Model.d.ts +4 -4
  386. package/dist/unstable/schema/Model.d.ts.map +1 -1
  387. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  388. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  389. package/dist/unstable/schema/VariantSchema.js +13 -2
  390. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  391. package/dist/unstable/socket/Socket.d.ts +4 -4
  392. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  393. package/dist/unstable/socket/Socket.js +3 -2
  394. package/dist/unstable/socket/Socket.js.map +1 -1
  395. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  396. package/dist/unstable/sql/Migrator.d.ts +1 -1
  397. package/dist/unstable/sql/SqlError.d.ts +2 -2
  398. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  399. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  400. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  401. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  402. package/dist/unstable/sql/SqlSchema.js +24 -3
  403. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  404. package/dist/unstable/sql/Statement.js +0 -1
  405. package/dist/unstable/sql/Statement.js.map +1 -1
  406. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  407. package/dist/unstable/workers/Worker.js +2 -1
  408. package/dist/unstable/workers/Worker.js.map +1 -1
  409. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  410. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  411. package/dist/unstable/workflow/DurableClock.js +3 -3
  412. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  413. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  414. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  415. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  416. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
  417. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  418. package/dist/unstable/workflow/WorkflowEngine.js +2 -1
  419. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  420. package/package.json +2 -2
  421. package/src/Cache.ts +3 -3
  422. package/src/Cause.ts +1 -1
  423. package/src/Channel.ts +6 -4
  424. package/src/Combiner.ts +280 -13
  425. package/src/Config.ts +3 -3
  426. package/src/Data.ts +538 -374
  427. package/src/DateTime.ts +24 -164
  428. package/src/Duration.ts +15 -15
  429. package/src/Effect.ts +202 -261
  430. package/src/Encoding.ts +879 -0
  431. package/src/Equal.ts +278 -111
  432. package/src/FileSystem.ts +7 -8
  433. package/src/Filter.ts +48 -1
  434. package/src/Formatter.ts +253 -51
  435. package/src/Graph.ts +8 -5
  436. package/src/JsonSchema.ts +383 -10
  437. package/src/Latch.ts +112 -0
  438. package/src/LayerMap.ts +5 -5
  439. package/src/LogLevel.ts +31 -0
  440. package/src/Logger.ts +5 -5
  441. package/src/Metric.ts +4 -4
  442. package/src/Optic.ts +948 -19
  443. package/src/Pipeable.ts +32 -1
  444. package/src/PlatformError.ts +5 -5
  445. package/src/Pool.ts +13 -11
  446. package/src/PubSub.ts +10 -9
  447. package/src/Random.ts +33 -14
  448. package/src/RcMap.ts +5 -5
  449. package/src/RcRef.ts +1 -1
  450. package/src/Reducer.ts +166 -7
  451. package/src/Request.ts +3 -2
  452. package/src/RequestResolver.ts +9 -29
  453. package/src/Result.ts +13 -0
  454. package/src/Schedule.ts +279 -140
  455. package/src/Schema.ts +575 -113
  456. package/src/SchemaGetter.ts +12 -14
  457. package/src/SchemaRepresentation.ts +43 -24
  458. package/src/SchemaTransformation.ts +104 -0
  459. package/src/ScopedCache.ts +3 -3
  460. package/src/Semaphore.ts +356 -0
  461. package/src/Stream.ts +43 -42
  462. package/src/Struct.ts +26 -0
  463. package/src/SubscriptionRef.ts +3 -2
  464. package/src/SynchronizedRef.ts +3 -2
  465. package/src/Types.ts +12 -2
  466. package/src/index.ts +502 -20
  467. package/src/internal/core.ts +12 -5
  468. package/src/internal/dateTime.ts +9 -30
  469. package/src/internal/effect.ts +70 -37
  470. package/src/internal/random.ts +20 -0
  471. package/src/internal/rcRef.ts +4 -3
  472. package/src/testing/TestClock.ts +13 -11
  473. package/src/testing/TestSchema.ts +8 -8
  474. package/src/unstable/ai/AiError.ts +2 -2
  475. package/src/unstable/ai/Chat.ts +12 -11
  476. package/src/unstable/ai/LanguageModel.ts +3 -3
  477. package/src/unstable/ai/McpServer.ts +2 -2
  478. package/src/unstable/ai/Prompt.ts +37 -37
  479. package/src/unstable/ai/Response.ts +25 -25
  480. package/src/unstable/cli/Prompt.ts +2 -2
  481. package/src/unstable/cluster/ClusterCron.ts +2 -2
  482. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  483. package/src/unstable/cluster/Entity.ts +7 -6
  484. package/src/unstable/cluster/EntityResource.ts +4 -4
  485. package/src/unstable/cluster/Envelope.ts +1 -1
  486. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  487. package/src/unstable/cluster/MessageStorage.ts +3 -5
  488. package/src/unstable/cluster/Runners.ts +6 -5
  489. package/src/unstable/cluster/Sharding.ts +11 -9
  490. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  491. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  492. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  493. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  494. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  495. package/src/unstable/encoding/Sse.ts +2 -4
  496. package/src/unstable/eventlog/EventLog.ts +2 -1
  497. package/src/unstable/http/Cookies.ts +3 -3
  498. package/src/unstable/http/HttpBody.ts +42 -1
  499. package/src/unstable/http/HttpClient.ts +19 -19
  500. package/src/unstable/http/HttpClientRequest.ts +38 -13
  501. package/src/unstable/http/HttpEffect.ts +17 -25
  502. package/src/unstable/http/HttpMethod.ts +16 -4
  503. package/src/unstable/http/HttpMiddleware.ts +5 -10
  504. package/src/unstable/http/HttpServerResponse.ts +1 -1
  505. package/src/unstable/http/Multipart.ts +2 -2
  506. package/src/unstable/http/UrlParams.ts +20 -5
  507. package/src/unstable/httpapi/HttpApiBuilder.ts +5 -5
  508. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  509. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  510. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  511. package/src/unstable/httpapi/OpenApi.ts +18 -16
  512. package/src/unstable/observability/Otlp.ts +12 -12
  513. package/src/unstable/observability/OtlpExporter.ts +3 -3
  514. package/src/unstable/observability/OtlpLogger.ts +4 -4
  515. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  516. package/src/unstable/observability/OtlpTracer.ts +4 -4
  517. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  518. package/src/unstable/persistence/Persistable.ts +2 -2
  519. package/src/unstable/persistence/PersistedCache.ts +20 -9
  520. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  521. package/src/unstable/persistence/Persistence.ts +3 -3
  522. package/src/unstable/persistence/RateLimiter.ts +4 -4
  523. package/src/unstable/process/ChildProcess.ts +2 -2
  524. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  525. package/src/unstable/reactivity/Atom.ts +20 -18
  526. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  527. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  528. package/src/unstable/reactivity/Hydration.ts +112 -0
  529. package/src/unstable/reactivity/index.ts +5 -0
  530. package/src/unstable/rpc/Rpc.ts +3 -3
  531. package/src/unstable/rpc/RpcClient.ts +12 -54
  532. package/src/unstable/rpc/RpcServer.ts +6 -4
  533. package/src/unstable/rpc/Utils.ts +2 -1
  534. package/src/unstable/schema/VariantSchema.ts +36 -7
  535. package/src/unstable/socket/Socket.ts +7 -6
  536. package/src/unstable/sql/SqlModel.ts +2 -2
  537. package/src/unstable/sql/SqlSchema.ts +62 -13
  538. package/src/unstable/sql/Statement.ts +0 -1
  539. package/src/unstable/workers/Worker.ts +2 -1
  540. package/src/unstable/workflow/DurableClock.ts +8 -8
  541. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  542. package/src/unstable/workflow/WorkflowEngine.ts +3 -2
  543. package/dist/PartitionedSemaphore.d.ts +0 -52
  544. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  545. package/dist/PartitionedSemaphore.js.map +0 -1
  546. package/dist/encoding/Base64.d.ts +0 -67
  547. package/dist/encoding/Base64.d.ts.map +0 -1
  548. package/dist/encoding/Base64.js +0 -146
  549. package/dist/encoding/Base64.js.map +0 -1
  550. package/dist/encoding/Base64Url.d.ts +0 -60
  551. package/dist/encoding/Base64Url.d.ts.map +0 -1
  552. package/dist/encoding/Base64Url.js +0 -89
  553. package/dist/encoding/Base64Url.js.map +0 -1
  554. package/dist/encoding/EncodingError.d.ts +0 -31
  555. package/dist/encoding/EncodingError.d.ts.map +0 -1
  556. package/dist/encoding/EncodingError.js +0 -22
  557. package/dist/encoding/EncodingError.js.map +0 -1
  558. package/dist/encoding/Hex.d.ts +0 -61
  559. package/dist/encoding/Hex.d.ts.map +0 -1
  560. package/dist/encoding/Hex.js +0 -115
  561. package/dist/encoding/Hex.js.map +0 -1
  562. package/dist/encoding/index.d.ts +0 -26
  563. package/dist/encoding/index.d.ts.map +0 -1
  564. package/dist/encoding/index.js +0 -27
  565. package/dist/encoding/index.js.map +0 -1
  566. package/src/PartitionedSemaphore.ts +0 -182
  567. package/src/encoding/Base64.ts +0 -366
  568. package/src/encoding/Base64Url.ts +0 -104
  569. package/src/encoding/EncodingError.ts +0 -35
  570. package/src/encoding/Hex.ts +0 -390
  571. package/src/encoding/index.ts +0 -31
@@ -9,6 +9,7 @@ import * as Effect from "../../Effect.ts"
9
9
  import * as Exit from "../../Exit.ts"
10
10
  import { flow } from "../../Function.ts"
11
11
  import * as Iterable from "../../Iterable.ts"
12
+ import * as Latch from "../../Latch.ts"
12
13
  import * as Layer from "../../Layer.ts"
13
14
  import * as MutableRef from "../../MutableRef.ts"
14
15
  import * as Queue from "../../Queue.ts"
@@ -235,14 +236,14 @@ export const layerStoreMemory: Layer.Layer<
235
236
  }
236
237
  const ids = new Set<string>()
237
238
  const queues = new Map<string, {
238
- latch: Effect.Latch
239
+ latch: Latch.Latch
239
240
  items: Set<Entry>
240
241
  }>()
241
242
  const getOrCreateQueue = (name: string) => {
242
243
  let queue = queues.get(name)
243
244
  if (!queue) {
244
245
  queue = {
245
- latch: Effect.makeLatchUnsafe(false),
246
+ latch: Latch.makeUnsafe(false),
246
247
  items: new Set()
247
248
  }
248
249
  queues.set(name, queue)
@@ -294,26 +295,26 @@ export const layerStoreMemory: Layer.Layer<
294
295
  export const makeStoreRedis = Effect.fnUntraced(function*(
295
296
  options?: {
296
297
  readonly prefix?: string | undefined
297
- readonly pollInterval?: Duration.DurationInput | undefined
298
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
299
- readonly lockExpiration?: Duration.DurationInput | undefined
298
+ readonly pollInterval?: Duration.Input | undefined
299
+ readonly lockRefreshInterval?: Duration.Input | undefined
300
+ readonly lockExpiration?: Duration.Input | undefined
300
301
  }
301
302
  ) {
302
303
  const redis = yield* Redis.Redis
303
304
 
304
305
  const pollInterval = Duration.max(
305
- options?.pollInterval ? Duration.fromDurationInputUnsafe(options.pollInterval) : Duration.seconds(1),
306
+ options?.pollInterval ? Duration.fromInputUnsafe(options.pollInterval) : Duration.seconds(1),
306
307
  Duration.millis(1)
307
308
  )
308
309
  const lockRefreshMillis = Math.max(
309
310
  options?.lockRefreshInterval
310
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.lockRefreshInterval))
311
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.lockRefreshInterval))
311
312
  : 30_000,
312
313
  1
313
314
  )
314
315
  const lockExpirationMillis = Math.max(
315
316
  options?.lockExpiration
316
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.lockExpiration))
317
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.lockExpiration))
317
318
  : 90_000,
318
319
  1
319
320
  )
@@ -345,8 +346,8 @@ export const makeStoreRedis = Effect.fnUntraced(function*(
345
346
  const pendingKey = keyPending(name)
346
347
  const queue = yield* Queue.make<Element>()
347
348
  const takers = MutableRef.make(0)
348
- const pollLatch = Effect.makeLatchUnsafe()
349
- const takenLatch = Effect.makeLatchUnsafe()
349
+ const pollLatch = Latch.makeUnsafe()
350
+ const takenLatch = Latch.makeUnsafe()
350
351
 
351
352
  yield* Effect.addFinalizer(() =>
352
353
  Effect.orDie(
@@ -653,9 +654,9 @@ end
653
654
  export const layerStoreRedis: (
654
655
  options?: {
655
656
  readonly prefix?: string | undefined
656
- readonly pollInterval?: Duration.DurationInput | undefined
657
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
658
- readonly lockExpiration?: Duration.DurationInput | undefined
657
+ readonly pollInterval?: Duration.Input | undefined
658
+ readonly lockRefreshInterval?: Duration.Input | undefined
659
+ readonly lockExpiration?: Duration.Input | undefined
659
660
  } | undefined
660
661
  ) => Layer.Layer<
661
662
  PersistedQueueStore,
@@ -670,9 +671,9 @@ export const layerStoreRedis: (
670
671
  export const makeStoreSql: (
671
672
  options?: {
672
673
  readonly tableName?: string | undefined
673
- readonly pollInterval?: Duration.DurationInput | undefined
674
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
675
- readonly lockExpiration?: Duration.DurationInput | undefined
674
+ readonly pollInterval?: Duration.Input | undefined
675
+ readonly lockRefreshInterval?: Duration.Input | undefined
676
+ readonly lockExpiration?: Duration.Input | undefined
676
677
  } | undefined
677
678
  ) => Effect.Effect<
678
679
  PersistedQueueStore["Service"],
@@ -683,15 +684,15 @@ export const makeStoreSql: (
683
684
  const tableName = options?.tableName ?? "effect_queue"
684
685
  const tableNameSql = sql(tableName)
685
686
  const pollInterval = Duration.max(
686
- options?.pollInterval ? Duration.fromDurationInputUnsafe(options.pollInterval) : Duration.millis(1000),
687
+ options?.pollInterval ? Duration.fromInputUnsafe(options.pollInterval) : Duration.millis(1000),
687
688
  Duration.millis(1)
688
689
  )
689
690
  const lockRefreshInterval = Duration.max(
690
- options?.lockRefreshInterval ? Duration.fromDurationInputUnsafe(options.lockRefreshInterval) : Duration.seconds(30),
691
+ options?.lockRefreshInterval ? Duration.fromInputUnsafe(options.lockRefreshInterval) : Duration.seconds(30),
691
692
  Duration.millis(1)
692
693
  )
693
694
  const lockExpiration = Duration.max(
694
- options?.lockExpiration ? Duration.fromDurationInputUnsafe(options.lockExpiration) : Duration.minutes(2),
695
+ options?.lockExpiration ? Duration.fromInputUnsafe(options.lockExpiration) : Duration.minutes(2),
695
696
  Duration.millis(1)
696
697
  )
697
698
  const lockExpirationSql = sql.literal(Math.ceil(Duration.toSeconds(lockExpiration)).toString())
@@ -930,8 +931,8 @@ export const makeStoreSql: (
930
931
  lookup: Effect.fnUntraced(function*({ maxAttempts, name }: QueueKey) {
931
932
  const queue = yield* Queue.make<Element>()
932
933
  const takers = MutableRef.make(0)
933
- const pollLatch = Effect.makeLatchUnsafe()
934
- const takenLatch = Effect.makeLatchUnsafe()
934
+ const pollLatch = Latch.makeUnsafe()
935
+ const takenLatch = Latch.makeUnsafe()
935
936
 
936
937
  yield* Effect.addFinalizer(() =>
937
938
  Effect.flatMap(Queue.clear(queue), (elements) => {
@@ -1098,9 +1099,9 @@ class QueueKey extends Data.Class<{
1098
1099
  export const layerStoreSql: (
1099
1100
  options?: {
1100
1101
  readonly tableName?: string | undefined
1101
- readonly pollInterval?: Duration.DurationInput | undefined
1102
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
1103
- readonly lockExpiration?: Duration.DurationInput | undefined
1102
+ readonly pollInterval?: Duration.Input | undefined
1103
+ readonly lockRefreshInterval?: Duration.Input | undefined
1104
+ readonly lockExpiration?: Duration.Input | undefined
1104
1105
  } | undefined
1105
1106
  ) => Layer.Layer<
1106
1107
  PersistedQueueStore,
@@ -42,7 +42,7 @@ export class PersistenceError extends Schema.ErrorClass(ErrorTypeId)({
42
42
  export class Persistence extends ServiceMap.Service<Persistence, {
43
43
  readonly make: (options: {
44
44
  readonly storeId: string
45
- readonly timeToLive?: (exit: Exit.Exit<unknown, unknown>, key: Persistable.Any) => Duration.DurationInput
45
+ readonly timeToLive?: (exit: Exit.Exit<unknown, unknown>, key: Persistable.Any) => Duration.Input
46
46
  }) => Effect.Effect<PersistenceStore, never, Scope.Scope>
47
47
  }>()("effect/persistence/Persistence") {}
48
48
 
@@ -169,7 +169,7 @@ export const layer = Layer.effect(Persistence)(Effect.gen(function*() {
169
169
  return out
170
170
  }),
171
171
  set(key, value) {
172
- const ttl = Duration.fromDurationInputUnsafe(timeToLive(value, key))
172
+ const ttl = Duration.fromInputUnsafe(timeToLive(value, key))
173
173
  if (Duration.isZero(ttl) || Duration.isNegative(ttl)) return Effect.void
174
174
  return Persistable.serializeExit(key, value).pipe(
175
175
  Effect.flatMap((encoded) =>
@@ -180,7 +180,7 @@ export const layer = Layer.effect(Persistence)(Effect.gen(function*() {
180
180
  setMany: Effect.fnUntraced(function*(entries) {
181
181
  const encodedEntries = Arr.empty<readonly [string, object, Duration.Duration | undefined]>()
182
182
  for (const [key, value] of entries) {
183
- const ttl = Duration.fromDurationInputUnsafe(timeToLive(value, key))
183
+ const ttl = Duration.fromInputUnsafe(timeToLive(value, key))
184
184
  if (Duration.isZero(ttl) || Duration.isNegative(ttl)) continue
185
185
  const encoded = Persistable.serializeExit(key, value)
186
186
  const exit = Exit.isExit(encoded)
@@ -32,7 +32,7 @@ export interface RateLimiter {
32
32
  readonly consume: (options: {
33
33
  readonly algorithm?: "fixed-window" | "token-bucket" | undefined
34
34
  readonly onExceeded?: "delay" | "fail" | undefined
35
- readonly window: Duration.DurationInput
35
+ readonly window: Duration.Input
36
36
  readonly limit: number
37
37
  readonly key: string
38
38
  readonly tokens?: number | undefined
@@ -62,7 +62,7 @@ export const make: Effect.Effect<
62
62
  const tokens = options.tokens ?? 1
63
63
  const onExceeded = options.onExceeded ?? "fail"
64
64
  const algorithm = options.algorithm ?? "fixed-window"
65
- const window = Duration.max(Duration.fromDurationInputUnsafe(options.window), Duration.millis(1))
65
+ const window = Duration.max(Duration.fromInputUnsafe(options.window), Duration.millis(1))
66
66
  const windowMillis = Duration.toMillis(window)
67
67
  const refillRate = Duration.divideUnsafe(window, options.limit)
68
68
  const refillRateMillis = Duration.toMillis(refillRate)
@@ -222,7 +222,7 @@ export const makeWithRateLimiter: Effect.Effect<
222
222
  ((options: {
223
223
  readonly algorithm?: "fixed-window" | "token-bucket" | undefined
224
224
  readonly onExceeded?: "delay" | "fail" | undefined
225
- readonly window: Duration.DurationInput
225
+ readonly window: Duration.Input
226
226
  readonly limit: number
227
227
  readonly key: string
228
228
  readonly tokens?: number | undefined
@@ -266,7 +266,7 @@ export const makeWithRateLimiter: Effect.Effect<
266
266
  export const makeSleep: Effect.Effect<
267
267
  ((options: {
268
268
  readonly algorithm?: "fixed-window" | "token-bucket" | undefined
269
- readonly window: Duration.DurationInput
269
+ readonly window: Duration.Input
270
270
  readonly limit: number
271
271
  readonly key: string
272
272
  readonly tokens?: number | undefined
@@ -283,7 +283,7 @@ export interface KillOptions {
283
283
  * Defaults to `undefined`, which means that no timeout will be enforced by
284
284
  * default.
285
285
  */
286
- readonly forceKillAfter?: Duration.DurationInput | undefined
286
+ readonly forceKillAfter?: Duration.Input | undefined
287
287
  }
288
288
 
289
289
  /**
@@ -414,7 +414,7 @@ export interface CommandOptions extends KillOptions {
414
414
  * the value of `globalThis.process.env`, prioritizing the values in `env`
415
415
  * when conflicts exist.
416
416
  */
417
- readonly env?: Record<string, string> | undefined
417
+ readonly env?: Record<string, string | undefined> | undefined
418
418
  /**
419
419
  * If set to `true`, the child process uses both the values in `env` as well
420
420
  * as the values in `globalThis.process.env`, prioritizing the values in `env`
@@ -76,10 +76,16 @@ export interface ChildProcessHandle {
76
76
  readonly stdin: Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>
77
77
  /**
78
78
  * The standard output stream for the child process.
79
+ *
80
+ * Note: Using alongside `all` may cause interleaving of output and unexpected
81
+ * results.
79
82
  */
80
83
  readonly stdout: Stream.Stream<Uint8Array, PlatformError.PlatformError>
81
84
  /**
82
85
  * The standard error stream for the child process.
86
+ *
87
+ * Note: Using alongside `all` may cause interleaving of output and unexpected
88
+ * results.
83
89
  */
84
90
  readonly stderr: Stream.Stream<Uint8Array, PlatformError.PlatformError>
85
91
  /**
@@ -169,25 +169,25 @@ export const setIdleTTL: {
169
169
  * @since 4.0.0
170
170
  * @category combinators
171
171
  */
172
- (duration: Duration.DurationInput): <A extends Atom<any>>(self: A) => A
172
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => A
173
173
  /**
174
174
  * @since 4.0.0
175
175
  * @category combinators
176
176
  */
177
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput): A
177
+ <A extends Atom<any>>(self: A, duration: Duration.Input): A
178
178
  } = dual<
179
179
  /**
180
180
  * @since 4.0.0
181
181
  * @category combinators
182
182
  */
183
- (duration: Duration.DurationInput) => <A extends Atom<any>>(self: A) => A,
183
+ (duration: Duration.Input) => <A extends Atom<any>>(self: A) => A,
184
184
  /**
185
185
  * @since 4.0.0
186
186
  * @category combinators
187
187
  */
188
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput) => A
188
+ <A extends Atom<any>>(self: A, duration: Duration.Input) => A
189
189
  >(2, (self, durationInput) => {
190
- const duration = Duration.fromDurationInputUnsafe(durationInput)
190
+ const duration = Duration.fromInputUnsafe(durationInput)
191
191
  const isFinite = Duration.isFinite(duration)
192
192
  return Object.assign(Object.create(Object.getPrototypeOf(self)), {
193
193
  ...self,
@@ -1684,16 +1684,16 @@ export const debounce: {
1684
1684
  * @since 4.0.0
1685
1685
  * @category combinators
1686
1686
  */
1687
- (duration: Duration.DurationInput): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1687
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1688
1688
  /**
1689
1689
  * @since 4.0.0
1690
1690
  * @category combinators
1691
1691
  */
1692
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput): WithoutSerializable<A>
1692
+ <A extends Atom<any>>(self: A, duration: Duration.Input): WithoutSerializable<A>
1693
1693
  } = dual(
1694
1694
  2,
1695
- <A>(self: Atom<A>, duration: Duration.DurationInput): Atom<A> => {
1696
- const millis = Duration.toMillis(Duration.fromDurationInputUnsafe(duration))
1695
+ <A>(self: Atom<A>, duration: Duration.Input): Atom<A> => {
1696
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
1697
1697
  return transform(self, function(get) {
1698
1698
  let timeout: number | undefined
1699
1699
  let value = get.once(self)
@@ -1729,7 +1729,7 @@ export const withRefresh: {
1729
1729
  * @since 4.0.0
1730
1730
  * @category combinators
1731
1731
  */
1732
- (duration: Duration.DurationInput): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1732
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1733
1733
  /**
1734
1734
  * Ensures that the value of the atom is refreshed at most once per specified
1735
1735
  * duration.
@@ -1737,11 +1737,11 @@ export const withRefresh: {
1737
1737
  * @since 4.0.0
1738
1738
  * @category combinators
1739
1739
  */
1740
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput): WithoutSerializable<A>
1740
+ <A extends Atom<any>>(self: A, duration: Duration.Input): WithoutSerializable<A>
1741
1741
  } = dual(
1742
1742
  2,
1743
- <A>(self: Atom<A>, duration: Duration.DurationInput): Atom<A> => {
1744
- const millis = Duration.toMillis(Duration.fromDurationInputUnsafe(duration))
1743
+ <A>(self: Atom<A>, duration: Duration.Input): Atom<A> => {
1744
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
1745
1745
  return transform(self, function(get) {
1746
1746
  const handle = setTimeout(() => get.refresh(self), millis) as any
1747
1747
  get.addFinalizer(() => clearTimeout(handle))
@@ -2291,16 +2291,18 @@ export const serializable: {
2291
2291
  } = dual(2, <R extends Atom<any>, A, I>(self: R, options: {
2292
2292
  readonly key: string
2293
2293
  readonly schema: Schema.Codec<A, I>
2294
- }): R & Serializable<any> =>
2295
- Object.assign(Object.create(Object.getPrototypeOf(self)), {
2294
+ }): R & Serializable<any> => {
2295
+ const codecJson = Schema.toCodecJson(options.schema)
2296
+ return Object.assign(Object.create(Object.getPrototypeOf(self)), {
2296
2297
  ...self,
2297
2298
  label: self.label ?? [options.key, new Error().stack?.split("\n")[5] ?? ""],
2298
2299
  [SerializableTypeId]: {
2299
2300
  key: options.key,
2300
- encode: Schema.encodeSync(options.schema),
2301
- decode: Schema.decodeSync(options.schema)
2301
+ encode: Schema.encodeSync(codecJson),
2302
+ decode: Schema.decodeSync(codecJson)
2302
2303
  }
2303
- }))
2304
+ })
2305
+ })
2304
2306
 
2305
2307
  /**
2306
2308
  * @since 4.0.0
@@ -51,8 +51,8 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
51
51
  infer _Name,
52
52
  infer _Method,
53
53
  infer _Path,
54
- infer _PathSchema,
55
- infer _UrlParams,
54
+ infer _Params,
55
+ infer _Query,
56
56
  infer _Payload,
57
57
  infer _Headers,
58
58
  infer _Success,
@@ -62,7 +62,7 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
62
62
  >
63
63
  ] ? Atom.AtomResultFn<
64
64
  Simplify<
65
- HttpApiEndpoint.ClientRequest<_PathSchema, _UrlParams, _Payload, _Headers, false> & {
65
+ HttpApiEndpoint.ClientRequest<_Params, _Query, _Payload, _Headers, false> & {
66
66
  readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
67
67
  }
68
68
  >,
@@ -88,8 +88,8 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
88
88
  infer _Name,
89
89
  infer _Method,
90
90
  infer _Path,
91
- infer _PathSchema,
92
- infer _UrlParams,
91
+ infer _Params,
92
+ infer _Query,
93
93
  infer _Payload,
94
94
  infer _Headers,
95
95
  infer _Success,
@@ -98,12 +98,12 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
98
98
  infer _RE
99
99
  >
100
100
  ] ? Simplify<
101
- HttpApiEndpoint.ClientRequest<_PathSchema, _UrlParams, _Payload, _Headers, WithResponse> & {
101
+ HttpApiEndpoint.ClientRequest<_Params, _Query, _Payload, _Headers, WithResponse> & {
102
102
  readonly reactivityKeys?:
103
103
  | ReadonlyArray<unknown>
104
104
  | ReadonlyRecord<string, ReadonlyArray<unknown>>
105
105
  | undefined
106
- readonly timeToLive?: Duration.DurationInput | undefined
106
+ readonly timeToLive?: Duration.Input | undefined
107
107
  }
108
108
  >
109
109
  : never
@@ -112,7 +112,8 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
112
112
  infer _Name,
113
113
  infer _Method,
114
114
  infer _Path,
115
- infer _UrlParams,
115
+ infer _Params,
116
+ infer _Query,
116
117
  infer _Payload,
117
118
  infer _Headers,
118
119
  infer _Success,
@@ -170,8 +171,8 @@ export const Service = <Self>() =>
170
171
 
171
172
  const mutationFamily = Atom.family(({ endpoint, group, withResponse }: MutationKey) =>
172
173
  self.runtime.fn<{
173
- path: any
174
- urlParams: any
174
+ params: any
175
+ query: any
175
176
  headers: any
176
177
  payload: any
177
178
  reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
@@ -217,26 +218,26 @@ export const Service = <Self>() =>
217
218
  group: string,
218
219
  endpoint: string,
219
220
  request: {
220
- readonly path?: any
221
- readonly urlParams?: any
221
+ readonly params?: any
222
+ readonly query?: any
222
223
  readonly payload?: any
223
224
  readonly headers?: any
224
225
  readonly withResponse?: boolean
225
226
  readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
226
- readonly timeToLive?: Duration.DurationInput | undefined
227
+ readonly timeToLive?: Duration.Input | undefined
227
228
  }
228
229
  ) =>
229
230
  queryFamily({
230
231
  group,
231
232
  endpoint,
232
- path: request.path,
233
- urlParams: request.urlParams,
233
+ params: request.params,
234
+ query: request.query,
234
235
  payload: request.payload,
235
236
  headers: request.headers,
236
237
  withResponse: request.withResponse ?? false,
237
238
  reactivityKeys: request.reactivityKeys,
238
239
  timeToLive: request.timeToLive
239
- ? Duration.fromDurationInputUnsafe(request.timeToLive)
240
+ ? Duration.fromInputUnsafe(request.timeToLive)
240
241
  : undefined
241
242
  })) as any
242
243
 
@@ -252,8 +253,8 @@ interface MutationKey {
252
253
  interface QueryKey {
253
254
  group: string
254
255
  endpoint: string
255
- path: any
256
- urlParams: any
256
+ params: any
257
+ query: any
257
258
  headers: any
258
259
  payload: any
259
260
  withResponse: boolean
@@ -71,7 +71,7 @@ export interface AtomRpcClient<Self, Id extends string, Rpcs extends Rpc.Any, E>
71
71
  | ReadonlyArray<unknown>
72
72
  | ReadonlyRecord<string, ReadonlyArray<unknown>>
73
73
  | undefined
74
- readonly timeToLive?: Duration.DurationInput | undefined
74
+ readonly timeToLive?: Duration.Input | undefined
75
75
  }
76
76
  ) => Rpc.ExtractTag<Rpcs, Tag> extends Rpc.Rpc<
77
77
  infer _Tag,
@@ -208,7 +208,7 @@ export const Service = <Self>() =>
208
208
  | ReadonlyArray<unknown>
209
209
  | ReadonlyRecord<string, ReadonlyArray<unknown>>
210
210
  | undefined
211
- readonly timeToLive?: Duration.DurationInput | undefined
211
+ readonly timeToLive?: Duration.Input | undefined
212
212
  }
213
213
  ) =>
214
214
  queryFamily({
@@ -219,7 +219,7 @@ export const Service = <Self>() =>
219
219
  : undefined,
220
220
  reactivityKeys: options?.reactivityKeys,
221
221
  timeToLive: options?.timeToLive
222
- ? Duration.fromDurationInputUnsafe(options.timeToLive)
222
+ ? Duration.fromInputUnsafe(options.timeToLive)
223
223
  : undefined
224
224
  }) as any
225
225
 
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as AsyncResult from "./AsyncResult.ts"
5
+ import * as Atom from "./Atom.ts"
6
+ import type * as AtomRegistry from "./AtomRegistry.ts"
7
+
8
+ /**
9
+ * @since 4.0.0
10
+ * @category models
11
+ */
12
+ export interface DehydratedAtom {
13
+ readonly "~effect/reactivity/DehydratedAtom": true
14
+ }
15
+
16
+ /**
17
+ * @since 4.0.0
18
+ * @category models
19
+ */
20
+ export interface DehydratedAtomValue extends DehydratedAtom {
21
+ readonly key: string
22
+ readonly value: unknown
23
+ readonly dehydratedAt: number
24
+ readonly resultPromise?: Promise<unknown> | undefined
25
+ }
26
+
27
+ /**
28
+ * @since 4.0.0
29
+ * @category dehydration
30
+ */
31
+ export const dehydrate = (
32
+ registry: AtomRegistry.AtomRegistry,
33
+ options?: {
34
+ /**
35
+ * How to encode `AsyncResult.Initial` values. Default is "ignore".
36
+ */
37
+ readonly encodeInitialAs?: "ignore" | "promise" | "value-only" | undefined
38
+ }
39
+ ): Array<DehydratedAtom> => {
40
+ const encodeInitialResultMode = options?.encodeInitialAs ?? "ignore"
41
+ const arr: Array<DehydratedAtomValue> = []
42
+ const now = Date.now()
43
+ registry.getNodes().forEach((node, key) => {
44
+ if (!Atom.isSerializable(node.atom)) return
45
+ const atom = node.atom
46
+ const value = node.value()
47
+ const isInitial = AsyncResult.isAsyncResult(value) && AsyncResult.isInitial(value)
48
+ if (encodeInitialResultMode === "ignore" && isInitial) return
49
+ const encodedValue = atom[Atom.SerializableTypeId].encode(value)
50
+
51
+ // Create a promise that resolves when the atom moves out of Initial state
52
+ let resultPromise: Promise<unknown> | undefined
53
+ if (encodeInitialResultMode === "promise" && isInitial) {
54
+ resultPromise = new Promise((resolve) => {
55
+ const unsubscribe = registry.subscribe(atom, (newValue) => {
56
+ if (AsyncResult.isAsyncResult(newValue) && !AsyncResult.isInitial(newValue)) {
57
+ resolve(atom[Atom.SerializableTypeId].encode(newValue))
58
+ unsubscribe()
59
+ }
60
+ })
61
+ })
62
+ }
63
+
64
+ arr.push({
65
+ "~effect/reactivity/DehydratedAtom": true,
66
+ key: key as string,
67
+ value: encodedValue,
68
+ dehydratedAt: now,
69
+ resultPromise
70
+ })
71
+ })
72
+ return arr as any
73
+ }
74
+
75
+ /**
76
+ * @since 4.0.0
77
+ * @category dehydration
78
+ */
79
+ export const toValues = (state: ReadonlyArray<DehydratedAtom>): Array<DehydratedAtomValue> => state as any
80
+
81
+ /**
82
+ * @since 4.0.0
83
+ * @category hydration
84
+ */
85
+ export const hydrate = (
86
+ registry: AtomRegistry.AtomRegistry,
87
+ dehydratedState: Iterable<DehydratedAtom>
88
+ ): void => {
89
+ for (const datom of (dehydratedState as Iterable<DehydratedAtomValue>)) {
90
+ registry.setSerializable(datom.key, datom.value)
91
+
92
+ // If there's a resultPromise, it means this was in Initial state when dehydrated
93
+ // and we should wait for it to resolve to a non-Initial state, then update the registry
94
+ if (!datom.resultPromise) continue
95
+ datom.resultPromise.then((resolvedValue) => {
96
+ // Try to update the existing node directly instead of using setSerializable
97
+ const nodes = registry.getNodes()
98
+ const node = nodes.get(datom.key)
99
+ if (node) {
100
+ // Decode the resolved value using the node's atom serializable decoder
101
+ const atom = node.atom as any
102
+ if (atom[Atom.SerializableTypeId]) {
103
+ const decoded = atom[Atom.SerializableTypeId].decode(resolvedValue)
104
+ ;(node as any).setValue(decoded)
105
+ }
106
+ } else {
107
+ // Fallback to setSerializable if node doesn't exist yet
108
+ registry.setSerializable(datom.key, resolvedValue)
109
+ }
110
+ })
111
+ }
112
+ }
@@ -34,6 +34,11 @@ export * as AtomRegistry from "./AtomRegistry.ts"
34
34
  */
35
35
  export * as AtomRpc from "./AtomRpc.ts"
36
36
 
37
+ /**
38
+ * @since 4.0.0
39
+ */
40
+ export * as Hydration from "./Hydration.ts"
41
+
37
42
  /**
38
43
  * @since 4.0.0
39
44
  */
@@ -61,7 +61,7 @@ export interface Rpc<
61
61
  readonly payloadSchema: Payload
62
62
  readonly successSchema: Success
63
63
  readonly errorSchema: Error
64
- readonly defectSchema: DefectSchema
64
+ readonly defectSchema: Schema.Top
65
65
  readonly annotations: ServiceMap.ServiceMap<never>
66
66
  readonly middlewares: ReadonlySet<Middleware>
67
67
  readonly "~requires": Requires
@@ -183,7 +183,7 @@ export interface AnyWithProps extends Pipeable {
183
183
  readonly payloadSchema: Schema.Top
184
184
  readonly successSchema: Schema.Top
185
185
  readonly errorSchema: Schema.Top
186
- readonly defectSchema: DefectSchema
186
+ readonly defectSchema: Schema.Top
187
187
  readonly annotations: ServiceMap.ServiceMap<never>
188
188
  readonly middlewares: ReadonlySet<RpcMiddleware.AnyServiceWithProps>
189
189
  readonly "~requires": any
@@ -696,7 +696,7 @@ const makeProto = <
696
696
  readonly payloadSchema: Payload
697
697
  readonly successSchema: Success
698
698
  readonly errorSchema: Error
699
- readonly defectSchema: DefectSchema
699
+ readonly defectSchema: Schema.Top
700
700
  readonly annotations: ServiceMap.ServiceMap<never>
701
701
  readonly middlewares: ReadonlySet<Middleware>
702
702
  }): Rpc<Tag, Payload, Success, Error, Middleware, Requires> => {