effect 4.0.4 → 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 (1079) 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/src/52_graphql/10_basics.ts +19 -13
  4. package/ai-docs/src/52_graphql/30_batching.ts +6 -4
  5. package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
  6. package/ai-docs/tsconfig.json +3 -1
  7. package/dist/Array.d.ts +207 -58
  8. package/dist/Array.d.ts.map +1 -1
  9. package/dist/Array.js +45 -22
  10. package/dist/Array.js.map +1 -1
  11. package/dist/Bytes.d.ts +79 -0
  12. package/dist/Bytes.d.ts.map +1 -0
  13. package/dist/Bytes.js +109 -0
  14. package/dist/Bytes.js.map +1 -0
  15. package/dist/Channel.d.ts +187 -14
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +142 -33
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/ChannelSchema.d.ts.map +1 -1
  20. package/dist/ChannelSchema.js.map +1 -1
  21. package/dist/Chunk.d.ts +39 -21
  22. package/dist/Chunk.d.ts.map +1 -1
  23. package/dist/Chunk.js +26 -17
  24. package/dist/Chunk.js.map +1 -1
  25. package/dist/Config.d.ts.map +1 -1
  26. package/dist/Config.js +8 -3
  27. package/dist/Config.js.map +1 -1
  28. package/dist/ConfigProvider.d.ts.map +1 -1
  29. package/dist/ConfigProvider.js +34 -32
  30. package/dist/ConfigProvider.js.map +1 -1
  31. package/dist/Cron.d.ts +2 -2
  32. package/dist/Cron.d.ts.map +1 -1
  33. package/dist/Cron.js +6 -3
  34. package/dist/Cron.js.map +1 -1
  35. package/dist/Duration.d.ts.map +1 -1
  36. package/dist/Duration.js +58 -21
  37. package/dist/Duration.js.map +1 -1
  38. package/dist/Effect.d.ts +548 -182
  39. package/dist/Effect.d.ts.map +1 -1
  40. package/dist/Effect.js +261 -76
  41. package/dist/Effect.js.map +1 -1
  42. package/dist/Equivalence.d.ts +2 -1
  43. package/dist/Equivalence.d.ts.map +1 -1
  44. package/dist/Equivalence.js +12 -8
  45. package/dist/Equivalence.js.map +1 -1
  46. package/dist/Exit.d.ts +24 -9
  47. package/dist/Exit.d.ts.map +1 -1
  48. package/dist/Exit.js +8 -3
  49. package/dist/Exit.js.map +1 -1
  50. package/dist/FiberHandle.d.ts +2 -0
  51. package/dist/FiberHandle.d.ts.map +1 -1
  52. package/dist/FiberHandle.js +9 -4
  53. package/dist/FiberHandle.js.map +1 -1
  54. package/dist/FiberMap.d.ts +2 -0
  55. package/dist/FiberMap.d.ts.map +1 -1
  56. package/dist/FiberMap.js +5 -2
  57. package/dist/FiberMap.js.map +1 -1
  58. package/dist/FileSystem.d.ts +28 -9
  59. package/dist/FileSystem.d.ts.map +1 -1
  60. package/dist/FileSystem.js +3 -0
  61. package/dist/FileSystem.js.map +1 -1
  62. package/dist/Graph.d.ts.map +1 -1
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/HashSet.d.ts.map +1 -1
  65. package/dist/HashSet.js.map +1 -1
  66. package/dist/Iterable.d.ts.map +1 -1
  67. package/dist/Iterable.js +18 -17
  68. package/dist/Iterable.js.map +1 -1
  69. package/dist/JsonSchema.d.ts +9 -3
  70. package/dist/JsonSchema.d.ts.map +1 -1
  71. package/dist/JsonSchema.js +19 -3
  72. package/dist/JsonSchema.js.map +1 -1
  73. package/dist/Layer.d.ts.map +1 -1
  74. package/dist/Layer.js +2 -2
  75. package/dist/Layer.js.map +1 -1
  76. package/dist/ManagedRuntime.d.ts +19 -1
  77. package/dist/ManagedRuntime.d.ts.map +1 -1
  78. package/dist/ManagedRuntime.js +62 -6
  79. package/dist/ManagedRuntime.js.map +1 -1
  80. package/dist/Match.d.ts +20 -6
  81. package/dist/Match.d.ts.map +1 -1
  82. package/dist/Match.js +2 -2
  83. package/dist/Match.js.map +1 -1
  84. package/dist/Metric.d.ts +132 -0
  85. package/dist/Metric.d.ts.map +1 -1
  86. package/dist/Metric.js +197 -25
  87. package/dist/Metric.js.map +1 -1
  88. package/dist/MutableHashMap.d.ts.map +1 -1
  89. package/dist/MutableHashMap.js.map +1 -1
  90. package/dist/Number.js +2 -2
  91. package/dist/Number.js.map +1 -1
  92. package/dist/Optic.d.ts.map +1 -1
  93. package/dist/Optic.js.map +1 -1
  94. package/dist/Path.d.ts +37 -5
  95. package/dist/Path.d.ts.map +1 -1
  96. package/dist/Path.js +44 -6
  97. package/dist/Path.js.map +1 -1
  98. package/dist/PubSub.d.ts.map +1 -1
  99. package/dist/PubSub.js +12 -7
  100. package/dist/PubSub.js.map +1 -1
  101. package/dist/Queue.d.ts +4 -1
  102. package/dist/Queue.d.ts.map +1 -1
  103. package/dist/Queue.js +4 -1
  104. package/dist/Queue.js.map +1 -1
  105. package/dist/Random.d.ts.map +1 -1
  106. package/dist/Random.js +1 -1
  107. package/dist/Random.js.map +1 -1
  108. package/dist/RcMap.d.ts +12 -7
  109. package/dist/RcMap.d.ts.map +1 -1
  110. package/dist/RcMap.js +9 -6
  111. package/dist/RcMap.js.map +1 -1
  112. package/dist/Record.d.ts +51 -0
  113. package/dist/Record.d.ts.map +1 -1
  114. package/dist/Record.js +17 -0
  115. package/dist/Record.js.map +1 -1
  116. package/dist/Ref.d.ts.map +1 -1
  117. package/dist/Ref.js.map +1 -1
  118. package/dist/References.d.ts +5 -4
  119. package/dist/References.d.ts.map +1 -1
  120. package/dist/References.js +5 -4
  121. package/dist/References.js.map +1 -1
  122. package/dist/RequestResolver.d.ts +31 -1
  123. package/dist/RequestResolver.d.ts.map +1 -1
  124. package/dist/RequestResolver.js +39 -4
  125. package/dist/RequestResolver.js.map +1 -1
  126. package/dist/Resource.js +1 -1
  127. package/dist/Resource.js.map +1 -1
  128. package/dist/Runtime.d.ts +3 -3
  129. package/dist/Runtime.d.ts.map +1 -1
  130. package/dist/Runtime.js +18 -15
  131. package/dist/Runtime.js.map +1 -1
  132. package/dist/Schedule.d.ts.map +1 -1
  133. package/dist/Schedule.js.map +1 -1
  134. package/dist/Schema.d.ts +383 -326
  135. package/dist/Schema.d.ts.map +1 -1
  136. package/dist/Schema.js +338 -17
  137. package/dist/Schema.js.map +1 -1
  138. package/dist/SchemaAST.d.ts +5 -5
  139. package/dist/SchemaAST.d.ts.map +1 -1
  140. package/dist/SchemaAST.js +24 -8
  141. package/dist/SchemaAST.js.map +1 -1
  142. package/dist/SchemaGetter.d.ts +8 -3
  143. package/dist/SchemaGetter.d.ts.map +1 -1
  144. package/dist/SchemaGetter.js +15 -5
  145. package/dist/SchemaGetter.js.map +1 -1
  146. package/dist/SchemaIssue.d.ts +4 -4
  147. package/dist/SchemaIssue.d.ts.map +1 -1
  148. package/dist/SchemaIssue.js +29 -51
  149. package/dist/SchemaIssue.js.map +1 -1
  150. package/dist/SchemaRepresentation.d.ts +56 -1
  151. package/dist/SchemaRepresentation.d.ts.map +1 -1
  152. package/dist/SchemaRepresentation.js +18 -0
  153. package/dist/SchemaRepresentation.js.map +1 -1
  154. package/dist/SchemaTransformation.d.ts +1 -1
  155. package/dist/SchemaTransformation.js +1 -1
  156. package/dist/Scope.d.ts +12 -2
  157. package/dist/Scope.d.ts.map +1 -1
  158. package/dist/Scope.js +5 -0
  159. package/dist/Scope.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +10 -7
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +9 -5
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/SemVer.d.ts +1196 -0
  165. package/dist/SemVer.d.ts.map +1 -0
  166. package/dist/SemVer.js +756 -0
  167. package/dist/SemVer.js.map +1 -0
  168. package/dist/SemVerRange.d.ts +559 -0
  169. package/dist/SemVerRange.d.ts.map +1 -0
  170. package/dist/SemVerRange.js +551 -0
  171. package/dist/SemVerRange.js.map +1 -0
  172. package/dist/Sink.d.ts.map +1 -1
  173. package/dist/Sink.js +6 -2
  174. package/dist/Sink.js.map +1 -1
  175. package/dist/Stream.d.ts +235 -8
  176. package/dist/Stream.d.ts.map +1 -1
  177. package/dist/Stream.js +145 -60
  178. package/dist/Stream.js.map +1 -1
  179. package/dist/String.d.ts +16 -2
  180. package/dist/String.d.ts.map +1 -1
  181. package/dist/String.js +25 -10
  182. package/dist/String.js.map +1 -1
  183. package/dist/TextDiff.d.ts +399 -0
  184. package/dist/TextDiff.d.ts.map +1 -0
  185. package/dist/TextDiff.js +634 -0
  186. package/dist/TextDiff.js.map +1 -0
  187. package/dist/TxHashMap.d.ts.map +1 -1
  188. package/dist/TxHashMap.js.map +1 -1
  189. package/dist/TxHashSet.d.ts.map +1 -1
  190. package/dist/TxHashSet.js.map +1 -1
  191. package/dist/TxRef.d.ts.map +1 -1
  192. package/dist/TxRef.js +3 -2
  193. package/dist/TxRef.js.map +1 -1
  194. package/dist/ai/AiError.d.ts +78 -14
  195. package/dist/ai/AiError.d.ts.map +1 -1
  196. package/dist/ai/AiError.js +51 -3
  197. package/dist/ai/AiError.js.map +1 -1
  198. package/dist/ai/Chat.d.ts +1 -2
  199. package/dist/ai/Chat.d.ts.map +1 -1
  200. package/dist/ai/Chat.js +6 -3
  201. package/dist/ai/Chat.js.map +1 -1
  202. package/dist/ai/Decision.d.ts +116 -20
  203. package/dist/ai/Decision.d.ts.map +1 -1
  204. package/dist/ai/Decision.js +37 -3
  205. package/dist/ai/Decision.js.map +1 -1
  206. package/dist/ai/DecisionModel.d.ts +129 -11
  207. package/dist/ai/DecisionModel.d.ts.map +1 -1
  208. package/dist/ai/DecisionModel.js +183 -95
  209. package/dist/ai/DecisionModel.js.map +1 -1
  210. package/dist/ai/EmbeddingModel.d.ts +10 -0
  211. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  212. package/dist/ai/EmbeddingModel.js +21 -7
  213. package/dist/ai/EmbeddingModel.js.map +1 -1
  214. package/dist/ai/LanguageModel.d.ts.map +1 -1
  215. package/dist/ai/LanguageModel.js +47 -35
  216. package/dist/ai/LanguageModel.js.map +1 -1
  217. package/dist/ai/McpClient.d.ts +289 -0
  218. package/dist/ai/McpClient.d.ts.map +1 -0
  219. package/dist/ai/McpClient.js +819 -0
  220. package/dist/ai/McpClient.js.map +1 -0
  221. package/dist/ai/McpClientError.d.ts +254 -0
  222. package/dist/ai/McpClientError.d.ts.map +1 -0
  223. package/dist/ai/McpClientError.js +260 -0
  224. package/dist/ai/McpClientError.js.map +1 -0
  225. package/dist/ai/McpProtocol.d.ts +2 -2
  226. package/dist/ai/McpProtocol.d.ts.map +1 -1
  227. package/dist/ai/McpSchema.d.ts +368 -235
  228. package/dist/ai/McpSchema.d.ts.map +1 -1
  229. package/dist/ai/McpSchema.js +94 -24
  230. package/dist/ai/McpSchema.js.map +1 -1
  231. package/dist/ai/McpServer.d.ts +6 -52
  232. package/dist/ai/McpServer.d.ts.map +1 -1
  233. package/dist/ai/McpServer.js +27 -50
  234. package/dist/ai/McpServer.js.map +1 -1
  235. package/dist/ai/Prompt.d.ts +22 -20
  236. package/dist/ai/Prompt.d.ts.map +1 -1
  237. package/dist/ai/Prompt.js +23 -1
  238. package/dist/ai/Prompt.js.map +1 -1
  239. package/dist/ai/Response.d.ts +148 -4
  240. package/dist/ai/Response.d.ts.map +1 -1
  241. package/dist/ai/Response.js +35 -37
  242. package/dist/ai/Response.js.map +1 -1
  243. package/dist/ai/Tool.d.ts +12 -4
  244. package/dist/ai/Tool.d.ts.map +1 -1
  245. package/dist/ai/Tool.js.map +1 -1
  246. package/dist/ai/Toolkit.d.ts +48 -1
  247. package/dist/ai/Toolkit.d.ts.map +1 -1
  248. package/dist/ai/Toolkit.js +65 -12
  249. package/dist/ai/Toolkit.js.map +1 -1
  250. package/dist/ai/index.d.ts +10 -0
  251. package/dist/ai/index.d.ts.map +1 -1
  252. package/dist/ai/index.js +10 -0
  253. package/dist/ai/index.js.map +1 -1
  254. package/dist/ai/internal/mcpCore.js.map +1 -1
  255. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  256. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  257. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  258. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  259. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  260. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  261. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  262. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  263. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  264. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  265. package/dist/ai/internal/mcpProtocol.js +16 -2
  266. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  267. package/dist/ai/internal/mcpRuntime.js +3 -4
  268. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  269. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  270. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  271. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  272. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  273. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  274. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  275. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  276. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  277. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  278. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  279. package/dist/cli/CliError.d.ts +42 -2
  280. package/dist/cli/CliError.d.ts.map +1 -1
  281. package/dist/cli/CliError.js +44 -5
  282. package/dist/cli/CliError.js.map +1 -1
  283. package/dist/cli/Command.d.ts +286 -2
  284. package/dist/cli/Command.d.ts.map +1 -1
  285. package/dist/cli/Command.js +107 -6
  286. package/dist/cli/Command.js.map +1 -1
  287. package/dist/cli/Completions.d.ts +10 -0
  288. package/dist/cli/Completions.d.ts.map +1 -1
  289. package/dist/cli/Completions.js.map +1 -1
  290. package/dist/cli/Flag.d.ts +215 -0
  291. package/dist/cli/Flag.d.ts.map +1 -1
  292. package/dist/cli/Flag.js +89 -0
  293. package/dist/cli/Flag.js.map +1 -1
  294. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  295. package/dist/cli/GlobalFlag.js +3 -3
  296. package/dist/cli/GlobalFlag.js.map +1 -1
  297. package/dist/cli/Param.d.ts +194 -0
  298. package/dist/cli/Param.d.ts.map +1 -1
  299. package/dist/cli/Param.js +86 -0
  300. package/dist/cli/Param.js.map +1 -1
  301. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  302. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  303. package/dist/cli/TerminalCapabilities.js +122 -0
  304. package/dist/cli/TerminalCapabilities.js.map +1 -0
  305. package/dist/cli/index.d.ts +5 -0
  306. package/dist/cli/index.d.ts.map +1 -1
  307. package/dist/cli/index.js +5 -0
  308. package/dist/cli/index.js.map +1 -1
  309. package/dist/cli/internal/command.d.ts +2 -1
  310. package/dist/cli/internal/command.d.ts.map +1 -1
  311. package/dist/cli/internal/command.js +7 -3
  312. package/dist/cli/internal/command.js.map +1 -1
  313. package/dist/cli/internal/completions/bash.js +7 -5
  314. package/dist/cli/internal/completions/bash.js.map +1 -1
  315. package/dist/cli/internal/completions/descriptor.js +16 -1
  316. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  317. package/dist/cli/internal/completions/fish.js +12 -10
  318. package/dist/cli/internal/completions/fish.js.map +1 -1
  319. package/dist/cli/internal/completions/powershell.js +20 -10
  320. package/dist/cli/internal/completions/powershell.js.map +1 -1
  321. package/dist/cli/internal/completions/zsh.js +15 -8
  322. package/dist/cli/internal/completions/zsh.js.map +1 -1
  323. package/dist/cli/internal/formatter.d.ts +2 -0
  324. package/dist/cli/internal/formatter.d.ts.map +1 -0
  325. package/dist/cli/internal/formatter.js +15 -0
  326. package/dist/cli/internal/formatter.js.map +1 -0
  327. package/dist/cli/internal/lexer.js +24 -10
  328. package/dist/cli/internal/lexer.js.map +1 -1
  329. package/dist/cli/internal/parser.js +35 -15
  330. package/dist/cli/internal/parser.js.map +1 -1
  331. package/dist/cli/internal/wizard.d.ts.map +1 -1
  332. package/dist/cli/internal/wizard.js +2 -1
  333. package/dist/cli/internal/wizard.js.map +1 -1
  334. package/dist/cluster/ClusterCron.d.ts +29 -1
  335. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  336. package/dist/cluster/ClusterCron.js +64 -32
  337. package/dist/cluster/ClusterCron.js.map +1 -1
  338. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  339. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  340. package/dist/cluster/ClusterMetrics.js +151 -7
  341. package/dist/cluster/ClusterMetrics.js.map +1 -1
  342. package/dist/cluster/ClusterWorkflowEngine.d.ts +2 -1
  343. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  344. package/dist/cluster/ClusterWorkflowEngine.js +98 -18
  345. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  346. package/dist/cluster/Entity.d.ts +2 -0
  347. package/dist/cluster/Entity.d.ts.map +1 -1
  348. package/dist/cluster/Entity.js.map +1 -1
  349. package/dist/cluster/MessageStorage.d.ts +21 -0
  350. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  351. package/dist/cluster/MessageStorage.js +20 -12
  352. package/dist/cluster/MessageStorage.js.map +1 -1
  353. package/dist/cluster/Runners.d.ts.map +1 -1
  354. package/dist/cluster/Runners.js +96 -37
  355. package/dist/cluster/Runners.js.map +1 -1
  356. package/dist/cluster/Sharding.d.ts +1 -0
  357. package/dist/cluster/Sharding.d.ts.map +1 -1
  358. package/dist/cluster/Sharding.js +95 -32
  359. package/dist/cluster/Sharding.js.map +1 -1
  360. package/dist/cluster/ShardingConfig.d.ts +20 -0
  361. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  362. package/dist/cluster/ShardingConfig.js +4 -0
  363. package/dist/cluster/ShardingConfig.js.map +1 -1
  364. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  365. package/dist/cluster/SqlMessageStorage.js +40 -50
  366. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  367. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  368. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  369. package/dist/cluster/SqlRunnerStorage.js +10 -4
  370. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  371. package/dist/cluster/internal/entityManager.js +66 -9
  372. package/dist/cluster/internal/entityManager.js.map +1 -1
  373. package/dist/devtools/DevTools.d.ts +3 -2
  374. package/dist/devtools/DevTools.d.ts.map +1 -1
  375. package/dist/devtools/DevTools.js +3 -2
  376. package/dist/devtools/DevTools.js.map +1 -1
  377. package/dist/devtools/DevToolsClient.d.ts +11 -0
  378. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  379. package/dist/devtools/DevToolsClient.js +31 -4
  380. package/dist/devtools/DevToolsClient.js.map +1 -1
  381. package/dist/encoding/Base64Url.d.ts +29 -0
  382. package/dist/encoding/Base64Url.d.ts.map +1 -1
  383. package/dist/encoding/Base64Url.js +29 -0
  384. package/dist/encoding/Base64Url.js.map +1 -1
  385. package/dist/encoding/Ini.d.ts.map +1 -1
  386. package/dist/encoding/Ini.js +3 -0
  387. package/dist/encoding/Ini.js.map +1 -1
  388. package/dist/encoding/JsonArray.d.ts +270 -0
  389. package/dist/encoding/JsonArray.d.ts.map +1 -0
  390. package/dist/encoding/JsonArray.js +691 -0
  391. package/dist/encoding/JsonArray.js.map +1 -0
  392. package/dist/encoding/Ndjson.d.ts +43 -4
  393. package/dist/encoding/Ndjson.d.ts.map +1 -1
  394. package/dist/encoding/Ndjson.js +169 -18
  395. package/dist/encoding/Ndjson.js.map +1 -1
  396. package/dist/encoding/SchemaBinary.d.ts +9 -1
  397. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  398. package/dist/encoding/SchemaBinary.js +12 -19
  399. package/dist/encoding/SchemaBinary.js.map +1 -1
  400. package/dist/encoding/Sse.js +1 -1
  401. package/dist/encoding/Sse.js.map +1 -1
  402. package/dist/encoding/Tar.d.ts +309 -0
  403. package/dist/encoding/Tar.d.ts.map +1 -0
  404. package/dist/encoding/Tar.js +1182 -0
  405. package/dist/encoding/Tar.js.map +1 -0
  406. package/dist/encoding/Toml.js +3 -3
  407. package/dist/encoding/Toml.js.map +1 -1
  408. package/dist/encoding/Xml.d.ts +464 -0
  409. package/dist/encoding/Xml.d.ts.map +1 -0
  410. package/dist/encoding/Xml.js +1619 -0
  411. package/dist/encoding/Xml.js.map +1 -0
  412. package/dist/encoding/Yaml.d.ts +6 -2
  413. package/dist/encoding/Yaml.d.ts.map +1 -1
  414. package/dist/encoding/Yaml.js +97 -34
  415. package/dist/encoding/Yaml.js.map +1 -1
  416. package/dist/encoding/Zip.d.ts +413 -0
  417. package/dist/encoding/Zip.d.ts.map +1 -0
  418. package/dist/encoding/Zip.js +1255 -0
  419. package/dist/encoding/Zip.js.map +1 -0
  420. package/dist/encoding/index.d.ts +20 -0
  421. package/dist/encoding/index.d.ts.map +1 -1
  422. package/dist/encoding/index.js +20 -0
  423. package/dist/encoding/index.js.map +1 -1
  424. package/dist/eventlog/EventJournal.d.ts +90 -5
  425. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  426. package/dist/eventlog/EventJournal.js +488 -228
  427. package/dist/eventlog/EventJournal.js.map +1 -1
  428. package/dist/eventlog/EventLog.d.ts +180 -12
  429. package/dist/eventlog/EventLog.d.ts.map +1 -1
  430. package/dist/eventlog/EventLog.js +394 -146
  431. package/dist/eventlog/EventLog.js.map +1 -1
  432. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  433. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  434. package/dist/eventlog/EventLogEncryption.js +97 -38
  435. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  436. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  437. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  438. package/dist/eventlog/EventLogMessage.js +45 -11
  439. package/dist/eventlog/EventLogMessage.js.map +1 -1
  440. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  441. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  442. package/dist/eventlog/EventLogRemote.js +51 -14
  443. package/dist/eventlog/EventLogRemote.js.map +1 -1
  444. package/dist/eventlog/EventLogServer.d.ts +46 -3
  445. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  446. package/dist/eventlog/EventLogServer.js +119 -19
  447. package/dist/eventlog/EventLogServer.js.map +1 -1
  448. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  449. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  450. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  451. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  452. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  453. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  454. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  455. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  456. package/dist/eventlog/EventRow.d.ts +288 -0
  457. package/dist/eventlog/EventRow.d.ts.map +1 -0
  458. package/dist/eventlog/EventRow.js +435 -0
  459. package/dist/eventlog/EventRow.js.map +1 -0
  460. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  461. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  462. package/dist/eventlog/SqlEventJournal.js +387 -159
  463. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  464. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  465. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  466. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  467. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  468. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  469. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  470. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  471. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  472. package/dist/eventlog/index.d.ts +5 -0
  473. package/dist/eventlog/index.d.ts.map +1 -1
  474. package/dist/eventlog/index.js +5 -0
  475. package/dist/eventlog/index.js.map +1 -1
  476. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  477. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  478. package/dist/eventlog/internal/conflicts.js +92 -0
  479. package/dist/eventlog/internal/conflicts.js.map +1 -0
  480. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  481. package/dist/graphql/GraphQLClient.js +12 -5
  482. package/dist/graphql/GraphQLClient.js.map +1 -1
  483. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  484. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  485. package/dist/graphql/GraphQLClientError.js +4 -18
  486. package/dist/graphql/GraphQLClientError.js.map +1 -1
  487. package/dist/graphql/GraphQLProtocol.d.ts +252 -11
  488. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  489. package/dist/graphql/GraphQLProtocol.js +99 -8
  490. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  491. package/dist/graphql/GraphQLResolver.d.ts +3 -1
  492. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  493. package/dist/graphql/GraphQLResolver.js +91 -19
  494. package/dist/graphql/GraphQLResolver.js.map +1 -1
  495. package/dist/http/FetchHttpClient.d.ts +13 -3
  496. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  497. package/dist/http/FetchHttpClient.js +56 -6
  498. package/dist/http/FetchHttpClient.js.map +1 -1
  499. package/dist/http/FindMyWay/internal/router.js +12 -1
  500. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  501. package/dist/http/Headers.d.ts +230 -3
  502. package/dist/http/Headers.d.ts.map +1 -1
  503. package/dist/http/Headers.js +267 -5
  504. package/dist/http/Headers.js.map +1 -1
  505. package/dist/http/HttpClient.d.ts +105 -0
  506. package/dist/http/HttpClient.d.ts.map +1 -1
  507. package/dist/http/HttpClient.js +69 -17
  508. package/dist/http/HttpClient.js.map +1 -1
  509. package/dist/http/HttpClientError.d.ts.map +1 -1
  510. package/dist/http/HttpClientError.js +8 -6
  511. package/dist/http/HttpClientError.js.map +1 -1
  512. package/dist/http/HttpClientRequest.d.ts +274 -7
  513. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  514. package/dist/http/HttpClientRequest.js +91 -3
  515. package/dist/http/HttpClientRequest.js.map +1 -1
  516. package/dist/http/HttpClientResponse.d.ts +53 -0
  517. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  518. package/dist/http/HttpClientResponse.js +47 -0
  519. package/dist/http/HttpClientResponse.js.map +1 -1
  520. package/dist/http/HttpEffect.d.ts +6 -2
  521. package/dist/http/HttpEffect.d.ts.map +1 -1
  522. package/dist/http/HttpEffect.js +21 -17
  523. package/dist/http/HttpEffect.js.map +1 -1
  524. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  525. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  526. package/dist/http/HttpIncomingMessage.js +3 -23
  527. package/dist/http/HttpIncomingMessage.js.map +1 -1
  528. package/dist/http/HttpMiddleware.d.ts +179 -2
  529. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  530. package/dist/http/HttpMiddleware.js +226 -18
  531. package/dist/http/HttpMiddleware.js.map +1 -1
  532. package/dist/http/HttpRouter.d.ts.map +1 -1
  533. package/dist/http/HttpRouter.js +58 -14
  534. package/dist/http/HttpRouter.js.map +1 -1
  535. package/dist/http/HttpServerError.d.ts +5 -2
  536. package/dist/http/HttpServerError.d.ts.map +1 -1
  537. package/dist/http/HttpServerError.js +11 -7
  538. package/dist/http/HttpServerError.js.map +1 -1
  539. package/dist/http/HttpServerRequest.d.ts +25 -5
  540. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  541. package/dist/http/HttpServerRequest.js +38 -12
  542. package/dist/http/HttpServerRequest.js.map +1 -1
  543. package/dist/http/HttpServerResponse.d.ts +17 -8
  544. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  545. package/dist/http/HttpServerResponse.js +37 -21
  546. package/dist/http/HttpServerResponse.js.map +1 -1
  547. package/dist/http/HttpStaticServer.d.ts +0 -12
  548. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  549. package/dist/http/HttpStaticServer.js +25 -17
  550. package/dist/http/HttpStaticServer.js.map +1 -1
  551. package/dist/http/HttpTraceContext.js +1 -1
  552. package/dist/http/HttpTraceContext.js.map +1 -1
  553. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  554. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  555. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  556. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  557. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  558. package/dist/http/MultipartParser/internal/headers.js +4 -12
  559. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  560. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  561. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  562. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  563. package/dist/http/Url.d.ts.map +1 -1
  564. package/dist/http/Url.js +8 -2
  565. package/dist/http/Url.js.map +1 -1
  566. package/dist/http/UrlParams.d.ts +112 -8
  567. package/dist/http/UrlParams.d.ts.map +1 -1
  568. package/dist/http/UrlParams.js +141 -14
  569. package/dist/http/UrlParams.js.map +1 -1
  570. package/dist/http/internal/compression.d.ts +1 -1
  571. package/dist/http/internal/compression.d.ts.map +1 -1
  572. package/dist/http/internal/compression.js +2 -10
  573. package/dist/http/internal/compression.js.map +1 -1
  574. package/dist/http/internal/compressionBody.d.ts +2 -0
  575. package/dist/http/internal/compressionBody.d.ts.map +1 -0
  576. package/dist/http/internal/compressionBody.js +36 -0
  577. package/dist/http/internal/compressionBody.js.map +1 -0
  578. package/dist/http/internal/decompression.d.ts +2 -0
  579. package/dist/http/internal/decompression.d.ts.map +1 -0
  580. package/dist/http/internal/decompression.js +168 -0
  581. package/dist/http/internal/decompression.js.map +1 -0
  582. package/dist/http/internal/lazyStream.d.ts +2 -0
  583. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  584. package/dist/http/internal/lazyStream.js +18 -0
  585. package/dist/http/internal/lazyStream.js.map +1 -0
  586. package/dist/http/internal/requestState.d.ts +2 -0
  587. package/dist/http/internal/requestState.d.ts.map +1 -0
  588. package/dist/http/internal/requestState.js +28 -0
  589. package/dist/http/internal/requestState.js.map +1 -0
  590. package/dist/http/internal/tracing.js +14 -4
  591. package/dist/http/internal/tracing.js.map +1 -1
  592. package/dist/http/internal/urlParams.d.ts +2 -0
  593. package/dist/http/internal/urlParams.d.ts.map +1 -0
  594. package/dist/http/internal/urlParams.js +4 -0
  595. package/dist/http/internal/urlParams.js.map +1 -0
  596. package/dist/http/internal/webResponse.d.ts +2 -0
  597. package/dist/http/internal/webResponse.d.ts.map +1 -0
  598. package/dist/http/internal/webResponse.js +12 -0
  599. package/dist/http/internal/webResponse.js.map +1 -0
  600. package/dist/http-api/HttpApi.js +1 -1
  601. package/dist/http-api/HttpApi.js.map +1 -1
  602. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  603. package/dist/http-api/HttpApiBuilder.js +121 -18
  604. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  605. package/dist/http-api/HttpApiClient.d.ts +29 -4
  606. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  607. package/dist/http-api/HttpApiClient.js +85 -24
  608. package/dist/http-api/HttpApiClient.js.map +1 -1
  609. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  610. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  611. package/dist/http-api/HttpApiEndpoint.js +49 -5
  612. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  613. package/dist/http-api/HttpApiError.d.ts +58 -0
  614. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  615. package/dist/http-api/HttpApiError.js +38 -12
  616. package/dist/http-api/HttpApiError.js.map +1 -1
  617. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  618. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  619. package/dist/http-api/HttpApiScalar.js +6 -3
  620. package/dist/http-api/HttpApiScalar.js.map +1 -1
  621. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  622. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  623. package/dist/http-api/HttpApiSchema.js +137 -4
  624. package/dist/http-api/HttpApiSchema.js.map +1 -1
  625. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  626. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  627. package/dist/http-api/HttpApiSwagger.js +14 -4
  628. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  629. package/dist/http-api/HttpApiTest.d.ts +13 -2
  630. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  631. package/dist/http-api/HttpApiTest.js +30 -9
  632. package/dist/http-api/HttpApiTest.js.map +1 -1
  633. package/dist/http-api/OpenApi.d.ts +17 -3
  634. package/dist/http-api/OpenApi.d.ts.map +1 -1
  635. package/dist/http-api/OpenApi.js +57 -32
  636. package/dist/http-api/OpenApi.js.map +1 -1
  637. package/dist/http-api/internal/path.js +35 -10
  638. package/dist/http-api/internal/path.js.map +1 -1
  639. package/dist/index.d.ts +20 -0
  640. package/dist/index.d.ts.map +1 -1
  641. package/dist/index.js +20 -0
  642. package/dist/index.js.map +1 -1
  643. package/dist/internal/core.js +18 -2
  644. package/dist/internal/core.js.map +1 -1
  645. package/dist/internal/dateTime.js +19 -7
  646. package/dist/internal/dateTime.js.map +1 -1
  647. package/dist/internal/effect.js +89 -76
  648. package/dist/internal/effect.js.map +1 -1
  649. package/dist/internal/graphql.js +12 -2
  650. package/dist/internal/graphql.js.map +1 -1
  651. package/dist/internal/hashMap.js +2 -2
  652. package/dist/internal/hashMap.js.map +1 -1
  653. package/dist/internal/hydration.d.ts +2 -0
  654. package/dist/internal/hydration.d.ts.map +1 -0
  655. package/dist/internal/hydration.js +15 -0
  656. package/dist/internal/hydration.js.map +1 -0
  657. package/dist/internal/inflate.d.ts +2 -0
  658. package/dist/internal/inflate.d.ts.map +1 -0
  659. package/dist/internal/inflate.js +680 -0
  660. package/dist/internal/inflate.js.map +1 -0
  661. package/dist/internal/record.js +6 -0
  662. package/dist/internal/record.js.map +1 -1
  663. package/dist/internal/request.js +20 -7
  664. package/dist/internal/request.js.map +1 -1
  665. package/dist/internal/schedule.js +17 -22
  666. package/dist/internal/schedule.js.map +1 -1
  667. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  668. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  669. package/dist/internal/schema/interpreter.js +51 -36
  670. package/dist/internal/schema/interpreter.js.map +1 -1
  671. package/dist/internal/schema/standardSchema.js +34 -33
  672. package/dist/internal/schema/standardSchema.js.map +1 -1
  673. package/dist/internal/schema/toCodeDocument.js +7 -2
  674. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  675. package/dist/internal/schema/toCodec.js +86 -1
  676. package/dist/internal/schema/toCodec.js.map +1 -1
  677. package/dist/internal/schema/toFormatter.js +5 -5
  678. package/dist/internal/schema/toFormatter.js.map +1 -1
  679. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  680. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  681. package/dist/internal/trie.js +1 -3
  682. package/dist/internal/trie.js.map +1 -1
  683. package/dist/internal/uuid.js +7 -3
  684. package/dist/internal/uuid.js.map +1 -1
  685. package/dist/internal/version.js +1 -1
  686. package/dist/net/NetAddress.d.ts.map +1 -1
  687. package/dist/net/NetAddress.js +2 -8
  688. package/dist/net/NetAddress.js.map +1 -1
  689. package/dist/observability/Otlp.d.ts +15 -0
  690. package/dist/observability/Otlp.d.ts.map +1 -1
  691. package/dist/observability/Otlp.js +3 -0
  692. package/dist/observability/Otlp.js.map +1 -1
  693. package/dist/observability/OtlpExporter.d.ts +8 -0
  694. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  695. package/dist/observability/OtlpExporter.js +15 -13
  696. package/dist/observability/OtlpExporter.js.map +1 -1
  697. package/dist/observability/OtlpLogger.d.ts +17 -0
  698. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  699. package/dist/observability/OtlpLogger.js +14 -1
  700. package/dist/observability/OtlpLogger.js.map +1 -1
  701. package/dist/observability/OtlpMetrics.d.ts +17 -0
  702. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  703. package/dist/observability/OtlpMetrics.js +18 -3
  704. package/dist/observability/OtlpMetrics.js.map +1 -1
  705. package/dist/observability/OtlpResource.d.ts +3 -1
  706. package/dist/observability/OtlpResource.d.ts.map +1 -1
  707. package/dist/observability/OtlpResource.js +11 -4
  708. package/dist/observability/OtlpResource.js.map +1 -1
  709. package/dist/observability/OtlpSerialization.d.ts +5 -0
  710. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  711. package/dist/observability/OtlpSerialization.js +14 -3
  712. package/dist/observability/OtlpSerialization.js.map +1 -1
  713. package/dist/observability/OtlpTracer.d.ts +17 -0
  714. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  715. package/dist/observability/OtlpTracer.js +15 -2
  716. package/dist/observability/OtlpTracer.js.map +1 -1
  717. package/dist/observability/internal/protobuf.d.ts +0 -9
  718. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  719. package/dist/observability/internal/protobuf.js +2 -10
  720. package/dist/observability/internal/protobuf.js.map +1 -1
  721. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  722. package/dist/persistence/PersistedCache.js +1 -1
  723. package/dist/persistence/PersistedCache.js.map +1 -1
  724. package/dist/persistence/PersistedQueue.d.ts +6 -2
  725. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  726. package/dist/persistence/PersistedQueue.js +162 -84
  727. package/dist/persistence/PersistedQueue.js.map +1 -1
  728. package/dist/persistence/Persistence.d.ts +28 -0
  729. package/dist/persistence/Persistence.d.ts.map +1 -1
  730. package/dist/persistence/Persistence.js +36 -8
  731. package/dist/persistence/Persistence.js.map +1 -1
  732. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  733. package/dist/persistence/RateLimiter.js +8 -12
  734. package/dist/persistence/RateLimiter.js.map +1 -1
  735. package/dist/persistence/UserDirectories.d.ts +129 -0
  736. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  737. package/dist/persistence/UserDirectories.js +178 -0
  738. package/dist/persistence/UserDirectories.js.map +1 -0
  739. package/dist/persistence/index.d.ts +5 -0
  740. package/dist/persistence/index.d.ts.map +1 -1
  741. package/dist/persistence/index.js +5 -0
  742. package/dist/persistence/index.js.map +1 -1
  743. package/dist/process/ChildProcess.d.ts +2 -1
  744. package/dist/process/ChildProcess.d.ts.map +1 -1
  745. package/dist/process/ChildProcess.js.map +1 -1
  746. package/dist/reactivity/AsyncResult.d.ts +6 -0
  747. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  748. package/dist/reactivity/AsyncResult.js +28 -1
  749. package/dist/reactivity/AsyncResult.js.map +1 -1
  750. package/dist/reactivity/Atom.d.ts +69 -30
  751. package/dist/reactivity/Atom.d.ts.map +1 -1
  752. package/dist/reactivity/Atom.js +40 -15
  753. package/dist/reactivity/Atom.js.map +1 -1
  754. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  755. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  756. package/dist/reactivity/AtomHttpApi.js +1 -1
  757. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  758. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  759. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  760. package/dist/reactivity/AtomRegistry.js +47 -10
  761. package/dist/reactivity/AtomRegistry.js.map +1 -1
  762. package/dist/reactivity/AtomRpc.d.ts +3 -3
  763. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  764. package/dist/reactivity/AtomRpc.js +1 -1
  765. package/dist/reactivity/AtomRpc.js.map +1 -1
  766. package/dist/reactivity/Hydration.d.ts.map +1 -1
  767. package/dist/reactivity/Hydration.js +46 -12
  768. package/dist/reactivity/Hydration.js.map +1 -1
  769. package/dist/reactivity/Reactivity.d.ts +71 -7
  770. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  771. package/dist/reactivity/Reactivity.js +21 -12
  772. package/dist/reactivity/Reactivity.js.map +1 -1
  773. package/dist/rpc/Rpc.d.ts +18 -0
  774. package/dist/rpc/Rpc.d.ts.map +1 -1
  775. package/dist/rpc/Rpc.js +20 -0
  776. package/dist/rpc/Rpc.js.map +1 -1
  777. package/dist/rpc/RpcClient.d.ts +26 -2
  778. package/dist/rpc/RpcClient.d.ts.map +1 -1
  779. package/dist/rpc/RpcClient.js +202 -61
  780. package/dist/rpc/RpcClient.js.map +1 -1
  781. package/dist/rpc/RpcSerialization.d.ts +15 -0
  782. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  783. package/dist/rpc/RpcSerialization.js +21 -5
  784. package/dist/rpc/RpcSerialization.js.map +1 -1
  785. package/dist/rpc/RpcServer.d.ts.map +1 -1
  786. package/dist/rpc/RpcServer.js +9 -18
  787. package/dist/rpc/RpcServer.js.map +1 -1
  788. package/dist/schema/Model.d.ts +1 -1
  789. package/dist/schema/VariantSchema.d.ts +22 -3
  790. package/dist/schema/VariantSchema.d.ts.map +1 -1
  791. package/dist/schema/VariantSchema.js +32 -18
  792. package/dist/schema/VariantSchema.js.map +1 -1
  793. package/dist/socket/Socket.d.ts +23 -1
  794. package/dist/socket/Socket.d.ts.map +1 -1
  795. package/dist/socket/Socket.js +36 -3
  796. package/dist/socket/Socket.js.map +1 -1
  797. package/dist/sql/Migrator.d.ts.map +1 -1
  798. package/dist/sql/Migrator.js +15 -3
  799. package/dist/sql/Migrator.js.map +1 -1
  800. package/dist/sql/SqlClient.d.ts +151 -12
  801. package/dist/sql/SqlClient.d.ts.map +1 -1
  802. package/dist/sql/SqlClient.js +156 -34
  803. package/dist/sql/SqlClient.js.map +1 -1
  804. package/dist/sql/SqlResolver.d.ts +9 -0
  805. package/dist/sql/SqlResolver.d.ts.map +1 -1
  806. package/dist/sql/SqlResolver.js +9 -0
  807. package/dist/sql/SqlResolver.js.map +1 -1
  808. package/dist/sql/Statement.d.ts +3 -1
  809. package/dist/sql/Statement.d.ts.map +1 -1
  810. package/dist/sql/Statement.js +24 -5
  811. package/dist/sql/Statement.js.map +1 -1
  812. package/dist/testing/TestClock.d.ts +16 -3
  813. package/dist/testing/TestClock.d.ts.map +1 -1
  814. package/dist/testing/TestClock.js +115 -23
  815. package/dist/testing/TestClock.js.map +1 -1
  816. package/dist/testing/TestSchema.d.ts +7 -1
  817. package/dist/testing/TestSchema.d.ts.map +1 -1
  818. package/dist/testing/TestSchema.js +9 -3
  819. package/dist/testing/TestSchema.js.map +1 -1
  820. package/dist/workflow/Activity.js +1 -0
  821. package/dist/workflow/Activity.js.map +1 -1
  822. package/dist/workflow/Workflow.d.ts +22 -0
  823. package/dist/workflow/Workflow.d.ts.map +1 -1
  824. package/dist/workflow/Workflow.js +15 -3
  825. package/dist/workflow/Workflow.js.map +1 -1
  826. package/dist/workflow/WorkflowEngine.d.ts +20 -1
  827. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  828. package/dist/workflow/WorkflowEngine.js +52 -24
  829. package/dist/workflow/WorkflowEngine.js.map +1 -1
  830. package/package.json +13 -3
  831. package/src/Array.ts +223 -61
  832. package/src/Bytes.ts +111 -0
  833. package/src/Channel.ts +287 -439
  834. package/src/ChannelSchema.ts +1 -49
  835. package/src/Chunk.ts +55 -61
  836. package/src/Config.ts +12 -86
  837. package/src/ConfigProvider.ts +41 -44
  838. package/src/Cron.ts +6 -3
  839. package/src/Duration.ts +70 -21
  840. package/src/Effect.ts +642 -220
  841. package/src/Equivalence.ts +7 -4
  842. package/src/Exit.ts +24 -9
  843. package/src/FiberHandle.ts +10 -9
  844. package/src/FiberMap.ts +13 -66
  845. package/src/FileSystem.ts +33 -9
  846. package/src/Graph.ts +171 -1263
  847. package/src/HashSet.ts +0 -60
  848. package/src/Iterable.ts +15 -14
  849. package/src/JsonSchema.ts +28 -3
  850. package/src/Layer.ts +2 -2
  851. package/src/ManagedRuntime.ts +72 -6
  852. package/src/Match.ts +65 -12
  853. package/src/Metric.ts +249 -507
  854. package/src/MutableHashMap.ts +4 -473
  855. package/src/Number.ts +2 -2
  856. package/src/Optic.ts +17 -332
  857. package/src/Path.ts +61 -8
  858. package/src/PubSub.ts +12 -7
  859. package/src/Queue.ts +5 -37
  860. package/src/Random.ts +1 -1
  861. package/src/RcMap.ts +14 -8
  862. package/src/Record.ts +51 -0
  863. package/src/Ref.ts +7 -104
  864. package/src/References.ts +5 -4
  865. package/src/RequestResolver.ts +46 -87
  866. package/src/Resource.ts +1 -1
  867. package/src/Runtime.ts +19 -18
  868. package/src/Schedule.ts +2 -94
  869. package/src/Schema.ts +596 -348
  870. package/src/SchemaAST.ts +20 -9
  871. package/src/SchemaGetter.ts +22 -5
  872. package/src/SchemaIssue.ts +44 -53
  873. package/src/SchemaRepresentation.ts +64 -1
  874. package/src/SchemaTransformation.ts +1 -1
  875. package/src/Scope.ts +12 -2
  876. package/src/ScopedCache.ts +17 -142
  877. package/src/SemVer.ts +1528 -0
  878. package/src/SemVerRange.ts +883 -0
  879. package/src/Sink.ts +6 -2
  880. package/src/Stream.ts +334 -1011
  881. package/src/String.ts +25 -12
  882. package/src/TextDiff.ts +766 -0
  883. package/src/TxHashMap.ts +1 -103
  884. package/src/TxHashSet.ts +48 -753
  885. package/src/TxRef.ts +4 -2
  886. package/src/ai/AiError.ts +69 -5
  887. package/src/ai/Chat.ts +10 -5
  888. package/src/ai/Decision.ts +119 -22
  889. package/src/ai/DecisionModel.ts +265 -109
  890. package/src/ai/EmbeddingModel.ts +25 -13
  891. package/src/ai/LanguageModel.ts +57 -51
  892. package/src/ai/McpClient.ts +1211 -0
  893. package/src/ai/McpClientError.ts +329 -0
  894. package/src/ai/McpProtocol.ts +2 -2
  895. package/src/ai/McpSchema.ts +153 -35
  896. package/src/ai/McpServer.ts +232 -275
  897. package/src/ai/Prompt.ts +49 -35
  898. package/src/ai/Response.ts +195 -65
  899. package/src/ai/Tool.ts +12 -4
  900. package/src/ai/Toolkit.ts +78 -10
  901. package/src/ai/index.ts +12 -0
  902. package/src/ai/internal/mcpCore.ts +13 -14
  903. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  904. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  905. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  906. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  907. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  908. package/src/ai/internal/mcpProtocol.ts +22 -2
  909. package/src/ai/internal/mcpRuntime.ts +3 -4
  910. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  911. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  912. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  913. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  914. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  915. package/src/cli/CliError.ts +49 -4
  916. package/src/cli/Command.ts +316 -9
  917. package/src/cli/Completions.ts +10 -0
  918. package/src/cli/Flag.ts +218 -0
  919. package/src/cli/GlobalFlag.ts +3 -3
  920. package/src/cli/Param.ts +218 -0
  921. package/src/cli/TerminalCapabilities.ts +156 -0
  922. package/src/cli/index.ts +6 -0
  923. package/src/cli/internal/command.ts +10 -4
  924. package/src/cli/internal/completions/bash.ts +7 -5
  925. package/src/cli/internal/completions/descriptor.ts +20 -1
  926. package/src/cli/internal/completions/fish.ts +12 -10
  927. package/src/cli/internal/completions/powershell.ts +25 -13
  928. package/src/cli/internal/completions/zsh.ts +15 -8
  929. package/src/cli/internal/formatter.ts +18 -0
  930. package/src/cli/internal/lexer.ts +12 -5
  931. package/src/cli/internal/parser.ts +43 -14
  932. package/src/cli/internal/wizard.ts +2 -1
  933. package/src/cluster/ClusterCron.ts +94 -35
  934. package/src/cluster/ClusterMetrics.ts +149 -7
  935. package/src/cluster/ClusterWorkflowEngine.ts +164 -53
  936. package/src/cluster/Entity.ts +4 -0
  937. package/src/cluster/MessageStorage.ts +21 -3
  938. package/src/cluster/Runners.ts +145 -72
  939. package/src/cluster/Sharding.ts +118 -38
  940. package/src/cluster/ShardingConfig.ts +15 -0
  941. package/src/cluster/SqlMessageStorage.ts +58 -55
  942. package/src/cluster/SqlRunnerStorage.ts +10 -4
  943. package/src/cluster/internal/entityManager.ts +81 -11
  944. package/src/devtools/DevTools.ts +3 -2
  945. package/src/devtools/DevToolsClient.ts +27 -10
  946. package/src/encoding/Base64Url.ts +31 -0
  947. package/src/encoding/Ini.ts +3 -0
  948. package/src/encoding/JsonArray.ts +849 -0
  949. package/src/encoding/Ndjson.ts +211 -20
  950. package/src/encoding/SchemaBinary.ts +14 -48
  951. package/src/encoding/Sse.ts +1 -1
  952. package/src/encoding/Tar.ts +1417 -0
  953. package/src/encoding/Toml.ts +3 -3
  954. package/src/encoding/Xml.ts +2037 -0
  955. package/src/encoding/Yaml.ts +108 -36
  956. package/src/encoding/Zip.ts +1558 -0
  957. package/src/encoding/index.ts +24 -0
  958. package/src/eventlog/EventJournal.ts +611 -227
  959. package/src/eventlog/EventLog.ts +496 -196
  960. package/src/eventlog/EventLogEncryption.ts +128 -43
  961. package/src/eventlog/EventLogMessage.ts +62 -11
  962. package/src/eventlog/EventLogRemote.ts +77 -21
  963. package/src/eventlog/EventLogServer.ts +162 -20
  964. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  965. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  966. package/src/eventlog/EventRow.ts +706 -0
  967. package/src/eventlog/SqlEventJournal.ts +453 -173
  968. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  969. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  970. package/src/eventlog/index.ts +6 -0
  971. package/src/eventlog/internal/conflicts.ts +123 -0
  972. package/src/graphql/GraphQLClient.ts +17 -5
  973. package/src/graphql/GraphQLClientError.ts +5 -12
  974. package/src/graphql/GraphQLProtocol.ts +277 -20
  975. package/src/graphql/GraphQLResolver.ts +109 -230
  976. package/src/http/FetchHttpClient.ts +61 -8
  977. package/src/http/FindMyWay/internal/router.ts +13 -1
  978. package/src/http/Headers.ts +343 -163
  979. package/src/http/HttpClient.ts +144 -136
  980. package/src/http/HttpClientError.ts +10 -6
  981. package/src/http/HttpClientRequest.ts +315 -11
  982. package/src/http/HttpClientResponse.ts +71 -0
  983. package/src/http/HttpEffect.ts +25 -33
  984. package/src/http/HttpIncomingMessage.ts +3 -23
  985. package/src/http/HttpMiddleware.ts +265 -28
  986. package/src/http/HttpRouter.ts +67 -14
  987. package/src/http/HttpServerError.ts +14 -7
  988. package/src/http/HttpServerRequest.ts +73 -14
  989. package/src/http/HttpServerResponse.ts +49 -23
  990. package/src/http/HttpStaticServer.ts +29 -19
  991. package/src/http/HttpTraceContext.ts +1 -1
  992. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  993. package/src/http/MultipartParser/internal/headers.ts +4 -16
  994. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  995. package/src/http/Url.ts +8 -2
  996. package/src/http/UrlParams.ts +225 -26
  997. package/src/http/internal/compression.ts +3 -17
  998. package/src/http/internal/compressionBody.ts +56 -0
  999. package/src/http/internal/decompression.ts +235 -0
  1000. package/src/http/internal/lazyStream.ts +25 -0
  1001. package/src/http/internal/requestState.ts +33 -0
  1002. package/src/http/internal/tracing.ts +21 -4
  1003. package/src/http/internal/urlParams.ts +5 -0
  1004. package/src/http/internal/webResponse.ts +20 -0
  1005. package/src/http-api/HttpApi.ts +1 -1
  1006. package/src/http-api/HttpApiBuilder.ts +151 -23
  1007. package/src/http-api/HttpApiClient.ts +160 -31
  1008. package/src/http-api/HttpApiEndpoint.ts +144 -33
  1009. package/src/http-api/HttpApiError.ts +55 -0
  1010. package/src/http-api/HttpApiScalar.ts +4 -3
  1011. package/src/http-api/HttpApiSchema.ts +275 -13
  1012. package/src/http-api/HttpApiSwagger.ts +11 -4
  1013. package/src/http-api/HttpApiTest.ts +33 -9
  1014. package/src/http-api/OpenApi.ts +84 -42
  1015. package/src/http-api/internal/path.ts +40 -12
  1016. package/src/index.ts +24 -0
  1017. package/src/internal/core.ts +22 -2
  1018. package/src/internal/dateTime.ts +20 -7
  1019. package/src/internal/effect.ts +125 -88
  1020. package/src/internal/graphql.ts +30 -7
  1021. package/src/internal/hashMap.ts +2 -2
  1022. package/src/internal/hydration.ts +15 -0
  1023. package/src/internal/inflate.ts +710 -0
  1024. package/src/internal/record.ts +6 -0
  1025. package/src/internal/request.ts +21 -6
  1026. package/src/internal/schedule.ts +20 -39
  1027. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  1028. package/src/internal/schema/interpreter.ts +58 -45
  1029. package/src/internal/schema/standardSchema.ts +32 -30
  1030. package/src/internal/schema/toCodeDocument.ts +8 -3
  1031. package/src/internal/schema/toCodec.ts +116 -1
  1032. package/src/internal/schema/toFormatter.ts +6 -6
  1033. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  1034. package/src/internal/trie.ts +1 -3
  1035. package/src/internal/uuid.ts +15 -10
  1036. package/src/internal/version.ts +1 -1
  1037. package/src/net/NetAddress.ts +2 -9
  1038. package/src/observability/Otlp.ts +18 -0
  1039. package/src/observability/OtlpExporter.ts +19 -15
  1040. package/src/observability/OtlpLogger.ts +31 -2
  1041. package/src/observability/OtlpMetrics.ts +35 -4
  1042. package/src/observability/OtlpResource.ts +16 -6
  1043. package/src/observability/OtlpSerialization.ts +17 -3
  1044. package/src/observability/OtlpTracer.ts +32 -3
  1045. package/src/observability/internal/protobuf.ts +2 -10
  1046. package/src/persistence/PersistedCache.ts +3 -1
  1047. package/src/persistence/PersistedQueue.ts +223 -153
  1048. package/src/persistence/Persistence.ts +64 -30
  1049. package/src/persistence/RateLimiter.ts +18 -21
  1050. package/src/persistence/UserDirectories.ts +273 -0
  1051. package/src/persistence/index.ts +6 -0
  1052. package/src/process/ChildProcess.ts +2 -1
  1053. package/src/reactivity/AsyncResult.ts +35 -38
  1054. package/src/reactivity/Atom.ts +134 -166
  1055. package/src/reactivity/AtomHttpApi.ts +10 -16
  1056. package/src/reactivity/AtomRegistry.ts +53 -30
  1057. package/src/reactivity/AtomRpc.ts +6 -22
  1058. package/src/reactivity/Hydration.ts +53 -12
  1059. package/src/reactivity/Reactivity.ts +97 -39
  1060. package/src/rpc/Rpc.ts +21 -0
  1061. package/src/rpc/RpcClient.ts +285 -104
  1062. package/src/rpc/RpcSerialization.ts +21 -5
  1063. package/src/rpc/RpcServer.ts +11 -20
  1064. package/src/schema/VariantSchema.ts +86 -22
  1065. package/src/socket/Socket.ts +45 -20
  1066. package/src/sql/Migrator.ts +19 -9
  1067. package/src/sql/SqlClient.ts +275 -36
  1068. package/src/sql/SqlResolver.ts +9 -0
  1069. package/src/sql/Statement.ts +35 -8
  1070. package/src/testing/TestClock.ts +147 -29
  1071. package/src/testing/TestSchema.ts +9 -3
  1072. package/src/workflow/Activity.ts +1 -0
  1073. package/src/workflow/Workflow.ts +31 -5
  1074. package/src/workflow/WorkflowEngine.ts +93 -31
  1075. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1076. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1077. package/dist/http/internal/preResponseHandler.js +0 -14
  1078. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1079. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -18,8 +18,9 @@ import { identity } from "../Function.ts"
