effect 4.0.0-beta.2 → 4.0.0-beta.21

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 (881) hide show
  1. package/dist/Array.d.ts +127 -299
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +102 -62
  4. package/dist/Array.js.map +1 -1
  5. package/dist/Cache.d.ts +2 -2
  6. package/dist/Cache.d.ts.map +1 -1
  7. package/dist/Cache.js +6 -5
  8. package/dist/Cache.js.map +1 -1
  9. package/dist/Cause.d.ts +1 -1
  10. package/dist/Cause.d.ts.map +1 -1
  11. package/dist/Channel.d.ts +116 -30
  12. package/dist/Channel.d.ts.map +1 -1
  13. package/dist/Channel.js +82 -37
  14. package/dist/Channel.js.map +1 -1
  15. package/dist/Chunk.d.ts +54 -247
  16. package/dist/Chunk.d.ts.map +1 -1
  17. package/dist/Chunk.js +36 -67
  18. package/dist/Chunk.js.map +1 -1
  19. package/dist/Combiner.d.ts +280 -13
  20. package/dist/Combiner.d.ts.map +1 -1
  21. package/dist/Combiner.js +198 -7
  22. package/dist/Combiner.js.map +1 -1
  23. package/dist/Config.d.ts +165 -9
  24. package/dist/Config.d.ts.map +1 -1
  25. package/dist/Config.js +62 -7
  26. package/dist/Config.js.map +1 -1
  27. package/dist/ConfigProvider.d.ts +1 -1
  28. package/dist/Cron.d.ts +1 -1
  29. package/dist/Data.d.ts +534 -365
  30. package/dist/Data.d.ts.map +1 -1
  31. package/dist/Data.js +132 -79
  32. package/dist/Data.js.map +1 -1
  33. package/dist/DateTime.d.ts +23 -161
  34. package/dist/DateTime.d.ts.map +1 -1
  35. package/dist/DateTime.js +6 -51
  36. package/dist/DateTime.js.map +1 -1
  37. package/dist/Duration.d.ts +12 -12
  38. package/dist/Duration.d.ts.map +1 -1
  39. package/dist/Duration.js +12 -12
  40. package/dist/Duration.js.map +1 -1
  41. package/dist/Effect.d.ts +829 -692
  42. package/dist/Effect.d.ts.map +1 -1
  43. package/dist/Effect.js +263 -251
  44. package/dist/Effect.js.map +1 -1
  45. package/dist/Encoding.d.ts +194 -0
  46. package/dist/Encoding.d.ts.map +1 -0
  47. package/dist/Encoding.js +352 -0
  48. package/dist/Encoding.js.map +1 -0
  49. package/dist/Equal.d.ts +276 -109
  50. package/dist/Equal.d.ts.map +1 -1
  51. package/dist/Equal.js +124 -48
  52. package/dist/Equal.js.map +1 -1
  53. package/dist/ErrorReporter.d.ts +376 -0
  54. package/dist/ErrorReporter.d.ts.map +1 -0
  55. package/dist/ErrorReporter.js +246 -0
  56. package/dist/ErrorReporter.js.map +1 -0
  57. package/dist/Fiber.d.ts +2 -2
  58. package/dist/Fiber.d.ts.map +1 -1
  59. package/dist/Fiber.js.map +1 -1
  60. package/dist/FileSystem.d.ts +1 -1
  61. package/dist/FileSystem.d.ts.map +1 -1
  62. package/dist/FileSystem.js +5 -5
  63. package/dist/FileSystem.js.map +1 -1
  64. package/dist/Filter.d.ts +30 -34
  65. package/dist/Filter.d.ts.map +1 -1
  66. package/dist/Filter.js +15 -13
  67. package/dist/Filter.js.map +1 -1
  68. package/dist/Formatter.d.ts +131 -47
  69. package/dist/Formatter.d.ts.map +1 -1
  70. package/dist/Formatter.js +229 -51
  71. package/dist/Formatter.js.map +1 -1
  72. package/dist/Graph.d.ts +1 -1
  73. package/dist/Graph.d.ts.map +1 -1
  74. package/dist/Graph.js +5 -8
  75. package/dist/Graph.js.map +1 -1
  76. package/dist/HashMap.d.ts +15 -14
  77. package/dist/HashMap.d.ts.map +1 -1
  78. package/dist/HashMap.js +4 -4
  79. package/dist/HashMap.js.map +1 -1
  80. package/dist/Iterable.d.ts +40 -39
  81. package/dist/Iterable.d.ts.map +1 -1
  82. package/dist/Iterable.js +94 -22
  83. package/dist/Iterable.js.map +1 -1
  84. package/dist/JsonSchema.d.ts +299 -10
  85. package/dist/JsonSchema.d.ts.map +1 -1
  86. package/dist/JsonSchema.js +323 -4
  87. package/dist/JsonSchema.js.map +1 -1
  88. package/dist/Latch.d.ts +109 -0
  89. package/dist/Latch.d.ts.map +1 -0
  90. package/dist/Latch.js +72 -0
  91. package/dist/Latch.js.map +1 -0
  92. package/dist/Layer.d.ts +9 -9
  93. package/dist/Layer.d.ts.map +1 -1
  94. package/dist/Layer.js.map +1 -1
  95. package/dist/LayerMap.d.ts +4 -4
  96. package/dist/LayerMap.d.ts.map +1 -1
  97. package/dist/LogLevel.d.ts +32 -0
  98. package/dist/LogLevel.d.ts.map +1 -1
  99. package/dist/LogLevel.js +28 -100
  100. package/dist/LogLevel.js.map +1 -1
  101. package/dist/Logger.d.ts +29 -95
  102. package/dist/Logger.d.ts.map +1 -1
  103. package/dist/Logger.js +2 -3
  104. package/dist/Logger.js.map +1 -1
  105. package/dist/ManagedRuntime.d.ts +1 -1
  106. package/dist/ManagedRuntime.js +1 -1
  107. package/dist/Metric.d.ts +2 -2
  108. package/dist/Metric.d.ts.map +1 -1
  109. package/dist/Metric.js +1 -1
  110. package/dist/Metric.js.map +1 -1
  111. package/dist/Optic.d.ts +947 -18
  112. package/dist/Optic.d.ts.map +1 -1
  113. package/dist/Optic.js +454 -5
  114. package/dist/Optic.js.map +1 -1
  115. package/dist/Option.d.ts +22 -15
  116. package/dist/Option.d.ts.map +1 -1
  117. package/dist/Option.js +14 -7
  118. package/dist/Option.js.map +1 -1
  119. package/dist/Pipeable.d.ts +17 -0
  120. package/dist/Pipeable.d.ts.map +1 -1
  121. package/dist/Pipeable.js +19 -1
  122. package/dist/Pipeable.js.map +1 -1
  123. package/dist/PlatformError.d.ts +10 -9
  124. package/dist/PlatformError.d.ts.map +1 -1
  125. package/dist/PlatformError.js +2 -2
  126. package/dist/PlatformError.js.map +1 -1
  127. package/dist/Pool.d.ts +6 -4
  128. package/dist/Pool.d.ts.map +1 -1
  129. package/dist/Pool.js +7 -5
  130. package/dist/Pool.js.map +1 -1
  131. package/dist/PubSub.d.ts +3 -2
  132. package/dist/PubSub.d.ts.map +1 -1
  133. package/dist/PubSub.js +3 -2
  134. package/dist/PubSub.js.map +1 -1
  135. package/dist/Pull.d.ts.map +1 -1
  136. package/dist/Pull.js +1 -1
  137. package/dist/Pull.js.map +1 -1
  138. package/dist/Queue.d.ts.map +1 -1
  139. package/dist/Queue.js +0 -1
  140. package/dist/Queue.js.map +1 -1
  141. package/dist/Random.d.ts +35 -1
  142. package/dist/Random.d.ts.map +1 -1
  143. package/dist/Random.js +46 -12
  144. package/dist/Random.js.map +1 -1
  145. package/dist/RcMap.d.ts +2 -2
  146. package/dist/RcMap.d.ts.map +1 -1
  147. package/dist/RcMap.js +1 -1
  148. package/dist/RcMap.js.map +1 -1
  149. package/dist/RcRef.d.ts +1 -1
  150. package/dist/RcRef.d.ts.map +1 -1
  151. package/dist/Record.d.ts +24 -120
  152. package/dist/Record.d.ts.map +1 -1
  153. package/dist/Record.js +21 -41
  154. package/dist/Record.js.map +1 -1
  155. package/dist/Reducer.d.ts +166 -7
  156. package/dist/Reducer.d.ts.map +1 -1
  157. package/dist/Reducer.js +135 -1
  158. package/dist/Reducer.js.map +1 -1
  159. package/dist/References.d.ts +3 -3
  160. package/dist/References.d.ts.map +1 -1
  161. package/dist/Request.d.ts +1 -1
  162. package/dist/Request.d.ts.map +1 -1
  163. package/dist/Request.js +2 -1
  164. package/dist/Request.js.map +1 -1
  165. package/dist/RequestResolver.d.ts +6 -26
  166. package/dist/RequestResolver.d.ts.map +1 -1
  167. package/dist/RequestResolver.js +0 -20
  168. package/dist/RequestResolver.js.map +1 -1
  169. package/dist/Result.d.ts +12 -0
  170. package/dist/Result.d.ts.map +1 -1
  171. package/dist/Result.js +12 -0
  172. package/dist/Result.js.map +1 -1
  173. package/dist/Schedule.d.ts +47 -20
  174. package/dist/Schedule.d.ts.map +1 -1
  175. package/dist/Schedule.js +94 -34
  176. package/dist/Schedule.js.map +1 -1
  177. package/dist/Schema.d.ts +266 -50
  178. package/dist/Schema.d.ts.map +1 -1
  179. package/dist/Schema.js +426 -74
  180. package/dist/Schema.js.map +1 -1
  181. package/dist/SchemaAST.d.ts.map +1 -1
  182. package/dist/SchemaAST.js +7 -6
  183. package/dist/SchemaAST.js.map +1 -1
  184. package/dist/SchemaGetter.d.ts +2 -2
  185. package/dist/SchemaGetter.d.ts.map +1 -1
  186. package/dist/SchemaGetter.js +12 -14
  187. package/dist/SchemaGetter.js.map +1 -1
  188. package/dist/SchemaParser.d.ts +5 -0
  189. package/dist/SchemaParser.d.ts.map +1 -1
  190. package/dist/SchemaParser.js +10 -0
  191. package/dist/SchemaParser.js.map +1 -1
  192. package/dist/SchemaRepresentation.d.ts +44 -43
  193. package/dist/SchemaRepresentation.d.ts.map +1 -1
  194. package/dist/SchemaRepresentation.js +43 -24
  195. package/dist/SchemaRepresentation.js.map +1 -1
  196. package/dist/SchemaTransformation.d.ts +107 -3
  197. package/dist/SchemaTransformation.d.ts.map +1 -1
  198. package/dist/SchemaTransformation.js +159 -4
  199. package/dist/SchemaTransformation.js.map +1 -1
  200. package/dist/ScopedCache.d.ts +2 -2
  201. package/dist/ScopedCache.d.ts.map +1 -1
  202. package/dist/ScopedCache.js +1 -1
  203. package/dist/ScopedCache.js.map +1 -1
  204. package/dist/Semaphore.d.ts +211 -0
  205. package/dist/Semaphore.d.ts.map +1 -0
  206. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  207. package/dist/Semaphore.js.map +1 -0
  208. package/dist/ServiceMap.d.ts +39 -30
  209. package/dist/ServiceMap.d.ts.map +1 -1
  210. package/dist/ServiceMap.js +3 -3
  211. package/dist/ServiceMap.js.map +1 -1
  212. package/dist/Sink.d.ts +13 -13
  213. package/dist/Sink.d.ts.map +1 -1
  214. package/dist/Sink.js +53 -6
  215. package/dist/Sink.js.map +1 -1
  216. package/dist/Stream.d.ts +235 -423
  217. package/dist/Stream.d.ts.map +1 -1
  218. package/dist/Stream.js +124 -77
  219. package/dist/Stream.js.map +1 -1
  220. package/dist/Struct.d.ts +16 -0
  221. package/dist/Struct.d.ts.map +1 -1
  222. package/dist/Struct.js +22 -0
  223. package/dist/Struct.js.map +1 -1
  224. package/dist/SubscriptionRef.d.ts +2 -1
  225. package/dist/SubscriptionRef.d.ts.map +1 -1
  226. package/dist/SubscriptionRef.js +2 -1
  227. package/dist/SubscriptionRef.js.map +1 -1
  228. package/dist/SynchronizedRef.d.ts +2 -1
  229. package/dist/SynchronizedRef.d.ts.map +1 -1
  230. package/dist/SynchronizedRef.js +2 -1
  231. package/dist/SynchronizedRef.js.map +1 -1
  232. package/dist/Trie.d.ts +18 -17
  233. package/dist/Trie.d.ts.map +1 -1
  234. package/dist/Trie.js +5 -5
  235. package/dist/Trie.js.map +1 -1
  236. package/dist/TxChunk.d.ts +37 -37
  237. package/dist/TxChunk.d.ts.map +1 -1
  238. package/dist/TxChunk.js +3 -3
  239. package/dist/TxChunk.js.map +1 -1
  240. package/dist/TxDeferred.d.ts +328 -0
  241. package/dist/TxDeferred.d.ts.map +1 -0
  242. package/dist/TxDeferred.js +196 -0
  243. package/dist/TxDeferred.js.map +1 -0
  244. package/dist/TxHashMap.d.ts +84 -83
  245. package/dist/TxHashMap.d.ts.map +1 -1
  246. package/dist/TxHashMap.js +24 -24
  247. package/dist/TxHashMap.js.map +1 -1
  248. package/dist/TxHashSet.d.ts +35 -35
  249. package/dist/TxHashSet.d.ts.map +1 -1
  250. package/dist/TxHashSet.js +14 -14
  251. package/dist/TxHashSet.js.map +1 -1
  252. package/dist/TxPriorityQueue.d.ts +609 -0
  253. package/dist/TxPriorityQueue.d.ts.map +1 -0
  254. package/dist/TxPriorityQueue.js +415 -0
  255. package/dist/TxPriorityQueue.js.map +1 -0
  256. package/dist/TxPubSub.d.ts +585 -0
  257. package/dist/TxPubSub.d.ts.map +1 -0
  258. package/dist/TxPubSub.js +521 -0
  259. package/dist/TxPubSub.js.map +1 -0
  260. package/dist/TxQueue.d.ts +32 -32
  261. package/dist/TxQueue.d.ts.map +1 -1
  262. package/dist/TxQueue.js +26 -26
  263. package/dist/TxQueue.js.map +1 -1
  264. package/dist/TxReentrantLock.d.ts +523 -0
  265. package/dist/TxReentrantLock.d.ts.map +1 -0
  266. package/dist/TxReentrantLock.js +504 -0
  267. package/dist/TxReentrantLock.js.map +1 -0
  268. package/dist/TxRef.d.ts +34 -34
  269. package/dist/TxRef.d.ts.map +1 -1
  270. package/dist/TxRef.js +21 -14
  271. package/dist/TxRef.js.map +1 -1
  272. package/dist/TxSemaphore.d.ts +8 -8
  273. package/dist/TxSemaphore.d.ts.map +1 -1
  274. package/dist/TxSemaphore.js +7 -7
  275. package/dist/TxSemaphore.js.map +1 -1
  276. package/dist/TxSubscriptionRef.d.ts +508 -0
  277. package/dist/TxSubscriptionRef.d.ts.map +1 -0
  278. package/dist/TxSubscriptionRef.js +293 -0
  279. package/dist/TxSubscriptionRef.js.map +1 -0
  280. package/dist/Types.d.ts +84 -6
  281. package/dist/Types.d.ts.map +1 -1
  282. package/dist/index.d.ts +591 -20
  283. package/dist/index.d.ts.map +1 -1
  284. package/dist/index.js +591 -20
  285. package/dist/index.js.map +1 -1
  286. package/dist/internal/core.js +11 -3
  287. package/dist/internal/core.js.map +1 -1
  288. package/dist/internal/dateTime.js +3 -11
  289. package/dist/internal/dateTime.js.map +1 -1
  290. package/dist/internal/effect.js +263 -99
  291. package/dist/internal/effect.js.map +1 -1
  292. package/dist/internal/hashMap.js +5 -4
  293. package/dist/internal/hashMap.js.map +1 -1
  294. package/dist/internal/random.d.ts +2 -0
  295. package/dist/internal/random.d.ts.map +1 -0
  296. package/dist/internal/random.js +13 -0
  297. package/dist/internal/random.js.map +1 -0
  298. package/dist/internal/rcRef.js +3 -2
  299. package/dist/internal/rcRef.js.map +1 -1
  300. package/dist/internal/request.js +2 -2
  301. package/dist/internal/request.js.map +1 -1
  302. package/dist/internal/schema/annotations.js +2 -0
  303. package/dist/internal/schema/annotations.js.map +1 -1
  304. package/dist/internal/schema/schema.js +1 -0
  305. package/dist/internal/schema/schema.js.map +1 -1
  306. package/dist/internal/trie.js +5 -4
  307. package/dist/internal/trie.js.map +1 -1
  308. package/dist/testing/TestClock.d.ts +7 -6
  309. package/dist/testing/TestClock.d.ts.map +1 -1
  310. package/dist/testing/TestClock.js +6 -4
  311. package/dist/testing/TestClock.js.map +1 -1
  312. package/dist/testing/TestSchema.d.ts +8 -8
  313. package/dist/testing/TestSchema.d.ts.map +1 -1
  314. package/dist/testing/TestSchema.js.map +1 -1
  315. package/dist/unstable/ai/AiError.d.ts +128 -48
  316. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  317. package/dist/unstable/ai/AiError.js +11 -12
  318. package/dist/unstable/ai/AiError.js.map +1 -1
  319. package/dist/unstable/ai/Chat.d.ts +3 -3
  320. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  321. package/dist/unstable/ai/Chat.js +4 -3
  322. package/dist/unstable/ai/Chat.js.map +1 -1
  323. package/dist/unstable/ai/LanguageModel.d.ts +4 -2
  324. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  325. package/dist/unstable/ai/LanguageModel.js +86 -14
  326. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  327. package/dist/unstable/ai/McpSchema.d.ts +163 -87
  328. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  329. package/dist/unstable/ai/McpSchema.js +49 -12
  330. package/dist/unstable/ai/McpSchema.js.map +1 -1
  331. package/dist/unstable/ai/McpServer.d.ts +1 -1
  332. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  333. package/dist/unstable/ai/McpServer.js +35 -7
  334. package/dist/unstable/ai/McpServer.js.map +1 -1
  335. package/dist/unstable/ai/Model.d.ts +25 -7
  336. package/dist/unstable/ai/Model.d.ts.map +1 -1
  337. package/dist/unstable/ai/Model.js +22 -6
  338. package/dist/unstable/ai/Model.js.map +1 -1
  339. package/dist/unstable/ai/Prompt.d.ts +20 -20
  340. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  341. package/dist/unstable/ai/Response.d.ts +26 -26
  342. package/dist/unstable/ai/Response.d.ts.map +1 -1
  343. package/dist/unstable/ai/Response.js +1 -1
  344. package/dist/unstable/ai/Response.js.map +1 -1
  345. package/dist/unstable/ai/Tool.d.ts +19 -3
  346. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  347. package/dist/unstable/ai/Tool.js +14 -9
  348. package/dist/unstable/ai/Tool.js.map +1 -1
  349. package/dist/unstable/ai/index.d.ts +1 -1
  350. package/dist/unstable/ai/index.js +1 -1
  351. package/dist/unstable/cli/CliError.d.ts +5 -5
  352. package/dist/unstable/cli/CliOutput.js +59 -6
  353. package/dist/unstable/cli/CliOutput.js.map +1 -1
  354. package/dist/unstable/cli/Command.d.ts +276 -19
  355. package/dist/unstable/cli/Command.d.ts.map +1 -1
  356. package/dist/unstable/cli/Command.js +234 -36
  357. package/dist/unstable/cli/Command.js.map +1 -1
  358. package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
  359. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
  360. package/dist/unstable/cli/GlobalFlag.js +118 -0
  361. package/dist/unstable/cli/GlobalFlag.js.map +1 -0
  362. package/dist/unstable/cli/HelpDoc.d.ts +70 -2
  363. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  364. package/dist/unstable/cli/index.d.ts +4 -0
  365. package/dist/unstable/cli/index.d.ts.map +1 -1
  366. package/dist/unstable/cli/index.js +4 -0
  367. package/dist/unstable/cli/index.js.map +1 -1
  368. package/dist/unstable/cli/internal/command.d.ts +17 -8
  369. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  370. package/dist/unstable/cli/internal/command.js +32 -23
  371. package/dist/unstable/cli/internal/command.js.map +1 -1
  372. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
  373. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  374. package/dist/unstable/cli/internal/help.d.ts +33 -0
  375. package/dist/unstable/cli/internal/help.d.ts.map +1 -0
  376. package/dist/unstable/cli/internal/help.js +107 -0
  377. package/dist/unstable/cli/internal/help.js.map +1 -0
  378. package/dist/unstable/cli/internal/parser.js +29 -36
  379. package/dist/unstable/cli/internal/parser.js.map +1 -1
  380. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  381. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  382. package/dist/unstable/cluster/ClusterCron.js +1 -1
  383. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  384. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  385. package/dist/unstable/cluster/ClusterWorkflowEngine.js +4 -3
  386. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  387. package/dist/unstable/cluster/Entity.d.ts +7 -6
  388. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  389. package/dist/unstable/cluster/Entity.js.map +1 -1
  390. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  391. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  392. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  393. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  394. package/dist/unstable/cluster/K8sHttpClient.js +4 -4
  395. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  396. package/dist/unstable/cluster/Message.d.ts +10 -10
  397. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  398. package/dist/unstable/cluster/MessageStorage.js +2 -1
  399. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  400. package/dist/unstable/cluster/Reply.d.ts +6 -6
  401. package/dist/unstable/cluster/Runner.d.ts +1 -1
  402. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  403. package/dist/unstable/cluster/Runners.js +4 -3
  404. package/dist/unstable/cluster/Runners.js.map +1 -1
  405. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  406. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  407. package/dist/unstable/cluster/Sharding.js +9 -7
  408. package/dist/unstable/cluster/Sharding.js.map +1 -1
  409. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  410. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  411. package/dist/unstable/cluster/ShardingConfig.js +20 -20
  412. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  413. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  414. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  415. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  416. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  417. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  418. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  419. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  420. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  421. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  422. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  423. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  424. package/dist/unstable/encoding/Sse.d.ts +4 -4
  425. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  426. package/dist/unstable/encoding/Sse.js +1 -1
  427. package/dist/unstable/encoding/Sse.js.map +1 -1
  428. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  429. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  430. package/dist/unstable/eventlog/EventLog.js +2 -1
  431. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  432. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  433. package/dist/unstable/http/Cookies.d.ts +3 -3
  434. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  435. package/dist/unstable/http/Cookies.js +2 -2
  436. package/dist/unstable/http/Cookies.js.map +1 -1
  437. package/dist/unstable/http/Headers.d.ts.map +1 -1
  438. package/dist/unstable/http/Headers.js +27 -10
  439. package/dist/unstable/http/Headers.js.map +1 -1
  440. package/dist/unstable/http/HttpBody.d.ts +17 -2
  441. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  442. package/dist/unstable/http/HttpBody.js +28 -1
  443. package/dist/unstable/http/HttpBody.js.map +1 -1
  444. package/dist/unstable/http/HttpClient.d.ts +37 -13
  445. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  446. package/dist/unstable/http/HttpClient.js +4 -4
  447. package/dist/unstable/http/HttpClient.js.map +1 -1
  448. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  449. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  450. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  451. package/dist/unstable/http/HttpClientRequest.js +15 -3
  452. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  453. package/dist/unstable/http/HttpEffect.d.ts +3 -8
  454. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  455. package/dist/unstable/http/HttpEffect.js +42 -56
  456. package/dist/unstable/http/HttpEffect.js.map +1 -1
  457. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  458. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  459. package/dist/unstable/http/HttpMethod.js +3 -3
  460. package/dist/unstable/http/HttpMethod.js.map +1 -1
  461. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  462. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  463. package/dist/unstable/http/HttpMiddleware.js +8 -17
  464. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  465. package/dist/unstable/http/HttpServerError.d.ts +20 -33
  466. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  467. package/dist/unstable/http/HttpServerError.js +37 -44
  468. package/dist/unstable/http/HttpServerError.js.map +1 -1
  469. package/dist/unstable/http/HttpServerRequest.d.ts +1 -1
  470. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  471. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  472. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  473. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  474. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  475. package/dist/unstable/http/HttpServerResponse.d.ts +2 -1
  476. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  477. package/dist/unstable/http/HttpServerResponse.js +3 -1
  478. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  479. package/dist/unstable/http/Multipart.d.ts +3 -3
  480. package/dist/unstable/http/UrlParams.d.ts +14 -6
  481. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  482. package/dist/unstable/http/UrlParams.js +1 -1
  483. package/dist/unstable/http/UrlParams.js.map +1 -1
  484. package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
  485. package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
  486. package/dist/unstable/http/internal/preResponseHandler.js +10 -0
  487. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
  488. package/dist/unstable/httpapi/HttpApi.d.ts +3 -3
  489. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  490. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  491. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
  492. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  493. package/dist/unstable/httpapi/HttpApiBuilder.js +23 -12
  494. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  495. package/dist/unstable/httpapi/HttpApiClient.d.ts +7 -2
  496. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  497. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  498. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  499. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +31 -44
  500. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  501. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  502. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  503. package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
  504. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  505. package/dist/unstable/httpapi/HttpApiError.js +29 -9
  506. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  507. package/dist/unstable/httpapi/HttpApiGroup.d.ts +3 -3
  508. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  509. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  510. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
  511. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  512. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  513. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  514. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  515. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  516. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
  517. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  518. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  519. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  520. package/dist/unstable/httpapi/OpenApi.js +32 -21
  521. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  522. package/dist/unstable/observability/Otlp.d.ts +12 -12
  523. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  524. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  525. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  526. package/dist/unstable/observability/OtlpExporter.js +1 -1
  527. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  528. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  529. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  530. package/dist/unstable/observability/OtlpLogger.js +7 -4
  531. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  532. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  533. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  534. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  535. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  536. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  537. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  538. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  539. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  540. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  541. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  542. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  543. package/dist/unstable/persistence/PersistedCache.js +2 -1
  544. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  545. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  546. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  547. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  548. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  549. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  550. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  551. package/dist/unstable/persistence/Persistence.js +2 -2
  552. package/dist/unstable/persistence/Persistence.js.map +1 -1
  553. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  554. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  555. package/dist/unstable/persistence/RateLimiter.js +1 -1
  556. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  557. package/dist/unstable/process/ChildProcess.d.ts +5 -128
  558. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  559. package/dist/unstable/process/ChildProcess.js +1 -65
  560. package/dist/unstable/process/ChildProcess.js.map +1 -1
  561. package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
  562. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  563. package/dist/unstable/process/ChildProcessSpawner.js +21 -1
  564. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  565. package/dist/unstable/reactivity/Atom.d.ts +10 -10
  566. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  567. package/dist/unstable/reactivity/Atom.js +16 -13
  568. package/dist/unstable/reactivity/Atom.js.map +1 -1
  569. package/dist/unstable/reactivity/AtomHttpApi.d.ts +8 -8
  570. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  571. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  572. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  573. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  574. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  575. package/dist/unstable/reactivity/AtomRegistry.js +24 -7
  576. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  577. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  578. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  579. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  580. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  581. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  582. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  583. package/dist/unstable/reactivity/Hydration.js +76 -0
  584. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  585. package/dist/unstable/reactivity/index.d.ts +4 -0
  586. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  587. package/dist/unstable/reactivity/index.js +4 -0
  588. package/dist/unstable/reactivity/index.js.map +1 -1
  589. package/dist/unstable/rpc/Rpc.d.ts +4 -4
  590. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  591. package/dist/unstable/rpc/Rpc.js.map +1 -1
  592. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  593. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  594. package/dist/unstable/rpc/RpcClient.js +6 -13
  595. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  596. package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
  597. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  598. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  599. package/dist/unstable/rpc/RpcMiddleware.d.ts +3 -3
  600. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  601. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  602. package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
  603. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  604. package/dist/unstable/rpc/RpcSchema.js +14 -0
  605. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  606. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  607. package/dist/unstable/rpc/RpcSerialization.js +34 -9
  608. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  609. package/dist/unstable/rpc/RpcServer.d.ts +0 -7
  610. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  611. package/dist/unstable/rpc/RpcServer.js +15 -15
  612. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  613. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  614. package/dist/unstable/rpc/Utils.js +2 -1
  615. package/dist/unstable/rpc/Utils.js.map +1 -1
  616. package/dist/unstable/schema/Model.d.ts +1 -1
  617. package/dist/unstable/schema/Model.d.ts.map +1 -1
  618. package/dist/unstable/schema/VariantSchema.d.ts +3 -3
  619. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  620. package/dist/unstable/schema/VariantSchema.js +3 -3
  621. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  622. package/dist/unstable/socket/Socket.d.ts +4 -4
  623. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  624. package/dist/unstable/socket/Socket.js +6 -5
  625. package/dist/unstable/socket/Socket.js.map +1 -1
  626. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  627. package/dist/unstable/sql/Migrator.d.ts +1 -1
  628. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  629. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  630. package/dist/unstable/sql/SqlError.d.ts +14 -14
  631. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  632. package/dist/unstable/sql/SqlError.js +9 -3
  633. package/dist/unstable/sql/SqlError.js.map +1 -1
  634. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  635. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  636. package/dist/unstable/sql/SqlModel.js +3 -3
  637. package/dist/unstable/sql/SqlModel.js.map +1 -1
  638. package/dist/unstable/sql/SqlSchema.d.ts +16 -5
  639. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  640. package/dist/unstable/sql/SqlSchema.js +17 -7
  641. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  642. package/dist/unstable/sql/Statement.js +0 -1
  643. package/dist/unstable/sql/Statement.js.map +1 -1
  644. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  645. package/dist/unstable/workers/Worker.js +2 -1
  646. package/dist/unstable/workers/Worker.js.map +1 -1
  647. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  648. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  649. package/dist/unstable/workflow/DurableClock.js +3 -3
  650. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  651. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  652. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  653. package/dist/unstable/workflow/Workflow.d.ts +3 -3
  654. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  655. package/dist/unstable/workflow/Workflow.js +1 -1
  656. package/dist/unstable/workflow/Workflow.js.map +1 -1
  657. package/dist/unstable/workflow/WorkflowEngine.d.ts +12 -1
  658. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  659. package/dist/unstable/workflow/WorkflowEngine.js +137 -1
  660. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  661. package/package.json +2 -2
  662. package/src/Array.ts +190 -342
  663. package/src/Cache.ts +9 -8
  664. package/src/Cause.ts +1 -1
  665. package/src/Channel.ts +554 -138
  666. package/src/Chunk.ts +81 -268
  667. package/src/Combiner.ts +280 -13
  668. package/src/Config.ts +183 -21
  669. package/src/Data.ts +538 -374
  670. package/src/DateTime.ts +24 -164
  671. package/src/Duration.ts +15 -15
  672. package/src/Effect.ts +991 -800
  673. package/src/Encoding.ts +879 -0
  674. package/src/Equal.ts +278 -111
  675. package/src/ErrorReporter.ts +459 -0
  676. package/src/Fiber.ts +9 -2
  677. package/src/FileSystem.ts +7 -8
  678. package/src/Filter.ts +48 -58
  679. package/src/Formatter.ts +253 -51
  680. package/src/Graph.ts +24 -11
  681. package/src/HashMap.ts +15 -14
  682. package/src/Iterable.ts +105 -50
  683. package/src/JsonSchema.ts +383 -10
  684. package/src/Latch.ts +112 -0
  685. package/src/Layer.ts +11 -15
  686. package/src/LayerMap.ts +5 -5
  687. package/src/LogLevel.ts +37 -0
  688. package/src/Logger.ts +33 -100
  689. package/src/ManagedRuntime.ts +1 -1
  690. package/src/Metric.ts +4 -4
  691. package/src/Optic.ts +948 -19
  692. package/src/Option.ts +30 -20
  693. package/src/Pipeable.ts +32 -1
  694. package/src/PlatformError.ts +5 -5
  695. package/src/Pool.ts +13 -11
  696. package/src/PubSub.ts +10 -9
  697. package/src/Pull.ts +1 -1
  698. package/src/Queue.ts +0 -1
  699. package/src/Random.ts +51 -14
  700. package/src/RcMap.ts +5 -5
  701. package/src/RcRef.ts +1 -1
  702. package/src/Record.ts +43 -152
  703. package/src/Reducer.ts +166 -7
  704. package/src/References.ts +4 -4
  705. package/src/Request.ts +3 -2
  706. package/src/RequestResolver.ts +9 -29
  707. package/src/Result.ts +13 -0
  708. package/src/Schedule.ts +318 -160
  709. package/src/Schema.ts +661 -116
  710. package/src/SchemaAST.ts +7 -6
  711. package/src/SchemaGetter.ts +12 -14
  712. package/src/SchemaParser.ts +11 -0
  713. package/src/SchemaRepresentation.ts +43 -24
  714. package/src/SchemaTransformation.ts +189 -4
  715. package/src/ScopedCache.ts +3 -3
  716. package/src/Semaphore.ts +356 -0
  717. package/src/ServiceMap.ts +47 -38
  718. package/src/Sink.ts +78 -26
  719. package/src/Stream.ts +566 -601
  720. package/src/Struct.ts +26 -0
  721. package/src/SubscriptionRef.ts +3 -2
  722. package/src/SynchronizedRef.ts +3 -2
  723. package/src/Trie.ts +18 -17
  724. package/src/TxChunk.ts +72 -53
  725. package/src/TxDeferred.ts +394 -0
  726. package/src/TxHashMap.ts +332 -285
  727. package/src/TxHashSet.ts +111 -116
  728. package/src/TxPriorityQueue.ts +767 -0
  729. package/src/TxPubSub.ts +789 -0
  730. package/src/TxQueue.ts +241 -251
  731. package/src/TxReentrantLock.ts +753 -0
  732. package/src/TxRef.ts +50 -38
  733. package/src/TxSemaphore.ts +29 -32
  734. package/src/TxSubscriptionRef.ts +639 -0
  735. package/src/Types.ts +78 -2
  736. package/src/index.ts +600 -21
  737. package/src/internal/core.ts +12 -5
  738. package/src/internal/dateTime.ts +9 -30
  739. package/src/internal/effect.ts +744 -265
  740. package/src/internal/hashMap.ts +9 -7
  741. package/src/internal/random.ts +20 -0
  742. package/src/internal/rcRef.ts +4 -3
  743. package/src/internal/request.ts +2 -2
  744. package/src/internal/schema/annotations.ts +2 -0
  745. package/src/internal/schema/schema.ts +1 -0
  746. package/src/internal/trie.ts +16 -9
  747. package/src/testing/TestClock.ts +13 -11
  748. package/src/testing/TestSchema.ts +10 -10
  749. package/src/unstable/ai/AiError.ts +97 -44
  750. package/src/unstable/ai/Chat.ts +12 -11
  751. package/src/unstable/ai/LanguageModel.ts +129 -25
  752. package/src/unstable/ai/McpSchema.ts +59 -13
  753. package/src/unstable/ai/McpServer.ts +48 -9
  754. package/src/unstable/ai/Model.ts +40 -9
  755. package/src/unstable/ai/Prompt.ts +37 -37
  756. package/src/unstable/ai/Response.ts +25 -25
  757. package/src/unstable/ai/Tool.ts +19 -13
  758. package/src/unstable/ai/index.ts +1 -1
  759. package/src/unstable/cli/CliOutput.ts +75 -6
  760. package/src/unstable/cli/Command.ts +501 -60
  761. package/src/unstable/cli/GlobalFlag.ts +243 -0
  762. package/src/unstable/cli/HelpDoc.ts +80 -2
  763. package/src/unstable/cli/index.ts +5 -0
  764. package/src/unstable/cli/internal/command.ts +50 -34
  765. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
  766. package/src/unstable/cli/internal/help.ts +146 -0
  767. package/src/unstable/cli/internal/parser.ts +33 -54
  768. package/src/unstable/cluster/ClusterCron.ts +2 -2
  769. package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -4
  770. package/src/unstable/cluster/Entity.ts +11 -10
  771. package/src/unstable/cluster/EntityResource.ts +4 -4
  772. package/src/unstable/cluster/Envelope.ts +1 -1
  773. package/src/unstable/cluster/K8sHttpClient.ts +5 -5
  774. package/src/unstable/cluster/MessageStorage.ts +3 -5
  775. package/src/unstable/cluster/Runners.ts +6 -5
  776. package/src/unstable/cluster/Sharding.ts +12 -10
  777. package/src/unstable/cluster/ShardingConfig.ts +30 -31
  778. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  779. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  780. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  781. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  782. package/src/unstable/encoding/Sse.ts +3 -5
  783. package/src/unstable/eventlog/EventLog.ts +2 -1
  784. package/src/unstable/http/Cookies.ts +3 -3
  785. package/src/unstable/http/Headers.ts +28 -13
  786. package/src/unstable/http/HttpBody.ts +42 -1
  787. package/src/unstable/http/HttpClient.ts +58 -23
  788. package/src/unstable/http/HttpClientRequest.ts +38 -13
  789. package/src/unstable/http/HttpEffect.ts +46 -68
  790. package/src/unstable/http/HttpMethod.ts +16 -4
  791. package/src/unstable/http/HttpMiddleware.ts +9 -24
  792. package/src/unstable/http/HttpServerError.ts +42 -45
  793. package/src/unstable/http/HttpServerRequest.ts +1 -1
  794. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  795. package/src/unstable/http/HttpServerResponse.ts +4 -2
  796. package/src/unstable/http/Multipart.ts +2 -2
  797. package/src/unstable/http/UrlParams.ts +20 -5
  798. package/src/unstable/http/internal/preResponseHandler.ts +15 -0
  799. package/src/unstable/httpapi/HttpApi.ts +5 -5
  800. package/src/unstable/httpapi/HttpApiBuilder.ts +77 -21
  801. package/src/unstable/httpapi/HttpApiClient.ts +14 -6
  802. package/src/unstable/httpapi/HttpApiEndpoint.ts +67 -83
  803. package/src/unstable/httpapi/HttpApiError.ts +30 -9
  804. package/src/unstable/httpapi/HttpApiGroup.ts +6 -6
  805. package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
  806. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  807. package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
  808. package/src/unstable/httpapi/OpenApi.ts +41 -23
  809. package/src/unstable/observability/Otlp.ts +12 -12
  810. package/src/unstable/observability/OtlpExporter.ts +3 -3
  811. package/src/unstable/observability/OtlpLogger.ts +13 -9
  812. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  813. package/src/unstable/observability/OtlpTracer.ts +4 -4
  814. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  815. package/src/unstable/persistence/Persistable.ts +2 -2
  816. package/src/unstable/persistence/PersistedCache.ts +20 -9
  817. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  818. package/src/unstable/persistence/Persistence.ts +3 -3
  819. package/src/unstable/persistence/RateLimiter.ts +4 -4
  820. package/src/unstable/process/ChildProcess.ts +6 -208
  821. package/src/unstable/process/ChildProcessSpawner.ts +75 -14
  822. package/src/unstable/reactivity/Atom.ts +27 -25
  823. package/src/unstable/reactivity/AtomHttpApi.ts +21 -20
  824. package/src/unstable/reactivity/AtomRegistry.ts +31 -7
  825. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  826. package/src/unstable/reactivity/Hydration.ts +112 -0
  827. package/src/unstable/reactivity/index.ts +5 -0
  828. package/src/unstable/rpc/Rpc.ts +6 -6
  829. package/src/unstable/rpc/RpcClient.ts +12 -54
  830. package/src/unstable/rpc/RpcGroup.ts +4 -4
  831. package/src/unstable/rpc/RpcMiddleware.ts +3 -3
  832. package/src/unstable/rpc/RpcSchema.ts +17 -0
  833. package/src/unstable/rpc/RpcSerialization.ts +44 -9
  834. package/src/unstable/rpc/RpcServer.ts +21 -30
  835. package/src/unstable/rpc/Utils.ts +2 -1
  836. package/src/unstable/schema/VariantSchema.ts +6 -6
  837. package/src/unstable/socket/Socket.ts +16 -17
  838. package/src/unstable/sql/SqlClient.ts +1 -1
  839. package/src/unstable/sql/SqlError.ts +11 -9
  840. package/src/unstable/sql/SqlModel.ts +5 -5
  841. package/src/unstable/sql/SqlSchema.ts +41 -25
  842. package/src/unstable/sql/Statement.ts +0 -1
  843. package/src/unstable/workers/Worker.ts +2 -1
  844. package/src/unstable/workflow/DurableClock.ts +8 -8
  845. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  846. package/src/unstable/workflow/Workflow.ts +6 -2
  847. package/src/unstable/workflow/WorkflowEngine.ts +185 -2
  848. package/dist/PartitionedSemaphore.d.ts +0 -52
  849. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  850. package/dist/PartitionedSemaphore.js.map +0 -1
  851. package/dist/encoding/Base64.d.ts +0 -67
  852. package/dist/encoding/Base64.d.ts.map +0 -1
  853. package/dist/encoding/Base64.js +0 -146
  854. package/dist/encoding/Base64.js.map +0 -1
  855. package/dist/encoding/Base64Url.d.ts +0 -60
  856. package/dist/encoding/Base64Url.d.ts.map +0 -1
  857. package/dist/encoding/Base64Url.js +0 -89
  858. package/dist/encoding/Base64Url.js.map +0 -1
  859. package/dist/encoding/EncodingError.d.ts +0 -31
  860. package/dist/encoding/EncodingError.d.ts.map +0 -1
  861. package/dist/encoding/EncodingError.js +0 -22
  862. package/dist/encoding/EncodingError.js.map +0 -1
  863. package/dist/encoding/Hex.d.ts +0 -61
  864. package/dist/encoding/Hex.d.ts.map +0 -1
  865. package/dist/encoding/Hex.js +0 -115
  866. package/dist/encoding/Hex.js.map +0 -1
  867. package/dist/encoding/index.d.ts +0 -26
  868. package/dist/encoding/index.d.ts.map +0 -1
  869. package/dist/encoding/index.js +0 -27
  870. package/dist/encoding/index.js.map +0 -1
  871. package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
  872. package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
  873. package/dist/unstable/cli/internal/builtInFlags.js +0 -44
  874. package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
  875. package/src/PartitionedSemaphore.ts +0 -182
  876. package/src/encoding/Base64.ts +0 -366
  877. package/src/encoding/Base64Url.ts +0 -104
  878. package/src/encoding/EncodingError.ts +0 -35
  879. package/src/encoding/Hex.ts +0 -390
  880. package/src/encoding/index.ts +0 -31
  881. package/src/unstable/cli/internal/builtInFlags.ts +0 -78
