effect 4.0.0-beta.31 → 4.0.0-beta.32

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 (464) hide show
  1. package/dist/Array.d.ts +87 -86
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +47 -40
  4. package/dist/Array.js.map +1 -1
  5. package/dist/BigDecimal.d.ts +46 -45
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +35 -38
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/BigInt.d.ts +39 -32
  10. package/dist/BigInt.d.ts.map +1 -1
  11. package/dist/BigInt.js +32 -29
  12. package/dist/BigInt.js.map +1 -1
  13. package/dist/Chunk.d.ts +58 -57
  14. package/dist/Chunk.d.ts.map +1 -1
  15. package/dist/Chunk.js +20 -21
  16. package/dist/Chunk.js.map +1 -1
  17. package/dist/Config.d.ts.map +1 -1
  18. package/dist/Config.js +4 -1
  19. package/dist/Config.js.map +1 -1
  20. package/dist/Cron.d.ts +3 -6
  21. package/dist/Cron.d.ts.map +1 -1
  22. package/dist/Cron.js +8 -15
  23. package/dist/Cron.js.map +1 -1
  24. package/dist/DateTime.d.ts +16 -15
  25. package/dist/DateTime.d.ts.map +1 -1
  26. package/dist/DateTime.js +8 -8
  27. package/dist/DateTime.js.map +1 -1
  28. package/dist/Deferred.d.ts +7 -5
  29. package/dist/Deferred.d.ts.map +1 -1
  30. package/dist/Deferred.js +7 -5
  31. package/dist/Deferred.js.map +1 -1
  32. package/dist/Duration.d.ts +26 -24
  33. package/dist/Duration.d.ts.map +1 -1
  34. package/dist/Duration.js +23 -22
  35. package/dist/Duration.js.map +1 -1
  36. package/dist/Effect.d.ts.map +1 -1
  37. package/dist/Effect.js +3 -4
  38. package/dist/Effect.js.map +1 -1
  39. package/dist/Fiber.d.ts +2 -1
  40. package/dist/Fiber.d.ts.map +1 -1
  41. package/dist/Fiber.js.map +1 -1
  42. package/dist/FiberHandle.d.ts +9 -8
  43. package/dist/FiberHandle.d.ts.map +1 -1
  44. package/dist/FiberHandle.js +8 -7
  45. package/dist/FiberHandle.js.map +1 -1
  46. package/dist/FiberMap.d.ts +20 -19
  47. package/dist/FiberMap.d.ts.map +1 -1
  48. package/dist/FiberMap.js +6 -6
  49. package/dist/FiberMap.js.map +1 -1
  50. package/dist/FileSystem.d.ts +17 -16
  51. package/dist/FileSystem.d.ts.map +1 -1
  52. package/dist/FileSystem.js +10 -7
  53. package/dist/FileSystem.js.map +1 -1
  54. package/dist/Graph.d.ts +64 -64
  55. package/dist/Graph.d.ts.map +1 -1
  56. package/dist/Graph.js +53 -53
  57. package/dist/Graph.js.map +1 -1
  58. package/dist/HashMap.d.ts +11 -5
  59. package/dist/HashMap.d.ts.map +1 -1
  60. package/dist/HashMap.js +3 -1
  61. package/dist/HashMap.js.map +1 -1
  62. package/dist/Iterable.d.ts +11 -11
  63. package/dist/Iterable.d.ts.map +1 -1
  64. package/dist/Iterable.js +12 -12
  65. package/dist/Iterable.js.map +1 -1
  66. package/dist/Latch.d.ts +69 -3
  67. package/dist/Latch.d.ts.map +1 -1
  68. package/dist/Latch.js +58 -0
  69. package/dist/Latch.js.map +1 -1
  70. package/dist/Layer.d.ts +84 -0
  71. package/dist/Layer.d.ts.map +1 -1
  72. package/dist/Layer.js +27 -0
  73. package/dist/Layer.js.map +1 -1
  74. package/dist/Number.d.ts +74 -18
  75. package/dist/Number.d.ts.map +1 -1
  76. package/dist/Number.js +34 -15
  77. package/dist/Number.js.map +1 -1
  78. package/dist/Option.d.ts +2 -0
  79. package/dist/Option.d.ts.map +1 -1
  80. package/dist/Option.js.map +1 -1
  81. package/dist/PartitionedSemaphore.d.ts +183 -0
  82. package/dist/PartitionedSemaphore.d.ts.map +1 -0
  83. package/dist/PartitionedSemaphore.js +231 -0
  84. package/dist/PartitionedSemaphore.js.map +1 -0
  85. package/dist/PubSub.d.ts +5 -4
  86. package/dist/PubSub.d.ts.map +1 -1
  87. package/dist/PubSub.js +6 -5
  88. package/dist/PubSub.js.map +1 -1
  89. package/dist/Queue.d.ts +3 -3
  90. package/dist/Queue.d.ts.map +1 -1
  91. package/dist/Queue.js +2 -2
  92. package/dist/Queue.js.map +1 -1
  93. package/dist/Record.d.ts +40 -40
  94. package/dist/Record.d.ts.map +1 -1
  95. package/dist/Record.js +16 -15
  96. package/dist/Record.js.map +1 -1
  97. package/dist/Scheduler.d.ts +25 -123
  98. package/dist/Scheduler.d.ts.map +1 -1
  99. package/dist/Scheduler.js +20 -123
  100. package/dist/Scheduler.js.map +1 -1
  101. package/dist/Schema.d.ts +30 -0
  102. package/dist/Schema.d.ts.map +1 -1
  103. package/dist/Schema.js +28 -1
  104. package/dist/Schema.js.map +1 -1
  105. package/dist/SchemaGetter.js +6 -4
  106. package/dist/SchemaGetter.js.map +1 -1
  107. package/dist/SchemaTransformation.d.ts.map +1 -1
  108. package/dist/SchemaTransformation.js +32 -27
  109. package/dist/SchemaTransformation.js.map +1 -1
  110. package/dist/Semaphore.d.ts +149 -53
  111. package/dist/Semaphore.d.ts.map +1 -1
  112. package/dist/Semaphore.js +137 -117
  113. package/dist/Semaphore.js.map +1 -1
  114. package/dist/ServiceMap.d.ts +26 -0
  115. package/dist/ServiceMap.d.ts.map +1 -1
  116. package/dist/ServiceMap.js +36 -21
  117. package/dist/ServiceMap.js.map +1 -1
  118. package/dist/Stream.js +1 -1
  119. package/dist/Stream.js.map +1 -1
  120. package/dist/String.d.ts +114 -47
  121. package/dist/String.d.ts.map +1 -1
  122. package/dist/String.js +29 -47
  123. package/dist/String.js.map +1 -1
  124. package/dist/SubscriptionRef.d.ts +1 -2
  125. package/dist/SubscriptionRef.d.ts.map +1 -1
  126. package/dist/SubscriptionRef.js +81 -115
  127. package/dist/SubscriptionRef.js.map +1 -1
  128. package/dist/Terminal.d.ts +2 -1
  129. package/dist/Terminal.d.ts.map +1 -1
  130. package/dist/Terminal.js.map +1 -1
  131. package/dist/Tracer.d.ts +5 -4
  132. package/dist/Tracer.d.ts.map +1 -1
  133. package/dist/Tracer.js +2 -1
  134. package/dist/Tracer.js.map +1 -1
  135. package/dist/Trie.d.ts +26 -14
  136. package/dist/Trie.d.ts.map +1 -1
  137. package/dist/Trie.js +8 -4
  138. package/dist/Trie.js.map +1 -1
  139. package/dist/TxHashMap.d.ts +77 -59
  140. package/dist/TxHashMap.d.ts.map +1 -1
  141. package/dist/TxHashMap.js +25 -19
  142. package/dist/TxHashMap.js.map +1 -1
  143. package/dist/TxSemaphore.d.ts +162 -2
  144. package/dist/TxSemaphore.d.ts.map +1 -1
  145. package/dist/TxSemaphore.js +16 -2
  146. package/dist/TxSemaphore.js.map +1 -1
  147. package/dist/index.d.ts +88 -32
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +88 -32
  150. package/dist/index.js.map +1 -1
  151. package/dist/internal/dateTime.js +9 -9
  152. package/dist/internal/dateTime.js.map +1 -1
  153. package/dist/internal/effect.js +20 -89
  154. package/dist/internal/effect.js.map +1 -1
  155. package/dist/internal/hashMap.js +2 -1
  156. package/dist/internal/hashMap.js.map +1 -1
  157. package/dist/internal/option.js +6 -0
  158. package/dist/internal/option.js.map +1 -1
  159. package/dist/internal/trie.js +3 -3
  160. package/dist/internal/trie.js.map +1 -1
  161. package/dist/unstable/ai/AiError.js +1 -1
  162. package/dist/unstable/ai/AiError.js.map +1 -1
  163. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  164. package/dist/unstable/ai/AnthropicStructuredOutput.js +4 -0
  165. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  166. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  167. package/dist/unstable/ai/Chat.js +2 -2
  168. package/dist/unstable/ai/Chat.js.map +1 -1
  169. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  170. package/dist/unstable/ai/OpenAiStructuredOutput.js +4 -0
  171. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  172. package/dist/unstable/ai/Tool.d.ts +14 -0
  173. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  174. package/dist/unstable/ai/Tool.js +13 -0
  175. package/dist/unstable/ai/Tool.js.map +1 -1
  176. package/dist/unstable/cli/Argument.d.ts +2 -4
  177. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  178. package/dist/unstable/cli/Argument.js +1 -3
  179. package/dist/unstable/cli/Argument.js.map +1 -1
  180. package/dist/unstable/cli/CliOutput.d.ts +3 -2
  181. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  182. package/dist/unstable/cli/CliOutput.js +4 -3
  183. package/dist/unstable/cli/CliOutput.js.map +1 -1
  184. package/dist/unstable/cli/Command.d.ts +3 -2
  185. package/dist/unstable/cli/Command.d.ts.map +1 -1
  186. package/dist/unstable/cli/Command.js +3 -3
  187. package/dist/unstable/cli/Command.js.map +1 -1
  188. package/dist/unstable/cli/Flag.d.ts +2 -2
  189. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  190. package/dist/unstable/cli/Flag.js +1 -1
  191. package/dist/unstable/cli/Flag.js.map +1 -1
  192. package/dist/unstable/cli/HelpDoc.d.ts +14 -12
  193. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  194. package/dist/unstable/cli/Param.d.ts +4 -4
  195. package/dist/unstable/cli/Param.d.ts.map +1 -1
  196. package/dist/unstable/cli/Param.js +7 -7
  197. package/dist/unstable/cli/Param.js.map +1 -1
  198. package/dist/unstable/cli/Primitive.d.ts +1 -1
  199. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  200. package/dist/unstable/cli/Primitive.js.map +1 -1
  201. package/dist/unstable/cli/Prompt.js +71 -67
  202. package/dist/unstable/cli/Prompt.js.map +1 -1
  203. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +9 -2
  204. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  205. package/dist/unstable/cli/internal/parser.js +8 -3
  206. package/dist/unstable/cli/internal/parser.js.map +1 -1
  207. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +3 -2
  208. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  209. package/dist/unstable/cluster/ClusterWorkflowEngine.js +25 -23
  210. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  211. package/dist/unstable/cluster/Entity.d.ts +3 -2
  212. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  213. package/dist/unstable/cluster/Entity.js +7 -7
  214. package/dist/unstable/cluster/Entity.js.map +1 -1
  215. package/dist/unstable/cluster/Message.d.ts +4 -3
  216. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  217. package/dist/unstable/cluster/Message.js +3 -2
  218. package/dist/unstable/cluster/Message.js.map +1 -1
  219. package/dist/unstable/cluster/MessageStorage.d.ts +10 -10
  220. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  221. package/dist/unstable/cluster/MessageStorage.js +12 -12
  222. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  223. package/dist/unstable/cluster/Reply.d.ts +2 -1
  224. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  225. package/dist/unstable/cluster/Reply.js +4 -3
  226. package/dist/unstable/cluster/Reply.js.map +1 -1
  227. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  228. package/dist/unstable/cluster/RunnerServer.js +9 -8
  229. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  230. package/dist/unstable/cluster/Runners.d.ts +2 -1
  231. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  232. package/dist/unstable/cluster/Runners.js +7 -6
  233. package/dist/unstable/cluster/Runners.js.map +1 -1
  234. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  235. package/dist/unstable/cluster/Sharding.js +19 -13
  236. package/dist/unstable/cluster/Sharding.js.map +1 -1
  237. package/dist/unstable/cluster/ShardingConfig.d.ts +5 -4
  238. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  239. package/dist/unstable/cluster/ShardingConfig.js +4 -4
  240. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  241. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  242. package/dist/unstable/cluster/SqlMessageStorage.js +19 -18
  243. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  244. package/dist/unstable/cluster/internal/entityManager.js +9 -10
  245. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  246. package/dist/unstable/devtools/DevToolsSchema.d.ts +2 -1
  247. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  248. package/dist/unstable/devtools/DevToolsSchema.js +1 -4
  249. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  250. package/dist/unstable/http/Cookies.d.ts +5 -4
  251. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  252. package/dist/unstable/http/Cookies.js +3 -4
  253. package/dist/unstable/http/Cookies.js.map +1 -1
  254. package/dist/unstable/http/Etag.d.ts.map +1 -1
  255. package/dist/unstable/http/Etag.js +5 -1
  256. package/dist/unstable/http/Etag.js.map +1 -1
  257. package/dist/unstable/http/Headers.d.ts +3 -2
  258. package/dist/unstable/http/Headers.d.ts.map +1 -1
  259. package/dist/unstable/http/Headers.js +2 -1
  260. package/dist/unstable/http/Headers.js.map +1 -1
  261. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  262. package/dist/unstable/http/HttpClient.js +2 -1
  263. package/dist/unstable/http/HttpClient.js.map +1 -1
  264. package/dist/unstable/http/HttpClientRequest.d.ts +4 -3
  265. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  266. package/dist/unstable/http/HttpClientRequest.js +8 -6
  267. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  268. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  269. package/dist/unstable/http/HttpClientResponse.js +2 -1
  270. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  271. package/dist/unstable/http/HttpIncomingMessage.d.ts +2 -1
  272. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  273. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  274. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  275. package/dist/unstable/http/HttpMiddleware.js +16 -15
  276. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  277. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  278. package/dist/unstable/http/HttpPlatform.js +3 -2
  279. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  280. package/dist/unstable/http/HttpRouter.d.ts +2 -1
  281. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  282. package/dist/unstable/http/HttpRouter.js +7 -7
  283. package/dist/unstable/http/HttpRouter.js.map +1 -1
  284. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  285. package/dist/unstable/http/HttpServer.js +2 -2
  286. package/dist/unstable/http/HttpServer.js.map +1 -1
  287. package/dist/unstable/http/HttpServerError.d.ts +2 -1
  288. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  289. package/dist/unstable/http/HttpServerError.js +2 -1
  290. package/dist/unstable/http/HttpServerError.js.map +1 -1
  291. package/dist/unstable/http/HttpServerRequest.d.ts +3 -2
  292. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  293. package/dist/unstable/http/HttpServerRequest.js +14 -10
  294. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  295. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  296. package/dist/unstable/http/HttpServerResponse.js +4 -3
  297. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  298. package/dist/unstable/http/HttpTraceContext.d.ts +3 -2
  299. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  300. package/dist/unstable/http/HttpTraceContext.js +27 -15
  301. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  302. package/dist/unstable/http/UrlParams.d.ts +5 -4
  303. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  304. package/dist/unstable/http/UrlParams.js +5 -6
  305. package/dist/unstable/http/UrlParams.js.map +1 -1
  306. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  307. package/dist/unstable/httpapi/HttpApiBuilder.js +4 -2
  308. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  309. package/dist/unstable/httpapi/HttpApiError.d.ts +15 -0
  310. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  311. package/dist/unstable/httpapi/HttpApiError.js +81 -3
  312. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  313. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  314. package/dist/unstable/observability/OtlpExporter.js +2 -2
  315. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  316. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  317. package/dist/unstable/observability/OtlpTracer.js +7 -3
  318. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  319. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  320. package/dist/unstable/reactivity/Atom.js +1 -5
  321. package/dist/unstable/reactivity/Atom.js.map +1 -1
  322. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  323. package/dist/unstable/reactivity/AtomRegistry.js +4 -2
  324. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  325. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  326. package/dist/unstable/rpc/Rpc.js +4 -3
  327. package/dist/unstable/rpc/Rpc.js.map +1 -1
  328. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  329. package/dist/unstable/rpc/RpcClient.js +4 -4
  330. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  331. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  332. package/dist/unstable/rpc/RpcSchema.js +3 -2
  333. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  334. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  335. package/dist/unstable/rpc/RpcSerialization.js +4 -1
  336. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  337. package/dist/unstable/rpc/RpcServer.d.ts +1 -1
  338. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  339. package/dist/unstable/rpc/RpcServer.js +3 -2
  340. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  341. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  342. package/dist/unstable/socket/Socket.js +2 -1
  343. package/dist/unstable/socket/Socket.js.map +1 -1
  344. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  345. package/dist/unstable/sql/SqlClient.js +1 -1
  346. package/dist/unstable/sql/SqlClient.js.map +1 -1
  347. package/dist/unstable/workflow/DurableDeferred.js +6 -6
  348. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  349. package/dist/unstable/workflow/Workflow.d.ts +2 -1
  350. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  351. package/dist/unstable/workflow/WorkflowEngine.d.ts +5 -4
  352. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  353. package/dist/unstable/workflow/WorkflowEngine.js +19 -14
  354. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  355. package/package.json +1 -1
  356. package/src/Array.ts +112 -105
  357. package/src/BigDecimal.ts +63 -66
  358. package/src/BigInt.ts +49 -41
  359. package/src/Chunk.ts +68 -63
  360. package/src/Config.ts +4 -1
  361. package/src/Cron.ts +10 -15
  362. package/src/DateTime.ts +16 -15
  363. package/src/Deferred.ts +8 -6
  364. package/src/Duration.ts +34 -33
  365. package/src/Effect.ts +3 -4
  366. package/src/Fiber.ts +2 -1
  367. package/src/FiberHandle.ts +10 -9
  368. package/src/FiberMap.ts +22 -22
  369. package/src/FileSystem.ts +25 -22
  370. package/src/Graph.ts +105 -105
  371. package/src/HashMap.ts +11 -5
  372. package/src/Iterable.ts +13 -13
  373. package/src/Latch.ts +85 -3
  374. package/src/Layer.ts +121 -0
  375. package/src/Number.ts +85 -26
  376. package/src/Option.ts +2 -0
  377. package/src/PartitionedSemaphore.ts +414 -0
  378. package/src/PubSub.ts +7 -6
  379. package/src/Queue.ts +5 -5
  380. package/src/Record.ts +52 -47
  381. package/src/Scheduler.ts +37 -126
  382. package/src/Schema.ts +49 -1
  383. package/src/SchemaGetter.ts +4 -4
  384. package/src/SchemaTransformation.ts +27 -27
  385. package/src/Semaphore.ts +271 -183
  386. package/src/ServiceMap.ts +83 -31
  387. package/src/Stream.ts +1 -1
  388. package/src/String.ts +122 -69
  389. package/src/SubscriptionRef.ts +96 -117
  390. package/src/Terminal.ts +2 -1
  391. package/src/Tracer.ts +6 -5
  392. package/src/Trie.ts +26 -14
  393. package/src/TxHashMap.ts +78 -60
  394. package/src/TxSemaphore.ts +186 -11
  395. package/src/index.ts +89 -33
  396. package/src/internal/dateTime.ts +14 -14
  397. package/src/internal/effect.ts +29 -121
  398. package/src/internal/hashMap.ts +4 -3
  399. package/src/internal/option.ts +7 -0
  400. package/src/internal/trie.ts +6 -6
  401. package/src/unstable/ai/AiError.ts +1 -1
  402. package/src/unstable/ai/AnthropicStructuredOutput.ts +4 -0
  403. package/src/unstable/ai/Chat.ts +6 -2
  404. package/src/unstable/ai/OpenAiStructuredOutput.ts +4 -0
  405. package/src/unstable/ai/Tool.ts +20 -0
  406. package/src/unstable/cli/Argument.ts +2 -4
  407. package/src/unstable/cli/CliOutput.ts +7 -5
  408. package/src/unstable/cli/Command.ts +5 -5
  409. package/src/unstable/cli/Flag.ts +2 -2
  410. package/src/unstable/cli/HelpDoc.ts +14 -12
  411. package/src/unstable/cli/Param.ts +15 -11
  412. package/src/unstable/cli/Primitive.ts +1 -1
  413. package/src/unstable/cli/Prompt.ts +81 -83
  414. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +3 -2
  415. package/src/unstable/cli/internal/parser.ts +7 -4
  416. package/src/unstable/cluster/ClusterWorkflowEngine.ts +35 -30
  417. package/src/unstable/cluster/Entity.ts +13 -12
  418. package/src/unstable/cluster/Message.ts +6 -5
  419. package/src/unstable/cluster/MessageStorage.ts +26 -25
  420. package/src/unstable/cluster/Reply.ts +7 -4
  421. package/src/unstable/cluster/RunnerServer.ts +10 -13
  422. package/src/unstable/cluster/Runners.ts +8 -7
  423. package/src/unstable/cluster/Sharding.ts +24 -17
  424. package/src/unstable/cluster/ShardingConfig.ts +6 -6
  425. package/src/unstable/cluster/SqlMessageStorage.ts +21 -18
  426. package/src/unstable/cluster/internal/entityManager.ts +27 -21
  427. package/src/unstable/devtools/DevToolsSchema.ts +3 -2
  428. package/src/unstable/http/Cookies.ts +7 -8
  429. package/src/unstable/http/Etag.ts +5 -3
  430. package/src/unstable/http/Headers.ts +6 -5
  431. package/src/unstable/http/HttpClient.ts +2 -1
  432. package/src/unstable/http/HttpClientRequest.ts +11 -9
  433. package/src/unstable/http/HttpClientResponse.ts +3 -2
  434. package/src/unstable/http/HttpIncomingMessage.ts +2 -1
  435. package/src/unstable/http/HttpMiddleware.ts +16 -15
  436. package/src/unstable/http/HttpPlatform.ts +3 -2
  437. package/src/unstable/http/HttpRouter.ts +9 -9
  438. package/src/unstable/http/HttpServer.ts +3 -9
  439. package/src/unstable/http/HttpServerError.ts +3 -2
  440. package/src/unstable/http/HttpServerRequest.ts +25 -21
  441. package/src/unstable/http/HttpServerResponse.ts +5 -4
  442. package/src/unstable/http/HttpTraceContext.ts +31 -17
  443. package/src/unstable/http/UrlParams.ts +11 -14
  444. package/src/unstable/httpapi/HttpApiBuilder.ts +9 -3
  445. package/src/unstable/httpapi/HttpApiError.ts +67 -12
  446. package/src/unstable/observability/OtlpExporter.ts +5 -2
  447. package/src/unstable/observability/OtlpTracer.ts +8 -4
  448. package/src/unstable/reactivity/Atom.ts +1 -4
  449. package/src/unstable/reactivity/AtomRegistry.ts +5 -3
  450. package/src/unstable/rpc/Rpc.ts +4 -3
  451. package/src/unstable/rpc/RpcClient.ts +10 -9
  452. package/src/unstable/rpc/RpcSchema.ts +6 -5
  453. package/src/unstable/rpc/RpcSerialization.ts +4 -1
  454. package/src/unstable/rpc/RpcServer.ts +3 -3
  455. package/src/unstable/socket/Socket.ts +2 -1
  456. package/src/unstable/sql/SqlClient.ts +5 -3
  457. package/src/unstable/workflow/DurableDeferred.ts +6 -6
  458. package/src/unstable/workflow/Workflow.ts +1 -1
  459. package/src/unstable/workflow/WorkflowEngine.ts +29 -20
  460. package/dist/NullOr.d.ts +0 -149
  461. package/dist/NullOr.d.ts.map +0 -1
  462. package/dist/NullOr.js +0 -152
  463. package/dist/NullOr.js.map +0 -1
  464. package/src/NullOr.ts +0 -204
