effect 4.0.0-beta.30 → 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 (514) 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/Channel.d.ts +2 -2
  14. package/dist/Channel.d.ts.map +1 -1
  15. package/dist/Channel.js.map +1 -1
  16. package/dist/Chunk.d.ts +58 -57
  17. package/dist/Chunk.d.ts.map +1 -1
  18. package/dist/Chunk.js +20 -21
  19. package/dist/Chunk.js.map +1 -1
  20. package/dist/Config.d.ts.map +1 -1
  21. package/dist/Config.js +4 -1
  22. package/dist/Config.js.map +1 -1
  23. package/dist/Cron.d.ts +3 -6
  24. package/dist/Cron.d.ts.map +1 -1
  25. package/dist/Cron.js +11 -18
  26. package/dist/Cron.js.map +1 -1
  27. package/dist/DateTime.d.ts +49 -92
  28. package/dist/DateTime.d.ts.map +1 -1
  29. package/dist/DateTime.js +9 -9
  30. package/dist/DateTime.js.map +1 -1
  31. package/dist/Deferred.d.ts +7 -5
  32. package/dist/Deferred.d.ts.map +1 -1
  33. package/dist/Deferred.js +7 -5
  34. package/dist/Deferred.js.map +1 -1
  35. package/dist/Duration.d.ts +55 -25
  36. package/dist/Duration.d.ts.map +1 -1
  37. package/dist/Duration.js +100 -70
  38. package/dist/Duration.js.map +1 -1
  39. package/dist/Effect.d.ts.map +1 -1
  40. package/dist/Effect.js +3 -4
  41. package/dist/Effect.js.map +1 -1
  42. package/dist/Fiber.d.ts +2 -1
  43. package/dist/Fiber.d.ts.map +1 -1
  44. package/dist/Fiber.js.map +1 -1
  45. package/dist/FiberHandle.d.ts +9 -8
  46. package/dist/FiberHandle.d.ts.map +1 -1
  47. package/dist/FiberHandle.js +8 -7
  48. package/dist/FiberHandle.js.map +1 -1
  49. package/dist/FiberMap.d.ts +20 -19
  50. package/dist/FiberMap.d.ts.map +1 -1
  51. package/dist/FiberMap.js +6 -6
  52. package/dist/FiberMap.js.map +1 -1
  53. package/dist/FileSystem.d.ts +17 -16
  54. package/dist/FileSystem.d.ts.map +1 -1
  55. package/dist/FileSystem.js +10 -7
  56. package/dist/FileSystem.js.map +1 -1
  57. package/dist/Graph.d.ts +64 -64
  58. package/dist/Graph.d.ts.map +1 -1
  59. package/dist/Graph.js +53 -53
  60. package/dist/Graph.js.map +1 -1
  61. package/dist/HashMap.d.ts +11 -5
  62. package/dist/HashMap.d.ts.map +1 -1
  63. package/dist/HashMap.js +3 -1
  64. package/dist/HashMap.js.map +1 -1
  65. package/dist/Iterable.d.ts +11 -11
  66. package/dist/Iterable.d.ts.map +1 -1
  67. package/dist/Iterable.js +12 -12
  68. package/dist/Iterable.js.map +1 -1
  69. package/dist/Latch.d.ts +69 -3
  70. package/dist/Latch.d.ts.map +1 -1
  71. package/dist/Latch.js +58 -0
  72. package/dist/Latch.js.map +1 -1
  73. package/dist/Layer.d.ts +181 -2
  74. package/dist/Layer.d.ts.map +1 -1
  75. package/dist/Layer.js +35 -2
  76. package/dist/Layer.js.map +1 -1
  77. package/dist/Number.d.ts +74 -18
  78. package/dist/Number.d.ts.map +1 -1
  79. package/dist/Number.js +34 -15
  80. package/dist/Number.js.map +1 -1
  81. package/dist/Option.d.ts +2 -0
  82. package/dist/Option.d.ts.map +1 -1
  83. package/dist/Option.js.map +1 -1
  84. package/dist/PartitionedSemaphore.d.ts +183 -0
  85. package/dist/PartitionedSemaphore.d.ts.map +1 -0
  86. package/dist/PartitionedSemaphore.js +231 -0
  87. package/dist/PartitionedSemaphore.js.map +1 -0
  88. package/dist/PubSub.d.ts +5 -4
  89. package/dist/PubSub.d.ts.map +1 -1
  90. package/dist/PubSub.js +6 -5
  91. package/dist/PubSub.js.map +1 -1
  92. package/dist/Queue.d.ts +3 -3
  93. package/dist/Queue.d.ts.map +1 -1
  94. package/dist/Queue.js +2 -2
  95. package/dist/Queue.js.map +1 -1
  96. package/dist/Record.d.ts +40 -40
  97. package/dist/Record.d.ts.map +1 -1
  98. package/dist/Record.js +16 -15
  99. package/dist/Record.js.map +1 -1
  100. package/dist/Scheduler.d.ts +25 -123
  101. package/dist/Scheduler.d.ts.map +1 -1
  102. package/dist/Scheduler.js +20 -123
  103. package/dist/Scheduler.js.map +1 -1
  104. package/dist/Schema.d.ts +2346 -114
  105. package/dist/Schema.d.ts.map +1 -1
  106. package/dist/Schema.js +1359 -68
  107. package/dist/Schema.js.map +1 -1
  108. package/dist/SchemaAST.d.ts +2 -2
  109. package/dist/SchemaAST.js +2 -2
  110. package/dist/SchemaGetter.js +6 -4
  111. package/dist/SchemaGetter.js.map +1 -1
  112. package/dist/SchemaRepresentation.d.ts +2 -2
  113. package/dist/SchemaRepresentation.d.ts.map +1 -1
  114. package/dist/SchemaRepresentation.js.map +1 -1
  115. package/dist/SchemaTransformation.d.ts.map +1 -1
  116. package/dist/SchemaTransformation.js +32 -27
  117. package/dist/SchemaTransformation.js.map +1 -1
  118. package/dist/Semaphore.d.ts +149 -53
  119. package/dist/Semaphore.d.ts.map +1 -1
  120. package/dist/Semaphore.js +137 -117
  121. package/dist/Semaphore.js.map +1 -1
  122. package/dist/ServiceMap.d.ts +26 -0
  123. package/dist/ServiceMap.d.ts.map +1 -1
  124. package/dist/ServiceMap.js +36 -21
  125. package/dist/ServiceMap.js.map +1 -1
  126. package/dist/Stream.js +1 -1
  127. package/dist/Stream.js.map +1 -1
  128. package/dist/String.d.ts +114 -47
  129. package/dist/String.d.ts.map +1 -1
  130. package/dist/String.js +29 -47
  131. package/dist/String.js.map +1 -1
  132. package/dist/SubscriptionRef.d.ts +1 -2
  133. package/dist/SubscriptionRef.d.ts.map +1 -1
  134. package/dist/SubscriptionRef.js +81 -115
  135. package/dist/SubscriptionRef.js.map +1 -1
  136. package/dist/Terminal.d.ts +2 -1
  137. package/dist/Terminal.d.ts.map +1 -1
  138. package/dist/Terminal.js.map +1 -1
  139. package/dist/Tracer.d.ts +5 -4
  140. package/dist/Tracer.d.ts.map +1 -1
  141. package/dist/Tracer.js +2 -1
  142. package/dist/Tracer.js.map +1 -1
  143. package/dist/Trie.d.ts +26 -14
  144. package/dist/Trie.d.ts.map +1 -1
  145. package/dist/Trie.js +8 -4
  146. package/dist/Trie.js.map +1 -1
  147. package/dist/TxHashMap.d.ts +77 -59
  148. package/dist/TxHashMap.d.ts.map +1 -1
  149. package/dist/TxHashMap.js +25 -19
  150. package/dist/TxHashMap.js.map +1 -1
  151. package/dist/TxSemaphore.d.ts +162 -2
  152. package/dist/TxSemaphore.d.ts.map +1 -1
  153. package/dist/TxSemaphore.js +16 -2
  154. package/dist/TxSemaphore.js.map +1 -1
  155. package/dist/index.d.ts +88 -32
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +88 -32
  158. package/dist/index.js.map +1 -1
  159. package/dist/internal/dateTime.js +66 -59
  160. package/dist/internal/dateTime.js.map +1 -1
  161. package/dist/internal/effect.js +21 -90
  162. package/dist/internal/effect.js.map +1 -1
  163. package/dist/internal/hashMap.js +2 -1
  164. package/dist/internal/hashMap.js.map +1 -1
  165. package/dist/internal/option.js +6 -0
  166. package/dist/internal/option.js.map +1 -1
  167. package/dist/internal/trie.js +3 -3
  168. package/dist/internal/trie.js.map +1 -1
  169. package/dist/unstable/ai/AiError.js +1 -1
  170. package/dist/unstable/ai/AiError.js.map +1 -1
  171. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  172. package/dist/unstable/ai/AnthropicStructuredOutput.js +4 -0
  173. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  174. package/dist/unstable/ai/Chat.d.ts +3 -4
  175. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  176. package/dist/unstable/ai/Chat.js +2 -2
  177. package/dist/unstable/ai/Chat.js.map +1 -1
  178. package/dist/unstable/ai/LanguageModel.d.ts +30 -16
  179. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  180. package/dist/unstable/ai/LanguageModel.js +10 -87
  181. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  182. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  183. package/dist/unstable/ai/OpenAiStructuredOutput.js +4 -0
  184. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  185. package/dist/unstable/ai/Tool.d.ts +14 -0
  186. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  187. package/dist/unstable/ai/Tool.js +13 -0
  188. package/dist/unstable/ai/Tool.js.map +1 -1
  189. package/dist/unstable/cli/Argument.d.ts +2 -4
  190. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  191. package/dist/unstable/cli/Argument.js +1 -3
  192. package/dist/unstable/cli/Argument.js.map +1 -1
  193. package/dist/unstable/cli/CliOutput.d.ts +3 -2
  194. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  195. package/dist/unstable/cli/CliOutput.js +4 -3
  196. package/dist/unstable/cli/CliOutput.js.map +1 -1
  197. package/dist/unstable/cli/Command.d.ts +3 -2
  198. package/dist/unstable/cli/Command.d.ts.map +1 -1
  199. package/dist/unstable/cli/Command.js +3 -3
  200. package/dist/unstable/cli/Command.js.map +1 -1
  201. package/dist/unstable/cli/Completions.d.ts +16 -0
  202. package/dist/unstable/cli/Completions.d.ts.map +1 -0
  203. package/dist/unstable/cli/Completions.js +23 -0
  204. package/dist/unstable/cli/Completions.js.map +1 -0
  205. package/dist/unstable/cli/Flag.d.ts +2 -2
  206. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  207. package/dist/unstable/cli/Flag.js +1 -1
  208. package/dist/unstable/cli/Flag.js.map +1 -1
  209. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -1
  210. package/dist/unstable/cli/GlobalFlag.js +4 -4
  211. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  212. package/dist/unstable/cli/HelpDoc.d.ts +14 -12
  213. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  214. package/dist/unstable/cli/Param.d.ts +4 -4
  215. package/dist/unstable/cli/Param.d.ts.map +1 -1
  216. package/dist/unstable/cli/Param.js +7 -7
  217. package/dist/unstable/cli/Param.js.map +1 -1
  218. package/dist/unstable/cli/Primitive.d.ts +1 -1
  219. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  220. package/dist/unstable/cli/Primitive.js.map +1 -1
  221. package/dist/unstable/cli/Prompt.js +71 -67
  222. package/dist/unstable/cli/Prompt.js.map +1 -1
  223. package/dist/unstable/cli/index.d.ts +4 -0
  224. package/dist/unstable/cli/index.d.ts.map +1 -1
  225. package/dist/unstable/cli/index.js +4 -0
  226. package/dist/unstable/cli/index.js.map +1 -1
  227. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +9 -2
  228. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  229. package/dist/unstable/cli/internal/parser.js +8 -3
  230. package/dist/unstable/cli/internal/parser.js.map +1 -1
  231. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +3 -2
  232. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  233. package/dist/unstable/cluster/ClusterWorkflowEngine.js +25 -23
  234. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  235. package/dist/unstable/cluster/DeliverAt.js +1 -1
  236. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  237. package/dist/unstable/cluster/Entity.d.ts +3 -2
  238. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  239. package/dist/unstable/cluster/Entity.js +7 -7
  240. package/dist/unstable/cluster/Entity.js.map +1 -1
  241. package/dist/unstable/cluster/Message.d.ts +4 -3
  242. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  243. package/dist/unstable/cluster/Message.js +3 -2
  244. package/dist/unstable/cluster/Message.js.map +1 -1
  245. package/dist/unstable/cluster/MessageStorage.d.ts +10 -10
  246. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  247. package/dist/unstable/cluster/MessageStorage.js +12 -12
  248. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  249. package/dist/unstable/cluster/Reply.d.ts +2 -1
  250. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  251. package/dist/unstable/cluster/Reply.js +4 -3
  252. package/dist/unstable/cluster/Reply.js.map +1 -1
  253. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  254. package/dist/unstable/cluster/RunnerServer.js +9 -8
  255. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  256. package/dist/unstable/cluster/Runners.d.ts +2 -1
  257. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  258. package/dist/unstable/cluster/Runners.js +7 -6
  259. package/dist/unstable/cluster/Runners.js.map +1 -1
  260. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  261. package/dist/unstable/cluster/Sharding.js +19 -13
  262. package/dist/unstable/cluster/Sharding.js.map +1 -1
  263. package/dist/unstable/cluster/ShardingConfig.d.ts +5 -4
  264. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  265. package/dist/unstable/cluster/ShardingConfig.js +4 -4
  266. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  267. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  268. package/dist/unstable/cluster/SqlMessageStorage.js +19 -18
  269. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  270. package/dist/unstable/cluster/internal/entityManager.js +9 -10
  271. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  272. package/dist/unstable/devtools/DevToolsSchema.d.ts +2 -1
  273. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  274. package/dist/unstable/devtools/DevToolsSchema.js +1 -4
  275. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  276. package/dist/unstable/encoding/Ndjson.d.ts +8 -8
  277. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  278. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  279. package/dist/unstable/http/Cookies.d.ts +5 -4
  280. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  281. package/dist/unstable/http/Cookies.js +3 -4
  282. package/dist/unstable/http/Cookies.js.map +1 -1
  283. package/dist/unstable/http/Etag.d.ts.map +1 -1
  284. package/dist/unstable/http/Etag.js +5 -1
  285. package/dist/unstable/http/Etag.js.map +1 -1
  286. package/dist/unstable/http/Headers.d.ts +3 -2
  287. package/dist/unstable/http/Headers.d.ts.map +1 -1
  288. package/dist/unstable/http/Headers.js +2 -1
  289. package/dist/unstable/http/Headers.js.map +1 -1
  290. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  291. package/dist/unstable/http/HttpClient.js +2 -1
  292. package/dist/unstable/http/HttpClient.js.map +1 -1
  293. package/dist/unstable/http/HttpClientRequest.d.ts +4 -3
  294. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  295. package/dist/unstable/http/HttpClientRequest.js +8 -6
  296. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  297. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  298. package/dist/unstable/http/HttpClientResponse.js +2 -1
  299. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  300. package/dist/unstable/http/HttpIncomingMessage.d.ts +3 -2
  301. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  302. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  303. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  304. package/dist/unstable/http/HttpMiddleware.js +16 -15
  305. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  306. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  307. package/dist/unstable/http/HttpPlatform.js +3 -2
  308. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  309. package/dist/unstable/http/HttpRouter.d.ts +2 -1
  310. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  311. package/dist/unstable/http/HttpRouter.js +7 -7
  312. package/dist/unstable/http/HttpRouter.js.map +1 -1
  313. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  314. package/dist/unstable/http/HttpServer.js +2 -2
  315. package/dist/unstable/http/HttpServer.js.map +1 -1
  316. package/dist/unstable/http/HttpServerError.d.ts +2 -1
  317. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  318. package/dist/unstable/http/HttpServerError.js +2 -1
  319. package/dist/unstable/http/HttpServerError.js.map +1 -1
  320. package/dist/unstable/http/HttpServerRequest.d.ts +3 -2
  321. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  322. package/dist/unstable/http/HttpServerRequest.js +14 -10
  323. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  324. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  325. package/dist/unstable/http/HttpServerResponse.js +4 -3
  326. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  327. package/dist/unstable/http/HttpTraceContext.d.ts +3 -2
  328. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  329. package/dist/unstable/http/HttpTraceContext.js +27 -15
  330. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  331. package/dist/unstable/http/UrlParams.d.ts +5 -4
  332. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  333. package/dist/unstable/http/UrlParams.js +5 -6
  334. package/dist/unstable/http/UrlParams.js.map +1 -1
  335. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +2 -2
  336. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  337. package/dist/unstable/httpapi/HttpApiBuilder.js +4 -2
  338. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  339. package/dist/unstable/httpapi/HttpApiError.d.ts +15 -0
  340. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  341. package/dist/unstable/httpapi/HttpApiError.js +81 -3
  342. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  343. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  344. package/dist/unstable/observability/OtlpExporter.js +2 -2
  345. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  346. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  347. package/dist/unstable/observability/OtlpTracer.js +7 -3
  348. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  349. package/dist/unstable/persistence/Persistable.js +1 -1
  350. package/dist/unstable/persistence/Persistable.js.map +1 -1
  351. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  352. package/dist/unstable/reactivity/Atom.js +1 -5
  353. package/dist/unstable/reactivity/Atom.js.map +1 -1
  354. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  355. package/dist/unstable/reactivity/AtomRegistry.js +4 -2
  356. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  357. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  358. package/dist/unstable/rpc/Rpc.js +4 -3
  359. package/dist/unstable/rpc/Rpc.js.map +1 -1
  360. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  361. package/dist/unstable/rpc/RpcClient.js +4 -4
  362. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  363. package/dist/unstable/rpc/RpcGroup.d.ts +1 -3
  364. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  365. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  366. package/dist/unstable/rpc/RpcSchema.js +3 -2
  367. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  368. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  369. package/dist/unstable/rpc/RpcSerialization.js +4 -1
  370. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  371. package/dist/unstable/rpc/RpcServer.d.ts +1 -1
  372. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  373. package/dist/unstable/rpc/RpcServer.js +3 -2
  374. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  375. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  376. package/dist/unstable/socket/Socket.js +2 -1
  377. package/dist/unstable/socket/Socket.js.map +1 -1
  378. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  379. package/dist/unstable/sql/SqlClient.js +1 -1
  380. package/dist/unstable/sql/SqlClient.js.map +1 -1
  381. package/dist/unstable/workflow/DurableDeferred.js +6 -6
  382. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  383. package/dist/unstable/workflow/Workflow.d.ts +2 -1
  384. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  385. package/dist/unstable/workflow/WorkflowEngine.d.ts +5 -4
  386. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  387. package/dist/unstable/workflow/WorkflowEngine.js +19 -14
  388. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  389. package/package.json +1 -1
  390. package/src/Array.ts +112 -105
  391. package/src/BigDecimal.ts +63 -66
  392. package/src/BigInt.ts +49 -41
  393. package/src/Channel.ts +3 -3
  394. package/src/Chunk.ts +68 -63
  395. package/src/Config.ts +4 -1
  396. package/src/Cron.ts +13 -18
  397. package/src/DateTime.ts +51 -92
  398. package/src/Deferred.ts +8 -6
  399. package/src/Duration.ts +112 -56
  400. package/src/Effect.ts +3 -4
  401. package/src/Fiber.ts +2 -1
  402. package/src/FiberHandle.ts +10 -9
  403. package/src/FiberMap.ts +22 -22
  404. package/src/FileSystem.ts +25 -22
  405. package/src/Graph.ts +105 -105
  406. package/src/HashMap.ts +11 -5
  407. package/src/Iterable.ts +13 -13
  408. package/src/Latch.ts +85 -3
  409. package/src/Layer.ts +244 -19
  410. package/src/Number.ts +85 -26
  411. package/src/Option.ts +2 -0
  412. package/src/PartitionedSemaphore.ts +414 -0
  413. package/src/PubSub.ts +7 -6
  414. package/src/Queue.ts +5 -5
  415. package/src/Record.ts +52 -47
  416. package/src/Scheduler.ts +37 -126
  417. package/src/Schema.ts +2366 -116
  418. package/src/SchemaAST.ts +2 -2
  419. package/src/SchemaGetter.ts +4 -4
  420. package/src/SchemaRepresentation.ts +2 -2
  421. package/src/SchemaTransformation.ts +27 -27
  422. package/src/Semaphore.ts +271 -183
  423. package/src/ServiceMap.ts +83 -31
  424. package/src/Stream.ts +1 -1
  425. package/src/String.ts +122 -69
  426. package/src/SubscriptionRef.ts +96 -117
  427. package/src/Terminal.ts +2 -1
  428. package/src/Tracer.ts +6 -5
  429. package/src/Trie.ts +26 -14
  430. package/src/TxHashMap.ts +78 -60
  431. package/src/TxSemaphore.ts +186 -11
  432. package/src/index.ts +89 -33
  433. package/src/internal/dateTime.ts +74 -65
  434. package/src/internal/effect.ts +30 -122
  435. package/src/internal/hashMap.ts +4 -3
  436. package/src/internal/option.ts +7 -0
  437. package/src/internal/trie.ts +6 -6
  438. package/src/unstable/ai/AiError.ts +1 -1
  439. package/src/unstable/ai/AnthropicStructuredOutput.ts +4 -0
  440. package/src/unstable/ai/Chat.ts +17 -15
  441. package/src/unstable/ai/LanguageModel.ts +148 -97
  442. package/src/unstable/ai/OpenAiStructuredOutput.ts +4 -0
  443. package/src/unstable/ai/Tool.ts +20 -0
  444. package/src/unstable/cli/Argument.ts +2 -4
  445. package/src/unstable/cli/CliOutput.ts +7 -5
  446. package/src/unstable/cli/Command.ts +5 -5
  447. package/src/unstable/cli/Completions.ts +36 -0
  448. package/src/unstable/cli/Flag.ts +2 -2
  449. package/src/unstable/cli/GlobalFlag.ts +4 -5
  450. package/src/unstable/cli/HelpDoc.ts +14 -12
  451. package/src/unstable/cli/Param.ts +15 -11
  452. package/src/unstable/cli/Primitive.ts +1 -1
  453. package/src/unstable/cli/Prompt.ts +81 -83
  454. package/src/unstable/cli/index.ts +5 -0
  455. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +3 -2
  456. package/src/unstable/cli/internal/parser.ts +7 -4
  457. package/src/unstable/cluster/ClusterWorkflowEngine.ts +35 -30
  458. package/src/unstable/cluster/DeliverAt.ts +1 -1
  459. package/src/unstable/cluster/Entity.ts +13 -12
  460. package/src/unstable/cluster/Message.ts +6 -5
  461. package/src/unstable/cluster/MessageStorage.ts +26 -25
  462. package/src/unstable/cluster/Reply.ts +7 -4
  463. package/src/unstable/cluster/RunnerServer.ts +10 -13
  464. package/src/unstable/cluster/Runners.ts +8 -7
  465. package/src/unstable/cluster/Sharding.ts +24 -17
  466. package/src/unstable/cluster/ShardingConfig.ts +6 -6
  467. package/src/unstable/cluster/SqlMessageStorage.ts +21 -18
  468. package/src/unstable/cluster/internal/entityManager.ts +27 -21
  469. package/src/unstable/devtools/DevToolsSchema.ts +3 -2
  470. package/src/unstable/encoding/Ndjson.ts +17 -17
  471. package/src/unstable/http/Cookies.ts +7 -8
  472. package/src/unstable/http/Etag.ts +5 -3
  473. package/src/unstable/http/Headers.ts +6 -5
  474. package/src/unstable/http/HttpClient.ts +2 -1
  475. package/src/unstable/http/HttpClientRequest.ts +11 -9
  476. package/src/unstable/http/HttpClientResponse.ts +5 -4
  477. package/src/unstable/http/HttpIncomingMessage.ts +3 -2
  478. package/src/unstable/http/HttpMiddleware.ts +16 -15
  479. package/src/unstable/http/HttpPlatform.ts +3 -2
  480. package/src/unstable/http/HttpRouter.ts +9 -9
  481. package/src/unstable/http/HttpServer.ts +3 -9
  482. package/src/unstable/http/HttpServerError.ts +3 -2
  483. package/src/unstable/http/HttpServerRequest.ts +29 -25
  484. package/src/unstable/http/HttpServerResponse.ts +7 -6
  485. package/src/unstable/http/HttpTraceContext.ts +31 -17
  486. package/src/unstable/http/UrlParams.ts +11 -14
  487. package/src/unstable/httpapi/HttpApiBuilder.ts +13 -7
  488. package/src/unstable/httpapi/HttpApiError.ts +67 -12
  489. package/src/unstable/observability/OtlpExporter.ts +5 -2
  490. package/src/unstable/observability/OtlpTracer.ts +8 -4
  491. package/src/unstable/persistence/Persistable.ts +1 -1
  492. package/src/unstable/reactivity/Atom.ts +1 -4
  493. package/src/unstable/reactivity/AtomRegistry.ts +5 -3
  494. package/src/unstable/rpc/Rpc.ts +4 -3
  495. package/src/unstable/rpc/RpcClient.ts +10 -9
  496. package/src/unstable/rpc/RpcGroup.ts +3 -3
  497. package/src/unstable/rpc/RpcSchema.ts +6 -5
  498. package/src/unstable/rpc/RpcSerialization.ts +4 -1
  499. package/src/unstable/rpc/RpcServer.ts +3 -3
  500. package/src/unstable/socket/Socket.ts +2 -1
  501. package/src/unstable/sql/SqlClient.ts +5 -3
  502. package/src/unstable/workflow/DurableDeferred.ts +6 -6
  503. package/src/unstable/workflow/Workflow.ts +1 -1
  504. package/src/unstable/workflow/WorkflowEngine.ts +29 -20
  505. package/dist/NullOr.d.ts +0 -149
  506. package/dist/NullOr.d.ts.map +0 -1
  507. package/dist/NullOr.js +0 -152
  508. package/dist/NullOr.js.map +0 -1
  509. package/dist/unstable/cli/internal/completions/Completions.d.ts +0 -2
  510. package/dist/unstable/cli/internal/completions/Completions.d.ts.map +0 -1
  511. package/dist/unstable/cli/internal/completions/Completions.js +0 -23
  512. package/dist/unstable/cli/internal/completions/Completions.js.map +0 -1
  513. package/src/NullOr.ts +0 -204
  514. package/src/unstable/cli/internal/completions/Completions.ts +0 -31