18
18
  import * as Option from "../Option.ts"
19
19
  import { hasProperty } from "../Predicate.ts"
20
20
  import type * as Queue from "../Queue.ts"
21
- import { Reactivity } from "../reactivity/Reactivity.ts"
21
+ import { type KeysInput, Reactivity } from "../reactivity/Reactivity.ts"
22
22
  import type { ReadonlyRecord } from "../Record.ts"
23
+ import { UnhandledLogLevel } from "../References.ts"
23
24
  import * as Scope from "../Scope.ts"
24
25
  import * as Semaphore from "../Semaphore.ts"
25
26
  import * as Stream from "../Stream.ts"
@@ -55,8 +56,39 @@ export interface SqlClient extends Constructor {
55
56
 
56
57
  readonly reserve: Effect.Effect<Connection.Connection, SqlError, Scope.Scope>
57
58
 
59
+ /**
60
+ * Identifies the driver that created this client.
61
+ *
62
+ * **Details**
63
+ *
64
+ * Effect drivers use their package name without the `@effect/sql-` prefix,
65
+ * such as `"pg"`, `"pglite"` or `"sqlite-node"`. Unlike the compiler
66
+ * dialect, it distinguishes drivers that share a SQL dialect but manage
67
+ * connections differently.
68
+ */
69
+ readonly driver: string
70
+
58
71
  /**
59
72
  * With the given effect, ensure all sql queries are run in a transaction.
73
+ *
74
+ * **Details**
75
+ *
76
+ * Inside the transaction, `Reactivity.invalidate` and `Reactivity.mutation`
77
+ * invalidate once the outermost transaction commits, and not at all if it
78
+ * rolls back.
79
+ *
80
+ * To start a top-level transaction with a statement other than the
81
+ * client's, such as one that sets its isolation level, provide
82
+ * `BeginTransaction`.
83
+ *
84
+ * **Gotchas**
85
+ *
86
+ * Deferred invalidations run individually after the commit and don't join an
87
+ * enclosing `Reactivity.withBatch`. Only the `Reactivity` service read from
88
+ * the transaction's context defers, and a fiber that outlives the
89
+ * transaction can't defer through it, as with `afterCommit`. Transactions
90
+ * that don't go through `makeWithTransaction`, such as those of
91
+ * `@effect/sql-sqlite-do`, invalidate immediately.
60
92
  */
61
93
  readonly withTransaction: <R, E, A>(
62
94
  self: Effect.Effect<A, E, R>
@@ -67,11 +99,53 @@ export interface SqlClient extends Constructor {
67
99
  */
68
100
  readonly transactionService: Context.Service<TransactionConnection, TransactionConnection.Service>
69
101
 
102
+ /**
103
+ * Runs `effect` once the outermost transaction of this client commits, or
104
+ * immediately, and interruptibly, when no transaction is open.
105
+ *
106
+ * **When to use**
107
+ *
108
+ * Use to signal committed changes, such as waking workers, invalidating
109
+ * caches or notifying subscribers.
110
+ *
111
+ * **Details**
112
+ *
113
+ * Callbacks are discarded if the transaction rolls back or its `COMMIT`
114
+ * fails, and callbacks registered in a savepoint that rolls back are
115
+ * discarded even if the outer transaction commits. After a successful
116
+ * `COMMIT`, callbacks run once releasing the connection has been attempted,
117
+ * before `withTransaction` returns.
118
+ *
119
+ * A callback runs with the services that were in scope when it was
120
+ * registered, minus this client's transaction, so a callback that queries
121
+ * uses a new connection. A callback that dies is logged at
122
+ * `References.UnhandledLogLevel` and the rest still run.
123
+ *
124
+ * Callbacks run in registration order within a transaction or savepoint,
125
+ * and a committed savepoint's callbacks follow those already registered in
126
+ * the enclosing level. Callbacks registered concurrently from several
127
+ * fibers are not guaranteed to run in registration order.
128
+ *
129
+ * **Gotchas**
130
+ *
131
+ * Callbacks are lost if the process exits before they run or the outcome of
132
+ * `COMMIT` is unknown, so work that must happen belongs in a table written
133
+ * in the same transaction. After `COMMIT`, callbacks run uninterruptibly,
134
+ * even if the fiber was interrupted or releasing the connection failed, and
135
+ * `withTransaction` waits for them, so keep them short and fork
136
+ * long-running work.
137
+ * Registering after the transaction has ended is a defect.
138
+ *
139
+ * Transactions that don't go through `makeWithTransaction`, such as those
140
+ * of `@effect/sql-sqlite-do`, run callbacks immediately.
141
+ */
142
+ readonly afterCommit: <R>(effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>
143
+
70
144
  /**
71
145
  * Use the Reactivity service to create a reactive query.
72
146
  */
73
147
  readonly reactive: <A, E, R>(
74
- keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>,
148
+ keys: KeysInput,
75
149
  effect: Effect.Effect<A, E, R>
76
150
  ) => Stream.Stream<A, E, R>
77
151
 
@@ -80,7 +154,7 @@ export interface SqlClient extends Constructor {
80
154
  * query.
81
155
  */
82
156
  readonly reactiveMailbox: <A, E, R>(
83
- keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>,
157
+ keys: KeysInput,
84
158
  effect: Effect.Effect<A, E, R>
85
159
  ) => Effect.Effect<Queue.Dequeue<A, E>, never, R | Scope.Scope>
86
160
  }
@@ -126,6 +200,10 @@ export declare namespace SqlClient {
126
200
  readonly borrower?: Connection.Borrower | undefined
127
201
  readonly compiler: Compiler
128
202
  readonly transactionAcquirer?: Connection.Acquirer
203
+ /**
204
+ * Identifies the driver creating the client, exposed as `SqlClient.driver`.
205
+ */
206
+ readonly driver: string
129
207
  readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
130
208
  readonly transactionService?: Context.Service<TransactionConnection, TransactionConnection.Service>
131
209
  /**
@@ -147,6 +225,11 @@ export declare namespace SqlClient {
147
225
  readonly commit?: string | ((conn: Connection.Connection) => Effect.Effect<void, SqlError>) | undefined
148
226
  /** Cleanup on the same connection when COMMIT fails. Omit when the driver already ends the transaction. */
149
227
  readonly onCommitFailure?: ((conn: Connection.Connection) => Effect.Effect<void, SqlError>) | undefined
228
+ /**
229
+ * Reports whether a transaction is open. If false, rollback and savepoint
230
+ * cleanup are skipped.
231
+ */
232
+ readonly isTransaction?: ((conn: Connection.Connection) => boolean) | undefined
150
233
  readonly savepoint?: ((name: string) => string) | undefined
151
234
  /**
152
235
  * SQL to release a nested savepoint after success or a successful rollback.
@@ -195,28 +278,29 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
195
278
  const control = options.prepareTransactionControls === true
196
279
  ? (conn: Connection.Connection, sql: string) => conn.execute(sql, [], undefined)
197
280
  : (conn: Connection.Connection, sql: string) => conn.executeUnprepared(sql, [], undefined)
281
+ const isTransaction = options.isTransaction
282
+ const cleanup = isTransaction
283
+ ? (conn: Connection.Connection, sql: string) => isTransaction(conn) ? control(conn, sql) : Effect.void
284
+ : control
198
285
  const withTransaction = makeWithTransaction({
199
286
  transactionService,
200
287
  spanAttributes: options.spanAttributes,
201
- acquireConnection: Effect.flatMap(
202
- Scope.make(),
203
- (scope) =>
204
- Scope.provide(transactionAcquirer!, scope).pipe(
205
- Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))),
206
- Effect.map((conn) => [scope, conn] as const)
207
- )
208
- ),
209
- begin: (conn) => control(conn, beginTransaction),
288
+ acquireConnection: (restore) => restore(transactionAcquirer!),
289
+ // Unlike the client's own, a provided statement isn't fixed, so it isn't prepared.
290
+ begin: (conn, statement) =>
291
+ statement === undefined ? control(conn, beginTransaction) : conn.executeUnprepared(statement, [], undefined),
210
292
  savepoint: (conn, id) => control(conn, savepoint(`effect_sql_${id}`)),
211
293
  releaseSavepoint: releaseSavepoint
212
- ? (conn, id) => control(conn, releaseSavepoint(`effect_sql_${id}`))
294
+ ? (conn, id) => cleanup(conn, releaseSavepoint(`effect_sql_${id}`))
213
295
  : undefined,
214
296
  commit: typeof commit === "string" ? (conn) => control(conn, commit) : commit,
215
297
  onCommitFailure: options.onCommitFailure,
216
- rollback: (conn) => control(conn, rollback),
217
- rollbackSavepoint: (conn, id) => control(conn, rollbackSavepoint(`effect_sql_${id}`))
298
+ rollback: (conn) => cleanup(conn, rollback),
299
+ rollbackSavepoint: (conn, id) => cleanup(conn, rollbackSavepoint(`effect_sql_${id}`))
218
300
  })
219
301
 
302
+ const afterCommit = makeAfterCommit(transactionService)
303
+
220
304
  const reactivity = yield* Reactivity
221
305
  // A statement inside a transaction has to run on that transaction's
222
306
  // connection, so borrowing is only for statements that reach the pool.
@@ -236,7 +320,9 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
236
320
  safe: undefined as any,
237
321
  withTransaction,
238
322
  transactionService,
323
+ afterCommit,
239
324
  reserve: transactionAcquirer,
325
+ driver: options.driver,
240
326
  withoutTransforms(): any {
241
327
  if (options.transformRows === undefined) {
242
328
  return this
@@ -275,22 +361,22 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
275
361
  })
276
362
 
277
363
  /**
278
- * Builds the acquirers and failed-COMMIT cleanup for a SQLite client that
364
+ * Builds the acquirers, borrower and failed-COMMIT cleanup for a SQLite client that
279
365
  * shares one connection through a semaphore.
280
366
  *
281
367
  * **Details**
282
368
  *
283
369
  * Both acquirers lease the connection into the current scope and hold the
284
- * semaphore until that scope closes, so a statement or stream keeps the
285
- * connection until it finishes and another fiber cannot begin a transaction
286
- * underneath it. Effects that use the connection directly, such as an export,
287
- * have to run inside `Effect.scoped`.
370
+ * semaphore until that scope closes. The borrower holds the same semaphore
371
+ * until the statement finishes without creating a scope. Another fiber cannot
372
+ * begin a transaction underneath either. Effects that use the connection directly,
373
+ * such as an export, have to run inside `Effect.scoped`.
288
374
  *
289
375
  * SQLite can keep a transaction open after COMMIT fails, for example on a
290
376
  * deferred foreign key violation. `onCommitFailure` rolls it back before the
291
377
  * connection is reused. If that ROLLBACK fails, the connection is rejected, and
292
- * each acquisition retries the ROLLBACK once while holding the semaphore until
293
- * it succeeds. The database is never reopened, and transactions started with a
378
+ * each acquisition or borrow retries the ROLLBACK once while holding the semaphore
379
+ * until it succeeds. The database is never reopened, and transactions started with a
294
380
  * plain `BEGIN` are only touched after a failed cleanup.
295
381
  *
296
382
  * Pass `isTransaction` when the driver can report whether a transaction is
@@ -307,8 +393,10 @@ export const makeSqliteAcquirers = <C extends Connection.Connection>(options: {
307
393
  readonly isTransaction?: ((conn: C) => boolean) | undefined
308
394
  }): {
309
395
  readonly acquirer: Effect.Effect<C, SqlError, Scope.Scope>
396
+ readonly borrower: Connection.Borrower
310
397
  readonly transactionAcquirer: Effect.Effect<C, SqlError, Scope.Scope>
311
398
  readonly onCommitFailure: (conn: Connection.Connection) => Effect.Effect<void, SqlError>
399
+ readonly isTransaction: ((conn: Connection.Connection) => boolean) | undefined
312
400
  } => {
313
401
  const { isTransaction, semaphore } = options
314
402
  let poisoned: SqlError | undefined
@@ -352,8 +440,10 @@ export const makeSqliteAcquirers = <C extends Connection.Connection>(options: {
352
440
 
353
441
  return {
354
442
  acquirer: lease,
443
+ borrower: (f) => semaphore.withPermit(Effect.flatMap(available, f)),
355
444
  transactionAcquirer: lease,
356
- onCommitFailure: (conn) => Effect.tapCause(rollback(conn as C), (cause) => Effect.sync(() => poison(cause)))
445
+ onCommitFailure: (conn) => Effect.tapCause(rollback(conn as C), (cause) => Effect.sync(() => poison(cause))),
446
+ isTransaction: isTransaction && ((conn) => isTransaction(conn as C))
357
447
  }
358
448
  }
359
449
 
@@ -379,6 +469,56 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
379
469
  : reason
380
470
  ))
381
471
 
472
+ /**
473
+ * Callbacks registered with `afterCommit` in one transaction level. A
474
+ * committed savepoint hands its callbacks to its parent, and the outermost
475
+ * level runs them after it commits.
476
+ */
477
+ interface AfterCommitBuffer {
478
+ readonly callbacks: Array<Effect.Effect<void>>
479
+ readonly parent: AfterCommitBuffer | undefined
480
+ open: boolean
481
+ }
482
+
483
+ /**
484
+ * Keyed by the transaction service value of each level, so removing the
485
+ * transaction service also hides its buffer, and a transaction that
486
+ * `makeWithTransaction` didn't start has none.
487
+ */
488
+ const afterCommitBuffers = new WeakMap<object, AfterCommitBuffer>()
489
+
490
+ const runAfterCommit = <R>(effect: Effect.Effect<void, never, R>): Effect.Effect<void, never, R> =>
491
+ Effect.catchCause(effect, (cause) =>
492
+ Effect.withFiber((fiber) => {
493
+ const unhandledLogLevel = fiber.getRef(UnhandledLogLevel)
494
+ if (unhandledLogLevel) {
495
+ return Effect.logWithLevel(unhandledLogLevel)("Unhandled error in SqlClient.afterCommit callback", cause)
496
+ }
497
+ return Effect.void
498
+ }))
499
+
500
+ const makeAfterCommit =
501
+ (transactionService: Context.Key<any, any>) =>
502
+ <R>(effect: Effect.Effect<void, never, R>): Effect.Effect<void, never, R> =>
503
+ Effect.withFiber((fiber) => {
504
+ const transaction = Context.getOrUndefined(fiber.context, transactionService)
505
+ const buffer = transaction && afterCommitBuffers.get(transaction)
506
+ // Outside a transaction, or in one that doesn't buffer callbacks.
507
+ if (buffer === undefined) {
508
+ return runAfterCommit(effect)
509
+ }
510
+ for (let current: AfterCommitBuffer | undefined = buffer; current !== undefined; current = current.parent) {
511
+ if (!current.open) {
512
+ return Effect.die(new Error("SqlClient.afterCommit: the transaction has already ended"))
513
+ }
514
+ }
515
+ // Runs later with the services in scope now, without the transaction.
516
+ buffer.callbacks.push(
517
+ Effect.provideContext(effect, Context.omit(transactionService)(fiber.context) as Context.Context<R>)
518
+ )
519
+ return Effect.void
520
+ })
521
+
382
522
  /**
383
523
  * Builds a transaction wrapper that begins top-level transactions, uses
384
524
  * savepoints for nested transactions, commits on success, and rolls back on
@@ -392,8 +532,22 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
392
532
  export const makeWithTransaction = <I, S>(options: {
393
533
  readonly transactionService: Context.Key<I, readonly [conn: S, counter: number]>
394
534
  readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
395
- readonly acquireConnection: Effect.Effect<readonly [Scope.Closeable | undefined, S], SqlError>
396
- readonly begin: (conn: NoInfer<S>) => Effect.Effect<void, SqlError>
535
+ /**
536
+ * Acquires the connection for a top-level transaction. Runs under the
537
+ * transaction's uninterruptible mask; wrap the wait for a connection in
538
+ * `restore` so a queued transaction can be interrupted, and register
539
+ * releases on the provided scope. The scope closes with the transaction, or
540
+ * immediately when acquisition fails or is interrupted.
541
+ */
542
+ readonly acquireConnection: (
543
+ restore: <XA, XE, XR>(effect: Effect.Effect<XA, XE, XR>) => Effect.Effect<XA, XE, XR>
544
+ ) => Effect.Effect<S, SqlError, Scope.Scope>
545
+ /**
546
+ * Starts a top-level transaction. `statement` is the `BeginTransaction`
547
+ * provided to the transaction, if any; a driver that doesn't start
548
+ * transactions with a SQL statement ignores it.
549
+ */
550
+ readonly begin: (conn: NoInfer<S>, statement: string | undefined) => Effect.Effect<void, SqlError>
397
551
  readonly savepoint: (conn: NoInfer<S>, id: number) => Effect.Effect<void, SqlError>
398
552
  /**
399
553
  * Releases a nested savepoint after success or a successful rollback.
@@ -410,6 +564,12 @@ export const makeWithTransaction = <I, S>(options: {
410
564
  const transactionSemaphore = Context.Service<Semaphore.Semaphore>(
411
565
  `effect/sql/SqlClient/TransactionSemaphore/${transactionSemaphoreIdCounter++}`
412
566
  )
567
+ const afterCommit = makeAfterCommit(options.transactionService)
568
+ const deferInvalidations = (reactivity: Reactivity): Reactivity => {
569
+ const invalidate = (keys: Parameters<Reactivity["invalidate"]>[0]) =>
570
+ afterCommit(Effect.sync(() => reactivity.invalidateUnsafe(keys)))
571
+ return { ...reactivity, invalidate, mutation: (keys, effect) => Effect.tap(effect, invalidate(keys)) }
572
+ }
413
573
  return <R, E, A>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | SqlError, R> =>
414
574
  Effect.uninterruptibleMask((restore) =>
415
575
  Effect.useSpan(
@@ -421,24 +581,38 @@ export const makeWithTransaction = <I, S>(options: {
421
581
  span.attribute(key, value)
422
582
  }
423
583
  const services = fiber.context
584
+ const reactivity = Context.getOrUndefined(services, Reactivity)
424
585
  const clock = fiber.getRef(Clock)
425
586
  const connOption = Context.getOption(services, options.transactionService)
426
- const conn = connOption._tag === "Some"
587
+ const conn: Effect.Effect<readonly [Scope.Closeable | undefined, S], SqlError> = connOption._tag === "Some"
427
588
  ? Effect.succeed([undefined, connOption.value[0]] as const)
428
- : options.acquireConnection
589
+ : Effect.flatMap(Scope.make(), (scope) =>
590
+ Scope.provide(options.acquireConnection(restore), scope).pipe(
591
+ Effect.map((conn) => [scope, conn] as const),
592
+ Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause)))
593
+ ))
429
594
  const id = connOption._tag === "Some" ? connOption.value[1] + 1 : 0
595
+ const buffer: AfterCommitBuffer = {
596
+ callbacks: [],
597
+ parent: connOption._tag === "Some" ? afterCommitBuffers.get(connOption.value) : undefined,
598
+ open: true
599
+ }
600
+ let committed = false
430
601
  const transaction = Effect.flatMap(
431
602
  conn,
432
603
  (
433
604
  [scope, conn]
434
605
  ) =>
435
- (id === 0 ? options.begin(conn) : options.savepoint(conn, id)).pipe(
436
- Effect.flatMap(() =>
437
- Effect.onExitPrimitive(
606
+ (id === 0 ? options.begin(conn, fiber.getRef(BeginTransaction)) : options.savepoint(conn, id)).pipe(
607
+ Effect.flatMap(() => {
608
+ const level = [conn, id] as const
609
+ afterCommitBuffers.set(level, buffer)
610
+ return Effect.onExitPrimitive(
438
611
  Effect.provideContext(
439
612
  restore(effect),
440
613
  services.pipe(
441
- Context.add(options.transactionService, [conn, id]),
614
+ Context.add(options.transactionService, level),
615
+ reactivity ? Context.add(Reactivity, deferInvalidations(reactivity)) : identity,
442
616
  Context.add(transactionSemaphore, Semaphore.makeUnsafe(1)),
443
617
  Context.add(Tracer.ParentSpan, span)
444
618
  )
@@ -472,17 +646,34 @@ export const makeWithTransaction = <I, S>(options: {
472
646
  if (id > 0 && options.releaseSavepoint) {
473
647
  effect = Effect.andThen(effect, Effect.orDie(options.releaseSavepoint(conn, id)))
474
648
  }
475
- return Effect.flatMap(effect, () => exit)
649
+ return Effect.flatMap(effect, () => {
650
+ committed = Exit.isSuccess(exit)
651
+ return exit
652
+ })
476
653
  },
477
654
  true
478
655
  )
479
- ),
480
- scope ? (eff) => Effect.onExitPrimitive(eff, (exit) => Scope.close(scope, exit), true) : identity
656
+ }),
657
+ scope
658
+ ? (eff) => Effect.onExitPrimitive(eff, (exit) => Scope.close(scope, exit), true)
659
+ : identity
481
660
  )
482
661
  )
662
+ // Runs once the connection is released, whether or not that succeeded.
663
+ const settled = Effect.onExitPrimitive(transaction, () => {
664
+ buffer.open = false
665
+ if (!committed || buffer.callbacks.length === 0) {
666
+ return undefined
667
+ }
668
+ if (buffer.parent !== undefined) {
669
+ buffer.parent.callbacks.push(...buffer.callbacks)
670
+ return undefined
671
+ }
672
+ return Effect.forEach(buffer.callbacks, runAfterCommit, { discard: true })
673
+ }, true)
483
674
  return id === 0
484
- ? transaction
485
- : Context.getUnsafe(services, transactionSemaphore).withPermit(transaction)
675
+ ? settled
676
+ : Context.getUnsafe(services, transactionSemaphore).withPermit(settled)
486
677
  })
487
678
  )
488
679
  )
@@ -542,3 +733,51 @@ export const TransactionConnection = (
542
733
  export const SafeIntegers = Context.Reference<boolean>("effect/sql/SqlClient/SafeIntegers", {
543
734
  defaultValue: () => false
544
735
  })
736
+
737
+ /**
738
+ * Context reference holding the statement that starts a top-level
739
+ * transaction in place of the client's `BEGIN`; defaults to `undefined`, which
740
+ * keeps the client's.
741
+ *
742
+ * **When to use**
743
+ *
744
+ * Use when one transaction needs its own isolation level or access mode, as
745
+ * in `BEGIN ISOLATION LEVEL SERIALIZABLE` on PostgreSQL, rather than following
746
+ * the client's `BEGIN` with a `SET TRANSACTION`, which costs another round
747
+ * trip.
748
+ *
749
+ * **Details**
750
+ *
751
+ * The statement runs unprepared. Nested transactions ignore it and keep their
752
+ * savepoints.
753
+ *
754
+ * **Gotchas**
755
+ *
756
+ * It applies to every top-level transaction started while it is provided,
757
+ * including in forked fibers, so provide it around the single
758
+ * `withTransaction` it is meant for. `@effect/sql-libsql`, `@effect/sql-mssql`
759
+ * and `@effect/sql-sqlite-do` don't start transactions with a SQL statement
760
+ * and ignore it. The statement is sent as raw SQL, so never build it from
761
+ * untrusted input.
762
+ *
763
+ * **Example** (Starting a serializable transaction)
764
+ *
765
+ * ```ts
766
+ * import { Effect } from "effect"
767
+ * import { SqlClient } from "effect/sql"
768
+ *
769
+ * const program = Effect.gen(function*() {
770
+ * const sql = yield* SqlClient.SqlClient
771
+ * return yield* sql.withTransaction(sql`SELECT 1`).pipe(
772
+ * Effect.provideService(SqlClient.BeginTransaction, "BEGIN ISOLATION LEVEL SERIALIZABLE")
773
+ * )
774
+ * })
775
+ * ```
776
+ *
777
+ * @stability unstable
778
+ * @category services
779
+ * @since 4.0.6
780
+ */
781
+ export const BeginTransaction = Context.Reference<string | undefined>("effect/sql/SqlClient/BeginTransaction", {
782
+ defaultValue: () => undefined
783
+ })
@@ -8,6 +8,15 @@
8
8
  * grouped, id-based, and side-effect-only resolver constructors, and keeps
9
9
  * batches separated by the active SQL transaction connection.
10
10
  *
11
+ * Only the transaction connection separates batches. Other differences in
12
+ * caller services do not: `execute` and result decoding are provided with the
13
+ * first entry's context, while request encoding uses each entry's own context.
14
+ * In particular, callers outside a transaction can share one batch even when
15
+ * they provide different tenant or authorization services. Do not rely on
16
+ * per-caller services to isolate such SQL operations; use separate resolver
17
+ * instances for different tenants or authorization settings, or include those
18
+ * values in the request payload and handle them explicitly in `execute`.
19
+ *
11
20
  * @stability unstable
12
21
  * @since 4.0.0
13
22
  */
@@ -115,7 +115,9 @@ export const CurrentTransformer = Context.Reference<Transformer | undefined>("ef
115
115
 
116
116
  /**
117
117
  * Parents driver spans under the statement span for every client in the current scope,
118
- * including acquisition and stream pulls. Defaults to `false`; ignored when tracing is disabled.
118
+ * including acquisition and stream pulls, and records how long each statement
119
+ * waited for a connection as `db.client.connection.wait_time_ms`. Defaults to
120
+ * `false`; ignored when tracing is disabled.
119
121
  *
120
122
  * @stability unstable
121
123
  * @category services
@@ -1328,6 +1330,7 @@ export const spanName = (spanAttributes: ReadonlyArray<readonly [string, unknown
1328
1330
  // internal
1329
1331
 
1330
1332
  const ATTR_DB_QUERY_TEXT = "db.query.text"
1333
+ const ATTR_DB_CLIENT_CONNECTION_WAIT_TIME = "db.client.connection.wait_time_ms"
1331
1334
  const ATTR_SQL_METHOD = "effect.sql.method"
1332
1335
 
1333
1336
  // the last value wins, matching the order the attributes are applied to spans
@@ -1435,12 +1438,19 @@ const StatementProto: Omit<
1435
1438
  }
1436
1439
  span.attribute(ATTR_SQL_METHOD, operation)
1437
1440
  span.attribute(ATTR_DB_QUERY_TEXT, sql)
1441
+ const propagate = fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
1442
+ const clock = propagate ? waitClock(fiber) : undefined
1443
+ const run = clock === undefined
1444
+ ? (connection: Connection) => f(connection, sql, params)
1445
+ : (connection: Connection) =>
1446
+ Effect.suspend(() => {
1447
+ recordConnectionWait(span, clock)
1448
+ return f(connection, sql, params)
1449
+ })
1438
1450
  const execute = this.borrower === undefined
1439
- ? Effect.scoped(Effect.flatMap(this.acquirer, (_) => f(_, sql, params)))
1440
- : this.borrower((connection: Connection) => f(connection, sql, params))
1441
- return fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
1442
- ? Effect.provideService(execute, Tracer.ParentSpan, span)
1443
- : execute
1451
+ ? Effect.scoped(Effect.flatMap(this.acquirer, run))
1452
+ : this.borrower(run)
1453
+ return propagate ? Effect.provideService(execute, Tracer.ParentSpan, span) : execute
1444
1454
  })
1445
1455
  },
1446
1456
 
@@ -1472,8 +1482,13 @@ const StatementProto: Omit<
1472
1482
  }
1473
1483
  span.attribute(ATTR_SQL_METHOD, "executeStream")
1474
1484
  span.attribute(ATTR_DB_QUERY_TEXT, sql)
1475
- const acquire = Effect.map(self.acquirer, (_) => _.executeStream(sql, params, self.transformRows))
1476
- return fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
1485
+ const propagate = fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
1486
+ const clock = propagate ? waitClock(fiber) : undefined
1487
+ const acquire = Effect.map(self.acquirer, (connection) => {
1488
+ if (clock !== undefined) recordConnectionWait(span, clock)
1489
+ return connection.executeStream(sql, params, self.transformRows)
1490
+ })
1491
+ return propagate
1477
1492
  ? Effect.succeed(Stream.provideService(Stream.unwrap(acquire), Tracer.ParentSpan, span))
1478
1493
  : acquire
1479
1494
  })
@@ -1540,6 +1555,18 @@ const StatementProto: Omit<
1540
1555
  }
1541
1556
  }
1542
1557
 
1558
+ // Without span timing, the span has no start time to measure from.
1559
+ const waitClock = (fiber: Fiber.Fiber<unknown, unknown>): Clock | undefined =>
1560
+ fiber.getRef(TracerTimingEnabled) ? fiber.getRef(Clock) : undefined
1561
+
1562
+ // Measured from the statement span's start to the connection hand-off, so it
1563
+ // also covers compiling the statement and any `CurrentTransformer` run first.
1564
+ const recordConnectionWait = (span: Tracer.Span, clock: Clock): void =>
1565
+ span.attribute(
1566
+ ATTR_DB_CLIENT_CONNECTION_WAIT_TIME,
1567
+ Number(clock.currentTimeNanosUnsafe() - span.status.startTime) / 1e6
1568
+ )
1569
+
1543
1570
  const withStatement = <A, X, E, R>(
1544
1571
  self: StatementImpl<A>,
1545
1572
  span: Tracer.Span,