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/ServiceMap.ts CHANGED
@@ -446,6 +446,7 @@ export interface ServiceMap<in Services> extends Equal.Equal, Pipeable, Inspecta
446
446
  readonly _Services: Types.Contravariant<Services>
447
447
  }
448
448
  readonly mapUnsafe: ReadonlyMap<string, any>
449
+ mutable: boolean
449
450
  }
450
451
 
451
452
  /**
@@ -467,10 +468,11 @@ export interface ServiceMap<in Services> extends Equal.Equal, Pipeable, Inspecta
467
468
  export const makeUnsafe = <Services = never>(mapUnsafe: ReadonlyMap<string, any>): ServiceMap<Services> => {
468
469
  const self = Object.create(Proto)
469
470
  self.mapUnsafe = mapUnsafe
471
+ self.mutable = false
470
472
  return self
471
473
  }
472
474
 
473
- const Proto: Omit<ServiceMap<never>, "mapUnsafe"> = {
475
+ const Proto: Omit<ServiceMap<never>, "mapUnsafe" | "mutable"> = {
474
476
  ...PipeInspectableProto,
475
477
  [TypeId]: {
476
478
  _Services: (_: never) => _
@@ -676,11 +678,10 @@ export const add: {
676
678
  self: ServiceMap<Services>,
677
679
  key: Key<I, S>,
678
680
  service: Types.NoInfer<S>
679
- ): ServiceMap<Services | I> => {
680
- const map = new Map(self.mapUnsafe)
681
- map.set(key.key, service)
682
- return makeUnsafe(map)
683
- })
681
+ ): ServiceMap<Services | I> =>
682
+ withMapUnsafe(self, (map) => {
683
+ map.set(key.key, service)
684
+ }))
684
685
 
685
686
  /**
686
687
  * @since 4.0.0
@@ -705,15 +706,14 @@ export const addOrOmit: {
705
706
  self: ServiceMap<Services>,
706
707
  key: Key<I, S>,
707
708
  service: Option.Option<Types.NoInfer<S>>
708
- ): ServiceMap<Services | I> => {
709
- const map = new Map(self.mapUnsafe)
710
- if (service._tag === "None") {
711
- map.delete(key.key)
712
- } else {
713
- map.set(key.key, service.value)
714
- }
715
- return makeUnsafe(map)
716
- })
709
+ ): ServiceMap<Services | I> =>
710
+ withMapUnsafe(self, (map) => {
711
+ if (service._tag === "None") {
712
+ map.delete(key.key)
713
+ } else {
714
+ map.set(key.key, service.value)
715
+ }
716
+ }))
717
717
 
718
718
  /**
719
719
  * Get a service from the context that corresponds to the given key, or
@@ -1253,9 +1253,9 @@ export const merge: {
1253
1253
  } = dual(2, <Services, R1>(self: ServiceMap<Services>, that: ServiceMap<R1>): ServiceMap<Services | R1> => {
1254
1254
  if (self.mapUnsafe.size === 0) return that as any
1255
1255
  if (that.mapUnsafe.size === 0) return self as any
1256
- const map = new Map(self.mapUnsafe)
1257
- that.mapUnsafe.forEach((value, key) => map.set(key, value))
1258
- return makeUnsafe(map)
1256
+ return withMapUnsafe(self, (map) => {
1257
+ that.mapUnsafe.forEach((value, key) => map.set(key, value))
1258
+ })
1259
1259
  })
1260
1260
 
1261
1261
  /**
@@ -1333,16 +1333,14 @@ export const mergeAll = <T extends Array<unknown>>(
1333
1333
  export const pick = <S extends ReadonlyArray<Key<any, any>>>(
1334
1334
  ...services: S
1335
1335
  ) =>
1336
- <Services>(self: ServiceMap<Services>): ServiceMap<Services & Service.Identifier<S[number]>> => {
1337
- const map = new Map<string, any>()
1338
- const keySet = new Set(services.map((key) => key.key))
1339
- self.mapUnsafe.forEach((value, key) => {
1340
- if (keySet.has(key)) {
1341
- map.set(key, value)
1342
- }
1336
+ <Services>(self: ServiceMap<Services>): ServiceMap<Services & Service.Identifier<S[number]>> =>
1337
+ withMapUnsafe(self, (map) => {
1338
+ const keySet = new Set(services.map((key) => key.key))
1339
+ map.forEach((_, key) => {
1340
+ if (keySet.has(key)) return
1341
+ map.delete(key)
1342
+ })
1343
1343
  })
1344
- return makeUnsafe(map)
1345
- }
1346
1344
 
1347
1345
  /**
1348
1346
  * @example
@@ -1373,11 +1371,65 @@ export const pick = <S extends ReadonlyArray<Key<any, any>>>(
1373
1371
  export const omit = <S extends ReadonlyArray<Key<any, any>>>(
1374
1372
  ...keys: S
1375
1373
  ) =>
1376
- <Services>(self: ServiceMap<Services>): ServiceMap<Exclude<Services, Service.Identifier<S[number]>>> => {
1377
- const map = new Map(self.mapUnsafe)
1378
- for (let i = 0; i < keys.length; i++) {
1379
- map.delete(keys[i].key)
1374
+ <Services>(self: ServiceMap<Services>): ServiceMap<Exclude<Services, Service.Identifier<S[number]>>> =>
1375
+ withMapUnsafe(self, (map) => {
1376
+ for (let i = 0; i < keys.length; i++) {
1377
+ map.delete(keys[i].key)
1378
+ }
1379
+ })
1380
+
1381
+ /**
1382
+ * Perform a series of mutations on a `ServiceMap`. Prevents unnecessary copying
1383
+ * of the underlying map when multiple mutations are needed.
1384
+ *
1385
+ * @since 4.0.0
1386
+ * @category Utils
1387
+ */
1388
+ export const mutate: {
1389
+ /**
1390
+ * Perform a series of mutations on a `ServiceMap`. Prevents unnecessary copying
1391
+ * of the underlying map when multiple mutations are needed.
1392
+ *
1393
+ * @since 4.0.0
1394
+ * @category Utils
1395
+ */
1396
+ <Services, B>(f: (serviceMap: ServiceMap<Services>) => ServiceMap<B>): <Services>(self: ServiceMap<Services>) => ServiceMap<B>
1397
+ /**
1398
+ * Perform a series of mutations on a `ServiceMap`. Prevents unnecessary copying
1399
+ * of the underlying map when multiple mutations are needed.
1400
+ *
1401
+ * @since 4.0.0
1402
+ * @category Utils
1403
+ */
1404
+ <Services, B>(
1405
+ self: ServiceMap<Services>,
1406
+ f: (serviceMap: ServiceMap<Services>) => ServiceMap<B>
1407
+ ): ServiceMap<B>
1408
+ } = dual(
1409
+ 2,
1410
+ <Services, B>(self: ServiceMap<Services>, f: (serviceMap: ServiceMap<Services>) => ServiceMap<B>): ServiceMap<B> => {
1411
+ const next = makeUnsafe</**
1412
+ * Perform a series of mutations on a `ServiceMap`. Prevents unnecessary copying
1413
+ * of the underlying map when multiple mutations are needed.
1414
+ *
1415
+ * @since 4.0.0
1416
+ * @category Utils
1417
+ */
1418
+ Services>(new Map(self.mapUnsafe))
1419
+ next.mutable = true
1420
+ const result = f(next)
1421
+ result.mutable = false
1422
+ return result
1380
1423
  }
1424
+ )
1425
+
1426
+ const withMapUnsafe = <Services, B>(self: ServiceMap<Services>, f: (map: Map<string, any>) => void): ServiceMap<B> => {
1427
+ if (self.mutable) {
1428
+ f(self.mapUnsafe as any)
1429
+ return self as any
1430
+ }
1431
+ const map = new Map(self.mapUnsafe)
1432
+ f(map)
1381
1433
  return makeUnsafe(map)
1382
1434
  }