package/src/Record.ts CHANGED
@@ -543,7 +543,7 @@ export const get: {
543
543
 
544
544
  /**
545
545
  * Apply a function to the element at the specified key, creating a new record,
546
- * or return `undefined` if the key doesn't exist.
546
+ * or return `Option.none()` if the key doesn't exist.
547
547
  *
548
548
  * @example
549
549
  * ```ts
@@ -553,8 +553,8 @@ export const get: {
553
553
  *
554
554
  * const input: Record<string, number> = { a: 3 }
555
555
  *
556
- * Record.modify(input, "a", f) // { a: 6 }
557
- * Record.modify(input, "b", f) // undefined
556
+ * Record.modify(input, "a", f) // Option.some({ a: 6 })
557
+ * Record.modify(input, "b", f) // Option.none()
558
558
  * ```
559
559
  *
560
560
  * @category utils
@@ -563,7 +563,7 @@ export const get: {
563
563
  export const modify: {
564
564
  /**
565
565
  * Apply a function to the element at the specified key, creating a new record,
566
- * or return `undefined` if the key doesn't exist.
566
+ * or return `Option.none()` if the key doesn't exist.
567
567
  *
568
568
  * @example
569
569
  * ```ts
@@ -573,17 +573,17 @@ export const modify: {
573
573
  *
574
574
  * const input: Record<string, number> = { a: 3 }
575
575
  *
576
- * Record.modify(input, "a", f) // { a: 6 }
577
- * Record.modify(input, "b", f) // undefined
576
+ * Record.modify(input, "a", f) // Option.some({ a: 6 })
577
+ * Record.modify(input, "b", f) // Option.none()
578
578
  * ```
579
579
  *
580
580
  * @category utils
581
581
  * @since 2.0.0
582
582
  */
583
- <K extends string | symbol, A, B>(key: NoInfer<K>, f: (a: A) => B): (self: ReadonlyRecord<K, A>) => Record<K, A | B> | undefined
583
+ <K extends string | symbol, A, B>(key: NoInfer<K>, f: (a: A) => B): (self: ReadonlyRecord<K, A>) => Option.Option<Record<K, A | B>>
584
584
  /**
585
585
  * Apply a function to the element at the specified key, creating a new record,
586
- * or return `undefined` if the key doesn't exist.
586
+ * or return `Option.none()` if the key doesn't exist.
587
587
  *
588
588
  * @example
589
589
  * ```ts
@@ -593,23 +593,23 @@ export const modify: {
593
593
  *
594
594
  * const input: Record<string, number> = { a: 3 }
595
595
  *
596
- * Record.modify(input, "a", f) // { a: 6 }
597
- * Record.modify(input, "b", f) // undefined
596
+ * Record.modify(input, "a", f) // Option.some({ a: 6 })
597
+ * Record.modify(input, "b", f) // Option.none()
598
598
  * ```
599
599
  *
600
600
  * @category utils
601
601
  * @since 2.0.0
602
602
  */
603
- <K extends string | symbol, A, B>(self: ReadonlyRecord<K, A>, key: NoInfer<K>, f: (a: A) => B): Record<K, A | B> | undefined
603
+ <K extends string | symbol, A, B>(self: ReadonlyRecord<K, A>, key: NoInfer<K>, f: (a: A) => B): Option.Option<Record<K, A | B>>
604
604
  } = dual(
605
605
  3,
606
606
  <K extends string | symbol, A, B>(
607
607
  self: ReadonlyRecord<K, A>,
608
608
  key: NoInfer<K>,
609
609
  f: (a: A) => B
610
- ): Record<K, A | B> | undefined => {
611
- if (!has(self, key)) return undefined
612
- return { ...self, [key]: f(self[key]) }
610
+ ): Option.Option<Record<K, A | B>> => {
611
+ if (!has(self, key)) return Option.none()
612
+ return Option.some({ ...self, [key]: f(self[key]) })
613
613
  }
614
614
  )
