effect 4.0.5 → 4.0.6

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 (985) hide show
  1. package/ai-docs/package.json +1 -1
  2. package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
  3. package/ai-docs/tsconfig.json +3 -1
  4. package/dist/Array.d.ts +117 -52
  5. package/dist/Array.d.ts.map +1 -1
  6. package/dist/Array.js +41 -20
  7. package/dist/Array.js.map +1 -1
  8. package/dist/Bytes.d.ts +79 -0
  9. package/dist/Bytes.d.ts.map +1 -0
  10. package/dist/Bytes.js +109 -0
  11. package/dist/Bytes.js.map +1 -0
  12. package/dist/Channel.d.ts +181 -13
  13. package/dist/Channel.d.ts.map +1 -1
  14. package/dist/Channel.js +125 -30
  15. package/dist/Channel.js.map +1 -1
  16. package/dist/ChannelSchema.d.ts.map +1 -1
  17. package/dist/ChannelSchema.js.map +1 -1
  18. package/dist/Chunk.d.ts +39 -21
  19. package/dist/Chunk.d.ts.map +1 -1
  20. package/dist/Chunk.js +26 -17
  21. package/dist/Chunk.js.map +1 -1
  22. package/dist/Config.d.ts.map +1 -1
  23. package/dist/Config.js +8 -3
  24. package/dist/Config.js.map +1 -1
  25. package/dist/ConfigProvider.d.ts.map +1 -1
  26. package/dist/ConfigProvider.js +2 -1
  27. package/dist/ConfigProvider.js.map +1 -1
  28. package/dist/Cron.d.ts +2 -2
  29. package/dist/Cron.d.ts.map +1 -1
  30. package/dist/Cron.js +6 -3
  31. package/dist/Cron.js.map +1 -1
  32. package/dist/Duration.d.ts.map +1 -1
  33. package/dist/Duration.js +56 -16
  34. package/dist/Duration.js.map +1 -1
  35. package/dist/Effect.d.ts +487 -163
  36. package/dist/Effect.d.ts.map +1 -1
  37. package/dist/Effect.js +203 -37
  38. package/dist/Effect.js.map +1 -1
  39. package/dist/Equivalence.d.ts +2 -1
  40. package/dist/Equivalence.d.ts.map +1 -1
  41. package/dist/Equivalence.js +12 -8
  42. package/dist/Equivalence.js.map +1 -1
  43. package/dist/Exit.d.ts +24 -9
  44. package/dist/Exit.d.ts.map +1 -1
  45. package/dist/Exit.js +8 -3
  46. package/dist/Exit.js.map +1 -1
  47. package/dist/FiberHandle.d.ts +2 -0
  48. package/dist/FiberHandle.d.ts.map +1 -1
  49. package/dist/FiberHandle.js +9 -4
  50. package/dist/FiberHandle.js.map +1 -1
  51. package/dist/FiberMap.d.ts +2 -0
  52. package/dist/FiberMap.d.ts.map +1 -1
  53. package/dist/FiberMap.js +5 -2
  54. package/dist/FiberMap.js.map +1 -1
  55. package/dist/FileSystem.d.ts +5 -0
  56. package/dist/FileSystem.d.ts.map +1 -1
  57. package/dist/FileSystem.js +3 -0
  58. package/dist/FileSystem.js.map +1 -1
  59. package/dist/Graph.d.ts.map +1 -1
  60. package/dist/Graph.js.map +1 -1
  61. package/dist/HashSet.d.ts.map +1 -1
  62. package/dist/HashSet.js.map +1 -1
  63. package/dist/Iterable.d.ts.map +1 -1
  64. package/dist/Iterable.js +18 -17
  65. package/dist/Iterable.js.map +1 -1
  66. package/dist/JsonSchema.d.ts +9 -3
  67. package/dist/JsonSchema.d.ts.map +1 -1
  68. package/dist/JsonSchema.js +19 -3
  69. package/dist/JsonSchema.js.map +1 -1
  70. package/dist/Layer.d.ts.map +1 -1
  71. package/dist/Layer.js +2 -2
  72. package/dist/Layer.js.map +1 -1
  73. package/dist/ManagedRuntime.d.ts +19 -1
  74. package/dist/ManagedRuntime.d.ts.map +1 -1
  75. package/dist/ManagedRuntime.js +62 -6
  76. package/dist/ManagedRuntime.js.map +1 -1
  77. package/dist/Metric.d.ts +132 -0
  78. package/dist/Metric.d.ts.map +1 -1
  79. package/dist/Metric.js +197 -25
  80. package/dist/Metric.js.map +1 -1
  81. package/dist/MutableHashMap.d.ts.map +1 -1
  82. package/dist/MutableHashMap.js.map +1 -1
  83. package/dist/Number.js +2 -2
  84. package/dist/Number.js.map +1 -1
  85. package/dist/Optic.d.ts.map +1 -1
  86. package/dist/Optic.js.map +1 -1
  87. package/dist/Path.d.ts.map +1 -1
  88. package/dist/Path.js +8 -1
  89. package/dist/Path.js.map +1 -1
  90. package/dist/PubSub.d.ts.map +1 -1
  91. package/dist/PubSub.js +12 -7
  92. package/dist/PubSub.js.map +1 -1
  93. package/dist/Queue.d.ts +4 -1
  94. package/dist/Queue.d.ts.map +1 -1
  95. package/dist/Queue.js +4 -1
  96. package/dist/Queue.js.map +1 -1
  97. package/dist/Random.d.ts.map +1 -1
  98. package/dist/Random.js +1 -1
  99. package/dist/Random.js.map +1 -1
  100. package/dist/RcMap.d.ts +12 -7
  101. package/dist/RcMap.d.ts.map +1 -1
  102. package/dist/RcMap.js +9 -6
  103. package/dist/RcMap.js.map +1 -1
  104. package/dist/Record.d.ts +51 -0
  105. package/dist/Record.d.ts.map +1 -1
  106. package/dist/Record.js +17 -0
  107. package/dist/Record.js.map +1 -1
  108. package/dist/Ref.d.ts.map +1 -1
  109. package/dist/Ref.js.map +1 -1
  110. package/dist/References.d.ts +5 -4
  111. package/dist/References.d.ts.map +1 -1
  112. package/dist/References.js +5 -4
  113. package/dist/References.js.map +1 -1
  114. package/dist/RequestResolver.d.ts +31 -1
  115. package/dist/RequestResolver.d.ts.map +1 -1
  116. package/dist/RequestResolver.js +39 -4
  117. package/dist/RequestResolver.js.map +1 -1
  118. package/dist/Resource.js +1 -1
  119. package/dist/Resource.js.map +1 -1
  120. package/dist/Runtime.d.ts +3 -3
  121. package/dist/Runtime.d.ts.map +1 -1
  122. package/dist/Runtime.js +18 -15
  123. package/dist/Runtime.js.map +1 -1
  124. package/dist/Schedule.d.ts.map +1 -1
  125. package/dist/Schedule.js.map +1 -1
  126. package/dist/Schema.d.ts +384 -332
  127. package/dist/Schema.d.ts.map +1 -1
  128. package/dist/Schema.js +333 -19
  129. package/dist/Schema.js.map +1 -1
  130. package/dist/SchemaAST.d.ts +5 -5
  131. package/dist/SchemaAST.d.ts.map +1 -1
  132. package/dist/SchemaAST.js +24 -8
  133. package/dist/SchemaAST.js.map +1 -1
  134. package/dist/SchemaGetter.d.ts +8 -3
  135. package/dist/SchemaGetter.d.ts.map +1 -1
  136. package/dist/SchemaGetter.js +15 -5
  137. package/dist/SchemaGetter.js.map +1 -1
  138. package/dist/SchemaIssue.d.ts +4 -4
  139. package/dist/SchemaIssue.d.ts.map +1 -1
  140. package/dist/SchemaIssue.js +29 -51
  141. package/dist/SchemaIssue.js.map +1 -1
  142. package/dist/SchemaRepresentation.d.ts +56 -1
  143. package/dist/SchemaRepresentation.d.ts.map +1 -1
  144. package/dist/SchemaRepresentation.js +18 -0
  145. package/dist/SchemaRepresentation.js.map +1 -1
  146. package/dist/SchemaTransformation.d.ts +1 -1
  147. package/dist/SchemaTransformation.js +1 -1
  148. package/dist/Scope.d.ts +12 -2
  149. package/dist/Scope.d.ts.map +1 -1
  150. package/dist/Scope.js +5 -0
  151. package/dist/Scope.js.map +1 -1
  152. package/dist/ScopedCache.d.ts +10 -7
  153. package/dist/ScopedCache.d.ts.map +1 -1
  154. package/dist/ScopedCache.js +9 -5
  155. package/dist/ScopedCache.js.map +1 -1
  156. package/dist/SemVer.d.ts +1196 -0
  157. package/dist/SemVer.d.ts.map +1 -0
  158. package/dist/SemVer.js +756 -0
  159. package/dist/SemVer.js.map +1 -0
  160. package/dist/SemVerRange.d.ts +559 -0
  161. package/dist/SemVerRange.d.ts.map +1 -0
  162. package/dist/SemVerRange.js +551 -0
  163. package/dist/SemVerRange.js.map +1 -0
  164. package/dist/Sink.d.ts.map +1 -1
  165. package/dist/Sink.js +6 -2
  166. package/dist/Sink.js.map +1 -1
  167. package/dist/Stream.d.ts +235 -8
  168. package/dist/Stream.d.ts.map +1 -1
  169. package/dist/Stream.js +145 -60
  170. package/dist/Stream.js.map +1 -1
  171. package/dist/String.d.ts +4 -2
  172. package/dist/String.d.ts.map +1 -1
  173. package/dist/String.js +8 -6
  174. package/dist/String.js.map +1 -1
  175. package/dist/TextDiff.d.ts +399 -0
  176. package/dist/TextDiff.d.ts.map +1 -0
  177. package/dist/TextDiff.js +634 -0
  178. package/dist/TextDiff.js.map +1 -0
  179. package/dist/TxHashMap.d.ts.map +1 -1
  180. package/dist/TxHashMap.js.map +1 -1
  181. package/dist/TxHashSet.d.ts.map +1 -1
  182. package/dist/TxHashSet.js.map +1 -1
  183. package/dist/ai/AiError.d.ts +68 -4
  184. package/dist/ai/AiError.d.ts.map +1 -1
  185. package/dist/ai/AiError.js +50 -2
  186. package/dist/ai/AiError.js.map +1 -1
  187. package/dist/ai/Chat.d.ts +1 -2
  188. package/dist/ai/Chat.d.ts.map +1 -1
  189. package/dist/ai/Chat.js +6 -3
  190. package/dist/ai/Chat.js.map +1 -1
  191. package/dist/ai/Decision.d.ts +46 -1
  192. package/dist/ai/Decision.d.ts.map +1 -1
  193. package/dist/ai/Decision.js.map +1 -1
  194. package/dist/ai/DecisionModel.d.ts +129 -11
  195. package/dist/ai/DecisionModel.d.ts.map +1 -1
  196. package/dist/ai/DecisionModel.js +182 -94
  197. package/dist/ai/DecisionModel.js.map +1 -1
  198. package/dist/ai/EmbeddingModel.d.ts +10 -0
  199. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  200. package/dist/ai/EmbeddingModel.js +21 -7
  201. package/dist/ai/EmbeddingModel.js.map +1 -1
  202. package/dist/ai/McpClient.d.ts +289 -0
  203. package/dist/ai/McpClient.d.ts.map +1 -0
  204. package/dist/ai/McpClient.js +819 -0
  205. package/dist/ai/McpClient.js.map +1 -0
  206. package/dist/ai/McpClientError.d.ts +254 -0
  207. package/dist/ai/McpClientError.d.ts.map +1 -0
  208. package/dist/ai/McpClientError.js +260 -0
  209. package/dist/ai/McpClientError.js.map +1 -0
  210. package/dist/ai/McpProtocol.d.ts +2 -2
  211. package/dist/ai/McpProtocol.d.ts.map +1 -1
  212. package/dist/ai/McpSchema.d.ts +368 -235
  213. package/dist/ai/McpSchema.d.ts.map +1 -1
  214. package/dist/ai/McpSchema.js +94 -24
  215. package/dist/ai/McpSchema.js.map +1 -1
  216. package/dist/ai/McpServer.d.ts.map +1 -1
  217. package/dist/ai/McpServer.js +25 -22
  218. package/dist/ai/McpServer.js.map +1 -1
  219. package/dist/ai/Prompt.d.ts +22 -20
  220. package/dist/ai/Prompt.d.ts.map +1 -1
  221. package/dist/ai/Prompt.js +23 -1
  222. package/dist/ai/Prompt.js.map +1 -1
  223. package/dist/ai/Response.d.ts +147 -3
  224. package/dist/ai/Response.d.ts.map +1 -1
  225. package/dist/ai/Response.js +35 -37
  226. package/dist/ai/Response.js.map +1 -1
  227. package/dist/ai/Tool.d.ts +12 -4
  228. package/dist/ai/Tool.d.ts.map +1 -1
  229. package/dist/ai/Tool.js.map +1 -1
  230. package/dist/ai/Toolkit.d.ts +48 -1
  231. package/dist/ai/Toolkit.d.ts.map +1 -1
  232. package/dist/ai/Toolkit.js +65 -12
  233. package/dist/ai/Toolkit.js.map +1 -1
  234. package/dist/ai/index.d.ts +10 -0
  235. package/dist/ai/index.d.ts.map +1 -1
  236. package/dist/ai/index.js +10 -0
  237. package/dist/ai/index.js.map +1 -1
  238. package/dist/ai/internal/mcpCore.js.map +1 -1
  239. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  240. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  241. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  242. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  243. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  244. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  245. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  246. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  247. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  248. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  249. package/dist/ai/internal/mcpProtocol.js +16 -2
  250. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  251. package/dist/ai/internal/mcpRuntime.js +3 -4
  252. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  253. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  254. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  255. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  256. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  257. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  258. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  259. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  260. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  261. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  262. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  263. package/dist/cli/CliError.d.ts +42 -2
  264. package/dist/cli/CliError.d.ts.map +1 -1
  265. package/dist/cli/CliError.js +44 -5
  266. package/dist/cli/CliError.js.map +1 -1
  267. package/dist/cli/Command.d.ts +286 -2
  268. package/dist/cli/Command.d.ts.map +1 -1
  269. package/dist/cli/Command.js +107 -6
  270. package/dist/cli/Command.js.map +1 -1
  271. package/dist/cli/Completions.d.ts +5 -0
  272. package/dist/cli/Completions.d.ts.map +1 -1
  273. package/dist/cli/Completions.js.map +1 -1
  274. package/dist/cli/Flag.d.ts +115 -0
  275. package/dist/cli/Flag.d.ts.map +1 -1
  276. package/dist/cli/Flag.js +56 -0
  277. package/dist/cli/Flag.js.map +1 -1
  278. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  279. package/dist/cli/GlobalFlag.js +3 -3
  280. package/dist/cli/GlobalFlag.js.map +1 -1
  281. package/dist/cli/Param.d.ts +107 -0
  282. package/dist/cli/Param.d.ts.map +1 -1
  283. package/dist/cli/Param.js +56 -0
  284. package/dist/cli/Param.js.map +1 -1
  285. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  286. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  287. package/dist/cli/TerminalCapabilities.js +122 -0
  288. package/dist/cli/TerminalCapabilities.js.map +1 -0
  289. package/dist/cli/index.d.ts +5 -0
  290. package/dist/cli/index.d.ts.map +1 -1
  291. package/dist/cli/index.js +5 -0
  292. package/dist/cli/index.js.map +1 -1
  293. package/dist/cli/internal/command.d.ts +2 -1
  294. package/dist/cli/internal/command.d.ts.map +1 -1
  295. package/dist/cli/internal/command.js +5 -2
  296. package/dist/cli/internal/command.js.map +1 -1
  297. package/dist/cli/internal/completions/bash.js +4 -3
  298. package/dist/cli/internal/completions/bash.js.map +1 -1
  299. package/dist/cli/internal/completions/descriptor.js +9 -1
  300. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  301. package/dist/cli/internal/completions/fish.js +10 -8
  302. package/dist/cli/internal/completions/fish.js.map +1 -1
  303. package/dist/cli/internal/completions/powershell.js +18 -9
  304. package/dist/cli/internal/completions/powershell.js.map +1 -1
  305. package/dist/cli/internal/completions/zsh.js +8 -5
  306. package/dist/cli/internal/completions/zsh.js.map +1 -1
  307. package/dist/cli/internal/formatter.d.ts +2 -0
  308. package/dist/cli/internal/formatter.d.ts.map +1 -0
  309. package/dist/cli/internal/formatter.js +15 -0
  310. package/dist/cli/internal/formatter.js.map +1 -0
  311. package/dist/cli/internal/lexer.js +24 -10
  312. package/dist/cli/internal/lexer.js.map +1 -1
  313. package/dist/cli/internal/parser.js +24 -12
  314. package/dist/cli/internal/parser.js.map +1 -1
  315. package/dist/cluster/ClusterCron.d.ts +29 -1
  316. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  317. package/dist/cluster/ClusterCron.js +64 -32
  318. package/dist/cluster/ClusterCron.js.map +1 -1
  319. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  320. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  321. package/dist/cluster/ClusterMetrics.js +151 -7
  322. package/dist/cluster/ClusterMetrics.js.map +1 -1
  323. package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
  324. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  325. package/dist/cluster/ClusterWorkflowEngine.js +37 -11
  326. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  327. package/dist/cluster/Entity.d.ts +2 -0
  328. package/dist/cluster/Entity.d.ts.map +1 -1
  329. package/dist/cluster/Entity.js.map +1 -1
  330. package/dist/cluster/MessageStorage.d.ts +21 -0
  331. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  332. package/dist/cluster/MessageStorage.js.map +1 -1
  333. package/dist/cluster/Runners.d.ts.map +1 -1
  334. package/dist/cluster/Runners.js +54 -15
  335. package/dist/cluster/Runners.js.map +1 -1
  336. package/dist/cluster/Sharding.d.ts +1 -0
  337. package/dist/cluster/Sharding.d.ts.map +1 -1
  338. package/dist/cluster/Sharding.js +95 -32
  339. package/dist/cluster/Sharding.js.map +1 -1
  340. package/dist/cluster/ShardingConfig.d.ts +20 -0
  341. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  342. package/dist/cluster/ShardingConfig.js +4 -0
  343. package/dist/cluster/ShardingConfig.js.map +1 -1
  344. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  345. package/dist/cluster/SqlMessageStorage.js +40 -50
  346. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  347. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  348. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  349. package/dist/cluster/SqlRunnerStorage.js +10 -4
  350. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  351. package/dist/cluster/internal/entityManager.js +65 -8
  352. package/dist/cluster/internal/entityManager.js.map +1 -1
  353. package/dist/devtools/DevTools.d.ts +3 -2
  354. package/dist/devtools/DevTools.d.ts.map +1 -1
  355. package/dist/devtools/DevTools.js +3 -2
  356. package/dist/devtools/DevTools.js.map +1 -1
  357. package/dist/devtools/DevToolsClient.d.ts +11 -0
  358. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  359. package/dist/devtools/DevToolsClient.js +31 -4
  360. package/dist/devtools/DevToolsClient.js.map +1 -1
  361. package/dist/encoding/Base64Url.d.ts +29 -0
  362. package/dist/encoding/Base64Url.d.ts.map +1 -1
  363. package/dist/encoding/Base64Url.js +29 -0
  364. package/dist/encoding/Base64Url.js.map +1 -1
  365. package/dist/encoding/Ini.d.ts.map +1 -1
  366. package/dist/encoding/Ini.js +3 -0
  367. package/dist/encoding/Ini.js.map +1 -1
  368. package/dist/encoding/JsonArray.d.ts +270 -0
  369. package/dist/encoding/JsonArray.d.ts.map +1 -0
  370. package/dist/encoding/JsonArray.js +691 -0
  371. package/dist/encoding/JsonArray.js.map +1 -0
  372. package/dist/encoding/Ndjson.d.ts +43 -4
  373. package/dist/encoding/Ndjson.d.ts.map +1 -1
  374. package/dist/encoding/Ndjson.js +169 -18
  375. package/dist/encoding/Ndjson.js.map +1 -1
  376. package/dist/encoding/SchemaBinary.d.ts +9 -1
  377. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  378. package/dist/encoding/SchemaBinary.js +12 -19
  379. package/dist/encoding/SchemaBinary.js.map +1 -1
  380. package/dist/encoding/Tar.d.ts +309 -0
  381. package/dist/encoding/Tar.d.ts.map +1 -0
  382. package/dist/encoding/Tar.js +1182 -0
  383. package/dist/encoding/Tar.js.map +1 -0
  384. package/dist/encoding/Toml.js +3 -3
  385. package/dist/encoding/Toml.js.map +1 -1
  386. package/dist/encoding/Xml.d.ts +464 -0
  387. package/dist/encoding/Xml.d.ts.map +1 -0
  388. package/dist/encoding/Xml.js +1619 -0
  389. package/dist/encoding/Xml.js.map +1 -0
  390. package/dist/encoding/Yaml.d.ts +6 -2
  391. package/dist/encoding/Yaml.d.ts.map +1 -1
  392. package/dist/encoding/Yaml.js +97 -34
  393. package/dist/encoding/Yaml.js.map +1 -1
  394. package/dist/encoding/Zip.d.ts +413 -0
  395. package/dist/encoding/Zip.d.ts.map +1 -0
  396. package/dist/encoding/Zip.js +1255 -0
  397. package/dist/encoding/Zip.js.map +1 -0
  398. package/dist/encoding/index.d.ts +20 -0
  399. package/dist/encoding/index.d.ts.map +1 -1
  400. package/dist/encoding/index.js +20 -0
  401. package/dist/encoding/index.js.map +1 -1
  402. package/dist/eventlog/EventJournal.d.ts +90 -5
  403. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  404. package/dist/eventlog/EventJournal.js +488 -228
  405. package/dist/eventlog/EventJournal.js.map +1 -1
  406. package/dist/eventlog/EventLog.d.ts +180 -12
  407. package/dist/eventlog/EventLog.d.ts.map +1 -1
  408. package/dist/eventlog/EventLog.js +394 -146
  409. package/dist/eventlog/EventLog.js.map +1 -1
  410. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  411. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  412. package/dist/eventlog/EventLogEncryption.js +97 -38
  413. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  414. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  415. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  416. package/dist/eventlog/EventLogMessage.js +45 -11
  417. package/dist/eventlog/EventLogMessage.js.map +1 -1
  418. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  419. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  420. package/dist/eventlog/EventLogRemote.js +51 -14
  421. package/dist/eventlog/EventLogRemote.js.map +1 -1
  422. package/dist/eventlog/EventLogServer.d.ts +46 -3
  423. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  424. package/dist/eventlog/EventLogServer.js +119 -19
  425. package/dist/eventlog/EventLogServer.js.map +1 -1
  426. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  427. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  428. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  429. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  430. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  431. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  432. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  433. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  434. package/dist/eventlog/EventRow.d.ts +288 -0
  435. package/dist/eventlog/EventRow.d.ts.map +1 -0
  436. package/dist/eventlog/EventRow.js +435 -0
  437. package/dist/eventlog/EventRow.js.map +1 -0
  438. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  439. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventJournal.js +387 -159
  441. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  443. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  444. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  445. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  446. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  447. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  448. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  449. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  450. package/dist/eventlog/index.d.ts +5 -0
  451. package/dist/eventlog/index.d.ts.map +1 -1
  452. package/dist/eventlog/index.js +5 -0
  453. package/dist/eventlog/index.js.map +1 -1
  454. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  455. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  456. package/dist/eventlog/internal/conflicts.js +92 -0
  457. package/dist/eventlog/internal/conflicts.js.map +1 -0
  458. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  459. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  460. package/dist/graphql/GraphQLClientError.js +4 -18
  461. package/dist/graphql/GraphQLClientError.js.map +1 -1
  462. package/dist/graphql/GraphQLProtocol.d.ts +12 -9
  463. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  464. package/dist/graphql/GraphQLProtocol.js +4 -3
  465. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  466. package/dist/graphql/GraphQLResolver.d.ts +2 -0
  467. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  468. package/dist/graphql/GraphQLResolver.js +74 -32
  469. package/dist/graphql/GraphQLResolver.js.map +1 -1
  470. package/dist/http/FetchHttpClient.d.ts +8 -1
  471. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  472. package/dist/http/FetchHttpClient.js +51 -4
  473. package/dist/http/FetchHttpClient.js.map +1 -1
  474. package/dist/http/FindMyWay/internal/router.js +10 -0
  475. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  476. package/dist/http/Headers.d.ts +227 -0
  477. package/dist/http/Headers.d.ts.map +1 -1
  478. package/dist/http/Headers.js +261 -0
  479. package/dist/http/Headers.js.map +1 -1
  480. package/dist/http/HttpClient.d.ts +93 -0
  481. package/dist/http/HttpClient.d.ts.map +1 -1
  482. package/dist/http/HttpClient.js +55 -16
  483. package/dist/http/HttpClient.js.map +1 -1
  484. package/dist/http/HttpClientRequest.d.ts +127 -3
  485. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  486. package/dist/http/HttpClientRequest.js +44 -2
  487. package/dist/http/HttpClientRequest.js.map +1 -1
  488. package/dist/http/HttpClientResponse.d.ts +53 -0
  489. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  490. package/dist/http/HttpClientResponse.js +47 -0
  491. package/dist/http/HttpClientResponse.js.map +1 -1
  492. package/dist/http/HttpEffect.d.ts +6 -2
  493. package/dist/http/HttpEffect.d.ts.map +1 -1
  494. package/dist/http/HttpEffect.js +21 -17
  495. package/dist/http/HttpEffect.js.map +1 -1
  496. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  497. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  498. package/dist/http/HttpIncomingMessage.js +3 -23
  499. package/dist/http/HttpIncomingMessage.js.map +1 -1
  500. package/dist/http/HttpMiddleware.d.ts +119 -2
  501. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  502. package/dist/http/HttpMiddleware.js +159 -13
  503. package/dist/http/HttpMiddleware.js.map +1 -1
  504. package/dist/http/HttpRouter.d.ts.map +1 -1
  505. package/dist/http/HttpRouter.js +7 -2
  506. package/dist/http/HttpRouter.js.map +1 -1
  507. package/dist/http/HttpServerError.d.ts +5 -2
  508. package/dist/http/HttpServerError.d.ts.map +1 -1
  509. package/dist/http/HttpServerError.js +5 -3
  510. package/dist/http/HttpServerError.js.map +1 -1
  511. package/dist/http/HttpServerRequest.d.ts +25 -5
  512. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  513. package/dist/http/HttpServerRequest.js +36 -10
  514. package/dist/http/HttpServerRequest.js.map +1 -1
  515. package/dist/http/HttpServerResponse.d.ts +17 -8
  516. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  517. package/dist/http/HttpServerResponse.js +37 -21
  518. package/dist/http/HttpServerResponse.js.map +1 -1
  519. package/dist/http/HttpStaticServer.d.ts +0 -12
  520. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  521. package/dist/http/HttpStaticServer.js +21 -7
  522. package/dist/http/HttpStaticServer.js.map +1 -1
  523. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  524. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  525. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  526. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  527. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  528. package/dist/http/MultipartParser/internal/headers.js +4 -12
  529. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  530. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  531. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  532. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  533. package/dist/http/Url.d.ts.map +1 -1
  534. package/dist/http/Url.js +6 -1
  535. package/dist/http/Url.js.map +1 -1
  536. package/dist/http/internal/decompression.js +17 -11
  537. package/dist/http/internal/decompression.js.map +1 -1
  538. package/dist/http/internal/lazyStream.d.ts +2 -0
  539. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  540. package/dist/http/internal/lazyStream.js +18 -0
  541. package/dist/http/internal/lazyStream.js.map +1 -0
  542. package/dist/http/internal/requestState.d.ts +2 -0
  543. package/dist/http/internal/requestState.d.ts.map +1 -0
  544. package/dist/http/internal/requestState.js +28 -0
  545. package/dist/http/internal/requestState.js.map +1 -0
  546. package/dist/http/internal/webResponse.d.ts +2 -0
  547. package/dist/http/internal/webResponse.d.ts.map +1 -0
  548. package/dist/http/internal/webResponse.js +12 -0
  549. package/dist/http/internal/webResponse.js.map +1 -0
  550. package/dist/http-api/HttpApi.js +1 -1
  551. package/dist/http-api/HttpApi.js.map +1 -1
  552. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  553. package/dist/http-api/HttpApiBuilder.js +121 -18
  554. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  555. package/dist/http-api/HttpApiClient.d.ts +29 -4
  556. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  557. package/dist/http-api/HttpApiClient.js +83 -23
  558. package/dist/http-api/HttpApiClient.js.map +1 -1
  559. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  560. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiEndpoint.js +49 -5
  562. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  563. package/dist/http-api/HttpApiError.d.ts +58 -0
  564. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  565. package/dist/http-api/HttpApiError.js +38 -12
  566. package/dist/http-api/HttpApiError.js.map +1 -1
  567. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  568. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  569. package/dist/http-api/HttpApiScalar.js +6 -3
  570. package/dist/http-api/HttpApiScalar.js.map +1 -1
  571. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  572. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  573. package/dist/http-api/HttpApiSchema.js +137 -4
  574. package/dist/http-api/HttpApiSchema.js.map +1 -1
  575. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  576. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  577. package/dist/http-api/HttpApiSwagger.js +14 -4
  578. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  579. package/dist/http-api/HttpApiTest.d.ts +13 -2
  580. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  581. package/dist/http-api/HttpApiTest.js +30 -9
  582. package/dist/http-api/HttpApiTest.js.map +1 -1
  583. package/dist/http-api/OpenApi.d.ts +17 -3
  584. package/dist/http-api/OpenApi.d.ts.map +1 -1
  585. package/dist/http-api/OpenApi.js +57 -32
  586. package/dist/http-api/OpenApi.js.map +1 -1
  587. package/dist/http-api/internal/path.js +35 -10
  588. package/dist/http-api/internal/path.js.map +1 -1
  589. package/dist/index.d.ts +20 -0
  590. package/dist/index.d.ts.map +1 -1
  591. package/dist/index.js +20 -0
  592. package/dist/index.js.map +1 -1
  593. package/dist/internal/core.js +1 -1
  594. package/dist/internal/core.js.map +1 -1
  595. package/dist/internal/dateTime.js +19 -7
  596. package/dist/internal/dateTime.js.map +1 -1
  597. package/dist/internal/effect.js +85 -74
  598. package/dist/internal/effect.js.map +1 -1
  599. package/dist/internal/hashMap.js +2 -2
  600. package/dist/internal/hashMap.js.map +1 -1
  601. package/dist/internal/hydration.d.ts +2 -0
  602. package/dist/internal/hydration.d.ts.map +1 -0
  603. package/dist/internal/hydration.js +15 -0
  604. package/dist/internal/hydration.js.map +1 -0
  605. package/dist/internal/inflate.d.ts +2 -0
  606. package/dist/internal/inflate.d.ts.map +1 -0
  607. package/dist/internal/inflate.js +680 -0
  608. package/dist/internal/inflate.js.map +1 -0
  609. package/dist/internal/record.js +6 -0
  610. package/dist/internal/record.js.map +1 -1
  611. package/dist/internal/request.js +20 -7
  612. package/dist/internal/request.js.map +1 -1
  613. package/dist/internal/schedule.js +17 -22
  614. package/dist/internal/schedule.js.map +1 -1
  615. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  616. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  617. package/dist/internal/schema/interpreter.js +51 -36
  618. package/dist/internal/schema/interpreter.js.map +1 -1
  619. package/dist/internal/schema/standardSchema.js +34 -33
  620. package/dist/internal/schema/standardSchema.js.map +1 -1
  621. package/dist/internal/schema/toCodeDocument.js +7 -2
  622. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  623. package/dist/internal/schema/toCodec.js +86 -1
  624. package/dist/internal/schema/toCodec.js.map +1 -1
  625. package/dist/internal/schema/toFormatter.js +5 -5
  626. package/dist/internal/schema/toFormatter.js.map +1 -1
  627. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  628. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  629. package/dist/internal/trie.js +1 -3
  630. package/dist/internal/trie.js.map +1 -1
  631. package/dist/internal/uuid.js +7 -3
  632. package/dist/internal/uuid.js.map +1 -1
  633. package/dist/internal/version.js +1 -1
  634. package/dist/net/NetAddress.d.ts.map +1 -1
  635. package/dist/net/NetAddress.js +2 -8
  636. package/dist/net/NetAddress.js.map +1 -1
  637. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  638. package/dist/observability/OtlpExporter.js +5 -12
  639. package/dist/observability/OtlpExporter.js.map +1 -1
  640. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  641. package/dist/observability/OtlpMetrics.js +5 -3
  642. package/dist/observability/OtlpMetrics.js.map +1 -1
  643. package/dist/observability/OtlpResource.d.ts +3 -1
  644. package/dist/observability/OtlpResource.d.ts.map +1 -1
  645. package/dist/observability/OtlpResource.js +11 -4
  646. package/dist/observability/OtlpResource.js.map +1 -1
  647. package/dist/observability/OtlpSerialization.d.ts +5 -0
  648. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  649. package/dist/observability/OtlpSerialization.js +14 -3
  650. package/dist/observability/OtlpSerialization.js.map +1 -1
  651. package/dist/observability/internal/protobuf.d.ts +0 -9
  652. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  653. package/dist/observability/internal/protobuf.js +2 -10
  654. package/dist/observability/internal/protobuf.js.map +1 -1
  655. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  656. package/dist/persistence/PersistedCache.js +1 -1
  657. package/dist/persistence/PersistedCache.js.map +1 -1
  658. package/dist/persistence/PersistedQueue.d.ts +6 -2
  659. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  660. package/dist/persistence/PersistedQueue.js +162 -84
  661. package/dist/persistence/PersistedQueue.js.map +1 -1
  662. package/dist/persistence/Persistence.d.ts +28 -0
  663. package/dist/persistence/Persistence.d.ts.map +1 -1
  664. package/dist/persistence/Persistence.js +36 -8
  665. package/dist/persistence/Persistence.js.map +1 -1
  666. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  667. package/dist/persistence/RateLimiter.js +8 -12
  668. package/dist/persistence/RateLimiter.js.map +1 -1
  669. package/dist/persistence/UserDirectories.d.ts +129 -0
  670. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  671. package/dist/persistence/UserDirectories.js +178 -0
  672. package/dist/persistence/UserDirectories.js.map +1 -0
  673. package/dist/persistence/index.d.ts +5 -0
  674. package/dist/persistence/index.d.ts.map +1 -1
  675. package/dist/persistence/index.js +5 -0
  676. package/dist/persistence/index.js.map +1 -1
  677. package/dist/process/ChildProcess.d.ts +2 -1
  678. package/dist/process/ChildProcess.d.ts.map +1 -1
  679. package/dist/process/ChildProcess.js.map +1 -1
  680. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  681. package/dist/reactivity/AsyncResult.js +1 -1
  682. package/dist/reactivity/AsyncResult.js.map +1 -1
  683. package/dist/reactivity/Atom.d.ts +69 -30
  684. package/dist/reactivity/Atom.d.ts.map +1 -1
  685. package/dist/reactivity/Atom.js +40 -15
  686. package/dist/reactivity/Atom.js.map +1 -1
  687. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  688. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  689. package/dist/reactivity/AtomHttpApi.js +1 -1
  690. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  691. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  692. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js +44 -9
  694. package/dist/reactivity/AtomRegistry.js.map +1 -1
  695. package/dist/reactivity/AtomRpc.d.ts +3 -3
  696. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  697. package/dist/reactivity/AtomRpc.js +1 -1
  698. package/dist/reactivity/AtomRpc.js.map +1 -1
  699. package/dist/reactivity/Hydration.d.ts.map +1 -1
  700. package/dist/reactivity/Hydration.js +46 -12
  701. package/dist/reactivity/Hydration.js.map +1 -1
  702. package/dist/reactivity/Reactivity.d.ts +71 -7
  703. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  704. package/dist/reactivity/Reactivity.js +21 -12
  705. package/dist/reactivity/Reactivity.js.map +1 -1
  706. package/dist/rpc/Rpc.d.ts +18 -0
  707. package/dist/rpc/Rpc.d.ts.map +1 -1
  708. package/dist/rpc/Rpc.js +20 -0
  709. package/dist/rpc/Rpc.js.map +1 -1
  710. package/dist/rpc/RpcClient.d.ts +26 -2
  711. package/dist/rpc/RpcClient.d.ts.map +1 -1
  712. package/dist/rpc/RpcClient.js +196 -60
  713. package/dist/rpc/RpcClient.js.map +1 -1
  714. package/dist/rpc/RpcSerialization.d.ts +15 -0
  715. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  716. package/dist/rpc/RpcSerialization.js +21 -5
  717. package/dist/rpc/RpcSerialization.js.map +1 -1
  718. package/dist/rpc/RpcServer.d.ts.map +1 -1
  719. package/dist/rpc/RpcServer.js +9 -18
  720. package/dist/rpc/RpcServer.js.map +1 -1
  721. package/dist/schema/Model.d.ts +1 -1
  722. package/dist/schema/VariantSchema.d.ts +22 -3
  723. package/dist/schema/VariantSchema.d.ts.map +1 -1
  724. package/dist/schema/VariantSchema.js +32 -18
  725. package/dist/schema/VariantSchema.js.map +1 -1
  726. package/dist/socket/Socket.d.ts +23 -1
  727. package/dist/socket/Socket.d.ts.map +1 -1
  728. package/dist/socket/Socket.js +36 -3
  729. package/dist/socket/Socket.js.map +1 -1
  730. package/dist/sql/Migrator.d.ts.map +1 -1
  731. package/dist/sql/Migrator.js +15 -3
  732. package/dist/sql/Migrator.js.map +1 -1
  733. package/dist/sql/SqlClient.d.ts +143 -5
  734. package/dist/sql/SqlClient.d.ts.map +1 -1
  735. package/dist/sql/SqlClient.js +148 -27
  736. package/dist/sql/SqlClient.js.map +1 -1
  737. package/dist/sql/SqlResolver.d.ts +9 -0
  738. package/dist/sql/SqlResolver.d.ts.map +1 -1
  739. package/dist/sql/SqlResolver.js +9 -0
  740. package/dist/sql/SqlResolver.js.map +1 -1
  741. package/dist/sql/Statement.d.ts +3 -1
  742. package/dist/sql/Statement.d.ts.map +1 -1
  743. package/dist/sql/Statement.js +24 -5
  744. package/dist/sql/Statement.js.map +1 -1
  745. package/dist/testing/TestClock.d.ts.map +1 -1
  746. package/dist/testing/TestClock.js +4 -2
  747. package/dist/testing/TestClock.js.map +1 -1
  748. package/dist/testing/TestSchema.d.ts +7 -1
  749. package/dist/testing/TestSchema.d.ts.map +1 -1
  750. package/dist/testing/TestSchema.js +9 -3
  751. package/dist/testing/TestSchema.js.map +1 -1
  752. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  753. package/dist/workflow/WorkflowEngine.js +18 -4
  754. package/dist/workflow/WorkflowEngine.js.map +1 -1
  755. package/package.json +13 -3
  756. package/src/Array.ts +128 -55
  757. package/src/Bytes.ts +111 -0
  758. package/src/Channel.ts +263 -436
  759. package/src/ChannelSchema.ts +1 -49
  760. package/src/Chunk.ts +55 -61
  761. package/src/Config.ts +12 -86
  762. package/src/ConfigProvider.ts +2 -1
  763. package/src/Cron.ts +6 -3
  764. package/src/Duration.ts +66 -16
  765. package/src/Effect.ts +502 -167
  766. package/src/Equivalence.ts +7 -4
  767. package/src/Exit.ts +24 -9
  768. package/src/FiberHandle.ts +10 -9
  769. package/src/FiberMap.ts +13 -66
  770. package/src/FileSystem.ts +10 -0
  771. package/src/Graph.ts +171 -1263
  772. package/src/HashSet.ts +0 -60
  773. package/src/Iterable.ts +15 -14
  774. package/src/JsonSchema.ts +28 -3
  775. package/src/Layer.ts +2 -2
  776. package/src/ManagedRuntime.ts +72 -6
  777. package/src/Metric.ts +249 -507
  778. package/src/MutableHashMap.ts +4 -473
  779. package/src/Number.ts +2 -2
  780. package/src/Optic.ts +17 -332
  781. package/src/Path.ts +9 -1
  782. package/src/PubSub.ts +12 -7
  783. package/src/Queue.ts +5 -37
  784. package/src/Random.ts +1 -1
  785. package/src/RcMap.ts +14 -8
  786. package/src/Record.ts +51 -0
  787. package/src/Ref.ts +7 -104
  788. package/src/References.ts +5 -4
  789. package/src/RequestResolver.ts +46 -87
  790. package/src/Resource.ts +1 -1
  791. package/src/Runtime.ts +19 -18
  792. package/src/Schedule.ts +2 -94
  793. package/src/Schema.ts +591 -356
  794. package/src/SchemaAST.ts +20 -9
  795. package/src/SchemaGetter.ts +22 -5
  796. package/src/SchemaIssue.ts +44 -53
  797. package/src/SchemaRepresentation.ts +64 -1
  798. package/src/SchemaTransformation.ts +1 -1
  799. package/src/Scope.ts +12 -2
  800. package/src/ScopedCache.ts +17 -142
  801. package/src/SemVer.ts +1528 -0
  802. package/src/SemVerRange.ts +883 -0
  803. package/src/Sink.ts +6 -2
  804. package/src/Stream.ts +334 -1011
  805. package/src/String.ts +8 -8
  806. package/src/TextDiff.ts +766 -0
  807. package/src/TxHashMap.ts +1 -103
  808. package/src/TxHashSet.ts +48 -753
  809. package/src/ai/AiError.ts +66 -4
  810. package/src/ai/Chat.ts +10 -5
  811. package/src/ai/Decision.ts +49 -1
  812. package/src/ai/DecisionModel.ts +264 -108
  813. package/src/ai/EmbeddingModel.ts +25 -13
  814. package/src/ai/McpClient.ts +1211 -0
  815. package/src/ai/McpClientError.ts +329 -0
  816. package/src/ai/McpProtocol.ts +2 -2
  817. package/src/ai/McpSchema.ts +153 -35
  818. package/src/ai/McpServer.ts +217 -220
  819. package/src/ai/Prompt.ts +49 -35
  820. package/src/ai/Response.ts +195 -65
  821. package/src/ai/Tool.ts +12 -4
  822. package/src/ai/Toolkit.ts +78 -10
  823. package/src/ai/index.ts +12 -0
  824. package/src/ai/internal/mcpCore.ts +13 -14
  825. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  826. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  827. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  828. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  829. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  830. package/src/ai/internal/mcpProtocol.ts +22 -2
  831. package/src/ai/internal/mcpRuntime.ts +3 -4
  832. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  833. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  834. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  835. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  836. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  837. package/src/cli/CliError.ts +49 -4
  838. package/src/cli/Command.ts +316 -9
  839. package/src/cli/Completions.ts +5 -0
  840. package/src/cli/Flag.ts +117 -0
  841. package/src/cli/GlobalFlag.ts +3 -3
  842. package/src/cli/Param.ts +122 -0
  843. package/src/cli/TerminalCapabilities.ts +156 -0
  844. package/src/cli/index.ts +6 -0
  845. package/src/cli/internal/command.ts +8 -3
  846. package/src/cli/internal/completions/bash.ts +4 -3
  847. package/src/cli/internal/completions/descriptor.ts +11 -1
  848. package/src/cli/internal/completions/fish.ts +10 -8
  849. package/src/cli/internal/completions/powershell.ts +23 -14
  850. package/src/cli/internal/completions/zsh.ts +8 -5
  851. package/src/cli/internal/formatter.ts +18 -0
  852. package/src/cli/internal/lexer.ts +12 -5
  853. package/src/cli/internal/parser.ts +31 -11
  854. package/src/cluster/ClusterCron.ts +94 -35
  855. package/src/cluster/ClusterMetrics.ts +149 -7
  856. package/src/cluster/ClusterWorkflowEngine.ts +84 -41
  857. package/src/cluster/Entity.ts +4 -0
  858. package/src/cluster/MessageStorage.ts +7 -0
  859. package/src/cluster/Runners.ts +76 -25
  860. package/src/cluster/Sharding.ts +118 -38
  861. package/src/cluster/ShardingConfig.ts +15 -0
  862. package/src/cluster/SqlMessageStorage.ts +58 -55
  863. package/src/cluster/SqlRunnerStorage.ts +10 -4
  864. package/src/cluster/internal/entityManager.ts +80 -10
  865. package/src/devtools/DevTools.ts +3 -2
  866. package/src/devtools/DevToolsClient.ts +27 -10
  867. package/src/encoding/Base64Url.ts +31 -0
  868. package/src/encoding/Ini.ts +3 -0
  869. package/src/encoding/JsonArray.ts +849 -0
  870. package/src/encoding/Ndjson.ts +211 -20
  871. package/src/encoding/SchemaBinary.ts +14 -48
  872. package/src/encoding/Tar.ts +1417 -0
  873. package/src/encoding/Toml.ts +3 -3
  874. package/src/encoding/Xml.ts +2037 -0
  875. package/src/encoding/Yaml.ts +108 -36
  876. package/src/encoding/Zip.ts +1558 -0
  877. package/src/encoding/index.ts +24 -0
  878. package/src/eventlog/EventJournal.ts +611 -227
  879. package/src/eventlog/EventLog.ts +496 -196
  880. package/src/eventlog/EventLogEncryption.ts +128 -43
  881. package/src/eventlog/EventLogMessage.ts +62 -11
  882. package/src/eventlog/EventLogRemote.ts +77 -21
  883. package/src/eventlog/EventLogServer.ts +162 -20
  884. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  885. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  886. package/src/eventlog/EventRow.ts +706 -0
  887. package/src/eventlog/SqlEventJournal.ts +453 -173
  888. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  889. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  890. package/src/eventlog/index.ts +6 -0
  891. package/src/eventlog/internal/conflicts.ts +123 -0
  892. package/src/graphql/GraphQLClientError.ts +5 -12
  893. package/src/graphql/GraphQLProtocol.ts +12 -9
  894. package/src/graphql/GraphQLResolver.ts +90 -239
  895. package/src/http/FetchHttpClient.ts +56 -6
  896. package/src/http/FindMyWay/internal/router.ts +11 -0
  897. package/src/http/Headers.ts +337 -154
  898. package/src/http/HttpClient.ts +126 -135
  899. package/src/http/HttpClientRequest.ts +142 -4
  900. package/src/http/HttpClientResponse.ts +71 -0
  901. package/src/http/HttpEffect.ts +25 -33
  902. package/src/http/HttpIncomingMessage.ts +3 -23
  903. package/src/http/HttpMiddleware.ts +180 -23
  904. package/src/http/HttpRouter.ts +8 -2
  905. package/src/http/HttpServerError.ts +6 -3
  906. package/src/http/HttpServerRequest.ts +71 -12
  907. package/src/http/HttpServerResponse.ts +49 -23
  908. package/src/http/HttpStaticServer.ts +25 -9
  909. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  910. package/src/http/MultipartParser/internal/headers.ts +4 -16
  911. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  912. package/src/http/Url.ts +6 -1
  913. package/src/http/internal/decompression.ts +26 -17
  914. package/src/http/internal/lazyStream.ts +25 -0
  915. package/src/http/internal/requestState.ts +33 -0
  916. package/src/http/internal/webResponse.ts +20 -0
  917. package/src/http-api/HttpApi.ts +1 -1
  918. package/src/http-api/HttpApiBuilder.ts +151 -23
  919. package/src/http-api/HttpApiClient.ts +158 -30
  920. package/src/http-api/HttpApiEndpoint.ts +144 -33
  921. package/src/http-api/HttpApiError.ts +55 -0
  922. package/src/http-api/HttpApiScalar.ts +4 -3
  923. package/src/http-api/HttpApiSchema.ts +275 -13
  924. package/src/http-api/HttpApiSwagger.ts +11 -4
  925. package/src/http-api/HttpApiTest.ts +33 -9
  926. package/src/http-api/OpenApi.ts +84 -42
  927. package/src/http-api/internal/path.ts +40 -12
  928. package/src/index.ts +24 -0
  929. package/src/internal/core.ts +1 -1
  930. package/src/internal/dateTime.ts +20 -7
  931. package/src/internal/effect.ts +120 -84
  932. package/src/internal/hashMap.ts +2 -2
  933. package/src/internal/hydration.ts +15 -0
  934. package/src/internal/inflate.ts +710 -0
  935. package/src/internal/record.ts +6 -0
  936. package/src/internal/request.ts +21 -6
  937. package/src/internal/schedule.ts +20 -39
  938. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  939. package/src/internal/schema/interpreter.ts +58 -45
  940. package/src/internal/schema/standardSchema.ts +32 -30
  941. package/src/internal/schema/toCodeDocument.ts +8 -3
  942. package/src/internal/schema/toCodec.ts +116 -1
  943. package/src/internal/schema/toFormatter.ts +6 -6
  944. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  945. package/src/internal/trie.ts +1 -3
  946. package/src/internal/uuid.ts +15 -10
  947. package/src/internal/version.ts +1 -1
  948. package/src/net/NetAddress.ts +2 -9
  949. package/src/observability/OtlpExporter.ts +5 -12
  950. package/src/observability/OtlpMetrics.ts +5 -3
  951. package/src/observability/OtlpResource.ts +16 -6
  952. package/src/observability/OtlpSerialization.ts +17 -3
  953. package/src/observability/internal/protobuf.ts +2 -10
  954. package/src/persistence/PersistedCache.ts +3 -1
  955. package/src/persistence/PersistedQueue.ts +223 -153
  956. package/src/persistence/Persistence.ts +64 -30
  957. package/src/persistence/RateLimiter.ts +18 -21
  958. package/src/persistence/UserDirectories.ts +273 -0
  959. package/src/persistence/index.ts +6 -0
  960. package/src/process/ChildProcess.ts +2 -1
  961. package/src/reactivity/AsyncResult.ts +4 -38
  962. package/src/reactivity/Atom.ts +134 -166
  963. package/src/reactivity/AtomHttpApi.ts +10 -16
  964. package/src/reactivity/AtomRegistry.ts +50 -29
  965. package/src/reactivity/AtomRpc.ts +6 -22
  966. package/src/reactivity/Hydration.ts +53 -12
  967. package/src/reactivity/Reactivity.ts +97 -39
  968. package/src/rpc/Rpc.ts +21 -0
  969. package/src/rpc/RpcClient.ts +279 -103
  970. package/src/rpc/RpcSerialization.ts +21 -5
  971. package/src/rpc/RpcServer.ts +11 -20
  972. package/src/schema/VariantSchema.ts +86 -22
  973. package/src/socket/Socket.ts +45 -20
  974. package/src/sql/Migrator.ts +19 -9
  975. package/src/sql/SqlClient.ts +266 -29
  976. package/src/sql/SqlResolver.ts +9 -0
  977. package/src/sql/Statement.ts +35 -8
  978. package/src/testing/TestClock.ts +4 -1
  979. package/src/testing/TestSchema.ts +9 -3
  980. package/src/workflow/WorkflowEngine.ts +34 -10
  981. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  982. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  983. package/dist/http/internal/preResponseHandler.js +0 -14
  984. package/dist/http/internal/preResponseHandler.js.map +0 -1
  985. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -0,0 +1,706 @@
