effect 4.0.7 → 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 (679) hide show
  1. package/README.md +1 -1
  2. package/dist/BigDecimal.d.ts.map +1 -1
  3. package/dist/BigDecimal.js +3 -0
  4. package/dist/BigDecimal.js.map +1 -1
  5. package/dist/Channel.d.ts +12 -6
  6. package/dist/Channel.d.ts.map +1 -1
  7. package/dist/Channel.js +9 -3
  8. package/dist/Channel.js.map +1 -1
  9. package/dist/Config.d.ts +7 -1
  10. package/dist/Config.d.ts.map +1 -1
  11. package/dist/Config.js.map +1 -1
  12. package/dist/Context.d.ts +18 -1
  13. package/dist/Context.d.ts.map +1 -1
  14. package/dist/Context.js +27 -8
  15. package/dist/Context.js.map +1 -1
  16. package/dist/Cron.d.ts +81 -11
  17. package/dist/Cron.d.ts.map +1 -1
  18. package/dist/Cron.js +101 -26
  19. package/dist/Cron.js.map +1 -1
  20. package/dist/Duration.d.ts +78 -0
  21. package/dist/Duration.d.ts.map +1 -1
  22. package/dist/Duration.js +123 -0
  23. package/dist/Duration.js.map +1 -1
  24. package/dist/Effect.d.ts +164 -7
  25. package/dist/Effect.d.ts.map +1 -1
  26. package/dist/Effect.js +11 -1
  27. package/dist/Effect.js.map +1 -1
  28. package/dist/FileSystem.d.ts +59 -4
  29. package/dist/FileSystem.d.ts.map +1 -1
  30. package/dist/FileSystem.js +9 -2
  31. package/dist/FileSystem.js.map +1 -1
  32. package/dist/Glob.d.ts +165 -0
  33. package/dist/Glob.d.ts.map +1 -0
  34. package/dist/Glob.js +127 -0
  35. package/dist/Glob.js.map +1 -0
  36. package/dist/Match.d.ts +86 -0
  37. package/dist/Match.d.ts.map +1 -1
  38. package/dist/Match.js +72 -0
  39. package/dist/Match.js.map +1 -1
  40. package/dist/Pool.d.ts +51 -0
  41. package/dist/Pool.d.ts.map +1 -1
  42. package/dist/Pool.js +59 -9
  43. package/dist/Pool.js.map +1 -1
  44. package/dist/Random.d.ts.map +1 -1
  45. package/dist/Random.js +3 -3
  46. package/dist/Random.js.map +1 -1
  47. package/dist/RcMap.d.ts.map +1 -1
  48. package/dist/RcMap.js +8 -2
  49. package/dist/RcMap.js.map +1 -1
  50. package/dist/Schedule.d.ts +18 -1
  51. package/dist/Schedule.d.ts.map +1 -1
  52. package/dist/Schedule.js +7 -2
  53. package/dist/Schedule.js.map +1 -1
  54. package/dist/Schema.d.ts +666 -41
  55. package/dist/Schema.d.ts.map +1 -1
  56. package/dist/Schema.js +650 -0
  57. package/dist/Schema.js.map +1 -1
  58. package/dist/SchemaGetter.d.ts +6 -1
  59. package/dist/SchemaGetter.d.ts.map +1 -1
  60. package/dist/SchemaGetter.js +22 -11
  61. package/dist/SchemaGetter.js.map +1 -1
  62. package/dist/SchemaRepresentation.d.ts +14 -0
  63. package/dist/SchemaRepresentation.d.ts.map +1 -1
  64. package/dist/SchemaRepresentation.js +16 -0
  65. package/dist/SchemaRepresentation.js.map +1 -1
  66. package/dist/SchemaTransformation.d.ts +8 -3
  67. package/dist/SchemaTransformation.d.ts.map +1 -1
  68. package/dist/SchemaTransformation.js +6 -3
  69. package/dist/SchemaTransformation.js.map +1 -1
  70. package/dist/ScopedCache.d.ts.map +1 -1
  71. package/dist/ScopedCache.js +5 -7
  72. package/dist/ScopedCache.js.map +1 -1
  73. package/dist/Semaphore.d.ts +130 -0
  74. package/dist/Semaphore.d.ts.map +1 -1
  75. package/dist/Semaphore.js +40 -0
  76. package/dist/Semaphore.js.map +1 -1
  77. package/dist/Stream.d.ts +13 -4
  78. package/dist/Stream.d.ts.map +1 -1
  79. package/dist/Stream.js +9 -0
  80. package/dist/Stream.js.map +1 -1
  81. package/dist/Terminal.d.ts +18 -1
  82. package/dist/Terminal.d.ts.map +1 -1
  83. package/dist/Terminal.js +1 -1
  84. package/dist/Terminal.js.map +1 -1
  85. package/dist/ai/AiError.d.ts +43 -116
  86. package/dist/ai/AiError.d.ts.map +1 -1
  87. package/dist/ai/AiError.js +53 -72
  88. package/dist/ai/AiError.js.map +1 -1
  89. package/dist/ai/Decision.d.ts +196 -15
  90. package/dist/ai/Decision.d.ts.map +1 -1
  91. package/dist/ai/Decision.js +130 -0
  92. package/dist/ai/Decision.js.map +1 -1
  93. package/dist/ai/DecisionModel.d.ts +54 -13
  94. package/dist/ai/DecisionModel.d.ts.map +1 -1
  95. package/dist/ai/DecisionModel.js +123 -12
  96. package/dist/ai/DecisionModel.js.map +1 -1
  97. package/dist/ai/McpServer.d.ts +630 -29
  98. package/dist/ai/McpServer.d.ts.map +1 -1
  99. package/dist/ai/McpServer.js +562 -116
  100. package/dist/ai/McpServer.js.map +1 -1
  101. package/dist/ai/McpTest.d.ts +130 -0
  102. package/dist/ai/McpTest.d.ts.map +1 -0
  103. package/dist/ai/McpTest.js +237 -0
  104. package/dist/ai/McpTest.js.map +1 -0
  105. package/dist/ai/Response.d.ts +1 -25
  106. package/dist/ai/Response.d.ts.map +1 -1
  107. package/dist/ai/Response.js +1 -10
  108. package/dist/ai/Response.js.map +1 -1
  109. package/dist/ai/Tool.d.ts +19 -1
  110. package/dist/ai/Tool.d.ts.map +1 -1
  111. package/dist/ai/Tool.js.map +1 -1
  112. package/dist/ai/index.d.ts +5 -0
  113. package/dist/ai/index.d.ts.map +1 -1
  114. package/dist/ai/index.js +5 -0
  115. package/dist/ai/index.js.map +1 -1
  116. package/dist/ai/internal/mcpCore.js +17 -12
  117. package/dist/ai/internal/mcpCore.js.map +1 -1
  118. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  119. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  120. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  121. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  122. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  123. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  124. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  125. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  126. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  127. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  128. package/dist/ai/internal/mcpProtocol.js +13 -0
  129. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  130. package/dist/ai/internal/mcpRuntime.js +5 -3
  131. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  132. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  133. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  134. package/dist/cli/Argument.d.ts +6 -0
  135. package/dist/cli/Argument.d.ts.map +1 -1
  136. package/dist/cli/Argument.js +2 -0
  137. package/dist/cli/Argument.js.map +1 -1
  138. package/dist/cli/CliOutput.d.ts +65 -1
  139. package/dist/cli/CliOutput.d.ts.map +1 -1
  140. package/dist/cli/CliOutput.js +94 -37
  141. package/dist/cli/CliOutput.js.map +1 -1
  142. package/dist/cli/Command.d.ts +23 -0
  143. package/dist/cli/Command.d.ts.map +1 -1
  144. package/dist/cli/Command.js +8 -0
  145. package/dist/cli/Command.js.map +1 -1
  146. package/dist/cli/Flag.d.ts +107 -0
  147. package/dist/cli/Flag.d.ts.map +1 -1
  148. package/dist/cli/Flag.js +37 -0
  149. package/dist/cli/Flag.js.map +1 -1
  150. package/dist/cli/HelpDoc.d.ts +15 -1
  151. package/dist/cli/HelpDoc.d.ts.map +1 -1
  152. package/dist/cli/Param.d.ts +6 -0
  153. package/dist/cli/Param.d.ts.map +1 -1
  154. package/dist/cli/Param.js +2 -0
  155. package/dist/cli/Param.js.map +1 -1
  156. package/dist/cli/Primitive.d.ts +14 -0
  157. package/dist/cli/Primitive.d.ts.map +1 -1
  158. package/dist/cli/Primitive.js +15 -1
  159. package/dist/cli/Primitive.js.map +1 -1
  160. package/dist/cli/Prompt.d.ts +1 -0
  161. package/dist/cli/Prompt.d.ts.map +1 -1
  162. package/dist/cli/Prompt.js +1 -0
  163. package/dist/cli/Prompt.js.map +1 -1
  164. package/dist/cli/internal/help.d.ts.map +1 -1
  165. package/dist/cli/internal/help.js +17 -10
  166. package/dist/cli/internal/help.js.map +1 -1
  167. package/dist/cluster/Sharding.d.ts.map +1 -1
  168. package/dist/cluster/Sharding.js +90 -28
  169. package/dist/cluster/Sharding.js.map +1 -1
  170. package/dist/cluster/ShardingConfig.d.ts +72 -6
  171. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  172. package/dist/cluster/ShardingConfig.js +4 -0
  173. package/dist/cluster/ShardingConfig.js.map +1 -1
  174. package/dist/cluster/SingleRunner.d.ts +3 -3
  175. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  176. package/dist/cluster/SingleRunner.js +1 -1
  177. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  178. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  179. package/dist/cluster/SqlMessageStorage.js +34 -7
  180. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  181. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  182. package/dist/cluster/SqlRunnerStorage.js +23 -8
  183. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  184. package/dist/crypto/Aead.d.ts +322 -0
  185. package/dist/crypto/Aead.d.ts.map +1 -0
  186. package/dist/crypto/Aead.js +331 -0
  187. package/dist/crypto/Aead.js.map +1 -0
  188. package/dist/crypto/Cipher.d.ts +235 -0
  189. package/dist/crypto/Cipher.d.ts.map +1 -0
  190. package/dist/crypto/Cipher.js +233 -0
  191. package/dist/crypto/Cipher.js.map +1 -0
  192. package/dist/crypto/CryptoError.d.ts +212 -0
  193. package/dist/crypto/CryptoError.d.ts.map +1 -0
  194. package/dist/crypto/CryptoError.js +202 -0
  195. package/dist/crypto/CryptoError.js.map +1 -0
  196. package/dist/crypto/Digest.d.ts +143 -0
  197. package/dist/crypto/Digest.d.ts.map +1 -0
  198. package/dist/crypto/Digest.js +146 -0
  199. package/dist/crypto/Digest.js.map +1 -0
  200. package/dist/crypto/Kdf.d.ts +220 -0
  201. package/dist/crypto/Kdf.d.ts.map +1 -0
  202. package/dist/crypto/Kdf.js +212 -0
  203. package/dist/crypto/Kdf.js.map +1 -0
  204. package/dist/crypto/KeyAgreement.d.ts +323 -0
  205. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  206. package/dist/crypto/KeyAgreement.js +303 -0
  207. package/dist/crypto/KeyAgreement.js.map +1 -0
  208. package/dist/crypto/KeyFormat.d.ts +309 -0
  209. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  210. package/dist/crypto/KeyFormat.js +556 -0
  211. package/dist/crypto/KeyFormat.js.map +1 -0
  212. package/dist/crypto/KeyWrap.d.ts +389 -0
  213. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  214. package/dist/crypto/KeyWrap.js +381 -0
  215. package/dist/crypto/KeyWrap.js.map +1 -0
  216. package/dist/crypto/Mac.d.ts +277 -0
  217. package/dist/crypto/Mac.d.ts.map +1 -0
  218. package/dist/crypto/Mac.js +288 -0
  219. package/dist/crypto/Mac.js.map +1 -0
  220. package/dist/crypto/SecureRandom.d.ts +340 -0
  221. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  222. package/dist/crypto/SecureRandom.js +257 -0
  223. package/dist/crypto/SecureRandom.js.map +1 -0
  224. package/dist/crypto/Signature.d.ts +448 -0
  225. package/dist/crypto/Signature.d.ts.map +1 -0
  226. package/dist/crypto/Signature.js +484 -0
  227. package/dist/crypto/Signature.js.map +1 -0
  228. package/dist/crypto/WebCrypto.d.ts +61 -0
  229. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  230. package/dist/crypto/WebCrypto.js +63 -0
  231. package/dist/crypto/WebCrypto.js.map +1 -0
  232. package/dist/crypto/index.d.ts +65 -0
  233. package/dist/crypto/index.d.ts.map +1 -0
  234. package/dist/crypto/index.js +66 -0
  235. package/dist/crypto/index.js.map +1 -0
  236. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  237. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  238. package/dist/crypto/internal/asymmetric.js +210 -0
  239. package/dist/crypto/internal/asymmetric.js.map +1 -0
  240. package/dist/crypto/internal/chacha.d.ts +46 -0
  241. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  242. package/dist/crypto/internal/chacha.js +885 -0
  243. package/dist/crypto/internal/chacha.js.map +1 -0
  244. package/dist/crypto/internal/der.d.ts +6 -0
  245. package/dist/crypto/internal/der.d.ts.map +1 -0
  246. package/dist/crypto/internal/der.js +86 -0
  247. package/dist/crypto/internal/der.js.map +1 -0
  248. package/dist/crypto/internal/digest.d.ts +2 -0
  249. package/dist/crypto/internal/digest.d.ts.map +1 -0
  250. package/dist/crypto/internal/digest.js +15 -0
  251. package/dist/crypto/internal/digest.js.map +1 -0
  252. package/dist/crypto/internal/key.d.ts +2 -0
  253. package/dist/crypto/internal/key.d.ts.map +1 -0
  254. package/dist/crypto/internal/key.js +170 -0
  255. package/dist/crypto/internal/key.js.map +1 -0
  256. package/dist/crypto/internal/md5.d.ts +39 -0
  257. package/dist/crypto/internal/md5.d.ts.map +1 -0
  258. package/dist/crypto/internal/md5.js +179 -0
  259. package/dist/crypto/internal/md5.js.map +1 -0
  260. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  261. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  262. package/dist/crypto/internal/webCrypto.js +111 -0
  263. package/dist/crypto/internal/webCrypto.js.map +1 -0
  264. package/dist/encoding/Base64Url.d.ts.map +1 -1
  265. package/dist/encoding/Base64Url.js +3 -2
  266. package/dist/encoding/Base64Url.js.map +1 -1
  267. package/dist/encoding/Csv.d.ts +608 -0
  268. package/dist/encoding/Csv.d.ts.map +1 -0
  269. package/dist/encoding/Csv.js +718 -0
  270. package/dist/encoding/Csv.js.map +1 -0
  271. package/dist/encoding/Hex.d.ts +3 -2
  272. package/dist/encoding/Hex.d.ts.map +1 -1
  273. package/dist/encoding/Hex.js +3 -2
  274. package/dist/encoding/Hex.js.map +1 -1
  275. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  276. package/dist/encoding/SchemaBinary.js +42 -4
  277. package/dist/encoding/SchemaBinary.js.map +1 -1
  278. package/dist/encoding/Toml.d.ts +17 -3
  279. package/dist/encoding/Toml.d.ts.map +1 -1
  280. package/dist/encoding/Toml.js +104 -16
  281. package/dist/encoding/Toml.js.map +1 -1
  282. package/dist/encoding/Yaml.d.ts +8 -1
  283. package/dist/encoding/Yaml.d.ts.map +1 -1
  284. package/dist/encoding/Yaml.js +54 -18
  285. package/dist/encoding/Yaml.js.map +1 -1
  286. package/dist/encoding/index.d.ts +5 -0
  287. package/dist/encoding/index.d.ts.map +1 -1
  288. package/dist/encoding/index.js +5 -0
  289. package/dist/encoding/index.js.map +1 -1
  290. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  291. package/dist/eventlog/EventJournal.js +6 -3
  292. package/dist/eventlog/EventJournal.js.map +1 -1
  293. package/dist/eventlog/EventLog.d.ts +119 -4
  294. package/dist/eventlog/EventLog.d.ts.map +1 -1
  295. package/dist/eventlog/EventLog.js +200 -12
  296. package/dist/eventlog/EventLog.js.map +1 -1
  297. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  298. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  299. package/dist/eventlog/EventLogEncryption.js +83 -64
  300. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  301. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  302. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  303. package/dist/eventlog/EventLogMessage.js +217 -1
  304. package/dist/eventlog/EventLogMessage.js.map +1 -1
  305. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  306. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  307. package/dist/eventlog/EventLogRemote.js +186 -16
  308. package/dist/eventlog/EventLogRemote.js.map +1 -1
  309. package/dist/eventlog/EventLogServer.d.ts +3 -0
  310. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  311. package/dist/eventlog/EventLogServer.js +18 -10
  312. package/dist/eventlog/EventLogServer.js.map +1 -1
  313. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  314. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  315. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  316. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  317. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  318. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  319. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  320. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  321. package/dist/eventlog/EventRow.d.ts +4 -0
  322. package/dist/eventlog/EventRow.d.ts.map +1 -1
  323. package/dist/eventlog/EventRow.js +12 -2
  324. package/dist/eventlog/EventRow.js.map +1 -1
  325. package/dist/eventlog/SqlEventJournal.js +2 -2
  326. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  327. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  328. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  329. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  330. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  331. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  332. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  333. package/dist/eventlog/internal/batches.d.ts +12 -0
  334. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  335. package/dist/eventlog/internal/batches.js +26 -0
  336. package/dist/eventlog/internal/batches.js.map +1 -0
  337. package/dist/eventlog/internal/compaction.d.ts +38 -0
  338. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  339. package/dist/eventlog/internal/compaction.js +33 -0
  340. package/dist/eventlog/internal/compaction.js.map +1 -0
  341. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  342. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  343. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  344. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  345. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  346. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  347. package/dist/http/Cookies.d.ts +172 -0
  348. package/dist/http/Cookies.d.ts.map +1 -1
  349. package/dist/http/Cookies.js +143 -1
  350. package/dist/http/Cookies.js.map +1 -1
  351. package/dist/http/FetchHttpClient.d.ts +26 -2
  352. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  353. package/dist/http/FetchHttpClient.js +78 -15
  354. package/dist/http/FetchHttpClient.js.map +1 -1
  355. package/dist/http/HttpClient.d.ts +79 -8
  356. package/dist/http/HttpClient.d.ts.map +1 -1
  357. package/dist/http/HttpClient.js +65 -5
  358. package/dist/http/HttpClient.js.map +1 -1
  359. package/dist/http/HttpClientRequest.d.ts +9 -5
  360. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  361. package/dist/http/HttpClientRequest.js +2 -3
  362. package/dist/http/HttpClientRequest.js.map +1 -1
  363. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  364. package/dist/http/HttpClientResponse.js +3 -2
  365. package/dist/http/HttpClientResponse.js.map +1 -1
  366. package/dist/http/HttpMethod.d.ts +7 -1
  367. package/dist/http/HttpMethod.d.ts.map +1 -1
  368. package/dist/http/HttpMethod.js +3 -8
  369. package/dist/http/HttpMethod.js.map +1 -1
  370. package/dist/http/HttpServerRequest.d.ts +5 -2
  371. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  372. package/dist/http/HttpServerRequest.js +6 -17
  373. package/dist/http/HttpServerRequest.js.map +1 -1
  374. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  375. package/dist/http/HttpServerResponse.js +3 -2
  376. package/dist/http/HttpServerResponse.js.map +1 -1
  377. package/dist/http/HttpTraceContext.d.ts +2 -1
  378. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  379. package/dist/http/HttpTraceContext.js +7 -5
  380. package/dist/http/HttpTraceContext.js.map +1 -1
  381. package/dist/http/ProblemDetails.d.ts +96 -0
  382. package/dist/http/ProblemDetails.d.ts.map +1 -0
  383. package/dist/http/ProblemDetails.js +98 -0
  384. package/dist/http/ProblemDetails.js.map +1 -0
  385. package/dist/http/index.d.ts +5 -0
  386. package/dist/http/index.d.ts.map +1 -1
  387. package/dist/http/index.js +5 -0
  388. package/dist/http/index.js.map +1 -1
  389. package/dist/http/internal/decompression.js +3 -2
  390. package/dist/http/internal/decompression.js.map +1 -1
  391. package/dist/http/internal/urlParams.js +8 -0
  392. package/dist/http/internal/urlParams.js.map +1 -1
  393. package/dist/http-api/HttpApiBuilder.js +19 -5
  394. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  395. package/dist/http-api/HttpApiClient.d.ts +63 -0
  396. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  397. package/dist/http-api/HttpApiClient.js +51 -0
  398. package/dist/http-api/HttpApiClient.js.map +1 -1
  399. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  400. package/dist/http-api/HttpApiEndpoint.js +14 -5
  401. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  402. package/dist/http-api/HttpApiError.d.ts +185 -13
  403. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  404. package/dist/http-api/HttpApiError.js +128 -0
  405. package/dist/http-api/HttpApiError.js.map +1 -1
  406. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  407. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  408. package/dist/http-api/HttpApiMiddleware.js +85 -1
  409. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  410. package/dist/http-api/HttpApiSchema.d.ts +76 -14
  411. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  412. package/dist/http-api/HttpApiSchema.js +53 -0
  413. package/dist/http-api/HttpApiSchema.js.map +1 -1
  414. package/dist/index.d.ts +5 -5
  415. package/dist/index.d.ts.map +1 -1
  416. package/dist/index.js +5 -5
  417. package/dist/index.js.map +1 -1
  418. package/dist/internal/effect.js +25 -14
  419. package/dist/internal/effect.js.map +1 -1
  420. package/dist/internal/glob.d.ts +2 -0
  421. package/dist/internal/glob.d.ts.map +1 -0
  422. package/dist/internal/glob.js +630 -0
  423. package/dist/internal/glob.js.map +1 -0
  424. package/dist/internal/matcher.js +10 -0
  425. package/dist/internal/matcher.js.map +1 -1
  426. package/dist/internal/persistence.js +9 -0
  427. package/dist/internal/persistence.js.map +1 -1
  428. package/dist/internal/rcRef.js +4 -1
  429. package/dist/internal/rcRef.js.map +1 -1
  430. package/dist/internal/schema/toCodeDocument.js +6 -3
  431. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  432. package/dist/internal/trie.js +42 -13
  433. package/dist/internal/trie.js.map +1 -1
  434. package/dist/internal/ulid.js +41 -0
  435. package/dist/internal/ulid.js.map +1 -1
  436. package/dist/internal/uuid.js +52 -8
  437. package/dist/internal/uuid.js.map +1 -1
  438. package/dist/internal/version.js +1 -1
  439. package/dist/observability/Otlp.d.ts +15 -4
  440. package/dist/observability/Otlp.d.ts.map +1 -1
  441. package/dist/observability/Otlp.js +10 -0
  442. package/dist/observability/Otlp.js.map +1 -1
  443. package/dist/observability/OtlpResource.d.ts +7 -0
  444. package/dist/observability/OtlpResource.d.ts.map +1 -1
  445. package/dist/observability/OtlpResource.js +11 -1
  446. package/dist/observability/OtlpResource.js.map +1 -1
  447. package/dist/persistence/KeyValueStore.d.ts +47 -2
  448. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  449. package/dist/persistence/KeyValueStore.js +129 -18
  450. package/dist/persistence/KeyValueStore.js.map +1 -1
  451. package/dist/persistence/PersistedQueue.d.ts +9 -0
  452. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  453. package/dist/persistence/PersistedQueue.js +94 -52
  454. package/dist/persistence/PersistedQueue.js.map +1 -1
  455. package/dist/persistence/Persistence.d.ts +10 -4
  456. package/dist/persistence/Persistence.d.ts.map +1 -1
  457. package/dist/persistence/Persistence.js +18 -11
  458. package/dist/persistence/Persistence.js.map +1 -1
  459. package/dist/process/ChildProcess.d.ts +207 -67
  460. package/dist/process/ChildProcess.d.ts.map +1 -1
  461. package/dist/process/ChildProcess.js +56 -158
  462. package/dist/process/ChildProcess.js.map +1 -1
  463. package/dist/process/ChildProcessSpawner.d.ts +5 -0
  464. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  465. package/dist/process/ChildProcessSpawner.js.map +1 -1
  466. package/dist/process/CommandLine.d.ts +294 -0
  467. package/dist/process/CommandLine.d.ts.map +1 -0
  468. package/dist/process/CommandLine.js +481 -0
  469. package/dist/process/CommandLine.js.map +1 -0
  470. package/dist/process/index.d.ts +5 -0
  471. package/dist/process/index.d.ts.map +1 -1
  472. package/dist/process/index.js +5 -0
  473. package/dist/process/index.js.map +1 -1
  474. package/dist/reactivity/Atom.d.ts +2 -1
  475. package/dist/reactivity/Atom.d.ts.map +1 -1
  476. package/dist/reactivity/Atom.js +3 -4
  477. package/dist/reactivity/Atom.js.map +1 -1
  478. package/dist/reactivity/AtomRegistry.js.map +1 -1
  479. package/dist/rpc/RpcClient.d.ts +16 -1
  480. package/dist/rpc/RpcClient.d.ts.map +1 -1
  481. package/dist/rpc/RpcClient.js +50 -16
  482. package/dist/rpc/RpcClient.js.map +1 -1
  483. package/dist/rpc/RpcMessage.d.ts +10 -1
  484. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  485. package/dist/rpc/RpcMessage.js +1 -0
  486. package/dist/rpc/RpcMessage.js.map +1 -1
  487. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  488. package/dist/rpc/RpcSerialization.js +6 -0
  489. package/dist/rpc/RpcSerialization.js.map +1 -1
  490. package/dist/rpc/RpcServer.d.ts +31 -0
  491. package/dist/rpc/RpcServer.d.ts.map +1 -1
  492. package/dist/rpc/RpcServer.js +139 -66
  493. package/dist/rpc/RpcServer.js.map +1 -1
  494. package/dist/schema/Model.d.ts +14 -0
  495. package/dist/schema/Model.d.ts.map +1 -1
  496. package/dist/schema/Model.js +18 -3
  497. package/dist/schema/Model.js.map +1 -1
  498. package/dist/sql/Migrator.d.ts +0 -19
  499. package/dist/sql/Migrator.d.ts.map +1 -1
  500. package/dist/sql/Migrator.js +3 -48
  501. package/dist/sql/Migrator.js.map +1 -1
  502. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  503. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  504. package/dist/sql/MigratorFileSystem.js +57 -0
  505. package/dist/sql/MigratorFileSystem.js.map +1 -0
  506. package/dist/sql/SqlClient.d.ts.map +1 -1
  507. package/dist/sql/SqlClient.js +5 -9
  508. package/dist/sql/SqlClient.js.map +1 -1
  509. package/dist/sql/Statement.d.ts +20 -6
  510. package/dist/sql/Statement.d.ts.map +1 -1
  511. package/dist/sql/Statement.js +0 -13
  512. package/dist/sql/Statement.js.map +1 -1
  513. package/dist/sql/index.js +1 -1
  514. package/dist/testing/index.d.ts +0 -5
  515. package/dist/testing/index.d.ts.map +1 -1
  516. package/dist/testing/index.js +0 -5
  517. package/dist/testing/index.js.map +1 -1
  518. package/dist/workflow/internal/crypto.js +9 -8
  519. package/dist/workflow/internal/crypto.js.map +1 -1
  520. package/package.json +3 -1
  521. package/src/BigDecimal.ts +3 -0
  522. package/src/Channel.ts +17 -11
  523. package/src/Config.ts +7 -1
  524. package/src/Context.ts +34 -10
  525. package/src/Cron.ts +178 -29
  526. package/src/Duration.ts +140 -0
  527. package/src/Effect.ts +914 -85
  528. package/src/FileSystem.ts +65 -4
  529. package/src/Glob.ts +205 -0
  530. package/src/Match.ts +127 -0
  531. package/src/Pool.ts +73 -15
  532. package/src/Random.ts +3 -3
  533. package/src/RcMap.ts +5 -1
  534. package/src/Schedule.ts +26 -3
  535. package/src/Schema.ts +1189 -62
  536. package/src/SchemaGetter.ts +27 -11
  537. package/src/SchemaRepresentation.ts +19 -0
  538. package/src/SchemaTransformation.ts +8 -3
  539. package/src/ScopedCache.ts +5 -9
  540. package/src/Semaphore.ts +141 -0
  541. package/src/Stream.ts +15 -6
  542. package/src/Terminal.ts +19 -1
  543. package/src/ai/AiError.ts +56 -80
  544. package/src/ai/Decision.ts +257 -6
  545. package/src/ai/DecisionModel.ts +171 -28
  546. package/src/ai/McpServer.ts +1269 -286
  547. package/src/ai/McpTest.ts +380 -0
  548. package/src/ai/Response.ts +2 -22
  549. package/src/ai/Tool.ts +27 -8
  550. package/src/ai/index.ts +6 -0
  551. package/src/ai/internal/mcpCore.ts +78 -44
  552. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  553. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  554. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  555. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  556. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  557. package/src/ai/internal/mcpProtocol.ts +29 -0
  558. package/src/ai/internal/mcpRuntime.ts +9 -5
  559. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  560. package/src/cli/Argument.ts +6 -0
  561. package/src/cli/CliOutput.ts +117 -49
  562. package/src/cli/Command.ts +23 -0
  563. package/src/cli/Flag.ts +107 -0
  564. package/src/cli/HelpDoc.ts +18 -1
  565. package/src/cli/Param.ts +6 -0
  566. package/src/cli/Primitive.ts +16 -1
  567. package/src/cli/Prompt.ts +1 -0
  568. package/src/cli/internal/help.ts +21 -9
  569. package/src/cluster/Sharding.ts +93 -26
  570. package/src/cluster/ShardingConfig.ts +41 -3
  571. package/src/cluster/SingleRunner.ts +3 -3
  572. package/src/cluster/SqlMessageStorage.ts +49 -17
  573. package/src/cluster/SqlRunnerStorage.ts +37 -27
  574. package/src/crypto/Aead.ts +517 -0
  575. package/src/crypto/Cipher.ts +326 -0
  576. package/src/crypto/CryptoError.ts +242 -0
  577. package/src/crypto/Digest.ts +167 -0
  578. package/src/crypto/Kdf.ts +315 -0
  579. package/src/crypto/KeyAgreement.ts +489 -0
  580. package/src/crypto/KeyFormat.ts +712 -0
  581. package/src/crypto/KeyWrap.ts +639 -0
  582. package/src/crypto/Mac.ts +386 -0
  583. package/src/crypto/SecureRandom.ts +459 -0
  584. package/src/crypto/Signature.ts +673 -0
  585. package/src/crypto/WebCrypto.ts +64 -0
  586. package/src/crypto/index.ts +78 -0
  587. package/src/crypto/internal/asymmetric.ts +329 -0
  588. package/src/crypto/internal/chacha.ts +1088 -0
  589. package/src/crypto/internal/der.ts +110 -0
  590. package/src/crypto/internal/digest.ts +16 -0
  591. package/src/crypto/internal/key.ts +235 -0
  592. package/src/crypto/internal/md5.ts +170 -0
  593. package/src/crypto/internal/webCrypto.ts +150 -0
  594. package/src/encoding/Base64Url.ts +5 -2
  595. package/src/encoding/Csv.ts +1298 -0
  596. package/src/encoding/Hex.ts +3 -2
  597. package/src/encoding/SchemaBinary.ts +40 -4
  598. package/src/encoding/Toml.ts +85 -20
  599. package/src/encoding/Yaml.ts +61 -18
  600. package/src/encoding/index.ts +6 -0
  601. package/src/eventlog/EventJournal.ts +4 -3
  602. package/src/eventlog/EventLog.ts +340 -15
  603. package/src/eventlog/EventLogEncryption.ts +118 -110
  604. package/src/eventlog/EventLogMessage.ts +273 -1
  605. package/src/eventlog/EventLogRemote.ts +367 -23
  606. package/src/eventlog/EventLogServer.ts +23 -8
  607. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  608. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  609. package/src/eventlog/EventRow.ts +12 -3
  610. package/src/eventlog/SqlEventJournal.ts +2 -2
  611. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  612. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  613. package/src/eventlog/internal/batches.ts +30 -0
  614. package/src/eventlog/internal/compaction.ts +64 -0
  615. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  616. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  617. package/src/http/Cookies.ts +281 -1
  618. package/src/http/FetchHttpClient.ts +88 -16
  619. package/src/http/HttpClient.ts +89 -22
  620. package/src/http/HttpClientRequest.ts +12 -9
  621. package/src/http/HttpClientResponse.ts +3 -2
  622. package/src/http/HttpMethod.ts +10 -2
  623. package/src/http/HttpServerRequest.ts +15 -30
  624. package/src/http/HttpServerResponse.ts +3 -2
  625. package/src/http/HttpTraceContext.ts +7 -4
  626. package/src/http/ProblemDetails.ts +149 -0
  627. package/src/http/index.ts +6 -0
  628. package/src/http/internal/decompression.ts +4 -4
  629. package/src/http/internal/urlParams.ts +8 -0
  630. package/src/http-api/HttpApiBuilder.ts +24 -12
  631. package/src/http-api/HttpApiClient.ts +67 -1
  632. package/src/http-api/HttpApiEndpoint.ts +14 -5
  633. package/src/http-api/HttpApiError.ts +250 -0
  634. package/src/http-api/HttpApiMiddleware.ts +95 -1
  635. package/src/http-api/HttpApiSchema.ts +105 -14
  636. package/src/index.ts +6 -6
  637. package/src/internal/effect.ts +34 -18
  638. package/src/internal/glob.ts +736 -0
  639. package/src/internal/matcher.ts +17 -0
  640. package/src/internal/persistence.ts +11 -0
  641. package/src/internal/rcRef.ts +4 -1
  642. package/src/internal/schema/toCodeDocument.ts +7 -3
  643. package/src/internal/trie.ts +43 -14
  644. package/src/internal/ulid.ts +44 -0
  645. package/src/internal/uuid.ts +57 -16
  646. package/src/internal/version.ts +1 -1
  647. package/src/observability/Otlp.ts +21 -4
  648. package/src/observability/OtlpResource.ts +9 -1
  649. package/src/persistence/KeyValueStore.ts +219 -22
  650. package/src/persistence/PersistedQueue.ts +128 -59
  651. package/src/persistence/Persistence.ts +20 -13
  652. package/src/process/ChildProcess.ts +255 -260
  653. package/src/process/ChildProcessSpawner.ts +5 -0
  654. package/src/process/CommandLine.ts +630 -0
  655. package/src/process/index.ts +6 -0
  656. package/src/reactivity/Atom.ts +5 -5
  657. package/src/reactivity/AtomRegistry.ts +1 -1
  658. package/src/rpc/RpcClient.ts +62 -26
  659. package/src/rpc/RpcMessage.ts +10 -1
  660. package/src/rpc/RpcSerialization.ts +3 -0
  661. package/src/rpc/RpcServer.ts +176 -78
  662. package/src/schema/Model.ts +26 -3
  663. package/src/sql/Migrator.ts +4 -63
  664. package/src/sql/MigratorFileSystem.ts +71 -0
  665. package/src/sql/SqlClient.ts +2 -16
  666. package/src/sql/Statement.ts +8 -7
  667. package/src/sql/index.ts +1 -1
  668. package/src/testing/index.ts +0 -6
  669. package/src/workflow/internal/crypto.ts +15 -11
  670. package/dist/Crypto.d.ts +0 -244
  671. package/dist/Crypto.d.ts.map +0 -1
  672. package/dist/Crypto.js +0 -139
  673. package/dist/Crypto.js.map +0 -1
  674. package/dist/testing/TestCrypto.d.ts +0 -73
  675. package/dist/testing/TestCrypto.d.ts.map +0 -1
  676. package/dist/testing/TestCrypto.js +0 -87
  677. package/dist/testing/TestCrypto.js.map +0 -1
  678. package/src/Crypto.ts +0 -347
  679. package/src/testing/TestCrypto.ts +0 -94
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Key derivation: HKDF, PBKDF2, and Argon2id.
3
+ *
4
+ * The {@link Kdf} service derives bytes from a secret with an algorithm value
5
+ * such as {@link hkdfSha256}, {@link pbkdf2Sha256}, or `argon2id()`. The
6
+ * output is plain bytes: turn it into a typed key with the target family's raw
7
+ * constructor, such as `Mac.key`.
8
+ *
9
+ * **Gotchas**
10
+ *
11
+ * - The secret is bytes, with no string overload. Encode passwords yourself,
12
+ * and normalize their Unicode form first if users type them on different
13
+ * platforms.
14
+ * - `layerWebCrypto` does not provide Argon2id, because WebCrypto has no
15
+ * Argon2. Deriving with it fails with an `Unsupported` reason, so programs
16
+ * can fall back to PBKDF2. `NodeCrypto.layerKdf` provides Argon2id on
17
+ * Node.js 24.7 or later and Bun 1.4.
18
+ *
19
+ * @stability unstable
20
+ * @since 4.0.0
21
+ */
22
+ import * as Context from "../Context.ts";
23
+ import * as Effect from "../Effect.ts";
24
+ import * as Layer from "../Layer.ts";
25
+ import * as CryptoError from "./CryptoError.ts";
26
+ import * as Digest from "./Digest.ts";
27
+ /**
28
+ * HKDF (RFC 5869) with a hash, from {@link hkdf}.
29
+ *
30
+ * @stability unstable
31
+ * @category models
32
+ * @since 4.0.0
33
+ */
34
+ export interface Hkdf {
35
+ readonly _tag: "Hkdf";
36
+ readonly name: string;
37
+ readonly hash: Digest.Algorithm;
38
+ }
39
+ /**
40
+ * PBKDF2 (RFC 8018) with a hash and an iteration count, from {@link pbkdf2}.
41
+ *
42
+ * @stability unstable
43
+ * @category models
44
+ * @since 4.0.0
45
+ */
46
+ export interface Pbkdf2 {
47
+ readonly _tag: "Pbkdf2";
48
+ readonly name: string;
49
+ readonly hash: Digest.Algorithm;
50
+ readonly iterations: number;
51
+ }
52
+ /**
53
+ * Argon2id (RFC 9106) with its cost parameters, from {@link argon2id}.
54
+ *
55
+ * **Details**
56
+ *
57
+ * `memory` is in KiB, `passes` is the number of passes over the memory, and
58
+ * `parallelism` is the number of lanes.
59
+ *
60
+ * @stability unstable
61
+ * @category models
62
+ * @since 4.0.0
63
+ */
64
+ export interface Argon2id {
65
+ readonly _tag: "Argon2id";
66
+ readonly name: string;
67
+ readonly memory: number;
68
+ readonly passes: number;
69
+ readonly parallelism: number;
70
+ }
71
+ /**
72
+ * A key derivation algorithm.
73
+ *
74
+ * @stability unstable
75
+ * @category models
76
+ * @since 4.0.0
77
+ */
78
+ export type Algorithm = Hkdf | Pbkdf2 | Argon2id;
79
+ /**
80
+ * Builds the HKDF algorithm for a hash.
81
+ *
82
+ * @stability unstable
83
+ * @category algorithms
84
+ * @since 4.0.0
85
+ */
86
+ export declare const hkdf: (hash: Digest.Algorithm) => Hkdf;
87
+ /**
88
+ * Builds a PBKDF2 algorithm for a hash and an iteration count.
89
+ *
90
+ * **Details**
91
+ *
92
+ * Deriving with an iteration count outside 1 to 2^31 - 1 fails with an
93
+ * `InvalidArgument` reason.
94
+ *
95
+ * @stability unstable
96
+ * @category algorithms
97
+ * @since 4.0.0
98
+ */
99
+ export declare const pbkdf2: (options: {
100
+ readonly hash: Digest.Algorithm;
101
+ readonly iterations: number;
102
+ }) => Pbkdf2;
103
+ /**
104
+ * HKDF with SHA-1.
105
+ *
106
+ * @stability unstable
107
+ * @category algorithms
108
+ * @since 4.0.0
109
+ */
110
+ export declare const hkdfSha1: Hkdf;
111
+ /**
112
+ * HKDF with SHA-256.
113
+ *
114
+ * @stability unstable
115
+ * @category algorithms
116
+ * @since 4.0.0
117
+ */
118
+ export declare const hkdfSha256: Hkdf;
119
+ /**
120
+ * HKDF with SHA-384.
121
+ *
122
+ * @stability unstable
123
+ * @category algorithms
124
+ * @since 4.0.0
125
+ */
126
+ export declare const hkdfSha384: Hkdf;
127
+ /**
128
+ * HKDF with SHA-512.
129
+ *
130
+ * @stability unstable
131
+ * @category algorithms
132
+ * @since 4.0.0
133
+ */
134
+ export declare const hkdfSha512: Hkdf;
135
+ /**
136
+ * PBKDF2 with SHA-256 at 600,000 iterations, OWASP's current figure.
137
+ *
138
+ * @stability unstable
139
+ * @category algorithms
140
+ * @since 4.0.0
141
+ */
142
+ export declare const pbkdf2Sha256: Pbkdf2;
143
+ /**
144
+ * Builds an Argon2id algorithm, with `memory` in KiB.
145
+ *
146
+ * **Details**
147
+ *
148
+ * Omitted costs default to RFC 9106's second recommended setting: 64 MiB of
149
+ * memory (`65_536`), 3 passes, and 4 lanes.
150
+ *
151
+ * **Gotchas**
152
+ *
153
+ * `Kdf.layerWebCrypto` does not provide Argon2id. Use `NodeCrypto.layerKdf`,
154
+ * or fall back to PBKDF2 on the `Unsupported` reason.
155
+ *
156
+ * @stability unstable
157
+ * @category algorithms
158
+ * @since 4.0.0
159
+ */
160
+ export declare const argon2id: (options?: {
161
+ readonly memory?: number | undefined;
162
+ readonly passes?: number | undefined;
163
+ readonly parallelism?: number | undefined;
164
+ }) => Argon2id;
165
+ declare const Kdf_base: Context.ServiceClass<Kdf, "effect/crypto/Kdf", {
166
+ /**
167
+ * Derives `length` bytes from `secret`.
168
+ *
169
+ * `info` only applies to HKDF; passing it with PBKDF2 or Argon2id fails
170
+ * with an `InvalidArgument` reason.
171
+ */
172
+ readonly derive: (algorithm: Algorithm, secret: Uint8Array, options: {
173
+ readonly salt: Uint8Array;
174
+ readonly length: number;
175
+ readonly info?: Uint8Array | undefined;
176
+ }) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
177
+ }>;
178
+ /**
179
+ * Service that derives bytes from a secret.
180
+ *
181
+ * **Example** (Deriving a key with HKDF)
182
+ *
183
+ * ```ts import.meta.vitest
184
+ * import { Effect } from "effect"
185
+ * import { Kdf } from "effect/crypto"
186
+ *
187
+ * const program = Effect.gen(function*() {
188
+ * const kdf = yield* Kdf.Kdf
189
+ * return yield* kdf.derive(Kdf.hkdfSha256, new Uint8Array(32), {
190
+ * salt: new Uint8Array(16),
191
+ * info: new TextEncoder().encode("encryption"),
192
+ * length: 32
193
+ * })
194
+ * })
195
+ *
196
+ * const bytes = await Effect.runPromise(program.pipe(Effect.provide(Kdf.layerWebCrypto)))
197
+ * bytes.length // => 32
198
+ * ```
199
+ *
200
+ * @stability unstable
201
+ * @category services
202
+ * @since 4.0.0
203
+ */
204
+ export declare class Kdf extends Kdf_base {
205
+ }
206
+ /**
207
+ * Layer that provides `Kdf` on the `WebCrypto` reference.
208
+ *
209
+ * **Details**
210
+ *
211
+ * HKDF and PBKDF2 run on `crypto.subtle`, off the event loop where the runtime
212
+ * supports it. Argon2id fails with an `Unsupported` reason.
213
+ *
214
+ * @stability unstable
215
+ * @category layers
216
+ * @since 4.0.0
217
+ */
218
+ export declare const layerWebCrypto: Layer.Layer<Kdf>;
219
+ export {};
220
+ //# sourceMappingURL=Kdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kdf.d.ts","sourceRoot":"","sources":["../../src/crypto/Kdf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAIrC;;;;;;GAMG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAA;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,CAAC,SAAS,KAAG,IAAwE,CAAA;AAEtH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,YAAa;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,KAAG,MAKjG,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,IAAwB,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,IAA0B,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,IAA0B,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,IAA0B,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,MAA6D,CAAA;AAExF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,aAAc;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC1C,KAAG,QAMF,CAAA;;IA6BA;;;;;OAKG;qBACc,CACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE;QACP,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;KACvC,KACE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;;AAzCzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,GAAI,SAAQ,QAgBA;CAAG;AAgD5B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAyB3C,CAAA"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Key derivation: HKDF, PBKDF2, and Argon2id.
3
+ *
4
+ * The {@link Kdf} service derives bytes from a secret with an algorithm value
5
+ * such as {@link hkdfSha256}, {@link pbkdf2Sha256}, or `argon2id()`. The
6
+ * output is plain bytes: turn it into a typed key with the target family's raw
7
+ * constructor, such as `Mac.key`.
8
+ *
9
+ * **Gotchas**
10
+ *
11
+ * - The secret is bytes, with no string overload. Encode passwords yourself,
12
+ * and normalize their Unicode form first if users type them on different
13
+ * platforms.
14
+ * - `layerWebCrypto` does not provide Argon2id, because WebCrypto has no
15
+ * Argon2. Deriving with it fails with an `Unsupported` reason, so programs
16
+ * can fall back to PBKDF2. `NodeCrypto.layerKdf` provides Argon2id on
17
+ * Node.js 24.7 or later and Bun 1.4.
18
+ *
19
+ * @stability unstable
20
+ * @since 4.0.0
21
+ */
22
+ import * as Context from "../Context.js";
23
+ import * as Effect from "../Effect.js";
24
+ import * as Layer from "../Layer.js";
25
+ import * as CryptoError from "./CryptoError.js";
26
+ import * as Digest from "./Digest.js";
27
+ import * as internal from "./internal/webCrypto.js";
28
+ import { WebCrypto } from "./WebCrypto.js";
29
+ /**
30
+ * Builds the HKDF algorithm for a hash.
31
+ *
32
+ * @stability unstable
33
+ * @category algorithms
34
+ * @since 4.0.0
35
+ */
36
+ export const hkdf = hash => ({
37
+ _tag: "Hkdf",
38
+ name: `hkdf${Digest.nameSuffix(hash)}`,
39
+ hash
40
+ });
41
+ /**
42
+ * Builds a PBKDF2 algorithm for a hash and an iteration count.
43
+ *
44
+ * **Details**
45
+ *
46
+ * Deriving with an iteration count outside 1 to 2^31 - 1 fails with an
47
+ * `InvalidArgument` reason.
48
+ *
49
+ * @stability unstable
50
+ * @category algorithms
51
+ * @since 4.0.0
52
+ */
53
+ export const pbkdf2 = options => ({
54
+ _tag: "Pbkdf2",
55
+ name: `pbkdf2${Digest.nameSuffix(options.hash)}`,
56
+ hash: options.hash,
57
+ iterations: options.iterations
58
+ });
59
+ /**
60
+ * HKDF with SHA-1.
61
+ *
62
+ * @stability unstable
63
+ * @category algorithms
64
+ * @since 4.0.0
65
+ */
66
+ export const hkdfSha1 = /*#__PURE__*/hkdf(Digest.sha1);
67
+ /**
68
+ * HKDF with SHA-256.
69
+ *
70
+ * @stability unstable
71
+ * @category algorithms
72
+ * @since 4.0.0
73
+ */
74
+ export const hkdfSha256 = /*#__PURE__*/hkdf(Digest.sha256);
75
+ /**
76
+ * HKDF with SHA-384.
77
+ *
78
+ * @stability unstable
79
+ * @category algorithms
80
+ * @since 4.0.0
81
+ */
82
+ export const hkdfSha384 = /*#__PURE__*/hkdf(Digest.sha384);
83
+ /**
84
+ * HKDF with SHA-512.
85
+ *
86
+ * @stability unstable
87
+ * @category algorithms
88
+ * @since 4.0.0
89
+ */
90
+ export const hkdfSha512 = /*#__PURE__*/hkdf(Digest.sha512);
91
+ /**
92
+ * PBKDF2 with SHA-256 at 600,000 iterations, OWASP's current figure.
93
+ *
94
+ * @stability unstable
95
+ * @category algorithms
96
+ * @since 4.0.0
97
+ */
98
+ export const pbkdf2Sha256 = /*#__PURE__*/pbkdf2({
99
+ hash: Digest.sha256,
100
+ iterations: 600_000
101
+ });
102
+ /**
103
+ * Builds an Argon2id algorithm, with `memory` in KiB.
104
+ *
105
+ * **Details**
106
+ *
107
+ * Omitted costs default to RFC 9106's second recommended setting: 64 MiB of
108
+ * memory (`65_536`), 3 passes, and 4 lanes.
109
+ *
110
+ * **Gotchas**
111
+ *
112
+ * `Kdf.layerWebCrypto` does not provide Argon2id. Use `NodeCrypto.layerKdf`,
113
+ * or fall back to PBKDF2 on the `Unsupported` reason.
114
+ *
115
+ * @stability unstable
116
+ * @category algorithms
117
+ * @since 4.0.0
118
+ */
119
+ export const argon2id = options => ({
120
+ _tag: "Argon2id",
121
+ name: "argon2id",
122
+ memory: options?.memory ?? 65_536,
123
+ passes: options?.passes ?? 3,
124
+ parallelism: options?.parallelism ?? 4
125
+ });
126
+ /**
127
+ * Service that derives bytes from a secret.
128
+ *
129
+ * **Example** (Deriving a key with HKDF)
130
+ *
131
+ * ```ts import.meta.vitest
132
+ * import { Effect } from "effect"
133
+ * import { Kdf } from "effect/crypto"
134
+ *
135
+ * const program = Effect.gen(function*() {
136
+ * const kdf = yield* Kdf.Kdf
137
+ * return yield* kdf.derive(Kdf.hkdfSha256, new Uint8Array(32), {
138
+ * salt: new Uint8Array(16),
139
+ * info: new TextEncoder().encode("encryption"),
140
+ * length: 32
141
+ * })
142
+ * })
143
+ *
144
+ * const bytes = await Effect.runPromise(program.pipe(Effect.provide(Kdf.layerWebCrypto)))
145
+ * bytes.length // => 32
146
+ * ```
147
+ *
148
+ * @stability unstable
149
+ * @category services
150
+ * @since 4.0.0
151
+ */
152
+ export class Kdf extends /*#__PURE__*/Context.Service()("effect/crypto/Kdf") {}
153
+ const invalidArgument = description => internal.fail("Kdf", "derive", new CryptoError.InvalidArgument({
154
+ description
155
+ }));
156
+ const isIntegerIn = (n, min, max) => Number.isSafeInteger(n) && n >= min && n <= max;
157
+ // Checks the arguments before they reach Web Crypto, which takes a 32-bit bit
158
+ // length that some backends wrap instead of rejecting. Node.js aborts the
159
+ // process on PBKDF2 iteration counts above 2^31 - 1.
160
+ const checkArguments = (algorithm, options) => {
161
+ if (algorithm._tag !== "Hkdf" && options.info !== undefined) return invalidArgument("info only applies to HKDF");
162
+ if (algorithm._tag === "Argon2id") return undefined;
163
+ if (algorithm.hash.name === "MD5") return invalidArgument(`${algorithm._tag} needs a SHA hash, not MD5`);
164
+ if (algorithm._tag === "Hkdf") {
165
+ const maxLength = 255 * algorithm.hash.outputLength;
166
+ return isIntegerIn(options.length, 1, maxLength) ? undefined : invalidArgument(`length must be between 1 and ${maxLength} bytes for ${algorithm.name}`);
167
+ }
168
+ if (!isIntegerIn(algorithm.iterations, 1, 0x7fff_ffff)) {
169
+ return invalidArgument("iterations must be between 1 and 2^31 - 1");
170
+ }
171
+ return isIntegerIn(options.length, 1, 0x1fff_ffff) ? undefined : invalidArgument("length must be between 1 and 2^29 - 1 bytes");
172
+ };
173
+ const webCryptoParams = (algorithm, options) => algorithm._tag === "Hkdf" ? {
174
+ name: "HKDF",
175
+ hash: algorithm.hash.name,
176
+ salt: options.salt,
177
+ info: options.info ?? new Uint8Array()
178
+ } : {
179
+ name: "PBKDF2",
180
+ hash: algorithm.hash.name,
181
+ salt: options.salt,
182
+ iterations: algorithm.iterations
183
+ };
184
+ /**
185
+ * Layer that provides `Kdf` on the `WebCrypto` reference.
186
+ *
187
+ * **Details**
188
+ *
189
+ * HKDF and PBKDF2 run on `crypto.subtle`, off the event loop where the runtime
190
+ * supports it. Argon2id fails with an `Unsupported` reason.
191
+ *
192
+ * @stability unstable
193
+ * @category layers
194
+ * @since 4.0.0
195
+ */
196
+ export const layerWebCrypto = /*#__PURE__*/Layer.effect(Kdf, /*#__PURE__*/WebCrypto.use(crypto => Effect.succeed(Kdf.of({
197
+ derive: (algorithm, secret, options) => Effect.suspend(() => {
198
+ const failure = checkArguments(algorithm, options);
199
+ if (failure !== undefined) return failure;
200
+ if (algorithm._tag === "Argon2id") {
201
+ return internal.fail("Kdf", "derive", new CryptoError.Unsupported({
202
+ description: "Kdf.layerWebCrypto does not provide argon2id"
203
+ }));
204
+ }
205
+ const name = algorithm._tag === "Hkdf" ? "HKDF" : "PBKDF2";
206
+ return internal.run("Kdf", "derive", algorithm.name, crypto, async subtle => {
207
+ const handle = await subtle.importKey("raw", secret, name, false, ["deriveBits"]);
208
+ return new Uint8Array(await subtle.deriveBits(webCryptoParams(algorithm, options), handle, options.length * 8));
209
+ });
210
+ })
211
+ }))));
212
+ //# sourceMappingURL=Kdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kdf.js","names":[],"sources":["../../src/crypto/Kdf.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}