615
615
 
@@ -620,8 +620,8 @@ export const modify: {
620
620
  * ```ts
621
621
  * import { Record } from "effect"
622
622
  *
623
- * Record.replace({ a: 1, b: 2, c: 3 }, "a", 10) // { a: 10, b: 2, c: 3 }
624
- * Record.replace(Record.empty<string>(), "a", 10) // undefined
623
+ * Record.replace({ a: 1, b: 2, c: 3 }, "a", 10) // Option.some({ a: 10, b: 2, c: 3 })
624
+ * Record.replace(Record.empty<string>(), "a", 10) // Option.none()
625
625
  * ```
626
626
  *
627
627
  * @category utils
@@ -635,14 +635,14 @@ export const replace: {
635
635
  * ```ts
636
636
  * import { Record } from "effect"
637
637
  *
638
- * Record.replace({ a: 1, b: 2, c: 3 }, "a", 10) // { a: 10, b: 2, c: 3 }
639
- * Record.replace(Record.empty<string>(), "a", 10) // undefined
638
+ * Record.replace({ a: 1, b: 2, c: 3 }, "a", 10) // Option.some({ a: 10, b: 2, c: 3 })
639
+ * Record.replace(Record.empty<string>(), "a", 10) // Option.none()
640
640
  * ```
641
641
  *
642
642
  * @category utils
643
643
  * @since 2.0.0
644
644
  */
645
- <K extends string | symbol, B>(key: NoInfer<K>, b: B): <A>(self: ReadonlyRecord<K, A>) => Record<K, A | B> | undefined
645
+ <K extends string | symbol, B>(key: NoInfer<K>, b: B): <A>(self: ReadonlyRecord<K, A>) => Option.Option<Record<K, A | B>>
646
646
  /**
647
647
  * Replaces a value in the record with the new value passed as parameter.
648
648
  *
@@ -650,26 +650,26 @@ export const replace: {
650
650
  * ```ts
651
651
  * import { Record } from "effect"
652
652
  *
653
- * Record.replace({ a: 1, b: 2, c: 3 }, "a", 10) // { a: 10, b: 2, c: 3 }
654
- * Record.replace(Record.empty<string>(), "a", 10) // undefined
653
+ * Record.replace({ a: 1, b: 2, c: 3 }, "a", 10) // Option.some({ a: 10, b: 2, c: 3 })
654
+ * Record.replace(Record.empty<string>(), "a", 10) // Option.none()
655
655
  * ```
656
656
  *
657
657
  * @category utils
658
658
  * @since 2.0.0
659
659
  */
660
- <K extends string | symbol, A, B>(self: ReadonlyRecord<K, A>, key: NoInfer<K>, b: B): Record<K, A | B> | undefined
660
+ <K extends string | symbol, A, B>(self: ReadonlyRecord<K, A>, key: NoInfer<K>, b: B): Option.Option<Record<K, A | B>>
661
661
  } = dual(
662
662
  3,
663
663
  <K extends string | symbol, A, B>(
664
664
  self: ReadonlyRecord<K, A>,
665
665
  key: NoInfer<K>,
666
666
  b: B
667
- ): Record<K, A | B> | undefined => modify(self, key, () => b)
667
+ ): Option.Option<Record<K, A | B>> => modify(self, key, () => b)
668
668
  )