package/dist/Optic.d.ts CHANGED
@@ -1,9 +1,98 @@
1
1
  /**
2
- * Design: "pretty good" persistency.
3
- * Real updates copy only the path; unrelated branches keep referential identity.
4
- * No-op updates may still allocate a new root/parents — callers must not rely on identity for no-ops.
2
+ * Composable, immutable accessors for reading and updating nested data
3
+ * structures without mutation.
4
+ *
5
+ * **Mental model**
6
+ *
7
+ * - **Optic** — a first-class reference to a piece inside a larger structure.
8
+ * Compose optics to reach deeply nested values.
9
+ * - **Iso** — lossless two-way conversion (`get`/`set`) between `S` and `A`.
10
+ * Extends both {@link Lens} and {@link Prism}.
11
+ * - **Lens** — focuses on exactly one part of `S`. `get` always succeeds;
12
+ * `replace` needs the original `S` to produce the updated whole.
13
+ * - **Prism** — focuses on a part that may not be present (e.g. a union
14
+ * variant). `getResult` can fail; `set` builds a new `S` from `A` alone.
15
+ * - **Optional** — the most general optic: both reading and writing can fail.
16
+ * - **Traversal** — focuses on zero or more elements of an array-like
17
+ * structure. Technically `Optional<S, ReadonlyArray<A>>`.
18
+ * - **Hierarchy** (strongest → weakest):
19
+ * `Iso > Lens | Prism > Optional`. Composing a weaker optic with any other
20
+ * produces the weaker kind.
21
+ *
22
+ * **Common tasks**
23
+ *
24
+ * - Start a chain → {@link id} (identity iso)
25
+ * - Drill into a struct key → `.key("name")` / `.optionalKey("name")`
26
+ * - Drill into a key that may not exist → `.at("name")`
27
+ * - Narrow a tagged union → `.tag("MyVariant")`
28
+ * - Narrow by type guard → `.refine(guard)`
29
+ * - Add validation → `.check(Schema.isGreaterThan(0))`
30
+ * - Filter out `undefined` → `.notUndefined()`
31
+ * - Pick/omit struct keys → `.pick(["a","b"])` / `.omit(["c"])`
32
+ * - Traverse array elements → `.forEach(el => el.key("field"))`
33
+ * - Build an iso → {@link makeIso}
34
+ * - Build a lens → {@link makeLens}
35
+ * - Build a prism → {@link makePrism}, {@link fromChecks}
36
+ * - Build an optional → {@link makeOptional}
37
+ * - Focus into `Option.Some` → {@link some}
38
+ * - Focus into `Result.Success`/`Failure` → {@link success}, {@link failure}
39
+ * - Convert record ↔ entries → {@link entries}
40
+ * - Extract all traversal elements → {@link getAll}
41
+ *
42
+ * **Gotchas**
43
+ *
44
+ * - Updates are structurally persistent: only nodes on the path are cloned.
45
+ * Unrelated branches keep referential identity. However, **no-op updates
46
+ * may still allocate** a new root — do not rely on reference identity to
47
+ * detect no-ops.
48
+ * - `replace` silently returns the original `S` when the optic cannot focus
49
+ * (e.g. wrong tag). Use `replaceResult` for explicit failure.
50
+ * - `modify` also returns the original `S` on focus failure — it never throws.
51
+ * - `.key()` and `.optionalKey()` do not work on union types (compile error).
52
+ * - Only plain objects (`Object.prototype` or `null` prototype) and arrays can
53
+ * be cloned. Class instances cause a runtime error on `replace`/`modify`.
54
+ *
55
+ * **Quickstart**
56
+ *
57
+ * **Example** (reading and updating nested state)
58
+ *
59
+ * ```ts
60
+ * import { Optic } from "effect"
61
+ *
62
+ * type State = { user: { name: string; age: number } }
63
+ *
64
+ * const _age = Optic.id<State>().key("user").key("age")
65
+ *
66
+ * const s1: State = { user: { name: "Alice", age: 30 } }
67
+ *
68
+ * // Read
69
+ * console.log(_age.get(s1))
70
+ * // Output: 30
71
+ *
72
+ * // Update immutably
73
+ * const s2 = _age.replace(31, s1)
74
+ * console.log(s2)
75
+ * // Output: { user: { name: "Alice", age: 31 } }
76
+ *
77
+ * // Modify with a function
78
+ * const s3 = _age.modify((n) => n + 1)(s1)
79
+ * console.log(s3)
80
+ * // Output: { user: { name: "Alice", age: 31 } }
81
+ *
82
+ * // Referential identity is preserved for unrelated branches
83
+ * console.log(s2.user !== s1.user)
84
+ * // Output: true (on the path)
85
+ * ```
86
+ *
87
+ * **See also**
88
+ *
89
+ * - {@link id} — entry point for optic chains
90
+ * - {@link Lens} / {@link Prism} / {@link Optional} — core optic types
91
+ * - {@link Traversal} / {@link getAll} — multi-focus optics
92
+ * - {@link some} / {@link success} / {@link failure} — built-in prisms
5
93
  *
6
94
  * @since 4.0.0
95
+ * @module
7
96
  */
