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
@@ -0,0 +1,789 @@
1
+ /**
2
+ * TxPubSub is a transactional publish/subscribe hub that provides Software Transactional Memory
3
+ * (STM) semantics for message broadcasting. Publishers broadcast messages to all current
4
+ * subscribers, with each subscriber receiving its own copy of every published message.
5
+ *
6
+ * Supports multiple queue strategies: bounded, unbounded, dropping, and sliding.
7
+ *
8
+ * @since 4.0.0
9
+ */
10
+ import * as Effect from "./Effect.ts"
11
+ import { dual } from "./Function.ts"
12
+ import type { Inspectable } from "./Inspectable.ts"
13
+ import { NodeInspectSymbol, toJson } from "./Inspectable.ts"
14
+ import type { Pipeable } from "./Pipeable.ts"
15
+ import { pipeArguments } from "./Pipeable.ts"
16
+ import { hasProperty } from "./Predicate.ts"
17
+ import type * as Scope from "./Scope.ts"
18
+ import * as TxQueue from "./TxQueue.ts"
19
+ import * as TxRef from "./TxRef.ts"
20
+
21
+ const TypeId = "~effect/transactions/TxPubSub"
22
+
23
+ /**
24
+ * A TxPubSub represents a transactional publish/subscribe hub that broadcasts messages
25
+ * to all current subscribers using Software Transactional Memory (STM) semantics.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * import { Effect, TxPubSub, TxQueue } from "effect"
30
+ *
31
+ * const program = Effect.gen(function*() {
32
+ * const hub = yield* TxPubSub.unbounded<string>()
33
+ *
34
+ * yield* Effect.scoped(
35
+ * Effect.gen(function*() {
36
+ * const sub = yield* TxPubSub.subscribe(hub)
37
+ * yield* TxPubSub.publish(hub, "hello")
38
+ * const msg = yield* TxQueue.take(sub)
39
+ * console.log(msg) // "hello"
40
+ * })
41
+ * )
42
+ * })
43
+ * ```
44
+ *
45
+ * @since 4.0.0
46
+ * @category models
47
+ */
48
+ export interface TxPubSub<in out A> extends Inspectable, Pipeable {
49
+ readonly [TypeId]: typeof TypeId
50
+ /** @internal */
51
+ readonly subscribersRef: TxRef.TxRef<Array<TxQueue.TxQueue<A>>>
52
+ /** @internal */
53
+ readonly shutdownRef: TxRef.TxRef<boolean>
54
+ readonly strategy: "bounded" | "unbounded" | "dropping" | "sliding"
55
+ readonly capacity: number
56
+ }
57
+
58
+ const TxPubSubProto: Omit<TxPubSub<any>, typeof TypeId | "subscribersRef" | "shutdownRef" | "strategy" | "capacity"> = {
59
+ [NodeInspectSymbol](this: TxPubSub<unknown>) {
60
+ return toJson(this)
61
+ },
62
+ toJSON(this: TxPubSub<unknown>) {
63
+ return {
64
+ _id: "TxPubSub",
65
+ strategy: this.strategy,
66
+ capacity: this.capacity
67
+ }
68
+ },
69
+ toString(this: TxPubSub<unknown>) {
70
+ return `TxPubSub(${this.strategy}, ${this.capacity})`
71
+ },
72
+ pipe() {
73
+ return pipeArguments(this, arguments)
74
+ }
75
+ }
76
+
77
+ const makeTxPubSub = <A>(
78
+ subscribersRef: TxRef.TxRef<Array<TxQueue.TxQueue<A>>>,
79
+ shutdownRef: TxRef.TxRef<boolean>,
80
+ strategy: "bounded" | "unbounded" | "dropping" | "sliding",
81
+ cap: number
82
+ ): TxPubSub<A> => {
83
+ const self = Object.create(TxPubSubProto)
84
+ self[TypeId] = TypeId
85
+ self.subscribersRef = subscribersRef
86
+ self.shutdownRef = shutdownRef
87
+ self.strategy = strategy
88
+ self.capacity = cap
89
+ return self
90
+ }
91
+
92
+ // =============================================================================
93
+ // Constructors
94
+ // =============================================================================
95
+
96
+ /**
97
+ * Creates a bounded TxPubSub with the specified capacity. When a subscriber's
98
+ * queue is full, the publisher will retry the transaction until space is available.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * import { Effect, TxPubSub, TxQueue } from "effect"
103
+ *
104
+ * const program = Effect.gen(function*() {
105
+ * const hub = yield* TxPubSub.bounded<number>(16)
106
+ *
107
+ * yield* Effect.scoped(
108
+ * Effect.gen(function*() {
109
+ * const sub = yield* TxPubSub.subscribe(hub)
110
+ * yield* TxPubSub.publish(hub, 42)
111
+ * const value = yield* TxQueue.take(sub)
112
+ * console.log(value) // 42
113
+ * })
114
+ * )
115
+ * })
116
+ * ```
117
+ *
118
+ * @since 4.0.0
119
+ * @category constructors
120
+ */
121
+ export const bounded = <A = never>(capacity: number): Effect.Effect<TxPubSub<A>, never, Effect.Transaction> =>
122
+ Effect.gen(function*() {
123
+ const subscribersRef = yield* TxRef.make<Array<TxQueue.TxQueue<A>>>([])
124
+ const shutdownRef = yield* TxRef.make(false)
125
+ return makeTxPubSub(subscribersRef, shutdownRef, "bounded", capacity)
126
+ })
127
+
128
+ /**
129
+ * Creates a dropping TxPubSub with the specified capacity. When a subscriber's
130
+ * queue is full, the message is dropped for that subscriber.
131
+ *
132
+ * @example
133
+ * ```ts
134
+ * import { Effect, TxPubSub, TxQueue } from "effect"
135
+ *
136
+ * const program = Effect.gen(function*() {
137
+ * const hub = yield* TxPubSub.dropping<number>(2)
138
+ *
139
+ * yield* Effect.scoped(
140
+ * Effect.gen(function*() {
141
+ * const sub = yield* TxPubSub.subscribe(hub)
142
+ * yield* TxPubSub.publish(hub, 1)
143
+ * yield* TxPubSub.publish(hub, 2)
144
+ * yield* TxPubSub.publish(hub, 3) // dropped
145
+ * const v1 = yield* TxQueue.take(sub)
146
+ * const v2 = yield* TxQueue.take(sub)
147
+ * console.log(v1, v2) // 1 2
148
+ * })
149
+ * )
150
+ * })
151
+ * ```
152
+ *
153
+ * @since 4.0.0
154
+ * @category constructors
155
+ */
156
+ export const dropping = <A = never>(capacity: number): Effect.Effect<TxPubSub<A>, never, Effect.Transaction> =>
157
+ Effect.gen(function*() {
158
+ const subscribersRef = yield* TxRef.make<Array<TxQueue.TxQueue<A>>>([])
159
+ const shutdownRef = yield* TxRef.make(false)
160
+ return makeTxPubSub(subscribersRef, shutdownRef, "dropping", capacity)
161
+ })
162
+
163
+ /**
164
+ * Creates a sliding TxPubSub with the specified capacity. When a subscriber's
165
+ * queue is full, the oldest message in that subscriber's queue is dropped.
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * import { Effect, TxPubSub, TxQueue } from "effect"
170
+ *
171
+ * const program = Effect.gen(function*() {
172
+ * const hub = yield* TxPubSub.sliding<number>(2)
173
+ *
174
+ * yield* Effect.scoped(
175
+ * Effect.gen(function*() {
176
+ * const sub = yield* TxPubSub.subscribe(hub)
177
+ * yield* TxPubSub.publish(hub, 1)
178
+ * yield* TxPubSub.publish(hub, 2)
179
+ * yield* TxPubSub.publish(hub, 3) // evicts 1
180
+ * const v1 = yield* TxQueue.take(sub)
181
+ * console.log(v1) // 2
182
+ * })
183
+ * )
184
+ * })
185
+ * ```
186
+ *
187
+ * @since 4.0.0
188
+ * @category constructors
189
+ */
190
+ export const sliding = <A = never>(capacity: number): Effect.Effect<TxPubSub<A>, never, Effect.Transaction> =>
191
+ Effect.gen(function*() {
192
+ const subscribersRef = yield* TxRef.make<Array<TxQueue.TxQueue<A>>>([])
193
+ const shutdownRef = yield* TxRef.make(false)
194
+ return makeTxPubSub(subscribersRef, shutdownRef, "sliding", capacity)
195
+ })
196
+
197
+ /**
198
+ * Creates an unbounded TxPubSub with unlimited capacity. Messages are always accepted.
199
+ *
200
+ * @example
201
+ * ```ts
202
+ * import { Effect, TxPubSub, TxQueue } from "effect"
203
+ *
204
+ * const program = Effect.gen(function*() {
205
+ * const hub = yield* TxPubSub.unbounded<string>()
206
+ *
207
+ * yield* Effect.scoped(
208
+ * Effect.gen(function*() {
209
+ * const sub = yield* TxPubSub.subscribe(hub)
210
+ * yield* TxPubSub.publish(hub, "msg")
211
+ * const msg = yield* TxQueue.take(sub)
212
+ * console.log(msg) // "msg"
213
+ * })
214
+ * )
215
+ * })
216
+ * ```
217
+ *
218
+ * @since 4.0.0
219
+ * @category constructors
220
+ */
221
+ export const unbounded = <A = never>(): Effect.Effect<TxPubSub<A>, never, Effect.Transaction> =>
222
+ Effect.gen(function*() {
223
+ const subscribersRef = yield* TxRef.make<Array<TxQueue.TxQueue<A>>>([])
224
+ const shutdownRef = yield* TxRef.make(false)
225
+ return makeTxPubSub(subscribersRef, shutdownRef, "unbounded", Number.POSITIVE_INFINITY)
226
+ })
227
+
228
+ // =============================================================================
229
+ // Getters
230
+ // =============================================================================
231
+
232
+ /**
233
+ * Returns the capacity of the TxPubSub.
234
+ *
235
+ * @example
236
+ * ```ts
237
+ * import { Effect, TxPubSub } from "effect"
238
+ *
239
+ * const program = Effect.gen(function*() {
240
+ * const hub = yield* TxPubSub.bounded<number>(16)
241
+ * console.log(TxPubSub.capacity(hub)) // 16
242
+ * })
243
+ * ```
244
+ *
245
+ * @since 4.0.0
246
+ * @category getters
247
+ */
248
+ export const capacity = <A>(self: TxPubSub<A>): number => self.capacity
249
+
250
+ /**
251
+ * Returns the current number of messages across all subscriber queues (the max).
252
+ *
253
+ * @example
254
+ * ```ts
255
+ * import { Effect, TxPubSub, TxQueue } from "effect"
256
+ *
257
+ * const program = Effect.gen(function*() {
258
+ * const hub = yield* TxPubSub.unbounded<number>()
259
+ *
260
+ * yield* Effect.scoped(
261
+ * Effect.gen(function*() {
262
+ * const sub = yield* TxPubSub.subscribe(hub)
263
+ * yield* TxPubSub.publish(hub, 1)
264
+ * yield* TxPubSub.publish(hub, 2)
265
+ * const s = yield* TxPubSub.size(hub)
266
+ * console.log(s) // 2
267
+ * })
268
+ * )
269
+ * })
270
+ * ```
271
+ *
272
+ * @since 4.0.0
273
+ * @category getters
274
+ */
275
+ export const size = <A>(self: TxPubSub<A>): Effect.Effect<number, never, Effect.Transaction> =>
276
+ Effect.gen(function*() {
277
+ const subscribers = yield* TxRef.get(self.subscribersRef)
278
+ let maxSize = 0
279
+ for (const queue of subscribers) {
280
+ const s = yield* TxQueue.size(queue)
281
+ if (s > maxSize) maxSize = s
282
+ }
283
+ return maxSize
284
+ })
285
+
286
+ /**
287
+ * Checks if the TxPubSub has no pending messages (all subscriber queues are empty).
288
+ *
289
+ * @example
290
+ * ```ts
291
+ * import { Effect, TxPubSub } from "effect"
292
+ *
293
+ * const program = Effect.gen(function*() {
294
+ * const hub = yield* TxPubSub.unbounded<number>()
295
+ * const empty = yield* TxPubSub.isEmpty(hub)
296
+ * console.log(empty) // true
297
+ * })
298
+ * ```
299
+ *
300
+ * @since 4.0.0
301
+ * @category getters
302
+ */
303
+ export const isEmpty = <A>(self: TxPubSub<A>): Effect.Effect<boolean, never, Effect.Transaction> =>
304
+ Effect.map(size(self), (s) => s === 0)
305
+
306
+ /**
307
+ * Checks if any subscriber queue is at capacity.
308
+ *
309
+ * @example
310
+ * ```ts
311
+ * import { Effect, TxPubSub } from "effect"
312
+ *
313
+ * const program = Effect.gen(function*() {
314
+ * const hub = yield* TxPubSub.bounded<number>(2)
315
+ * const full = yield* TxPubSub.isFull(hub)
316
+ * console.log(full) // false
317
+ * })
318
+ * ```
319
+ *
320
+ * @since 4.0.0
321
+ * @category getters
322
+ */
323
+ export const isFull = <A>(self: TxPubSub<A>): Effect.Effect<boolean, never, Effect.Transaction> =>
324
+ Effect.gen(function*() {
325
+ if (self.capacity === Number.POSITIVE_INFINITY) return false
326
+ const subscribers = yield* TxRef.get(self.subscribersRef)
327
+ for (const queue of subscribers) {
328
+ if (yield* TxQueue.isFull(queue)) return true
329
+ }
330
+ return false
331
+ })
332
+
333
+ /**
334
+ * Checks if the TxPubSub has been shut down.
335
+ *
336
+ * @example
337
+ * ```ts
338
+ * import { Effect, TxPubSub } from "effect"
339
+ *
340
+ * const program = Effect.gen(function*() {
341
+ * const hub = yield* TxPubSub.unbounded<number>()
342
+ * console.log(yield* TxPubSub.isShutdown(hub)) // false
343
+ * yield* TxPubSub.shutdown(hub)
344
+ * console.log(yield* TxPubSub.isShutdown(hub)) // true
345
+ * })
346
+ * ```
347
+ *
348
+ * @since 4.0.0
349
+ * @category getters
350
+ */
351
+ export const isShutdown = <A>(self: TxPubSub<A>): Effect.Effect<boolean, never, Effect.Transaction> =>
352
+ TxRef.get(self.shutdownRef)
353
+
354
+ // =============================================================================
355
+ // Mutations
356
+ // =============================================================================
357
+
358
+ /**
359
+ * Publishes a message to all current subscribers.
360
+ *
361
+ * Returns `true` if the message was delivered to all subscribers, or `false` if
362
+ * the hub is shut down or the message was dropped for any subscriber (dropping strategy).
363
+ *
364
+ * For bounded strategy, retries the transaction if any subscriber queue is full.
365
+ * For sliding strategy, drops oldest messages in full subscriber queues.
366
+ * For dropping strategy, drops the message for full subscriber queues and returns `false`.
367
+ *
368
+ * @example
369
+ * ```ts
370
+ * import { Effect, TxPubSub, TxQueue } from "effect"
371
+ *
372
+ * const program = Effect.gen(function*() {
373
+ * const hub = yield* TxPubSub.unbounded<string>()
374
+ *
375
+ * // No subscribers - publish is a no-op
376
+ * const r1 = yield* TxPubSub.publish(hub, "no one listening")
377
+ * console.log(r1) // true
378
+ *
379
+ * yield* Effect.scoped(
380
+ * Effect.gen(function*() {
381
+ * const sub = yield* TxPubSub.subscribe(hub)
382
+ * yield* TxPubSub.publish(hub, "hello")
383
+ * const msg = yield* TxQueue.take(sub)
384
+ * console.log(msg) // "hello"
385
+ * })
386
+ * )
387
+ * })
388
+ * ```
389
+ *
390
+ * @since 4.0.0
391
+ * @category mutations
392
+ */
393
+ export const publish: {
394
+ // =============================================================================
395
+ // Mutations
396
+ // =============================================================================
397
+
398
+ /**
399
+ * Publishes a message to all current subscribers.
400
+ *
401
+ * Returns `true` if the message was delivered to all subscribers, or `false` if
402
+ * the hub is shut down or the message was dropped for any subscriber (dropping strategy).
403
+ *
404
+ * For bounded strategy, retries the transaction if any subscriber queue is full.
405
+ * For sliding strategy, drops oldest messages in full subscriber queues.
406
+ * For dropping strategy, drops the message for full subscriber queues and returns `false`.
407
+ *
408
+ * @example
409
+ * ```ts
410
+ * import { Effect, TxPubSub, TxQueue } from "effect"
411
+ *
412
+ * const program = Effect.gen(function*() {
413
+ * const hub = yield* TxPubSub.unbounded<string>()
414
+ *
415
+ * // No subscribers - publish is a no-op
416
+ * const r1 = yield* TxPubSub.publish(hub, "no one listening")
417
+ * console.log(r1) // true
418
+ *
419
+ * yield* Effect.scoped(
420
+ * Effect.gen(function*() {
421
+ * const sub = yield* TxPubSub.subscribe(hub)
422
+ * yield* TxPubSub.publish(hub, "hello")
423
+ * const msg = yield* TxQueue.take(sub)
424
+ * console.log(msg) // "hello"
425
+ * })
426
+ * )
427
+ * })
428
+ * ```
429
+ *
430
+ * @since 4.0.0
431
+ * @category mutations
432
+ */
433
+ <A>(value: A): (self: TxPubSub<A>) => Effect.Effect<boolean, never, Effect.Transaction>
434
+ // =============================================================================
435
+ // Mutations
436
+ // =============================================================================
437
+
438
+ /**
439
+ * Publishes a message to all current subscribers.
440
+ *
441
+ * Returns `true` if the message was delivered to all subscribers, or `false` if
442
+ * the hub is shut down or the message was dropped for any subscriber (dropping strategy).
443
+ *
444
+ * For bounded strategy, retries the transaction if any subscriber queue is full.
445
+ * For sliding strategy, drops oldest messages in full subscriber queues.
446
+ * For dropping strategy, drops the message for full subscriber queues and returns `false`.
447
+ *
448
+ * @example
449
+ * ```ts
450
+ * import { Effect, TxPubSub, TxQueue } from "effect"
451
+ *
452
+ * const program = Effect.gen(function*() {
453
+ * const hub = yield* TxPubSub.unbounded<string>()
454
+ *
455
+ * // No subscribers - publish is a no-op
456
+ * const r1 = yield* TxPubSub.publish(hub, "no one listening")
457
+ * console.log(r1) // true
458
+ *
459
+ * yield* Effect.scoped(
460
+ * Effect.gen(function*() {
461
+ * const sub = yield* TxPubSub.subscribe(hub)
462
+ * yield* TxPubSub.publish(hub, "hello")
463
+ * const msg = yield* TxQueue.take(sub)
464
+ * console.log(msg) // "hello"
465
+ * })
466
+ * )
467
+ * })
468
+ * ```
469
+ *
470
+ * @since 4.0.0
471
+ * @category mutations
472
+ */
473
+ <A>(self: TxPubSub<A>, value: A): Effect.Effect<boolean, never, Effect.Transaction>
474
+ } = dual(
475
+ 2,
476
+ <A>(self: TxPubSub<A>, value: A): Effect.Effect<boolean, never, Effect.Transaction> =>
477
+ Effect.gen(function*() {
478
+ if (yield* TxRef.get(self.shutdownRef)) return false
479
+
480
+ const subscribers = yield* TxRef.get(self.subscribersRef)
481
+ let allAccepted = true
482
+
483
+ for (const queue of subscribers) {
484
+ const accepted = yield* TxQueue.offer(queue, value)
485
+ if (!accepted) allAccepted = false
486
+ }
487
+
488
+ return allAccepted
489
+ })
490
+ )
491
+
492
+ /**
493
+ * Publishes all messages from an iterable to all current subscribers.
494
+ *
495
+ * Returns `true` if all messages were delivered to all subscribers.
496
+ *
497
+ * @example
498
+ * ```ts
499
+ * import { Effect, TxPubSub, TxQueue } from "effect"
500
+ *
501
+ * const program = Effect.gen(function*() {
502
+ * const hub = yield* TxPubSub.unbounded<number>()
503
+ *
504
+ * yield* Effect.scoped(
505
+ * Effect.gen(function*() {
506
+ * const sub = yield* TxPubSub.subscribe(hub)
507
+ * yield* TxPubSub.publishAll(hub, [1, 2, 3])
508
+ * const v1 = yield* TxQueue.take(sub)
509
+ * const v2 = yield* TxQueue.take(sub)
510
+ * const v3 = yield* TxQueue.take(sub)
511
+ * console.log(v1, v2, v3) // 1 2 3
512
+ * })
513
+ * )
514
+ * })
515
+ * ```
516
+ *
517
+ * @since 4.0.0
518
+ * @category mutations
519
+ */
520
+ export const publishAll: {
521
+ /**
522
+ * Publishes all messages from an iterable to all current subscribers.
523
+ *
524
+ * Returns `true` if all messages were delivered to all subscribers.
525
+ *
526
+ * @example
527
+ * ```ts
528
+ * import { Effect, TxPubSub, TxQueue } from "effect"
529
+ *
530
+ * const program = Effect.gen(function*() {
531
+ * const hub = yield* TxPubSub.unbounded<number>()
532
+ *
533
+ * yield* Effect.scoped(
534
+ * Effect.gen(function*() {
535
+ * const sub = yield* TxPubSub.subscribe(hub)
536
+ * yield* TxPubSub.publishAll(hub, [1, 2, 3])
537
+ * const v1 = yield* TxQueue.take(sub)
538
+ * const v2 = yield* TxQueue.take(sub)
539
+ * const v3 = yield* TxQueue.take(sub)
540
+ * console.log(v1, v2, v3) // 1 2 3
541
+ * })
542
+ * )
543
+ * })
544
+ * ```
545
+ *
546
+ * @since 4.0.0
547
+ * @category mutations
548
+ */
549
+ <A>(values: Iterable<A>): (self: TxPubSub<A>) => Effect.Effect<boolean, never, Effect.Transaction>
550
+ /**
551
+ * Publishes all messages from an iterable to all current subscribers.
552
+ *
553
+ * Returns `true` if all messages were delivered to all subscribers.
554
+ *
555
+ * @example
556
+ * ```ts
557
+ * import { Effect, TxPubSub, TxQueue } from "effect"
558
+ *
559
+ * const program = Effect.gen(function*() {
560
+ * const hub = yield* TxPubSub.unbounded<number>()
561
+ *
562
+ * yield* Effect.scoped(
563
+ * Effect.gen(function*() {
564
+ * const sub = yield* TxPubSub.subscribe(hub)
565
+ * yield* TxPubSub.publishAll(hub, [1, 2, 3])
566
+ * const v1 = yield* TxQueue.take(sub)
567
+ * const v2 = yield* TxQueue.take(sub)
568
+ * const v3 = yield* TxQueue.take(sub)
569
+ * console.log(v1, v2, v3) // 1 2 3
570
+ * })
571
+ * )
572
+ * })
573
+ * ```
574
+ *
575
+ * @since 4.0.0
576
+ * @category mutations
577
+ */
578
+ <A>(self: TxPubSub<A>, values: Iterable<A>): Effect.Effect<boolean, never, Effect.Transaction>
579
+ } = dual(
580
+ 2,
581
+ <A>(self: TxPubSub<A>, values: Iterable<A>): Effect.Effect<boolean, never, Effect.Transaction> =>
582
+ Effect.gen(function*() {
583
+ if (yield* TxRef.get(self.shutdownRef)) return false
584
+
585
+ let allAccepted = true
586
+ for (const value of values) {
587
+ const accepted = yield* publish(self, value)
588
+ if (!accepted) allAccepted = false
589
+ }
590
+ return allAccepted
591
+ })
592
+ )
593
+
594
+ /**
595
+ * Subscribes to the TxPubSub, returning a TxQueue that receives all messages
596
+ * published after subscription. The subscription is automatically removed when
597
+ * the scope is closed.
598
+ *
599
+ * @example
600
+ * ```ts
601
+ * import { Effect, TxPubSub, TxQueue } from "effect"
602
+ *
603
+ * const program = Effect.gen(function*() {
604
+ * const hub = yield* TxPubSub.unbounded<string>()
605
+ *
606
+ * yield* Effect.scoped(
607
+ * Effect.gen(function*() {
608
+ * const sub1 = yield* TxPubSub.subscribe(hub)
609
+ * const sub2 = yield* TxPubSub.subscribe(hub)
610
+ *
611
+ * yield* TxPubSub.publish(hub, "broadcast")
612
+ *
613
+ * const msg1 = yield* TxQueue.take(sub1)
614
+ * const msg2 = yield* TxQueue.take(sub2)
615
+ * console.log(msg1, msg2) // "broadcast" "broadcast"
616
+ * })
617
+ * )
618
+ * })
619
+ * ```
620
+ *
621
+ * @since 4.0.0
622
+ * @category mutations
623
+ */
624
+ export const subscribe = <A>(self: TxPubSub<A>): Effect.Effect<TxQueue.TxQueue<A>, never, Scope.Scope> =>
625
+ Effect.acquireRelease(
626
+ Effect.transaction(acquireSubscriber(self)),
627
+ (queue) => Effect.transaction(releaseSubscriber(self, queue))
628
+ )
629
+
630
+ /**
631
+ * Creates a subscriber queue and registers it with the pub/sub.
632
+ *
633
+ * This is the transactional acquire step of `subscribe`, exposed so that
634
+ * callers can compose it with other Tx operations in a single transaction
635
+ * (e.g. `TxSubscriptionRef.changes`).
636
+ *
637
+ * @since 4.0.0
638
+ * @category mutations
639
+ */
640
+ export const acquireSubscriber = <A>(
641
+ self: TxPubSub<A>
642
+ ): Effect.Effect<TxQueue.TxQueue<A>, never, Effect.Transaction> =>
643
+ Effect.gen(function*() {
644
+ const queue = yield* makeSubscriberQueue<A>(self.strategy, self.capacity)
645
+ yield* TxRef.update(self.subscribersRef, (subs) => [...subs, queue])
646
+ return queue
647
+ })
648
+
649
+ /**
650
+ * Removes a subscriber queue from the pub/sub and shuts it down.
651
+ *
652
+ * This is the transactional release step of `subscribe`, exposed so that
653
+ * callers can compose it with other Tx operations in a single transaction.
654
+ *
655
+ * @since 4.0.0
656
+ * @category mutations
657
+ */
658
+ export const releaseSubscriber: {
659
+ /**
660
+ * Removes a subscriber queue from the pub/sub and shuts it down.
661
+ *
662
+ * This is the transactional release step of `subscribe`, exposed so that
663
+ * callers can compose it with other Tx operations in a single transaction.
664
+ *
665
+ * @since 4.0.0
666
+ * @category mutations
667
+ */
668
+ <A>(queue: TxQueue.TxQueue<A>): (self: TxPubSub<A>) => Effect.Effect<void, never, Effect.Transaction>
669
+ /**
670
+ * Removes a subscriber queue from the pub/sub and shuts it down.
671
+ *
672
+ * This is the transactional release step of `subscribe`, exposed so that
673
+ * callers can compose it with other Tx operations in a single transaction.
674
+ *
675
+ * @since 4.0.0
676
+ * @category mutations
677
+ */
678
+ <A>(self: TxPubSub<A>, queue: TxQueue.TxQueue<A>): Effect.Effect<void, never, Effect.Transaction>
679
+ } = dual(
680
+ 2,
681
+ <A>(
682
+ self: TxPubSub<A>,
683
+ queue: TxQueue.TxQueue<A>
684
+ ): Effect.Effect<void, never, Effect.Transaction> =>
685
+ Effect.gen(function*() {
686
+ yield* TxRef.update(self.subscribersRef, (subs) => subs.filter((q) => q !== queue))
687
+ yield* TxQueue.shutdown(queue)
688
+ })
689
+ )
690
+
691
+ const makeSubscriberQueue = <A>(
692
+ strategy: "bounded" | "unbounded" | "dropping" | "sliding",
693
+ cap: number
694
+ ): Effect.Effect<TxQueue.TxQueue<A>, never, Effect.Transaction> => {
695
+ switch (strategy) {
696
+ case "bounded":
697
+ return TxQueue.bounded<A>(cap)
698
+ case "dropping":
699
+ return TxQueue.dropping<A>(cap)
700
+ case "sliding":
701
+ return TxQueue.sliding<A>(cap)
702
+ case "unbounded":
703
+ return TxQueue.unbounded<A>()
704
+ }
705
+ }
706
+
707
+ /**
708
+ * Shuts down the TxPubSub and all subscriber queues. Subsequent publish operations
709
+ * will return `false`. Subsequent subscribe operations will receive an already-shutdown queue.
710
+ *
711
+ * @example
712
+ * ```ts
713
+ * import { Effect, TxPubSub } from "effect"
714
+ *
715
+ * const program = Effect.gen(function*() {
716
+ * const hub = yield* TxPubSub.unbounded<number>()
717
+ * yield* TxPubSub.shutdown(hub)
718
+ *
719
+ * const shut = yield* TxPubSub.isShutdown(hub)
720
+ * console.log(shut) // true
721
+ *
722
+ * const accepted = yield* TxPubSub.publish(hub, 1)
723
+ * console.log(accepted) // false
724
+ * })
725
+ * ```
726
+ *
727
+ * @since 4.0.0
728
+ * @category mutations
729
+ */
730
+ export const shutdown = <A>(self: TxPubSub<A>): Effect.Effect<void, never, Effect.Transaction> =>
731
+ Effect.gen(function*() {
732
+ const alreadyShutdown = yield* TxRef.get(self.shutdownRef)
733
+ if (alreadyShutdown) return
734
+
735
+ yield* TxRef.set(self.shutdownRef, true)
736
+ const subscribers = yield* TxRef.get(self.subscribersRef)
737
+ for (const queue of subscribers) {
738
+ yield* TxQueue.shutdown(queue)
739
+ }
740
+ })
741
+
742
+ /**
743
+ * Waits for the TxPubSub to be shut down.
744
+ *
745
+ * @example
746
+ * ```ts
747
+ * import { Effect, TxPubSub } from "effect"
748
+ *
749
+ * const program = Effect.gen(function*() {
750
+ * const hub = yield* TxPubSub.unbounded<number>()
751
+ *
752
+ * const fiber = yield* Effect.forkChild(TxPubSub.awaitShutdown(hub))
753
+ * yield* TxPubSub.shutdown(hub)
754
+ * yield* fiber.await
755
+ * })
756
+ * ```
757
+ *
758
+ * @since 4.0.0
759
+ * @category mutations
760
+ */
761
+ export const awaitShutdown = <A>(self: TxPubSub<A>): Effect.Effect<void, never, Effect.Transaction> =>
762
+ Effect.gen(function*() {
763
+ const shut = yield* TxRef.get(self.shutdownRef)
764
+ if (shut) return
765
+ return yield* Effect.retryTransaction
766
+ })
767
+
768
+ // =============================================================================
769
+ // Guards
770
+ // =============================================================================
771
+
772
+ /**
773
+ * Checks if the given value is a TxPubSub.
774
+ *
775
+ * @example
776
+ * ```ts
777
+ * import { TxPubSub } from "effect"
778
+ *
779
+ * declare const someValue: unknown
780
+ *
781
+ * if (TxPubSub.isTxPubSub(someValue)) {
782
+ * console.log("This is a TxPubSub")
783
+ * }
784
+ * ```
785
+ *
786
+ * @since 4.0.0
787
+ * @category guards
788
+ */
789
+ export const isTxPubSub = (u: unknown): u is TxPubSub<unknown> => hasProperty(u, TypeId)