669
669
 
670
670
  /**
671
- * If the given key exists in the record, returns a new record with the key removed,
672
- * otherwise returns `undefined`.
671
+ * If the given key exists in the record, returns a new record with the key removed.
672
+ * If the key does not exist, returns a shallow copy of the original record.
673
673
  *
674
674
  * @example
675
675
  * ```ts
@@ -684,8 +684,8 @@ export const replace: {
684
684
  */
685
685
  export const remove: {
686
686
  /**
687
- * If the given key exists in the record, returns a new record with the key removed,
688
- * otherwise returns `undefined`.
687
+ * If the given key exists in the record, returns a new record with the key removed.
688
+ * If the key does not exist, returns a shallow copy of the original record.
689
689
  *
690
690
  * @example
691
691
  * ```ts
@@ -700,8 +700,8 @@ export const remove: {
700
700
  */
701
701
  <K extends string | symbol, X extends K>(key: X): <A>(self: ReadonlyRecord<K, A>) => Record<Exclude<K, X>, A>
702
702
  /**
703
- * If the given key exists in the record, returns a new record with the key removed,
704
- * otherwise returns `undefined`.
703
+ * If the given key exists in the record, returns a new record with the key removed.
704
+ * If the key does not exist, returns a shallow copy of the original record.
705
705
  *
706
706
  * @example
707
707
  * ```ts
@@ -730,7 +730,7 @@ export const remove: {
730
730
  /**
731
731
  * Retrieves the value of the property with the given `key` from a record and returns an `Option`
732
732
  * of a tuple with the value and the record with the removed property.
733
- * If the key is not present, returns `undefined`.
733
+ * If the key is not present, returns `Option.none()`.
734
734
  *
735
735
  * @example
736
736
  * ```ts
@@ -738,8 +738,8 @@ export const remove: {
738
738
  *
739
739
  * const input: Record<string, number> = { a: 1, b: 2 }
740
740
  *
741
- * Record.pop(input, "a") // [1, { b: 2 }]
742
- * Record.pop(input, "c") // undefined
741
+ * Record.pop(input, "a") // Option.some([1, { b: 2 }])
742
+ * Record.pop(input, "c") // Option.none()
743
743
  * ```
744
744
  *
745
745
  * @category utils
@@ -749,7 +749,7 @@ export const pop: {
749
749
  /**
750
750
  * Retrieves the value of the property with the given `key` from a record and returns an `Option`
751
751
  * of a tuple with the value and the record with the removed property.
752
- * If the key is not present, returns `undefined`.
752
+ * If the key is not present, returns `Option.none()`.
753
753
  *
754
754
  * @example
755
755
  * ```ts
@@ -757,18 +757,18 @@ export const pop: {
757
757
  *
758
758
  * const input: Record<string, number> = { a: 1, b: 2 }
759
759
  *
760
- * Record.pop(input, "a") // [1, { b: 2 }]
761
- * Record.pop(input, "c") // undefined
760
+ * Record.pop(input, "a") // Option.some([1, { b: 2 }])
761
+ * Record.pop(input, "c") // Option.none()
762
762
  * ```
763
763
  *
764
764
  * @category utils
765
765
  * @since 2.0.0
766
766
  */
767
- <K extends string | symbol, X extends K>(key: X): <A>(self: ReadonlyRecord<K, A>) => [A, Record<Exclude<K, X>, A>] | undefined
767
+ <K extends string | symbol, X extends K>(key: X): <A>(self: ReadonlyRecord<K, A>) => Option.Option<[A, Record<Exclude<K, X>, A>]>
768
768
  /**
769
769
  * Retrieves the value of the property with the given `key` from a record and returns an `Option`
770
770
  * of a tuple with the value and the record with the removed property.
771
- * If the key is not present, returns `undefined`.
771
+ * If the key is not present, returns `Option.none()`.
772
772
  *
773
773
  * @example
774
774
  * ```ts
@@ -776,18 +776,19 @@ export const pop: {
776
776
  *
777
777
  * const input: Record<string, number> = { a: 1, b: 2 }
778
778
  *
779
- * Record.pop(input, "a") // [1, { b: 2 }]
780
- * Record.pop(input, "c") // undefined
779
+ * Record.pop(input, "a") // Option.some([1, { b: 2 }])
780
+ * Record.pop(input, "c") // Option.none()
781
781
  * ```
782
782
  *
783
783
  * @category utils
784
784
  * @since 2.0.0
785
785
  */
786
- <K extends string | symbol, A, X extends K>(self: ReadonlyRecord<K, A>, key: X): [A, Record<Exclude<K, X>, A>] | undefined
786
+ <K extends string | symbol, A, X extends K>(self: ReadonlyRecord<K, A>, key: X): Option.Option<[A, Record<Exclude<K, X>, A>]>
787
787
  } = dual(2, <K extends string | symbol, A, X extends K>(
788
788
  self: ReadonlyRecord<K, A>,
789
789
  key: X
790
- ): [A, Record<Exclude<K, X>, A>] | undefined => has(self, key) ? [self[key], remove(self, key)] : undefined)
790
+ ): Option.Option<[A, Record<Exclude<K, X>, A>]> =>
791
+ has(self, key) ? Option.some([self[key], remove(self, key)]) : Option.none())
791
792
 