8
97
  import * as Option from "./Option.ts";
9
98
  import * as Result from "./Result.ts";
@@ -11,17 +100,113 @@ import type * as Schema from "./Schema.ts";
11
100
  import * as AST from "./SchemaAST.ts";
12
101
  import type { IsUnion } from "./Types.ts";
13
102
  /**
103
+ * A lossless, reversible conversion between types `S` and `A`.
104
+ *
105
+ * When to use:
106
+ * - You have a pair of functions that convert back and forth without losing
107
+ * information (e.g. `Record ↔ entries`, `Celsius ↔ Fahrenheit`).
108
+ * - You want the strongest optic that can be composed with any other.
109
+ *
110
+ * Behavior:
111
+ * - `get(s)` always succeeds and returns an `A`.
112
+ * - `set(a)` always succeeds and returns an `S`.
113
+ * - `get(set(a)) === a` and `set(get(s))` equals `s` (round-trip laws).
114
+ * - Extends both {@link Lens} and {@link Prism}.
115
+ *
116
+ * **Example** (Celsius ↔ Fahrenheit)
117
+ *
118
+ * ```ts
119
+ * import { Optic } from "effect"
120
+ *
121
+ * const fahrenheit = Optic.makeIso<number, number>(
122
+ * (c) => c * 9 / 5 + 32,
123
+ * (f) => (f - 32) * 5 / 9
124
+ * )
125
+ *
126
+ * console.log(fahrenheit.get(100))
127
+ * // Output: 212
128
+ *
129
+ * console.log(fahrenheit.set(32))
130
+ * // Output: 0
131
+ * ```
132
+ *
133
+ * @see {@link makeIso} — constructor
134
+ * @see {@link Lens} — when you only need a one-directional focus into a whole
135
+ * @see {@link Prism} — when the focus may not be present
136
+ *
14
137
  * @category Iso
15
138
  * @since 4.0.0
16
139
  */
