effect 4.0.0-beta.3 → 4.0.0-beta.30

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 (983) hide show
  1. package/dist/Array.d.ts +126 -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/Brand.d.ts +1 -1
  6. package/dist/Brand.d.ts.map +1 -1
  7. package/dist/Brand.js +1 -1
  8. package/dist/Brand.js.map +1 -1
  9. package/dist/Cache.d.ts +2 -2
  10. package/dist/Cache.d.ts.map +1 -1
  11. package/dist/Cache.js +6 -5
  12. package/dist/Cache.js.map +1 -1
  13. package/dist/Cause.d.ts +2 -2
  14. package/dist/Cause.d.ts.map +1 -1
  15. package/dist/Channel.d.ts +116 -30
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +82 -37
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/Chunk.d.ts +54 -247
  20. package/dist/Chunk.d.ts.map +1 -1
  21. package/dist/Chunk.js +36 -67
  22. package/dist/Chunk.js.map +1 -1
  23. package/dist/Combiner.d.ts +280 -13
  24. package/dist/Combiner.d.ts.map +1 -1
  25. package/dist/Combiner.js +198 -7
  26. package/dist/Combiner.js.map +1 -1
  27. package/dist/Config.d.ts +165 -9
  28. package/dist/Config.d.ts.map +1 -1
  29. package/dist/Config.js +65 -10
  30. package/dist/Config.js.map +1 -1
  31. package/dist/ConfigProvider.d.ts +1 -1
  32. package/dist/Cron.d.ts +1 -1
  33. package/dist/Data.d.ts +535 -366
  34. package/dist/Data.d.ts.map +1 -1
  35. package/dist/Data.js +132 -79
  36. package/dist/Data.js.map +1 -1
  37. package/dist/DateTime.d.ts +23 -161
  38. package/dist/DateTime.d.ts.map +1 -1
  39. package/dist/DateTime.js +6 -51
  40. package/dist/DateTime.js.map +1 -1
  41. package/dist/Duration.d.ts +11 -11
  42. package/dist/Duration.d.ts.map +1 -1
  43. package/dist/Duration.js +11 -11
  44. package/dist/Duration.js.map +1 -1
  45. package/dist/Effect.d.ts +1206 -924
  46. package/dist/Effect.d.ts.map +1 -1
  47. package/dist/Effect.js +390 -329
  48. package/dist/Effect.js.map +1 -1
  49. package/dist/Encoding.d.ts +194 -0
  50. package/dist/Encoding.d.ts.map +1 -0
  51. package/dist/Encoding.js +352 -0
  52. package/dist/Encoding.js.map +1 -0
  53. package/dist/Equal.d.ts +276 -109
  54. package/dist/Equal.d.ts.map +1 -1
  55. package/dist/Equal.js +124 -48
  56. package/dist/Equal.js.map +1 -1
  57. package/dist/ErrorReporter.d.ts +374 -0
  58. package/dist/ErrorReporter.d.ts.map +1 -0
  59. package/dist/ErrorReporter.js +244 -0
  60. package/dist/ErrorReporter.js.map +1 -0
  61. package/dist/Exit.d.ts +24 -12
  62. package/dist/Exit.d.ts.map +1 -1
  63. package/dist/Exit.js +8 -4
  64. package/dist/Exit.js.map +1 -1
  65. package/dist/Fiber.d.ts +3 -2
  66. package/dist/Fiber.d.ts.map +1 -1
  67. package/dist/Fiber.js.map +1 -1
  68. package/dist/FileSystem.d.ts +1 -1
  69. package/dist/FileSystem.d.ts.map +1 -1
  70. package/dist/FileSystem.js +5 -5
  71. package/dist/FileSystem.js.map +1 -1
  72. package/dist/Filter.d.ts +34 -38
  73. package/dist/Filter.d.ts.map +1 -1
  74. package/dist/Filter.js +15 -13
  75. package/dist/Filter.js.map +1 -1
  76. package/dist/Formatter.d.ts +131 -47
  77. package/dist/Formatter.d.ts.map +1 -1
  78. package/dist/Formatter.js +229 -51
  79. package/dist/Formatter.js.map +1 -1
  80. package/dist/Function.d.ts +1 -9
  81. package/dist/Function.d.ts.map +1 -1
  82. package/dist/Function.js +2 -10
  83. package/dist/Function.js.map +1 -1
  84. package/dist/Graph.d.ts +1 -1
  85. package/dist/Graph.d.ts.map +1 -1
  86. package/dist/Graph.js +5 -8
  87. package/dist/Graph.js.map +1 -1
  88. package/dist/HashMap.d.ts +15 -14
  89. package/dist/HashMap.d.ts.map +1 -1
  90. package/dist/HashMap.js +4 -4
  91. package/dist/HashMap.js.map +1 -1
  92. package/dist/Iterable.d.ts +39 -39
  93. package/dist/Iterable.d.ts.map +1 -1
  94. package/dist/Iterable.js +94 -22
  95. package/dist/Iterable.js.map +1 -1
  96. package/dist/JsonSchema.d.ts +299 -10
  97. package/dist/JsonSchema.d.ts.map +1 -1
  98. package/dist/JsonSchema.js +323 -4
  99. package/dist/JsonSchema.js.map +1 -1
  100. package/dist/Latch.d.ts +109 -0
  101. package/dist/Latch.d.ts.map +1 -0
  102. package/dist/Latch.js +72 -0
  103. package/dist/Latch.js.map +1 -0
  104. package/dist/Layer.d.ts +121 -126
  105. package/dist/Layer.d.ts.map +1 -1
  106. package/dist/Layer.js +43 -44
  107. package/dist/Layer.js.map +1 -1
  108. package/dist/LayerMap.d.ts +8 -8
  109. package/dist/LayerMap.d.ts.map +1 -1
  110. package/dist/LayerMap.js +3 -3
  111. package/dist/LogLevel.d.ts +32 -0
  112. package/dist/LogLevel.d.ts.map +1 -1
  113. package/dist/LogLevel.js +28 -100
  114. package/dist/LogLevel.js.map +1 -1
  115. package/dist/Logger.d.ts +29 -95
  116. package/dist/Logger.d.ts.map +1 -1
  117. package/dist/Logger.js +2 -3
  118. package/dist/Logger.js.map +1 -1
  119. package/dist/ManagedRuntime.d.ts +2 -2
  120. package/dist/ManagedRuntime.js +2 -2
  121. package/dist/Metric.d.ts +4 -6
  122. package/dist/Metric.d.ts.map +1 -1
  123. package/dist/Metric.js +3 -5
  124. package/dist/Metric.js.map +1 -1
  125. package/dist/Newtype.d.ts +291 -0
  126. package/dist/Newtype.d.ts.map +1 -0
  127. package/dist/Newtype.js +161 -0
  128. package/dist/Newtype.js.map +1 -0
  129. package/dist/Optic.d.ts +947 -18
  130. package/dist/Optic.d.ts.map +1 -1
  131. package/dist/Optic.js +454 -5
  132. package/dist/Optic.js.map +1 -1
  133. package/dist/Option.d.ts +23 -16
  134. package/dist/Option.d.ts.map +1 -1
  135. package/dist/Option.js +15 -9
  136. package/dist/Option.js.map +1 -1
  137. package/dist/Pipeable.d.ts +17 -0
  138. package/dist/Pipeable.d.ts.map +1 -1
  139. package/dist/Pipeable.js +19 -1
  140. package/dist/Pipeable.js.map +1 -1
  141. package/dist/PlatformError.d.ts +10 -9
  142. package/dist/PlatformError.d.ts.map +1 -1
  143. package/dist/PlatformError.js +2 -2
  144. package/dist/PlatformError.js.map +1 -1
  145. package/dist/Pool.d.ts +6 -4
  146. package/dist/Pool.d.ts.map +1 -1
  147. package/dist/Pool.js +7 -5
  148. package/dist/Pool.js.map +1 -1
  149. package/dist/PubSub.d.ts +3 -2
  150. package/dist/PubSub.d.ts.map +1 -1
  151. package/dist/PubSub.js +3 -2
  152. package/dist/PubSub.js.map +1 -1
  153. package/dist/Pull.d.ts.map +1 -1
  154. package/dist/Pull.js +1 -1
  155. package/dist/Pull.js.map +1 -1
  156. package/dist/Queue.d.ts.map +1 -1
  157. package/dist/Queue.js +0 -1
  158. package/dist/Queue.js.map +1 -1
  159. package/dist/Random.d.ts +35 -1
  160. package/dist/Random.d.ts.map +1 -1
  161. package/dist/Random.js +46 -12
  162. package/dist/Random.js.map +1 -1
  163. package/dist/RcMap.d.ts +2 -2
  164. package/dist/RcMap.d.ts.map +1 -1
  165. package/dist/RcMap.js +1 -1
  166. package/dist/RcMap.js.map +1 -1
  167. package/dist/RcRef.d.ts +1 -1
  168. package/dist/RcRef.d.ts.map +1 -1
  169. package/dist/Record.d.ts +23 -120
  170. package/dist/Record.d.ts.map +1 -1
  171. package/dist/Record.js +21 -41
  172. package/dist/Record.js.map +1 -1
  173. package/dist/Reducer.d.ts +166 -7
  174. package/dist/Reducer.d.ts.map +1 -1
  175. package/dist/Reducer.js +135 -1
  176. package/dist/Reducer.js.map +1 -1
  177. package/dist/References.d.ts +9 -4
  178. package/dist/References.d.ts.map +1 -1
  179. package/dist/References.js +6 -1
  180. package/dist/References.js.map +1 -1
  181. package/dist/Request.d.ts +1 -1
  182. package/dist/Request.d.ts.map +1 -1
  183. package/dist/Request.js +2 -1
  184. package/dist/Request.js.map +1 -1
  185. package/dist/RequestResolver.d.ts +25 -45
  186. package/dist/RequestResolver.d.ts.map +1 -1
  187. package/dist/RequestResolver.js +10 -30
  188. package/dist/RequestResolver.js.map +1 -1
  189. package/dist/Result.d.ts +1 -1
  190. package/dist/Result.d.ts.map +1 -1
  191. package/dist/Result.js +1 -2
  192. package/dist/Result.js.map +1 -1
  193. package/dist/Runtime.d.ts +66 -0
  194. package/dist/Runtime.d.ts.map +1 -1
  195. package/dist/Runtime.js +79 -6
  196. package/dist/Runtime.js.map +1 -1
  197. package/dist/Schedule.d.ts +191 -102
  198. package/dist/Schedule.d.ts.map +1 -1
  199. package/dist/Schedule.js +152 -66
  200. package/dist/Schedule.js.map +1 -1
  201. package/dist/Scheduler.d.ts +9 -0
  202. package/dist/Scheduler.d.ts.map +1 -1
  203. package/dist/Scheduler.js +11 -0
  204. package/dist/Scheduler.js.map +1 -1
  205. package/dist/Schema.d.ts +309 -88
  206. package/dist/Schema.d.ts.map +1 -1
  207. package/dist/Schema.js +499 -109
  208. package/dist/Schema.js.map +1 -1
  209. package/dist/SchemaAST.d.ts.map +1 -1
  210. package/dist/SchemaAST.js +129 -23
  211. package/dist/SchemaAST.js.map +1 -1
  212. package/dist/SchemaGetter.d.ts +5 -5
  213. package/dist/SchemaGetter.d.ts.map +1 -1
  214. package/dist/SchemaGetter.js +12 -14
  215. package/dist/SchemaGetter.js.map +1 -1
  216. package/dist/SchemaParser.d.ts +5 -0
  217. package/dist/SchemaParser.d.ts.map +1 -1
  218. package/dist/SchemaParser.js +10 -0
  219. package/dist/SchemaParser.js.map +1 -1
  220. package/dist/SchemaRepresentation.d.ts +44 -43
  221. package/dist/SchemaRepresentation.d.ts.map +1 -1
  222. package/dist/SchemaRepresentation.js +49 -24
  223. package/dist/SchemaRepresentation.js.map +1 -1
  224. package/dist/SchemaTransformation.d.ts +107 -3
  225. package/dist/SchemaTransformation.d.ts.map +1 -1
  226. package/dist/SchemaTransformation.js +159 -4
  227. package/dist/SchemaTransformation.js.map +1 -1
  228. package/dist/ScopedCache.d.ts +2 -2
  229. package/dist/ScopedCache.d.ts.map +1 -1
  230. package/dist/ScopedCache.js +1 -1
  231. package/dist/ScopedCache.js.map +1 -1
  232. package/dist/Semaphore.d.ts +211 -0
  233. package/dist/Semaphore.d.ts.map +1 -0
  234. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  235. package/dist/Semaphore.js.map +1 -0
  236. package/dist/ServiceMap.d.ts +41 -31
  237. package/dist/ServiceMap.d.ts.map +1 -1
  238. package/dist/ServiceMap.js +3 -3
  239. package/dist/ServiceMap.js.map +1 -1
  240. package/dist/Sink.d.ts +13 -13
  241. package/dist/Sink.d.ts.map +1 -1
  242. package/dist/Sink.js +53 -6
  243. package/dist/Sink.js.map +1 -1
  244. package/dist/Stdio.d.ts +16 -4
  245. package/dist/Stdio.d.ts.map +1 -1
  246. package/dist/Stdio.js +18 -0
  247. package/dist/Stdio.js.map +1 -1
  248. package/dist/Stream.d.ts +250 -428
  249. package/dist/Stream.d.ts.map +1 -1
  250. package/dist/Stream.js +137 -82
  251. package/dist/Stream.js.map +1 -1
  252. package/dist/Struct.d.ts +16 -0
  253. package/dist/Struct.d.ts.map +1 -1
  254. package/dist/Struct.js +22 -0
  255. package/dist/Struct.js.map +1 -1
  256. package/dist/SubscriptionRef.d.ts +2 -1
  257. package/dist/SubscriptionRef.d.ts.map +1 -1
  258. package/dist/SubscriptionRef.js +2 -1
  259. package/dist/SubscriptionRef.js.map +1 -1
  260. package/dist/SynchronizedRef.d.ts +2 -1
  261. package/dist/SynchronizedRef.d.ts.map +1 -1
  262. package/dist/SynchronizedRef.js +2 -1
  263. package/dist/SynchronizedRef.js.map +1 -1
  264. package/dist/Trie.d.ts +18 -17
  265. package/dist/Trie.d.ts.map +1 -1
  266. package/dist/Trie.js +5 -5
  267. package/dist/Trie.js.map +1 -1
  268. package/dist/TxChunk.d.ts +37 -37
  269. package/dist/TxChunk.d.ts.map +1 -1
  270. package/dist/TxChunk.js +3 -3
  271. package/dist/TxChunk.js.map +1 -1
  272. package/dist/TxDeferred.d.ts +328 -0
  273. package/dist/TxDeferred.d.ts.map +1 -0
  274. package/dist/TxDeferred.js +196 -0
  275. package/dist/TxDeferred.js.map +1 -0
  276. package/dist/TxHashMap.d.ts +84 -83
  277. package/dist/TxHashMap.d.ts.map +1 -1
  278. package/dist/TxHashMap.js +24 -24
  279. package/dist/TxHashMap.js.map +1 -1
  280. package/dist/TxHashSet.d.ts +35 -35
  281. package/dist/TxHashSet.d.ts.map +1 -1
  282. package/dist/TxHashSet.js +14 -14
  283. package/dist/TxHashSet.js.map +1 -1
  284. package/dist/TxPriorityQueue.d.ts +609 -0
  285. package/dist/TxPriorityQueue.d.ts.map +1 -0
  286. package/dist/TxPriorityQueue.js +415 -0
  287. package/dist/TxPriorityQueue.js.map +1 -0
  288. package/dist/TxPubSub.d.ts +585 -0
  289. package/dist/TxPubSub.d.ts.map +1 -0
  290. package/dist/TxPubSub.js +521 -0
  291. package/dist/TxPubSub.js.map +1 -0
  292. package/dist/TxQueue.d.ts +32 -32
  293. package/dist/TxQueue.d.ts.map +1 -1
  294. package/dist/TxQueue.js +26 -26
  295. package/dist/TxQueue.js.map +1 -1
  296. package/dist/TxReentrantLock.d.ts +523 -0
  297. package/dist/TxReentrantLock.d.ts.map +1 -0
  298. package/dist/TxReentrantLock.js +504 -0
  299. package/dist/TxReentrantLock.js.map +1 -0
  300. package/dist/TxRef.d.ts +34 -34
  301. package/dist/TxRef.d.ts.map +1 -1
  302. package/dist/TxRef.js +21 -14
  303. package/dist/TxRef.js.map +1 -1
  304. package/dist/TxSemaphore.d.ts +8 -8
  305. package/dist/TxSemaphore.d.ts.map +1 -1
  306. package/dist/TxSemaphore.js +7 -7
  307. package/dist/TxSemaphore.js.map +1 -1
  308. package/dist/TxSubscriptionRef.d.ts +508 -0
  309. package/dist/TxSubscriptionRef.d.ts.map +1 -0
  310. package/dist/TxSubscriptionRef.js +293 -0
  311. package/dist/TxSubscriptionRef.js.map +1 -0
  312. package/dist/Types.d.ts +80 -23
  313. package/dist/Types.d.ts.map +1 -1
  314. package/dist/Utils.d.ts +137 -65
  315. package/dist/Utils.d.ts.map +1 -1
  316. package/dist/Utils.js +38 -66
  317. package/dist/Utils.js.map +1 -1
  318. package/dist/index.d.ts +718 -23
  319. package/dist/index.d.ts.map +1 -1
  320. package/dist/index.js +718 -23
  321. package/dist/index.js.map +1 -1
  322. package/dist/internal/core.js +11 -3
  323. package/dist/internal/core.js.map +1 -1
  324. package/dist/internal/dateTime.js +3 -11
  325. package/dist/internal/dateTime.js.map +1 -1
  326. package/dist/internal/effect.js +264 -126
  327. package/dist/internal/effect.js.map +1 -1
  328. package/dist/internal/hashMap.js +5 -4
  329. package/dist/internal/hashMap.js.map +1 -1
  330. package/dist/internal/random.d.ts +2 -0
  331. package/dist/internal/random.d.ts.map +1 -0
  332. package/dist/internal/random.js +13 -0
  333. package/dist/internal/random.js.map +1 -0
  334. package/dist/internal/rcRef.js +3 -2
  335. package/dist/internal/rcRef.js.map +1 -1
  336. package/dist/internal/request.js +2 -2
  337. package/dist/internal/request.js.map +1 -1
  338. package/dist/internal/schema/annotations.js +2 -0
  339. package/dist/internal/schema/annotations.js.map +1 -1
  340. package/dist/internal/schema/representation.js +47 -106
  341. package/dist/internal/schema/representation.js.map +1 -1
  342. package/dist/internal/schema/schema.js +1 -0
  343. package/dist/internal/schema/schema.js.map +1 -1
  344. package/dist/internal/schema/to-codec.js +7 -10
  345. package/dist/internal/schema/to-codec.js.map +1 -1
  346. package/dist/internal/trie.js +5 -4
  347. package/dist/internal/trie.js.map +1 -1
  348. package/dist/testing/TestClock.d.ts +8 -7
  349. package/dist/testing/TestClock.d.ts.map +1 -1
  350. package/dist/testing/TestClock.js +6 -4
  351. package/dist/testing/TestClock.js.map +1 -1
  352. package/dist/testing/TestSchema.d.ts +266 -32
  353. package/dist/testing/TestSchema.d.ts.map +1 -1
  354. package/dist/testing/TestSchema.js +296 -23
  355. package/dist/testing/TestSchema.js.map +1 -1
  356. package/dist/testing/index.d.ts +64 -1
  357. package/dist/testing/index.d.ts.map +1 -1
  358. package/dist/testing/index.js +64 -1
  359. package/dist/testing/index.js.map +1 -1
  360. package/dist/unstable/ai/AiError.d.ts +134 -51
  361. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  362. package/dist/unstable/ai/AiError.js +19 -16
  363. package/dist/unstable/ai/AiError.js.map +1 -1
  364. package/dist/unstable/ai/Chat.d.ts +5 -5
  365. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  366. package/dist/unstable/ai/Chat.js +38 -44
  367. package/dist/unstable/ai/Chat.js.map +1 -1
  368. package/dist/unstable/ai/LanguageModel.d.ts +16 -30
  369. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  370. package/dist/unstable/ai/LanguageModel.js +97 -37
  371. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  372. package/dist/unstable/ai/McpSchema.d.ts +183 -88
  373. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  374. package/dist/unstable/ai/McpSchema.js +57 -12
  375. package/dist/unstable/ai/McpSchema.js.map +1 -1
  376. package/dist/unstable/ai/McpServer.d.ts +66 -13
  377. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  378. package/dist/unstable/ai/McpServer.js +193 -51
  379. package/dist/unstable/ai/McpServer.js.map +1 -1
  380. package/dist/unstable/ai/Model.d.ts +25 -7
  381. package/dist/unstable/ai/Model.d.ts.map +1 -1
  382. package/dist/unstable/ai/Model.js +22 -6
  383. package/dist/unstable/ai/Model.js.map +1 -1
  384. package/dist/unstable/ai/Prompt.d.ts +20 -20
  385. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  386. package/dist/unstable/ai/Response.d.ts +26 -26
  387. package/dist/unstable/ai/Response.d.ts.map +1 -1
  388. package/dist/unstable/ai/Response.js +1 -1
  389. package/dist/unstable/ai/Response.js.map +1 -1
  390. package/dist/unstable/ai/Tool.d.ts +20 -4
  391. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  392. package/dist/unstable/ai/Tool.js +14 -9
  393. package/dist/unstable/ai/Tool.js.map +1 -1
  394. package/dist/unstable/ai/Toolkit.d.ts +1 -1
  395. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  396. package/dist/unstable/ai/Toolkit.js +4 -11
  397. package/dist/unstable/ai/Toolkit.js.map +1 -1
  398. package/dist/unstable/ai/index.d.ts +1 -1
  399. package/dist/unstable/ai/index.js +1 -1
  400. package/dist/unstable/ai/internal/codec-transformer.js +0 -5
  401. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  402. package/dist/unstable/cli/CliError.d.ts +27 -60
  403. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  404. package/dist/unstable/cli/CliError.js +25 -57
  405. package/dist/unstable/cli/CliError.js.map +1 -1
  406. package/dist/unstable/cli/CliOutput.js +59 -6
  407. package/dist/unstable/cli/CliOutput.js.map +1 -1
  408. package/dist/unstable/cli/Command.d.ts +368 -56
  409. package/dist/unstable/cli/Command.d.ts.map +1 -1
  410. package/dist/unstable/cli/Command.js +325 -64
  411. package/dist/unstable/cli/Command.js.map +1 -1
  412. package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
  413. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
  414. package/dist/unstable/cli/GlobalFlag.js +118 -0
  415. package/dist/unstable/cli/GlobalFlag.js.map +1 -0
  416. package/dist/unstable/cli/HelpDoc.d.ts +70 -2
  417. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  418. package/dist/unstable/cli/Primitive.d.ts +1 -1
  419. package/dist/unstable/cli/Primitive.js +1 -1
  420. package/dist/unstable/cli/Prompt.js +35 -8
  421. package/dist/unstable/cli/Prompt.js.map +1 -1
  422. package/dist/unstable/cli/index.d.ts +4 -0
  423. package/dist/unstable/cli/index.d.ts.map +1 -1
  424. package/dist/unstable/cli/index.js +4 -0
  425. package/dist/unstable/cli/index.js.map +1 -1
  426. package/dist/unstable/cli/internal/command.d.ts +40 -14
  427. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  428. package/dist/unstable/cli/internal/command.js +72 -46
  429. package/dist/unstable/cli/internal/command.js.map +1 -1
  430. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
  431. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  432. package/dist/unstable/cli/internal/config.js +42 -0
  433. package/dist/unstable/cli/internal/config.js.map +1 -1
  434. package/dist/unstable/cli/internal/help.d.ts +33 -0
  435. package/dist/unstable/cli/internal/help.d.ts.map +1 -0
  436. package/dist/unstable/cli/internal/help.js +125 -0
  437. package/dist/unstable/cli/internal/help.js.map +1 -0
  438. package/dist/unstable/cli/internal/parser.js +55 -42
  439. package/dist/unstable/cli/internal/parser.js.map +1 -1
  440. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  441. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  442. package/dist/unstable/cluster/ClusterCron.js +1 -1
  443. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  444. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  445. package/dist/unstable/cluster/ClusterWorkflowEngine.js +4 -3
  446. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  447. package/dist/unstable/cluster/Entity.d.ts +7 -6
  448. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  449. package/dist/unstable/cluster/Entity.js.map +1 -1
  450. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  451. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  452. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  453. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  454. package/dist/unstable/cluster/K8sHttpClient.js +4 -4
  455. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  456. package/dist/unstable/cluster/Message.d.ts +10 -10
  457. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  458. package/dist/unstable/cluster/MessageStorage.js +2 -1
  459. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  460. package/dist/unstable/cluster/Reply.d.ts +6 -6
  461. package/dist/unstable/cluster/Runner.d.ts +1 -1
  462. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  463. package/dist/unstable/cluster/Runners.js +4 -3
  464. package/dist/unstable/cluster/Runners.js.map +1 -1
  465. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  466. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  467. package/dist/unstable/cluster/Sharding.js +9 -7
  468. package/dist/unstable/cluster/Sharding.js.map +1 -1
  469. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  470. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  471. package/dist/unstable/cluster/ShardingConfig.js +20 -20
  472. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  473. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  474. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  475. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  476. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  477. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  478. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  479. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  480. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  481. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  482. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  483. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  484. package/dist/unstable/encoding/Sse.d.ts +4 -4
  485. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  486. package/dist/unstable/encoding/Sse.js +1 -1
  487. package/dist/unstable/encoding/Sse.js.map +1 -1
  488. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  489. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  490. package/dist/unstable/eventlog/EventLog.js +2 -1
  491. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  492. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  493. package/dist/unstable/http/Cookies.d.ts +47 -3
  494. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  495. package/dist/unstable/http/Cookies.js +24 -2
  496. package/dist/unstable/http/Cookies.js.map +1 -1
  497. package/dist/unstable/http/Headers.d.ts +16 -0
  498. package/dist/unstable/http/Headers.d.ts.map +1 -1
  499. package/dist/unstable/http/Headers.js +38 -10
  500. package/dist/unstable/http/Headers.js.map +1 -1
  501. package/dist/unstable/http/HttpBody.d.ts +3 -3
  502. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  503. package/dist/unstable/http/HttpBody.js +6 -6
  504. package/dist/unstable/http/HttpBody.js.map +1 -1
  505. package/dist/unstable/http/HttpClient.d.ts +117 -15
  506. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  507. package/dist/unstable/http/HttpClient.js +189 -12
  508. package/dist/unstable/http/HttpClient.js.map +1 -1
  509. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  510. package/dist/unstable/http/HttpClientRequest.d.ts +16 -11
  511. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  512. package/dist/unstable/http/HttpClientRequest.js +31 -20
  513. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  514. package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
  515. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  516. package/dist/unstable/http/HttpClientResponse.js +4 -0
  517. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  518. package/dist/unstable/http/HttpEffect.d.ts +7 -5
  519. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  520. package/dist/unstable/http/HttpEffect.js +46 -54
  521. package/dist/unstable/http/HttpEffect.js.map +1 -1
  522. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  523. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  524. package/dist/unstable/http/HttpMethod.js +3 -3
  525. package/dist/unstable/http/HttpMethod.js.map +1 -1
  526. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  527. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  528. package/dist/unstable/http/HttpMiddleware.js +8 -17
  529. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  530. package/dist/unstable/http/HttpServerError.d.ts +20 -33
  531. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  532. package/dist/unstable/http/HttpServerError.js +37 -44
  533. package/dist/unstable/http/HttpServerError.js.map +1 -1
  534. package/dist/unstable/http/HttpServerRequest.d.ts +12 -1
  535. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  536. package/dist/unstable/http/HttpServerRequest.js +291 -1
  537. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  538. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  539. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  540. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  541. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  542. package/dist/unstable/http/HttpServerResponse.d.ts +50 -3
  543. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  544. package/dist/unstable/http/HttpServerResponse.js +234 -1
  545. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  546. package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
  547. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
  548. package/dist/unstable/http/HttpStaticServer.js +353 -0
  549. package/dist/unstable/http/HttpStaticServer.js.map +1 -0
  550. package/dist/unstable/http/Multipart.d.ts +3 -3
  551. package/dist/unstable/http/UrlParams.d.ts +14 -6
  552. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  553. package/dist/unstable/http/UrlParams.js +1 -1
  554. package/dist/unstable/http/UrlParams.js.map +1 -1
  555. package/dist/unstable/http/index.d.ts +4 -0
  556. package/dist/unstable/http/index.d.ts.map +1 -1
  557. package/dist/unstable/http/index.js +4 -0
  558. package/dist/unstable/http/index.js.map +1 -1
  559. package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
  560. package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
  561. package/dist/unstable/http/internal/preResponseHandler.js +10 -0
  562. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
  563. package/dist/unstable/httpapi/HttpApi.d.ts +4 -4
  564. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  565. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  566. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
  567. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  568. package/dist/unstable/httpapi/HttpApiBuilder.js +28 -18
  569. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  570. package/dist/unstable/httpapi/HttpApiClient.d.ts +66 -6
  571. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  572. package/dist/unstable/httpapi/HttpApiClient.js +40 -3
  573. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  574. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +41 -54
  575. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  576. package/dist/unstable/httpapi/HttpApiEndpoint.js +17 -26
  577. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  578. package/dist/unstable/httpapi/HttpApiError.d.ts +16 -14
  579. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  580. package/dist/unstable/httpapi/HttpApiError.js +44 -29
  581. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  582. package/dist/unstable/httpapi/HttpApiGroup.d.ts +4 -3
  583. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  584. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  585. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
  586. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  587. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  588. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  589. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  590. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  591. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
  592. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  593. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  594. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  595. package/dist/unstable/httpapi/OpenApi.js +32 -21
  596. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  597. package/dist/unstable/observability/Otlp.d.ts +12 -12
  598. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  599. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  600. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  601. package/dist/unstable/observability/OtlpExporter.js +1 -1
  602. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  603. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  604. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  605. package/dist/unstable/observability/OtlpLogger.js +7 -4
  606. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  607. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  608. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  609. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  610. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  611. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  612. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  613. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  614. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  615. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  616. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  617. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  618. package/dist/unstable/persistence/PersistedCache.js +2 -1
  619. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  620. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  621. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  622. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  623. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  624. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  625. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  626. package/dist/unstable/persistence/Persistence.js +2 -2
  627. package/dist/unstable/persistence/Persistence.js.map +1 -1
  628. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  629. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  630. package/dist/unstable/persistence/RateLimiter.js +1 -1
  631. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  632. package/dist/unstable/process/ChildProcess.d.ts +5 -128
  633. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  634. package/dist/unstable/process/ChildProcess.js +1 -65
  635. package/dist/unstable/process/ChildProcess.js.map +1 -1
  636. package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
  637. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  638. package/dist/unstable/process/ChildProcessSpawner.js +21 -1
  639. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  640. package/dist/unstable/reactivity/Atom.d.ts +73 -12
  641. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  642. package/dist/unstable/reactivity/Atom.js +107 -20
  643. package/dist/unstable/reactivity/Atom.js.map +1 -1
  644. package/dist/unstable/reactivity/AtomHttpApi.d.ts +10 -12
  645. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  646. package/dist/unstable/reactivity/AtomHttpApi.js +42 -12
  647. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  648. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  649. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  650. package/dist/unstable/reactivity/AtomRegistry.js +50 -9
  651. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  652. package/dist/unstable/reactivity/AtomRpc.d.ts +9 -9
  653. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  654. package/dist/unstable/reactivity/AtomRpc.js +47 -21
  655. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  656. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  657. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  658. package/dist/unstable/reactivity/Hydration.js +76 -0
  659. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  660. package/dist/unstable/reactivity/index.d.ts +4 -0
  661. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  662. package/dist/unstable/reactivity/index.js +4 -0
  663. package/dist/unstable/reactivity/index.js.map +1 -1
  664. package/dist/unstable/rpc/Rpc.d.ts +5 -5
  665. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  666. package/dist/unstable/rpc/Rpc.js.map +1 -1
  667. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  668. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  669. package/dist/unstable/rpc/RpcClient.js +6 -13
  670. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  671. package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
  672. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  673. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  674. package/dist/unstable/rpc/RpcMiddleware.d.ts +8 -8
  675. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  676. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  677. package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
  678. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  679. package/dist/unstable/rpc/RpcSchema.js +14 -0
  680. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  681. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  682. package/dist/unstable/rpc/RpcSerialization.js +34 -9
  683. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  684. package/dist/unstable/rpc/RpcServer.d.ts +5 -9
  685. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  686. package/dist/unstable/rpc/RpcServer.js +17 -17
  687. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  688. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  689. package/dist/unstable/rpc/Utils.js +3 -2
  690. package/dist/unstable/rpc/Utils.js.map +1 -1
  691. package/dist/unstable/schema/Model.d.ts +22 -1
  692. package/dist/unstable/schema/Model.d.ts.map +1 -1
  693. package/dist/unstable/schema/Model.js +15 -0
  694. package/dist/unstable/schema/Model.js.map +1 -1
  695. package/dist/unstable/schema/VariantSchema.d.ts +5 -5
  696. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  697. package/dist/unstable/schema/VariantSchema.js +6 -6
  698. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  699. package/dist/unstable/socket/Socket.d.ts +4 -4
  700. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  701. package/dist/unstable/socket/Socket.js +6 -5
  702. package/dist/unstable/socket/Socket.js.map +1 -1
  703. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  704. package/dist/unstable/sql/Migrator.d.ts +1 -1
  705. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  706. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  707. package/dist/unstable/sql/SqlError.d.ts +14 -14
  708. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  709. package/dist/unstable/sql/SqlError.js +9 -3
  710. package/dist/unstable/sql/SqlError.js.map +1 -1
  711. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  712. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  713. package/dist/unstable/sql/SqlModel.js +3 -3
  714. package/dist/unstable/sql/SqlModel.js.map +1 -1
  715. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  716. package/dist/unstable/sql/SqlResolver.js +17 -8
  717. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  718. package/dist/unstable/sql/SqlSchema.d.ts +17 -6
  719. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  720. package/dist/unstable/sql/SqlSchema.js +17 -7
  721. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  722. package/dist/unstable/sql/Statement.js +0 -1
  723. package/dist/unstable/sql/Statement.js.map +1 -1
  724. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  725. package/dist/unstable/workers/Worker.js +2 -1
  726. package/dist/unstable/workers/Worker.js.map +1 -1
  727. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  728. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  729. package/dist/unstable/workflow/DurableClock.js +3 -3
  730. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  731. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  732. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  733. package/dist/unstable/workflow/Workflow.d.ts +3 -3
  734. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  735. package/dist/unstable/workflow/Workflow.js +1 -1
  736. package/dist/unstable/workflow/Workflow.js.map +1 -1
  737. package/dist/unstable/workflow/WorkflowEngine.d.ts +12 -1
  738. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  739. package/dist/unstable/workflow/WorkflowEngine.js +137 -1
  740. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  741. package/package.json +2 -2
  742. package/src/Array.ts +192 -342
  743. package/src/Brand.ts +1 -1
  744. package/src/Cache.ts +9 -8
  745. package/src/Cause.ts +2 -2
  746. package/src/Channel.ts +554 -138
  747. package/src/Chunk.ts +81 -268
  748. package/src/Combiner.ts +280 -13
  749. package/src/Config.ts +186 -24
  750. package/src/Data.ts +539 -376
  751. package/src/DateTime.ts +24 -164
  752. package/src/Duration.ts +13 -13
  753. package/src/Effect.ts +1477 -1126
  754. package/src/Encoding.ts +879 -0
  755. package/src/Equal.ts +278 -111
  756. package/src/ErrorReporter.ts +457 -0
  757. package/src/Exit.ts +24 -12
  758. package/src/Fiber.ts +10 -2
  759. package/src/FileSystem.ts +7 -8
  760. package/src/Filter.ts +52 -63
  761. package/src/Formatter.ts +253 -51
  762. package/src/Function.ts +2 -10
  763. package/src/Graph.ts +24 -11
  764. package/src/HashMap.ts +15 -14
  765. package/src/Iterable.ts +104 -50
  766. package/src/JsonSchema.ts +383 -10
  767. package/src/Latch.ts +112 -0
  768. package/src/Layer.ts +123 -132
  769. package/src/LayerMap.ts +9 -9
  770. package/src/LogLevel.ts +37 -0
  771. package/src/Logger.ts +33 -100
  772. package/src/ManagedRuntime.ts +2 -2
  773. package/src/Metric.ts +6 -8
  774. package/src/Newtype.ts +308 -0
  775. package/src/Optic.ts +948 -19
  776. package/src/Option.ts +32 -24
  777. package/src/Pipeable.ts +32 -1
  778. package/src/PlatformError.ts +5 -5
  779. package/src/Pool.ts +13 -11
  780. package/src/PubSub.ts +10 -9
  781. package/src/Pull.ts +1 -1
  782. package/src/Queue.ts +0 -1
  783. package/src/Random.ts +51 -14
  784. package/src/RcMap.ts +5 -5
  785. package/src/RcRef.ts +1 -1
  786. package/src/Record.ts +42 -152
  787. package/src/Reducer.ts +166 -7
  788. package/src/References.ts +10 -5
  789. package/src/Request.ts +3 -2
  790. package/src/RequestResolver.ts +29 -49
  791. package/src/Result.ts +2 -4
  792. package/src/Runtime.ts +102 -6
  793. package/src/Schedule.ts +462 -242
  794. package/src/Scheduler.ts +12 -0
  795. package/src/Schema.ts +796 -194
  796. package/src/SchemaAST.ts +164 -31
  797. package/src/SchemaGetter.ts +15 -17
  798. package/src/SchemaParser.ts +11 -0
  799. package/src/SchemaRepresentation.ts +49 -24
  800. package/src/SchemaTransformation.ts +189 -4
  801. package/src/ScopedCache.ts +3 -3
  802. package/src/Semaphore.ts +356 -0
  803. package/src/ServiceMap.ts +50 -40
  804. package/src/Sink.ts +78 -26
  805. package/src/Stdio.ts +27 -4
  806. package/src/Stream.ts +586 -608
  807. package/src/Struct.ts +26 -0
  808. package/src/SubscriptionRef.ts +3 -2
  809. package/src/SynchronizedRef.ts +3 -2
  810. package/src/Trie.ts +18 -17
  811. package/src/TxChunk.ts +72 -53
  812. package/src/TxDeferred.ts +394 -0
  813. package/src/TxHashMap.ts +332 -285
  814. package/src/TxHashSet.ts +111 -116
  815. package/src/TxPriorityQueue.ts +767 -0
  816. package/src/TxPubSub.ts +789 -0
  817. package/src/TxQueue.ts +241 -251
  818. package/src/TxReentrantLock.ts +753 -0
  819. package/src/TxRef.ts +50 -38
  820. package/src/TxSemaphore.ts +29 -32
  821. package/src/TxSubscriptionRef.ts +639 -0
  822. package/src/Types.ts +73 -19
  823. package/src/Utils.ts +137 -111
  824. package/src/index.ts +728 -24
  825. package/src/internal/core.ts +12 -5
  826. package/src/internal/dateTime.ts +9 -30
  827. package/src/internal/effect.ts +774 -301
  828. package/src/internal/hashMap.ts +8 -7
  829. package/src/internal/random.ts +20 -0
  830. package/src/internal/rcRef.ts +4 -3
  831. package/src/internal/request.ts +2 -2
  832. package/src/internal/schema/annotations.ts +2 -0
  833. package/src/internal/schema/representation.ts +45 -94
  834. package/src/internal/schema/schema.ts +1 -0
  835. package/src/internal/schema/to-codec.ts +7 -17
  836. package/src/internal/trie.ts +15 -9
  837. package/src/testing/TestClock.ts +13 -11
  838. package/src/testing/TestSchema.ts +332 -35
  839. package/src/testing/index.ts +64 -1
  840. package/src/unstable/ai/AiError.ts +105 -48
  841. package/src/unstable/ai/Chat.ts +47 -61
  842. package/src/unstable/ai/LanguageModel.ts +153 -68
  843. package/src/unstable/ai/McpSchema.ts +73 -13
  844. package/src/unstable/ai/McpServer.ts +271 -61
  845. package/src/unstable/ai/Model.ts +40 -9
  846. package/src/unstable/ai/Prompt.ts +37 -37
  847. package/src/unstable/ai/Response.ts +25 -25
  848. package/src/unstable/ai/Tool.ts +20 -14
  849. package/src/unstable/ai/Toolkit.ts +5 -14
  850. package/src/unstable/ai/index.ts +1 -1
  851. package/src/unstable/ai/internal/codec-transformer.ts +0 -7
  852. package/src/unstable/cli/CliError.ts +47 -59
  853. package/src/unstable/cli/CliOutput.ts +75 -6
  854. package/src/unstable/cli/Command.ts +796 -187
  855. package/src/unstable/cli/GlobalFlag.ts +243 -0
  856. package/src/unstable/cli/HelpDoc.ts +80 -2
  857. package/src/unstable/cli/Primitive.ts +1 -1
  858. package/src/unstable/cli/Prompt.ts +31 -9
  859. package/src/unstable/cli/index.ts +5 -0
  860. package/src/unstable/cli/internal/command.ts +109 -63
  861. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
  862. package/src/unstable/cli/internal/config.ts +49 -0
  863. package/src/unstable/cli/internal/help.ts +171 -0
  864. package/src/unstable/cli/internal/parser.ts +66 -61
  865. package/src/unstable/cluster/ClusterCron.ts +2 -2
  866. package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -4
  867. package/src/unstable/cluster/Entity.ts +11 -10
  868. package/src/unstable/cluster/EntityResource.ts +4 -4
  869. package/src/unstable/cluster/Envelope.ts +1 -1
  870. package/src/unstable/cluster/K8sHttpClient.ts +5 -5
  871. package/src/unstable/cluster/MessageStorage.ts +3 -5
  872. package/src/unstable/cluster/Runners.ts +6 -5
  873. package/src/unstable/cluster/Sharding.ts +12 -10
  874. package/src/unstable/cluster/ShardingConfig.ts +30 -31
  875. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  876. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  877. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  878. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  879. package/src/unstable/encoding/Sse.ts +3 -5
  880. package/src/unstable/eventlog/EventLog.ts +2 -1
  881. package/src/unstable/http/Cookies.ts +87 -3
  882. package/src/unstable/http/Headers.ts +62 -13
  883. package/src/unstable/http/HttpBody.ts +6 -6
  884. package/src/unstable/http/HttpClient.ts +374 -33
  885. package/src/unstable/http/HttpClientRequest.ts +38 -30
  886. package/src/unstable/http/HttpClientResponse.ts +7 -2
  887. package/src/unstable/http/HttpEffect.ts +54 -68
  888. package/src/unstable/http/HttpMethod.ts +16 -4
  889. package/src/unstable/http/HttpMiddleware.ts +9 -24
  890. package/src/unstable/http/HttpServerError.ts +42 -45
  891. package/src/unstable/http/HttpServerRequest.ts +389 -2
  892. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  893. package/src/unstable/http/HttpServerResponse.ts +337 -4
  894. package/src/unstable/http/HttpStaticServer.ts +456 -0
  895. package/src/unstable/http/Multipart.ts +2 -2
  896. package/src/unstable/http/UrlParams.ts +20 -5
  897. package/src/unstable/http/index.ts +5 -0
  898. package/src/unstable/http/internal/preResponseHandler.ts +15 -0
  899. package/src/unstable/httpapi/HttpApi.ts +6 -6
  900. package/src/unstable/httpapi/HttpApiBuilder.ts +81 -28
  901. package/src/unstable/httpapi/HttpApiClient.ts +100 -11
  902. package/src/unstable/httpapi/HttpApiEndpoint.ts +71 -87
  903. package/src/unstable/httpapi/HttpApiError.ts +51 -28
  904. package/src/unstable/httpapi/HttpApiGroup.ts +7 -6
  905. package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
  906. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  907. package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
  908. package/src/unstable/httpapi/OpenApi.ts +41 -23
  909. package/src/unstable/observability/Otlp.ts +12 -12
  910. package/src/unstable/observability/OtlpExporter.ts +3 -3
  911. package/src/unstable/observability/OtlpLogger.ts +13 -9
  912. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  913. package/src/unstable/observability/OtlpTracer.ts +4 -4
  914. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  915. package/src/unstable/persistence/Persistable.ts +2 -2
  916. package/src/unstable/persistence/PersistedCache.ts +20 -9
  917. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  918. package/src/unstable/persistence/Persistence.ts +3 -3
  919. package/src/unstable/persistence/RateLimiter.ts +4 -4
  920. package/src/unstable/process/ChildProcess.ts +6 -208
  921. package/src/unstable/process/ChildProcessSpawner.ts +75 -14
  922. package/src/unstable/reactivity/Atom.ts +211 -50
  923. package/src/unstable/reactivity/AtomHttpApi.ts +66 -31
  924. package/src/unstable/reactivity/AtomRegistry.ts +61 -9
  925. package/src/unstable/reactivity/AtomRpc.ts +51 -20
  926. package/src/unstable/reactivity/Hydration.ts +112 -0
  927. package/src/unstable/reactivity/index.ts +5 -0
  928. package/src/unstable/rpc/Rpc.ts +7 -9
  929. package/src/unstable/rpc/RpcClient.ts +12 -54
  930. package/src/unstable/rpc/RpcGroup.ts +4 -4
  931. package/src/unstable/rpc/RpcMiddleware.ts +15 -9
  932. package/src/unstable/rpc/RpcSchema.ts +17 -0
  933. package/src/unstable/rpc/RpcSerialization.ts +44 -9
  934. package/src/unstable/rpc/RpcServer.ts +28 -32
  935. package/src/unstable/rpc/Utils.ts +3 -2
  936. package/src/unstable/schema/Model.ts +31 -0
  937. package/src/unstable/schema/VariantSchema.ts +9 -9
  938. package/src/unstable/socket/Socket.ts +16 -17
  939. package/src/unstable/sql/SqlClient.ts +1 -1
  940. package/src/unstable/sql/SqlError.ts +11 -9
  941. package/src/unstable/sql/SqlModel.ts +5 -5
  942. package/src/unstable/sql/SqlResolver.ts +17 -7
  943. package/src/unstable/sql/SqlSchema.ts +42 -26
  944. package/src/unstable/sql/Statement.ts +0 -1
  945. package/src/unstable/workers/Worker.ts +2 -1
  946. package/src/unstable/workflow/DurableClock.ts +8 -8
  947. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  948. package/src/unstable/workflow/Workflow.ts +6 -2
  949. package/src/unstable/workflow/WorkflowEngine.ts +185 -2
  950. package/dist/PartitionedSemaphore.d.ts +0 -52
  951. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  952. package/dist/PartitionedSemaphore.js.map +0 -1
  953. package/dist/encoding/Base64.d.ts +0 -67
  954. package/dist/encoding/Base64.d.ts.map +0 -1
  955. package/dist/encoding/Base64.js +0 -146
  956. package/dist/encoding/Base64.js.map +0 -1
  957. package/dist/encoding/Base64Url.d.ts +0 -60
  958. package/dist/encoding/Base64Url.d.ts.map +0 -1
  959. package/dist/encoding/Base64Url.js +0 -89
  960. package/dist/encoding/Base64Url.js.map +0 -1
  961. package/dist/encoding/EncodingError.d.ts +0 -31
  962. package/dist/encoding/EncodingError.d.ts.map +0 -1
  963. package/dist/encoding/EncodingError.js +0 -22
  964. package/dist/encoding/EncodingError.js.map +0 -1
  965. package/dist/encoding/Hex.d.ts +0 -61
  966. package/dist/encoding/Hex.d.ts.map +0 -1
  967. package/dist/encoding/Hex.js +0 -115
  968. package/dist/encoding/Hex.js.map +0 -1
  969. package/dist/encoding/index.d.ts +0 -26
  970. package/dist/encoding/index.d.ts.map +0 -1
  971. package/dist/encoding/index.js +0 -27
  972. package/dist/encoding/index.js.map +0 -1
  973. package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
  974. package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
  975. package/dist/unstable/cli/internal/builtInFlags.js +0 -44
  976. package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
  977. package/src/PartitionedSemaphore.ts +0 -182
  978. package/src/encoding/Base64.ts +0 -366
  979. package/src/encoding/Base64Url.ts +0 -104
  980. package/src/encoding/EncodingError.ts +0 -35
  981. package/src/encoding/Hex.ts +0 -390
  982. package/src/encoding/index.ts +0 -31
  983. package/src/unstable/cli/internal/builtInFlags.ts +0 -78
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ absurd,
9
9
  /**
10
10
  * @since 2.0.0
11
11
  */