792
793
  /**
793
794
  * Maps a record into another record by applying a transformation function to each of its values.
@@ -2158,7 +2159,7 @@ export const findFirst: {
2158
2159
  * @category elements
2159
2160
  * @since 3.14.0
2160
2161
  */
2161
- <K extends string | symbol, V, V2 extends V>(refinement: (value: NoInfer<V>, key: NoInfer<K>) => value is V2): (self: ReadonlyRecord<K, V>) => [K, V2] | undefined
2162
+ <K extends string | symbol, V, V2 extends V>(refinement: (value: NoInfer<V>, key: NoInfer<K>) => value is V2): (self: ReadonlyRecord<K, V>) => Option.Option<[K, V2]>
2162
2163
  /**
2163
2164
  * Returns the first entry that satisfies the specified
2164
2165
  * predicate, or `None` if no such entry exists.
@@ -2178,7 +2179,7 @@ export const findFirst: {
2178
2179
  * @category elements
2179
2180
  * @since 3.14.0
2180
2181
  */
2181
- <K extends string | symbol, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean): (self: ReadonlyRecord<K, V>) => [K, V] | undefined
2182
+ <K extends string | symbol, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean): (self: ReadonlyRecord<K, V>) => Option.Option<[K, V]>
2182
2183
  /**
2183
2184
  * Returns the first entry that satisfies the specified
2184
2185
  * predicate, or `None` if no such entry exists.
@@ -2201,7 +2202,7 @@ export const findFirst: {
2201
2202
  <K extends string | symbol, V, V2 extends V>(
2202
2203
  self: ReadonlyRecord<K, V>,
2203
2204
  refinement: (value: NoInfer<V>, key: NoInfer<K>) => value is V2
2204
- ): [K, V2] | undefined
2205
+ ): Option.Option<[K, V2]>
2205
2206
  /**
2206
2207
  * Returns the first entry that satisfies the specified
2207
2208
  * predicate, or `None` if no such entry exists.
@@ -2224,16 +2225,20 @@ export const findFirst: {
2224
2225
  <K extends string | symbol, V>(
2225
2226
  self: ReadonlyRecord<K, V>,
2226
2227
  predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean
2227
- ): [K, V] | undefined
2228
+ ): Option.Option<[K, V]>
2228
2229
  } = dual(
2229
2230
  2,
2230
- <K extends string | symbol, V>(self: ReadonlyRecord<K, V>, f: (value: V, key: K) => boolean): [K, V] | undefined => {
2231
+ <K extends string | symbol, V>(
2232
+ self: ReadonlyRecord<K, V>,
2233
+ f: (value: V, key: K) => boolean
2234
+ ): Option.Option<[K, V]> => {
2231
2235
  const k = keys(self)
2232
2236
  for (let i = 0; i < k.length; i++) {
2233
2237
  const key = k[i]
2234
2238
  if (f(self[key], key)) {
2235
- return [key, self[key]]
2239
+ return Option.some([key, self[key]])
2236
2240
  }
2237
2241
  }
2242
+ return Option.none()
2238
2243
  }
2239
2244
  )
package/src/Scheduler.ts CHANGED
@@ -19,8 +19,17 @@ import * as ServiceMap from "./ServiceMap.ts"
19
19
  */
