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/src/Data.ts CHANGED
@@ -1,137 +1,207 @@
1
1
  /**
2
- * This module provides utilities for creating data types with structural equality
3
- * semantics. Unlike regular JavaScript objects, `Data` types support value-based
4
- * equality comparison using the `Equal` module.
2
+ * Immutable data constructors with discriminated-union support.
5
3
  *
6
- * The main benefits of using `Data` types are:
7
- * - **Structural equality**: Two `Data` objects are equal if their contents are equal
8
- * - **Immutability**: `Data` types are designed to be immutable
9
- * - **Type safety**: Constructors ensure type safety and consistency
10
- * - **Effect integration**: Error types work seamlessly with Effect's error handling
4
+ * The `Data` module provides base classes and factory functions for creating
5
+ * immutable value types with a `_tag` field for discriminated unions.
6
+ * It is the recommended way to define domain models, error types, and
7
+ * lightweight ADTs in Effect applications.
8
+ *
9
+ * ## Mental model
10
+ *
11
+ * - **`Class`** — base class for plain immutable data. Extend it with a type
12
+ * parameter to declare the fields. Instances are `Pipeable`.
13
+ * - **`TaggedClass`** — like `Class` but automatically adds a `readonly _tag`
14
+ * string literal field. Useful for single-variant types or ad-hoc tagged
15
+ * values.
16
+ * - **`TaggedEnum`** (type) + **`taggedEnum`** (value) — define a multi-variant
17
+ * discriminated union from a simple record. `taggedEnum()` returns per-variant
18
+ * constructors plus `$is` / `$match` helpers.
19
+ * - **`Error`** — like `Class` but extends `Cause.YieldableError`, so instances
20
+ * can be yielded inside `Effect.gen` to fail the effect.
21
+ * - **`TaggedError`** — like `TaggedClass` but extends `Cause.YieldableError`.
22
+ * Works with `Effect.catchTag` for tag-based error recovery.
23
+ *
24
+ * ## Common tasks
25
+ *
26
+ * - Define a simple value class → {@link Class}
27
+ * - Define a value class with a `_tag` → {@link TaggedClass}
28
+ * - Define a discriminated union with constructors → {@link TaggedEnum} + {@link taggedEnum}
29
+ * - Define a yieldable error → {@link Error}
30
+ * - Define a yieldable tagged error → {@link TaggedError}
31
+ * - Type-guard a tagged value → `$is` from {@link taggedEnum}
32
+ * - Pattern-match on a tagged union → `$match` from {@link taggedEnum}
33
+ *
34
+ * ## Gotchas
35
+ *
36
+ * - Variant records passed to `TaggedEnum` must **not** contain a `_tag` key;
37
+ * the `_tag` is added automatically from the record key.
38
+ * - When a class has no fields, the constructor argument is optional (`void`).
39
+ * - `taggedEnum()` creates **plain objects**, not class instances. If you need
40
+ * class-based variants, use `TaggedClass` or `TaggedError` instead.
41
+ * - `TaggedEnum.WithGenerics` supports up to 4 generic type parameters.
42
+ *
43
+ * ## Quickstart
44
+ *
45
+ * **Example** (tagged union with pattern matching)
46
+ *
47
+ * ```ts
48
+ * import { Data } from "effect"
49
+ *
50
+ * type Shape = Data.TaggedEnum<{
51
+ * Circle: { readonly radius: number }
52
+ * Rect: { readonly width: number; readonly height: number }
53
+ * }>
54
+ * const { Circle, Rect, $match } = Data.taggedEnum<Shape>()
55
+ *
56
+ * const area = $match({
57
+ * Circle: ({ radius }) => Math.PI * radius ** 2,
58
+ * Rect: ({ width, height }) => width * height
59
+ * })
60
+ *
61
+ * console.log(area(Circle({ radius: 5 })))
62
+ * // 78.53981633974483
63
+ * console.log(area(Rect({ width: 3, height: 4 })))
64
+ * // 12
65
+ * ```
66
+ *
67
+ * @see {@link Class} — plain immutable data class
68
+ * @see {@link TaggedEnum} — discriminated union type
69
+ * @see {@link taggedEnum} — discriminated union constructors
70
+ * @see {@link TaggedError} — yieldable tagged error class
11
71
  *
12
72
  * @since 2.0.0
13
73
  */
14
74
  import type * as Cause from "./Cause.ts"
15
75
  import * as core from "./internal/core.ts"
76
+ import * as Pipeable from "./Pipeable.ts"
16
77
  import * as Predicate from "./Predicate.ts"
17
78
  import type * as Types from "./Types.ts"
18
79
  import type { Unify } from "./Unify.ts"
19
80
 
20
81
  /**
21
- * Provides a constructor for a Case Class.
82
+ * Base class for immutable data types.
83
+ *
84
+ * Extend `Class` with a type parameter to declare fields. The constructor
85
+ * accepts those fields as a single object argument. When there are no fields
86
+ * the argument is optional.
87
+ *
88
+ * - Use when you need a lightweight immutable value type with `.pipe()` support.
89
+ * - Instances are `Readonly` and `Pipeable`.
90
+ * - If you also need a `_tag` discriminator, use {@link TaggedClass} instead.
91
+ * - If you need a yieldable error, use {@link Error} or {@link TaggedError}.
92
+ *
93
+ * **Example** (defining a value class)
22
94
  *
23
- * @example
24
95
  * ```ts
25
96
  * import { Data, Equal } from "effect"
26
- * import * as assert from "node:assert"
27
97
  *
28
98
  * class Person extends Data.Class<{ readonly name: string }> {}
29
99
  *
30
- * // Creating instances of Person
31
100
  * const mike1 = new Person({ name: "Mike" })
32
101
  * const mike2 = new Person({ name: "Mike" })
33
- * const john = new Person({ name: "John" })
34
102
  *
35
- * // Checking equality
36
- * assert.deepStrictEqual(Equal.equals(mike1, mike2), true)
37
- * assert.deepStrictEqual(Equal.equals(mike1, john), false)
103
+ * console.log(Equal.equals(mike1, mike2))
104
+ * // true
38
105
  * ```
39
106
  *
40
- * @since 2.0.0
107
+ * @see {@link TaggedClass} — adds a `_tag` field
108
+ * @see {@link Error} — yieldable error variant
109
+ *
41
110
  * @category constructors
111
+ * @since 2.0.0
42
112
  */