12
- coerceUnsafe,
12
+ cast,
13
13
  /**
14
14
  * @since 2.0.0
15
15
  */
@@ -429,6 +429,65 @@ export * as Chunk from "./Chunk.js";
429
429
  */
430
430
  export * as Clock from "./Clock.js";
431
431
  /**
432
+ * A module for combining two values of the same type into one.
433
+ *
434
+ * A `Combiner<A>` wraps a single binary function `(self: A, that: A) => A`.
435
+ * It describes *how* two values merge but carries no initial/empty value
436
+ * (for that, see {@link Reducer} which extends `Combiner` with an
437
+ * `initialValue`).
438
+ *
439
+ * ## Mental model
440
+ *
441
+ * - **Combiner** – an object with a `combine(self, that)` method that returns
442
+ * a value of the same type.
443
+ * - **Argument order** – `self` is the "left" / accumulator side, `that` is
444
+ * the "right" / incoming side.
445
+ * - **No identity element** – unlike a monoid, a `Combiner` does not require
446
+ * a neutral element. Use {@link Reducer} when you need one.
447
+ * - **Purity** – all combiners produced by this module are pure; they never
448
+ * mutate their arguments.
449
+ * - **Composability** – combiners can be lifted into `Option`, `Struct`,
450
+ * `Tuple`, and other container types via helpers in those modules.
451
+ *
452
+ * ## Common tasks
453
+ *
454
+ * - Create a combiner from any binary function → {@link make}
455
+ * - Swap argument order → {@link flip}
456
+ * - Pick the smaller / larger of two values → {@link min} / {@link max}
457
+ * - Always keep the first or last value → {@link first} / {@link last}
458
+ * - Ignore both values and return a fixed result → {@link constant}
459
+ * - Insert a separator between combined values → {@link intercalate}
460
+ *
461
+ * ## Gotchas
462
+ *
463
+ * - `min` and `max` require an `Order<A>`, not a raw comparator. Import from
464
+ * e.g. `Number.Order` or `String.Order`.
465
+ * - `intercalate` is curried: call it with the separator first, then pass the
466
+ * base combiner.
467
+ * - A `Reducer` (which adds `initialValue`) is also a valid `Combiner` — you
468
+ * can pass a `Reducer` anywhere a `Combiner` is expected.
469
+ *
470
+ * ## Quickstart
471
+ *
472
+ * **Example** (combining strings with a separator)
473
+ *
474
+ * ```ts
475
+ * import { Combiner, String } from "effect"
476
+ *
477
+ * const csv = Combiner.intercalate(",")(String.ReducerConcat)
478
+ *
479
+ * console.log(csv.combine("a", "b"))
480
+ * // Output: "a,b"
481
+ *
482
+ * console.log(csv.combine(csv.combine("a", "b"), "c"))
483
+ * // Output: "a,b,c"
484
+ * ```
485
+ *
486
+ * ## See also
487
+ *
488
+ * - {@link make} – the primary constructor
489
+ * - {@link Combiner} – the core interface
490
+ *
432
491
  * @since 4.0.0
433
492
  */
