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
@@ -9,11 +9,11 @@ import type { LazyArg } from "../Function.ts"
9
9
  import { dual } from "../Function.ts"
10
10
  import * as Hash from "../Hash.ts"
11
11
  import * as Inspectable from "../Inspectable.ts"
12
+ import * as Option from "../Option.ts"
12
13
  import * as order from "../Order.ts"
13
14
  import { pipeArguments } from "../Pipeable.ts"
14
15
  import * as Predicate from "../Predicate.ts"
15
16
  import type { Mutable } from "../Types.ts"
16
- import * as UndefinedOr from "../UndefinedOr.ts"
17
17
  import * as effect from "./effect.ts"
18
18
 
19
19
  /** @internal */
@@ -39,10 +39,10 @@ const ProtoUtc = {
39
39
  ...Proto,
40
40
  _tag: "Utc",
41
41
  [Hash.symbol](this: DateTime.Utc) {
42
- return Hash.number(this.epochMillis)
42
+ return Hash.number(this.epochMilliseconds)
43
43
  },
44
44
  [Equal.symbol](this: DateTime.Utc, that: unknown) {
45
- return isDateTime(that) && that._tag === "Utc" && this.epochMillis === that.epochMillis
45
+ return isDateTime(that) && that._tag === "Utc" && this.epochMilliseconds === that.epochMilliseconds
46
46
  },
47
47
  toString(this: DateTime.Utc) {
48
48
  return `DateTime.Utc(${toDateUtc(this).toJSON()})`
@@ -53,10 +53,10 @@ const ProtoZoned = {
53
53
  ...Proto,
54
54
  _tag: "Zoned",
55
55
  [Hash.symbol](this: DateTime.Zoned) {
56
- return Hash.combine(Hash.number(this.epochMillis))(Hash.hash(this.zone))
56
+ return Hash.combine(Hash.number(this.epochMilliseconds))(Hash.hash(this.zone))
57
57
  },
58
58
  [Equal.symbol](this: DateTime.Zoned, that: unknown) {
59
- return isDateTime(that) && that._tag === "Zoned" && this.epochMillis === that.epochMillis &&
59
+ return isDateTime(that) && that._tag === "Zoned" && this.epochMilliseconds === that.epochMilliseconds &&
60
60
  Equal.equals(this.zone, that.zone)
61
61
  },
62
62
  toString(this: DateTime.Zoned) {
@@ -120,7 +120,7 @@ export const makeZonedProto = (
120
120
  partsUtc?: DateTime.DateTime.PartsWithWeekday
121
121
  ): DateTime.Zoned => {
122
122
  const self = Object.create(ProtoZoned)
123
- self.epochMillis = epochMillis
123
+ self.epochMilliseconds = epochMillis
124
124
  self.zone = zone
125
125
  Object.defineProperty(self, "partsUtc", {
126
126
  value: partsUtc,
@@ -169,11 +169,13 @@ export const isZoned = (self: DateTime.DateTime): self is DateTime.Zoned => self
169
169
  // =============================================================================
170
170
 
171
171
  /** @internal */
172
- export const Equivalence: Equ.Equivalence<DateTime.DateTime> = Equ.make((a, b) => a.epochMillis === b.epochMillis)
172
+ export const Equivalence: Equ.Equivalence<DateTime.DateTime> = Equ.make((a, b) =>
173
+ a.epochMilliseconds === b.epochMilliseconds
174
+ )
173
175
 
174
176
  /** @internal */
175
177
  export const Order: order.Order<DateTime.DateTime> = order.make((self, that) =>
176
- self.epochMillis < that.epochMillis ? -1 : self.epochMillis > that.epochMillis ? 1 : 0
178
+ self.epochMilliseconds < that.epochMilliseconds ? -1 : self.epochMilliseconds > that.epochMilliseconds ? 1 : 0
177
179
  )
178
180
 
179
181
  /** @internal */
@@ -193,7 +195,7 @@ export const clamp: {
193
195
 
194
196
  const makeUtc = (epochMillis: number): DateTime.Utc => {
195
197
  const self = Object.create(ProtoUtc)
196
- self.epochMillis = epochMillis
198
+ self.epochMilliseconds = epochMillis
197
199
  Object.defineProperty(self, "partsUtc", {
198
200
  value: undefined,
199
201
  enumerable: false,
@@ -218,6 +220,9 @@ export const makeUnsafe = <A extends DateTime.DateTime.Input>(input: A): DateTim
218
220
  } else if (input instanceof Date) {
219
221
  return fromDateUnsafe(input) as DateTime.DateTime.PreserveZone<A>
220
222
  } else if (typeof input === "object") {
223
+ if ("epochMilliseconds" in input) {
224
+ return makeUtc(input.epochMilliseconds) as DateTime.DateTime.PreserveZone<A>
225
+ }
221
226
  const date = new Date(0)
222
227
  setPartsDate(date, input)
223
228
  return fromDateUnsafe(date) as DateTime.DateTime.PreserveZone<A>
@@ -238,32 +243,36 @@ export const makeZonedUnsafe = (input: DateTime.DateTime.Input, options?: {
238
243
  readonly adjustForTimeZone?: boolean | undefined
239
244
  readonly disambiguation?: DateTime.Disambiguation | undefined
240
245
  }): DateTime.Zoned => {
241
- if (options?.timeZone === undefined && isDateTime(input) && isZoned(input)) {
246
+ let timeZoneOption = options?.timeZone
247
+ if (timeZoneOption === undefined && isDateTime(input) && isZoned(input)) {
242
248
  return input
243
249
  }
244
250
  const self = makeUnsafe(input)
245
- if (self.epochMillis < minEpochMillis || self.epochMillis > maxEpochMillis) {
246
- throw new RangeError(`Epoch millis out of range: ${self.epochMillis}`)
251
+ if (self.epochMilliseconds < minEpochMillis || self.epochMilliseconds > maxEpochMillis) {
252
+ throw new RangeError(`Epoch millis out of range: ${self.epochMilliseconds}`)
253
+ }
254
+ if (timeZoneOption === undefined && typeof input === "object" && "timeZoneId" in input) {
255
+ timeZoneOption = input.timeZoneId
247
256
  }
248
257
  let zone: DateTime.TimeZone
249
- if (options?.timeZone === undefined) {
250
- const offset = new Date(self.epochMillis).getTimezoneOffset() * -60 * 1000
258
+ if (timeZoneOption === undefined) {
259
+ const offset = new Date(self.epochMilliseconds).getTimezoneOffset() * -60 * 1000
251
260
  zone = zoneMakeOffset(offset)
252
- } else if (isTimeZone(options?.timeZone)) {
253
- zone = options.timeZone
254
- } else if (typeof options?.timeZone === "number") {
255
- zone = zoneMakeOffset(options.timeZone)
261
+ } else if (isTimeZone(timeZoneOption)) {
262
+ zone = timeZoneOption
263
+ } else if (typeof timeZoneOption === "number") {
264
+ zone = zoneMakeOffset(timeZoneOption)
256
265
  } else {
257
- const parsedZone = zoneFromString(options.timeZone)
258
- if (parsedZone === undefined) {
259
- throw new IllegalArgumentError(`Invalid time zone: ${options.timeZone}`)
266
+ const parsedZone = zoneFromString(timeZoneOption)
267
+ if (Option.isNone(parsedZone)) {
268
+ throw new IllegalArgumentError(`Invalid time zone: ${timeZoneOption}`)
260
269
  }
261
- zone = parsedZone
270
+ zone = parsedZone.value
262
271
  }
263
272
  if (options?.adjustForTimeZone !== true) {
264
- return makeZonedProto(self.epochMillis, zone, self.partsUtc)
273
+ return makeZonedProto(self.epochMilliseconds, zone, self.partsUtc)
265
274
  }
266
- return makeZonedFromAdjusted(self.epochMillis, zone, options?.disambiguation ?? "compatible")
275
+ return makeZonedFromAdjusted(self.epochMilliseconds, zone, options?.disambiguation ?? "compatible")
267
276
  }
268
277
 
269
278
  /** @internal */
@@ -274,20 +283,20 @@ export const makeZoned: (
274
283
  readonly adjustForTimeZone?: boolean | undefined
275
284
  readonly disambiguation?: DateTime.Disambiguation | undefined
276
285
  }
277
- ) => DateTime.Zoned | undefined = UndefinedOr.liftThrowable(makeZonedUnsafe)
286
+ ) => Option.Option<DateTime.Zoned> = Option.liftThrowable(makeZonedUnsafe)
278
287
 
279
288
  /** @internal */
280
- export const make: <A extends DateTime.DateTime.Input>(input: A) => DateTime.DateTime.PreserveZone<A> | undefined =
281
- UndefinedOr.liftThrowable(makeUnsafe)
289
+ export const make: <A extends DateTime.DateTime.Input>(input: A) => Option.Option<DateTime.DateTime.PreserveZone<A>> =
290
+ Option.liftThrowable(makeUnsafe)
282
291
 
283
292
  const zonedStringRegExp = /^(.{17,35})\[(.+)\]$/
284
293
 
285
294
  /** @internal */
286
- export const makeZonedFromString = (input: string): DateTime.Zoned | undefined => {
295
+ export const makeZonedFromString = (input: string): Option.Option<DateTime.Zoned> => {
287
296
  const match = zonedStringRegExp.exec(input)
288
297
  if (match === null) {
289
298
  const offset = parseOffset(input)
290
- return offset !== null ? makeZoned(input, { timeZone: offset }) : undefined
299
+ return offset !== null ? makeZoned(input, { timeZone: offset }) : Option.none()
291
300
  }
292
301
  const [, isoString, timeZone] = match
293
302
  return makeZoned(isoString, { timeZone })
@@ -307,7 +316,7 @@ export const nowUnsafe: LazyArg<DateTime.Utc> = () => makeUtc(Date.now())
307
316
  // =============================================================================
308
317
 
309
318
  /** @internal */
310
- export const toUtc = (self: DateTime.DateTime): DateTime.Utc => makeUtc(self.epochMillis)
319
+ export const toUtc = (self: DateTime.DateTime): DateTime.Utc => makeUtc(self.epochMilliseconds)
311
320
 
312
321
  /** @internal */
313
322
  export const setZone: {
@@ -324,8 +333,8 @@ export const setZone: {
324
333
  readonly disambiguation?: DateTime.Disambiguation | undefined
325
334
  }): DateTime.Zoned =>
326
335
  options?.adjustForTimeZone === true
327
- ? makeZonedFromAdjusted(self.epochMillis, zone, options?.disambiguation ?? "compatible")
328
- : makeZonedProto(self.epochMillis, zone, self.partsUtc))
336
+ ? makeZonedFromAdjusted(self.epochMilliseconds, zone, options?.disambiguation ?? "compatible")
337
+ : makeZonedProto(self.epochMilliseconds, zone, self.partsUtc))
329
338
 
330
339
  /** @internal */
331
340
  export const setZoneOffset: {
@@ -393,7 +402,7 @@ export const zoneMakeOffset = (offset: number): DateTime.TimeZone.Offset => {
393
402
  }
394
403
 
395
404
  /** @internal */
396
- export const zoneMakeNamed: (zoneId: string) => DateTime.TimeZone.Named | undefined = UndefinedOr.liftThrowable(
405
+ export const zoneMakeNamed: (zoneId: string) => Option.Option<DateTime.TimeZone.Named> = Option.liftThrowable(
397
406
  zoneMakeNamedUnsafe
398
407
  )
399
408
 
@@ -411,10 +420,10 @@ export const zoneMakeLocal = (): DateTime.TimeZone.Named =>
411
420
  const offsetZoneRegExp = /^(?:GMT|[+-])/
412
421
 
413
422
  /** @internal */
414
- export const zoneFromString = (zone: string): DateTime.TimeZone | undefined => {
423
+ export const zoneFromString = (zone: string): Option.Option<DateTime.TimeZone> => {
415
424
  if (offsetZoneRegExp.test(zone)) {
416
425
  const offset = parseOffset(zone)
417
- return offset === null ? undefined : zoneMakeOffset(offset)
426
+ return offset === null ? Option.none() : Option.some(zoneMakeOffset(offset))
418
427
  }
419
428
  return zoneMakeNamed(zone)
420
429
  }
@@ -432,17 +441,17 @@ export const setZoneNamed: {
432
441
  (zoneId: string, options?: {
433
442
  readonly adjustForTimeZone?: boolean | undefined
434
443
  readonly disambiguation?: DateTime.Disambiguation | undefined
435
- }): (self: DateTime.DateTime) => DateTime.Zoned | undefined
444
+ }): (self: DateTime.DateTime) => Option.Option<DateTime.Zoned>
436
445
  (self: DateTime.DateTime, zoneId: string, options?: {
437
446
  readonly adjustForTimeZone?: boolean | undefined
438
447
  readonly disambiguation?: DateTime.Disambiguation | undefined
439
- }): DateTime.Zoned | undefined
448
+ }): Option.Option<DateTime.Zoned>
440
449
  } = dual(
441
450
  isDateTimeArgs,
442
451
  (self: DateTime.DateTime, zoneId: string, options?: {
443
452
  readonly adjustForTimeZone?: boolean | undefined
444
453
  readonly disambiguation?: DateTime.Disambiguation | undefined
445
- }): DateTime.Zoned | undefined => UndefinedOr.map(zoneMakeNamed(zoneId), (zone) => setZone(self, zone, options))
454
+ }): Option.Option<DateTime.Zoned> => Option.map(zoneMakeNamed(zoneId), (zone) => setZone(self, zone, options))
446
455
  )
447
456
 
448
457
  /** @internal */
@@ -533,18 +542,18 @@ export const isPastUnsafe = (self: DateTime.DateTime): boolean => isGreaterThan(
533
542
  // =============================================================================
534
543
 
535
544
  /** @internal */
536
- export const toDateUtc = (self: DateTime.DateTime): Date => new Date(self.epochMillis)
545
+ export const toDateUtc = (self: DateTime.DateTime): Date => new Date(self.epochMilliseconds)
537
546
 
538
547
  /** @internal */
539
548
  export const toDate = (self: DateTime.DateTime): Date => {
540
549
  if (self._tag === "Utc") {
541
- return new Date(self.epochMillis)
550
+ return new Date(self.epochMilliseconds)
542
551
  } else if (self.zone._tag === "Offset") {
543
- return new Date(self.epochMillis + self.zone.offset)
544
- } else if (self.adjustedEpochMillis !== undefined) {
545
- return new Date(self.adjustedEpochMillis)
552
+ return new Date(self.epochMilliseconds + self.zone.offset)
553
+ } else if (self.adjustedEpochMilliseconds !== undefined) {
554
+ return new Date(self.adjustedEpochMilliseconds)
546
555
  }
547
- const parts = self.zone.format.formatToParts(self.epochMillis).filter((_) => _.type !== "literal")
556
+ const parts = self.zone.format.formatToParts(self.epochMilliseconds).filter((_) => _.type !== "literal")
548
557
  const date = new Date(0)
549
558
  date.setUTCFullYear(
550
559
  Number(parts[2].value),
@@ -557,7 +566,7 @@ export const toDate = (self: DateTime.DateTime): Date => {
557
566
  Number(parts[5].value),
558
567
  Number(parts[6].value)
559
568
  )
560
- self.adjustedEpochMillis = date.getTime()
569
+ self.adjustedEpochMilliseconds = date.getTime()
561
570
  return date
562
571
  }
563
572
 
@@ -582,7 +591,7 @@ const offsetToString = (offset: number): string => {
582
591
  export const zonedOffsetIso = (self: DateTime.Zoned): string => offsetToString(zonedOffset(self))
583
592
 
584
593
  /** @internal */
585
- export const toEpochMillis = (self: DateTime.DateTime): number => self.epochMillis
594
+ export const toEpochMillis = (self: DateTime.DateTime): number => self.epochMilliseconds
586
595
 
587
596
  /** @internal */
588
597
  export const removeTime = (self: DateTime.DateTime): DateTime.Utc =>
@@ -596,10 +605,10 @@ export const removeTime = (self: DateTime.DateTime): DateTime.Utc =>
596
605
  // =============================================================================
597
606
 
598
607
  const dateToParts = (date: Date): DateTime.DateTime.PartsWithWeekday => ({
599
- millis: date.getUTCMilliseconds(),
600
- seconds: date.getUTCSeconds(),
601
- minutes: date.getUTCMinutes(),
602
- hours: date.getUTCHours(),
608
+ millisecond: date.getUTCMilliseconds(),
609
+ second: date.getUTCSeconds(),
610
+ minute: date.getUTCMinutes(),
611
+ hour: date.getUTCHours(),
603
612
  day: date.getUTCDate(),
604
613
  weekDay: date.getUTCDay(),
605
614
  month: date.getUTCMonth() + 1,
@@ -652,17 +661,17 @@ const setPartsDate = (date: Date, parts: Partial<DateTime.DateTime.PartsWithWeek
652
661
  const diff = parts.weekDay - date.getUTCDay()
653
662
  date.setUTCDate(date.getUTCDate() + diff)
654
663
  }
655
- if (parts.hours !== undefined) {
656
- date.setUTCHours(parts.hours)
664
+ if (parts.hour !== undefined) {
665
+ date.setUTCHours(parts.hour)
657
666
  }
658
- if (parts.minutes !== undefined) {
659
- date.setUTCMinutes(parts.minutes)
667
+ if (parts.minute !== undefined) {
668
+ date.setUTCMinutes(parts.minute)
660
669
  }
661
- if (parts.seconds !== undefined) {
662
- date.setUTCSeconds(parts.seconds)
670
+ if (parts.second !== undefined) {
671
+ date.setUTCSeconds(parts.second)
663
672
  }
664
- if (parts.millis !== undefined) {
665
- date.setUTCMilliseconds(parts.millis)
673
+ if (parts.millisecond !== undefined) {
674
+ date.setUTCMilliseconds(parts.millisecond)
666
675
  }
667
676
  }
668
677
 
@@ -925,8 +934,8 @@ export const add: {
925
934
  2,
926
935
  (self: DateTime.DateTime, parts: Partial<DateTime.DateTime.PartsForMath>): DateTime.DateTime =>
927
936
  mutate(self, (date) => {
928
- if (parts.millis) {
929
- addMillis(date, parts.millis)
937
+ if (parts.milliseconds) {
938
+ addMillis(date, parts.milliseconds)
930
939
  }
931
940
  if (parts.seconds) {
932
941
  addMillis(date, parts.seconds * 1000)
@@ -1100,7 +1109,7 @@ export const nearest: {
1100
1109
  readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1101
1110
  }): DateTime.DateTime =>
1102
1111
  mutate(self, (date) => {
1103
- if (part === "milli") return
1112
+ if (part === "millisecond") return
1104
1113
  const millis = date.getTime()
1105
1114
  const start = new Date(millis)
1106
1115
  startOfDate(start, part, options)
@@ -1157,7 +1166,7 @@ export const format: {
1157
1166
  return new Intl.DateTimeFormat(options?.locale, {
1158
1167
  timeZone: self._tag === "Utc" ? "UTC" : intlTimeZone(self.zone),
1159
1168
  ...options
1160
- }).format(self.epochMillis)
1169
+ }).format(self.epochMilliseconds)
1161
1170
  } catch {
1162
1171
  return new Intl.DateTimeFormat(options?.locale, {
1163
1172
  timeZone: "UTC",
@@ -1190,7 +1199,7 @@ export const formatLocal: {
1190
1199
  readonly locale?: Intl.LocalesArgument
1191
1200
  }
1192
1201
  | undefined
1193
- ): string => new Intl.DateTimeFormat(options?.locale, options).format(self.epochMillis))
1202
+ ): string => new Intl.DateTimeFormat(options?.locale, options).format(self.epochMilliseconds))
1194
1203
 
1195
1204
  /** @internal */
1196
1205
  export const formatUtc: {
@@ -1220,13 +1229,13 @@ export const formatUtc: {
1220
1229
  new Intl.DateTimeFormat(options?.locale, {
1221
1230
  ...options,
1222
1231
  timeZone: "UTC"
1223
- }).format(self.epochMillis))
1232
+ }).format(self.epochMilliseconds))
1224
1233
 
1225
1234
  /** @internal */
1226
1235
  export const formatIntl: {
1227
1236
  (format: Intl.DateTimeFormat): (self: DateTime.DateTime) => string
1228
1237
  (self: DateTime.DateTime, format: Intl.DateTimeFormat): string
1229
- } = dual(2, (self: DateTime.DateTime, format: Intl.DateTimeFormat): string => format.format(self.epochMillis))
1238
+ } = dual(2, (self: DateTime.DateTime, format: Intl.DateTimeFormat): string => format.format(self.epochMilliseconds))
1230
1239
 
1231
1240
  /** @internal */
1232
1241
  export const formatIso = (self: DateTime.DateTime): string => toDateUtc(self).toISOString()
@@ -540,6 +540,11 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
540
540
  maxOpsBeforeYield!: number
541
541
  currentPreventYield!: boolean
542
542
 
543
+ _dispatcher: Scheduler.SchedulerDispatcher | undefined = undefined
544
+ get currentDispatcher(): Scheduler.SchedulerDispatcher {
545
+ return this._dispatcher ??= this.currentScheduler.makeDispatcher()
546
+ }
547
+
543
548
  getRef<X>(ref: ServiceMap.Reference<X>): X {
544
549
  return ServiceMap.getReferenceUnsafe(this.services, ref)
545
550
  }
@@ -675,7 +680,11 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
675
680
  }
676
681
  setServices(services: ServiceMap.ServiceMap<never>): void {
677
682
  this.services = services
678
- this.currentScheduler = this.getRef(Scheduler.Scheduler)
683
+ const scheduler = this.getRef(Scheduler.Scheduler)
684
+ if (scheduler !== this.currentScheduler) {
685
+ this.currentScheduler = scheduler
686
+ this._dispatcher = undefined
687
+ }
679
688
  this.currentSpan = services.mapUnsafe.get(Tracer.ParentSpanKey)
680
689
  this.currentLogLevel = this.getRef(CurrentLogLevel)
681
690
  this.minimumLogLevel = this.getRef(MinimumLogLevel)
@@ -903,7 +912,7 @@ export const yieldNowWith: (priority?: number) => Effect.Effect<void> = makePrim
903
912
  op: "Yield",
904
913
  [evaluate](fiber) {
905
914
  let resumed = false
906
- fiber.currentScheduler.scheduleTask(() => {
915
+ fiber.currentDispatcher.scheduleTask(() => {
907
916
  if (resumed) return
908
917
  fiber.evaluate(exitVoid as any)
909
918
  }, this[args] ?? 0)
@@ -4849,7 +4858,7 @@ export const forkUnsafe = <FA, FE, A, E, R>(
4849
4858
  if (immediate) {
4850
4859
  child.evaluate(effect as any)
4851
4860
  } else {
4852
- parent.currentScheduler.scheduleTask(() => child.evaluate(effect as any), 0)
4861
+ parent.currentDispatcher.scheduleTask(() => child.evaluate(effect as any), 0)
4853
4862
  }
4854
4863
  if (!daemon && !child._exit) {
4855
4864
  parent.children().add(child)
@@ -4990,10 +4999,8 @@ export const runForkWith = <R>(services: ServiceMap.ServiceMap<R>) =>
4990
4999
  effect: Effect.Effect<A, E, R>,
4991
5000
  options?: Effect.RunOptions | undefined
4992
5001
  ): Fiber.Fiber<A, E> => {
4993
- const scheduler = options?.scheduler ||
4994
- (!services.mapUnsafe.has(Scheduler.Scheduler.key) && new Scheduler.MixedScheduler())
4995
5002
  const fiber = new FiberImpl<A, E>(
4996
- scheduler ? ServiceMap.add(services, Scheduler.Scheduler, scheduler) : services,
5003
+ options?.scheduler ? ServiceMap.add(services, Scheduler.Scheduler, options.scheduler) : services,
4997
5004
  options?.uninterruptible !== true
4998
5005
  )
4999
5006
  fiber.evaluate(effect as any)
@@ -5113,7 +5120,7 @@ export const runSyncExitWith = <R>(services: ServiceMap.ServiceMap<R>) => {
5113
5120
  if (effectIsExit(effect)) return effect
5114
5121
  const scheduler = new Scheduler.MixedScheduler("sync")
5115
5122
  const fiber = runFork(effect, { scheduler })
5116
- scheduler.flush()
5123
+ fiber.currentDispatcher?.flush()
5117
5124
  return (fiber as FiberImpl<A, E>)._exit ?? exitDie(fiber)
5118
5125
  }
5119
5126
  }
@@ -5136,108 +5143,6 @@ export const runSyncWith = <R>(services: ServiceMap.ServiceMap<R>) => {
5136
5143
  /** @internal */
5137
5144
  export const runSync: <A, E>(effect: Effect.Effect<A, E>) => A = runSyncWith(ServiceMap.empty())
5138
5145
 
5139
- // ----------------------------------------------------------------------------
5140
- // Semaphore
5141
- // ----------------------------------------------------------------------------
5142
-
5143
- /** @internal */
5144
- class Semaphore {
5145
- public waiters = new Set<() => void>()
5146
- public taken = 0
5147
- public permits: number
5148
-
5149
- constructor(permits: number) {
5150
- this.permits = permits
5151
- }
5152
-
5153
- get free() {
5154
- return this.permits - this.taken
5155
- }
5156
-
5157
- readonly take = (n: number): Effect.Effect<number> => {
5158
- const take: Effect.Effect<number> = suspend(() => {
5159
- if (this.free < n) {
5160
- return callback((resume) => {
5161
- if (this.free >= n) return resume(take)
5162
- const observer = () => {
5163
- if (this.free < n) return
5164
- this.waiters.delete(observer)
5165
- resume(take)
5166
- }
5167
- this.waiters.add(observer)
5168
- return sync(() => {
5169
- this.waiters.delete(observer)
5170
- })
5171
- })
5172
- }
5173
- this.taken += n
5174
- return succeed(n)
5175
- })
5176
- return take
5177
- }
5178
-
5179
- updateTakenUnsafe(fiber: Fiber.Fiber<any, any>, f: (n: number) => number): Effect.Effect<number> {
5180
- this.taken = f(this.taken)
5181
- if (this.waiters.size > 0) {
5182
- fiber.currentScheduler.scheduleTask(() => {
5183
- const iter = this.waiters.values()
5184
- let item = iter.next()
5185
- while (item.done === false && this.free > 0) {
5186
- item.value()
5187
- item = iter.next()
5188
- }
5189
- }, 0)
5190
- }
5191
- return succeed(this.free)
5192
- }
5193
-
5194
- updateTaken(f: (n: number) => number): Effect.Effect<number> {
5195
- return withFiber((fiber) => this.updateTakenUnsafe(fiber, f))
5196
- }
5197
-
5198
- readonly resize = (permits: number) =>
5199
- asVoid(
5200
- withFiber((fiber) => {
5201
- this.permits = permits
5202
- if (this.free < 0) {
5203
- return void_
5204
- }
5205
- return this.updateTakenUnsafe(fiber, (taken) => taken)
5206
- })
5207
- )
5208
-
5209
- readonly release = (n: number): Effect.Effect<number> => this.updateTaken((taken) => taken - n)
5210
-
5211
- readonly releaseAll: Effect.Effect<number> = this.updateTaken((_) => 0)
5212
-
5213
- readonly withPermits = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
5214
- uninterruptibleMask((restore) =>
5215
- flatMap(
5216
- restore(this.take(n)),
5217
- (permits) => onExitPrimitive(restore(self), () => this.release(permits), true)
5218
- )
5219
- )
5220
-
5221
- readonly withPermit = this.withPermits(1)
5222
-
5223
- readonly withPermitsIfAvailable = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
5224
- uninterruptibleMask((restore) =>
5225
- suspend(() => {
5226
- if (this.free < n) {
5227
- return succeedNone
5228
- }
5229
- this.taken += n
5230
- return ensuring(restore(asSome(self)), this.release(n))
5231
- })
5232
- )
5233
- }
5234
-
5235
- /** @internal */
5236
- export const makeSemaphoreUnsafe = (permits: number): Semaphore => new Semaphore(permits)
5237
-
5238
- /** @internal */
5239
- export const makeSemaphore = (permits: number) => sync(() => makeSemaphoreUnsafe(permits))
5240
-
5241
5146
  const succeedTrue = succeed(true)
5242
5147
  const succeedFalse = succeed(false)
5243
5148
 
@@ -5255,7 +5160,7 @@ class Latch implements _Latch.Latch {
5255
5160
  return succeedTrue
5256
5161
  }
5257
5162
  this.scheduled = true
5258
- fiber.currentScheduler.scheduleTask(this.flushWaiters, 0)
5163
+ fiber.currentDispatcher.scheduleTask(this.flushWaiters, 0)
5259
5164
  return succeedTrue
5260
5165
  }
5261
5166
  private flushWaiters = () => {
@@ -5297,7 +5202,7 @@ class Latch implements _Latch.Latch {
5297
5202
  return true
5298
5203
  }
5299
5204
  close = sync(() => this.closeUnsafe())
5300
- whenOpen = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => andThen(this.await, self)
5205
+ whenOpen = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => flatMap(this.await, () => self)
5301
5206
  }
5302
5207
 
5303
5208
  /** @internal */
@@ -5360,16 +5265,15 @@ const NoopSpanProto: Omit<Tracer.Span, "parent" | "name" | "annotations" | "leve
5360
5265
  /** @internal */
5361
5266
  export const noopSpan = (options: {
5362
5267
  readonly name: string
5363
- readonly parent: Tracer.AnySpan | undefined
5268
+ readonly parent: Option.Option<Tracer.AnySpan>
5364
5269
  readonly annotations: ServiceMap.ServiceMap<never>
5365
5270
  }): Tracer.Span => Object.assign(Object.create(NoopSpanProto), options)
5366
5271
 
5367
- const filterDisablePropagation = (span: Tracer.AnySpan | undefined): Tracer.AnySpan | undefined => {
5368
- if (span) {
5369
- return ServiceMap.get(span.annotations, Tracer.DisablePropagation)
5370
- ? span._tag === "Span" ? filterDisablePropagation(span.parent) : undefined
5371
- : span
5372
- }
5272
+ const filterDisablePropagation = (span: Tracer.AnySpan | undefined): Option.Option<Tracer.AnySpan> => {
5273
+ if (!span) return Option.none()
5274
+ return ServiceMap.get(span.annotations, Tracer.DisablePropagation)
5275
+ ? span._tag === "Span" ? filterDisablePropagation(Option.getOrUndefined(span.parent)) : Option.none()
5276
+ : Option.some(span)
5373
5277
  }
5374
5278
 
5375
5279
  /** @internal */
@@ -5380,7 +5284,11 @@ export const makeSpanUnsafe = <XA, XE>(
5380
5284
  ) => {
5381
5285
  const disablePropagation = !fiber.getRef(TracerEnabled) ||
5382
5286
  (options?.annotations && ServiceMap.get(options.annotations, Tracer.DisablePropagation))
5383
- const parent = options?.parent ?? (options?.root ? undefined : filterDisablePropagation(fiber.currentSpan))
5287
+ const parent = options?.parent !== undefined
5288
+ ? Option.some(options.parent)
5289
+ : options?.root
5290
+ ? Option.none<Tracer.AnySpan>()
5291
+ : filterDisablePropagation(fiber.currentSpan)
5384
5292
 
5385
5293
  let span: Tracer.Span
5386
5294
 
@@ -5413,9 +5321,9 @@ export const makeSpanUnsafe = <XA, XE>(
5413
5321
  links,
5414
5322
  startTime: timingEnabled ? clock.currentTimeNanosUnsafe() : 0n,
5415
5323
  kind: options?.kind ?? "internal",
5416
- root: options?.root ?? options?.parent === undefined,
5324
+ root: options?.root ?? Option.isNone(parent),
5417
5325
  sampled: options?.sampled ??
5418
- (parent?.sampled === false
5326
+ (Option.isSome(parent) && parent.value.sampled === false
5419
5327
  ? false
5420
5328
  : !isLogLevelGreaterThan(fiber.getRef(Tracer.MinimumTraceLevel), level))
5421
5329
  })
@@ -6195,7 +6103,7 @@ const prettyLoggerBrowser = (options: {
6195
6103
  export const defaultLogger = loggerMake<unknown, void>(({ cause, date, fiber, logLevel, message }) => {
6196
6104
  const message_ = Array.isArray(message) ? message.slice() : [message]
6197
6105
  if (cause.reasons.length > 0) {
6198
- message_.unshift(causePretty(cause))
6106
+ message_.push(causePretty(cause))
6199
6107
  }
6200
6108
  const now = date.getTime()
6201
6109
  const spans = fiber.getRef(CurrentLogSpans)
@@ -1271,14 +1271,15 @@ export const filterMap = dual<
1271
1271
 
1272
1272
  /** @internal */
1273
1273
  export const findFirst = dual<
1274
- <K, A>(predicate: (a: NoInfer<A>, k: K) => boolean) => (self: HashMap<K, A>) => [K, A] | undefined,
1275
- <K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean) => [K, A] | undefined
1274
+ <K, A>(predicate: (a: NoInfer<A>, k: K) => boolean) => (self: HashMap<K, A>) => Option.Option<[K, A]>,
1275
+ <K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean) => Option.Option<[K, A]>
1276
1276
  >(2, <K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean) => {
1277
1277
  for (const [key, value] of self) {
1278
1278
  if (predicate(value, key)) {
1279
- return [key, value]
1279
+ return Option.some([key, value])
1280
1280
  }
1281
1281
  }
1282
+ return Option.none()
1282
1283
  })
1283
1284
 
1284
1285
  /** @internal */
@@ -45,10 +45,17 @@ const SomeProto = Object.assign(Object.create(CommonProto), {
45
45
  }
46
46
  })
47
47
 
48
+ Object.defineProperty(SomeProto, "valueOrUndefined", {
49
+ get() {
50
+ return this.value
51
+ }
52
+ })
53
+
48
54
  const NoneHash = Hash.hash("None")
49
55
  const NoneProto = Object.assign(Object.create(CommonProto), {
50
56
  _tag: "None",
51
57
  _op: "None",
58
+ valueOrUndefined: undefined,
52
59
  [Equal.symbol]<A>(this: Option.None<A>, that: unknown): boolean {
53
60
  return isOption(that) && isNone(that)
54
61
  },
@@ -682,19 +682,19 @@ export const modify = dual<
682
682
 
683
683
  /** @internal */
684
684
  export const longestPrefixOf = dual<
685
- (key: string) => <V>(self: TR.Trie<V>) => [string, V] | undefined,
686
- <V>(self: TR.Trie<V>, key: string) => [string, V] | undefined
685
+ (key: string) => <V>(self: TR.Trie<V>) => Option.Option<[string, V]>,
686
+ <V>(self: TR.Trie<V>, key: string) => Option.Option<[string, V]>
687
687
  >(
688
688
  2,
689
- <V>(self: TR.Trie<V>, key: string): [string, V] | undefined => {
689
+ <V>(self: TR.Trie<V>, key: string): Option.Option<[string, V]> => {
690
690
  let n: Node<V> | undefined = (self as TrieImpl<V>)._root
691
- if (n === undefined || key.length === 0) return undefined
692
- let longestPrefixNode: [string, V] | undefined = undefined
691
+ if (n === undefined || key.length === 0) return Option.none()
692
+ let longestPrefixNode: Option.Option<[string, V]> = Option.none()
693
693
  let cIndex = 0
694
694
  while (cIndex < key.length) {
695
695
  const c = key[cIndex]
696
696
  if (n.value !== undefined) {
697
- longestPrefixNode = [key.slice(0, cIndex + 1), n.value]
697
+ longestPrefixNode = Option.some([key.slice(0, cIndex + 1), n.value])
698
698
  }
699
699
 
700
700
  if (c > n.key) {
@@ -183,7 +183,7 @@ export class NetworkError extends Schema.ErrorClass<NetworkError>(
183
183
  description: error.description,
184
184
  reason: error._tag,
185
185
  request: {
186
- hash: error.request.hash,
186
+ hash: Option.getOrUndefined(error.request.hash),
187
187
  headers: redactHeaders(error.request.headers),
188
188
  method: error.request.method,
189
189
  url: error.request.url,