43
113
  export const Class: new<A extends Record<string, any> = {}>(
44
- args: Types.Equals<A, {}> extends true ? void
45
- : { readonly [P in keyof A]: A[P] }
46
- ) => Readonly<A> = function(this: any, props: any) {
47
- if (props) {
48
- Object.assign(this, props)
114
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A]: A[P] }>
115
+ ) => Readonly<A> & Pipeable.Pipeable = class extends Pipeable.Class {
116
+ constructor(props: any) {
117
+ super()
118
+ if (props) {
119
+ Object.assign(this, props)
120
+ }
49
121
  }
50
122
  } as any
51
123
 
52
124
  /**
53
- * Provides a Tagged constructor for a Case Class.
125
+ * Base class for immutable data types with a `_tag` discriminator.
54
126
  *
55
- * @example
56
- * ```ts
57
- * import { Data, Equal } from "effect"
58
- * import * as assert from "node:assert"
127
+ * Like {@link Class}, but the resulting instances also carry a
128
+ * `readonly _tag: Tag` property. The `_tag` is excluded from the constructor
129
+ * argument.
59
130
  *
60
- * class Person extends Data.TaggedClass("Person")<{ readonly name: string }> {}
131
+ * - Use when you need a single-variant tagged type or an ad-hoc discriminator.
132
+ * - For multi-variant unions, prefer {@link TaggedEnum} + {@link taggedEnum}.
133
+ * - For yieldable errors, use {@link TaggedError}.
61
134
  *
62
- * // Creating instances of Person
63
- * const mike1 = new Person({ name: "Mike" })
64
- * const mike2 = new Person({ name: "Mike" })
65
- * const john = new Person({ name: "John" })
135
+ * **Example** (defining a tagged class)
136
+ *
137
+ * ```ts
138
+ * import { Data } from "effect"
66
139
  *
67
- * // Checking equality
68
- * assert.deepStrictEqual(Equal.equals(mike1, mike2), true)
69
- * assert.deepStrictEqual(Equal.equals(mike1, john), false)
140
+ * class Person extends Data.TaggedClass("Person")<{
141
+ * readonly name: string
142
+ * }> {}
70
143
  *
71
- * assert.deepStrictEqual(mike1._tag, "Person")
144
+ * const mike = new Person({ name: "Mike" })
145
+ * console.log(mike._tag)
146
+ * // "Person"
72
147
  * ```
73
148
  *
74
- * @since 2.0.0
149
+ * @see {@link Class} — without a `_tag`
150
+ * @see {@link TaggedError} — tagged error variant
151
+ * @see {@link TaggedEnum} — multi-variant unions
152
+ *
75
153
  * @category constructors
154
+ * @since 2.0.0
76
155
  */
77
156
  export const TaggedClass = <Tag extends string>(
78
157
  tag: Tag
79
158
  ): new<A extends Record<string, any> = {}>(
80
- args: Types.Equals<A, {}> extends true ? void
81
- : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }
82
- ) => Readonly<A> & { readonly _tag: Tag } =>
83
- function(this: any, props: any) {
84
- this._tag = tag
85
- if (props) {
86
- Object.assign(this, props)
87
- }
159
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>
160
+ ) => Readonly<A> & { readonly _tag: Tag } & Pipeable.Pipeable =>
161
+ class extends Class {
162
+ readonly _tag = tag
88
163
  } as any
89
164
 
90
165
  /**
91
- * Create a tagged enum data type, which is a union of `Data` structs.
166
+ * Transforms a record of variant definitions into a discriminated union type.
167
+ *
168
+ * Each key in the record becomes a variant with `readonly _tag` set to that
169
+ * key. Use with {@link taggedEnum} to get runtime constructors, type guards,
170
+ * and pattern matching.
92
171
  *
93
- * A `TaggedEnum` transforms a record of variant definitions into a discriminated
94
- * union type where each variant has a `_tag` field for type discrimination.
172
+ * - Use when you have two or more variants that share a common `_tag`
173
+ * discriminator.
174
+ * - Variant records must **not** include a `_tag` property — it is added
175
+ * automatically.
176
+ * - For generic tagged enums, see {@link TaggedEnum.WithGenerics}.
177
+ *
178
+ * **Example** (defining a tagged enum)
95
179
  *
96
- * @example
97
180
  * ```ts
98
181
  * import { Data } from "effect"
99
182
  *
100
- * // Define a tagged enum type
101
183
  * type HttpError = Data.TaggedEnum<{
102
184
  * BadRequest: { readonly status: 400; readonly message: string }
103
- * NotFound: { readonly status: 404; readonly message: string }
104
- * InternalError: { readonly status: 500; readonly details: string }
185
+ * NotFound: { readonly status: 404 }
105
186
  * }>
106
187
  *
107
- * // This is equivalent to the union type:
108
- * type HttpErrorExpanded =
109
- * | {
110
- * readonly _tag: "BadRequest"
111
- * readonly status: 400
112
- * readonly message: string
113
- * }
114
- * | {
115
- * readonly _tag: "NotFound"
116
- * readonly status: 404
117
- * readonly message: string
118
- * }
119
- * | {
120
- * readonly _tag: "InternalError"
121
- * readonly status: 500
122
- * readonly details: string
123
- * }
124
- *
125
- * // Usage with constructors
126
- * const { BadRequest, InternalError, NotFound } = Data.taggedEnum<HttpError>()
127
- *
128
- * const error: HttpError = BadRequest({ status: 400, message: "Invalid request" })
129
- * console.log(error._tag) // "BadRequest"
130
- * console.log(error.status) // 400
188
+ * // Equivalent to:
189
+ * // | { readonly _tag: "BadRequest"; readonly status: 400; readonly message: string }
190
+ * // | { readonly _tag: "NotFound"; readonly status: 404 }
191
+ *
192
+ * const { BadRequest, NotFound } = Data.taggedEnum<HttpError>()
193
+ *
194
+ * const err = BadRequest({ status: 400, message: "missing id" })
195
+ * console.log(err._tag)
196
+ * // "BadRequest"
131
197
  * ```
132
198
  *
133
- * @since 2.0.0
199
+ * @see {@link taggedEnum} — runtime constructors for a `TaggedEnum`
200
+ * @see {@link TaggedEnum.WithGenerics} — generic tagged enums
201
+ * @see {@link TaggedEnum.Constructor} — the constructor object type
202
+ *
134
203
  * @category models
204
+ * @since 2.0.0
135
205
  */
136
206
  export type TaggedEnum<
137
207
  A extends Record<string, Record<string, any>> & UntaggedChildren<A>
@@ -151,52 +221,53 @@ type UntaggedChildren<A> = true extends ChildrenAreTagged<A>
151
221
  : unknown
152
222
 
