effect 4.0.6 → 4.1.0

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 (978) hide show
  1. package/README.md +1 -1
  2. package/dist/Arbitrary.d.ts +10 -2
  3. package/dist/Arbitrary.d.ts.map +1 -1
  4. package/dist/Arbitrary.js +2 -1
  5. package/dist/Arbitrary.js.map +1 -1
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +3 -0
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/Channel.d.ts +12 -6
  10. package/dist/Channel.d.ts.map +1 -1
  11. package/dist/Channel.js +30 -9
  12. package/dist/Channel.js.map +1 -1
  13. package/dist/Config.d.ts +7 -1
  14. package/dist/Config.d.ts.map +1 -1
  15. package/dist/Config.js.map +1 -1
  16. package/dist/Context.d.ts +18 -1
  17. package/dist/Context.d.ts.map +1 -1
  18. package/dist/Context.js +27 -8
  19. package/dist/Context.js.map +1 -1
  20. package/dist/Cron.d.ts +81 -11
  21. package/dist/Cron.d.ts.map +1 -1
  22. package/dist/Cron.js +101 -26
  23. package/dist/Cron.js.map +1 -1
  24. package/dist/Data.d.ts +54 -235
  25. package/dist/Data.d.ts.map +1 -1
  26. package/dist/Data.js.map +1 -1
  27. package/dist/Duration.d.ts +78 -0
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +123 -0
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +165 -8
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +12 -2
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Equal.d.ts.map +1 -1
  36. package/dist/Equal.js +8 -1
  37. package/dist/Equal.js.map +1 -1
  38. package/dist/Exit.d.ts +3 -3
  39. package/dist/Exit.d.ts.map +1 -1
  40. package/dist/Exit.js.map +1 -1
  41. package/dist/FileSystem.d.ts +59 -4
  42. package/dist/FileSystem.d.ts.map +1 -1
  43. package/dist/FileSystem.js +9 -2
  44. package/dist/FileSystem.js.map +1 -1
  45. package/dist/Formatter.d.ts.map +1 -1
  46. package/dist/Formatter.js +27 -13
  47. package/dist/Formatter.js.map +1 -1
  48. package/dist/Glob.d.ts +165 -0
  49. package/dist/Glob.d.ts.map +1 -0
  50. package/dist/Glob.js +127 -0
  51. package/dist/Glob.js.map +1 -0
  52. package/dist/Hash.d.ts.map +1 -1
  53. package/dist/Hash.js +4 -1
  54. package/dist/Hash.js.map +1 -1
  55. package/dist/JsonPatch.js +4 -0
  56. package/dist/JsonPatch.js.map +1 -1
  57. package/dist/JsonSchema.d.ts.map +1 -1
  58. package/dist/JsonSchema.js +13 -40
  59. package/dist/JsonSchema.js.map +1 -1
  60. package/dist/Match.d.ts +86 -0
  61. package/dist/Match.d.ts.map +1 -1
  62. package/dist/Match.js +72 -0
  63. package/dist/Match.js.map +1 -1
  64. package/dist/Metric.d.ts +3 -3
  65. package/dist/MutableList.d.ts +5 -2
  66. package/dist/MutableList.d.ts.map +1 -1
  67. package/dist/MutableList.js +7 -5
  68. package/dist/MutableList.js.map +1 -1
  69. package/dist/MutableRef.d.ts.map +1 -1
  70. package/dist/MutableRef.js +7 -0
  71. package/dist/MutableRef.js.map +1 -1
  72. package/dist/PartitionedSemaphore.d.ts +2 -1
  73. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  74. package/dist/PartitionedSemaphore.js +22 -12
  75. package/dist/PartitionedSemaphore.js.map +1 -1
  76. package/dist/Pool.d.ts +51 -0
  77. package/dist/Pool.d.ts.map +1 -1
  78. package/dist/Pool.js +136 -36
  79. package/dist/Pool.js.map +1 -1
  80. package/dist/PubSub.d.ts.map +1 -1
  81. package/dist/PubSub.js +5 -6
  82. package/dist/PubSub.js.map +1 -1
  83. package/dist/Random.d.ts.map +1 -1
  84. package/dist/Random.js +3 -3
  85. package/dist/Random.js.map +1 -1
  86. package/dist/RcMap.d.ts.map +1 -1
  87. package/dist/RcMap.js +8 -2
  88. package/dist/RcMap.js.map +1 -1
  89. package/dist/Ref.d.ts.map +1 -1
  90. package/dist/Ref.js +8 -0
  91. package/dist/Ref.js.map +1 -1
  92. package/dist/Schedule.d.ts +18 -1
  93. package/dist/Schedule.d.ts.map +1 -1
  94. package/dist/Schedule.js +8 -3
  95. package/dist/Schedule.js.map +1 -1
  96. package/dist/Schema.d.ts +690 -49
  97. package/dist/Schema.d.ts.map +1 -1
  98. package/dist/Schema.js +687 -28
  99. package/dist/Schema.js.map +1 -1
  100. package/dist/SchemaAST.d.ts +4 -2
  101. package/dist/SchemaAST.d.ts.map +1 -1
  102. package/dist/SchemaAST.js +14 -17
  103. package/dist/SchemaAST.js.map +1 -1
  104. package/dist/SchemaGetter.d.ts +6 -1
  105. package/dist/SchemaGetter.d.ts.map +1 -1
  106. package/dist/SchemaGetter.js +22 -11
  107. package/dist/SchemaGetter.js.map +1 -1
  108. package/dist/SchemaParser.d.ts.map +1 -1
  109. package/dist/SchemaParser.js +48 -22
  110. package/dist/SchemaParser.js.map +1 -1
  111. package/dist/SchemaRepresentation.d.ts +33 -10
  112. package/dist/SchemaRepresentation.d.ts.map +1 -1
  113. package/dist/SchemaRepresentation.js +39 -13
  114. package/dist/SchemaRepresentation.js.map +1 -1
  115. package/dist/SchemaTransformation.d.ts +12 -4
  116. package/dist/SchemaTransformation.d.ts.map +1 -1
  117. package/dist/SchemaTransformation.js +15 -5
  118. package/dist/SchemaTransformation.js.map +1 -1
  119. package/dist/ScopedCache.d.ts.map +1 -1
  120. package/dist/ScopedCache.js +5 -7
  121. package/dist/ScopedCache.js.map +1 -1
  122. package/dist/Semaphore.d.ts +130 -0
  123. package/dist/Semaphore.d.ts.map +1 -1
  124. package/dist/Semaphore.js +94 -35
  125. package/dist/Semaphore.js.map +1 -1
  126. package/dist/Sink.d.ts.map +1 -1
  127. package/dist/Sink.js +7 -2
  128. package/dist/Sink.js.map +1 -1
  129. package/dist/Stream.d.ts +13 -4
  130. package/dist/Stream.d.ts.map +1 -1
  131. package/dist/Stream.js +31 -10
  132. package/dist/Stream.js.map +1 -1
  133. package/dist/String.d.ts +3 -0
  134. package/dist/String.d.ts.map +1 -1
  135. package/dist/String.js +3 -0
  136. package/dist/String.js.map +1 -1
  137. package/dist/Terminal.d.ts +18 -1
  138. package/dist/Terminal.d.ts.map +1 -1
  139. package/dist/Terminal.js +1 -1
  140. package/dist/Terminal.js.map +1 -1
  141. package/dist/Tracer.d.ts +11 -1
  142. package/dist/Tracer.d.ts.map +1 -1
  143. package/dist/Tracer.js +6 -1
  144. package/dist/Tracer.js.map +1 -1
  145. package/dist/ai/AiError.d.ts +43 -116
  146. package/dist/ai/AiError.d.ts.map +1 -1
  147. package/dist/ai/AiError.js +53 -72
  148. package/dist/ai/AiError.js.map +1 -1
  149. package/dist/ai/Decision.d.ts +196 -15
  150. package/dist/ai/Decision.d.ts.map +1 -1
  151. package/dist/ai/Decision.js +130 -0
  152. package/dist/ai/Decision.js.map +1 -1
  153. package/dist/ai/DecisionModel.d.ts +54 -13
  154. package/dist/ai/DecisionModel.d.ts.map +1 -1
  155. package/dist/ai/DecisionModel.js +123 -12
  156. package/dist/ai/DecisionModel.js.map +1 -1
  157. package/dist/ai/LanguageModel.d.ts.map +1 -1
  158. package/dist/ai/LanguageModel.js +9 -0
  159. package/dist/ai/LanguageModel.js.map +1 -1
  160. package/dist/ai/McpSchema.d.ts +110 -110
  161. package/dist/ai/McpSchema.d.ts.map +1 -1
  162. package/dist/ai/McpServer.d.ts +630 -29
  163. package/dist/ai/McpServer.d.ts.map +1 -1
  164. package/dist/ai/McpServer.js +583 -131
  165. package/dist/ai/McpServer.js.map +1 -1
  166. package/dist/ai/McpTest.d.ts +130 -0
  167. package/dist/ai/McpTest.d.ts.map +1 -0
  168. package/dist/ai/McpTest.js +237 -0
  169. package/dist/ai/McpTest.js.map +1 -0
  170. package/dist/ai/Prompt.d.ts +52 -0
  171. package/dist/ai/Prompt.d.ts.map +1 -1
  172. package/dist/ai/Prompt.js +38 -0
  173. package/dist/ai/Prompt.js.map +1 -1
  174. package/dist/ai/Response.d.ts +17 -28
  175. package/dist/ai/Response.d.ts.map +1 -1
  176. package/dist/ai/Response.js +5 -10
  177. package/dist/ai/Response.js.map +1 -1
  178. package/dist/ai/Tool.d.ts +43 -1
  179. package/dist/ai/Tool.d.ts.map +1 -1
  180. package/dist/ai/Tool.js +5 -2
  181. package/dist/ai/Tool.js.map +1 -1
  182. package/dist/ai/Toolkit.d.ts.map +1 -1
  183. package/dist/ai/Toolkit.js +8 -1
  184. package/dist/ai/Toolkit.js.map +1 -1
  185. package/dist/ai/index.d.ts +5 -0
  186. package/dist/ai/index.d.ts.map +1 -1
  187. package/dist/ai/index.js +5 -0
  188. package/dist/ai/index.js.map +1 -1
  189. package/dist/ai/internal/mcpCore.js +17 -12
  190. package/dist/ai/internal/mcpCore.js.map +1 -1
  191. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  192. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  193. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  194. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  195. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  196. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  197. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  198. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  199. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  200. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  201. package/dist/ai/internal/mcpProtocol.js +13 -0
  202. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  203. package/dist/ai/internal/mcpRuntime.js +5 -3
  204. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  205. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  206. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  207. package/dist/cli/Argument.d.ts +21 -0
  208. package/dist/cli/Argument.d.ts.map +1 -1
  209. package/dist/cli/Argument.js +7 -0
  210. package/dist/cli/Argument.js.map +1 -1
  211. package/dist/cli/CliError.d.ts +78 -0
  212. package/dist/cli/CliError.d.ts.map +1 -1
  213. package/dist/cli/CliError.js +65 -3
  214. package/dist/cli/CliError.js.map +1 -1
  215. package/dist/cli/CliOutput.d.ts +220 -7
  216. package/dist/cli/CliOutput.d.ts.map +1 -1
  217. package/dist/cli/CliOutput.js +156 -43
  218. package/dist/cli/CliOutput.js.map +1 -1
  219. package/dist/cli/Command.d.ts +47 -16
  220. package/dist/cli/Command.d.ts.map +1 -1
  221. package/dist/cli/Command.js +67 -29
  222. package/dist/cli/Command.js.map +1 -1
  223. package/dist/cli/Completions.d.ts +58 -0
  224. package/dist/cli/Completions.d.ts.map +1 -1
  225. package/dist/cli/Completions.js +49 -9
  226. package/dist/cli/Completions.js.map +1 -1
  227. package/dist/cli/Flag.d.ts +122 -0
  228. package/dist/cli/Flag.d.ts.map +1 -1
  229. package/dist/cli/Flag.js +42 -0
  230. package/dist/cli/Flag.js.map +1 -1
  231. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  232. package/dist/cli/GlobalFlag.js +15 -7
  233. package/dist/cli/GlobalFlag.js.map +1 -1
  234. package/dist/cli/HelpDoc.d.ts +15 -1
  235. package/dist/cli/HelpDoc.d.ts.map +1 -1
  236. package/dist/cli/Param.d.ts +15 -0
  237. package/dist/cli/Param.d.ts.map +1 -1
  238. package/dist/cli/Param.js +23 -2
  239. package/dist/cli/Param.js.map +1 -1
  240. package/dist/cli/Primitive.d.ts +14 -0
  241. package/dist/cli/Primitive.d.ts.map +1 -1
  242. package/dist/cli/Primitive.js +15 -1
  243. package/dist/cli/Primitive.js.map +1 -1
  244. package/dist/cli/Prompt.d.ts +1 -0
  245. package/dist/cli/Prompt.d.ts.map +1 -1
  246. package/dist/cli/Prompt.js +1 -0
  247. package/dist/cli/Prompt.js.map +1 -1
  248. package/dist/cli/TerminalCapabilities.d.ts +3 -2
  249. package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
  250. package/dist/cli/TerminalCapabilities.js +3 -1
  251. package/dist/cli/TerminalCapabilities.js.map +1 -1
  252. package/dist/cli/internal/completions/bash.js +73 -27
  253. package/dist/cli/internal/completions/bash.js.map +1 -1
  254. package/dist/cli/internal/help.d.ts.map +1 -1
  255. package/dist/cli/internal/help.js +17 -10
  256. package/dist/cli/internal/help.js.map +1 -1
  257. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  258. package/dist/cluster/ClusterWorkflowEngine.js +45 -10
  259. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  260. package/dist/cluster/MessageStorage.d.ts +23 -45
  261. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  262. package/dist/cluster/MessageStorage.js +6 -7
  263. package/dist/cluster/MessageStorage.js.map +1 -1
  264. package/dist/cluster/Sharding.d.ts.map +1 -1
  265. package/dist/cluster/Sharding.js +151 -49
  266. package/dist/cluster/Sharding.js.map +1 -1
  267. package/dist/cluster/ShardingConfig.d.ts +76 -0
  268. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  269. package/dist/cluster/ShardingConfig.js +4 -0
  270. package/dist/cluster/ShardingConfig.js.map +1 -1
  271. package/dist/cluster/SingleRunner.d.ts +3 -3
  272. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  273. package/dist/cluster/SingleRunner.js +1 -1
  274. package/dist/cluster/Snowflake.d.ts.map +1 -1
  275. package/dist/cluster/Snowflake.js +3 -7
  276. package/dist/cluster/Snowflake.js.map +1 -1
  277. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  278. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  279. package/dist/cluster/SqlMessageStorage.js +34 -7
  280. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  281. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  282. package/dist/cluster/SqlRunnerStorage.js +109 -46
  283. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  284. package/dist/cluster/internal/entityManager.js +54 -20
  285. package/dist/cluster/internal/entityManager.js.map +1 -1
  286. package/dist/crypto/Aead.d.ts +322 -0
  287. package/dist/crypto/Aead.d.ts.map +1 -0
  288. package/dist/crypto/Aead.js +331 -0
  289. package/dist/crypto/Aead.js.map +1 -0
  290. package/dist/crypto/Cipher.d.ts +235 -0
  291. package/dist/crypto/Cipher.d.ts.map +1 -0
  292. package/dist/crypto/Cipher.js +233 -0
  293. package/dist/crypto/Cipher.js.map +1 -0
  294. package/dist/crypto/CryptoError.d.ts +212 -0
  295. package/dist/crypto/CryptoError.d.ts.map +1 -0
  296. package/dist/crypto/CryptoError.js +202 -0
  297. package/dist/crypto/CryptoError.js.map +1 -0
  298. package/dist/crypto/Digest.d.ts +143 -0
  299. package/dist/crypto/Digest.d.ts.map +1 -0
  300. package/dist/crypto/Digest.js +146 -0
  301. package/dist/crypto/Digest.js.map +1 -0
  302. package/dist/crypto/Kdf.d.ts +220 -0
  303. package/dist/crypto/Kdf.d.ts.map +1 -0
  304. package/dist/crypto/Kdf.js +212 -0
  305. package/dist/crypto/Kdf.js.map +1 -0
  306. package/dist/crypto/KeyAgreement.d.ts +323 -0
  307. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  308. package/dist/crypto/KeyAgreement.js +303 -0
  309. package/dist/crypto/KeyAgreement.js.map +1 -0
  310. package/dist/crypto/KeyFormat.d.ts +309 -0
  311. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  312. package/dist/crypto/KeyFormat.js +556 -0
  313. package/dist/crypto/KeyFormat.js.map +1 -0
  314. package/dist/crypto/KeyWrap.d.ts +389 -0
  315. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  316. package/dist/crypto/KeyWrap.js +381 -0
  317. package/dist/crypto/KeyWrap.js.map +1 -0
  318. package/dist/crypto/Mac.d.ts +277 -0
  319. package/dist/crypto/Mac.d.ts.map +1 -0
  320. package/dist/crypto/Mac.js +288 -0
  321. package/dist/crypto/Mac.js.map +1 -0
  322. package/dist/crypto/SecureRandom.d.ts +340 -0
  323. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  324. package/dist/crypto/SecureRandom.js +257 -0
  325. package/dist/crypto/SecureRandom.js.map +1 -0
  326. package/dist/crypto/Signature.d.ts +448 -0
  327. package/dist/crypto/Signature.d.ts.map +1 -0
  328. package/dist/crypto/Signature.js +484 -0
  329. package/dist/crypto/Signature.js.map +1 -0
  330. package/dist/crypto/WebCrypto.d.ts +61 -0
  331. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  332. package/dist/crypto/WebCrypto.js +63 -0
  333. package/dist/crypto/WebCrypto.js.map +1 -0
  334. package/dist/crypto/index.d.ts +65 -0
  335. package/dist/crypto/index.d.ts.map +1 -0
  336. package/dist/crypto/index.js +66 -0
  337. package/dist/crypto/index.js.map +1 -0
  338. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  339. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  340. package/dist/crypto/internal/asymmetric.js +210 -0
  341. package/dist/crypto/internal/asymmetric.js.map +1 -0
  342. package/dist/crypto/internal/chacha.d.ts +46 -0
  343. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  344. package/dist/crypto/internal/chacha.js +885 -0
  345. package/dist/crypto/internal/chacha.js.map +1 -0
  346. package/dist/crypto/internal/der.d.ts +6 -0
  347. package/dist/crypto/internal/der.d.ts.map +1 -0
  348. package/dist/crypto/internal/der.js +86 -0
  349. package/dist/crypto/internal/der.js.map +1 -0
  350. package/dist/crypto/internal/digest.d.ts +2 -0
  351. package/dist/crypto/internal/digest.d.ts.map +1 -0
  352. package/dist/crypto/internal/digest.js +15 -0
  353. package/dist/crypto/internal/digest.js.map +1 -0
  354. package/dist/crypto/internal/key.d.ts +2 -0
  355. package/dist/crypto/internal/key.d.ts.map +1 -0
  356. package/dist/crypto/internal/key.js +170 -0
  357. package/dist/crypto/internal/key.js.map +1 -0
  358. package/dist/crypto/internal/md5.d.ts +39 -0
  359. package/dist/crypto/internal/md5.d.ts.map +1 -0
  360. package/dist/crypto/internal/md5.js +179 -0
  361. package/dist/crypto/internal/md5.js.map +1 -0
  362. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  363. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  364. package/dist/crypto/internal/webCrypto.js +111 -0
  365. package/dist/crypto/internal/webCrypto.js.map +1 -0
  366. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  367. package/dist/devtools/DevToolsClient.js +2 -0
  368. package/dist/devtools/DevToolsClient.js.map +1 -1
  369. package/dist/encoding/Base64.js +36 -0
  370. package/dist/encoding/Base64.js.map +1 -1
  371. package/dist/encoding/Base64Url.d.ts.map +1 -1
  372. package/dist/encoding/Base64Url.js +3 -2
  373. package/dist/encoding/Base64Url.js.map +1 -1
  374. package/dist/encoding/Csv.d.ts +608 -0
  375. package/dist/encoding/Csv.d.ts.map +1 -0
  376. package/dist/encoding/Csv.js +718 -0
  377. package/dist/encoding/Csv.js.map +1 -0
  378. package/dist/encoding/Hex.d.ts +3 -2
  379. package/dist/encoding/Hex.d.ts.map +1 -1
  380. package/dist/encoding/Hex.js +3 -2
  381. package/dist/encoding/Hex.js.map +1 -1
  382. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  383. package/dist/encoding/SchemaBinary.js +42 -4
  384. package/dist/encoding/SchemaBinary.js.map +1 -1
  385. package/dist/encoding/Sse.d.ts.map +1 -1
  386. package/dist/encoding/Sse.js +3 -3
  387. package/dist/encoding/Sse.js.map +1 -1
  388. package/dist/encoding/Toml.d.ts +17 -3
  389. package/dist/encoding/Toml.d.ts.map +1 -1
  390. package/dist/encoding/Toml.js +124 -31
  391. package/dist/encoding/Toml.js.map +1 -1
  392. package/dist/encoding/Yaml.d.ts +8 -1
  393. package/dist/encoding/Yaml.d.ts.map +1 -1
  394. package/dist/encoding/Yaml.js +54 -18
  395. package/dist/encoding/Yaml.js.map +1 -1
  396. package/dist/encoding/index.d.ts +5 -0
  397. package/dist/encoding/index.d.ts.map +1 -1
  398. package/dist/encoding/index.js +5 -0
  399. package/dist/encoding/index.js.map +1 -1
  400. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  401. package/dist/eventlog/EventJournal.js +6 -3
  402. package/dist/eventlog/EventJournal.js.map +1 -1
  403. package/dist/eventlog/EventLog.d.ts +119 -4
  404. package/dist/eventlog/EventLog.d.ts.map +1 -1
  405. package/dist/eventlog/EventLog.js +200 -12
  406. package/dist/eventlog/EventLog.js.map +1 -1
  407. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  408. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  409. package/dist/eventlog/EventLogEncryption.js +83 -64
  410. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  411. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  412. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  413. package/dist/eventlog/EventLogMessage.js +217 -1
  414. package/dist/eventlog/EventLogMessage.js.map +1 -1
  415. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  416. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  417. package/dist/eventlog/EventLogRemote.js +186 -16
  418. package/dist/eventlog/EventLogRemote.js.map +1 -1
  419. package/dist/eventlog/EventLogServer.d.ts +3 -0
  420. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  421. package/dist/eventlog/EventLogServer.js +18 -10
  422. package/dist/eventlog/EventLogServer.js.map +1 -1
  423. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  424. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  425. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  426. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  427. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  428. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  429. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  430. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  431. package/dist/eventlog/EventRow.d.ts +4 -0
  432. package/dist/eventlog/EventRow.d.ts.map +1 -1
  433. package/dist/eventlog/EventRow.js +12 -2
  434. package/dist/eventlog/EventRow.js.map +1 -1
  435. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  436. package/dist/eventlog/SqlEventJournal.js +47 -27
  437. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  438. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  439. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  441. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  443. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  444. package/dist/eventlog/internal/batches.d.ts +12 -0
  445. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  446. package/dist/eventlog/internal/batches.js +26 -0
  447. package/dist/eventlog/internal/batches.js.map +1 -0
  448. package/dist/eventlog/internal/compaction.d.ts +38 -0
  449. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  450. package/dist/eventlog/internal/compaction.js +33 -0
  451. package/dist/eventlog/internal/compaction.js.map +1 -0
  452. package/dist/eventlog/internal/conflicts.d.ts +0 -1
  453. package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
  454. package/dist/eventlog/internal/conflicts.js +0 -3
  455. package/dist/eventlog/internal/conflicts.js.map +1 -1
  456. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  457. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  458. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  459. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  460. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  461. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  462. package/dist/http/Cookies.d.ts +172 -0
  463. package/dist/http/Cookies.d.ts.map +1 -1
  464. package/dist/http/Cookies.js +153 -10
  465. package/dist/http/Cookies.js.map +1 -1
  466. package/dist/http/FetchHttpClient.d.ts +26 -2
  467. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  468. package/dist/http/FetchHttpClient.js +78 -15
  469. package/dist/http/FetchHttpClient.js.map +1 -1
  470. package/dist/http/HttpClient.d.ts +502 -8
  471. package/dist/http/HttpClient.d.ts.map +1 -1
  472. package/dist/http/HttpClient.js +296 -12
  473. package/dist/http/HttpClient.js.map +1 -1
  474. package/dist/http/HttpClientError.d.ts +8 -1
  475. package/dist/http/HttpClientError.d.ts.map +1 -1
  476. package/dist/http/HttpClientError.js +37 -1
  477. package/dist/http/HttpClientError.js.map +1 -1
  478. package/dist/http/HttpClientRequest.d.ts +9 -5
  479. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  480. package/dist/http/HttpClientRequest.js +3 -4
  481. package/dist/http/HttpClientRequest.js.map +1 -1
  482. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  483. package/dist/http/HttpClientResponse.js +3 -2
  484. package/dist/http/HttpClientResponse.js.map +1 -1
  485. package/dist/http/HttpMethod.d.ts +7 -1
  486. package/dist/http/HttpMethod.d.ts.map +1 -1
  487. package/dist/http/HttpMethod.js +3 -8
  488. package/dist/http/HttpMethod.js.map +1 -1
  489. package/dist/http/HttpMiddleware.d.ts +1 -1
  490. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  491. package/dist/http/HttpMiddleware.js +14 -16
  492. package/dist/http/HttpMiddleware.js.map +1 -1
  493. package/dist/http/HttpRouter.d.ts.map +1 -1
  494. package/dist/http/HttpRouter.js +2 -1
  495. package/dist/http/HttpRouter.js.map +1 -1
  496. package/dist/http/HttpServerError.js +2 -2
  497. package/dist/http/HttpServerError.js.map +1 -1
  498. package/dist/http/HttpServerRequest.d.ts +11 -3
  499. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  500. package/dist/http/HttpServerRequest.js +77 -25
  501. package/dist/http/HttpServerRequest.js.map +1 -1
  502. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  503. package/dist/http/HttpServerResponse.js +3 -2
  504. package/dist/http/HttpServerResponse.js.map +1 -1
  505. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  506. package/dist/http/HttpStaticServer.js +48 -21
  507. package/dist/http/HttpStaticServer.js.map +1 -1
  508. package/dist/http/HttpTraceContext.d.ts +2 -1
  509. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  510. package/dist/http/HttpTraceContext.js +7 -5
  511. package/dist/http/HttpTraceContext.js.map +1 -1
  512. package/dist/http/MultipartParser/internal/contentType.js +3 -3
  513. package/dist/http/ProblemDetails.d.ts +96 -0
  514. package/dist/http/ProblemDetails.d.ts.map +1 -0
  515. package/dist/http/ProblemDetails.js +98 -0
  516. package/dist/http/ProblemDetails.js.map +1 -0
  517. package/dist/http/UrlParams.d.ts +3 -1
  518. package/dist/http/UrlParams.d.ts.map +1 -1
  519. package/dist/http/UrlParams.js +4 -2
  520. package/dist/http/UrlParams.js.map +1 -1
  521. package/dist/http/index.d.ts +5 -0
  522. package/dist/http/index.d.ts.map +1 -1
  523. package/dist/http/index.js +5 -0
  524. package/dist/http/index.js.map +1 -1
  525. package/dist/http/internal/compression.js +4 -5
  526. package/dist/http/internal/compression.js.map +1 -1
  527. package/dist/http/internal/decompression.js +6 -2
  528. package/dist/http/internal/decompression.js.map +1 -1
  529. package/dist/http/internal/httpBody.js +8 -1
  530. package/dist/http/internal/httpBody.js.map +1 -1
  531. package/dist/http/internal/urlParams.js +33 -0
  532. package/dist/http/internal/urlParams.js.map +1 -1
  533. package/dist/http-api/HttpApi.d.ts +3 -6
  534. package/dist/http-api/HttpApi.d.ts.map +1 -1
  535. package/dist/http-api/HttpApi.js +3 -6
  536. package/dist/http-api/HttpApi.js.map +1 -1
  537. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  538. package/dist/http-api/HttpApiBuilder.js +43 -13
  539. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  540. package/dist/http-api/HttpApiClient.d.ts +140 -7
  541. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  542. package/dist/http-api/HttpApiClient.js +193 -44
  543. package/dist/http-api/HttpApiClient.js.map +1 -1
  544. package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
  545. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  546. package/dist/http-api/HttpApiEndpoint.js +123 -32
  547. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  548. package/dist/http-api/HttpApiError.d.ts +185 -13
  549. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  550. package/dist/http-api/HttpApiError.js +128 -0
  551. package/dist/http-api/HttpApiError.js.map +1 -1
  552. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  553. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  554. package/dist/http-api/HttpApiMiddleware.js +85 -1
  555. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  556. package/dist/http-api/HttpApiSchema.d.ts +142 -33
  557. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  558. package/dist/http-api/HttpApiSchema.js +123 -59
  559. package/dist/http-api/HttpApiSchema.js.map +1 -1
  560. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiTest.js +3 -2
  562. package/dist/http-api/HttpApiTest.js.map +1 -1
  563. package/dist/http-api/OpenApi.d.ts.map +1 -1
  564. package/dist/http-api/OpenApi.js +25 -16
  565. package/dist/http-api/OpenApi.js.map +1 -1
  566. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  567. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  568. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  569. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  570. package/dist/index.d.ts +5 -5
  571. package/dist/index.d.ts.map +1 -1
  572. package/dist/index.js +5 -5
  573. package/dist/index.js.map +1 -1
  574. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  575. package/dist/internal/arbitrary/runner.js +120 -44
  576. package/dist/internal/arbitrary/runner.js.map +1 -1
  577. package/dist/internal/core.js +2 -0
  578. package/dist/internal/core.js.map +1 -1
  579. package/dist/internal/effect.js +46 -27
  580. package/dist/internal/effect.js.map +1 -1
  581. package/dist/internal/equal.js +14 -0
  582. package/dist/internal/equal.js.map +1 -1
  583. package/dist/internal/glob.d.ts +2 -0
  584. package/dist/internal/glob.d.ts.map +1 -0
  585. package/dist/internal/glob.js +630 -0
  586. package/dist/internal/glob.js.map +1 -0
  587. package/dist/internal/jsonSchema.d.ts +2 -0
  588. package/dist/internal/jsonSchema.d.ts.map +1 -0
  589. package/dist/internal/jsonSchema.js +28 -0
  590. package/dist/internal/jsonSchema.js.map +1 -0
  591. package/dist/internal/matcher.js +11 -1
  592. package/dist/internal/matcher.js.map +1 -1
  593. package/dist/internal/persistence.js +9 -0
  594. package/dist/internal/persistence.js.map +1 -1
  595. package/dist/internal/rcRef.js +4 -1
  596. package/dist/internal/rcRef.js.map +1 -1
  597. package/dist/internal/schema/compilerRegistry.js +4 -1
  598. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  599. package/dist/internal/schema/content.d.ts +2 -0
  600. package/dist/internal/schema/content.d.ts.map +1 -0
  601. package/dist/internal/schema/content.js +13 -0
  602. package/dist/internal/schema/content.js.map +1 -0
  603. package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
  604. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  605. package/dist/internal/schema/fromRepresentation.js +2 -1
  606. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  607. package/dist/internal/schema/standardSchema.js +8 -2
  608. package/dist/internal/schema/standardSchema.js.map +1 -1
  609. package/dist/internal/schema/toCodeDocument.js +9 -6
  610. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  611. package/dist/internal/schema/toCodec.js +21 -24
  612. package/dist/internal/schema/toCodec.js.map +1 -1
  613. package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
  614. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  615. package/dist/internal/schema/toRepresentation.js +107 -129
  616. package/dist/internal/schema/toRepresentation.js.map +1 -1
  617. package/dist/internal/sql.d.ts +2 -0
  618. package/dist/internal/sql.d.ts.map +1 -0
  619. package/dist/internal/sql.js +13 -0
  620. package/dist/internal/sql.js.map +1 -0
  621. package/dist/internal/trie.js +42 -13
  622. package/dist/internal/trie.js.map +1 -1
  623. package/dist/internal/ulid.js +41 -0
  624. package/dist/internal/ulid.js.map +1 -1
  625. package/dist/internal/uuid.js +52 -8
  626. package/dist/internal/uuid.js.map +1 -1
  627. package/dist/internal/version.js +1 -1
  628. package/dist/observability/Otlp.d.ts +15 -4
  629. package/dist/observability/Otlp.d.ts.map +1 -1
  630. package/dist/observability/Otlp.js +10 -0
  631. package/dist/observability/Otlp.js.map +1 -1
  632. package/dist/observability/OtlpProxy.d.ts +154 -0
  633. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  634. package/dist/observability/OtlpProxy.js +235 -0
  635. package/dist/observability/OtlpProxy.js.map +1 -0
  636. package/dist/observability/OtlpResource.d.ts +7 -0
  637. package/dist/observability/OtlpResource.d.ts.map +1 -1
  638. package/dist/observability/OtlpResource.js +11 -1
  639. package/dist/observability/OtlpResource.js.map +1 -1
  640. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  641. package/dist/observability/OtlpTracer.js +4 -0
  642. package/dist/observability/OtlpTracer.js.map +1 -1
  643. package/dist/observability/index.d.ts +5 -0
  644. package/dist/observability/index.d.ts.map +1 -1
  645. package/dist/observability/index.js +5 -0
  646. package/dist/observability/index.js.map +1 -1
  647. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  648. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  649. package/dist/persistence/CircuitBreaker.js +1165 -0
  650. package/dist/persistence/CircuitBreaker.js.map +1 -0
  651. package/dist/persistence/KeyValueStore.d.ts +47 -2
  652. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  653. package/dist/persistence/KeyValueStore.js +129 -18
  654. package/dist/persistence/KeyValueStore.js.map +1 -1
  655. package/dist/persistence/PersistedQueue.d.ts +9 -0
  656. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  657. package/dist/persistence/PersistedQueue.js +94 -52
  658. package/dist/persistence/PersistedQueue.js.map +1 -1
  659. package/dist/persistence/Persistence.d.ts +10 -4
  660. package/dist/persistence/Persistence.d.ts.map +1 -1
  661. package/dist/persistence/Persistence.js +18 -11
  662. package/dist/persistence/Persistence.js.map +1 -1
  663. package/dist/persistence/Redis.d.ts +78 -2
  664. package/dist/persistence/Redis.d.ts.map +1 -1
  665. package/dist/persistence/Redis.js +62 -7
  666. package/dist/persistence/Redis.js.map +1 -1
  667. package/dist/persistence/index.d.ts +5 -0
  668. package/dist/persistence/index.d.ts.map +1 -1
  669. package/dist/persistence/index.js +5 -0
  670. package/dist/persistence/index.js.map +1 -1
  671. package/dist/process/ChildProcess.d.ts +237 -71
  672. package/dist/process/ChildProcess.d.ts.map +1 -1
  673. package/dist/process/ChildProcess.js +56 -158
  674. package/dist/process/ChildProcess.js.map +1 -1
  675. package/dist/process/ChildProcessSpawner.d.ts +35 -0
  676. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  677. package/dist/process/ChildProcessSpawner.js +5 -2
  678. package/dist/process/ChildProcessSpawner.js.map +1 -1
  679. package/dist/process/CommandLine.d.ts +294 -0
  680. package/dist/process/CommandLine.d.ts.map +1 -0
  681. package/dist/process/CommandLine.js +481 -0
  682. package/dist/process/CommandLine.js.map +1 -0
  683. package/dist/process/index.d.ts +5 -0
  684. package/dist/process/index.d.ts.map +1 -1
  685. package/dist/process/index.js +5 -0
  686. package/dist/process/index.js.map +1 -1
  687. package/dist/reactivity/AsyncResult.d.ts +1 -1
  688. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  689. package/dist/reactivity/Atom.d.ts +2 -1
  690. package/dist/reactivity/Atom.d.ts.map +1 -1
  691. package/dist/reactivity/Atom.js +3 -4
  692. package/dist/reactivity/Atom.js.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js.map +1 -1
  694. package/dist/rpc/RpcClient.d.ts +16 -1
  695. package/dist/rpc/RpcClient.d.ts.map +1 -1
  696. package/dist/rpc/RpcClient.js +59 -24
  697. package/dist/rpc/RpcClient.js.map +1 -1
  698. package/dist/rpc/RpcMessage.d.ts +10 -1
  699. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  700. package/dist/rpc/RpcMessage.js +1 -0
  701. package/dist/rpc/RpcMessage.js.map +1 -1
  702. package/dist/rpc/RpcSerialization.d.ts +14 -0
  703. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  704. package/dist/rpc/RpcSerialization.js +26 -8
  705. package/dist/rpc/RpcSerialization.js.map +1 -1
  706. package/dist/rpc/RpcServer.d.ts +31 -0
  707. package/dist/rpc/RpcServer.d.ts.map +1 -1
  708. package/dist/rpc/RpcServer.js +139 -56
  709. package/dist/rpc/RpcServer.js.map +1 -1
  710. package/dist/rpc/RpcTest.d.ts +1 -0
  711. package/dist/rpc/RpcTest.d.ts.map +1 -1
  712. package/dist/rpc/RpcTest.js +1 -0
  713. package/dist/rpc/RpcTest.js.map +1 -1
  714. package/dist/schema/Model.d.ts +14 -0
  715. package/dist/schema/Model.d.ts.map +1 -1
  716. package/dist/schema/Model.js +18 -3
  717. package/dist/schema/Model.js.map +1 -1
  718. package/dist/sql/Migrator.d.ts +2 -20
  719. package/dist/sql/Migrator.d.ts.map +1 -1
  720. package/dist/sql/Migrator.js +13 -55
  721. package/dist/sql/Migrator.js.map +1 -1
  722. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  723. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  724. package/dist/sql/MigratorFileSystem.js +57 -0
  725. package/dist/sql/MigratorFileSystem.js.map +1 -0
  726. package/dist/sql/SqlClient.d.ts +9 -4
  727. package/dist/sql/SqlClient.d.ts.map +1 -1
  728. package/dist/sql/SqlClient.js +13 -10
  729. package/dist/sql/SqlClient.js.map +1 -1
  730. package/dist/sql/SqlResolver.d.ts +4 -0
  731. package/dist/sql/SqlResolver.d.ts.map +1 -1
  732. package/dist/sql/SqlResolver.js +18 -4
  733. package/dist/sql/SqlResolver.js.map +1 -1
  734. package/dist/sql/Statement.d.ts +27 -6
  735. package/dist/sql/Statement.d.ts.map +1 -1
  736. package/dist/sql/Statement.js +21 -15
  737. package/dist/sql/Statement.js.map +1 -1
  738. package/dist/sql/index.js +1 -1
  739. package/dist/testing/index.d.ts +0 -5
  740. package/dist/testing/index.d.ts.map +1 -1
  741. package/dist/testing/index.js +0 -5
  742. package/dist/testing/index.js.map +1 -1
  743. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  744. package/dist/workflow/DurableDeferred.js +21 -2
  745. package/dist/workflow/DurableDeferred.js.map +1 -1
  746. package/dist/workflow/internal/crypto.js +9 -8
  747. package/dist/workflow/internal/crypto.js.map +1 -1
  748. package/package.json +3 -1
  749. package/src/Arbitrary.ts +10 -2
  750. package/src/BigDecimal.ts +3 -0
  751. package/src/Channel.ts +64 -29
  752. package/src/Config.ts +7 -1
  753. package/src/Context.ts +34 -10
  754. package/src/Cron.ts +178 -29
  755. package/src/Data.ts +60 -265
  756. package/src/Duration.ts +140 -0
  757. package/src/Effect.ts +915 -86
  758. package/src/Equal.ts +8 -1
  759. package/src/Exit.ts +3 -3
  760. package/src/FileSystem.ts +65 -4
  761. package/src/Formatter.ts +28 -13
  762. package/src/Glob.ts +205 -0
  763. package/src/Hash.ts +4 -1
  764. package/src/JsonPatch.ts +4 -0
  765. package/src/JsonSchema.ts +12 -40
  766. package/src/Match.ts +127 -0
  767. package/src/Metric.ts +3 -3
  768. package/src/MutableList.ts +7 -5
  769. package/src/MutableRef.ts +8 -1
  770. package/src/PartitionedSemaphore.ts +24 -13
  771. package/src/Pool.ts +182 -52
  772. package/src/PubSub.ts +5 -6
  773. package/src/Random.ts +3 -3
  774. package/src/RcMap.ts +5 -1
  775. package/src/Ref.ts +8 -0
  776. package/src/Schedule.ts +27 -4
  777. package/src/Schema.ts +1237 -87
  778. package/src/SchemaAST.ts +20 -20
  779. package/src/SchemaGetter.ts +27 -11
  780. package/src/SchemaParser.ts +51 -18
  781. package/src/SchemaRepresentation.ts +50 -34
  782. package/src/SchemaTransformation.ts +17 -5
  783. package/src/ScopedCache.ts +5 -9
  784. package/src/Semaphore.ts +208 -40
  785. package/src/Sink.ts +15 -2
  786. package/src/Stream.ts +48 -22
  787. package/src/String.ts +3 -0
  788. package/src/Terminal.ts +19 -1
  789. package/src/Tracer.ts +15 -1
  790. package/src/ai/AiError.ts +56 -80
  791. package/src/ai/Decision.ts +257 -6
  792. package/src/ai/DecisionModel.ts +171 -28
  793. package/src/ai/LanguageModel.ts +9 -0
  794. package/src/ai/McpServer.ts +1283 -299
  795. package/src/ai/McpTest.ts +380 -0
  796. package/src/ai/Prompt.ts +65 -0
  797. package/src/ai/Response.ts +36 -31
  798. package/src/ai/Tool.ts +65 -10
  799. package/src/ai/Toolkit.ts +4 -1
  800. package/src/ai/index.ts +6 -0
  801. package/src/ai/internal/mcpCore.ts +78 -44
  802. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  803. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  804. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  805. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  806. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  807. package/src/ai/internal/mcpProtocol.ts +29 -0
  808. package/src/ai/internal/mcpRuntime.ts +9 -5
  809. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  810. package/src/cli/Argument.ts +21 -0
  811. package/src/cli/CliError.ts +90 -3
  812. package/src/cli/CliOutput.ts +300 -55
  813. package/src/cli/Command.ts +76 -41
  814. package/src/cli/Completions.ts +51 -0
  815. package/src/cli/Flag.ts +122 -0
  816. package/src/cli/GlobalFlag.ts +6 -7
  817. package/src/cli/HelpDoc.ts +18 -1
  818. package/src/cli/Param.ts +35 -6
  819. package/src/cli/Primitive.ts +16 -1
  820. package/src/cli/Prompt.ts +1 -0
  821. package/src/cli/TerminalCapabilities.ts +6 -3
  822. package/src/cli/internal/completions/bash.ts +79 -29
  823. package/src/cli/internal/help.ts +21 -9
  824. package/src/cluster/ClusterWorkflowEngine.ts +46 -16
  825. package/src/cluster/MessageStorage.ts +19 -14
  826. package/src/cluster/Sharding.ts +176 -47
  827. package/src/cluster/ShardingConfig.ts +43 -0
  828. package/src/cluster/SingleRunner.ts +3 -3
  829. package/src/cluster/Snowflake.ts +3 -7
  830. package/src/cluster/SqlMessageStorage.ts +49 -17
  831. package/src/cluster/SqlRunnerStorage.ts +143 -70
  832. package/src/cluster/internal/entityManager.ts +75 -22
  833. package/src/crypto/Aead.ts +517 -0
  834. package/src/crypto/Cipher.ts +326 -0
  835. package/src/crypto/CryptoError.ts +242 -0
  836. package/src/crypto/Digest.ts +167 -0
  837. package/src/crypto/Kdf.ts +315 -0
  838. package/src/crypto/KeyAgreement.ts +489 -0
  839. package/src/crypto/KeyFormat.ts +712 -0
  840. package/src/crypto/KeyWrap.ts +639 -0
  841. package/src/crypto/Mac.ts +386 -0
  842. package/src/crypto/SecureRandom.ts +459 -0
  843. package/src/crypto/Signature.ts +673 -0
  844. package/src/crypto/WebCrypto.ts +64 -0
  845. package/src/crypto/index.ts +78 -0
  846. package/src/crypto/internal/asymmetric.ts +329 -0
  847. package/src/crypto/internal/chacha.ts +1088 -0
  848. package/src/crypto/internal/der.ts +110 -0
  849. package/src/crypto/internal/digest.ts +16 -0
  850. package/src/crypto/internal/key.ts +235 -0
  851. package/src/crypto/internal/md5.ts +170 -0
  852. package/src/crypto/internal/webCrypto.ts +150 -0
  853. package/src/devtools/DevToolsClient.ts +2 -0
  854. package/src/encoding/Base64.ts +38 -0
  855. package/src/encoding/Base64Url.ts +5 -2
  856. package/src/encoding/Csv.ts +1298 -0
  857. package/src/encoding/Hex.ts +3 -2
  858. package/src/encoding/SchemaBinary.ts +40 -4
  859. package/src/encoding/Sse.ts +4 -3
  860. package/src/encoding/Toml.ts +117 -35
  861. package/src/encoding/Yaml.ts +61 -18
  862. package/src/encoding/index.ts +6 -0
  863. package/src/eventlog/EventJournal.ts +4 -3
  864. package/src/eventlog/EventLog.ts +340 -15
  865. package/src/eventlog/EventLogEncryption.ts +118 -110
  866. package/src/eventlog/EventLogMessage.ts +273 -1
  867. package/src/eventlog/EventLogRemote.ts +367 -23
  868. package/src/eventlog/EventLogServer.ts +23 -8
  869. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  870. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  871. package/src/eventlog/EventRow.ts +12 -3
  872. package/src/eventlog/SqlEventJournal.ts +68 -45
  873. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  874. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  875. package/src/eventlog/internal/batches.ts +30 -0
  876. package/src/eventlog/internal/compaction.ts +64 -0
  877. package/src/eventlog/internal/conflicts.ts +0 -4
  878. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  879. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  880. package/src/http/Cookies.ts +291 -12
  881. package/src/http/FetchHttpClient.ts +88 -16
  882. package/src/http/HttpClient.ts +636 -29
  883. package/src/http/HttpClientError.ts +35 -1
  884. package/src/http/HttpClientRequest.ts +21 -10
  885. package/src/http/HttpClientResponse.ts +3 -2
  886. package/src/http/HttpMethod.ts +10 -2
  887. package/src/http/HttpMiddleware.ts +15 -18
  888. package/src/http/HttpRouter.ts +2 -1
  889. package/src/http/HttpServerError.ts +2 -2
  890. package/src/http/HttpServerRequest.ts +101 -30
  891. package/src/http/HttpServerResponse.ts +3 -2
  892. package/src/http/HttpStaticServer.ts +51 -22
  893. package/src/http/HttpTraceContext.ts +7 -4
  894. package/src/http/MultipartParser/internal/contentType.ts +3 -3
  895. package/src/http/ProblemDetails.ts +149 -0
  896. package/src/http/UrlParams.ts +6 -1
  897. package/src/http/index.ts +6 -0
  898. package/src/http/internal/compression.ts +4 -5
  899. package/src/http/internal/decompression.ts +10 -4
  900. package/src/http/internal/httpBody.ts +10 -2
  901. package/src/http/internal/urlParams.ts +37 -0
  902. package/src/http-api/HttpApi.ts +3 -6
  903. package/src/http-api/HttpApiBuilder.ts +61 -19
  904. package/src/http-api/HttpApiClient.ts +284 -72
  905. package/src/http-api/HttpApiEndpoint.ts +135 -35
  906. package/src/http-api/HttpApiError.ts +250 -0
  907. package/src/http-api/HttpApiMiddleware.ts +95 -1
  908. package/src/http-api/HttpApiSchema.ts +236 -52
  909. package/src/http-api/HttpApiTest.ts +3 -2
  910. package/src/http-api/OpenApi.ts +20 -17
  911. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  912. package/src/index.ts +6 -6
  913. package/src/internal/arbitrary/runner.ts +133 -36
  914. package/src/internal/core.ts +2 -0
  915. package/src/internal/effect.ts +58 -34
  916. package/src/internal/equal.ts +17 -0
  917. package/src/internal/glob.ts +736 -0
  918. package/src/internal/jsonSchema.ts +27 -0
  919. package/src/internal/matcher.ts +18 -1
  920. package/src/internal/persistence.ts +11 -0
  921. package/src/internal/rcRef.ts +4 -1
  922. package/src/internal/schema/compilerRegistry.ts +6 -1
  923. package/src/internal/schema/content.ts +18 -0
  924. package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
  925. package/src/internal/schema/fromRepresentation.ts +2 -1
  926. package/src/internal/schema/standardSchema.ts +2 -2
  927. package/src/internal/schema/toCodeDocument.ts +11 -7
  928. package/src/internal/schema/toCodec.ts +26 -22
  929. package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
  930. package/src/internal/schema/toRepresentation.ts +122 -140
  931. package/src/internal/sql.ts +14 -0
  932. package/src/internal/trie.ts +43 -14
  933. package/src/internal/ulid.ts +44 -0
  934. package/src/internal/uuid.ts +57 -16
  935. package/src/internal/version.ts +1 -1
  936. package/src/observability/Otlp.ts +21 -4
  937. package/src/observability/OtlpProxy.ts +314 -0
  938. package/src/observability/OtlpResource.ts +9 -1
  939. package/src/observability/OtlpTracer.ts +4 -0
  940. package/src/observability/index.ts +6 -0
  941. package/src/persistence/CircuitBreaker.ts +1678 -0
  942. package/src/persistence/KeyValueStore.ts +219 -22
  943. package/src/persistence/PersistedQueue.ts +128 -59
  944. package/src/persistence/Persistence.ts +20 -13
  945. package/src/persistence/Redis.ts +129 -8
  946. package/src/persistence/index.ts +6 -0
  947. package/src/process/ChildProcess.ts +285 -264
  948. package/src/process/ChildProcessSpawner.ts +46 -2
  949. package/src/process/CommandLine.ts +630 -0
  950. package/src/process/index.ts +6 -0
  951. package/src/reactivity/AsyncResult.ts +1 -1
  952. package/src/reactivity/Atom.ts +5 -5
  953. package/src/reactivity/AtomRegistry.ts +1 -1
  954. package/src/rpc/RpcClient.ts +75 -36
  955. package/src/rpc/RpcMessage.ts +10 -1
  956. package/src/rpc/RpcSerialization.ts +35 -9
  957. package/src/rpc/RpcServer.ts +176 -63
  958. package/src/rpc/RpcTest.ts +3 -0
  959. package/src/schema/Model.ts +26 -3
  960. package/src/sql/Migrator.ts +15 -69
  961. package/src/sql/MigratorFileSystem.ts +71 -0
  962. package/src/sql/SqlClient.ts +13 -20
  963. package/src/sql/SqlResolver.ts +23 -9
  964. package/src/sql/Statement.ts +38 -9
  965. package/src/sql/index.ts +1 -1
  966. package/src/testing/index.ts +0 -6
  967. package/src/workflow/DurableDeferred.ts +23 -6
  968. package/src/workflow/internal/crypto.ts +15 -11
  969. package/dist/Crypto.d.ts +0 -244
  970. package/dist/Crypto.d.ts.map +0 -1
  971. package/dist/Crypto.js +0 -139
  972. package/dist/Crypto.js.map +0 -1
  973. package/dist/testing/TestCrypto.d.ts +0 -73
  974. package/dist/testing/TestCrypto.d.ts.map +0 -1
  975. package/dist/testing/TestCrypto.js +0 -87
  976. package/dist/testing/TestCrypto.js.map +0 -1
  977. package/src/Crypto.ts +0 -347
  978. package/src/testing/TestCrypto.ts +0 -94