20
20
  export interface Scheduler {
21
21
  readonly executionMode: "sync" | "async"
22
- readonly scheduleTask: (task: () => void, priority: number) => void
23
- readonly shouldYield: (fiber: Fiber.Fiber<unknown, unknown>) => boolean
22
+ shouldYield(fiber: Fiber.Fiber<unknown, unknown>): boolean
23
+ makeDispatcher(): SchedulerDispatcher
24
+ }
25
+
26
+ /**
27
+ * @since 4.0.0
28
+ * @category models
29
+ */
30
+ export interface SchedulerDispatcher {
31
+ scheduleTask(task: () => void, priority: number): void
32
+ flush(): void
24
33
  }
25
34
 
26
35
  /**
@@ -82,40 +91,10 @@ class PriorityBuckets {
82
91
  * - Automatic yielding based on operation count
83
92
  * - Optimized for high-throughput scenarios
84
93
  *
85
- * @example
86
- * ```ts
87
- * import { MixedScheduler } from "effect/Scheduler"
88
- *
89
- * // Create a mixed scheduler with async execution (default)
90
- * const asyncScheduler = new MixedScheduler("async")
91
- *
92
- * // Create a mixed scheduler with sync execution
93
- * const syncScheduler = new MixedScheduler("sync")
94
- *
95
- * // Schedule tasks with different priorities
96
- * asyncScheduler.scheduleTask(() => console.log("High priority task"), 10)
97
- * asyncScheduler.scheduleTask(() => console.log("Normal priority task"), 0)
98
- * asyncScheduler.scheduleTask(() => console.log("Low priority task"), -1)
99
- *
100
- * // For sync scheduler, you can flush tasks immediately
101
- * syncScheduler.scheduleTask(() => console.log("Task 1"), 0)
102
- * syncScheduler.scheduleTask(() => console.log("Task 2"), 0)
103
- *
104
- * // Force flush all pending tasks in sync mode
105
- * syncScheduler.flush()
106
- * // Output: "Task 1", "Task 2"
107
- *
108
- * // Check execution mode
109
- * console.log(asyncScheduler.executionMode) // "async"
110
- * console.log(syncScheduler.executionMode) // "sync"
111
- * ```
112
- *
113
94
  * @since 2.0.0
114
95
  * @category schedulers
115
96
  */