434
493
  export * as Combiner from "./Combiner.js";
@@ -664,15 +723,75 @@ export * as Console from "./Console.js";
664
723
  */
665
724
  export * as Cron from "./Cron.js";
666
725
  /**
667
- * This module provides utilities for creating data types with structural equality
668
- * semantics. Unlike regular JavaScript objects, `Data` types support value-based
669
- * equality comparison using the `Equal` module.
726
+ * Immutable data constructors with discriminated-union support.
727
+ *
728
+ * The `Data` module provides base classes and factory functions for creating
729
+ * immutable value types with a `_tag` field for discriminated unions.
730
+ * It is the recommended way to define domain models, error types, and
731
+ * lightweight ADTs in Effect applications.
732
+ *
733
+ * ## Mental model
734
+ *
735
+ * - **`Class`** — base class for plain immutable data. Extend it with a type
736
+ * parameter to declare the fields. Instances are `Pipeable`.
737
+ * - **`TaggedClass`** — like `Class` but automatically adds a `readonly _tag`
738
+ * string literal field. Useful for single-variant types or ad-hoc tagged
739
+ * values.
740
+ * - **`TaggedEnum`** (type) + **`taggedEnum`** (value) — define a multi-variant
741
+ * discriminated union from a simple record. `taggedEnum()` returns per-variant
742
+ * constructors plus `$is` / `$match` helpers.
743
+ * - **`Error`** — like `Class` but extends `Cause.YieldableError`, so instances
744
+ * can be yielded inside `Effect.gen` to fail the effect.
745
+ * - **`TaggedError`** — like `TaggedClass` but extends `Cause.YieldableError`.
746
+ * Works with `Effect.catchTag` for tag-based error recovery.
747
+ *
748
+ * ## Common tasks
749
+ *
750
+ * - Define a simple value class → {@link Class}
751
+ * - Define a value class with a `_tag` → {@link TaggedClass}
752
+ * - Define a discriminated union with constructors → {@link TaggedEnum} + {@link taggedEnum}
753
+ * - Define a yieldable error → {@link Error}
754
+ * - Define a yieldable tagged error → {@link TaggedError}
755
+ * - Type-guard a tagged value → `$is` from {@link taggedEnum}
756
+ * - Pattern-match on a tagged union → `$match` from {@link taggedEnum}
757
+ *
758
+ * ## Gotchas
670
759
  *
671
- * The main benefits of using `Data` types are:
672
- * - **Structural equality**: Two `Data` objects are equal if their contents are equal
673
- * - **Immutability**: `Data` types are designed to be immutable
674
- * - **Type safety**: Constructors ensure type safety and consistency
675
- * - **Effect integration**: Error types work seamlessly with Effect's error handling
760
+ * - Variant records passed to `TaggedEnum` must **not** contain a `_tag` key;
761
+ * the `_tag` is added automatically from the record key.
762
+ * - When a class has no fields, the constructor argument is optional (`void`).
763
+ * - `taggedEnum()` creates **plain objects**, not class instances. If you need
764
+ * class-based variants, use `TaggedClass` or `TaggedError` instead.
765
+ * - `TaggedEnum.WithGenerics` supports up to 4 generic type parameters.
766
+ *
767
+ * ## Quickstart
768
+ *
769
+ * **Example** (tagged union with pattern matching)
770
+ *
771
+ * ```ts
772
+ * import { Data } from "effect"
773
+ *
774
+ * type Shape = Data.TaggedEnum<{
775
+ * Circle: { readonly radius: number }
776
+ * Rect: { readonly width: number; readonly height: number }
777
+ * }>
778
+ * const { Circle, Rect, $match } = Data.taggedEnum<Shape>()
779
+ *
780
+ * const area = $match({
781
+ * Circle: ({ radius }) => Math.PI * radius ** 2,
782
+ * Rect: ({ width, height }) => width * height
783
+ * })
784
+ *
785
+ * console.log(area(Circle({ radius: 5 })))
786
+ * // 78.53981633974483
787
+ * console.log(area(Rect({ width: 3, height: 4 })))
788
+ * // 12
789
+ * ```
790
+ *
791
+ * @see {@link Class} — plain immutable data class
792
+ * @see {@link TaggedEnum} — discriminated union type
793
+ * @see {@link taggedEnum} — discriminated union constructors
794
+ * @see {@link TaggedError} — yieldable tagged error class
676
795
  *
677
796
  * @since 2.0.0
678
797
  */