@@ -0,0 +1,718 @@
1
+ /**
2
+ * Encodes and decodes CSV streams, with optional schema transformations.
3
+ *
4
+ * **Details**
5
+ *
6
+ * Follows RFC 4180 with a configurable delimiter. Cells are strings, and
7
+ * whitespace and empty cells are kept as they are. Quoted fields can contain
8
+ * delimiters, line breaks and doubled quotes. Decoders accept LF, CRLF and CR
9
+ * line endings and strip a leading BOM. Schema adapters convert cells to and
10
+ * from typed values.
11
+ *
12
+ * @stability unstable
13
+ * @since 4.1.0
14
+ */
15
+ import * as Arr from "../Array.js";
16
+ import * as Cause from "../Cause.js";
17
+ import * as Channel from "../Channel.js";
18
+ import * as Data from "../Data.js";
19
+ import * as Effect from "../Effect.js";
20
+ import * as Predicate from "../Predicate.js";
21
+ import * as Pull from "../Pull.js";
22
+ import * as Schema from "../Schema.js";
23
+ import * as SchemaAST from "../SchemaAST.js";
24
+ import * as SchemaIssue from "../SchemaIssue.js";
25
+ const CsvErrorTypeId = "~effect/encoding/Csv/CsvError";
26
+ /**
27
+ * A CSV decoding failure.
28
+ *
29
+ * **Details**
30
+ *
31
+ * `record` is one-based and counts the header row and blank lines. `line` is
32
+ * the one-based physical line where the record starts. `column` is the
33
+ * one-based cell index of a syntax error, and `undefined` otherwise.
34
+ *
35
+ * @stability unstable
36
+ * @category errors
37
+ * @since 4.1.0
38
+ */
39
+ export class CsvError extends /*#__PURE__*/Data.TaggedError("CsvError") {
40
+ /**
41
+ * Identifies CSV errors across module instances.
42
+ *
43
+ * @stability unstable
44
+ * @since 4.1.0
45
+ */
46
+ [CsvErrorTypeId] = CsvErrorTypeId;
47
+ }
48
+ /**
49
+ * Checks whether a value is a `CsvError`.
50
+ *
51
+ * @stability unstable
52
+ * @category guards
53
+ * @since 4.1.0
54
+ */
55
+ export const isCsvError = u => Predicate.hasProperty(u, CsvErrorTypeId);
56
+ const defaultMaxRecordSize = 1024 * 1024;
57
+ const checkDelimiter = delimiter => {
58
+ if (delimiter.length !== 1 || delimiter === "\"" || delimiter === "\r" || delimiter === "\n") {
59
+ throw new Error(`Csv: delimiter must be one character other than a quote or line break, got ${delimiter}`);
60
+ }
61
+ return delimiter;
62
+ };
63
+ const QUOTE = 34;
64
+ const CR = 13;
65
+ const LF = 10;
66
+ // Parser states. QUOTE_IN_QUOTED follows a quote inside a quoted field, which
67
+ // either closes the field or starts an escaped quote.
68
+ const FIELD_START = 0;
69
+ const UNQUOTED = 1;
70
+ const QUOTED = 2;
71
+ const QUOTE_IN_QUOTED = 3;
72
+ class Parser {
73
+ delimiter;
74
+ maxRecordSize;
75
+ ignoreEmptyLines;
76
+ state = FIELD_START;
77
+ // The partial field, carried across chunks.
78
+ field = "";
79
+ cells = [];
80
+ // The size of the current record before the current chunk.
81
+ size = 0;
82
+ record = 1;
83
+ line = 1;
84
+ recordLine = 1;
85
+ started = false;
86
+ // A CR ended the previous record, so a leading LF completes a CRLF.
87
+ skipLF = false;
88
+ // Quoted content ended with a CR, so a leading LF does not start a new line.
89
+ quotedCR = false;
90
+ constructor(delimiter, maxRecordSize, ignoreEmptyLines) {
91
+ this.delimiter = delimiter.charCodeAt(0);
92
+ this.maxRecordSize = maxRecordSize;
93
+ this.ignoreEmptyLines = ignoreEmptyLines;
94
+ }
95
+ fail(kind, message) {
96
+ return new CsvError({
97
+ kind,
98
+ message,
99
+ record: this.record,
100
+ line: this.recordLine,
101
+ column: kind === "Syntax" ? this.cells.length + 1 : undefined
102
+ });
103
+ }
104
+ checkSize(size) {
105
+ if (size > this.maxRecordSize) {
106
+ throw this.fail("RecordSize", `CSV record exceeds maxRecordSize of ${this.maxRecordSize}`);
107
+ }
108
+ }
109
+ // A record that is already too large reports its size, not the syntax error.
110
+ failSyntax(size, message) {
111
+ this.checkSize(size);
112
+ return this.fail("Syntax", message);
113
+ }
114
+ endRecord(size, out) {
115
+ this.checkSize(size);
116
+ if (size > 0 || !this.ignoreEmptyLines) {
117
+ out.push({
118
+ cells: this.cells,
119
+ record: this.record,
120
+ line: this.recordLine
121
+ });
122
+ }
123
+ this.cells = [];
124
+ this.size = 0;
125
+ this.record++;
126
+ }
127
+ countLines(text, start, end) {
128
+ for (let i = start; i < end; i++) {
129
+ const c = text.charCodeAt(i);
130
+ if (c === CR) this.line++;else if (c === LF && !(i === start ? this.quotedCR : text.charCodeAt(i - 1) === CR)) this.line++;
131
+ }
132
+ if (end > start) this.quotedCR = text.charCodeAt(end - 1) === CR;
133
+ }
134
+ feed(text, out) {
135
+ const length = text.length;
136
+ const delimiter = this.delimiter;
137
+ let i = 0;
138
+ if (length > 0 && !this.started) {
139
+ this.started = true;
140
+ if (text.charCodeAt(0) === 0xFEFF) i = 1;
141
+ }
142
+ // The current record starts at `start` in this chunk, so its size at `i`
143
+ // is `this.size + i - start`.
144
+ let start = i;
145
+ let state = this.state;
146
+ let field = this.field;
147
+ while (i < length) {
148
+ if (state === FIELD_START) {
149
+ if (this.skipLF) {
150
+ this.skipLF = false;
151
+ if (text.charCodeAt(i) === LF) {
152
+ start = ++i;
153
+ continue;
154
+ }
155
+ }
156
+ if (text.charCodeAt(i) === QUOTE) {
157
+ state = QUOTED;
158
+ this.quotedCR = false;
159
+ i++;
160
+ continue;
161
+ }
162
+ state = UNQUOTED;
163
+ }
164
+ if (state === UNQUOTED) {
165
+ let j = i;
166
+ let c = 0;
167
+ while (j < length) {
168
+ c = text.charCodeAt(j);
169
+ if (c === delimiter || c === CR || c === LF || c === QUOTE) break;
170
+ j++;
171
+ }
172
+ if (j > i) field = field === "" ? text.slice(i, j) : field + text.slice(i, j);
173
+ if (j === length) {
174
+ i = j;
175
+ break;
176
+ }
177
+ if (c === QUOTE) {
178
+ throw this.failSyntax(this.size + j - start, "Unexpected quote in an unquoted field");
179
+ }
180
+ this.cells.push(field);
181
+ field = "";
182
+ state = FIELD_START;
183
+ i = j + 1;
184
+ if (c !== delimiter) {
185
+ this.endRecord(this.size + j - start, out);
186
+ this.line++;
187
+ this.recordLine = this.line;
188
+ this.skipLF = c === CR;
189
+ start = i;
190
+ }
191
+ continue;
192
+ }
193
+ if (state === QUOTED) {
194
+ const end = text.indexOf("\"", i);
195
+ const j = end === -1 ? length : end;
196
+ if (j > i) {
197
+ field += text.slice(i, j);
198
+ this.countLines(text, i, j);
199
+ }
200
+ if (end === -1) {
201
+ i = j;
202
+ break;
203
+ }
204
+ state = QUOTE_IN_QUOTED;
205
+ i = j + 1;
206
+ continue;
207
+ }
208
+ // QUOTE_IN_QUOTED
209
+ const c = text.charCodeAt(i);
210
+ if (c === QUOTE) {
211
+ field += "\"";
212
+ state = QUOTED;
213
+ this.quotedCR = false;
214
+ i++;
215
+ } else if (c === delimiter || c === CR || c === LF) {
216
+ this.cells.push(field);
217
+ field = "";
218
+ state = FIELD_START;
219
+ i++;
220
+ if (c !== delimiter) {
221
+ this.endRecord(this.size + i - 1 - start, out);
222
+ this.line++;
223
+ this.recordLine = this.line;
224
+ this.skipLF = c === CR;
225
+ start = i;
226
+ }
227
+ } else {
228
+ throw this.failSyntax(this.size + i - start, "Expected a delimiter or line break after a closing quote");
229
+ }
230
+ }
231
+ this.state = state;
232
+ this.field = field;
233
+ this.size += length - start;
234
+ this.checkSize(this.size);
235
+ }
236
+ end(out) {
237
+ if (this.state === QUOTED) throw this.fail("Syntax", "Unterminated quoted field");
238
+ if (this.size > 0 || this.cells.length > 0) {
239
+ this.cells.push(this.field);
240
+ this.field = "";
241
+ this.state = FIELD_START;
242
+ this.endRecord(this.size, out);
243
+ }
244
+ }
245
+ }
246
+ const decodeRecords = options => {
247
+ const delimiter = checkDelimiter(options?.delimiter ?? ",");
248
+ const maxRecordSize = options?.maxRecordSize ?? defaultMaxRecordSize;
249
+ if (!(maxRecordSize > 0)) {
250
+ throw new Error(`Csv: maxRecordSize must be positive, got ${maxRecordSize}`);
251
+ }
252
+ const ignoreEmptyLines = options?.ignoreEmptyLines === true;
253
+ const useHeaders = options?.headers === true;
254
+ return Channel.fromTransform((upstream, _scope) => Effect.sync(() => {
255
+ const parser = new Parser(delimiter, maxRecordSize, ignoreEmptyLines);
256
+ let headers;
257
+ // Plain assignment is faster than `Object.fromEntries`, but a `__proto__`
258
+ // header would set the prototype instead of a property.
259
+ let assignable = false;
260
+ let done;
261
+ const toRecord = row => {
262
+ if (!useHeaders) return {
263
+ value: row.cells,
264
+ record: row.record
265
+ };
266
+ if (row.cells.length !== headers.length) {
267
+ throw new CsvError({
268
+ kind: "Header",
269
+ message: `Expected ${headers.length} cells, got ${row.cells.length}`,
270
+ record: row.record,
271
+ line: row.line,
272
+ column: undefined
273
+ });
274
+ }
275
+ if (!assignable) {
276
+ return {
277
+ value: Object.fromEntries(headers.map((name, i) => [name, row.cells[i]])),
278
+ record: row.record
279
+ };
280
+ }
281
+ const value = {};
282
+ for (let i = 0; i < headers.length; i++) value[headers[i]] = row.cells[i];
283
+ return {
284
+ value,
285
+ record: row.record
286
+ };
287
+ };
288
+ const emit = run => {
289
+ const rows = [];
290
+ const out = [];
291
+ try {
292
+ run(rows);
293
+ for (const row of rows) {
294
+ if (useHeaders && headers === undefined) {
295
+ if (new Set(row.cells).size !== row.cells.length) {
296
+ throw new CsvError({
297
+ kind: "Header",
298
+ message: "Duplicate header name",
299
+ record: row.record,
300
+ line: row.line,
301
+ column: undefined
302
+ });
303
+ }
304
+ headers = row.cells;
305
+ assignable = !headers.includes("__proto__");
306
+ } else {
307
+ out.push(toRecord(row));
308
+ }
309
+ }
310
+ } catch (error) {
311
+ if (isCsvError(error)) return Effect.fail(error);
312
+ throw error;
313
+ }
314
+ return Arr.isArrayNonEmpty(out) ? Effect.succeed(out) : pull;
315
+ };
316
+ const pull = Effect.suspend(() => {
317
+ if (done !== undefined) return done;
318
+ return Pull.matchEffect(upstream, {
319
+ onSuccess: texts => emit(out => {
320
+ for (const text of texts) parser.feed(text, out);
321
+ }),
322
+ onFailure: Effect.failCause,
323
+ onDone: value => {
324
+ done = Cause.done(value);
325
+ return emit(out => parser.end(out));
326
+ }
327
+ });
328
+ });
329
+ return pull;
330
+ }));
331
+ };
332
+ /**
333
+ * Creates a channel that parses text chunks into CSV records.
334
+ *
335
+ * **Details**
336
+ *
337
+ * Records are arrays of cells, or objects keyed by the first record when
338
+ * `headers` is `true`. Parser state is created per channel run.
339
+ *
340
+ * **Example** (Parsing header records)
341
+ *
342
+ * ```ts import.meta.vitest
343
+ * import { Effect, Stream } from "effect"
344
+ * import { Csv } from "effect/encoding"
345
+ *
346
+ * const records = Stream.make("name,city\nAlice,\"San\nFrancisco\"\n").pipe(
347
+ * Stream.pipeThroughChannel(Csv.decodeString({ headers: true })),
348
+ * Stream.runCollect
349
+ * )
350
+ * await Effect.runPromise(records) // => [{ name: "Alice", city: "San\nFrancisco" }]
351
+ * ```
352
+ *
353
+ * @see decode
354
+ * @see decodeSchemaString
355
+ * @stability unstable
356
+ * @category decoding
357
+ * @since 4.1.0
358
+ */
359
+ export const decodeString = options => Channel.map(decodeRecords(options), Arr.map(record => record.value));
360
+ /**
361
+ * Creates a channel that parses UTF-8 byte chunks into CSV records.
362
+ *
363
+ * @see decodeString
364
+ * @stability unstable
365
+ * @category decoding
366
+ * @since 4.1.0
367
+ */
368
+ export const decode = options => Channel.pipeTo(Channel.decodeText("utf-8", {
369
+ ignoreBOM: true
370
+ }), decodeString(options));
371
+ // Rewrites the chunk index at the head of each top-level issue path to the
372
+ // record number, keeping the rest of the issue unchanged.
373
+ const rebaseIssue = (error, record) => {
374
+ const issue = error.issue;
375
+ if (issue._tag !== "Composite") return error;
376
+ return new Schema.SchemaError(new SchemaIssue.Composite(issue.ast, Arr.map(issue.issues, issue => issue._tag === "Pointer" && typeof issue.path[0] === "number" ? new SchemaIssue.Pointer([record(issue.path[0]), ...issue.path.slice(1)], issue.issue) : issue), issue.input, {
377
+ reportInput: "input" in issue
378
+ }));
379
+ };
380
+ // Derived codecs are new ASTs, and schema parsers are cached per AST, so they
381
+ // are memoized to avoid recompiling parsers for every channel.
382
+ const stringTreeCodecs = /*#__PURE__*/new WeakMap();
383
+ const arrayCodecs = /*#__PURE__*/new WeakMap();
384
+ // The schema used for CSV cells. `toCodecStringTree` keeps the decoded type and
385
+ // services and only changes the encoded side, which is treated as unknown here.
386
+ const toCodec = (schema, disableCodecs) => {
387
+ if (disableCodecs === true) return schema;
388
+ let codec = stringTreeCodecs.get(schema);
389
+ if (codec === undefined) {
390
+ codec = Schema.toCodecStringTree(schema);
391
+ stringTreeCodecs.set(schema, codec);
392
+ }
393
+ return codec;
394
+ };
395
+ const toArrayCodec = codec => {
396
+ let array = arrayCodecs.get(codec);
397
+ if (array === undefined) {
398
+ array = Schema.NonEmptyArray(codec);
399
+ arrayCodecs.set(codec, array);
400
+ }
401
+ return array;
402
+ };
403
+ const isStringLeaf = ast => {
404
+ switch (ast._tag) {
405
+ case "String":
406
+ case "TemplateLiteral":
407
+ return true;
408
+ case "Literal":
409
+ return typeof ast.literal === "string";
410
+ case "Enum":
411
+ return ast.enums.every(([, value]) => typeof value === "string");
412
+ case "Union":
413
+ return ast.types.every(type => type._tag === "Undefined" || isStringLeaf(type));
414
+ default:
415
+ return false;
416
+ }
417
+ };
418
+ const resolveSuspend = ast => SchemaAST.isSuspend(ast) ? resolveSuspend(ast.thunk()) : ast;
419
+ // Throws unless every selected cell of an encoded struct or tuple is a string.
420
+ const checkCells = (ast, columns) => {
421
+ ast = resolveSuspend(ast);
422
+ const check = (name, type) => {
423
+ if (!isStringLeaf(type)) {
424
+ throw new Error(`Csv: ${name} encodes to ${type._tag}, not a string. ` + "Encode it as a single cell with a transformation, such as SchemaGetter.split for arrays");
425
+ }
426
+ };
427
+ if (SchemaAST.isObjects(ast)) {
428
+ for (const ps of ast.propertySignatures) {
429
+ if (typeof ps.name === "string" && (columns === undefined || columns.includes(ps.name))) {
430
+ check(`column ${JSON.stringify(ps.name)}`, ps.type);
431
+ }
432
+ }
433
+ for (const is of ast.indexSignatures) check("index signature", is.type);
434
+ } else if (SchemaAST.isArrays(ast)) {
435
+ ast.elements.forEach((type, i) => check(`column ${i + 1}`, type));
436
+ for (const type of ast.rest) check("rest element", type);
437
+ } else if (SchemaAST.isUnion(ast)) {
438
+ for (const type of ast.types) checkCells(type, columns);
439
+ } else {
440
+ throw new Error(`Csv: cannot verify string cells for ${ast._tag}. ` + "Encode it as a flat struct or tuple with a transformation");
441
+ }
442
+ };
443
+ /**
444
+ * Creates a channel that parses CSV text and decodes each record with a schema.
445
+ *
446
+ * **Details**
447
+ *
448
+ * With `headers: true` the schema receives objects keyed by header name;
449
+ * otherwise it receives arrays of cells. Columns that do not encode to a string,
450
+ * such as arrays or nested structs, throw when the channel is created. Each
451
+ * chunk is decoded in one pass. Schema failures are `SchemaError`s whose issue
452
+ * paths start with the record number.
453
+ *
454
+ * **Example** (Decoding renamed headers)
455
+ *
456
+ * ```ts import.meta.vitest
457
+ * import { Effect, Schema, Stream } from "effect"
458
+ * import { Csv } from "effect/encoding"
459
+ *
460
+ * const Person = Schema.Struct({
461
+ * name: Schema.String,
462
+ * age: Schema.Number
463
+ * }).pipe(Schema.encodeKeys({ name: "Full Name", age: "Age (years)" }))
464
+ *
465
+ * const people = Stream.make("Full Name,Age (years)\nAlice,32").pipe(
466
+ * Stream.pipeThroughChannel(Csv.decodeSchemaString(Person)({ headers: true })),
467
+ * Stream.runCollect
468
+ * )
469
+ * await Effect.runPromise(people) // => [{ name: "Alice", age: 32 }]
470
+ * ```
471
+ *
472
+ * **Example** (Transforming positional records into objects)
473
+ *
474
+ * ```ts import.meta.vitest
475
+ * import { Effect, Schema, SchemaGetter, Stream } from "effect"
476
+ * import { Csv } from "effect/encoding"
477
+ *
478
+ * const Person = Schema.Tuple([Schema.String, Schema.Number]).pipe(
479
+ * Schema.decodeTo(Schema.Struct({ name: Schema.String, age: Schema.Number }), {
480
+ * decode: SchemaGetter.transform(([name, age]) => ({ name, age })),
481
+ * encode: SchemaGetter.transform(({ name, age }) => [name, age] as const)
482
+ * })
483
+ * )
484
+ *
485
+ * const people = Stream.make("Alice,32").pipe(
486
+ * Stream.pipeThroughChannel(Csv.decodeSchemaString(Person)()),
487
+ * Stream.runCollect
488
+ * )
489
+ * await Effect.runPromise(people) // => [{ name: "Alice", age: 32 }]
490
+ * ```
491
+ *
492
+ * @see decodeSchema
493
+ * @see encodeSchemaString
494
+ * @stability unstable
495
+ * @category decoding
496
+ * @since 4.1.0
497
+ */
498
+ export const decodeSchemaString = schema => (options, parseOptions) => {
499
+ const codec = toCodec(schema, options?.disableCodecs);
500
+ const ast = resolveSuspend(SchemaAST.toEncoded(codec.ast));
501
+ checkCells(ast, undefined);
502
+ // CSV cannot tell an empty cell from a missing one, so empty cells of
503
+ // optional properties are decoded as missing keys.
504
+ const optional = options?.disableCodecs !== true && options?.headers === true && SchemaAST.isObjects(ast) ? ast.propertySignatures.flatMap(ps => typeof ps.name === "string" && SchemaAST.isOptional(ps.type) ? [ps.name] : []) : [];
505
+ const input = record => {
506
+ if (optional.length === 0) return record.value;
507
+ // Header records are created per row, so they can be updated in place.
508
+ const value = record.value;
509
+ for (const key of optional) {
510
+ if (value[key] === "") delete value[key];
511
+ }
512
+ return value;
513
+ };
514
+ const decode = Schema.decodeUnknownEffect(toArrayCodec(codec), parseOptions);
515
+ return Channel.mapEffect(decodeRecords(options), records => Effect.mapError(decode(Arr.map(records, input)), error => rebaseIssue(error, index => records[index].record)));
516
+ };
517
+ /**
518
+ * Creates a channel that parses UTF-8 CSV and decodes each record with a schema.
519
+ *
520
+ * @see decodeSchemaString
521
+ * @stability unstable
522
+ * @category decoding
523
+ * @since 4.1.0
524
+ */
525
+ export const decodeSchema = schema => (options, parseOptions) => Channel.pipeTo(Channel.decodeText("utf-8", {
526
+ ignoreBOM: true
527
+ }), decodeSchemaString(schema)(options, parseOptions));
528
+ const textEncoder = /*#__PURE__*/new TextEncoder();
529
+ const makeWriter = options => {
530
+ const delimiter = checkDelimiter(options?.delimiter ?? ",");
531
+ const newline = options?.newline ?? "\r\n";
532
+ if (newline !== "\n" && newline !== "\r\n") {
533
+ throw new Error(`Csv: newline must be "\\n" or "\\r\\n", got ${JSON.stringify(newline)}`);
534
+ }
535
+ const columns = options?.columns;
536
+ if (options?.headers === true && columns === undefined) {
537
+ throw new Error("Csv: headers requires columns");
538
+ }
539
+ // Characters that require a cell to be quoted.
540
+ const special = new RegExp(`[${delimiter.replace(/[\\\]^-]/g, "\\$&")}"\\r\\n]`);
541
+ const cell = value => {
542
+ if (value === undefined) return "";
543
+ if (typeof value !== "string") throw new TypeError(`Csv: expected a string cell, got ${typeof value}`);
544
+ // A leading BOM is quoted so that decoders do not strip it.
545
+ return special.test(value) || value.charCodeAt(0) === 0xFEFF ? "\"" + value.replaceAll("\"", "\"\"") + "\"" : value;
546
+ };
547
+ const write = cells => {
548
+ // A single empty cell is quoted so that it is not read back as an empty line.
549
+ if (cells.length === 1 && (cells[0] === "" || cells[0] === undefined)) return "\"\"" + newline;
550
+ let line = cell(cells[0]);
551
+ for (let i = 1; i < cells.length; i++) line += delimiter + cell(cells[i]);
552
+ return line + newline;
553
+ };
554
+ const header = options?.headers === true ? write(columns) : undefined;
555
+ const writeRecord = value => {
556
+ if (Array.isArray(value)) return write(value);
557
+ if (columns === undefined) throw new TypeError("Csv: encoding object records requires columns");
558
+ const record = value;
559
+ return write(columns.map(key => Object.hasOwn(record, key) ? record[key] : undefined));
560
+ };
561
+ return {
562
+ header,
563
+ writeRecord
564
+ };
565
+ };
566
+ const encodeRecords = options => {
567
+ const {
568
+ header,
569
+ writeRecord
570
+ } = makeWriter(options);
571
+ return Channel.fromTransform((upstream, _scope) => Effect.sync(() => {
572
+ let pending = header;
573
+ const pull = Effect.suspend(() => {
574
+ if (pending !== undefined) {
575
+ const text = pending;
576
+ pending = undefined;
577
+ return Effect.succeed(Arr.of(text));
578
+ }
579
+ return Effect.flatMap(upstream, records => Effect.sync(() => Arr.map(records, writeRecord)));
580
+ });
581
+ return pull;
582
+ }));
583
+ };
584
+ /**
585
+ * Creates a channel that writes CSV records as text, one string per record.
586
+ *
587
+ * **Details**
588
+ *
589
+ * Without `columns`, records are arrays of cells. With `columns`, records are
590
+ * objects encoded by those keys. A non-string cell is a defect.
591
+ *
592
+ * **Example** (Writing header records)
593
+ *
594
+ * ```ts import.meta.vitest
595
+ * import { Effect, Stream } from "effect"
596
+ * import { Csv } from "effect/encoding"
597
+ *
598
+ * const csv = Stream.make({ name: "Smith, Charlie", city: "London" }).pipe(
599
+ * Stream.pipeThroughChannel(Csv.encodeString({ columns: ["name", "city"], headers: true })),
600
+ * Stream.runCollect,
601
+ * Effect.map((parts) => parts.join(""))
602
+ * )
603
+ * await Effect.runPromise(csv) // => 'name,city\r\n"Smith, Charlie",London\r\n'
604
+ * ```
605
+ *
606
+ * @see encode
607
+ * @see encodeSchemaString
608
+ * @stability unstable
609
+ * @category encoding
610
+ * @since 4.1.0
611
+ */
612
+ export const encodeString = options => encodeRecords(options);
613
+ /**
614
+ * Creates a channel that writes CSV records as UTF-8 bytes, one byte array per
615
+ * input chunk.
616
+ *
617
+ * @see encodeString
618
+ * @stability unstable
619
+ * @category encoding
620
+ * @since 4.1.0
621
+ */
622
+ export const encode = options => Channel.map(encodeRecords(options), texts => Arr.of(textEncoder.encode(texts.join(""))));
623
+ // Struct schemas encode by their encoded keys in declaration order. Tuple and
624
+ // array schemas encode by position. Other schemas, including records with
625
+ // index signatures, need explicit columns.
626
+ const schemaColumns = (ast, options) => {
627
+ if (options?.columns !== undefined) {
628
+ checkCells(ast, options.columns);
629
+ return options.columns;
630
+ }
631
+ if (SchemaAST.isObjects(ast) && ast.indexSignatures.length === 0) {
632
+ const columns = ast.propertySignatures.flatMap(ps => typeof ps.name === "string" ? [ps.name] : []);
633
+ checkCells(ast, columns);
634
+ return columns;
635
+ }
636
+ if (SchemaAST.isArrays(ast)) {
637
+ if (options?.headers === true) throw new Error("Csv: headers for tuple or array schemas require columns");
638
+ checkCells(ast, undefined);
639
+ return undefined;
640
+ }
641
+ throw new Error(`Csv: columns are required to encode ${ast._tag} schemas`);
642
+ };
643
+ const encodeSchemaRecords = (schema, options) => {
644
+ const codec = toCodec(schema, options?.disableCodecs);
645
+ const columns = schemaColumns(SchemaAST.toEncoded(codec.ast), options);
646
+ const writer = encodeRecords({
647
+ ...options,
648
+ columns
649
+ });
650
+ const encode = Schema.encodeEffect(toArrayCodec(codec));
651
+ const firstRecord = options?.headers === true ? 2 : 1;
652
+ const values = Channel.fromTransform((upstream, _scope) => Effect.sync(() => {
653
+ let record = firstRecord;
654
+ return Effect.flatMap(upstream, chunk => {
655
+ const first = record;
656
+ record += chunk.length;
657
+ return Effect.mapError(encode(chunk), error => rebaseIssue(error, index => first + index));
658
+ });
659
+ }));
660
+ return Channel.pipeTo(values, writer);
661
+ };
662
+ /**
663
+ * Creates a channel that encodes values with a schema and writes them as CSV
664
+ * text, one string per record.
665
+ *
666
+ * **Details**
667
+ *
668
+ * Columns default to the encoded keys of a struct schema, including keys
669
+ * renamed with `Schema.encodeKeys`. Missing or `undefined` values become empty
670
+ * cells. Schema failures are `SchemaError`s whose issue paths start with the
671
+ * output record number, counting the header row.
672
+ *
673
+ * **Example** (Encoding renamed headers)
674
+ *
675
+ * ```ts import.meta.vitest
676
+ * import { Effect, Schema, Stream } from "effect"
677
+ * import { Csv } from "effect/encoding"
678
+ *
679
+ * const Person = Schema.Struct({
680
+ * name: Schema.String,
681
+ * age: Schema.Number,
682
+ * joined: Schema.Date
683
+ * }).pipe(Schema.encodeKeys({ name: "Full Name", age: "Age (years)" }))
684
+ *
685
+ * const csv = await Effect.runPromise(
686
+ * Stream.make({ name: "Alice", age: 32, joined: new Date(0) }).pipe(
687
+ * Stream.pipeThroughChannel(Csv.encodeSchemaString(Person)({ headers: true, newline: "\n" })),
688
+ * Stream.runCollect,
689
+ * Effect.map((parts) => parts.join(""))
690
+ * )
691
+ * )
692
+ * csv.split("\n") // => ["Full Name,Age (years),joined", "Alice,32,1970-01-01T00:00:00.000Z", ""]
693
+ * ```
694
+ *
695
+ * @see decodeSchemaString
696
+ * @see encodeSchema
697
+ * @stability unstable
698
+ * @category encoding
699
+ * @since 4.1.0
700
+ */
701
+ export const encodeSchemaString = schema => options => encodeSchemaRecords(schema, options);
702
+ /**
703
+ * Creates a channel that encodes values with a schema and writes them as UTF-8
704
+ * CSV bytes.
705
+ *
706
+ * **Gotchas**
707
+ *
708
+ * When the bytes stream an HTTP response body, for example through
709
+ * `HttpApiSchema.StreamUint8Array`, an encoding failure ends the body; it
710
+ * cannot change a status that was already sent.
711
+ *
712
+ * @see encodeSchemaString
713
+ * @stability unstable
714
+ * @category encoding
715
+ * @since 4.1.0
716
+ */
717
+ export const encodeSchema = schema => options => Channel.map(encodeSchemaRecords(schema, options), texts => Arr.of(textEncoder.encode(texts.join(""))));
718
+ //# sourceMappingURL=Csv.js.map