116
97
  export class MixedScheduler implements Scheduler {
117
- private tasks = new PriorityBuckets()
118
- private running: (() => void) | undefined = undefined
119
98
  readonly executionMode: "sync" | "async"
120
99
  readonly setImmediate: (f: () => void) => () => void
121
100
 
@@ -127,6 +106,32 @@ export class MixedScheduler implements Scheduler {
127
106
  this.setImmediate = setImmediateFn
128
107
  }
129
108
 
109
+ /**
110
+ * @since 2.0.0
111
+ */
112
+ shouldYield(fiber: Fiber.Fiber<unknown, unknown>) {
113
+ return fiber.currentOpCount >= fiber.maxOpsBeforeYield
114
+ }
115
+
116
+ /**
117
+ * @since 2.0.0
118
+ */
119
+ makeDispatcher() {
120
+ return new MixedSchedulerDispatcher(this.setImmediate)
121
+ }
122
+ }
123
+
124
+ class MixedSchedulerDispatcher implements SchedulerDispatcher {
125
+ private tasks = new PriorityBuckets()
126
+ private running: (() => void) | undefined = undefined
127
+ readonly setImmediate: (f: () => void) => () => void
128
+
129
+ constructor(
130
+ setImmediateFn: (f: () => void) => () => void = setImmediate
131
+ ) {
132
+ this.setImmediate = setImmediateFn
133
+ }
134
+
130
135
  /**
131
136
  * @since 2.0.0
132
137
  */
@@ -158,13 +163,6 @@ export class MixedScheduler implements Scheduler {
158
163
  }
159
164
  }