17
140
  export interface Iso<in out S, in out A> extends Lens<S, A>, Prism<S, A> {
18
141
  }
19
142
  /**
143
+ * Creates an {@link Iso} from a pair of conversion functions.
144
+ *
145
+ * When to use:
146
+ * - You have two pure functions that form a lossless round-trip between `S`
147
+ * and `A`.
148
+ *
149
+ * Behavior:
150
+ * - Does not mutate inputs.
151
+ * - The returned optic can be composed with any other optic.
152
+ *
153
+ * **Example** (wrapping/unwrapping a branded type)
154
+ *
155
+ * ```ts
156
+ * import { Optic } from "effect"
157
+ *
158
+ * type Meters = { readonly value: number }
159
+ * const meters = Optic.makeIso<Meters, number>(
160
+ * (m) => m.value,
161
+ * (n) => ({ value: n })
162
+ * )
163
+ *
164
+ * console.log(meters.get({ value: 100 }))
165
+ * // Output: 100
166
+ *
167
+ * console.log(meters.set(42))
168
+ * // Output: { value: 42 }
169
+ * ```
170
+ *
171
+ * @see {@link Iso} — the type this function returns
172
+ * @see {@link id} — identity iso (no conversion)
173
+ *
20
174
  * @category Constructors
21
175
  * @since 4.0.0
22
176
  */