@@ -812,12 +931,14 @@ export * as Duration from "./Duration.js";
812
931
  *
813
932
  * @example
814
933
  * ```ts
815
- * import { Effect } from "effect"
934
+ * import { Data, Effect } from "effect"
935
+ *
936
+ * class DiscountRateError extends Data.TaggedError("DiscountRateError")<{}> {}
816
937
  *
817
938
  * // Effect that may fail
818
939
  * const divide = (a: number, b: number) =>
819
940
  * b === 0
820
- * ? Effect.fail(new Error("Division by zero"))
941
+ * ? Effect.fail(new DiscountRateError())
821
942
  * : Effect.succeed(a / b)
822
943
  *
823
944
  * // Error handling
@@ -840,9 +961,79 @@ export * as Duration from "./Duration.js";
840
961
  */
841
962
  export * as Effect from "./Effect.js";
842
963
  /**
843
- * This module provides functionality for defining and working with equality between values.
844
- * It includes the `Equal` interface for types that can determine equality with other values
845
- * of the same type, and utilities for comparing values.
964
+ * Encoding & decoding for Base64 (RFC4648), Base64Url, and Hex.
965
+ *
966
+ * @since 4.0.0
967
+ */
968
+ export * as Encoding from "./Encoding.js";
969
+ /**
970
+ * Structural and custom equality for Effect values.
971
+ *
972
+ * The `Equal` module provides deep structural comparison for primitives, plain
973
+ * objects, arrays, Maps, Sets, Dates, and RegExps. Types that implement the
974
+ * {@link Equal} interface can supply their own comparison logic while staying
975
+ * compatible with the rest of the ecosystem (HashMap, HashSet, etc.).
976
+ *
977
+ * ## Mental model
978
+ *
979
+ * - **Structural equality** — two values are equal when their contents match,
980
+ * not when they share the same reference.
981
+ * - **Hash-first shortcut** — before comparing fields, the module checks
982
+ * {@link Hash.hash}. If the hashes differ the objects are unequal without
983
+ * further traversal.
984
+ * - **Equal interface** — any object that implements both {@link symbol} (the
985
+ * equality method) and `Hash.symbol` (the hash method) can define custom
986
+ * comparison logic.
987
+ * - **Caching** — comparison results for object pairs are cached in a WeakMap.
988
+ * This makes repeated checks fast but **requires immutability** after the
989
+ * first comparison.
990
+ * - **By-reference opt-out** — {@link byReference} and {@link byReferenceUnsafe}
991
+ * let you switch individual objects back to reference equality when you need
992
+ * mutable identity semantics.
993
+ *
994
+ * ## Common tasks
995
+ *
996
+ * - Compare two values → {@link equals}
997
+ * - Check if a value implements `Equal` → {@link isEqual}
998
+ * - Use `equals` where an `Equivalence` is expected → {@link asEquivalence}
999
+ * - Implement custom equality on a class → implement {@link Equal} (see
1000
+ * example on the interface)
1001
+ * - Opt an object out of structural equality → {@link byReference} /
1002
+ * {@link byReferenceUnsafe}
1003
+ *
1004
+ * ## Gotchas
1005
+ *
1006
+ * - Objects **must be treated as immutable** after their first equality check.
1007
+ * Results are cached; mutating an object afterwards yields stale results.
1008
+ * - `NaN` is considered equal to `NaN` (unlike `===`).
1009
+ * - Functions without an `Equal` implementation are compared by reference.
1010
+ * - Map and Set comparisons are order-independent but O(n²) in size.
1011
+ * - If only one of two objects implements `Equal`, they are never equal.
1012
+ *
1013
+ * ## Quickstart
1014
+ *
1015
+ * **Example** (basic structural comparison)
1016
+ *
1017
+ * ```ts
1018
+ * import { Equal } from "effect"
1019
+ *
1020
+ * // Primitives
1021
+ * console.log(Equal.equals(1, 1)) // true
1022
+ * console.log(Equal.equals("a", "b")) // false
1023
+ *
1024
+ * // Objects and arrays
1025
+ * console.log(Equal.equals({ x: 1 }, { x: 1 })) // true
1026
+ * console.log(Equal.equals([1, 2], [1, 2])) // true
1027
+ *
1028
+ * // Curried form
1029
+ * const is42 = Equal.equals(42)
1030
+ * console.log(is42(42)) // true
1031
+ * console.log(is42(0)) // false
1032
+ * ```
1033
+ *
1034
+ * @see {@link equals} — the main comparison function
1035
+ * @see {@link Equal} — the interface for custom equality
1036
+ * @see {@link Hash} — the companion hashing module
846
1037
  *
847
1038
  * @since 2.0.0
848
1039
  */
@@ -901,6 +1092,57 @@ export * as Equal from "./Equal.js";
901
1092
  * @since 2.0.0
902
1093
  */
903
1094
  export * as Equivalence from "./Equivalence.js";
1095
+ /**
1096
+ * Pluggable error reporting for Effect programs.
1097
+ *
1098
+ * Reporting is triggered by `Effect.withErrorReporting`,
1099
+ * `ErrorReporter.report`, or built-in reporting boundaries in the HTTP and
1100
+ * RPC server modules.
1101
+ *
1102
+ * Each reporter receives a structured callback with the failing `Cause`, a
1103
+ * pretty-printed `Error`, severity, and any extra attributes attached to the
1104
+ * original error — making it straightforward to forward failures to Sentry,
1105
+ * Datadog, or a custom logging backend.
1106
+ *
1107
+ * Use the annotation symbols (`ignore`, `severity`, `attributes`) on your
1108
+ * error classes to control reporting behavior per-error.
1109
+ *
1110
+ * @example
1111
+ * ```ts
1112
+ * import { Data, Effect, ErrorReporter } from "effect"
1113
+ *
1114
+ * // A reporter that logs to the console
1115
+ * const consoleReporter = ErrorReporter.make(({ error, severity }) => {
1116
+ * console.error(`[${severity}]`, error.message)
1117
+ * })
1118
+ *
1119
+ * // An error that should be ignored by reporters
1120
+ * class NotFoundError extends Data.TaggedError("NotFoundError")<{}> {
1121
+ * readonly [ErrorReporter.ignore] = true
1122
+ * }
1123
+ *
1124
+ * // An error with custom severity and attributes
1125
+ * class RateLimitError extends Data.TaggedError("RateLimitError")<{
1126
+ * readonly retryAfter: number
1127
+ * }> {
1128
+ * readonly [ErrorReporter.severity] = "Warn" as const
1129
+ * readonly [ErrorReporter.attributes] = {
1130
+ * retryAfter: this.retryAfter
1131
+ * }
1132
+ * }
1133
+ *
1134
+ * // Opt in to error reporting with Effect.withErrorReporting
1135
+ * const program = Effect.gen(function*() {
1136
+ * return yield* new RateLimitError({ retryAfter: 60 })
1137
+ * }).pipe(
1138
+ * Effect.withErrorReporting,
1139
+ * Effect.provide(ErrorReporter.layer([consoleReporter]))
1140
+ * )
1141
+ * ```
1142
+ *
1143
+ * @since 4.0.0
1144
+ */
1145
+ export * as ErrorReporter from "./ErrorReporter.js";
904
1146
  /**
905
1147
  * @since 3.16.0
906
1148
  */
@@ -1094,6 +1336,57 @@ export * as FileSystem from "./FileSystem.js";
1094
1336
  */
1095
1337
  export * as Filter from "./Filter.js";
1096
1338
  /**
1339
+ * Utilities for converting arbitrary JavaScript values into human-readable
1340
+ * strings, with support for circular references, redaction, and common JS
1341
+ * types that `JSON.stringify` handles poorly.
1342
+ *
1343
+ * Mental model:
1344
+ * - A `Formatter<Value, Format>` is a callable `(value: Value) => Format`.
1345
+ * - {@link format} is the general-purpose pretty-printer: it handles
1346
+ * primitives, arrays, objects, `BigInt`, `Symbol`, `Date`, `RegExp`,
1347
+ * `Set`, `Map`, class instances, and circular references.
1348
+ * - {@link formatJson} is a safe `JSON.stringify` wrapper that silently
1349
+ * drops circular references and applies redaction.
1350
+ * - Both functions accept a `space` option for indentation control.
1351
+ *
1352
+ * Common tasks:
1353
+ * - Pretty-print any value for debugging / logging -> {@link format}
1354
+ * - Serialize to JSON safely (no circular throws) -> {@link formatJson}
1355
+ * - Format a single object property key -> {@link formatPropertyKey}
1356
+ * - Format a property path like `["a"]["b"]` -> {@link formatPath}
1357
+ * - Format a `Date` to ISO string safely -> {@link formatDate}
1358
+ *
1359
+ * Gotchas:
1360
+ * - {@link format} output is **not** valid JSON; use {@link formatJson} when
1361
+ * you need parseable JSON.
1362
+ * - {@link format} calls `toString()` on objects by default; pass
1363
+ * `ignoreToString: true` to disable.
1364
+ * - {@link formatJson} silently omits circular references (the key is
1365
+ * dropped from the output).
1366
+ * - Values implementing the `Redactable` protocol are automatically
1367
+ * redacted by both {@link format} and {@link formatJson}.
1368
+ *
1369
+ * **Example** (Pretty-print a value)
1370
+ *
1371
+ * ```ts
1372
+ * import { Formatter } from "effect"
1373
+ *
1374
+ * const obj = { name: "Alice", scores: [100, 97] }
1375
+ * console.log(Formatter.format(obj))
1376
+ * // {"name":"Alice","scores":[100,97]}
1377
+ *
1378
+ * console.log(Formatter.format(obj, { space: 2 }))
1379
+ * // {
1380
+ * // "name": "Alice",
1381
+ * // "scores": [
1382
+ * // 100,
1383
+ * // 97
1384
+ * // ]
1385
+ * // }
1386
+ * ```
1387
+ *
1388
+ * See also: {@link Formatter}, {@link format}, {@link formatJson}
1389
+ *
1097
1390
  * @since 4.0.0
1098
1391
  */
1099
1392
  export * as Formatter from "./Formatter.js";
@@ -1346,9 +1639,96 @@ export * as JsonPatch from "./JsonPatch.js";
1346
1639
  */
1347
1640
  export * as JsonPointer from "./JsonPointer.js";
1348
1641
  /**
1642
+ * Convert JSON Schema documents between dialects (Draft-07, Draft-2020-12,
1643
+ * OpenAPI 3.0, OpenAPI 3.1). All dialects are normalized to an internal
1644
+ * `Document<"draft-2020-12">` representation before optional conversion to
1645
+ * an output dialect.
1646
+ *
1647
+ * ## Mental model
1648
+ *
1649
+ * - **JsonSchema** — a plain object with string keys; represents any single
1650
+ * JSON Schema node.
1651
+ * - **Dialect** — one of `"draft-07"`, `"draft-2020-12"`, `"openapi-3.1"`,
1652
+ * or `"openapi-3.0"`.
1653
+ * - **Document** — a structured container holding a root `schema`, its
1654
+ * companion `definitions`, and the target `dialect`. Definitions are
1655
+ * stored separately from the root schema so they can be relocated when
1656
+ * converting between dialects.
1657
+ * - **MultiDocument** — same as `Document` but carries multiple root
1658
+ * schemas (at least one). Useful when generating several schemas that
1659
+ * share a single definitions pool.
1660
+ * - **Definitions** — a `Record<string, JsonSchema>` keyed by definition
1661
+ * name. The ref pointer prefix depends on the dialect.
1662
+ * - **`from*` functions** — parse a raw JSON Schema object into the
1663
+ * canonical `Document<"draft-2020-12">`.
1664
+ * - **`to*` functions** — convert from the canonical representation to a
1665
+ * specific output dialect.
1666
+ *
1667
+ * ## Common tasks
1668
+ *
1669
+ * - Parse a Draft-07 schema → {@link fromSchemaDraft07}
1670
+ * - Parse a Draft-2020-12 schema → {@link fromSchemaDraft2020_12}
1671
+ * - Parse an OpenAPI 3.1 schema → {@link fromSchemaOpenApi3_1}
1672
+ * - Parse an OpenAPI 3.0 schema → {@link fromSchemaOpenApi3_0}
1673
+ * - Convert to Draft-07 output → {@link toDocumentDraft07}
1674
+ * - Convert to OpenAPI 3.1 output → {@link toMultiDocumentOpenApi3_1}
1675
+ * - Resolve a `$ref` against definitions → {@link resolve$ref}
1676
+ * - Inline the root `$ref` of a document → {@link resolveTopLevel$ref}
1677
+ *
1678
+ * ## Gotchas
1679
+ *
1680
+ * - All `from*` functions normalize to `Document<"draft-2020-12">`
1681
+ * regardless of the input dialect.
1682
+ * - Unsupported or unrecognized JSON Schema keywords are silently dropped
1683
+ * during conversion.
1684
+ * - Draft-07 tuple syntax (`items` as array + `additionalItems`) is
1685
+ * converted to 2020-12 form (`prefixItems` + `items`), and vice-versa.
1686
+ * - OpenAPI 3.0 `nullable: true` is expanded into `type` arrays or
1687
+ * `anyOf` unions. The `nullable` keyword is removed.
1688
+ * - OpenAPI 3.0 singular `example` is converted to `examples` (array).
1689
+ * - {@link resolve$ref} only looks up the last segment of the ref path in
1690
+ * the definitions map; it does not follow arbitrary JSON Pointer paths.
1691
+ *
1692
+ * ## Quickstart
1693
+ *
1694
+ * **Example** (Parse a Draft-07 schema and convert to Draft-07 output)
1695
+ *
1696
+ * ```ts
1697
+ * import { JsonSchema } from "effect"
1698
+ *
1699
+ * const raw: JsonSchema.JsonSchema = {
1700
+ * type: "object",
1701
+ * properties: {
1702
+ * name: { type: "string" }
1703
+ * },
1704
+ * required: ["name"]
1705
+ * }
1706
+ *
1707
+ * // Parse into canonical form
1708
+ * const doc = JsonSchema.fromSchemaDraft07(raw)
1709
+ *
1710
+ * // Convert back to Draft-07
1711
+ * const draft07 = JsonSchema.toDocumentDraft07(doc)
1712
+ *
1713
+ * console.log(draft07.dialect) // "draft-07"
1714
+ * console.log(draft07.schema) // { type: "object", properties: { name: { type: "string" } }, required: ["name"] }
1715
+ * ```
1716
+ *
1717
+ * ## See also
1718
+ *
1719
+ * - {@link Document}
1720
+ * - {@link MultiDocument}
1721
+ * - {@link fromSchemaDraft07}
1722
+ * - {@link toDocumentDraft07}
1723
+ * - {@link resolve$ref}
1724
+ *
1349
1725
  * @since 4.0.0
1350
1726
  */
1351
1727
  export * as JsonSchema from "./JsonSchema.js";
1728
+ /**
1729
+ * @since 3.8.0
1730
+ */
1731
+ export * as Latch from "./Latch.js";
1352
1732
  /**
1353
1733
  * A `Layer<ROut, E, RIn>` describes how to build one or more services in your
1354
1734
  * application. Services can be injected into effects via
@@ -1871,6 +2251,72 @@ export * as MutableList from "./MutableList.js";
1871
2251
  * @category data-structures
1872
2252
  */
1873
2253
  export * as MutableRef from "./MutableRef.js";
2254
+ /**
2255
+ * Lightweight wrapper types that prevent accidental mixing of structurally
2256
+ * identical values (e.g. `UserId` vs `OrderId`, both `string` at runtime).
2257
+ *
2258
+ * **Mental model**
2259
+ *
2260
+ * - **Newtype** — a compile-time wrapper around a **carrier** type (the
2261
+ * underlying primitive or object). At runtime the value is unchanged; the
2262
+ * tag exists only in the type system.
2263
+ * - **Key** — a unique string literal that distinguishes one newtype from
2264
+ * another (e.g. `"Label"`, `"UserId"`).
2265
+ * - **Carrier** — the underlying type the newtype wraps (e.g. `string`,
2266
+ * `number`).
2267
+ * - **Iso** — a lossless two-way conversion between a newtype and its carrier,
2268
+ * created with {@link makeIso}. Use `iso.set(carrier)` to wrap and
2269
+ * `iso.get(newtype)` to unwrap.
2270
+ *
2271
+ * **Common tasks**
2272
+ *
2273
+ * - Define a newtype → declare an `interface` extending
2274
+ * `Newtype.Newtype<Key, Carrier>`
2275
+ * - Wrap / unwrap values → {@link makeIso} (returns an `Optic.Iso`)
2276
+ * - Unwrap only → {@link value}
2277
+ * - Lift an `Equivalence` → {@link makeEquivalence}
2278
+ * - Lift an `Order` → {@link makeOrder}
2279
+ * - Lift a `Combiner` → {@link makeCombiner}
2280
+ * - Lift a `Reducer` → {@link makeReducer}
2281
+ *
2282
+ * **Gotchas**
2283
+ *
2284
+ * - Newtypes are **purely compile-time**. There is zero runtime overhead;
2285
+ * `value` and `makeIso` use identity casts.
2286
+ * - Two newtypes sharing the same key string will be assignable to each other.
2287
+ * Choose unique key strings.
2288
+ * - A newtype value is **not** assignable to its carrier type without
2289
+ * explicitly unwrapping via {@link value} or an iso.
2290
+ *
2291
+ * **Quickstart**
2292
+ *
2293
+ * **Example** (defining and using a newtype)
2294
+ *
2295
+ * ```ts
2296
+ * import { Newtype } from "effect"
2297
+ *
2298
+ * // 1. Define a newtype
2299
+ * interface Label extends Newtype.Newtype<"Label", string> {}
2300
+ *
2301
+ * // 2. Create an iso for wrapping/unwrapping
2302
+ * const labelIso = Newtype.makeIso<Label>()
2303
+ *
2304
+ * // 3. Wrap a raw string
2305
+ * const myLabel: Label = labelIso.set("hello")
2306
+ *
2307
+ * // 4. Unwrap back to string
2308
+ * const raw: string = labelIso.get(myLabel) // "hello"
2309
+ * ```
2310
+ *
2311
+ * **See also**
2312
+ *
2313
+ * - {@link Newtype} (the tagged interface)
2314
+ * - {@link makeIso} (wrap and unwrap)
2315
+ * - {@link value} (unwrap only)
2316
+ *
2317
+ * @since 4.0.0
2318
+ */
2319
+ export * as Newtype from "./Newtype.js";
1874
2320
  /**
1875
2321
  * @since 2.0.0
1876
2322
  *
@@ -2040,11 +2486,100 @@ export * as NullOr from "./NullOr.js";
2040
2486
  */
2041
2487
  export * as Number from "./Number.js";
2042
2488
  /**
2043
- * Design: "pretty good" persistency.
2044
- * Real updates copy only the path; unrelated branches keep referential identity.
2045
- * No-op updates may still allocate a new root/parents — callers must not rely on identity for no-ops.
2489
+ * Composable, immutable accessors for reading and updating nested data
2490
+ * structures without mutation.
2491
+ *
2492
+ * **Mental model**
2493
+ *
2494
+ * - **Optic** — a first-class reference to a piece inside a larger structure.
2495
+ * Compose optics to reach deeply nested values.
2496
+ * - **Iso** — lossless two-way conversion (`get`/`set`) between `S` and `A`.
2497
+ * Extends both {@link Lens} and {@link Prism}.
2498
+ * - **Lens** — focuses on exactly one part of `S`. `get` always succeeds;
2499
+ * `replace` needs the original `S` to produce the updated whole.
2500
+ * - **Prism** — focuses on a part that may not be present (e.g. a union
2501
+ * variant). `getResult` can fail; `set` builds a new `S` from `A` alone.
2502
+ * - **Optional** — the most general optic: both reading and writing can fail.
2503
+ * - **Traversal** — focuses on zero or more elements of an array-like
2504
+ * structure. Technically `Optional<S, ReadonlyArray<A>>`.
2505
+ * - **Hierarchy** (strongest → weakest):
2506
+ * `Iso > Lens | Prism > Optional`. Composing a weaker optic with any other
2507
+ * produces the weaker kind.
2508
+ *
2509
+ * **Common tasks**
2510
+ *
2511
+ * - Start a chain → {@link id} (identity iso)
2512
+ * - Drill into a struct key → `.key("name")` / `.optionalKey("name")`
2513
+ * - Drill into a key that may not exist → `.at("name")`
2514
+ * - Narrow a tagged union → `.tag("MyVariant")`
2515
+ * - Narrow by type guard → `.refine(guard)`
2516
+ * - Add validation → `.check(Schema.isGreaterThan(0))`
2517
+ * - Filter out `undefined` → `.notUndefined()`
2518
+ * - Pick/omit struct keys → `.pick(["a","b"])` / `.omit(["c"])`
2519
+ * - Traverse array elements → `.forEach(el => el.key("field"))`
2520
+ * - Build an iso → {@link makeIso}
2521
+ * - Build a lens → {@link makeLens}
2522
+ * - Build a prism → {@link makePrism}, {@link fromChecks}
2523
+ * - Build an optional → {@link makeOptional}
2524
+ * - Focus into `Option.Some` → {@link some}
2525
+ * - Focus into `Result.Success`/`Failure` → {@link success}, {@link failure}
2526
+ * - Convert record ↔ entries → {@link entries}
2527
+ * - Extract all traversal elements → {@link getAll}
2528
+ *
2529
+ * **Gotchas**
2530
+ *
2531
+ * - Updates are structurally persistent: only nodes on the path are cloned.
2532
+ * Unrelated branches keep referential identity. However, **no-op updates
2533
+ * may still allocate** a new root — do not rely on reference identity to
2534
+ * detect no-ops.
2535
+ * - `replace` silently returns the original `S` when the optic cannot focus
2536
+ * (e.g. wrong tag). Use `replaceResult` for explicit failure.
2537
+ * - `modify` also returns the original `S` on focus failure — it never throws.
2538
+ * - `.key()` and `.optionalKey()` do not work on union types (compile error).
2539
+ * - Only plain objects (`Object.prototype` or `null` prototype) and arrays can
2540
+ * be cloned. Class instances cause a runtime error on `replace`/`modify`.
2541
+ *
2542
+ * **Quickstart**
2543
+ *
2544
+ * **Example** (reading and updating nested state)
2545
+ *
2546
+ * ```ts
2547
+ * import { Optic } from "effect"
2548
+ *
2549
+ * type State = { user: { name: string; age: number } }
2550
+ *
2551
+ * const _age = Optic.id<State>().key("user").key("age")
2552
+ *
2553
+ * const s1: State = { user: { name: "Alice", age: 30 } }
2554
+ *
2555
+ * // Read
2556
+ * console.log(_age.get(s1))
2557
+ * // Output: 30
2558
+ *
2559
+ * // Update immutably
2560
+ * const s2 = _age.replace(31, s1)
2561
+ * console.log(s2)
2562
+ * // Output: { user: { name: "Alice", age: 31 } }
2563
+ *
2564
+ * // Modify with a function
2565
+ * const s3 = _age.modify((n) => n + 1)(s1)
2566
+ * console.log(s3)
2567
+ * // Output: { user: { name: "Alice", age: 31 } }
2568
+ *
2569
+ * // Referential identity is preserved for unrelated branches
2570
+ * console.log(s2.user !== s1.user)
2571
+ * // Output: true (on the path)
2572
+ * ```
2573
+ *
2574
+ * **See also**
2575
+ *
2576
+ * - {@link id} — entry point for optic chains
2577
+ * - {@link Lens} / {@link Prism} / {@link Optional} — core optic types
2578
+ * - {@link Traversal} / {@link getAll} — multi-focus optics
2579
+ * - {@link some} / {@link success} / {@link failure} — built-in prisms
2046
2580
  *
2047
2581
  * @since 4.0.0
2582
+ * @module
2048
2583
  */
2049
2584
  export * as Optic from "./Optic.js";
2050
2585
  /**
@@ -2080,7 +2615,7 @@ export * as Optic from "./Optic.js";
2080
2615
  * **Gotchas**
2081
2616
  *
2082
2617
  * - `Option.some(null)` is a valid `Some`; use {@link fromNullishOr} to treat `null`/`undefined` as `None`
2083
- * - {@link filterMap} is an alias for {@link flatMap}
2618
+ * - {@link filterMap} uses a `Filter` callback that returns `Result`
2084
2619
  * - {@link getOrThrow} throws a generic `Error`; prefer {@link getOrThrowWith} for custom errors
2085
2620
  * - `None` is a singleton; compare with {@link isNone}, not `===`
2086
2621
  * - When yielded in `Effect.gen`, a `None` becomes a `NoSuchElementError` defect
@@ -2202,11 +2737,6 @@ export * as Order from "./Order.js";
2202
2737
  * @category utilities
2203
2738
  */
2204
2739
  export * as Ordering from "./Ordering.js";
2205
- /**
2206
- * @since 3.19.4
2207
- * @experimental
2208
- */
2209
- export * as PartitionedSemaphore from "./PartitionedSemaphore.js";
2210
2740
  /**
2211
2741
  * @since 4.0.0
2212
2742
  */
@@ -2368,6 +2898,71 @@ export * as Redactable from "./Redactable.js";
2368
2898
  */
2369
2899
  export * as Redacted from "./Redacted.js";
2370
2900
  /**
2901
+ * A module for reducing collections of values into a single result.
2902
+ *
2903
+ * A `Reducer<A>` extends {@link Combiner.Combiner} by adding an
2904
+ * `initialValue` (identity element) and a `combineAll` method that folds an
2905
+ * entire collection. Think `Array.prototype.reduce`, but packaged as a
2906
+ * reusable, composable value.
2907
+ *
2908
+ * ## Mental model
2909
+ *
2910
+ * - **Reducer** – a {@link Combiner.Combiner} plus an `initialValue` and a
2911
+ * `combineAll` method.
2912
+ * - **initialValue** – the neutral/identity element. Combining any value with
2913
+ * `initialValue` should return the original value unchanged (e.g. `0` for
2914
+ * addition, `""` for string concatenation).
2915
+ * - **combineAll** – folds an `Iterable<A>` starting from `initialValue`.
2916
+ * When omitted from {@link make}, a default left-to-right fold is used.
2917
+ * - **Purity** – all reducers produced by this module are pure; they never
2918
+ * mutate their arguments.
2919
+ * - **Composability** – reducers can be lifted into `Option`, `Struct`,
2920
+ * `Tuple`, `Record`, and other container types via helpers in those modules.
2921
+ * - **Subtype of Combiner** – every `Reducer` is also a valid
2922
+ * `Combiner`, so you can pass a `Reducer` anywhere a `Combiner` is
2923
+ * expected.
2924
+ *
2925
+ * ## Common tasks
2926
+ *
2927
+ * - Create a reducer from a combine function and initial value → {@link make}
2928
+ * - Swap argument order → {@link flip}
2929
+ * - Combine two values without an initial value → use {@link Combiner.Combiner}
2930
+ * instead
2931
+ *
2932
+ * ## Gotchas
2933
+ *
2934
+ * - `combineAll` on an empty iterable returns `initialValue`, not an error.
2935
+ * - The default `combineAll` folds left-to-right. If your `combine` is not
2936
+ * associative, order matters. Pass a custom `combineAll` to {@link make} if
2937
+ * you need different traversal or short-circuiting.
2938
+ * - A `Reducer` is also a valid `Combiner` — but a `Combiner` is *not* a
2939
+ * `Reducer` (it lacks `initialValue`).
2940
+ *
2941
+ * ## Quickstart
2942
+ *
2943
+ * **Example** (summing a list of numbers)
2944
+ *
2945
+ * ```ts
2946
+ * import { Reducer } from "effect"
2947
+ *
2948
+ * const Sum = Reducer.make<number>((a, b) => a + b, 0)
2949
+ *
2950
+ * console.log(Sum.combine(3, 4))
2951
+ * // Output: 7
2952
+ *
2953
+ * console.log(Sum.combineAll([1, 2, 3, 4]))
2954
+ * // Output: 10
2955
+ *
2956
+ * console.log(Sum.combineAll([]))
2957
+ * // Output: 0
2958
+ * ```
2959
+ *
2960
+ * ## See also
2961
+ *
2962
+ * - {@link make} – the primary constructor
2963
+ * - {@link Reducer} – the core interface
2964
+ * - {@link Combiner.Combiner} – the parent interface (no `initialValue`)
2965
+ *
2371
2966
  * @since 4.0.0
2372
2967
  */
2373
2968
  export * as Reducer from "./Reducer.js";
@@ -3032,6 +3627,10 @@ export * as ScopedCache from "./ScopedCache.js";
3032
3627
  * @since 2.0.0
3033
3628
  */
3034
3629
  export * as ScopedRef from "./ScopedRef.js";
3630
+ /**
3631
+ * @since 2.0.0
3632
+ */
3633
+ export * as Semaphore from "./Semaphore.js";
3035
3634
  /**
3036
3635
  * This module provides a data structure called `ServiceMap` that can be used
3037
3636
  * for dependency injection in effectful programs. It is essentially a table
@@ -3266,6 +3865,13 @@ export * as Tuple from "./Tuple.js";
3266
3865
  * @since 4.0.0
3267
3866
  */
3268
3867
  export * as TxChunk from "./TxChunk.js";
3868
+ /**
3869
+ * A transactional deferred value — a write-once cell that can be read within transactions.
3870
+ * Readers retry until a value is set; once set, the value is immutable.
3871
+ *
3872
+ * @since 4.0.0
3873
+ */
3874
+ export * as TxDeferred from "./TxDeferred.js";
3269
3875
  /**
3270
3876
  * @since 2.0.0
3271
3877
  */
@@ -3274,6 +3880,23 @@ export * as TxHashMap from "./TxHashMap.js";
3274
3880
  * @since 2.0.0
3275
3881
  */
3276
3882
  export * as TxHashSet from "./TxHashSet.js";
3883
+ /**
3884
+ * A transactional priority queue. Elements are dequeued in order determined by the
3885
+ * provided `Order` instance. All operations participate in the STM transaction system.
3886
+ *
3887
+ * @since 4.0.0
3888
+ */
3889
+ export * as TxPriorityQueue from "./TxPriorityQueue.js";
3890
+ /**
3891
+ * TxPubSub is a transactional publish/subscribe hub that provides Software Transactional Memory
3892
+ * (STM) semantics for message broadcasting. Publishers broadcast messages to all current
3893
+ * subscribers, with each subscriber receiving its own copy of every published message.
3894
+ *
3895
+ * Supports multiple queue strategies: bounded, unbounded, dropping, and sliding.
3896
+ *
3897
+ * @since 4.0.0
3898
+ */
3899
+ export * as TxPubSub from "./TxPubSub.js";
3277
3900
  /**
3278
3901
  * TxQueue is a transactional queue data structure that provides Software Transactional Memory (STM)
3279
3902
  * semantics for queue operations. It uses TxRef for transactional state management and supports
@@ -3286,6 +3909,15 @@ export * as TxHashSet from "./TxHashSet.js";
3286
3909
  * @since 4.0.0
3287
3910
  */
3288
3911
  export * as TxQueue from "./TxQueue.js";
3912
+ /**
3913
+ * TxReentrantLock is a transactional read/write lock with reentrant semantics using Software
3914
+ * Transactional Memory (STM). Multiple readers can hold the lock concurrently, OR a single
3915
+ * writer can hold exclusive access. A fiber holding a write lock may acquire additional
3916
+ * read or write locks (reentrancy).
3917
+ *
3918
+ * @since 4.0.0
3919
+ */
3920
+ export * as TxReentrantLock from "./TxReentrantLock.js";
3289
3921
  /**
3290
3922
  * TxRef is a transactional value, it can be read and modified within the body of a transaction.
3291
3923
  *
@@ -3301,6 +3933,13 @@ export * as TxRef from "./TxRef.js";
3301
3933
  * @since 4.0.0
3302
3934
  */
3303
3935
  export * as TxSemaphore from "./TxSemaphore.js";
3936
+ /**
3937
+ * TxSubscriptionRef is a TxRef that allows subscribing to all committed changes. Subscribers
3938
+ * receive the current value followed by every subsequent update via a transactional queue.
3939
+ *
3940
+ * @since 4.0.0
3941
+ */
3942
+ export * as TxSubscriptionRef from "./TxSubscriptionRef.js";
3304
3943
  /**
3305
3944
  * Type-level utility types for TypeScript.
3306
3945
  *
@@ -3391,6 +4030,62 @@ export * as UndefinedOr from "./UndefinedOr.js";
3391
4030
  */
3392
4031
  export * as Unify from "./Unify.js";
3393
4032
  /**
4033
+ * Internal utilities for the Effect ecosystem's generator-based syntax and
4034
+ * higher-kinded type machinery.
4035
+ *
4036
+ * ## Mental model
4037
+ *
4038
+ * - **SingleShotGen** — an `IterableIterator` wrapper that yields its value
4039
+ * exactly once. Used internally by `[Symbol.iterator]()` on Effect, Option,
4040
+ * Result, and other yieldable types so they work inside generator functions.
4041
+ * - **Gen** — a type-level signature for generator-based monadic composition
4042
+ * (`gen` functions). Parametric over any `TypeLambda` so each module
4043
+ * (Effect, Option, Result, ...) can expose its own `gen` with correct types.
4044
+ * - **Variance** — a type-level marker that encodes the variance (covariant,
4045
+ * contravariant, invariant) of a `TypeLambda`'s type parameters.
4046
+ * Used by {@link Gen} for type inference.
4047
+ *
4048
+ * ## Common tasks
4049
+ *
4050
+ * - Make a type yieldable in generators -> implement `[Symbol.iterator]()` returning a {@link SingleShotGen}
4051
+ * - Define a generator-based API for a new TypeLambda -> type it as {@link Gen}`<MyTypeLambda>`
4052
+ * - Encode variance for a higher-kinded type -> use {@link Variance}
4053
+ *
4054
+ * ## Gotchas
4055
+ *
4056
+ * - {@link SingleShotGen} yields its value only on the first `.next()` call.
4057
+ * Calling `.next()` again returns `{ done: true }`. Iterating the same
4058
+ * instance twice will skip the value on the second pass; call
4059
+ * `[Symbol.iterator]()` to get a fresh iterator.
4060
+ * - {@link Gen} and {@link Variance} are pure type-level constructs — they
4061
+ * have no runtime representation.
4062
+ *
4063
+ * ## Quickstart
4064
+ *
4065
+ * **Example** (Using SingleShotGen to make a type yieldable)
4066
+ *
4067
+ * ```ts
4068
+ * import { Utils } from "effect"
4069
+ *
4070
+ * class MyWrapper<A> {
4071
+ * constructor(readonly value: A) {}
4072
+ * [Symbol.iterator]() {
4073
+ * return new Utils.SingleShotGen<MyWrapper<A>, A>(this)
4074
+ * }
4075
+ * }
4076
+ *
4077
+ * const w = new MyWrapper(42)
4078
+ * const iter = w[Symbol.iterator]()
4079
+ * console.log(iter.next(undefined as any))
4080
+ * // { value: MyWrapper { value: 42 }, done: false }
4081
+ * console.log(iter.next(42))
4082
+ * // { value: 42, done: true }
4083
+ * ```
4084
+ *
4085
+ * @see {@link SingleShotGen}
4086
+ * @see {@link Gen}
4087
+ * @see {@link Variance}
4088
+ *
3394
4089
  * @since 2.0.0
3395
4090
  */
3396
4091
  export * as Utils from "./Utils.js";