153
223
  /**
154
- * A namespace providing utilities for TaggedEnum types.
155
- *
156
- * This namespace contains types and utilities for working with tagged enums,
157
- * which are discriminated unions with structural equality semantics.
158
- *
159
- * @example
160
- * ```ts
161
- * import { Data } from "effect"
162
- *
163
- * // Basic tagged enum usage
164
- * const { Failure, Success } = Data.taggedEnum<
165
- * | { readonly _tag: "Success"; readonly value: number }
166
- * | { readonly _tag: "Failure"; readonly error: string }
167
- * >()
224
+ * Namespace for `TaggedEnum` utility types.
168
225
  *
169
- * const result = Success({ value: 42 })
170
- * console.log(result._tag) // "Success"
171
- * console.log(result.value) // 42
172
- * ```
226
+ * Provides helper types for:
227
+ * - Generic tagged enums ({@link TaggedEnum.WithGenerics}, {@link TaggedEnum.Kind})
228
+ * - Extracting constructor arguments ({@link TaggedEnum.Args}) and variant
229
+ * values ({@link TaggedEnum.Value})
230
+ * - Full constructor objects ({@link TaggedEnum.Constructor})
173
231
  *
174
- * @since 2.0.0
175
232
  * @category types
233
+ * @since 2.0.0
176
234
  */