23
177
  export declare function makeIso<S, A>(get: (s: S) => A, set: (a: A) => S): Iso<S, A>;
24
178
  /**
179
+ * Focuses on exactly one part `A` inside a whole `S`.
180
+ *
181
+ * When to use:
182
+ * - You always have a value to read (the part exists unconditionally).
183
+ * - You need the original `S` to produce the updated whole (unlike
184
+ * {@link Iso}).
185
+ *
186
+ * Behavior:
187
+ * - `get(s)` always succeeds and returns `A`.
188
+ * - `replace(a, s)` returns a new `S` with the focused part replaced.
189
+ * - Extends {@link Optional}.
190
+ * - Composing a Lens with a {@link Prism} or {@link Optional} produces an
191
+ * {@link Optional}.
192
+ *
193
+ * **Example** (focusing on a struct field)
194
+ *
195
+ * ```ts
196
+ * import { Optic } from "effect"
197
+ *
198
+ * type Person = { readonly name: string; readonly age: number }
199
+ *
200
+ * const _name = Optic.id<Person>().key("name")
201
+ *
202
+ * console.log(_name.get({ name: "Alice", age: 30 }))
203
+ * // Output: "Alice"
204
+ * ```
205
+ *
206
+ * @see {@link makeLens} — constructor
207
+ * @see {@link Iso} — when conversion is lossless in both directions
208
+ * @see {@link Optional} — when reading can also fail
209
+ *
25
210
  * @category Lens
26
211
  * @since 4.0.0
27
212
  */
@@ -29,11 +214,80 @@ export interface Lens<in out S, in out A> extends Optional<S, A> {
29
214
  readonly get: (s: S) => A;
30
215
  }
31
216
  /**
217
+ * Creates a {@link Lens} from a getter and a replacer.
218
+ *
219
+ * When to use:
220
+ * - You can always extract `A` from `S` and produce a new `S` by
221
+ * substituting a new `A`.
222
+ *
223
+ * Behavior:
224
+ * - Does not mutate inputs.
225
+ * - `replace(a, s)` should return a structurally new `S` with `a` in place
226
+ * of the old focus.
227
+ *
228
+ * **Example** (lens into the first element of a pair)
229
+ *
230
+ * ```ts
231
+ * import { Optic } from "effect"
232
+ *
233
+ * const _first = Optic.makeLens<readonly [string, number], string>(
234
+ * (pair) => pair[0],
235
+ * (s, pair) => [s, pair[1]]
236
+ * )
237
+ *
238
+ * console.log(_first.get(["hello", 42]))
239
+ * // Output: "hello"
240
+ *
241
+ * console.log(_first.replace("world", ["hello", 42]))
242
+ * // Output: ["world", 42]
243
+ * ```
244
+ *
245
+ * @see {@link Lens} — the type this function returns
246
+ * @see {@link makeIso} — when no original `S` is needed for `set`
247
+ *
32
248
  * @category Constructors
33
249
  * @since 4.0.0
34
250
  */
35
251
  export declare function makeLens<S, A>(get: (s: S) => A, replace: (a: A, s: S) => S): Lens<S, A>;
36
252
  /**
253
+ * Focuses on a part `A` of `S` that may not be present (e.g. a union
254
+ * variant or a validated subset).
255
+ *
256
+ * When to use:
257
+ * - The focus is conditional — reading can fail (wrong variant, failed
258
+ * validation).
259
+ * - Building a new `S` from `A` does **not** require the original `S`.
260
+ *
261
+ * Behavior:
262
+ * - `getResult(s)` returns `Result.Success<A>` when the focus matches, or
263
+ * `Result.Failure<string>` with an error message.
264
+ * - `set(a)` always succeeds and returns a new `S`.
265
+ * - Extends {@link Optional}.
266
+ * - Composing two Prisms produces a Prism; composing a Prism with a
267
+ * {@link Lens} produces an {@link Optional}.
268
+ *
269
+ * **Example** (narrowing a tagged union)
270
+ *
271
+ * ```ts
272
+ * import { Optic, Result } from "effect"
273
+ *
274
+ * type Shape =
275
+ * | { readonly _tag: "Circle"; readonly radius: number }
276
+ * | { readonly _tag: "Rect"; readonly width: number }
277
+ *
278
+ * const _circle = Optic.id<Shape>().tag("Circle")
279
+ *
280
+ * console.log(Result.isSuccess(_circle.getResult({ _tag: "Circle", radius: 5 })))
281
+ * // Output: true
282
+ *
283
+ * console.log(Result.isFailure(_circle.getResult({ _tag: "Rect", width: 10 })))
284
+ * // Output: true
285
+ * ```
286
+ *
287
+ * @see {@link makePrism} — constructor
288
+ * @see {@link fromChecks} — build a Prism from schema checks
289
+ * @see {@link Lens} — when reading always succeeds
290
+ *
37
291
  * @category Prism
38
292
  * @since 4.0.0
39
293
  */
@@ -41,11 +295,77 @@ export interface Prism<in out S, in out A> extends Optional<S, A> {
41
295
  readonly set: (a: A) => S;
42
296
  }
43
297
  /**
298
+ * Creates a {@link Prism} from a fallible getter and an infallible setter.
299
+ *
300
+ * When to use:
301
+ * - Reading can fail (the part may not exist in `S`), but building `S`
302
+ * from `A` always succeeds.
303
+ *
304
+ * Behavior:
305
+ * - Does not mutate inputs.
306
+ * - `getResult` should return `Result.fail(message)` on mismatch.
307
+ *
308
+ * **Example** (parsing a string to a number)
309
+ *
310
+ * ```ts
311
+ * import { Optic, Result } from "effect"
312
+ *
313
+ * const numeric = Optic.makePrism<string, number>(
314
+ * (s) => {
315
+ * const n = Number(s)
316
+ * return Number.isNaN(n) ? Result.fail("not a number") : Result.succeed(n)
317
+ * },
318
+ * String
319
+ * )
320
+ *
321
+ * console.log(Result.isSuccess(numeric.getResult("42")))
322
+ * // Output: true
323
+ *
324
+ * console.log(numeric.set(42))
325
+ * // Output: "42"
326
+ * ```
327
+ *
328
+ * @see {@link Prism} — the type this function returns
329
+ * @see {@link fromChecks} — build from `Schema` checks instead
330
+ *
44
331
  * @category Constructors
45
332
  * @since 4.0.0
46
333
  */