package/src/Duration.ts CHANGED
@@ -20,12 +20,12 @@ import { dual, identity } from "./Function.ts"
20
20
  import * as Hash from "./Hash.ts"
21
21
  import type * as Inspectable from "./Inspectable.ts"
22
22
  import { NodeInspectSymbol } from "./Inspectable.ts"
23
+ import * as Option from "./Option.ts"
23
24
  import * as order from "./Order.ts"
24
25
  import type { Pipeable } from "./Pipeable.ts"
25
26
  import { pipeArguments } from "./Pipeable.ts"
26
27
  import { hasProperty, isNumber } from "./Predicate.ts"
27
28
  import * as Reducer from "./Reducer.ts"
28
- import * as UndefinedOr from "./UndefinedOr.ts"
29
29
 
30
30
  const TypeId = "~effect/time/Duration"
31
31
 
@@ -228,22 +228,22 @@ const invalid = (input: unknown): never => {
228
228
 
229
229
  /**
230
230
  * Safely decodes a `Input` value into a `Duration`, returning
231
- * `undefined` if decoding fails.
231
+ * `Option.none()` if decoding fails.
232
232
  *
233
233
  * **Example**
234
234
  *
235
235
  * ```ts
236
- * import { Duration } from "effect"
236
+ * import { Duration, Option } from "effect"
237
237
  *
238
- * Duration.fromInput(1000)?.pipe(Duration.toSeconds) // 1
238
+ * Duration.fromInput(1000).pipe(Option.map(Duration.toSeconds)) // Some(1)
239
239
  *
240
- * Duration.fromInput("invalid" as any) // undefined
240
+ * Duration.fromInput("invalid" as any) // None
241
241
  * ```
242
242
  *
243
243
  * @category constructors
244
244
  * @since 4.0.0
245
245
  */
246
- export const fromInput: (u: Input) => Duration | undefined = UndefinedOr.liftThrowable(
246
+ export const fromInput: (u: Input) => Option.Option<Duration> = Option.liftThrowable(
247
247
  fromInputUnsafe
248
248
  )
249
249
 
@@ -823,22 +823,23 @@ export const toNanosUnsafe = (self: Duration): bigint => {
823
823
  /**
824
824
  * Get the duration in nanoseconds as a bigint.
825
825
  *
826
- * If the duration is infinite, returns `undefined`.
826
+ * If the duration is infinite, returns `Option.none()`.
827
827
  *
828
828
  * **Example**
829
829
  *
830
830
  * ```ts
831
- * import { Duration } from "effect"
831
+ * import { Duration, Option } from "effect"
832
832
  *
833
- * Duration.toNanos(Duration.seconds(1)) // 1000000000n
833
+ * Duration.toNanos(Duration.seconds(1)) // Some(1000000000n)
834
834
  *
835
- * Duration.toNanos(Duration.infinity) // undefined
835
+ * Duration.toNanos(Duration.infinity) // None
836
+ * Option.getOrUndefined(Duration.toNanos(Duration.infinity)) // undefined
836
837
  * ```
837
838
  *
838
839
  * @category getters
839
840
  * @since 4.0.0
840
841
  */
841
- export const toNanos: (self: Duration) => bigint | undefined = UndefinedOr.liftThrowable(toNanosUnsafe)
842
+ export const toNanos: (self: Duration) => Option.Option<bigint> = Option.liftThrowable(toNanosUnsafe)
842
843
 
843
844
  /**
844
845
  * Converts a Duration to high-resolution time format [seconds, nanoseconds].
@@ -1334,17 +1335,17 @@ export const clamp: {
1334
1335
  } = order.clamp(Order)
1335
1336
 
1336
1337
  /**
1337
- * Divides a Duration by a number, returning `undefined` if division is invalid.
1338
+ * Divides a Duration by a number, returning `Option.none()` if division is invalid.
1338
1339
  *
1339
1340
  * **Example**
1340
1341
  *
1341
1342
  * ```ts
1342
- * import { Duration } from "effect"
1343
+ * import { Duration, Option } from "effect"
1343
1344
  *
1344
1345
  * const d = Duration.divide(Duration.seconds(10), 2)
1345
- * console.log(d?.pipe(Duration.toSeconds)) // 5
1346
+ * console.log(Option.map(d, Duration.toSeconds)) // Some(5)
1346
1347
  *
1347
- * Duration.divide(Duration.seconds(10), 0) // undefined
1348
+ * Duration.divide(Duration.seconds(10), 0) // None
1348
1349
  * ```
1349
1350
  *
1350
1351
  * @since 4.0.0
@@ -1352,57 +1353,57 @@ export const clamp: {
1352
1353
  */
1353
1354
  export const divide: {
1354
1355
  /**
1355
- * Divides a Duration by a number, returning `undefined` if division is invalid.
1356
+ * Divides a Duration by a number, returning `Option.none()` if division is invalid.
1356
1357
  *
1357
1358
  * **Example**
1358
1359
  *
1359
1360
  * ```ts
1360
- * import { Duration } from "effect"
1361
+ * import { Duration, Option } from "effect"
1361
1362
  *
1362
1363
  * const d = Duration.divide(Duration.seconds(10), 2)
1363
- * console.log(d?.pipe(Duration.toSeconds)) // 5
1364
+ * console.log(Option.map(d, Duration.toSeconds)) // Some(5)
1364
1365
  *
1365
- * Duration.divide(Duration.seconds(10), 0) // undefined
1366
+ * Duration.divide(Duration.seconds(10), 0) // None
1366
1367
  * ```
1367
1368
  *
1368
1369
  * @since 4.0.0
1369
1370
  * @category math
1370
1371
  */
1371
- (by: number): (self: Duration) => Duration | undefined
1372
+ (by: number): (self: Duration) => Option.Option<Duration>
1372
1373
  /**
1373
- * Divides a Duration by a number, returning `undefined` if division is invalid.
1374
+ * Divides a Duration by a number, returning `Option.none()` if division is invalid.
1374
1375
  *
1375
1376
  * **Example**
1376
1377
  *
1377
1378
  * ```ts
1378
- * import { Duration } from "effect"
1379
+ * import { Duration, Option } from "effect"
1379
1380
  *
1380
1381
  * const d = Duration.divide(Duration.seconds(10), 2)
1381
- * console.log(d?.pipe(Duration.toSeconds)) // 5
1382
+ * console.log(Option.map(d, Duration.toSeconds)) // Some(5)
1382
1383
  *
1383
- * Duration.divide(Duration.seconds(10), 0) // undefined
1384
+ * Duration.divide(Duration.seconds(10), 0) // None
1384
1385
  * ```
1385
1386
  *
1386
1387
  * @since 4.0.0
1387
1388
  * @category math
1388
1389
  */
1389
- (self: Duration, by: number): Duration | undefined
1390
+ (self: Duration, by: number): Option.Option<Duration>
1390
1391
  } = dual(
1391
1392
  2,
1392
- (self: Duration, by: number): Duration | undefined => {
1393
- if (!Number.isFinite(by)) return undefined
1394
- if (by === 0 || Object.is(by, -0)) return undefined
1393
+ (self: Duration, by: number): Option.Option<Duration> => {
1394
+ if (!Number.isFinite(by)) return Option.none()
1395
+ if (by === 0 || Object.is(by, -0)) return Option.none()
1395
1396
  return match(self, {
1396
- onMillis: (millis) => make(millis / by),
1397
+ onMillis: (millis) => Option.some(make(millis / by)),
1397
1398
  onNanos: (nanos) => {
1398
1399
  try {
1399
- return make(nanos / BigInt(by))
1400
+ return Option.some(make(nanos / BigInt(by)))
1400
1401
  } catch {
1401
- return undefined
1402
+ return Option.none()
1402
1403
  }
1403
1404
  },
1404
- onInfinity: () => by > 0 ? infinity : negativeInfinity,
1405
- onNegativeInfinity: () => by > 0 ? negativeInfinity : infinity
1405
+ onInfinity: () => Option.some(by > 0 ? infinity : negativeInfinity),
1406
+ onNegativeInfinity: () => Option.some(by > 0 ? negativeInfinity : infinity)
1406
1407
  })
1407
1408
  }
1408
1409
  )
package/src/Effect.ts CHANGED
@@ -22729,7 +22729,6 @@ export const transactionWith = <A, E, R>(
22729
22729
  withFiber((fiber) => {
22730
22730
  // Always create a new transaction state, never compose with parent
22731
22731
  const state: Transaction["Service"] = { journal: new Map(), retry: false }
22732
- const scheduler = fiber.currentScheduler
22733
22732
  let result: Exit.Exit<A, E> | undefined
22734
22733
  return uninterruptibleMask((restore) =>
22735
22734
  flatMap(
@@ -22750,7 +22749,7 @@ export const transactionWith = <A, E, R>(
22750
22749
  return clearTransaction(state)
22751
22750
  }
22752
22751
  if (Exit.isSuccess(exit)) {
22753
- commitTransaction(scheduler, state)
22752
+ commitTransaction(fiber, state)
22754
22753
  } else {
22755
22754
  clearTransaction(state)
22756
22755
  }
@@ -22792,14 +22791,14 @@ const awaitPendingTransaction = (state: Transaction["Service"]) =>
22792
22791
  })
22793
22792
  })
22794
22793
 
22795
- function commitTransaction(scheduler: Scheduler, state: Transaction["Service"]) {
22794
+ function commitTransaction(fiber: Fiber<unknown, unknown>, state: Transaction["Service"]) {
22796
22795
  for (const [ref, { value }] of state.journal) {
22797
22796
  if (value !== ref.value) {
22798
22797
  ref.version = ref.version + 1
22799
22798
  ref.value = value
22800
22799
  }
22801
22800
  for (const pending of ref.pending.values()) {
22802
- scheduler.scheduleTask(pending, 0)
22801
+ fiber.currentDispatcher.scheduleTask(pending, 0)
22803
22802
  }
22804
22803
  ref.pending.clear()
22805
22804
  }
package/src/Fiber.ts CHANGED
@@ -81,7 +81,7 @@ import type { LogLevel } from "./LogLevel.ts"
81
81
  import type { Pipeable } from "./Pipeable.ts"
82
82
  import { hasProperty } from "./Predicate.ts"
83
83
  import type { StackFrame } from "./References.ts"
84
- import type { Scheduler } from "./Scheduler.ts"
84
+ import type { Scheduler, SchedulerDispatcher } from "./Scheduler.ts"
85
85
  import type { Scope } from "./Scope.ts"
86
86
  import type * as ServiceMap from "./ServiceMap.ts"
87
87
  import type { AnySpan } from "./Tracer.ts"
@@ -123,6 +123,7 @@ export interface Fiber<out A, out E = never> extends Pipeable {
123
123
  readonly services: ServiceMap.ServiceMap<never>
124
124
  setServices(services: ServiceMap.ServiceMap<never>): void
125
125
  readonly currentScheduler: Scheduler
126
+ readonly currentDispatcher: SchedulerDispatcher
126
127
  readonly currentSpan?: AnySpan | undefined
127
128
  readonly currentLogLevel: LogLevel
128
129
  readonly minimumLogLevel: LogLevel
@@ -10,6 +10,7 @@ import * as Filter from "./Filter.ts"
10
10
  import { dual } from "./Function.ts"
11
11
  import type * as Inspectable from "./Inspectable.ts"
12
12
  import { PipeInspectableProto } from "./internal/core.ts"
13
+ import * as Option from "./Option.ts"
13
14
  import type { Pipeable } from "./Pipeable.ts"
14
15
  import * as Predicate from "./Predicate.ts"
15
16
  import type { Scheduler } from "./Scheduler.ts"
@@ -467,20 +468,20 @@ export const set: {
467
468
  *
468
469
  * // No fiber initially
469
470
  * const emptyFiber = FiberHandle.getUnsafe(handle)
470
- * console.log(emptyFiber === undefined) // true
471
+ * console.log(emptyFiber._tag === "None") // true
471
472
  *
472
473
  * // Add a fiber
473
474
  * yield* FiberHandle.run(handle, Effect.succeed("hello"))
474
475
  * const fiber = FiberHandle.getUnsafe(handle)
475
- * console.log(fiber !== undefined) // true
476
+ * console.log(fiber._tag === "Some") // true
476
477
  * })
477
478
  * ```
478
479
  *
479
480
  * @since 2.0.0
480
481
  * @category combinators
481
482
  */
482
- export function getUnsafe<A, E>(self: FiberHandle<A, E>): Fiber.Fiber<A, E> | undefined {
483
- return self.state._tag === "Closed" ? undefined : self.state.fiber
483
+ export function getUnsafe<A, E>(self: FiberHandle<A, E>): Option.Option<Fiber.Fiber<A, E>> {
484
+ return self.state._tag === "Closed" ? Option.none() : Option.fromUndefinedOr(self.state.fiber)
484
485
  }
485
486
 
486
487
  /**
@@ -496,10 +497,10 @@ export function getUnsafe<A, E>(self: FiberHandle<A, E>): Fiber.Fiber<A, E> | un
496
497
  * // Add a fiber
497
498
  * yield* FiberHandle.run(handle, Effect.succeed("hello"))
498
499
  *
499
- * // Get the fiber (fails if no fiber)
500
+ * // Get the current fiber if present
500
501
  * const fiber = yield* FiberHandle.get(handle)
501
- * if (fiber) {
502
- * const result = yield* Fiber.await(fiber)
502
+ * if (fiber._tag === "Some") {
503
+ * const result = yield* Fiber.await(fiber.value)
503
504
  * console.log(result) // "hello"
504
505
  * }
505
506
  * })
@@ -508,7 +509,7 @@ export function getUnsafe<A, E>(self: FiberHandle<A, E>): Fiber.Fiber<A, E> | un
508
509
  * @since 2.0.0
509
510
  * @category combinators
510
511
  */
511
- export function get<A, E>(self: FiberHandle<A, E>): Effect.Effect<Fiber.Fiber<A, E> | undefined> {
512
+ export function get<A, E>(self: FiberHandle<A, E>): Effect.Effect<Option.Option<Fiber.Fiber<A, E>>> {
512
513
  return Effect.suspend(() => Effect.succeed(getUnsafe(self)))
513
514
  }
514
515
 
@@ -528,7 +529,7 @@ export function get<A, E>(self: FiberHandle<A, E>): Effect.Effect<Fiber.Fiber<A,
528
529
  *
529
530
  * // The handle is now empty
530
531
  * const fiber = FiberHandle.getUnsafe(handle)
531
- * console.log(fiber) // undefined
532
+ * console.log(fiber) // Option.none()
532
533
  * })
533
534
  * ```
534
535
  *
package/src/FiberMap.ts CHANGED
@@ -500,8 +500,8 @@ export const set: {
500
500
  *
501
501
  * // Retrieve the fiber
502
502
  * const retrieved = FiberMap.getUnsafe(map, "greeting")
503
- * if (retrieved) {
504
- * const result = yield* Fiber.await(retrieved)
503
+ * if (retrieved._tag === "Some") {
504
+ * const result = yield* Fiber.await(retrieved.value)
505
505
  * console.log(result) // "Hello"
506
506
  * }
507
507
  * })
@@ -527,8 +527,8 @@ export const getUnsafe: {
527
527
  *
528
528
  * // Retrieve the fiber
529
529
  * const retrieved = FiberMap.getUnsafe(map, "greeting")
530
- * if (retrieved) {
531
- * const result = yield* Fiber.await(retrieved)
530
+ * if (retrieved._tag === "Some") {
531
+ * const result = yield* Fiber.await(retrieved.value)
532
532
  * console.log(result) // "Hello"
533
533
  * }
534
534
  * })
@@ -537,7 +537,7 @@ export const getUnsafe: {
537
537
  * @since 2.0.0
538
538
  * @category combinators
539
539
  */
540
- <K>(key: K): <A, E>(self: FiberMap<K, A, E>) => Fiber.Fiber<A, E> | undefined
540
+ <K>(key: K): <A, E>(self: FiberMap<K, A, E>) => Option.Option<Fiber.Fiber<A, E>>
541
541
  /**
542
542
  * Retrieve a fiber from the FiberMap.
543
543
  *
@@ -554,8 +554,8 @@ export const getUnsafe: {
554
554
  *
555
555
  * // Retrieve the fiber
556
556
  * const retrieved = FiberMap.getUnsafe(map, "greeting")
557
- * if (retrieved) {
558
- * const result = yield* Fiber.await(retrieved)
557
+ * if (retrieved._tag === "Some") {
558
+ * const result = yield* Fiber.await(retrieved.value)
559
559
  * console.log(result) // "Hello"
560
560
  * }
561
561
  * })
@@ -564,18 +564,18 @@ export const getUnsafe: {
564
564
  * @since 2.0.0
565
565
  * @category combinators
566
566
  */
567
- <K, A, E>(self: FiberMap<K, A, E>, key: K): Fiber.Fiber<A, E> | undefined
567
+ <K, A, E>(self: FiberMap<K, A, E>, key: K): Option.Option<Fiber.Fiber<A, E>>
568
568
  } = dual(
569
569
  2,
570
- <K, A, E>(self: FiberMap<K, A, E>, key: K): Fiber.Fiber<A, E> | undefined => {
571
- return self.state._tag === "Closed" ? undefined : Option.getOrUndefined(MutableHashMap.get(self.state.backing, key))
570
+ <K, A, E>(self: FiberMap<K, A, E>, key: K): Option.Option<Fiber.Fiber<A, E>> => {
571
+ return self.state._tag === "Closed" ? Option.none() : MutableHashMap.get(self.state.backing, key)
572
572
  }
573
573
  )
574
574
 
575
575
  /**
576
576
  * Retrieve a fiber from the FiberMap.
577
577
  *
578
- * Returns an Effect that fails with `NoSuchElementError` if the key is not found.
578
+ * Returns an `Option` wrapped in `Effect`.
579
579
  *
580
580
  * @example
581
581
  * ```ts
@@ -590,8 +590,8 @@ export const getUnsafe: {
590
590
  *
591
591
  * // Retrieve the fiber with error handling
592
592
  * const retrieved = yield* FiberMap.get(map, "greeting")
593
- * if (retrieved) {
594
- * const result = yield* Fiber.await(retrieved)
593
+ * if (retrieved._tag === "Some") {
594
+ * const result = yield* Fiber.await(retrieved.value)
595
595
  * console.log(result) // "Hello"
596
596
  * }
597
597
  * })
@@ -604,7 +604,7 @@ export const get: {
604
604
  /**
605
605
  * Retrieve a fiber from the FiberMap.
606
606
  *
607
- * Returns an Effect that fails with `NoSuchElementError` if the key is not found.
607
+ * Returns an `Option` wrapped in `Effect`.
608
608
  *
609
609
  * @example
610
610
  * ```ts
@@ -619,8 +619,8 @@ export const get: {
619
619
  *
620
620
  * // Retrieve the fiber with error handling
621
621
  * const retrieved = yield* FiberMap.get(map, "greeting")
622
- * if (retrieved) {
623
- * const result = yield* Fiber.await(retrieved)
622
+ * if (retrieved._tag === "Some") {
623
+ * const result = yield* Fiber.await(retrieved.value)
624
624
  * console.log(result) // "Hello"
625
625
  * }
626
626
  * })
@@ -629,11 +629,11 @@ export const get: {
629
629
  * @since 2.0.0
630
630
  * @category combinators
631
631
  */
632
- <K>(key: K): <A, E>(self: FiberMap<K, A, E>) => Effect.Effect<Fiber.Fiber<A, E> | undefined>
632
+ <K>(key: K): <A, E>(self: FiberMap<K, A, E>) => Effect.Effect<Option.Option<Fiber.Fiber<A, E>>>
633
633
  /**
634
634
  * Retrieve a fiber from the FiberMap.
635
635
  *
636
- * Returns an Effect that fails with `NoSuchElementError` if the key is not found.
636
+ * Returns an `Option` wrapped in `Effect`.
637
637
  *
638
638
  * @example
639
639
  * ```ts
@@ -648,8 +648,8 @@ export const get: {
648
648
  *
649
649
  * // Retrieve the fiber with error handling
650
650
  * const retrieved = yield* FiberMap.get(map, "greeting")
651
- * if (retrieved) {
652
- * const result = yield* Fiber.await(retrieved)
651
+ * if (retrieved._tag === "Some") {
652
+ * const result = yield* Fiber.await(retrieved.value)
653
653
  * console.log(result) // "Hello"
654
654
  * }
655
655
  * })
@@ -658,10 +658,10 @@ export const get: {
658
658
  * @since 2.0.0
659
659
  * @category combinators
660
660
  */
661
- <K, A, E>(self: FiberMap<K, A, E>, key: K): Effect.Effect<Fiber.Fiber<A, E> | undefined>
661
+ <K, A, E>(self: FiberMap<K, A, E>, key: K): Effect.Effect<Option.Option<Fiber.Fiber<A, E>>>
662
662
  } = dual(
663
663
  2,
664
- <K, A, E>(self: FiberMap<K, A, E>, key: K): Effect.Effect<Fiber.Fiber<A, E> | undefined> =>
664
+ <K, A, E>(self: FiberMap<K, A, E>, key: K): Effect.Effect<Option.Option<Fiber.Fiber<A, E>>> =>
665
665
  Effect.suspend(() => Effect.succeed(getUnsafe(self, key)))
666
666
  )
667
667
 
package/src/FileSystem.ts CHANGED
@@ -41,6 +41,7 @@ import * as Cause from "./Cause.ts"
41
41
  import * as Effect from "./Effect.ts"
42
42
  import { pipe } from "./Function.ts"
43
43
  import * as Layer from "./Layer.ts"
44
+ import * as Option from "./Option.ts"
44
45
  import { badArgument, type PlatformError, systemError } from "./PlatformError.ts"
45
46
  import type * as Pull from "./Pull.ts"
46
47
  import type { Scope } from "./Scope.ts"
@@ -759,7 +760,7 @@ export const make = (
759
760
  const readChunk = file.readAlloc(chunkSize)
760
761
  return Stream.fromPull(Effect.succeed(
761
762
  Effect.flatMap(
762
- Effect.suspend((): Pull.Pull<Uint8Array | undefined, PlatformError> => {
763
+ Effect.suspend((): Pull.Pull<Option.Option<Uint8Array>, PlatformError> => {
763
764
  if (bytesToRead !== undefined && bytesToRead <= totalBytesRead) {
764
765
  return Cause.done()
765
766
  }
@@ -767,11 +768,13 @@ export const make = (
767
768
  ? file.readAlloc(bytesToRead - totalBytesRead)
768
769
  : readChunk
769
770
  }),
770
- (buf) => {
771
- if (!buf) return Cause.done()
772
- totalBytesRead += BigInt(buf.length)
773
- return Effect.succeed(Arr.of(buf))
774
- }
771
+ Option.match({
772
+ onNone: () => Cause.done(),
773
+ onSome: (buf) => {
774
+ totalBytesRead += BigInt(buf.length)
775
+ return Effect.succeed(Arr.of(buf))
776
+ }
777
+ })
775
778
  )
776
779
  ))
777
780
  }, Stream.unwrap),
@@ -1046,7 +1049,7 @@ export interface File {
1046
1049
  readonly seek: (offset: SizeInput, from: SeekMode) => Effect.Effect<void>
1047
1050
  readonly sync: Effect.Effect<void, PlatformError>
1048
1051
  readonly read: (buffer: Uint8Array) => Effect.Effect<Size, PlatformError>
1049
- readonly readAlloc: (size: SizeInput) => Effect.Effect<Uint8Array | undefined, PlatformError>
1052
+ readonly readAlloc: (size: SizeInput) => Effect.Effect<Option.Option<Uint8Array>, PlatformError>
1050
1053
  readonly truncate: (length?: SizeInput) => Effect.Effect<void, PlatformError>
1051
1054
  readonly write: (buffer: Uint8Array) => Effect.Effect<Size, PlatformError>
1052
1055
  readonly writeAll: (buffer: Uint8Array) => Effect.Effect<void, PlatformError>
@@ -1096,7 +1099,7 @@ export declare namespace File {
1096
1099
  *
1097
1100
  * @example
1098
1101
  * ```ts
1099
- * import { Console, Effect, FileSystem } from "effect"
1102
+ * import { Console, Effect, FileSystem, Option } from "effect"
1100
1103
  *
1101
1104
  * const program = Effect.gen(function*() {
1102
1105
  * const fs = yield* FileSystem.FileSystem
@@ -1108,7 +1111,7 @@ export declare namespace File {
1108
1111
  * yield* Console.log(`Mode: ${info.mode.toString(8)}`) // Octal permissions
1109
1112
  *
1110
1113
  * // Handle optional timestamps
1111
- * const mtime = info.mtime ?? new Date(0)
1114
+ * const mtime = Option.getOrElse(info.mtime, () => new Date(0))
1112
1115
  * yield* Console.log(`Modified: ${mtime.toISOString()}`)
1113
1116
  *
1114
1117
  * // Check if it's a regular file
@@ -1123,19 +1126,19 @@ export declare namespace File {
1123
1126
  */
1124
1127
  export interface Info {
1125
1128
  readonly type: Type
1126
- readonly mtime: Date | undefined
1127
- readonly atime: Date | undefined
1128
- readonly birthtime: Date | undefined
1129
+ readonly mtime: Option.Option<Date>
1130
+ readonly atime: Option.Option<Date>
1131
+ readonly birthtime: Option.Option<Date>
1129
1132
  readonly dev: number
1130
- readonly ino: number | undefined
1133
+ readonly ino: Option.Option<number>
1131
1134
  readonly mode: number
1132
- readonly nlink: number | undefined
1133
- readonly uid: number | undefined
1134
- readonly gid: number | undefined
1135
- readonly rdev: number | undefined
1135
+ readonly nlink: Option.Option<number>
1136
+ readonly uid: Option.Option<number>
1137
+ readonly gid: Option.Option<number>
1138
+ readonly rdev: Option.Option<number>
1136
1139
  readonly size: Size
1137
- readonly blksize: Size | undefined
1138
- readonly blocks: number | undefined
1140
+ readonly blksize: Option.Option<Size>
1141
+ readonly blocks: Option.Option<number>
1139
1142
  }
1140
1143
  }
1141
1144
 
@@ -1226,13 +1229,13 @@ export declare namespace WatchEvent {
1226
1229
  *
1227
1230
  * @example
1228
1231
  * ```ts
1229
- * import { Effect, FileSystem, Stream } from "effect"
1232
+ * import { Effect, FileSystem, Option, Stream } from "effect"
1230
1233
  *
1231
1234
  * // Custom watch backend implementation
1232
1235
  * const customWatchBackend = {
1233
1236
  * register: (path: string, stat: FileSystem.File.Info) => {
1234
1237
  * // Implementation would depend on platform
1235
- * return Stream.empty // Placeholder implementation
1238
+ * return Option.some(Stream.empty) // Placeholder implementation
1236
1239
  * }
1237
1240
  * }
1238
1241
  *
@@ -1255,5 +1258,5 @@ export declare namespace WatchEvent {
1255
1258
  * @category file watcher
1256
1259
  */
1257
1260
  export class WatchBackend extends ServiceMap.Service<WatchBackend, {
1258
- readonly register: (path: string, stat: File.Info) => Stream.Stream<WatchEvent, PlatformError> | undefined
1261
+ readonly register: (path: string, stat: File.Info) => Option.Option<Stream.Stream<WatchEvent, PlatformError>>
1259
1262
  }>()("effect/platform/FileSystem/WatchBackend") {}