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
@@ -1,15 +1,11 @@
1
1
  /**
2
- * SQL-backed persistence for the unstable event-log journal.
3
- *
4
- * This module implements `EventJournal` on top of a `SqlClient`. It stores event
5
- * entries as encoded bytes and stores per-remote sequence metadata in separate
6
- * tables, giving event-log programs a durable journal that can be replayed after
7
- * restart and synchronized with remote journals.
2
+ * SQL-backed event journal with per-remote upload checkpoints.
8
3
  *
9
4
  * @stability unstable
10
5
  * @since 4.0.0
11
6
  */
12
7
  import * as Arr from "../Array.js";
8
+ import * as Clock from "../Clock.js";
13
9
  import * as Effect from "../Effect.js";
14
10
  import * as Uuid from "../internal/uuid.js";
15
11
  import * as Layer from "../Layer.js";
@@ -20,13 +16,26 @@ import * as SqlClient from "../sql/SqlClient.js";
20
16
  import * as SqlError from "../sql/SqlError.js";
21
17
  import * as SqlSchema from "../sql/SqlSchema.js";
22
18
  import * as EventJournal from "./EventJournal.js";
19
+ import { ConflictIndex } from "./internal/conflicts.js";
23
20
  /**
24
21
  * Creates an `EventJournal` backed by a SQL database.
25
22
  *
26
23
  * **Details**
27
24
  *
28
- * The constructor creates the entry and remote metadata tables when needed,
29
- * persists local and remote entries, and uses the configured `SqlClient`.
25
+ * Maintains `entryTable`, `${entryTable}_sequence`, `${entryTable}_sources`,
26
+ * `${remotesTable}_checkpoints` and `remoteCursorsTable` (default
27
+ * `${remotesTable}_cursors`) using the configured `SqlClient`.
28
+ *
29
+ * **Gotchas**
30
+ *
31
+ * Creating or migrating the schema requires a writable connection. Migrated
32
+ * databases can be reopened read-only.
33
+ *
34
+ * Journals from earlier releases keep one `remotesTable` row per entry per
35
+ * remote. Opening one replaces those rows with entry sources and drops the
36
+ * table; an entry known to several remotes keeps one of them as its source.
37
+ *
38
+ * Upload acknowledgements do not advance past unseen entries.
30
39
  *
31
40
  * @stability unstable
32
41
  * @category constructors
@@ -36,95 +45,245 @@ export const make = options => Effect.gen(function* () {
36
45
  const sql = (yield* SqlClient.SqlClient).withoutTransforms();
37
46
  const entryTable = options?.entryTable ?? "effect_event_journal";
38
47
  const remotesTable = options?.remotesTable ?? "effect_event_remotes";
48
+ const remoteCursorsTable = options?.remoteCursorsTable ?? `${remotesTable}_cursors`;
49
+ const sequenceTable = `${entryTable}_sequence`;
50
+ const sourcesTable = `${entryTable}_sources`;
51
+ const checkpointsTable = `${remotesTable}_checkpoints`;
39
52
  const entryTableSql = sql(entryTable);
40
53
  const remotesTableSql = sql(remotesTable);
41
- yield* sql.onDialectOrElse({
42
- pg: () => sql`
43
- CREATE TABLE IF NOT EXISTS ${entryTableSql} (
44
- id BYTEA PRIMARY KEY,
45
- event TEXT NOT NULL,
46
- primary_key TEXT NOT NULL,
47
- payload BYTEA NOT NULL,
48
- timestamp BIGINT NOT NULL
49
- )`,
50
- mysql: () => sql`
51
- CREATE TABLE IF NOT EXISTS ${entryTableSql} (
52
- id BINARY(16) PRIMARY KEY,
53
- event TEXT NOT NULL,
54
- primary_key TEXT NOT NULL,
55
- payload BLOB NOT NULL,
56
- timestamp BIGINT NOT NULL
57
- )`,
58
- mssql: () => sql`
59
- CREATE TABLE IF NOT EXISTS ${entryTableSql} (
60
- id UNIQUEIDENTIFIER PRIMARY KEY,
61
- event NVARCHAR(MAX) NOT NULL,
62
- primary_key NVARCHAR(MAX) NOT NULL,
63
- payload VARBINARY(MAX) NOT NULL,
64
- timestamp BIGINT NOT NULL
65
- )`,
66
- orElse: () => sql`
67
- CREATE TABLE IF NOT EXISTS ${entryTableSql} (
68
- id BLOB PRIMARY KEY,
69
- event TEXT NOT NULL,
70
- primary_key TEXT NOT NULL,
71
- payload BLOB NOT NULL,
72
- timestamp INTEGER NOT NULL
73
- )`
74
- }).pipe(withTracerDisabled);
75
- yield* sql.onDialectOrElse({
76
- pg: () => sql`
77
- CREATE TABLE IF NOT EXISTS ${remotesTableSql} (
78
- remote_id BYTEA NOT NULL,
79
- entry_id BYTEA NOT NULL,
80
- sequence INT NOT NULL,
81
- PRIMARY KEY (remote_id, entry_id)
82
- )`,
83
- mysql: () => sql`
84
- CREATE TABLE IF NOT EXISTS ${remotesTableSql} (
85
- remote_id BINARY(16) NOT NULL,
86
- entry_id BINARY(16) NOT NULL,
87
- sequence INT NOT NULL,
88
- PRIMARY KEY (remote_id, entry_id)
89
- )`,
90
- mssql: () => sql`
91
- CREATE TABLE IF NOT EXISTS ${remotesTableSql} (
92
- remote_id UNIQUEIDENTIFIER NOT NULL,
93
- entry_id UNIQUEIDENTIFIER NOT NULL,
94
- sequence INT NOT NULL,
95
- PRIMARY KEY (remote_id, entry_id)
96
- )`,
97
- orElse: () => sql`
98
- CREATE TABLE IF NOT EXISTS ${remotesTableSql} (
99
- remote_id BLOB NOT NULL,
100
- entry_id BLOB NOT NULL,
101
- sequence INT NOT NULL,
102
- PRIMARY KEY (remote_id, entry_id)
103
- )`
54
+ const sequenceTableSql = sql(sequenceTable);
55
+ const sourcesTableSql = sql(sourcesTable);
56
+ const checkpointsTableSql = sql(checkpointsTable);
57
+ const remoteCursorsTableSql = sql(remoteCursorsTable);
58
+ // to_regclass folds unquoted names to lowercase, so pass the quoted identifier.
59
+ const quoted = table => sql`${sql(table)}`.compile(true)[0];
60
+ const tableExists = table => sql.onDialectOrElse({
61
+ // Reading the catalog refreshes cached names after concurrent DDL.
62
+ pg: () => sql`SELECT 1 AS found FROM pg_class WHERE oid = to_regclass(${quoted(table)})`,
63
+ mysql: () => sql`SELECT 1 AS found FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = ${table}`,
64
+ mssql: () => sql`SELECT 1 AS found WHERE OBJECT_ID(${table}, 'U') IS NOT NULL`,
65
+ orElse: () => sql`SELECT 1 AS found FROM sqlite_master WHERE type = 'table' AND name = ${table}`
66
+ }).pipe(Effect.map(rows => rows.length > 0));
67
+ const createSchema = Effect.gen(function* () {
68
+ const eventIndex = sql(`${entryTable}_event_idx`);
69
+ const timestampIndex = sql(`${entryTable}_timestamp_idx`);
70
+ yield* sql.onDialectOrElse({
71
+ pg: () => sql`
72
+ CREATE TABLE IF NOT EXISTS ${entryTableSql} (
73
+ id BYTEA PRIMARY KEY,
74
+ event TEXT NOT NULL,
75
+ primary_key TEXT NOT NULL,
76
+ payload BYTEA NOT NULL,
77
+ timestamp BIGINT NOT NULL
78
+ )`,
79
+ mysql: () => sql`
80
+ CREATE TABLE IF NOT EXISTS ${entryTableSql} (
81
+ id BINARY(16) PRIMARY KEY,
82
+ event TEXT NOT NULL,
83
+ primary_key TEXT NOT NULL,
84
+ payload BLOB NOT NULL,
85
+ timestamp BIGINT NOT NULL
86
+ )`,
87
+ mssql: () => sql`
88
+ CREATE TABLE IF NOT EXISTS ${entryTableSql} (
89
+ id UNIQUEIDENTIFIER PRIMARY KEY,
90
+ event NVARCHAR(MAX) NOT NULL,
91
+ primary_key NVARCHAR(MAX) NOT NULL,
92
+ payload VARBINARY(MAX) NOT NULL,
93
+ timestamp BIGINT NOT NULL
94
+ )`,
95
+ orElse: () => sql`
96
+ CREATE TABLE IF NOT EXISTS ${entryTableSql} (
97
+ id BLOB PRIMARY KEY,
98
+ event TEXT NOT NULL,
99
+ primary_key TEXT NOT NULL,
100
+ payload BLOB NOT NULL,
101
+ timestamp INTEGER NOT NULL
102
+ )`
103
+ });
104
+ // Insertion sequences let uploads include older entries imported later.
105
+ yield* sql.onDialectOrElse({
106
+ pg: () => sql`
107
+ CREATE TABLE IF NOT EXISTS ${sequenceTableSql} (
108
+ sequence BIGSERIAL PRIMARY KEY,
109
+ entry_id BYTEA NOT NULL UNIQUE
110
+ )`,
111
+ mysql: () => sql`
112
+ CREATE TABLE IF NOT EXISTS ${sequenceTableSql} (
113
+ sequence BIGINT AUTO_INCREMENT PRIMARY KEY,
114
+ entry_id BINARY(16) NOT NULL UNIQUE
115
+ )`,
116
+ mssql: () => sql`
117
+ CREATE TABLE ${sequenceTableSql} (
118
+ sequence BIGINT IDENTITY(1,1) PRIMARY KEY,
119
+ entry_id UNIQUEIDENTIFIER NOT NULL UNIQUE
120
+ )`,
121
+ orElse: () => sql`
122
+ CREATE TABLE IF NOT EXISTS ${sequenceTableSql} (
123
+ sequence INTEGER PRIMARY KEY,
124
+ entry_id BLOB NOT NULL UNIQUE
125
+ )`
126
+ });
127
+ yield* sql.onDialectOrElse({
128
+ pg: () => sql`
129
+ CREATE TABLE IF NOT EXISTS ${checkpointsTableSql} (
130
+ remote_id BYTEA PRIMARY KEY,
131
+ sequence BIGINT NOT NULL
132
+ )`,
133
+ mysql: () => sql`
134
+ CREATE TABLE IF NOT EXISTS ${checkpointsTableSql} (
135
+ remote_id BINARY(16) PRIMARY KEY,
136
+ sequence BIGINT NOT NULL
137
+ )`,
138
+ mssql: () => sql`
139
+ CREATE TABLE ${checkpointsTableSql} (
140
+ remote_id UNIQUEIDENTIFIER PRIMARY KEY,
141
+ sequence BIGINT NOT NULL
142
+ )`,
143
+ orElse: () => sql`
144
+ CREATE TABLE IF NOT EXISTS ${checkpointsTableSql} (
145
+ remote_id BLOB PRIMARY KEY,
146
+ sequence INTEGER NOT NULL
147
+ )`
148
+ });
149
+ yield* sql.onDialectOrElse({
150
+ pg: () => sql`
151
+ CREATE TABLE IF NOT EXISTS ${remoteCursorsTableSql} (
152
+ remote_id BYTEA PRIMARY KEY,
153
+ next_sequence INT NOT NULL
154
+ )`,
155
+ mysql: () => sql`
156
+ CREATE TABLE IF NOT EXISTS ${remoteCursorsTableSql} (
157
+ remote_id BINARY(16) PRIMARY KEY,
158
+ next_sequence INT NOT NULL
159
+ )`,
160
+ mssql: () => sql`
161
+ CREATE TABLE ${remoteCursorsTableSql} (
162
+ remote_id UNIQUEIDENTIFIER PRIMARY KEY,
163
+ next_sequence INT NOT NULL
164
+ )`,
165
+ orElse: () => sql`
166
+ CREATE TABLE IF NOT EXISTS ${remoteCursorsTableSql} (
167
+ remote_id BLOB PRIMARY KEY,
168
+ next_sequence INT NOT NULL
169
+ )`
170
+ });
171
+ // The remote each imported entry came from, so uploads skip it.
172
+ yield* sql.onDialectOrElse({
173
+ pg: () => sql`
174
+ CREATE TABLE IF NOT EXISTS ${sourcesTableSql} (
175
+ entry_id BYTEA PRIMARY KEY,
176
+ remote_id BYTEA NOT NULL
177
+ )`,
178
+ mysql: () => sql`
179
+ CREATE TABLE IF NOT EXISTS ${sourcesTableSql} (
180
+ entry_id BINARY(16) PRIMARY KEY,
181
+ remote_id BINARY(16) NOT NULL
182
+ )`,
183
+ mssql: () => sql`
184
+ CREATE TABLE ${sourcesTableSql} (
185
+ entry_id UNIQUEIDENTIFIER PRIMARY KEY,
186
+ remote_id UNIQUEIDENTIFIER NOT NULL
187
+ )`,
188
+ orElse: () => sql`
189
+ CREATE TABLE IF NOT EXISTS ${sourcesTableSql} (
190
+ entry_id BLOB PRIMARY KEY,
191
+ remote_id BLOB NOT NULL
192
+ )`
193
+ });
194
+ yield* sql.onDialectOrElse({
195
+ // MySQL indexes TEXT columns by prefix only.
196
+ mysql: () => Effect.andThen(sql`CREATE INDEX ${eventIndex} ON ${entryTableSql} (event(191), primary_key(191), timestamp)`, sql`CREATE INDEX ${timestampIndex} ON ${entryTableSql} (timestamp)`),
197
+ // B-tree entries are limited to about 2.7 KB, so index hashes of the
198
+ // unbounded columns.
199
+ pg: () => Effect.andThen(sql`CREATE INDEX IF NOT EXISTS ${eventIndex} ON ${entryTableSql} (md5(event), md5(primary_key), timestamp)`, sql`CREATE INDEX IF NOT EXISTS ${timestampIndex} ON ${entryTableSql} (timestamp)`),
200
+ // NVARCHAR(MAX) columns cannot be index keys.
201
+ mssql: () => sql`CREATE INDEX ${timestampIndex} ON ${entryTableSql} (timestamp)`,
202
+ orElse: () => Effect.andThen(sql`CREATE INDEX IF NOT EXISTS ${eventIndex} ON ${entryTableSql} (event, primary_key, timestamp)`, sql`CREATE INDEX IF NOT EXISTS ${timestampIndex} ON ${entryTableSql} (timestamp)`)
203
+ });
204
+ // Number existing entries in creation order. `WHERE true` keeps SQLite
205
+ // from parsing ON CONFLICT as a join constraint.
206
+ yield* sql`
207
+ INSERT INTO ${sequenceTableSql} (entry_id)
208
+ SELECT id FROM ${entryTableSql} WHERE true ORDER BY timestamp ASC, id ASC
209
+ ON CONFLICT DO NOTHING
210
+ `;
211
+ });
212
+ // Earlier releases kept a remotes row per entry per remote. An entry known
213
+ // to several remotes keeps one of them as its source, and a remote without
214
+ // a cursor resumes after its highest downloaded sequence.
215
+ const importRemotes = Effect.gen(function* () {
216
+ yield* sql`
217
+ INSERT INTO ${sourcesTableSql} (entry_id, remote_id)
218
+ SELECT entry_id, remote_id FROM ${remotesTableSql} WHERE true
219
+ ON CONFLICT DO NOTHING
220
+ `;
221
+ yield* sql`
222
+ INSERT INTO ${remoteCursorsTableSql} (remote_id, next_sequence)
223
+ SELECT remote_id, MAX(sequence) + 1 FROM ${remotesTableSql} GROUP BY remote_id
224
+ ON CONFLICT DO NOTHING
225
+ `;
226
+ yield* sql`DROP TABLE ${remotesTableSql}`;
227
+ });
228
+ // Both steps run in one transaction, so a complete schema has the sources
229
+ // table and no remotes table. Checking that first lets complete databases
230
+ // open read-only; PostgreSQL also locks and rechecks so concurrent opens
231
+ // migrate once.
232
+ const schemaState = Effect.all({
233
+ sources: tableExists(sourcesTable),
234
+ remotes: tableExists(remotesTable)
235
+ });
236
+ const isComplete = state => state.sources && !state.remotes;
237
+ yield* Effect.gen(function* () {
238
+ if (isComplete(yield* schemaState)) return;
239
+ yield* Effect.gen(function* () {
240
+ yield* sql.onDialectOrElse({
241
+ pg: () => sql`SELECT pg_advisory_xact_lock(hashtext(${quoted(entryTable)}))`,
242
+ orElse: () => Effect.void
243
+ });
244
+ const state = yield* schemaState;
245
+ if (!state.sources) yield* createSchema;
246
+ if (state.remotes) yield* importRemotes;
247
+ }).pipe(sql.withTransaction);
104
248
  }).pipe(withTracerDisabled);
105
249
  const decodeEntryRows = Schema.decodeUnknownEffect(EntryRowArray);
106
250
  const decodeEntryIdRows = Schema.decodeUnknownEffect(EntryIdRowArray);
107
251
  const toEntries = rows => rows.map(toEntry);
108
- const insertEntry = SqlSchema.void({
109
- Request: EntryRow,
110
- execute: entry => sql`INSERT INTO ${entryTableSql} ${sql.insert(entry)} ON CONFLICT DO NOTHING`
111
- });
252
+ // Sort timestamp ties by id bytes consistently across dialects.
253
+ const toOrderedEntries = rows => rows.map(toEntry).sort(EventJournal.Entry.Order);
112
254
  const insertEntries = SqlSchema.void({
113
255
  Request: EntryRowArray,
114
256
  execute: entries => sql`INSERT INTO ${entryTableSql} ${sql.insert(entries)} ON CONFLICT DO NOTHING`
115
257
  });
116
- const insertRemotes = SqlSchema.void({
117
- Request: RemoteRowArray,
118
- execute: entries => sql`INSERT INTO ${remotesTableSql} ${sql.insert(entries)} ON CONFLICT DO NOTHING`
258
+ const insertSources = (entries, remoteId) => sql`INSERT INTO ${sourcesTableSql} ${sql.insert(entries.map(entry => ({
259
+ entry_id: entry.id,
260
+ remote_id: remoteId
261
+ })))} ON CONFLICT DO NOTHING`;
262
+ // Serialize writers so checkpoints cannot skip out-of-order commits.
263
+ // Lock before callbacks in both paths to avoid projection-row deadlocks.
264
+ const lockWriters = sql.onDialectOrElse({
265
+ pg: () => Effect.asVoid(sql`LOCK TABLE ${sequenceTableSql} IN SHARE ROW EXCLUSIVE MODE`),
266
+ orElse: () => Effect.void
119
267
  });
268
+ const insertSequence = entries => sql`INSERT INTO ${sequenceTableSql} ${sql.insert(entries.map(entry => ({
269
+ entry_id: entry.id
270
+ })))} ON CONFLICT DO NOTHING`;
271
+ const decodeCursorRows = Schema.decodeUnknownEffect(CursorRowArray);
272
+ const readCursor = remoteId => sql`SELECT next_sequence FROM ${remoteCursorsTableSql} WHERE remote_id = ${remoteId}`.pipe(Effect.flatMap(decodeCursorRows), Effect.map(rows => rows.length > 0 ? rows[0].next_sequence : 0));
273
+ // Cursors only move forward.
274
+ const writeCursor = (remoteId, next) => sql`
275
+ INSERT INTO ${remoteCursorsTableSql} ${sql.insert({
276
+ remote_id: remoteId,
277
+ next_sequence: next
278
+ })}
279
+ ON CONFLICT (remote_id) DO UPDATE SET next_sequence = excluded.next_sequence
280
+ WHERE ${remoteCursorsTableSql}.next_sequence < excluded.next_sequence
281
+ `;
120
282
  const pubsub = yield* PubSub.unbounded();
283
+ const clock = yield* Clock.Clock;
121
284
  const writeFromRemote = Effect.fnUntraced(function* (options) {
122
285
  const entries = options.entries.map(remoteEntry => remoteEntry.entry);
123
- const remoteRows = options.entries.map(remoteEntry => ({
124
- remote_id: options.remoteId,
125
- entry_id: remoteEntry.entry.id,
126
- sequence: remoteEntry.remoteSequence
127
- }));
286
+ yield* lockWriters;
128
287
  const existingIds = new Set();
129
288
  if (entries.length > 0) {
130
289
  yield* sql`SELECT id FROM ${entryTableSql} WHERE ${sql.in("id", entries.map(entry => entry.id))}`.pipe(Effect.flatMap(decodeEntryIdRows), Effect.tap(rows => Effect.sync(() => {
@@ -133,86 +292,161 @@ export const make = options => Effect.gen(function* () {
133
292
  }
134
293
  })));
135
294
  }
136
- if (entries.length > 0) {
137
- yield* insertEntries(entries.map(toEntryRow));
138
- }
139
- if (remoteRows.length > 0) {
140
- yield* insertRemotes(remoteRows);
141
- }
142
- const uncommitted = options.entries.filter(entry => !existingIds.has(entry.entry.idString));
295
+ // Overlapping batches can repeat an entry; the first copy wins.
296
+ const incomingIds = new Set();
297
+ const uncommitted = options.entries.filter(entry => {
298
+ const idString = entry.entry.idString;
299
+ if (existingIds.has(idString) || incomingIds.has(idString)) return false;
300
+ incomingIds.add(idString);
301
+ return true;
302
+ });
143
303
  const duplicateEntries = options.entries.filter(entry => existingIds.has(entry.entry.idString)).map(entry => entry.entry);
144
304
  const compacted = options.compact ? yield* options.compact(uncommitted) : uncommitted.map(remoteEntry => remoteEntry.entry);
145
- for (const entry of compacted) {
146
- const conflicts = yield* sql`
147
- SELECT *
148
- FROM ${entryTableSql}
149
- WHERE event = ${entry.event} AND
150
- primary_key = ${entry.primaryKey} AND
151
- timestamp >= ${entry.createdAtMillis}
152
- ORDER BY timestamp ASC
153
- `.pipe(Effect.flatMap(decodeEntryRows), Effect.map(toEntries));
154
- yield* options.effect({
155
- entry,
156
- conflicts
305
+ if (Arr.isReadonlyArrayNonEmpty(compacted)) {
306
+ const index = new ConflictIndex(compacted);
307
+ const primaryKeys = Array.from(new Set(compacted.map(entry => entry.primaryKey)));
308
+ // Match the hash index; exact predicates below rule out hash collisions.
309
+ const hashed = sql.onDialectOrElse({
310
+ pg: () => [sql`md5(event) IN (${sql.csv(index.events.map(event => sql`md5(${event})`))})`, sql`md5(primary_key) IN (${sql.csv(primaryKeys.map(primaryKey => sql`md5(${primaryKey})`))})`],
311
+ orElse: () => []
157
312
  });
313
+ const conflicts = sql.and([...hashed, sql.in("event", index.events), sql.in("primary_key", primaryKeys),
314
+ // A coarse filter: the index compares ids exactly.
315
+ sql`timestamp >= ${index.oldestMillis}`]);
316
+ const stored = yield* sql`SELECT * FROM ${entryTableSql} WHERE ${conflicts}`.pipe(Effect.flatMap(decodeEntryRows), Effect.map(toEntries));
317
+ for (const entry of stored) {
318
+ index.add(entry);
319
+ }
320
+ yield* options.effect(index.toBatch());
158
321
  }
322
+ // Keep the incoming batch out of conflict queries and persist only after
323
+ // compaction and every callback have succeeded.
324
+ if (uncommitted.length > 0) {
325
+ const imported = uncommitted.map(remoteEntry => remoteEntry.entry);
326
+ yield* insertEntries(imported.map(toEntryRow));
327
+ yield* insertSequence(imported);
328
+ yield* insertSources(imported, options.remoteId);
329
+ }
330
+ // The change stream is ordered, so every earlier sequence is now known.
331
+ if (options.entries.length > 0) {
332
+ yield* writeCursor(options.remoteId, EventJournal.nextSequenceAfter(options.entries));
333
+ }
334
+ yield* EventJournal.warnIfAhead(clock, uncommitted.map(remoteEntry => remoteEntry.entry.id));
159
335
  return {
160
336
  duplicateEntries
161
337
  };
162
338
  });
339
+ // Other processes share the database but not the entry id sequence. Ids in
340
+ // the latest millisecond are few, and comparing them here avoids ordering
341
+ // id bytes in SQL.
342
+ const latestEntryIds = sql`
343
+ SELECT id FROM ${entryTableSql} WHERE timestamp = (SELECT MAX(timestamp) FROM ${entryTableSql})
344
+ `.pipe(Effect.flatMap(decodeEntryIdRows), Effect.map(rows => rows.map(row => row.id)));
345
+ const writeMany = ({
346
+ effect,
347
+ entries
348
+ }) => Effect.uninterruptibleMask(restore => Effect.gen(function* () {
349
+ yield* lockWriters;
350
+ // Rows visible here include an enclosing transaction's uncommitted
351
+ // ones, which local ids must also sort after.
352
+ const committed = yield* EventJournal.makeEntries(entries, yield* latestEntryIds);
353
+ const result = yield* restore(effect(committed)).pipe(Effect.mapError(error => new CallbackFailure(error)));
354
+ yield* insertEntries(committed.map(toEntryRow));
355
+ yield* insertSequence(committed);
356
+ return {
357
+ result,
358
+ committed
359
+ };
360
+ }).pipe(sql.withTransaction, Effect.mapError(error => error instanceof CallbackFailure ? error.error : error instanceof EventJournal.EventJournalError ? error : new EventJournal.EventJournalError({
361
+ cause: error,
362
+ method: "writeMany"
363
+ })), Effect.flatMap(({
364
+ committed,
365
+ result
366
+ }) => Effect.as(PubSub.publishAll(pubsub, committed), result)))).pipe(withTracerDisabled);
163
367
  return EventJournal.EventJournal.of({
164
- entries: sql`SELECT * FROM ${entryTableSql} ORDER BY timestamp ASC`.pipe(withTracerDisabled, Effect.flatMap(decodeEntryRows), Effect.map(toEntries), Effect.mapError(cause => new EventJournal.EventJournalError({
368
+ entries: sql`SELECT * FROM ${entryTableSql} ORDER BY timestamp ASC`.pipe(withTracerDisabled, Effect.flatMap(decodeEntryRows), Effect.map(toOrderedEntries), Effect.mapError(cause => new EventJournal.EventJournalError({
165
369
  cause,
166
370
  method: "entries"
167
371
  }))),
168
- write: Effect.fnUntraced(function* ({
372
+ entriesById: ids => ids.length === 0 ? Effect.succeed([]) : sql`SELECT * FROM ${entryTableSql} WHERE ${sql.in("id", ids)}`.pipe(withTracerDisabled, Effect.flatMap(decodeEntryRows), Effect.map(rows => {
373
+ const byId = new Map(toEntries(rows).map(entry => [entry.idString, entry]));
374
+ return ids.map(id => byId.get(Uuid.stringify(id)));
375
+ }), Effect.mapError(cause => new EventJournal.EventJournalError({
376
+ cause,
377
+ method: "entriesById"
378
+ }))),
379
+ write: ({
169
380
  effect,
170
- event,
171
- payload,
172
- primaryKey
173
- }) {
174
- const entry = new EventJournal.Entry({
175
- id: EventJournal.makeEntryIdUnsafe(),
176
- event,
177
- primaryKey,
178
- payload
179
- }, {
180
- disableChecks: true
181
- });
182
- return yield* Effect.uninterruptibleMask(restore => restore(effect(entry)).pipe(Effect.tap(insertEntry(toEntryRow(entry)).pipe(Effect.mapError(cause => new EventJournal.EventJournalError({
183
- cause,
184
- method: "write"
185
- })))), Effect.tap(PubSub.publish(pubsub, entry))));
186
- }, withTracerDisabled),
187
- writeFromRemote: options => writeFromRemote(options).pipe(withTracerDisabled, Effect.catchIf(e => e._tag !== "EventJournalError", cause => Effect.fail(new EventJournal.EventJournalError({
381
+ ...entry
382
+ }) => writeMany({
383
+ entries: [entry],
384
+ effect: entries => effect(entries[0])
385
+ }),
386
+ writeMany,
387
+ writeFromRemote: options => writeFromRemote(options).pipe(sql.withTransaction, withTracerDisabled, Effect.catchIf(e => e._tag !== "EventJournalError", cause => Effect.fail(new EventJournal.EventJournalError({
188
388
  cause,
189
389
  method: "writeFromRemote"
190
390
  })))),
191
391
  withRemoteUncommited: Effect.fnUntraced(function* (remoteId, f) {
192
- const entries = yield* sql`
193
- SELECT *
194
- FROM ${entryTableSql}
195
- WHERE id NOT IN (SELECT entry_id FROM ${remotesTableSql} WHERE remote_id = ${remoteId})
196
- ORDER BY timestamp ASC
197
- `.pipe(Effect.flatMap(decodeEntryRows), Effect.map(toEntries), Effect.mapError(cause => new EventJournal.EventJournalError({
392
+ const mapError = Effect.mapError(cause => new EventJournal.EventJournalError({
198
393
  cause,
199
394
  method: "withRemoteUncommited"
200
- })));
201
- if (!Arr.isReadonlyArrayNonEmpty(entries)) return yield* Effect.succeedNone;
202
- return yield* Effect.asSome(f(entries));
395
+ }));
396
+ // Capture an upper bound so entries committed during upload remain pending.
397
+ const [{
398
+ checkpoint,
399
+ latest
400
+ }] = yield* sql`
401
+ SELECT
402
+ COALESCE((SELECT sequence FROM ${checkpointsTableSql} WHERE remote_id = ${remoteId}), 0) AS checkpoint,
403
+ COALESCE((SELECT MAX(sequence) FROM ${sequenceTableSql}), 0) AS latest
404
+ `.pipe(Effect.flatMap(decodeUploadBounds), mapError);
405
+ if (latest <= checkpoint) return yield* Effect.succeedNone;
406
+ const entries = yield* sql`
407
+ SELECT e.*
408
+ FROM ${sequenceTableSql} s
409
+ JOIN ${entryTableSql} e ON e.id = s.entry_id
410
+ WHERE s.sequence > ${checkpoint} AND
411
+ s.sequence <= ${latest} AND
412
+ NOT EXISTS (
413
+ SELECT 1 FROM ${sourcesTableSql} src WHERE src.entry_id = s.entry_id AND src.remote_id = ${remoteId}
414
+ )
415
+ `.pipe(Effect.flatMap(decodeEntryRows), Effect.map(toOrderedEntries), mapError);
416
+ // Uploads can complete out of order; the checkpoint only moves forward.
417
+ const saveCheckpoint = sql`
418
+ INSERT INTO ${checkpointsTableSql} ${sql.insert({
419
+ remote_id: remoteId,
420
+ sequence: latest
421
+ })}
422
+ ON CONFLICT (remote_id) DO UPDATE SET sequence = excluded.sequence
423
+ WHERE ${checkpointsTableSql}.sequence < excluded.sequence
424
+ `.pipe(mapError);
425
+ return yield* Effect.uninterruptibleMask(restore => restore(Arr.isReadonlyArrayNonEmpty(entries) ? Effect.asSome(f(entries)) : Effect.succeedNone).pipe(Effect.tap(saveCheckpoint)));
203
426
  }, withTracerDisabled),
204
- nextRemoteSequence: remoteId => sql`SELECT MAX(sequence) AS max FROM ${remotesTableSql} WHERE remote_id = ${remoteId}`.pipe(Effect.map(rows => {
205
- const value = rows[0]?.max;
206
- if (value === null || value === undefined) return 0;
207
- return Number(value) + 1;
208
- }), withTracerDisabled, Effect.mapError(cause => new EventJournal.EventJournalError({
427
+ writeRemoteAcks: Effect.fnUntraced(function* ({
428
+ acks,
429
+ firstSequence,
430
+ remoteId
431
+ }) {
432
+ if (acks.length === 0) return;
433
+ const next = yield* readCursor(remoteId);
434
+ yield* writeCursor(remoteId, EventJournal.advanceSequence(next, acks, firstSequence));
435
+ }, _ => sql.withTransaction(_), _ => withTracerDisabled(_), Effect.mapError(cause => new EventJournal.EventJournalError({
436
+ cause,
437
+ method: "writeRemoteAcks"
438
+ }))),
439
+ nextRemoteSequence: remoteId => readCursor(remoteId).pipe(withTracerDisabled, Effect.mapError(cause => new EventJournal.EventJournalError({
209
440
  cause,
210
441
  method: "nextRemoteSequence"
211
442
  }))),
212
443
  changes: PubSub.subscribe(pubsub),
213
444
  destroy: Effect.gen(function* () {
214
445
  yield* sql`DROP TABLE ${entryTableSql}`;
215
- yield* sql`DROP TABLE ${remotesTableSql}`;
446
+ yield* sql`DROP TABLE ${sequenceTableSql}`;
447
+ yield* sql`DROP TABLE ${sourcesTableSql}`;
448
+ yield* sql`DROP TABLE ${checkpointsTableSql}`;
449
+ yield* sql`DROP TABLE ${remoteCursorsTableSql}`;
216
450
  }).pipe(withTracerDisabled, Effect.mapError(cause => new EventJournal.EventJournalError({
217
451
  cause,
218
452
  method: "destroy"
@@ -223,25 +457,11 @@ export const make = options => Effect.gen(function* () {
223
457
  });
224
458
  });
225
459
  /**
226
- * Provides `EventJournal` using the SQL-backed implementation created by
227
- * `make`.
228
- *
229
- * **When to use**
230
- *
231
- * Use when composing a Layer graph that should provide a persistent SQL-backed
232
- * `EventJournal` from an existing `SqlClient` service.
233
- *
234
- * **Details**
235
- *
236
- * The layer delegates to `make(options)`, so the same optional `entryTable` and
237
- * `remotesTable` settings are used and construction requires `SqlClient` and
238
- * may fail with `SqlError`.
460
+ * Provides a SQL-backed `EventJournal` from an existing `SqlClient` service.
239
461
  *
240
462
  * **Gotchas**
241
463
  *
242
- * Layer construction performs the same minimal `CREATE TABLE IF NOT EXISTS`
243
- * setup as `make`; manage indexes and schema migrations outside this layer when
244
- * your SQL schema needs more than the built-in tables.
464
+ * Creating or migrating the schema requires a writable connection.
245
465
  *
246
466
  * @see {@link make} for constructing the SQL-backed service directly
247
467
  * @see {@link EventJournal.layerMemory} for an in-memory `EventJournal` layer
@@ -272,6 +492,10 @@ const EntryRow = /*#__PURE__*/Schema.Struct({
272
492
  timestamp: SqlNatural
273
493
  });