47
334
  export declare function makePrism<S, A>(getResult: (s: S) => Result.Result<A, string>, set: (a: A) => S): Prism<S, A>;
48
335
  /**
336
+ * Creates a {@link Prism} from one or more `Schema` validation checks.
337
+ *
338
+ * When to use:
339
+ * - You want to narrow `T` to the subset that passes certain validation
340
+ * rules (e.g. positive integer).
341
+ * - You already have `Schema.isGreaterThan`, `Schema.isInt`, etc.
342
+ *
343
+ * Behavior:
344
+ * - `getResult` runs all checks; fails with a combined error message when
345
+ * any check fails.
346
+ * - `set` is identity — the value passes through unchanged.
347
+ * - Does not mutate inputs.
348
+ *
349
+ * **Example** (positive integer prism)
350
+ *
351
+ * ```ts
352
+ * import { Optic, Result, Schema } from "effect"
353
+ *
354
+ * const posInt = Optic.fromChecks<number>(
355
+ * Schema.isGreaterThan(0),
356
+ * Schema.isInt()
357
+ * )
358
+ *
359
+ * console.log(Result.isSuccess(posInt.getResult(3)))
360
+ * // Output: true
361
+ *
362
+ * console.log(Result.isFailure(posInt.getResult(-1)))
363
+ * // Output: true
364
+ * ```
365
+ *
366
+ * @see {@link makePrism} — constructor with custom getter/setter
367
+ * @see {@link Prism} — the type this function returns
368
+ *
49
369
  * @category Constructors
50
370
  * @since 4.0.0
51
371
  */
@@ -95,27 +415,232 @@ declare class CheckNode<T> {
95
415
  }
96
416
  type ForbidUnion<A, Message extends string> = IsUnion<A> extends true ? [Message] : [];
97
417
  /**
418
+ * The most general optic — both reading and writing can fail.
419
+ *
420
+ * When to use:
421
+ * - The focus may not exist in `S` **and** writing a new `A` back may also
422
+ * fail (e.g. the source no longer matches the expected shape).
423
+ * - As the base type: every optic ({@link Iso}, {@link Lens}, {@link Prism},
424
+ * {@link Traversal}) extends `Optional`.
425
+ *
426
+ * Behavior:
427
+ * - `getResult(s)` returns `Result.Success<A>` or `Result.Failure<string>`.
428
+ * - `replaceResult(a, s)` returns `Result.Success<S>` or
429
+ * `Result.Failure<string>`.
430
+ * - `replace(a, s)` returns the original `s` on failure (never throws).
431
+ * - `modify(f)` returns the original `s` on failure (never throws).
432
+ * - All operations are pure; inputs are never mutated.
433
+ *
434
+ * **Example** (record key that may be absent)
435
+ *
436
+ * ```ts
437
+ * import { Optic, Result } from "effect"
438
+ *
439
+ * type Env = { [key: string]: string }
440
+ * const _home = Optic.id<Env>().at("HOME")
441
+ *
442
+ * console.log(Result.isSuccess(_home.getResult({ HOME: "/root" })))
443
+ * // Output: true
444
+ *
445
+ * console.log(Result.isFailure(_home.getResult({ PATH: "/bin" })))
446
+ * // Output: true
447
+ *
448
+ * // replace returns original on failure
449
+ * console.log(_home.replace("/new", { PATH: "/bin" }))
450
+ * // Output: { PATH: "/bin" }
451
+ * ```
452
+ *
453
+ * @see {@link makeOptional} — constructor
454
+ * @see {@link Lens} — when reading always succeeds
455
+ * @see {@link Prism} — when writing always succeeds
456
+ *
98
457
  * @category Optional
99
458
  * @since 4.0.0
100
459
  */