1383
1435
 
package/src/Stream.ts CHANGED
@@ -3817,7 +3817,7 @@ export const merge: {
3817
3817
  } | undefined
3818
3818
  ): Stream<A | A2, E | E2, R | R2>
3819
3819
  } = dual(
3820
- 2,
3820
+ (args) => isStream(args[0]) && isStream(args[1]),
3821
3821
  <A, E, R, A2, E2, R2>(
3822
3822
  self: Stream<A, E, R>,
3823
3823
  that: Stream<A2, E2, R2>,
package/src/String.ts CHANGED
@@ -10,6 +10,7 @@ import * as Equ from "./Equivalence.ts"
10
10
  import { dual } from "./Function.ts"
11
11
  import * as readonlyArray from "./internal/array.ts"
12
12
  import * as number from "./Number.ts"
13
+ import * as Option from "./Option.ts"
13
14
  import * as order from "./Order.ts"
14
15
  import type * as Ordering from "./Ordering.ts"
15
16
  import type { Refinement } from "./Predicate.ts"
@@ -534,15 +535,15 @@ export const endsWith = (searchString: string, position?: number) => (self: stri
534
535
  self.endsWith(searchString, position)
535
536
 
536
537
  /**
537
- * Returns the character code at the specified index, or `undefined` if the index is out of bounds.
538
+ * Returns the character code at the specified index, or `None` if the index is out of bounds.
538
539
  *
539
540
  * **Example**
540
541
  *
541
542
  * ```ts
542
543
  * import { String } from "effect"
543
544
  *
544
- * String.charCodeAt("abc", 1) // 98
545
- * String.charCodeAt("abc", 4) // undefined
545
+ * String.charCodeAt("abc", 1) // Option.some(98)
546
+ * String.charCodeAt("abc", 4) // Option.none()
546
547
  * ```
547
548
  *
548
549
  * @category elements
@@ -550,43 +551,41 @@ export const endsWith = (searchString: string, position?: number) => (self: stri
550
551
  */
551
552
  export const charCodeAt: {
552
553
  /**
553
- * Returns the character code at the specified index, or `undefined` if the index is out of bounds.
554
+ * Returns the character code at the specified index, or `None` if the index is out of bounds.
554
555
  *
555
556
  * **Example**
556
557
  *
557
558
  * ```ts
558
559
  * import { String } from "effect"
559
560
  *
560
- * String.charCodeAt("abc", 1) // 98
561
- * String.charCodeAt("abc", 4) // undefined
561
+ * String.charCodeAt("abc", 1) // Option.some(98)
562
+ * String.charCodeAt("abc", 4) // Option.none()
562
563
  * ```
563
564
  *
564
565
  * @category elements
565
566
  * @since 2.0.0
566
567
  */
567
- (index: number): (self: string) => number | undefined
568
+ (index: number): (self: string) => Option.Option<number>
568
569
  /**
569
- * Returns the character code at the specified index, or `undefined` if the index is out of bounds.
570
+ * Returns the character code at the specified index, or `None` if the index is out of bounds.
570
571
  *
571
572
  * **Example**
572
573
  *
573
574
  * ```ts
574
575
  * import { String } from "effect"
575
576
  *
576
- * String.charCodeAt("abc", 1) // 98
577
- * String.charCodeAt("abc", 4) // undefined
577
+ * String.charCodeAt("abc", 1) // Option.some(98)
578
+ * String.charCodeAt("abc", 4) // Option.none()
578
579
  * ```
579
580
  *
580
581
  * @category elements
581
582
  * @since 2.0.0
582
583
  */
583
- (self: string, index: number): number | undefined
584
+ (self: string, index: number): Option.Option<number>
584
585
  } = dual(
585
586
  2,
586
- (self: string, index: number): number | undefined => {
587
- const out = self.charCodeAt(index)
588
- return isNaN(out) ? undefined : out
589
- }
587
+ (self: string, index: number): Option.Option<number> =>
588
+ Option.filter(Option.some(self.charCodeAt(index)), (charCode) => !isNaN(charCode))
590
589
  )
591
590
 
592
591
  /**
@@ -607,23 +606,54 @@ export const charCodeAt: {
607
606
  export const substring = (start: number, end?: number) => (self: string): string => self.substring(start, end)
608
607
 
609
608
  /**
610
- * A `pipe`-able version of the native `charAt` method.
609
+ * Returns the character at the specified index, or `None` if the index is out of bounds.
611
610
  *
612
611
  * **Example**
613
612
  *
614
613
  * ```ts
615
614
  * import { pipe, String } from "effect"
616
615
  *
617
- * pipe("abc", String.at(1)) // "b"
618
- * pipe("abc", String.at(4)) // undefined
616
+ * pipe("abc", String.at(1)) // Option.some("b")
617
+ * pipe("abc", String.at(4)) // Option.none()
619
618
  * ```
620
619
  *
621
620
  * @category elements
622
621
  * @since 2.0.0
623
622
  */
624
- export const at = (index: number) => (self: string): string | undefined => {
625
- return self.charAt(index)
626
- }
623
+ export const at: {
624
+ /**
625
+ * Returns the character at the specified index, or `None` if the index is out of bounds.
626
+ *
627
+ * **Example**
628
+ *
629
+ * ```ts
630
+ * import { pipe, String } from "effect"
631
+ *
632
+ * pipe("abc", String.at(1)) // Option.some("b")
633
+ * pipe("abc", String.at(4)) // Option.none()
634
+ * ```
635
+ *
636
+ * @category elements
637
+ * @since 2.0.0
638
+ */
639
+ (index: number): (self: string) => Option.Option<string>
640
+ /**
641
+ * Returns the character at the specified index, or `None` if the index is out of bounds.
642
+ *
643
+ * **Example**
644
+ *
645
+ * ```ts
646
+ * import { pipe, String } from "effect"
647
+ *
648
+ * pipe("abc", String.at(1)) // Option.some("b")
649
+ * pipe("abc", String.at(4)) // Option.none()
650
+ * ```
651
+ *
652
+ * @category elements
653
+ * @since 2.0.0
654
+ */
655
+ (self: string, index: number): Option.Option<string>
656
+ } = dual(2, (self: string, index: number): Option.Option<string> => Option.fromUndefinedOr(self.at(index)))
627
657
 
628
658
  /**
629
659
  * Returns the character at the specified index, or `None` if the index is out of bounds.
@@ -633,8 +663,8 @@ export const at = (index: number) => (self: string): string | undefined => {
633
663
  * ```ts
634
664
  * import { pipe, String } from "effect"
635
665
  *
636
- * pipe("abc", String.charAt(1)) // "b"
637
- * pipe("abc", String.charAt(4)) // undefined
666
+ * pipe("abc", String.charAt(1)) // Option.some("b")
667
+ * pipe("abc", String.charAt(4)) // Option.none()
638
668
  * ```
639
669
  *
640
670
  * @category elements
@@ -649,14 +679,14 @@ export const charAt: {
649
679
  * ```ts
650
680
  * import { pipe, String } from "effect"
651
681
  *
652
- * pipe("abc", String.charAt(1)) // "b"
653
- * pipe("abc", String.charAt(4)) // undefined
682
+ * pipe("abc", String.charAt(1)) // Option.some("b")
683
+ * pipe("abc", String.charAt(4)) // Option.none()
654
684
  * ```
655
685
  *
656
686
  * @category elements
657
687
  * @since 2.0.0
658
688
  */
659
- (index: number): (self: string) => string | undefined
689
+ (index: number): (self: string) => Option.Option<string>
660
690
  /**
661
691
  * Returns the character at the specified index, or `None` if the index is out of bounds.
662
692
  *
@@ -665,40 +695,68 @@ export const charAt: {
665
695
  * ```ts
666
696
  * import { pipe, String } from "effect"
667
697
  *
668
- * pipe("abc", String.charAt(1)) // "b"
669
- * pipe("abc", String.charAt(4)) // undefined
698
+ * pipe("abc", String.charAt(1)) // Option.some("b")
699
+ * pipe("abc", String.charAt(4)) // Option.none()
670
700
  * ```
671
701
  *
672
702
  * @category elements
673
703
  * @since 2.0.0
674
704
  */
675
- (self: string, index: number): string | undefined
705
+ (self: string, index: number): Option.Option<string>
676
706
  } = dual(
677
707
  2,
678
- (self: string, index: number): string | undefined => {
679
- const out = self.charAt(index)
680
- return isNonEmpty(out) ? out : undefined
681
- }
708
+ (self: string, index: number): Option.Option<string> => Option.filter(Option.some(self.charAt(index)), isNonEmpty)
682
709
  )
683
710
 
684
711
  /**
685
- * A `pipe`-able version of the native `codePointAt` method.
712
+ * Returns the Unicode code point at the specified index, or `None` if the index is out of bounds.
686
713
  *
687
714
  * **Example**
688
715
  *
689
716
  * ```ts
690
717
  * import { pipe, String } from "effect"
691
718
  *
692
- * pipe("abc", String.codePointAt(1)) // 98
693
- * pipe("abc", String.codePointAt(10)) // undefined
719
+ * pipe("abc", String.codePointAt(1)) // Option.some(98)
720
+ * pipe("abc", String.codePointAt(10)) // Option.none()
694
721
  * ```
695
722
  *
696
723
  * @category elements
697
724
  * @since 2.0.0
698
725
  */
699
- export const codePointAt = (index: number) => (self: string): number | undefined => {
700
- return self.codePointAt(index)
701
- }
726
+ export const codePointAt: {
727
+ /**
728
+ * Returns the Unicode code point at the specified index, or `None` if the index is out of bounds.
729
+ *
730
+ * **Example**
731
+ *
732
+ * ```ts
733
+ * import { pipe, String } from "effect"
734
+ *
735
+ * pipe("abc", String.codePointAt(1)) // Option.some(98)
736
+ * pipe("abc", String.codePointAt(10)) // Option.none()
737
+ * ```
738
+ *
739
+ * @category elements
740
+ * @since 2.0.0
741
+ */
742
+ (index: number): (self: string) => Option.Option<number>
743
+ /**
744
+ * Returns the Unicode code point at the specified index, or `None` if the index is out of bounds.
745
+ *
746
+ * **Example**
747
+ *
748
+ * ```ts
749
+ * import { pipe, String } from "effect"
750
+ *
751
+ * pipe("abc", String.codePointAt(1)) // Option.some(98)
752
+ * pipe("abc", String.codePointAt(10)) // Option.none()
753
+ * ```
754
+ *
755
+ * @category elements
756
+ * @since 2.0.0
757
+ */
758
+ (self: string, index: number): Option.Option<number>
759
+ } = dual(2, (self: string, index: number): Option.Option<number> => Option.fromUndefinedOr(self.codePointAt(index)))
702
760
 
703
761
  /**
704
762
  * Returns the index of the first occurrence of a substring, or `None` if not found.
@@ -708,17 +766,15 @@ export const codePointAt = (index: number) => (self: string): number | undefined
708
766
  * ```ts
709
767
  * import { pipe, String } from "effect"
710
768
  *
711
- * pipe("abbbc", String.indexOf("b")) // 1
712
- * pipe("abbbc", String.indexOf("z")) // undefined
769
+ * pipe("abbbc", String.indexOf("b")) // Option.some(1)
770
+ * pipe("abbbc", String.indexOf("z")) // Option.none()
713
771
  * ```
714
772
  *
715
773
  * @category searching
716
774
  * @since 2.0.0
717
775
  */
718
- export const indexOf = (searchString: string) => (self: string): number | undefined => {
719
- const out = self.indexOf(searchString)
720
- return out >= 0 ? out : undefined
721
- }
776
+ export const indexOf = (searchString: string) => (self: string): Option.Option<number> =>
777
+ Option.filter(Option.some(self.indexOf(searchString)), number.isGreaterThanOrEqualTo(0))
722
778
 
723
779
  /**
724
780
  * Returns the index of the last occurrence of a substring, or `None` if not found.
@@ -728,17 +784,15 @@ export const indexOf = (searchString: string) => (self: string): number | undefi
728
784
  * ```ts
729
785
  * import { pipe, String } from "effect"
730
786
  *
731
- * pipe("abbbc", String.lastIndexOf("b")) // 3
732
- * pipe("abbbc", String.lastIndexOf("d")) // undefined
787
+ * pipe("abbbc", String.lastIndexOf("b")) // Option.some(3)
788
+ * pipe("abbbc", String.lastIndexOf("d")) // Option.none()
733
789
  * ```
734
790
  *
735
791
  * @category searching
736
792
  * @since 2.0.0
737
793
  */
738
- export const lastIndexOf = (searchString: string) => (self: string): number | undefined => {
739
- const out = self.lastIndexOf(searchString)
740
- return out >= 0 ? out : undefined
741
- }
794
+ export const lastIndexOf = (searchString: string) => (self: string): Option.Option<number> =>
795
+ Option.filter(Option.some(self.lastIndexOf(searchString)), number.isGreaterThanOrEqualTo(0))
742
796
 
743
797
  /**
744
798
  * Compares two strings according to the current locale.
@@ -768,14 +822,15 @@ export const localeCompare =
768
822
  * ```ts
769
823
  * import { pipe, String } from "effect"
770
824
  *
771
- * pipe("hello", String.match(/l+/)) // ["ll"]
772
- * pipe("hello", String.match(/x/)) // null
825
+ * pipe("hello", String.match(/l+/)) // Option.some(["ll"])
826
+ * pipe("hello", String.match(/x/)) // Option.none()
773
827
  * ```
774
828
  *
775
829
  * @category searching
776
830
  * @since 2.0.0
777
831
  */
778
- export const match = (regExp: RegExp | string) => (self: string): RegExpMatchArray | null => self.match(regExp)
832
+ export const match = (regExp: RegExp | string) => (self: string): Option.Option<RegExpMatchArray> =>
833
+ Option.fromNullOr(self.match(regExp))
779
834
 
780
835
  /**
781
836
  * It is the `pipe`-able version of the native `matchAll` method.
@@ -896,9 +951,9 @@ export const replaceAll = (searchValue: string | RegExp, replaceValue: string) =
896
951
  * ```ts
897
952
  * import { String } from "effect"
898
953
  *
899
- * String.search("ababb", "b") // 1
900
- * String.search("ababb", "/abb/") // 2
901
- * String.search("ababb", "d") // undefined
954
+ * String.search("ababb", "b") // Option.some(1)
955
+ * String.search("ababb", /abb/) // Option.some(2)
956
+ * String.search("ababb", "d") // Option.none()
902
957
  * ```
903
958
  *
904
959
  * @category searching
@@ -913,15 +968,15 @@ export const search: {
913
968
  * ```ts
914
969
  * import { String } from "effect"
915
970
  *
916
- * String.search("ababb", "b") // 1
917
- * String.search("ababb", "/abb/") // 2
918
- * String.search("ababb", "d") // undefined
971
+ * String.search("ababb", "b") // Option.some(1)
972
+ * String.search("ababb", /abb/) // Option.some(2)
973
+ * String.search("ababb", "d") // Option.none()
919
974
  * ```
920
975
  *
921
976
  * @category searching
922
977
  * @since 2.0.0
923
978
  */
924
- (regExp: RegExp | string): (self: string) => number | undefined
979
+ (regExp: RegExp | string): (self: string) => Option.Option<number>
925
980
  /**
926
981
  * Searches for a match between a regular expression and the string.
927
982
  *
@@ -930,21 +985,19 @@ export const search: {
930
985
  * ```ts
931
986
  * import { String } from "effect"
932
987
  *
933
- * String.search("ababb", "b") // 1
934
- * String.search("ababb", "/abb/") // 2
935
- * String.search("ababb", "d") // undefined
988
+ * String.search("ababb", "b") // Option.some(1)
989
+ * String.search("ababb", /abb/) // Option.some(2)
990
+ * String.search("ababb", "d") // Option.none()
936
991
  * ```
937
992
  *
938
993
  * @category searching
939
994
  * @since 2.0.0
940
995
  */
941
- (self: string, regExp: RegExp | string): number | undefined
996
+ (self: string, regExp: RegExp | string): Option.Option<number>
942
997
  } = dual(
943
998
  2,
944
- (self: string, regExp: RegExp | string): number | undefined => {
945
- const out = self.search(regExp)
946
- return out >= 0 ? out : undefined
947
- }
999
+ (self: string, regExp: RegExp | string): Option.Option<number> =>
1000
+ Option.filter(Option.some(self.search(regExp)), number.isGreaterThanOrEqualTo(0))
948
1001
  )
949
1002
 
950
1003
  /**