177
235
  export declare namespace TaggedEnum {
178
236
  /**
179
- * A type-level helper for tagged enums that support generic type parameters.
180
- * This interface is used to define the structure of tagged enum definitions
181
- * that can accept generic type parameters.
237
+ * Defines a tagged enum shape that accepts generic type parameters.
238
+ *
239
+ * Extend this interface and set `taggedEnum` to your union type, using
240
+ * `this["A"]`, `this["B"]`, etc. as placeholders for the generics. The
241
+ * `Count` parameter declares how many generics are used (up to 4).
242
+ *
243
+ * - Use when variant payloads need to be parameterized (e.g., `Result<E, A>`).
244
+ * - Pass the interface (not the type alias) to {@link taggedEnum} to get
245
+ * generic-aware constructors.
246
+ *
247
+ * **Example** (generic tagged enum)
182
248
  *
183
- * @example
184
249
  * ```ts
185
- * import type { Data } from "effect"
250
+ * import { Data } from "effect"
186
251
  *
187
- * // Define a tagged enum with generic parameters
188
- * interface MyTaggedEnum<A, B> extends Data.TaggedEnum.WithGenerics<2> {
189
- * readonly taggedEnum:
190
- * | { readonly _tag: "Success"; readonly value: A }
191
- * | { readonly _tag: "Failure"; readonly error: B }
252
+ * type MyResult<E, A> = Data.TaggedEnum<{
253
+ * Failure: { readonly error: E }
254
+ * Success: { readonly value: A }
255
+ * }>
256
+ *
257
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
258
+ * readonly taggedEnum: MyResult<this["A"], this["B"]>
192
259
  * }
193
260
  *
194
- * // The number of generics is tracked in the type
195
- * type NumGenerics = MyTaggedEnum<string, Error>["numberOfGenerics"] // 2
261
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
262
+ *
263
+ * const ok = Success({ value: 42 })
264
+ * // ok: { readonly _tag: "Success"; readonly value: number }
196
265
  * ```
197
266
  *
267
+ * @see {@link Kind} — apply concrete types to a `WithGenerics` definition
268
+ * @see {@link taggedEnum} — runtime constructors
269
+ *
198
270
  * @since 2.0.0
199
- * @category models
200
271
  */
201
272
  export interface WithGenerics<Count extends number> {
202
273
  readonly taggedEnum: { readonly _tag: string }
@@ -209,45 +280,33 @@ export declare namespace TaggedEnum {
209
280
  }
210
281
 
211
282
  /**
212
- * Utility type for applying generic type parameters to a tagged enum definition.
283
+ * Applies concrete type arguments to a `WithGenerics` definition, producing
284
+ * the resulting tagged union type.
285
+ *
286
+ * - Use to refer to a specific instantiation of a generic tagged enum in
287
+ * type signatures.
213
288
  *
214
- * This type takes a `WithGenerics` definition and applies the provided type
215
- * parameters to create a concrete tagged enum type.
289
+ * **Example** (applying generics)
216
290
  *
217
- * @example
218
291
  * ```ts
219
292
  * import type { Data } from "effect"
220
293
  *
221
- * // Define a generic Option type
222
294
  * type Option<A> = Data.TaggedEnum<{
223
295
  * None: {}
224
296
  * Some: { readonly value: A }
225
297
  * }>
226
- *
227
- * interface OptionDefinition extends Data.TaggedEnum.WithGenerics<1> {
298
+ * interface OptionDef extends Data.TaggedEnum.WithGenerics<1> {
228
299
  * readonly taggedEnum: Option<this["A"]>
229
300
  * }
230
301
  *
231
- * // Apply specific type to get concrete type
232
- * type StringOption = Data.TaggedEnum.Kind<OptionDefinition, string>
233
- * // Result: { readonly _tag: "None" } | { readonly _tag: "Some"; readonly value: string }
234
- *
235
- * type NumberOption = Data.TaggedEnum.Kind<OptionDefinition, number>
236
- * // Result: { readonly _tag: "None" } | { readonly _tag: "Some"; readonly value: number }
237
- *
238
- * // Usage in type-safe functions
239
- * const processOption = (opt: StringOption): string => {
240
- * switch (opt._tag) {
241
- * case "None":
242
- * return "No value"
243
- * case "Some":
244
- * return `Value: ${opt.value}`
245
- * }
246
- * }
302
+ * // Resolve to the concrete union for `string`
303
+ * type StringOption = Data.TaggedEnum.Kind<OptionDef, string>
304
+ * // { _tag: "None" } | { _tag: "Some"; value: string }
247
305
  * ```
248
306
  *
307
+ * @see {@link WithGenerics} — define the generic shape
308
+ *
249
309
  * @since 2.0.0
250
- * @category models
251
310
  */
252
311
  export type Kind<
253
312
  Z extends WithGenerics<number>,
@@ -263,30 +322,30 @@ export declare namespace TaggedEnum {
263
322
  })["taggedEnum"]
264
323
 
265
324
  /**
266
- * Extracts the argument types for a tagged enum constructor.
325
+ * Extracts the constructor argument type for a specific variant of a tagged
326
+ * union.
267
327
  *
268
- * This utility type extracts the required arguments for constructing
269
- * a specific variant of a tagged enum, excluding the `_tag` field.
328
+ * Returns `void` if the variant has no fields beyond `_tag`.
329
+ *
330
+ * **Example** (extracting variant args)
270
331
  *
271
- * @example
272
332
  * ```ts
273
333
  * import type { Data } from "effect"
274
334
  *
275
335
  * type Result =
276
- * | { readonly _tag: "Success"; readonly value: number }
277
- * | { readonly _tag: "Failure"; readonly error: string }
336
+ * | { readonly _tag: "Ok"; readonly value: number }
337
+ * | { readonly _tag: "Err"; readonly error: string }
278
338
  *
279
- * // Extract arguments for Success variant
280
- * type SuccessArgs = Data.TaggedEnum.Args<Result, "Success">
281
- * // Result: { readonly value: number }
339
+ * type OkArgs = Data.TaggedEnum.Args<Result, "Ok">
340
+ * // { readonly value: number }
282
341
  *
283
- * // Extract arguments for Failure variant
284
- * type FailureArgs = Data.TaggedEnum.Args<Result, "Failure">
285
- * // Result: { readonly error: string }
342
+ * type ErrArgs = Data.TaggedEnum.Args<Result, "Err">
343
+ * // { readonly error: string }
286
344
  * ```
287
345
  *
346
+ * @see {@link Value} — extracts the full variant type (including `_tag`)
347
+ *
288
348
  * @since 2.0.0
289
- * @category types
290
349
  */
291
350
  export type Args<
292
351
  A extends { readonly _tag: string },
@@ -299,30 +358,24 @@ export declare namespace TaggedEnum {
299
358
  : never
300
359
 
301
360
  /**
302
- * Extracts the complete value type for a tagged enum variant.
361
+ * Extracts the full variant type (including `_tag`) for a specific tag.
303
362
  *
304
- * This utility type extracts the full type (including the `_tag` field)
305
- * for a specific variant of a tagged enum.
363
+ * **Example** (extracting a variant type)
306
364
  *
307
- * @example
308
365
  * ```ts
309
366
  * import type { Data } from "effect"
310
367
  *
311
368
  * type Result =
312
- * | { readonly _tag: "Success"; readonly value: number }
313
- * | { readonly _tag: "Failure"; readonly error: string }
369
+ * | { readonly _tag: "Ok"; readonly value: number }
370
+ * | { readonly _tag: "Err"; readonly error: string }
314
371
  *
315
- * // Extract complete Success type
316
- * type SuccessValue = Data.TaggedEnum.Value<Result, "Success">
317
- * // Result: { readonly _tag: "Success"; readonly value: number }
318
- *
319
- * // Extract complete Failure type
320
- * type FailureValue = Data.TaggedEnum.Value<Result, "Failure">
321
- * // Result: { readonly _tag: "Failure"; readonly error: string }
372
+ * type OkVariant = Data.TaggedEnum.Value<Result, "Ok">
373
+ * // { readonly _tag: "Ok"; readonly value: number }
322
374
  * ```
323
375
  *
376
+ * @see {@link Args} — extracts fields without `_tag`
377
+ *
324
378
  * @since 2.0.0
325
- * @category types
326
379
  */
327
380
  export type Value<
328
381
  A extends { readonly _tag: string },
@@ -330,37 +383,40 @@ export declare namespace TaggedEnum {
330
383
  > = Extract<A, { readonly _tag: K }>
331
384
 
332
385
  /**
333
- * Provides a complete constructor interface for tagged enums.
386
+ * The full constructor-object type returned by {@link taggedEnum}.
334
387
  *
335
- * This type creates a constructor object that includes:
336
- * - Individual constructors for each variant
337
- * - `$is` for type predicates
338
- * - `$match` for pattern matching
388
+ * Includes:
389
+ * - A constructor function for each variant (keyed by tag name)
390
+ * - `$is(tag)` returns a type-guard for the given variant
391
+ * - `$match` exhaustive pattern matching (data-last or data-first)
392
+ *
393
+ * **Example** (using the constructor object)
339
394
  *
340
- * @example
341
395
  * ```ts
342
396
  * import { Data } from "effect"
343
397
  *
344
- * type HttpError =
345
- * | { readonly _tag: "BadRequest"; readonly message: string }
346
- * | { readonly _tag: "NotFound"; readonly resource: string }
398
+ * type Shape =
399
+ * | { readonly _tag: "Circle"; readonly radius: number }
400
+ * | { readonly _tag: "Rect"; readonly w: number; readonly h: number }
347
401
  *
348
- * const { $is, $match, BadRequest, NotFound } = Data.taggedEnum<HttpError>()
402
+ * const { Circle, Rect, $is, $match } = Data.taggedEnum<Shape>()
349
403
  *
350
- * const error = BadRequest({ message: "Invalid input" })
404
+ * const shape = Circle({ radius: 10 })
351
405
  *
352
- * // Type predicate
353
- * if ($is("BadRequest")(error)) {
354
- * console.log(error.message) // TypeScript knows this is BadRequest
406
+ * // Type guard
407
+ * if ($is("Circle")(shape)) {
408
+ * console.log(shape.radius)
355
409
  * }
356
410
  *
357
411
  * // Pattern matching
358
- * const result = $match(error, {
359
- * BadRequest: ({ message }) => `Bad request: ${message}`,
360
- * NotFound: ({ resource }) => `Not found: ${resource}`
412
+ * const label = $match(shape, {
413
+ * Circle: (s) => `circle r=${s.radius}`,
414
+ * Rect: (s) => `rect ${s.w}x${s.h}`
361
415
  * })
362
416
  * ```
363
417
  *
418
+ * @see {@link taggedEnum} — creates a `Constructor`
419
+ *
364
420
  * @since 3.1.0
365
421
  * @category types
366
422
  */
@@ -399,52 +455,26 @@ export declare namespace TaggedEnum {
399
455
  >
400
456
 
401
457
  /**
458
+ * Function type that constructs a tagged-union variant from its fields,
459
+ * excluding the keys listed in `Tag`.
460
+ *
461
+ * Returns `void` when no fields remain after excluding `Tag` keys.
462
+ *
402
463
  * @since 4.0.0
403
- * @category types
404
464
  */
405
465
  export type ConstructorFrom<A, Tag extends keyof A = never> = (
406
- args: Types.Equals<Omit<A, Tag>, {}> extends true ? void
407
- : { readonly [P in keyof A as P extends Tag ? never : P]: A[P] }
466
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends Tag ? never : P]: A[P] }>
408
467
  ) => A
409
468
 
410
469
  /**
411
- * Provides type-safe pattern matching for generic tagged enums.
412
- *
413
- * This interface provides `$is` and `$match` utilities for tagged enums
414
- * that use generics, ensuring type safety across different generic instantiations.
415
- *
416
- * @example
417
- * ```ts
418
- * import { Data } from "effect"
419
- *
420
- * type Result<E, A> = Data.TaggedEnum<{
421
- * Failure: { readonly error: E }
422
- * Success: { readonly value: A }
423
- * }>
424
- *
425
- * interface ResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
426
- * readonly taggedEnum: Result<this["A"], this["B"]>
427
- * }
428
- *
429
- * const { $is, $match, Failure, Success } = Data.taggedEnum<ResultDefinition>()
430
- *
431
- * const stringResult = Success({ value: "hello" })
432
- * const numberResult = Failure({ error: 404 })
470
+ * Type-guard and pattern-matching interface for generic tagged enums.
433
471
  *
434
- * // Generic type checking
435
- * if ($is("Success")(stringResult)) {
436
- * console.log(stringResult.value) // TypeScript knows this is string
437
- * }
472
+ * This is the `$is` / `$match` portion of the object returned by
473
+ * {@link taggedEnum} when used with a {@link WithGenerics} definition.
438
474
  *
439
- * // Generic pattern matching
440
- * const message = $match(numberResult, {
441
- * Success: ({ value }) => `Value: ${value}`,
442
- * Failure: ({ error }) => `Error: ${error}`
443
- * })
444
- * ```
475
+ * @see {@link Constructor} — the non-generic equivalent
445
476
  *
446
477
  * @since 3.2.0
447
- * @category types
448
478
  */
449
479
  export interface GenericMatchers<Z extends WithGenerics<number>> {
450
480
  readonly $is: <Tag extends Z["taggedEnum"]["_tag"]>(
@@ -496,88 +526,128 @@ export declare namespace TaggedEnum {
496
526
  }
497
527
 
498
528
  /**
499
- * Create a constructor for a tagged union of `Data` structs.
529
+ * Creates runtime constructors, type guards, and pattern matching for a
530
+ * {@link TaggedEnum} type.
531
+ *
532
+ * Returns an object with:
533
+ * - One constructor per variant (keyed by tag name)
534
+ * - `$is(tag)` — returns a type-guard function
535
+ * - `$match` — exhaustive pattern matching (data-first or data-last)
536
+ *
537
+ * - Use when you have a `TaggedEnum` type and need to construct/inspect values.
538
+ * - Constructors produce **plain objects** (not class instances).
539
+ * - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
500
540
  *
501
- * You can also pass a `TaggedEnum.WithGenerics` if you want to add generics to
502
- * the constructor.
541
+ * **Example** (basic usage)
503
542
  *
504
- * @example
505
543
  * ```ts
506
544
  * import { Data } from "effect"
507
545
  *
508
- * const { BadRequest, NotFound } = Data.taggedEnum<
509
- * | {
510
- * readonly _tag: "BadRequest"
511
- * readonly status: 400
512
- * readonly message: string
513
- * }
514
- * | {
515
- * readonly _tag: "NotFound"
516
- * readonly status: 404
517
- * readonly message: string
518
- * }
519
- * >()
520
- *
521
- * const notFound = NotFound({ status: 404, message: "Not Found" })
546
+ * type HttpError = Data.TaggedEnum<{
547
+ * BadRequest: { readonly message: string }
548
+ * NotFound: { readonly url: string }
549
+ * }>
550
+ *
551
+ * const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
552
+ *
553
+ * const err = NotFound({ url: "/missing" })
554
+ *
555
+ * // Type guard
556
+ * console.log($is("NotFound")(err)) // true
557
+ *
558
+ * // Pattern matching
559
+ * const msg = $match(err, {
560
+ * BadRequest: (e) => e.message,
561
+ * NotFound: (e) => `${e.url} not found`
562
+ * })
563
+ * console.log(msg) // "/missing not found"
522
564
  * ```
523
565
  *
524
- * @example
566
+ * **Example** (generic tagged enum)
567
+ *
568
+ * ```ts
525
569
  * import { Data } from "effect"
526
570
  *
527
571
  * type MyResult<E, A> = Data.TaggedEnum<{
528
572
  * Failure: { readonly error: E }
529
573
  * Success: { readonly value: A }
530
574
  * }>
531
- * interface MyResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
575
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
532
576
  * readonly taggedEnum: MyResult<this["A"], this["B"]>
533
577
  * }
534
- * const { Failure, Success } = Data.taggedEnum<MyResultDefinition>()
578
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
535
579
  *
536
- * const success = Success({ value: 1 })
580
+ * const ok = Success({ value: 42 })
581
+ * // ok: { readonly _tag: "Success"; readonly value: number }
582
+ * ```
583
+ *
584
+ * @see {@link TaggedEnum} — the type-level companion
585
+ * @see {@link TaggedEnum.Constructor} — the returned object type
586
+ * @see {@link TaggedEnum.WithGenerics} — generic enum support
537
587
  *
538
588
  * @category constructors
539
589
  * @since 2.0.0
540
590
  */
541
591
  export const taggedEnum: {
542
592
  /**
543
- * Create a constructor for a tagged union of `Data` structs.
593
+ * Creates runtime constructors, type guards, and pattern matching for a
594
+ * {@link TaggedEnum} type.
595
+ *
596
+ * Returns an object with:
597
+ * - One constructor per variant (keyed by tag name)
598
+ * - `$is(tag)` — returns a type-guard function
599
+ * - `$match` — exhaustive pattern matching (data-first or data-last)
544
600
  *
545
- * You can also pass a `TaggedEnum.WithGenerics` if you want to add generics to
546
- * the constructor.
601
+ * - Use when you have a `TaggedEnum` type and need to construct/inspect values.
602
+ * - Constructors produce **plain objects** (not class instances).
603
+ * - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
604
+ *
605
+ * **Example** (basic usage)
547
606
  *
548
- * @example
549
607
  * ```ts
550
608
  * import { Data } from "effect"
551
609
  *
552
- * const { BadRequest, NotFound } = Data.taggedEnum<
553
- * | {
554
- * readonly _tag: "BadRequest"
555
- * readonly status: 400
556
- * readonly message: string
557
- * }
558
- * | {
559
- * readonly _tag: "NotFound"
560
- * readonly status: 404
561
- * readonly message: string
562
- * }
563
- * >()
564
- *
565
- * const notFound = NotFound({ status: 404, message: "Not Found" })
610
+ * type HttpError = Data.TaggedEnum<{
611
+ * BadRequest: { readonly message: string }
612
+ * NotFound: { readonly url: string }
613
+ * }>
614
+ *
615
+ * const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
616
+ *
617
+ * const err = NotFound({ url: "/missing" })
618
+ *
619
+ * // Type guard
620
+ * console.log($is("NotFound")(err)) // true
621
+ *
622
+ * // Pattern matching
623
+ * const msg = $match(err, {
624
+ * BadRequest: (e) => e.message,
625
+ * NotFound: (e) => `${e.url} not found`
626
+ * })
627
+ * console.log(msg) // "/missing not found"
566
628
  * ```
567
629
  *
568
- * @example
630
+ * **Example** (generic tagged enum)
631
+ *
632
+ * ```ts
569
633
  * import { Data } from "effect"
570
634
  *
571
635
  * type MyResult<E, A> = Data.TaggedEnum<{
572
636
  * Failure: { readonly error: E }
573
637
  * Success: { readonly value: A }
574
638
  * }>
575
- * interface MyResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
639
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
576
640
  * readonly taggedEnum: MyResult<this["A"], this["B"]>
577
641
  * }
578
- * const { Failure, Success } = Data.taggedEnum<MyResultDefinition>()
642
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
643
+ *
644
+ * const ok = Success({ value: 42 })
645
+ * // ok: { readonly _tag: "Success"; readonly value: number }
646
+ * ```
579
647
  *
580
- * const success = Success({ value: 1 })
648
+ * @see {@link TaggedEnum} the type-level companion
649
+ * @see {@link TaggedEnum.Constructor} — the returned object type
650
+ * @see {@link TaggedEnum.WithGenerics} — generic enum support
581
651
  *
582
652
  * @category constructors
583
653
  * @since 2.0.0
@@ -595,44 +665,64 @@ export const taggedEnum: {
595
665
  >
596
666
 
597
667
  /**
598
- * Create a constructor for a tagged union of `Data` structs.
668
+ * Creates runtime constructors, type guards, and pattern matching for a
669
+ * {@link TaggedEnum} type.
599
670
  *
600
- * You can also pass a `TaggedEnum.WithGenerics` if you want to add generics to
601
- * the constructor.
671
+ * Returns an object with:
672
+ * - One constructor per variant (keyed by tag name)
673
+ * - `$is(tag)` — returns a type-guard function
674
+ * - `$match` — exhaustive pattern matching (data-first or data-last)
675
+ *
676
+ * - Use when you have a `TaggedEnum` type and need to construct/inspect values.
677
+ * - Constructors produce **plain objects** (not class instances).
678
+ * - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
679
+ *
680
+ * **Example** (basic usage)
602
681
  *
603
- * @example
604
682
  * ```ts
605
683
  * import { Data } from "effect"
606
684
  *
607
- * const { BadRequest, NotFound } = Data.taggedEnum<
608
- * | {
609
- * readonly _tag: "BadRequest"
610
- * readonly status: 400
611
- * readonly message: string
612
- * }
613
- * | {
614
- * readonly _tag: "NotFound"
615
- * readonly status: 404
616
- * readonly message: string
617
- * }
618
- * >()
619
- *
620
- * const notFound = NotFound({ status: 404, message: "Not Found" })
685
+ * type HttpError = Data.TaggedEnum<{
686
+ * BadRequest: { readonly message: string }
687
+ * NotFound: { readonly url: string }
688
+ * }>
689
+ *
690
+ * const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
691
+ *
692
+ * const err = NotFound({ url: "/missing" })
693
+ *
694
+ * // Type guard
695
+ * console.log($is("NotFound")(err)) // true
696
+ *
697
+ * // Pattern matching
698
+ * const msg = $match(err, {
699
+ * BadRequest: (e) => e.message,
700
+ * NotFound: (e) => `${e.url} not found`
701
+ * })
702
+ * console.log(msg) // "/missing not found"
621
703
  * ```
622
704
  *
623
- * @example
705
+ * **Example** (generic tagged enum)
706
+ *
707
+ * ```ts
624
708
  * import { Data } from "effect"
625
709
  *
626
710
  * type MyResult<E, A> = Data.TaggedEnum<{
627
711
  * Failure: { readonly error: E }
628
712
  * Success: { readonly value: A }
629
713
  * }>
630
- * interface MyResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
714
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
631
715
  * readonly taggedEnum: MyResult<this["A"], this["B"]>
632
716
  * }
633
- * const { Failure, Success } = Data.taggedEnum<MyResultDefinition>()
717
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
634
718
  *
635
- * const success = Success({ value: 1 })
719
+ * const ok = Success({ value: 42 })
720
+ * // ok: { readonly _tag: "Success"; readonly value: number }
721
+ * ```
722
+ *
723
+ * @see {@link TaggedEnum} — the type-level companion
724
+ * @see {@link TaggedEnum.Constructor} — the returned object type
725
+ * @see {@link TaggedEnum.WithGenerics} — generic enum support
636
726
  *
637
727
  * @category constructors
638
728
  * @since 2.0.0
@@ -650,44 +740,64 @@ export const taggedEnum: {
650
740
  >
651
741
 
652
742
  /**
653
- * Create a constructor for a tagged union of `Data` structs.
743
+ * Creates runtime constructors, type guards, and pattern matching for a
744
+ * {@link TaggedEnum} type.
745
+ *
746
+ * Returns an object with:
747
+ * - One constructor per variant (keyed by tag name)
748
+ * - `$is(tag)` — returns a type-guard function
749
+ * - `$match` — exhaustive pattern matching (data-first or data-last)
654
750
  *
655
- * You can also pass a `TaggedEnum.WithGenerics` if you want to add generics to
656
- * the constructor.
751
+ * - Use when you have a `TaggedEnum` type and need to construct/inspect values.
752
+ * - Constructors produce **plain objects** (not class instances).
753
+ * - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
754
+ *
755
+ * **Example** (basic usage)
657
756
  *
658
- * @example
659
757
  * ```ts
660
758
  * import { Data } from "effect"
661
759
  *
662
- * const { BadRequest, NotFound } = Data.taggedEnum<
663
- * | {
664
- * readonly _tag: "BadRequest"
665
- * readonly status: 400
666
- * readonly message: string
667
- * }
668
- * | {
669
- * readonly _tag: "NotFound"
670
- * readonly status: 404
671
- * readonly message: string
672
- * }
673
- * >()
674
- *
675
- * const notFound = NotFound({ status: 404, message: "Not Found" })
760
+ * type HttpError = Data.TaggedEnum<{
761
+ * BadRequest: { readonly message: string }
762
+ * NotFound: { readonly url: string }
763
+ * }>
764
+ *
765
+ * const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
766
+ *
767
+ * const err = NotFound({ url: "/missing" })
768
+ *
769
+ * // Type guard
770
+ * console.log($is("NotFound")(err)) // true
771
+ *
772
+ * // Pattern matching
773
+ * const msg = $match(err, {
774
+ * BadRequest: (e) => e.message,
775
+ * NotFound: (e) => `${e.url} not found`
776
+ * })
777
+ * console.log(msg) // "/missing not found"
676
778
  * ```
677
779
  *
678
- * @example
780
+ * **Example** (generic tagged enum)
781
+ *
782
+ * ```ts
679
783
  * import { Data } from "effect"
680
784
  *
681
785
  * type MyResult<E, A> = Data.TaggedEnum<{
682
786
  * Failure: { readonly error: E }
683
787
  * Success: { readonly value: A }
684
788
  * }>
685
- * interface MyResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
789
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
686
790
  * readonly taggedEnum: MyResult<this["A"], this["B"]>
687
791
  * }
688
- * const { Failure, Success } = Data.taggedEnum<MyResultDefinition>()
792
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
793
+ *
794
+ * const ok = Success({ value: 42 })
795
+ * // ok: { readonly _tag: "Success"; readonly value: number }
796
+ * ```
689
797
  *
690
- * const success = Success({ value: 1 })
798
+ * @see {@link TaggedEnum} the type-level companion
799
+ * @see {@link TaggedEnum.Constructor} — the returned object type
800
+ * @see {@link TaggedEnum.WithGenerics} — generic enum support
691
801
  *
692
802
  * @category constructors
693
803
  * @since 2.0.0
@@ -705,44 +815,64 @@ export const taggedEnum: {
705
815
  >
706
816
 
707
817
  /**
708
- * Create a constructor for a tagged union of `Data` structs.
818
+ * Creates runtime constructors, type guards, and pattern matching for a
819
+ * {@link TaggedEnum} type.
709
820
  *
710
- * You can also pass a `TaggedEnum.WithGenerics` if you want to add generics to
711
- * the constructor.
821
+ * Returns an object with:
822
+ * - One constructor per variant (keyed by tag name)
823
+ * - `$is(tag)` — returns a type-guard function
824
+ * - `$match` — exhaustive pattern matching (data-first or data-last)
825
+ *
826
+ * - Use when you have a `TaggedEnum` type and need to construct/inspect values.
827
+ * - Constructors produce **plain objects** (not class instances).
828
+ * - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
829
+ *
830
+ * **Example** (basic usage)
712
831
  *
713
- * @example
714
832
  * ```ts
715
833
  * import { Data } from "effect"
716
834
  *
717
- * const { BadRequest, NotFound } = Data.taggedEnum<
718
- * | {
719
- * readonly _tag: "BadRequest"
720
- * readonly status: 400
721
- * readonly message: string
722
- * }
723
- * | {
724
- * readonly _tag: "NotFound"
725
- * readonly status: 404
726
- * readonly message: string
727
- * }
728
- * >()
729
- *
730
- * const notFound = NotFound({ status: 404, message: "Not Found" })
835
+ * type HttpError = Data.TaggedEnum<{
836
+ * BadRequest: { readonly message: string }
837
+ * NotFound: { readonly url: string }
838
+ * }>
839
+ *
840
+ * const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
841
+ *
842
+ * const err = NotFound({ url: "/missing" })
843
+ *
844
+ * // Type guard
845
+ * console.log($is("NotFound")(err)) // true
846
+ *
847
+ * // Pattern matching
848
+ * const msg = $match(err, {
849
+ * BadRequest: (e) => e.message,
850
+ * NotFound: (e) => `${e.url} not found`
851
+ * })
852
+ * console.log(msg) // "/missing not found"
731
853
  * ```
732
854
  *
733
- * @example
855
+ * **Example** (generic tagged enum)
856
+ *
857
+ * ```ts
734
858
  * import { Data } from "effect"
735
859
  *
736
860
  * type MyResult<E, A> = Data.TaggedEnum<{
737
861
  * Failure: { readonly error: E }
738
862
  * Success: { readonly value: A }
739
863
  * }>
740
- * interface MyResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
864
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
741
865
  * readonly taggedEnum: MyResult<this["A"], this["B"]>
742
866
  * }
743
- * const { Failure, Success } = Data.taggedEnum<MyResultDefinition>()
867
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
744
868
  *
745
- * const success = Success({ value: 1 })
869
+ * const ok = Success({ value: 42 })
870
+ * // ok: { readonly _tag: "Success"; readonly value: number }
871
+ * ```
872
+ *
873
+ * @see {@link TaggedEnum} — the type-level companion
874
+ * @see {@link TaggedEnum.Constructor} — the returned object type
875
+ * @see {@link TaggedEnum.WithGenerics} — generic enum support
746
876
  *
747
877
  * @category constructors
748
878
  * @since 2.0.0
@@ -760,44 +890,64 @@ export const taggedEnum: {
760
890
  >
761
891
 
762
892
  /**
763
- * Create a constructor for a tagged union of `Data` structs.
893
+ * Creates runtime constructors, type guards, and pattern matching for a
894
+ * {@link TaggedEnum} type.
895
+ *
896
+ * Returns an object with:
897
+ * - One constructor per variant (keyed by tag name)
898
+ * - `$is(tag)` — returns a type-guard function
899
+ * - `$match` — exhaustive pattern matching (data-first or data-last)
764
900
  *
765
- * You can also pass a `TaggedEnum.WithGenerics` if you want to add generics to
766
- * the constructor.
901
+ * - Use when you have a `TaggedEnum` type and need to construct/inspect values.
902
+ * - Constructors produce **plain objects** (not class instances).
903
+ * - For generic enums, pass a {@link TaggedEnum.WithGenerics} interface.
904
+ *
905
+ * **Example** (basic usage)
767
906
  *
768
- * @example
769
907
  * ```ts
770
908
  * import { Data } from "effect"
771
909
  *
772
- * const { BadRequest, NotFound } = Data.taggedEnum<
773
- * | {
774
- * readonly _tag: "BadRequest"
775
- * readonly status: 400
776
- * readonly message: string
777
- * }
778
- * | {
779
- * readonly _tag: "NotFound"
780
- * readonly status: 404
781
- * readonly message: string
782
- * }
783
- * >()
784
- *
785
- * const notFound = NotFound({ status: 404, message: "Not Found" })
910
+ * type HttpError = Data.TaggedEnum<{
911
+ * BadRequest: { readonly message: string }
912
+ * NotFound: { readonly url: string }
913
+ * }>
914
+ *
915
+ * const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
916
+ *
917
+ * const err = NotFound({ url: "/missing" })
918
+ *
919
+ * // Type guard
920
+ * console.log($is("NotFound")(err)) // true
921
+ *
922
+ * // Pattern matching
923
+ * const msg = $match(err, {
924
+ * BadRequest: (e) => e.message,
925
+ * NotFound: (e) => `${e.url} not found`
926
+ * })
927
+ * console.log(msg) // "/missing not found"
786
928
  * ```
787
929
  *
788
- * @example
930
+ * **Example** (generic tagged enum)
931
+ *
932
+ * ```ts
789
933
  * import { Data } from "effect"
790
934
  *
791
935
  * type MyResult<E, A> = Data.TaggedEnum<{
792
936
  * Failure: { readonly error: E }
793
937
  * Success: { readonly value: A }
794
938
  * }>
795
- * interface MyResultDefinition extends Data.TaggedEnum.WithGenerics<2> {
939
+ * interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
796
940
  * readonly taggedEnum: MyResult<this["A"], this["B"]>
797
941
  * }
798
- * const { Failure, Success } = Data.taggedEnum<MyResultDefinition>()
942
+ * const { Failure, Success } = Data.taggedEnum<MyResultDef>()
943
+ *
944
+ * const ok = Success({ value: 42 })
945
+ * // ok: { readonly _tag: "Success"; readonly value: number }
946
+ * ```
799
947
  *
800
- * const success = Success({ value: 1 })
948
+ * @see {@link TaggedEnum} the type-level companion
949
+ * @see {@link TaggedEnum.Constructor} — the returned object type
950
+ * @see {@link TaggedEnum.WithGenerics} — generic enum support
801
951
  *
802
952
  * @category constructors
803
953
  * @since 2.0.0
@@ -848,72 +998,86 @@ function taggedMatch<
848
998
  }
849
999
 
850
1000
  /**
851
- * Create a structured error constructor that supports Effect's error handling.
1001
+ * Base class for yieldable errors.
852
1002
  *
853
- * This constructor creates errors that are both `Cause.YieldableError` (can be
854
- * yielded in Effect generators) and have structural equality semantics.
1003
+ * Extends `Cause.YieldableError`, so instances can be yielded inside
1004
+ * `Effect.gen` to fail the enclosing effect. Fields are passed as a single
1005
+ * object; when there are no fields the argument is optional.
1006
+ *
1007
+ * - Use for errors that do **not** need tag-based discrimination.
1008
+ * - If you need `Effect.catchTag` support, use {@link TaggedError} instead.
1009
+ * - If a `message` field is provided, it becomes the error's `.message`.
1010
+ *
1011
+ * **Example** (defining a yieldable error)
855
1012
  *
856
- * @example
857
1013
  * ```ts
858
1014
  * import { Data, Effect } from "effect"
859
1015
  *
860
- * class NetworkError extends Data.Error<{ code: number; message: string }> {}
1016
+ * class NetworkError extends Data.Error<{
1017
+ * readonly code: number
1018
+ * readonly message: string
1019
+ * }> {}
861
1020
  *
862
1021
  * const program = Effect.gen(function*() {
863
- * yield* new NetworkError({ code: 500, message: "Server error" })
1022
+ * yield* new NetworkError({ code: 500, message: "timeout" })
864
1023
  * })
865
1024
  *
1025
+ * // The effect fails with a NetworkError
866
1026
  * Effect.runSync(Effect.exit(program))
867
- * // Exit.fail(NetworkError({ code: 500, message: "Server error" }))
868
1027
  * ```
869
1028
  *
1029
+ * @see {@link TaggedError} — adds a `_tag` for `Effect.catchTag`
1030
+ * @see {@link Class} — non-error data class
1031
+ *
870
1032
  * @category constructors
871
1033
  * @since 2.0.0
872
1034
  */
873
1035
  export const Error: new<A extends Record<string, any> = {}>(
874
- args: Types.Equals<A, {}> extends true ? void
875
- : { readonly [P in keyof A]: A[P] }
1036
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A]: A[P] }>
876
1037
  ) => Cause.YieldableError & Readonly<A> = core.Error
877
1038
 
878
1039
  /**
879
- * Create a tagged error constructor with a specific tag for discriminated unions.
1040
+ * Creates a tagged error class with a `_tag` discriminator.
1041
+ *
1042
+ * Like {@link Error}, but instances also carry a `readonly _tag` property,
1043
+ * enabling `Effect.catchTag` and `Effect.catchTags` for tag-based recovery.
1044
+ * The `_tag` is excluded from the constructor argument.
1045
+ *
1046
+ * - Use for domain errors in Effect applications where you want
1047
+ * discriminated-union error handling.
1048
+ * - Yielding an instance inside `Effect.gen` fails the effect with this error.
880
1049
  *
881
- * This constructor creates errors with a `_tag` property that are both
882
- * `Cause.YieldableError` and have structural equality semantics.
1050
+ * **Example** (tag-based error recovery)
883
1051
  *
884
- * @example
885
1052
  * ```ts
886
- * import { Data, Effect, pipe } from "effect"
1053
+ * import { Data, Effect } from "effect"
887
1054
  *
888
- * class NetworkError extends Data.TaggedError("NetworkError")<{
889
- * code: number
890
- * message: string
1055
+ * class NotFound extends Data.TaggedError("NotFound")<{
1056
+ * readonly resource: string
891
1057
  * }> {}
892
1058
  *
893
- * class ValidationError extends Data.TaggedError("ValidationError")<{
894
- * field: string
895
- * message: string
1059
+ * class Forbidden extends Data.TaggedError("Forbidden")<{
1060
+ * readonly reason: string
896
1061
  * }> {}
897
1062
  *
898
1063
  * const program = Effect.gen(function*() {
899
- * yield* new NetworkError({ code: 500, message: "Server error" })
1064
+ * yield* new NotFound({ resource: "/users/42" })
900
1065
  * })
901
1066
  *
902
- * const result = pipe(
903
- * program,
904
- * Effect.catchTag(
905
- * "NetworkError",
906
- * (error) => Effect.succeed(`Network error: ${error.message}`)
907
- * )
1067
+ * const recovered = program.pipe(
1068
+ * Effect.catchTag("NotFound", (e) =>
1069
+ * Effect.succeed(`missing: ${e.resource}`))
908
1070
  * )
909
1071
  * ```
910
1072
  *
1073
+ * @see {@link Error} — without a `_tag`
1074
+ * @see {@link TaggedClass} — tagged class that is not an error
1075
+ *
911
1076
  * @category constructors
912
1077
  * @since 2.0.0
913
1078
  */
914
1079
  export const TaggedError: <Tag extends string>(
915
1080
  tag: Tag
916
1081
  ) => new<A extends Record<string, any> = {}>(
917
- args: Types.Equals<A, {}> extends true ? void
918
- : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }
1082
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>
919
1083
  ) => Cause.YieldableError & { readonly _tag: Tag } & Readonly<A> = core.TaggedError as any