101
460
  export interface Optional<in out S, in out A> {
102
461
  readonly node: Node;
462
+ /**
463
+ * Attempts to read the focus `A` from the whole `S`.
464
+ *
465
+ * Returns `Result.Success<A>` when the focus exists, or
466
+ * `Result.Failure<string>` with a descriptive error otherwise.
467
+ */
103
468
  readonly getResult: (s: S) => Result.Result<A, string>;
469
+ /**
470
+ * Replaces the focus in `S` with a new `A`. Returns the original `s`
471
+ * unchanged when the optic cannot focus (never throws).
472
+ */
104
473
  readonly replace: (a: A, s: S) => S;
474
+ /**
475
+ * Like {@link replace}, but returns an explicit `Result` so callers can
476
+ * detect and handle failure.
477
+ */
105
478
  readonly replaceResult: (a: A, s: S) => Result.Result<S, string>;
479
+ /**
480
+ * Composes this optic with another. The result type is the weakest of
481
+ * the two: Iso + Iso = Iso, Lens + Prism = Optional, etc.
482
+ *
483
+ * **Example** (composing a lens with a prism)
484
+ *
485
+ * ```ts
486
+ * import { Optic, Option } from "effect"
487
+ *
488
+ * type State = { value: Option.Option<number> }
489
+ *
490
+ * const _inner = Optic.id<State>().key("value").compose(Optic.some())
491
+ * // _inner is Optional<State, number>
492
+ * ```
493
+ *
494
+ * @see {@link id} — start a composition chain
495
+ */
106
496
  compose<B>(this: Iso<S, A>, that: Iso<A, B>): Iso<S, B>;
107
497
  compose<B>(this: Lens<S, A>, that: Lens<A, B>): Lens<S, B>;
108
498
  compose<B>(this: Prism<S, A>, that: Prism<A, B>): Prism<S, B>;
109
499
  compose<B>(this: Optional<S, A>, that: Optional<A, B>): Optional<S, B>;
500
+ /**
501
+ * Returns a function `(s: S) => S` that applies `f` to the focused value.
502
+ * If the optic cannot focus, the original `s` is returned unchanged.
503
+ *
504
+ * **Example** (incrementing a nested field)
505
+ *
506
+ * ```ts
507
+ * import { Optic } from "effect"
508
+ *
509
+ * type S = { readonly a: { readonly b: number } }
510
+ * const _b = Optic.id<S>().key("a").key("b")
511
+ *
512
+ * const inc = _b.modify((n) => n + 1)
513
+ * console.log(inc({ a: { b: 1 } }))
514
+ * // Output: { a: { b: 2 } }
515
+ * ```
516
+ */
110
517
  modify(f: (a: A) => A): (s: S) => S;
518
+ /**
519
+ * Focuses on a property of the current struct/tuple focus.
520
+ *
521
+ * - On a {@link Lens}, returns a Lens.
522
+ * - On an {@link Optional}, returns an Optional.
523
+ * - Does **not** work on union types (compile error).
524
+ *
525
+ * **Example** (drilling into nested structs)
526
+ *
527
+ * ```ts
528
+ * import { Optic } from "effect"
529
+ *
530
+ * type S = { readonly a: { readonly b: number } }
531
+ * const _b = Optic.id<S>().key("a").key("b")
532
+ *
533
+ * console.log(_b.get({ a: { b: 42 } }))
534
+ * // Output: 42
535
+ * ```
536
+ */
111
537
  key<S, A extends object, Key extends keyof A>(this: Lens<S, A>, key: Key, ..._err: ForbidUnion<A, "cannot use `key` on a union type">): Lens<S, A[Key]>;
112
538
  key<S, A extends object, Key extends keyof A>(this: Optional<S, A>, key: Key, ..._err: ForbidUnion<A, "cannot use `key` on a union type">): Optional<S, A[Key]>;
539
+ /**
540
+ * Focuses on a key where setting `undefined` **removes** the key from the
541
+ * struct (or splices the element from an array/tuple).
542
+ *
543
+ * - The focus type becomes `A[Key] | undefined`.
544
+ * - Does **not** work on union types (compile error).
545
+ *
546
+ * **Example** (deleting an optional key)
547
+ *
548
+ * ```ts
549
+ * import { Optic } from "effect"
550
+ *
551
+ * type S = { readonly a?: number }
552
+ * const _a = Optic.id<S>().optionalKey("a")
553
+ *
554
+ * console.log(_a.replace(undefined, { a: 1 }))
555
+ * // Output: {}
556
+ *
557
+ * console.log(_a.replace(2, {}))
558
+ * // Output: { a: 2 }
559
+ * ```
560
+ */
113
561
  optionalKey<S, A extends object, Key extends keyof A>(this: Lens<S, A>, key: Key, ..._err: ForbidUnion<A, "cannot use `optionalKey` on a union type">): Lens<S, A[Key] | undefined>;
114
562
  optionalKey<S, A extends object, Key extends keyof A>(this: Optional<S, A>, key: Key, ..._err: ForbidUnion<A, "cannot use `optionalKey` on a union type">): Optional<S, A[Key] | undefined>;
563
+ /**
564
+ * Adds one or more `Schema` validation checks to the optic chain.
565
+ * `getResult` fails when any check fails; `set` passes through unchanged.
566
+ *
567
+ * - On a {@link Prism}, returns a Prism.
568
+ * - On an {@link Optional}, returns an Optional.
569
+ *
570
+ * **Example** (only focus positive numbers)
571
+ *
572
+ * ```ts
573
+ * import { Optic, Result, Schema } from "effect"
574
+ *
575
+ * const _pos = Optic.id<number>().check(Schema.isGreaterThan(0))
576
+ *
577
+ * console.log(Result.isSuccess(_pos.getResult(5)))
578
+ * // Output: true
579
+ *
580
+ * console.log(Result.isFailure(_pos.getResult(-1)))
581
+ * // Output: true
582
+ * ```
583
+ *
584
+ * @see {@link fromChecks} — standalone prism from checks
585
+ */
115
586
  check<S, A>(this: Prism<S, A>, ...checks: readonly [AST.Check<A>, ...Array<AST.Check<A>>]): Prism<S, A>;
116
587
  check<S, A>(this: Optional<S, A>, ...checks: readonly [AST.Check<A>, ...Array<AST.Check<A>>]): Optional<S, A>;
588
+ /**
589
+ * Narrows the focus to a subtype `B` using a type guard.
590
+ *
591
+ * - On a {@link Prism}, returns a Prism.
592
+ * - On an {@link Optional}, returns an Optional.
593
+ * - Pass optional `annotations` to customize the error message.
594
+ *
595
+ * **Example** (narrowing a union)
596
+ *
597
+ * ```ts
598
+ * import { Optic, Result } from "effect"
599
+ *
600
+ * type B = { readonly _tag: "b"; readonly b: number }
601
+ * type S = { readonly _tag: "a"; readonly a: string } | B
602
+ *
603
+ * const _b = Optic.id<S>().refine(
604
+ * (s: S): s is B => s._tag === "b",
605
+ * { expected: `"b" tag` }
606
+ * )
607
+ *
608
+ * console.log(Result.isSuccess(_b.getResult({ _tag: "b", b: 1 })))
609
+ * // Output: true
610
+ * ```
611
+ *
612
+ * @see `.tag()` — shorthand for narrowing by `_tag`
613
+ */
117
614
  refine<S, A, B extends A>(this: Prism<S, A>, refinement: (a: A) => a is B, annotations?: Schema.Annotations.Filter): Prism<S, B>;
118
615
  refine<S, A, B extends A>(this: Optional<S, A>, refinement: (a: A) => a is B, annotations?: Schema.Annotations.Filter): Optional<S, B>;
616
+ /**
617
+ * Narrows the focus to the variant of a tagged union with the given
618
+ * `_tag` value.
619
+ *
620
+ * - On a {@link Prism}, returns a Prism.
621
+ * - On an {@link Optional}, returns an Optional.
622
+ * - Shorthand for `.refine(s => s._tag === tag)`.
623
+ *
624
+ * **Example** (focusing a tagged variant)
625
+ *
626
+ * ```ts
627
+ * import { Optic, Result } from "effect"
628
+ *
629
+ * type Shape =
630
+ * | { readonly _tag: "Circle"; readonly radius: number }
631
+ * | { readonly _tag: "Rect"; readonly width: number }
632
+ *
633
+ * const _radius = Optic.id<Shape>().tag("Circle").key("radius")
634
+ *
635
+ * console.log(Result.isSuccess(_radius.getResult({ _tag: "Circle", radius: 5 })))
636
+ * // Output: true
637
+ *
638
+ * console.log(Result.isFailure(_radius.getResult({ _tag: "Rect", width: 10 })))
639
+ * // Output: true
640
+ * ```
641
+ *
642
+ * @see `.refine()` — for arbitrary type guards
643
+ */
119
644
  tag<S, A extends {
120
645
  readonly _tag: AST.LiteralValue;
121
646
  }, Tag extends A["_tag"]>(this: Prism<S, A>, tag: Tag): Prism<S, Extract<A, {
@@ -126,88 +651,492 @@ export interface Optional<in out S, in out A> {
126
651
  }, Tag extends A["_tag"]>(this: Optional<S, A>, tag: Tag): Optional<S, Extract<A, {
127
652
  readonly _tag: Tag;
128
653
  }>>;
654
+ /**
655
+ * Focuses on a key only if it exists (`Object.hasOwn`). Both
656
+ * `getResult` and `replaceResult` fail when the key is absent.
657
+ *
658
+ * Unlike `.key()`, which always succeeds on the read side, `.at()` is
659
+ * useful for Records or arrays where the key/index may not be present.
660
+ *
661
+ * - Always returns an {@link Optional}.
662
+ * - Does **not** work on union types (compile error).
663
+ *
664
+ * **Example** (safe record access)
665
+ *
666
+ * ```ts
667
+ * import { Optic, Result } from "effect"
668
+ *
669
+ * type Env = { [key: string]: number }
670
+ * const _x = Optic.id<Env>().at("x")
671
+ *
672
+ * console.log(Result.isSuccess(_x.getResult({ x: 1 })))
673
+ * // Output: true
674
+ *
675
+ * console.log(Result.isFailure(_x.getResult({ y: 2 })))
676
+ * // Output: true
677
+ * ```
678
+ *
679
+ * @see `.key()` — when the key is always present
680
+ */
129
681
  at<S, A extends object, Key extends keyof A>(this: Optional<S, A>, key: Key, ..._err: ForbidUnion<A, "cannot use `at` on a union type">): Optional<S, A[Key]>;
130
682
  /**
131
- * An optic that accesses a group of keys of a struct.
683
+ * Focuses on a subset of keys of the current struct focus.
684
+ *
685
+ * - On a {@link Lens}, returns a Lens.
686
+ * - On an {@link Optional}, returns an Optional.
687
+ * - Does **not** work on union types (compile error).
688
+ *
689
+ * **Example** (picking keys)
690
+ *
691
+ * ```ts
692
+ * import { Optic } from "effect"
693
+ *
694
+ * type S = { readonly a: string; readonly b: number; readonly c: boolean }
695
+ *
696
+ * const _ac = Optic.id<S>().pick(["a", "c"])
697
+ *
698
+ * console.log(_ac.get({ a: "hi", b: 1, c: true }))
699
+ * // Output: { a: "hi", c: true }
700
+ * ```
701
+ *
702
+ * @see `.omit()` — the inverse operation
132
703
  */
133
704
  pick<S, A, Keys extends ReadonlyArray<keyof A>>(this: Lens<S, A>, keys: Keys, ..._err: ForbidUnion<A, "cannot use `pick` on a union type">): Lens<S, Pick<A, Keys[number]>>;
134
705
  pick<S, A, Keys extends ReadonlyArray<keyof A>>(this: Optional<S, A>, keys: Keys, ..._err: ForbidUnion<A, "cannot use `pick` on a union type">): Optional<S, Pick<A, Keys[number]>>;
135
706
  /**
136
- * An optic that excludes a group of keys of a struct.
707
+ * Focuses on all keys **except** the specified ones.
708
+ *
709
+ * - On a {@link Lens}, returns a Lens.
710
+ * - On an {@link Optional}, returns an Optional.
711
+ * - Does **not** work on union types (compile error).
712
+ *
713
+ * **Example** (omitting keys)
714
+ *
715
+ * ```ts
716
+ * import { Optic } from "effect"
717
+ *
718
+ * type S = { readonly a: string; readonly b: number; readonly c: boolean }
719
+ *
720
+ * const _ac = Optic.id<S>().omit(["b"])
721
+ *
722
+ * console.log(_ac.get({ a: "hi", b: 1, c: true }))
723
+ * // Output: { a: "hi", c: true }
724
+ * ```
725
+ *
726
+ * @see `.pick()` — the inverse operation
137
727
  *
138
728
  * @since 1.0.0
139
729
  */
140
730
  omit<S, A, Keys extends ReadonlyArray<keyof A>>(this: Lens<S, A>, keys: Keys, ..._err: ForbidUnion<A, "cannot use `omit` on a union type">): Lens<S, Omit<A, Keys[number]>>;
141
731
  omit<S, A, Keys extends ReadonlyArray<keyof A>>(this: Optional<S, A>, keys: Keys, ..._err: ForbidUnion<A, "cannot use `omit` on a union type">): Optional<S, Omit<A, Keys[number]>>;
142
732
  /**
143
- * Omits `undefined` values.
733
+ * Filters out `undefined` from the focus, producing a {@link Prism}.
734
+ *
735
+ * `getResult` fails when the focus is `undefined`.
736
+ *
737
+ * **Example** (filtering undefined)
738
+ *
739
+ * ```ts
740
+ * import { Optic, Result } from "effect"
741
+ *
742
+ * const _defined = Optic.id<number | undefined>().notUndefined()
743
+ *
744
+ * console.log(Result.isSuccess(_defined.getResult(42)))
745
+ * // Output: true
746
+ *
747
+ * console.log(Result.isFailure(_defined.getResult(undefined)))
748
+ * // Output: true
749
+ * ```
144
750
  *
145
751
  * @since 4.0.0
146
752
  */
147
753
  notUndefined(): Prism<S, Exclude<A, undefined>>;
148
754
  notUndefined(): Optional<S, Exclude<A, undefined>>;
149
755
  /**
150
- * Focuses **all elements** of an array-like focus and then narrows to a
151
- * **subset** using an element-level optic.
756
+ * Focuses **all elements** of an array-like focus and optionally narrows
757
+ * to a subset using an element-level optic.
758
+ *
759
+ * Available only on {@link Traversal} (i.e. when `A` is
760
+ * `ReadonlyArray<Element>`). Returns a new Traversal focused on the
761
+ * selected elements.
762
+ *
763
+ * Behavior:
764
+ * - **getResult** collects the values focused by `f(id<A>())` for each
765
+ * element. Non-focusable elements are skipped.
766
+ * - **replaceResult** expects exactly as many values as were collected by
767
+ * `getResult` and writes them back in order. Fails with a
768
+ * length-mismatch error if counts differ.
769
+ *
770
+ * **Example** (incrementing liked posts)
152
771
  *
153
- * Semantics:
154
- * - **getResult**: collects the values focused by `f(id<A>())` for each
155
- * element, returning them as a `ReadonlyArray<B>` (non-focusable elements
156
- * are skipped).
157
- * - **setResult**: expects exactly as many `B`s as were collected by
158
- * `getResult` and writes them back **in order** to the corresponding
159
- * elements; other elements are left unchanged. If the counts differ, it
160
- * fails with a length-mismatch error.
772
+ * ```ts
773
+ * import { Optic, Schema } from "effect"
774
+ *
775
+ * type Post = { title: string; likes: number }
776
+ * type S = { user: { posts: ReadonlyArray<Post> } }
777
+ *
778
+ * const _likes = Optic.id<S>()
779
+ * .key("user")
780
+ * .key("posts")
781
+ * .forEach((post) => post.key("likes").check(Schema.isGreaterThan(0)))
782
+ *
783
+ * const addLike = _likes.modifyAll((n) => n + 1)
784
+ *
785
+ * console.log(
786
+ * addLike({
787
+ * user: { posts: [{ title: "a", likes: 0 }, { title: "b", likes: 1 }] }
788
+ * })
789
+ * )
790
+ * // Output: { user: { posts: [{ title: "a", likes: 0 }, { title: "b", likes: 2 }] } }
791
+ * ```
792
+ *
793
+ * @see {@link getAll} — extract all focused elements as an array
794
+ * @see `.modifyAll()` — apply a function to every focused element
161
795
  */
162
796
  forEach<S, A, B>(this: Traversal<S, A>, f: (iso: Iso<A, A>) => Optional<A, B>): Traversal<S, B>;
797
+ /**
798
+ * Applies a function to **every** element focused by the traversal.
799
+ *
800
+ * Available only on {@link Traversal}. Returns a function `(s: S) => S`.
801
+ * If the traversal cannot focus, the original `s` is returned unchanged.
802
+ *
803
+ * Unlike `.modify()`, which operates on the whole array, `modifyAll`
804
+ * maps `f` over each individual element.
805
+ *
806
+ * **Example** (doubling all focused values)
807
+ *
808
+ * ```ts
809
+ * import { Optic, Schema } from "effect"
810
+ *
811
+ * type S = { readonly items: ReadonlyArray<number> }
812
+ *
813
+ * const _positive = Optic.id<S>()
814
+ * .key("items")
815
+ * .forEach((n) => n.check(Schema.isGreaterThan(0)))
816
+ *
817
+ * const doubled = _positive.modifyAll((n) => n * 2)
818
+ *
819
+ * console.log(doubled({ items: [1, -2, 3] }))
820
+ * // Output: { items: [2, -2, 6] }
821
+ * ```
822
+ *
823
+ * @see `.forEach()` — create a sub-traversal
824
+ * @see {@link getAll} — extract focused elements
825
+ */
163
826
  modifyAll<S, A>(this: Traversal<S, A>, f: (a: A) => A): (s: S) => S;
164
827
  }
165
828
  /**
829
+ * Creates an {@link Optional} from a fallible getter and a fallible setter.
830
+ *
831
+ * When to use:
832
+ * - Both reading and writing can fail.
833
+ *
834
+ * Behavior:
835
+ * - Does not mutate inputs.
836
+ * - `getResult` should return `Result.fail(message)` on mismatch.
837
+ * - `set` should return `Result.fail(message)` when the update cannot be
838
+ * applied.
839
+ *
840
+ * **Example** (safe record key access)
841
+ *
842
+ * ```ts
843
+ * import { Optic, Result } from "effect"
844
+ *
845
+ * const atKey = (key: string) =>
846
+ * Optic.makeOptional<Record<string, number>, number>(
847
+ * (s) =>
848
+ * Object.hasOwn(s, key)
849
+ * ? Result.succeed(s[key])
850
+ * : Result.fail(`Key "${key}" not found`),
851
+ * (a, s) =>
852
+ * Object.hasOwn(s, key)
853
+ * ? Result.succeed({ ...s, [key]: a })
854
+ * : Result.fail(`Key "${key}" not found`)
855
+ * )
856
+ *
857
+ * console.log(Result.isSuccess(atKey("x").getResult({ x: 1 })))
858
+ * // Output: true
859
+ * ```
860
+ *
861
+ * @see {@link Optional} — the type this function returns
862
+ * @see {@link makeLens} — when reading always succeeds
863
+ * @see {@link makePrism} — when writing always succeeds
864
+ *
166
865
  * @category Constructors
167
866
  * @since 4.0.0
168
867
  */
169
868
  export declare function makeOptional<S, A>(getResult: (s: S) => Result.Result<A, string>, set: (a: A, s: S) => Result.Result<S, string>): Optional<S, A>;
170
869
  /**
870
+ * An optic that focuses on **zero or more** elements of type `A` inside `S`.
871
+ *
872
+ * When to use:
873
+ * - You want to read/update multiple elements at once (e.g. all items in
874
+ * an array, or a filtered subset).
875
+ *
876
+ * Behavior:
877
+ * - Technically `Optional<S, ReadonlyArray<A>>` — the focused value is an
878
+ * array of all matched elements.
879
+ * - Use `.forEach()` to add per-element sub-optics (filtering, drilling
880
+ * deeper).
881
+ * - Use `.modifyAll(f)` to map a function over every focused element.
882
+ * - Use {@link getAll} to extract all focused elements as a plain array.
883
+ *
884
+ * **Example** (traversing array elements with a filter)
885
+ *
886
+ * ```ts
887
+ * import { Optic, Schema } from "effect"
888
+ *
889
+ * type S = { readonly items: ReadonlyArray<number> }
890
+ *
891
+ * const _positive = Optic.id<S>()
892
+ * .key("items")
893
+ * .forEach((n) => n.check(Schema.isGreaterThan(0)))
894
+ *
895
+ * const getPositive = Optic.getAll(_positive)
896
+ *
897
+ * console.log(getPositive({ items: [1, -2, 3] }))
898
+ * // Output: [1, 3]
899
+ * ```
900
+ *
901
+ * @see {@link getAll} — extract focused elements
902
+ * @see {@link Optional} — the base type
903
+ *
171
904
  * @category Traversal
172
905
  * @since 4.0.0
173
906
  */
174
907
  export interface Traversal<in out S, in out A> extends Optional<S, ReadonlyArray<A>> {
175
908
  }
176
909
  /**
177
- * Returns all the elements focused by the traversal.
910
+ * Returns a function that extracts all elements focused by a
911
+ * {@link Traversal} as a plain mutable array.
912
+ *
913
+ * When to use:
914
+ * - You need the focused values as a simple `Array<A>` for further
915
+ * processing.
916
+ *
917
+ * Behavior:
918
+ * - Returns an empty array when the traversal cannot focus.
919
+ * - Always returns a fresh array (safe to mutate).
920
+ * - Does not mutate the source.
921
+ *
922
+ * **Example** (collecting positive numbers)
923
+ *
924
+ * ```ts
925
+ * import { Optic, Schema } from "effect"
926
+ *
927
+ * type S = { readonly values: ReadonlyArray<number> }
928
+ *
929
+ * const _pos = Optic.id<S>()
930
+ * .key("values")
931
+ * .forEach((n) => n.check(Schema.isGreaterThan(0)))
932
+ *
933
+ * const getPositive = Optic.getAll(_pos)
934
+ *
935
+ * console.log(getPositive({ values: [3, -1, 5] }))
936
+ * // Output: [3, 5]
937
+ *
938
+ * console.log(getPositive({ values: [-1, -2] }))
939
+ * // Output: []
940
+ * ```
941
+ *
942
+ * @see {@link Traversal} — the optic type this operates on
178
943
  *
179
944
  * @category Traversal
180
945
  * @since 4.0.0
181
946
  */
182
947
  export declare function getAll<S, A>(traversal: Traversal<S, A>): (s: S) => Array<A>;
183
948
  /**
184
- * The identity optic.
949
+ * The identity {@link Iso}. Focuses on the whole value unchanged.
950
+ *
951
+ * When to use:
952
+ * - As the starting point of an optic chain: `Optic.id<S>().key("x")...`
953
+ * - Anywhere an `Iso<S, S>` is needed.
954
+ *
955
+ * Behavior:
956
+ * - `get(s)` returns `s`.
957
+ * - `set(a)` returns `a`.
958
+ * - Singleton — every call returns the same instance.
959
+ *
960
+ * **Example** (starting an optic chain)
961
+ *
962
+ * ```ts
963
+ * import { Optic } from "effect"
964
+ *
965
+ * type S = { readonly x: number }
966
+ *
967
+ * const _x = Optic.id<S>().key("x")
968
+ *
969
+ * console.log(_x.get({ x: 42 }))
970
+ * // Output: 42
971
+ * ```
972
+ *
973
+ * @see {@link Iso} — the type this function returns
185
974
  *
186
975
  * @category Iso
187
976
  * @since 4.0.0
188
977
  */
189
978
  export declare function id<S>(): Iso<S, S>;
190
979
  /**
980
+ * An {@link Iso} that converts a `Record<string, A>` to an array of
981
+ * `[key, value]` entries and back.
982
+ *
983
+ * When to use:
984
+ * - You want to traverse or manipulate record entries as an array (e.g.
985
+ * with `.forEach()`).
986
+ *
987
+ * Behavior:
988
+ * - `get` uses `Object.entries`.
989
+ * - `set` uses `Object.fromEntries`.
990
+ * - Round-trip is lossless for `Record<string, A>`.
991
+ *
992
+ * **Example** (traversing record values)
993
+ *
994
+ * ```ts
995
+ * import { Optic, Schema } from "effect"
996
+ *
997
+ * const _positiveValues = Optic.entries<number>()
998
+ * .forEach((entry) => entry.key(1).check(Schema.isGreaterThan(0)))
999
+ *
1000
+ * const inc = _positiveValues.modifyAll((n) => n + 1)
1001
+ *
1002
+ * console.log(inc({ a: 0, b: 3, c: -1 }))
1003
+ * // Output: { a: 0, b: 4, c: -1 }
1004
+ * ```
1005
+ *
1006
+ * @see {@link Iso} — the type this function returns
1007
+ * @see {@link id} — identity iso
1008
+ *
191
1009
  * @category Iso
192
1010
  * @since 4.0.0
193
1011
  */
194
1012
  export declare function entries<A>(): Iso<Record<string, A>, ReadonlyArray<readonly [string, A]>>;
195
1013
  /**
1014
+ * A {@link Prism} that focuses on the value inside `Option.Some`.
1015
+ *
1016
+ * When to use:
1017
+ * - You have an `Option<A>` and want to read/update the inner value only
1018
+ * when it is `Some`.
1019
+ *
1020
+ * Behavior:
1021
+ * - `getResult` fails with an error message when the option is `None`.
1022
+ * - `set(a)` wraps `a` in `Option.some(a)`.
1023
+ *
1024
+ * **Example** (accessing Some value)
1025
+ *
1026
+ * ```ts
1027
+ * import { Optic, Option, Result } from "effect"
1028
+ *
1029
+ * const _some = Optic.id<Option.Option<number>>().compose(Optic.some())
1030
+ *
1031
+ * console.log(Result.isSuccess(_some.getResult(Option.some(42))))
1032
+ * // Output: true
1033
+ *
1034
+ * console.log(Result.isFailure(_some.getResult(Option.none())))
1035
+ * // Output: true
1036
+ *
1037
+ * console.log(_some.set(10))
1038
+ * // Output: { _tag: "Some", value: 10 }
1039
+ * ```
1040
+ *
1041
+ * @see {@link none} — focuses on `None` instead
1042
+ * @see {@link Prism} — the type this function returns
1043
+ *
196
1044
  * @category Prism
197
1045
  * @since 4.0.0
198
1046
  */
199
1047
  export declare function some<A>(): Prism<Option.Option<A>, A>;
200
1048
  /**
1049
+ * A {@link Prism} that focuses on `Option.None`, exposing `undefined`.
1050
+ *
1051
+ * When to use:
1052
+ * - You want to match or construct `None` values within an optic chain.
1053
+ *
1054
+ * Behavior:
1055
+ * - `getResult` succeeds with `undefined` when the option is `None`.
1056
+ * - `getResult` fails when the option is `Some`.
1057
+ * - `set(undefined)` produces `Option.none()`.
1058
+ *
1059
+ * **Example** (matching None)
1060
+ *
1061
+ * ```ts
1062
+ * import { Optic, Option, Result } from "effect"
1063
+ *
1064
+ * const _none = Optic.id<Option.Option<number>>().compose(Optic.none())
1065
+ *
1066
+ * console.log(Result.isSuccess(_none.getResult(Option.none())))
1067
+ * // Output: true
1068
+ *
1069
+ * console.log(Result.isFailure(_none.getResult(Option.some(1))))
1070
+ * // Output: true
1071
+ * ```
1072
+ *
1073
+ * @see {@link some} — focuses on `Some` instead
1074
+ * @see {@link Prism} — the type this function returns
1075
+ *
201
1076
  * @category Prism
202
1077
  * @since 4.0.0
203
1078
  */
204
1079
  export declare function none<A>(): Prism<Option.Option<A>, undefined>;
205
1080
  /**
1081
+ * A {@link Prism} that focuses on the success value of a `Result`.
1082
+ *
1083
+ * When to use:
1084
+ * - You have a `Result<A, E>` and want to read/update `A` only when it
1085
+ * is a `Success`.
1086
+ *
1087
+ * Behavior:
1088
+ * - `getResult` fails when the result is a `Failure`.
1089
+ * - `set(a)` produces `Result.succeed(a)`.
1090
+ *
1091
+ * **Example** (accessing success)
1092
+ *
1093
+ * ```ts
1094
+ * import { Optic, Result } from "effect"
1095
+ *
1096
+ * const _ok = Optic.id<Result.Result<number, string>>().compose(Optic.success())
1097
+ *
1098
+ * console.log(Result.isSuccess(_ok.getResult(Result.succeed(42))))
1099
+ * // Output: true
1100
+ *
1101
+ * console.log(Result.isFailure(_ok.getResult(Result.fail("err"))))
1102
+ * // Output: true
1103
+ * ```
1104
+ *
1105
+ * @see {@link failure} — focuses on the failure side
1106
+ * @see {@link Prism} — the type this function returns
1107
+ *
206
1108
  * @category Prism
207
1109
  * @since 4.0.0
208
1110
  */
209
1111
  export declare function success<A, E>(): Prism<Result.Result<A, E>, A>;
210
1112
  /**
1113
+ * A {@link Prism} that focuses on the failure value of a `Result`.
1114
+ *
1115
+ * When to use:
1116
+ * - You have a `Result<A, E>` and want to read/update `E` only when it
1117
+ * is a `Failure`.
1118
+ *
1119
+ * Behavior:
1120
+ * - `getResult` fails when the result is a `Success`.
1121
+ * - `set(e)` produces `Result.fail(e)`.
1122
+ *
1123
+ * **Example** (accessing failure)
1124
+ *
1125
+ * ```ts
1126
+ * import { Optic, Result } from "effect"
1127
+ *
1128
+ * const _err = Optic.id<Result.Result<number, string>>().compose(Optic.failure())
1129
+ *
1130
+ * console.log(Result.isSuccess(_err.getResult(Result.fail("oops"))))
1131
+ * // Output: true
1132
+ *
1133
+ * console.log(Result.isFailure(_err.getResult(Result.succeed(42))))
1134
+ * // Output: true
1135
+ * ```
1136
+ *
1137
+ * @see {@link success} — focuses on the success side
1138
+ * @see {@link Prism} — the type this function returns
1139
+ *
211
1140
  * @category Prism
212
1141
  * @since 4.0.0
213
1142
  */