160
165
 
161
- /**
162
- * @since 2.0.0
163
- */
164
- shouldYield(fiber: Fiber.Fiber<unknown, unknown>) {
165
- return fiber.currentOpCount >= fiber.maxOpsBeforeYield
166
- }
167
-
168
166
  /**
169
167
  * @since 2.0.0
170
168
  */
@@ -187,93 +185,6 @@ export class MixedScheduler implements Scheduler {
187
185
  * The default value is 2048 operations, which provides a good balance between
188
186
  * performance and fairness in concurrent execution.
189
187
  *
190
- * @example
191
- * ```ts
192
- * import { Effect } from "effect"
193
- * import { MaxOpsBeforeYield } from "effect/Scheduler"
194
- *
195
- * // Configure a fiber to yield more frequently
196
- * const program = Effect.gen(function*() {
197
- * // Get current max ops setting (default is 2048)
198
- * const currentMax = yield* MaxOpsBeforeYield
199
- * yield* Effect.log(`Default max ops before yield: ${currentMax}`)
200
- *
201
- * // Run with reduced max ops for more frequent yielding
202
- * return yield* Effect.provideService(
203
- * Effect.gen(function*() {
204
- * const maxOps = yield* MaxOpsBeforeYield
205
- * yield* Effect.log(`Max ops before yield: ${maxOps}`)
206
- *
207
- * // Run a compute-intensive task that will yield frequently
208
- * let result = 0
209
- * for (let i = 0; i < 10000; i++) {
210
- * result += i
211
- * // This will cause yielding every 100 operations
212
- * yield* Effect.sync(() => result)
213
- * }
214
- * return result
215
- * }),
216
- * MaxOpsBeforeYield,
217
- * 100
218
- * )
219
- * })
220
- *
221
- * // Configure for high-performance scenarios
222
- * const highPerformanceProgram = Effect.gen(function*() {
223
- * // Run with increased max ops for better performance (less yielding)
224
- * return yield* Effect.provideService(
225
- * Effect.gen(function*() {
226
- * const maxOps = yield* MaxOpsBeforeYield
227
- * yield* Effect.log(`High-performance max ops: ${maxOps}`)
228
- *
229
- * // Run multiple concurrent tasks
230
- * const tasks = Array.from(
231
- * { length: 100 },
232
- * (_, i) =>
233
- * Effect.gen(function*() {
234
- * yield* Effect.sleep(`${i * 10} millis`)
235
- * return `Task ${i} completed`
236
- * })
237
- * )
238
- *
239
- * return yield* Effect.all(tasks, { concurrency: "unbounded" })
240
- * }),
241
- * MaxOpsBeforeYield,
242
- * 10000
243
- * )
244
- * })
245
- *
246
- * // Configure for fair scheduling
247
- * const fairSchedulingProgram = Effect.gen(function*() {
248
- * // Run with lower max ops for more frequent yielding
249
- * return yield* Effect.provideService(
250
- * Effect.gen(function*() {
251
- * const maxOps = yield* MaxOpsBeforeYield
252
- * yield* Effect.log(`Fair scheduling max ops: ${maxOps}`)
253
- *
254
- * const longRunningTask = Effect.gen(function*() {
255
- * for (let i = 0; i < 1000; i++) {
256
- * yield* Effect.sync(() => Math.random())
257
- * }
258
- * return "Long task completed"
259
- * })
260
- *
261
- * const quickTask = Effect.gen(function*() {
262
- * yield* Effect.sleep("10 millis")
263
- * return "Quick task completed"
264
- * })
265
- *
266
- * // Both tasks will execute fairly due to frequent yielding
267
- * return yield* Effect.all([longRunningTask, quickTask], {
268
- * concurrency: "unbounded"
269
- * })
270
- * }),
271
- * MaxOpsBeforeYield,
272
- * 50
273
- * )
274
- * })
275
- * ```
276
- *
277
188
  * @since 4.0.0
278
189
  * @category references
279
190
  */