1
+ /**
2
+ * Mutable rows that converge across event-log replicas.
3
+ *
4
+ * Each row type has one event with `set`, `patch` and `remove` payloads, keyed
5
+ * by one or more of its fields. Pass the result of `make` to `EventGroup.add`.
6
+ * Its `set`, `patch` and `remove` constructors return `{ event, payload }`,
7
+ * which spreads into `EventLog.write` and serves as an item of
8
+ * `EventLog.writeMany` or an argument of an `EventLog.makeClient` client.
9
+ *
10
+ * `handler` resolves conflicts per top-level field and calls at most one
11
+ * storage callback. Replicas converge to the result of applying entries in
12
+ * id order. `compaction` drops entries that newer ones shadow.
13
+ *
14
+ * **Details**
15
+ *
16
+ * Replay decodes entries and stored conflicts with the current row schema,
17
+ * which must accept every encoding previously written:
18
+ *
19
+ * - New fields must accept absence, for example with
20
+ * `Schema.withDecodingDefaultKey`. Nullable fields alone reject old `set`
21
+ * entries. Patches never apply defaults.
22
+ * - Removing a field is safe. Old entries decode without it.
23
+ * - To change a field's type, keep its encoded type and change its decoded
24
+ * type with a transformation, such as `Schema.NumberFromString` for a field
25
+ * that used to be a string.
26
+ * - Making a field required, renaming it, narrowing its type, changing its
27
+ * encoded type or changing the key breaks old entries. That includes
28
+ * widening a field to a union of its old and new types, because union
29
+ * encodings are tagged. A rename keeps old entries readable only if the
30
+ * field has an explicit `SchemaBinary.fieldId`.
31
+ * - Key-field schemas must decode written values to ones with the same
32
+ * primary key, since replicas derive the key from decoded values.
33
+ *
34
+ * Conflicts are scoped to one row; parent removal does not resolve concurrent
35
+ * child writes. For cascading deletion, retain a removed-parent marker and
36
+ * delete its children in the parent `remove` callback. The `remove` callback
37
+ * writes the marker even when the parent was never stored, since compaction
38
+ * or a newer `remove` can skip its `set`, and the marker must not depend on
39
+ * the old row. A parent `patch` treats a marker as a missing row. Child `set`
40
+ * and `patch` callbacks must skip marked parents but allow parents not yet
41
+ * received. Make the parent id part of the child key, as in
42
+ * `fields: ["parentId", "id"]`, so a child cannot move between parents. This
43
+ * converges only if parent deletion is final (no key reuse). Queries must
44
+ * exclude marked parents. Retain markers unless the app defines a safe cutoff
45
+ * for removing them.
46
+ *
47
+ * **Example** (Syncing grocery rows)
48
+ *
49
+ * ```ts
50
+ * import { Effect, Schema } from "effect"
51
+ * import { EventGroup, EventLog, EventRow } from "effect/eventlog"
52
+ *
53
+ * const Grocery = EventRow.make("grocery", {
54
+ * key: "id",
55
+ * schema: Schema.Struct({
56
+ * id: Schema.String,
57
+ * name: Schema.String,
58
+ * completed: Schema.Boolean
59
+ * })
60
+ * })
61
+ *
62
+ * const Groceries = EventGroup.empty.add(Grocery)
63
+ *
64
+ * const store = new Map<string, typeof Grocery.schema.Type>()
65
+ *
66
+ * export const GroceriesLive = EventLog.group(Groceries, (handlers) =>
67
+ * handlers.handle(
68
+ * "grocery",
69
+ * EventRow.handler(Grocery, {
70
+ * set: (row) => Effect.sync(() => store.set(row.id, row)),
71
+ * patch: (id, fields) =>
72
+ * Effect.sync(() => {
73
+ * const row = store.get(id)
74
+ * if (row !== undefined) store.set(id, { ...row, ...fields })
75
+ * }),
76
+ * remove: (id) => Effect.sync(() => store.delete(id))
77
+ * })
78
+ * ))
79
+ *
80
+ * export const complete = Effect.fnUntraced(function*(id: string) {
81
+ * const log = yield* EventLog.EventLog
82
+ * yield* log.write({
83
+ * schema: EventLog.schema(Groceries),
84
+ * ...Grocery.patch(id, { completed: true })
85
+ * })
86
+ * })
87
+ * ```
88
+ *
89
+ * **Example** (Evolving a row schema)
90
+ *
91
+ * ```ts import.meta.vitest
92
+ * import { Effect, Schema } from "effect"
93
+ * import { EventGroup, EventRow } from "effect/eventlog"
94
+ *
95
+ * const ItemV1 = EventRow.make("item", {
96
+ * key: "id",
97
+ * schema: Schema.Struct({ id: Schema.String, quantity: Schema.String })
98
+ * })
99
+ *
100
+ * // Adds a nullable field and reads the old string quantity as a number.
101
+ * const ItemV2 = EventRow.make("item", {
102
+ * key: "id",
103
+ * schema: Schema.Struct({
104
+ * id: Schema.String,
105
+ * quantity: Schema.NumberFromString,
106
+ * note: Schema.NullOr(Schema.String).pipe(
107
+ * Schema.withDecodingDefaultKey(Effect.succeed(null))
108
+ * )
109
+ * })
110
+ * })
111
+ *
112
+ * const v1 = EventGroup.empty.add(ItemV1).events.item.payloadSchemaBinary
113
+ * const v2 = EventGroup.empty.add(ItemV2).events.item.payloadSchemaBinary
114
+ *
115
+ * const written = Schema.encodeUnknownSync(v1)(ItemV1.set({ id: "a", quantity: "3" }).payload)
116
+ * const decoded = Schema.decodeUnknownSync(v2)(written)
117
+ * decoded // => { _tag: "set", row: { id: "a", quantity: 3, note: null } }
118
+ * ```
119
+ *
120
+ * @stability unstable
121
+ * @since 4.0.6
122
+ */
123
+ import * as Context from "../Context.ts"
124
+ import * as Effect from "../Effect.ts"
125
+ import * as SchemaBinary from "../encoding/SchemaBinary.ts"
126
+ import * as Layer from "../Layer.ts"
127
+ import * as Result from "../Result.ts"
128
+ import * as Schema from "../Schema.ts"
129
+ import * as SchemaGetter from "../SchemaGetter.ts"
130
+ import * as SchemaIssue from "../SchemaIssue.ts"
131
+ import * as SchemaParser from "../SchemaParser.ts"
132
+ import * as Struct from "../Struct.ts"
133
+ import type * as Event from "./Event.ts"
134
+ import type * as EventGroup from "./EventGroup.ts"
135
+ import { Entry } from "./EventJournal.ts"
136
+ import * as EventLog from "./EventLog.ts"
137
+ import type { StoreId } from "./EventLogMessage.ts"
138
+
139
+ /**
140
+ * Required fields that can be part of a declared row key.
141
+ *
142
+ * @stability unstable
143
+ * @category utility types
144
+ * @since 4.0.6
145
+ */
146
+ export type RequiredField<Fields extends Schema.Struct.Fields> =
147
+ & {
148
+ [K in keyof Fields]: Fields[K] extends { readonly "~type.optionality": "optional" } ? never : K
149
+ }[keyof Fields]
150
+ & string
151
+
152
+ /**
153
+ * Values of the declared key fields of a row.
154
+ *
155
+ * @stability unstable
156
+ * @category utility types
157
+ * @since 4.0.6
158
+ */
159
+ export type KeyValues<Fields extends Schema.Struct.Fields, Names extends keyof Fields> = {
160
+ readonly [K in Names]: Schema.Schema.Type<Fields[K]>
161
+ }
162
+
163
+ /**
164
+ * Required fields whose values are all strings, all numbers or all
165
+ * `Uint8Array`s, so their JSON encodings form keys without `derive`.
166
+ *
167
+ * @stability unstable
168
+ * @category utility types
169
+ * @since 4.0.6
170
+ */
171
+ export type DefaultKeyField<Fields extends Schema.Struct.Fields> = {
172
+ [K in RequiredField<Fields>]: [Schema.Schema.Type<Fields[K]>] extends [string] ? K
173
+ : [Schema.Schema.Type<Fields[K]>] extends [number] ? K
174
+ : [Schema.Schema.Type<Fields[K]>] extends [Uint8Array] ? K
175
+ : never
176
+ }[RequiredField<Fields>]
177
+
178
+ /**
179
+ * A row key declared from one or more fields.
180
+ *
181
+ * **Details**
182
+ *
183
+ * The primary key is the result of `derive`, which must be deterministic and
184
+ * unique per row. Without it, the primary key is the JSON tuple of the
185
+ * fields' JSON encodings, in declaration order, which needs every field to be
186
+ * a {@link DefaultKeyField}. Other fields can collide in JSON, such as `null`
187
+ * and `undefined`, so they require `derive`.
188
+ *
189
+ * @stability unstable
190
+ * @category models
191
+ * @since 4.0.6
192
+ */
193
+ export type KeyDeclaration<Fields extends Schema.Struct.Fields, Names extends RequiredField<Fields>> =
194
+ & { readonly fields: readonly [Names, ...Array<Names>] }
195
+ & ([Names] extends [DefaultKeyField<Fields>] ?
196
+ { readonly derive?: ((fields: KeyValues<Fields, Names>) => string) | undefined }
197
+ : { readonly derive: (fields: KeyValues<Fields, Names>) => string })
198
+
199
+ /**
200
+ * Primary key type of a row: the key value for a string-typed single-field
201
+ * key, and `string` otherwise.
202
+ *
203
+ * @stability unstable
204
+ * @category utility types
205
+ * @since 4.0.6
206
+ */
207
+ export type PrimaryKey<KeySchema extends Schema.Constraint> = Schema.Schema.Type<KeySchema> extends string
208
+ ? Schema.Schema.Type<KeySchema>
209
+ : string
210
+
211
+ /**
212
+ * Optional non-key fields of a `patch` payload.
213
+ *
214
+ * @stability unstable
215
+ * @category utility types
216
+ * @since 4.0.6
217
+ */
218
+ export type PatchFields<Fields extends Schema.Struct.Fields, Key extends keyof Fields> = {
219
+ readonly [K in Exclude<keyof Fields, Key>]: Schema.optionalKey<Fields[K]>
220
+ }
221
+
222
+ /**
223
+ * Schema of a row event's payload, derived from the row schema.
224
+ *
225
+ * **Details**
226
+ *
227
+ * - `set` carries the full row, validated by the row schema.
228
+ * - `patch` carries the row key and the fields to write. An absent field is
229
+ * not written. The key itself cannot be patched.
230
+ * - `remove` carries the row key.
231
+ *
232
+ * @stability unstable
233
+ * @category models
234
+ * @since 4.0.6
235
+ */
236
+ export type PayloadSchema<
237
+ Fields extends Schema.Struct.Fields,
238
+ Key extends keyof Fields,
239
+ KeySchema extends Schema.Constraint = Fields[Key]
240
+ > = Schema.Union<
241
+ readonly [
242
+ Schema.TaggedStruct<"set", { readonly row: Schema.Struct<Fields> }>,
243
+ Schema.TaggedStruct<"patch", {
244
+ readonly key: KeySchema
245
+ readonly fields: Schema.Struct<PatchFields<Fields, Key>>
246
+ }>,
247
+ Schema.TaggedStruct<"remove", { readonly key: KeySchema }>
248
+ ]
249
+ >
250
+
251
+ /**
252
+ * Decoded payload of a row event.
253
+ *
254
+ * @stability unstable
255
+ * @category models
256
+ * @since 4.0.6
257
+ */
258
+ export type Payload<
259
+ Fields extends Schema.Struct.Fields,
260
+ Key extends keyof Fields,
261
+ KeySchema extends Schema.Constraint = Fields[Key]
262
+ > = Schema.Schema.Type<PayloadSchema<Fields, Key, KeySchema>>
263
+
264
+ /**
265
+ * A row event to write, as returned by the `set`, `patch` and `remove`
266
+ * constructors of a row.
267
+ *
268
+ * @stability unstable
269
+ * @category models
270
+ * @since 4.0.6
271
+ */
272
+ export type Write<
273
+ Tag extends string,
274
+ Fields extends Schema.Struct.Fields,
275
+ Key extends keyof Fields,
276
+ KeySchema extends Schema.Constraint = Fields[Key]
277
+ > = {
278
+ readonly event: Tag
279
+ readonly payload: Payload<Fields, Key, KeySchema>
280
+ }
281
+
282
+ /**
283
+ * A row type that syncs through an `EventLog`.
284
+ *
285
+ * **Details**
286
+ *
287
+ * Includes `EventGroup.add` options, the row schema, its key fields and
288
+ * constructors for the events to write. The row key is the event primary key;
289
+ * success is `void`.
290
+ *
291
+ * `Key` is the union of the key fields. `KeySchema` is the schema of the key
292
+ * in `patch` and `remove` payloads and callbacks: the field's schema for a
293
+ * single-field key, and a struct of the key fields for a declared key.
294
+ *
295
+ * @stability unstable
296
+ * @category models
297
+ * @since 4.0.6
298
+ */
299
+ export interface EventRow<
300
+ out Tag extends string,
301
+ in out Fields extends Schema.Struct.Fields,
302
+ in out Key extends keyof Fields & string,
303
+ in out Error extends Schema.Top = typeof Schema.Never,
304
+ in out KeySchema extends Schema.Constraint = Fields[Key]
305
+ > {
306
+ readonly tag: Tag
307
+ readonly keyFields: ReadonlyArray<Key>
308
+ readonly schema: Schema.Struct<Fields>
309
+ readonly primaryKey: (payload: Payload<Fields, Key, KeySchema>) => string
310
+ readonly payload: PayloadSchema<Fields, Key, KeySchema>
311
+ readonly success: typeof Schema.Void
312
+ readonly error: Error
313
+
314
+ /**
315
+ * Computes the primary key of a row from its key fields.
316
+ */
317
+ readonly keyOf: (fields: KeyValues<Fields, Key>) => PrimaryKey<KeySchema>
318
+
319
+ /**
320
+ * Replaces the whole row, creating it if missing.
321
+ */
322
+ readonly set: (row: Schema.Struct<Fields>["Type"]) => Write<Tag, Fields, Key, KeySchema>
323
+
324
+ /**
325
+ * Writes fields of an existing row.
326
+ *
327
+ * **Details**
328
+ *
329
+ * A patch on a missing row does nothing. To clear a value, use a nullable
330
+ * field and write `null`.
331
+ *
332
+ * Absent fields stay unwritten, even with decoding defaults. Values whose
333
+ * encoding omits the key, such as `Option.none()` for
334
+ * `Schema.OptionFromOptionalKey`, fail encoding: replicas cannot distinguish
335
+ * them from unwritten fields.
336
+ */
337
+ readonly patch: (
338
+ key: Schema.Schema.Type<KeySchema>,
339
+ fields: Schema.Struct<PatchFields<Fields, Key>>["Type"]
340
+ ) => Write<Tag, Fields, Key, KeySchema>
341
+
342
+ /**
343
+ * Deletes the row.
344
+ */
345
+ readonly remove: (key: Schema.Schema.Type<KeySchema>) => Write<Tag, Fields, Key, KeySchema>
346
+ }
347
+
348
+ /**
349
+ * Defines a row type as a single event.
350
+ *
351
+ * **Details**
352
+ *
353
+ * `key` names a required field, or declares required fields with an
354
+ * optional `derive` function. `patch`, `remove` and the handler callbacks take
355
+ * the key as typed values: the field's value for a single field, and a struct
356
+ * of the fields for a declaration. Key fields cannot be patched. To move a
357
+ * row, remove it and set it again.
358
+ *
359
+ * A single-field key must be a {@link DefaultKeyField}. Declare other fields
360
+ * with a `derive` function.
361
+ *
362
+ * `keyOf` computes the primary key that conflicts are grouped by: the value
363
+ * of a string single-field key, the result of `derive`, or else the JSON
364
+ * tuple of the key fields' JSON encodings. `-0` and `0` are the same key.
365
+ *
366
+ * Last-writer-wins applies to top-level fields. Nested values are atomic, so
367
+ * concurrent updates within one nested value do not merge.
368
+ *
369
+ * `error` is the error schema of the event. Handler callbacks can fail with it.
370
+ *
371
+ * **Gotchas**
372
+ *
373
+ * Do not compact row events with `EventLog.groupCompaction` or
374
+ * `EventLog.groupBatchCompaction`. Compaction runs before stored conflicts
375
+ * are read, so merging row ops loses or misapplies writes. Use
376
+ * {@link compaction}, which only drops entries that newer ones shadow.
377
+ *
378
+ * For multi-row operations, use `EventLog.writeMany` with one op per row.
379
+ *
380
+ * @stability unstable
381
+ * @category constructors
382
+ * @since 4.0.6
383
+ */
384
+ export const make = <
385
+ const Tag extends string,
386
+ Fields extends Schema.Struct.Fields,
387
+ const Key extends DefaultKeyField<Fields> = never,
388
+ const Declared extends RequiredField<Fields> = never,
389
+ Error extends Schema.Top = typeof Schema.Never
390
+ >(tag: Tag, options: {
391
+ readonly key: Key | KeyDeclaration<Fields, Declared>
392
+ readonly schema: Schema.Struct<Fields>
393
+ readonly error?: Error | undefined
394
+ }): EventRow<
395
+ Tag,
396
+ Fields,
397
+ // A declaration also infers `Key`, as its constraint, so `Declared` decides.
398
+ // `NoInfer` keeps a contextual return type from inferring `Declared`.
399
+ [NoInfer<Declared>] extends [never] ? NoInfer<Key> : NoInfer<Declared>,
400
+ Error,
401
+ [NoInfer<Declared>] extends [never] ? Fields[NoInfer<Key>]
402
+ : Schema.Struct<{ readonly [K in NoInfer<Declared>]: Fields[K] }>
403
+ > => {
404
+ const fields = options.schema.fields
405
+ const key = typeof options.key === "string"
406
+ ? scalarKey(options.key, fields[options.key])
407
+ : declaredKey(options.key as KeyDeclaration<any, string>, fields)
408
+ const patchFields: Record<string, Schema.Constraint> = {}
409
+ for (const name of Object.keys(fields)) {
410
+ if (!key.fields.includes(name)) patchFields[name] = patchField(fields[name])
411
+ }
412
+ const payload = Schema.Union([
413
+ Schema.TaggedStruct("set", { row: options.schema }),
414
+ Schema.TaggedStruct("patch", { key: key.schema, fields: Schema.Struct(patchFields) }),
415
+ Schema.TaggedStruct("remove", { key: key.schema })
416
+ ])
417
+ return {
418
+ tag,
419
+ keyFields: key.fields,
420
+ schema: options.schema,
421
+ keyOf: key.primaryKey,
422
+ [keyFromId]: key.fromRow,
423
+ primaryKey: (payload: Op) => key.primaryKey(payload._tag === "set" ? payload.row : key.toValues(payload.key)),
424
+ payload,
425
+ success: Schema.Void,
426
+ error: options.error ?? Schema.Never,
427
+ set: (row: unknown) => ({ event: tag, payload: { _tag: "set", row } }),
428
+ patch: (key: unknown, fields: unknown) => ({ event: tag, payload: { _tag: "patch", key, fields } }),
429
+ remove: (key: unknown) => ({ event: tag, payload: { _tag: "remove", key } })
430
+ } as any
431
+ }
432
+
433
+ /**
434
+ * Builds the handler for a row event, to pass to `handlers.handle`.
435
+ *
436
+ * **Details**
437
+ *
438
+ * Resolves newer conflicts in id order and calls at most one callback with
439
+ * typed values and key, never conflicts.
440
+ *
441
+ * Newer writes take precedence per top-level field. Empty patches and entries
442
+ * with nothing left to write skip the callback but are still journaled and synced.
443
+ * A late `set` retains newer patches, including when the row is missing.
444
+ *
445
+ * Decodes stored entry bytes so local writes and replay pass the same values
446
+ * to callbacks, stripping keys outside the schema at any depth. Requires the
447
+ * payload schema's decoding services, plus any services the callbacks require.
448
+ * Callbacks may fail with the event's error type; success is always `void`.
449
+ *
450
+ * **Gotchas**
451
+ *
452
+ * Convergence requires this callback contract:
453
+ *
454
+ * - `set` replaces the whole row, creating it if it is missing.
455
+ * - `patch` updates an existing row and does nothing if the row is missing.
456
+ * Upserting can resurrect removed rows on only some replicas.
457
+ * - `remove` is idempotent.
458
+ *
459
+ * @stability unstable
460
+ * @category handlers
461
+ * @since 4.0.6
462
+ */
463
+ export const handler = <
464
+ Tag extends string,
465
+ Fields extends Schema.Struct.Fields,
466
+ Key extends keyof Fields & string,
467
+ Error extends Schema.Top,
468
+ KeySchema extends Schema.Constraint,
469
+ RSet = never,
470
+ RPatch = never,
471
+ RRemove = never
472
+ >(
473
+ row: EventRow<Tag, Fields, Key, Error, KeySchema>,
474
+ callbacks: {
475
+ readonly set: (
476
+ row: Schema.Struct<Fields>["Type"],
477
+ key: Schema.Schema.Type<KeySchema>
478
+ ) => Effect.Effect<unknown, Error["Type"], RSet>
479
+ readonly patch: (
480
+ key: Schema.Schema.Type<KeySchema>,
481
+ fields: Schema.Struct<PatchFields<Fields, Key>>["Type"]
482
+ ) => Effect.Effect<unknown, Error["Type"], RPatch>
483
+ readonly remove: (key: Schema.Schema.Type<KeySchema>) => Effect.Effect<unknown, Error["Type"], RRemove>
484
+ }
485
+ ): (options: {
486
+ readonly storeId: StoreId
487
+ readonly payload: Payload<Fields, Key, KeySchema>
488
+ readonly entry: Entry
489
+ readonly conflicts: ReadonlyArray<{
490
+ readonly entry: Entry
491
+ readonly payload: Payload<Fields, Key, KeySchema>
492
+ }>
493
+ }) => Effect.Effect<void, Error["Type"], RSet | RPatch | RRemove | DecodingServices<Fields, Key, KeySchema>> => {
494
+ const decode = Schema.decodeUnknownEffect(SchemaBinary.toCodec(row.payload))
495
+ const keyFrom: RowKey["fromRow"] = (row as any)[keyFromId]
496
+ return (options) =>
497
+ Effect.flatMap(
498
+ Effect.orDie(decode(options.entry.payload)),
499
+ (payload): Effect.Effect<unknown, Error["Type"], RSet | RPatch | RRemove> => {
500
+ const op = resolve(payload as Op, options.conflicts as ReadonlyArray<{ readonly payload: Op }>)
501
+ if (op === undefined) return Effect.void
502
+ switch (op._tag) {
503
+ case "set":
504
+ return callbacks.set(op.row as any, keyFrom(op.row) as any)
505
+ case "patch":
506
+ return Object.keys(op.fields).length === 0 ? Effect.void : callbacks.patch(op.key as any, op.fields as any)
507
+ case "remove":
508
+ return callbacks.remove(op.key as any)
509
+ }
510
+ }
511
+ ).pipe(Effect.asVoid)
512
+ }
513
+
514
+ /**
515
+ * Registers a compactor for one row event of a group.
516
+ *
517
+ * **Details**
518
+ *
519
+ * Drops entries superseded within the same remote batch and row by a newer
520
+ * `set` or `remove`. A `patch` is also dropped when newer patches together
521
+ * overwrite all its fields. Kept entries retain their ids and stored conflicts.
522
+ *
523
+ * A `set` or `remove` followed only by patches is kept: without it, the
524
+ * patches would apply to a different row, or to none. Entries that fail to
525
+ * decode are kept.
526
+ *
527
+ * Leaves other events' compactors unchanged. Register one compactor per row
528
+ * event.
529
+ *
530
+ * @stability unstable
531
+ * @category compaction
532
+ * @since 4.0.6
533
+ */
534
+ export const compaction = <
535
+ Events extends Event.Any,
536
+ Tag extends Event.Tag<Events>,
537
+ Fields extends Schema.Struct.Fields,
538
+ Key extends keyof Fields & string,
539
+ Error extends Schema.Top,
540
+ KeySchema extends Schema.Constraint
541
+ >(
542
+ group: EventGroup.EventGroup<Events>,
543
+ row: EventRow<Tag, Fields, Key, Error, KeySchema>
544
+ ): Layer.Layer<never, never, EventLog.Registry | DecodingServices<Fields, Key, KeySchema>> =>
545
+ Layer.effectDiscard(Effect.gen(function*() {
546
+ const registry = yield* EventLog.Registry
547
+ const services = yield* Effect.context<DecodingServices<Fields, Key, KeySchema>>()
548
+ const decode = Schema.decodeUnknownEffect(group.events[row.tag].payloadSchemaBinary)
549
+ yield* registry.registerCompaction({
550
+ events: [row.tag],
551
+ effect: Effect.fnUntraced(function*({ entries, write }) {
552
+ const ops = new Map<Entry, Op>()
553
+ for (const entry of entries) {
554
+ const payload = yield* Effect.result(
555
+ decode(entry.payload).pipe(Effect.updateContext((input) => Context.merge(services, input)))
556
+ ) as Effect.Effect<Result.Result<Op, unknown>>
557
+ if (Result.isSuccess(payload)) ops.set(entry, payload.success)
558
+ }
559
+ const shadowed = shadowedEntries(entries, ops)
560
+ for (const entry of entries) {
561
+ if (!shadowed.has(entry)) yield* write(entry)
562
+ }
563
+ })
564
+ })
565
+ }))
566
+
567
+ const shadowedEntries = (entries: ReadonlyArray<Entry>, ops: ReadonlyMap<Entry, Op>): Set<Entry> => {
568
+ const shadowed = new Set<Entry>()
569
+ const byKey = new Map<string, Array<Entry>>()
570
+ for (const entry of entries) {
571
+ const row = byKey.get(entry.primaryKey)
572
+ if (row === undefined) byKey.set(entry.primaryKey, [entry])
573
+ else row.push(entry)
574
+ }
575
+ for (const row of byKey.values()) {
576
+ row.sort(Entry.Order)
577
+ let replaced = false
578
+ let patched = false
579
+ const written = new Set<string>()
580
+ for (let i = row.length - 1; i >= 0; i--) {
581
+ const op = ops.get(row[i])
582
+ if (op === undefined) continue
583
+ if (op._tag !== "patch") {
584
+ if (replaced) shadowed.add(row[i])
585
+ replaced = true
586
+ continue
587
+ }
588
+ const names = Object.keys(op.fields)
589
+ if (replaced || (patched && names.every((name) => written.has(name)))) shadowed.add(row[i])
590
+ patched = true
591
+ for (const name of names) written.add(name)
592
+ }
593
+ }
594
+ return shadowed
595
+ }
596
+
597
+ const keyFromId = "~effect/eventlog/EventRow/keyFrom"
598
+
599
+ type Row = Readonly<Record<string, unknown>>
600
+
601
+ // How a row's key is carried and derived, for a single key field or a declaration.
602
+ interface RowKey {
603
+ readonly fields: ReadonlyArray<string>
604
+ // Schema of the key in `patch` and `remove` payloads.
605
+ readonly schema: Schema.Constraint
606
+ // The key as payloads and callbacks carry it.
607
+ readonly fromRow: (row: Row) => unknown
608
+ // The key field values a carried key stands for.
609
+ readonly toValues: (key: unknown) => Row
610
+ readonly primaryKey: (values: Row) => string
611
+ }
612
+
613
+ const scalarKey = (name: string, field: Schema.Constraint): RowKey => ({
614
+ fields: [name],
615
+ schema: field,
616
+ fromRow: (row) => row[name],
617
+ toValues: (key) => ({ [name]: key }),
618
+ primaryKey: jsonKey([[name, field]], true)
619
+ })
620
+
621
+ const declaredKey = (declaration: KeyDeclaration<any, string>, fields: Schema.Struct.Fields): RowKey => {
622
+ const names = declaration.fields
623
+ const derive = declaration.derive
624
+ return {
625
+ fields: names,
626
+ schema: Schema.Struct(Struct.pick(fields, names) as Schema.Struct.Fields),
627
+ fromRow: (row) => Struct.pick(row, names),
628
+ toValues: (key) => key as Row,
629
+ primaryKey: derive !== undefined
630
+ ? (row) => derive(Struct.pick(row, names) as any)
631
+ : jsonKey(names.map((name) => [name, fields[name]]), false)
632
+ }
633
+ }
634
+
635
+ // A string single-field key is its own primary key. Otherwise the key is the
636
+ // JSON tuple of the fields' JSON encodings, distinct for distinct values of
637
+ // `DefaultKeyField`s. A field holds one kind of value, so a raw string never
638
+ // meets a tuple from the same field.
639
+ const jsonKey = (fields: ReadonlyArray<readonly [string, Schema.Constraint]>, single: boolean) => {
640
+ let encoders: ReadonlyArray<readonly [string, (value: unknown) => unknown]> | undefined
641
+ return (row: Row): string => {
642
+ if (single && typeof row[fields[0][0]] === "string") return row[fields[0][0]] as string
643
+ encoders ??= fields.map(([name, field]) =>
644
+ [name, Schema.encodeUnknownSync(Schema.toCodecJson(field as Schema.Codec<unknown>))] as const
645
+ )
646
+ return JSON.stringify(encoders.map(([name, encode]) => encode(row[name])))
647
+ }
648
+ }
649
+
650
+ // Run the field codec only for present keys, bypassing missing-key defaults.
651
+ const patchField = (field: Schema.Constraint): Schema.Constraint => {
652
+ const decode = SchemaParser.decodeUnknownEffect(field)
653
+ // The struct wrapper detects encodings that drop a written key.
654
+ const encode = SchemaParser.encodeUnknownEffect(Schema.Struct({ value: field }))
655
+ return Schema.optionalKey(Schema.toEncoded(field)).pipe(Schema.decodeTo(Schema.optionalKey(Schema.toType(field)), {
656
+ decode: SchemaGetter.transformEffect(decode),
657
+ encode: SchemaGetter.transformEffect((value, options) =>
658
+ Effect.flatMap(encode({ value }, options), (encoded) =>
659
+ Object.hasOwn(encoded, "value")
660
+ ? Effect.succeed(encoded.value)
661
+ : Effect.fail(
662
+ new SchemaIssue.Forbidden({ message: "A patch cannot write a value whose encoding omits the key" }, value)
663
+ ))
664
+ )
665
+ }))
666
+ }
667
+
668
+ type DecodingServices<
669
+ Fields extends Schema.Struct.Fields,
670
+ Key extends keyof Fields,
671
+ KeySchema extends Schema.Constraint
672
+ > = PayloadSchema<Fields, Key, KeySchema>["DecodingServices"]
673
+
674
+ type Op =
675
+ | { readonly _tag: "set"; readonly row: Row }
676
+ | { readonly _tag: "patch"; readonly key: unknown; readonly fields: Row }
677
+ | { readonly _tag: "remove"; readonly key: unknown }
678
+
679
+ const compose = (x: Op, y: Op): Op => {
680
+ if (y._tag !== "patch") return y
681
+ switch (x._tag) {
682
+ case "set":
683
+ return { _tag: "set", row: { ...x.row, ...y.fields } }
684
+ case "patch":
685
+ return { _tag: "patch", key: y.key, fields: { ...x.fields, ...y.fields } }
686
+ case "remove":
687
+ return x
688
+ }
689
+ }
690
+
691
+ const resolve = (entry: Op, conflicts: ReadonlyArray<{ readonly payload: Op }>): Op | undefined => {
692
+ if (conflicts.length === 0) return entry
693
+ let newer = conflicts[0].payload
694
+ for (let i = 1; i < conflicts.length; i++) {
695
+ newer = compose(newer, conflicts[i].payload)
696
+ }
697
+ if (newer._tag !== "patch") return undefined
698
+ switch (entry._tag) {
699
+ case "set":
700
+ return { _tag: "set", row: { ...entry.row, ...newer.fields } }
701
+ case "patch":
702
+ return { _tag: "patch", key: entry.key, fields: Struct.omit(entry.fields, Object.keys(newer.fields)) }
703
+ case "remove":
704
+ return entry
705
+ }
706
+ }