274
494
  const EntryRowArray = /*#__PURE__*/Schema.Array(EntryRow);
495
+ const decodeUploadBounds = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Tuple([/*#__PURE__*/Schema.Struct({
496
+ checkpoint: SqlNatural,
497
+ latest: SqlNatural
498
+ })]));
275
499
  const EntryIdRowArray = /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
276
500
  id: SqlEntryId
277
501
  }));
@@ -290,11 +514,15 @@ const toEntryRow = entry => ({
290
514
  payload: entry.payload,
291
515
  timestamp: EventJournal.entryIdMillis(entry.id)
292
516
  });
293
- const RemoteRow = /*#__PURE__*/Schema.Struct({
294
- remote_id: EventJournal.RemoteId,
295
- entry_id: EventJournal.EntryId,
296
- sequence: Schema.Natural
297
- });
298
- const RemoteRowArray = /*#__PURE__*/Schema.Array(RemoteRow);
517
+ const CursorRowArray = /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
518
+ next_sequence: SqlNatural
519
+ }));
299
520
  const withTracerDisabled = /*#__PURE__*/Effect.withTracerEnabled(false);
521
+ // Preserve callback errors without wrapping them as journal SQL errors.
522
+ class CallbackFailure {
523
+ error;
524
+ constructor(error) {
525
+ this.error = error;
526
+ }
527
+ }
300
528
  //# sourceMappingURL=SqlEventJournal.js.map