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
package/src/Schema.ts CHANGED
@@ -19,6 +19,14 @@ import type * as Brand from "./Brand.ts"
19
19
  import * as ByteSize_ from "./ByteSize.ts"
20
20
  import * as Cause_ from "./Cause.ts"
21
21
  import * as Chunk_ from "./Chunk.ts"
22
+ import * as Aead_ from "./crypto/Aead.ts"
23
+ import * as Cipher_ from "./crypto/Cipher.ts"
24
+ import type * as CryptoError_ from "./crypto/CryptoError.ts"
25
+ import * as KeyAgreement_ from "./crypto/KeyAgreement.ts"
26
+ import * as KeyFormat_ from "./crypto/KeyFormat.ts"
27
+ import * as KeyWrap_ from "./crypto/KeyWrap.ts"
28
+ import * as Mac_ from "./crypto/Mac.ts"
29
+ import * as Signature_ from "./crypto/Signature.ts"
22
30
  import * as Data from "./Data.ts"
23
31
  import * as DateTime from "./DateTime.ts"
24
32
  import type { Differ } from "./Differ.ts"
@@ -6329,9 +6337,35 @@ type Flatten<Schemas> = Schemas extends readonly [infer Head, ...infer Tail]
6329
6337
  type MatchCasesResult<Cases> = {
6330
6338
  [K in keyof Cases]-?: NonNullable<Cases[K]> extends (...args: Array<any>) => infer R ? R : never
6331
6339
  }[keyof Cases]
6332
- type MatchOrElseResult<Cases, OrElse extends (...args: Array<any>) => any> = Unify<
6333
- MatchCasesResult<Cases> | ReturnType<OrElse>
6340
+ type MatchOrElseResult<Cases, OrElse> = Unify<
6341
+ MatchCasesResult<Cases> | (OrElse extends (...args: Array<any>) => infer R ? R : never)
6334
6342
  >
6343
+ type TaggedUnionMatch<Cases extends Record<PropertyKey, Constraint>, Value> = {
6344
+ <Handlers extends { [K in keyof Cases]: (value: Cases[K]["Type"]) => any }>(
6345
+ value: Value,
6346
+ cases: Handlers
6347
+ ): Unify<ReturnType<Handlers[keyof Cases]>>
6348
+ <Handlers extends { [K in keyof Cases]: (value: Cases[K]["Type"]) => any }>(
6349
+ cases: Handlers
6350
+ ): (value: Value) => Unify<ReturnType<Handlers[keyof Cases]>>
6351
+ }
6352
+ type TaggedUnionMatchOrElse<Cases extends Record<PropertyKey, Constraint>, Value, Tag extends PropertyKey> = {
6353
+ <Handlers, OrElse>(
6354
+ value: Value,
6355
+ cases:
6356
+ & Handlers
6357
+ & { [K in keyof Cases]?: (value: Cases[K]["Type"]) => any }
6358
+ & (Exclude<keyof Handlers, keyof Cases> extends never ? unknown : never),
6359
+ orElse: OrElse & ((value: Exclude<Value, { readonly [K in Tag]: keyof Handlers }>) => any)
6360
+ ): MatchOrElseResult<Handlers, OrElse>
6361
+ <Handlers, OrElse>(
6362
+ cases:
6363
+ & Handlers
6364
+ & { [K in keyof Cases]?: (value: Cases[K]["Type"]) => any }
6365
+ & (Exclude<keyof Handlers, keyof Cases> extends never ? unknown : never),
6366
+ orElse: OrElse & ((value: Exclude<Value, { readonly [K in Tag]: keyof Handlers }>) => any)
6367
+ ): (value: Value) => MatchOrElseResult<Handlers, OrElse>
6368
+ }
6335
6369
  type TaggedUnionUtils<
6336
6370
  Tag extends PropertyKey,
6337
6371
  Members extends ReadonlyArray<Constraint & { readonly Type: { readonly [K in Tag]: PropertyKey } }>,
@@ -6352,46 +6386,15 @@ type TaggedUnionUtils<
6352
6386
  keys: ReadonlyArray<Keys>
6353
6387
  ) => (value: Members[number]["Type"]) => value is Extract<Members[number]["Type"], { readonly [K in Tag]: Keys }>
6354
6388
  readonly guards: { [M in Flattened[number] as M["Type"][Tag]]: (u: unknown) => u is M["Type"] }
6355
- readonly match: {
6356
- <
6357
- Cases extends { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => any }
6358
- >(
6359
- value: Members[number]["Type"],
6360
- cases: Cases
6361
- ): Cases[keyof Cases] extends (value: any) => infer R ? Unify<R>
6362
- : never
6363
- <
6364
- Cases extends { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => any }
6365
- >(
6366
- cases: Cases
6367
- ): (value: Members[number]["Type"]) => Cases[keyof Cases] extends (value: any) => infer R ? Unify<R>
6368
- : never
6369
- }
6370
- readonly matchOrElse: {
6371
- <
6372
- Cases extends
6373
- & { [M in Flattened[number] as M["Type"][Tag]]+?: (value: M["Type"]) => any }
6374
- & { [K in Exclude<keyof Cases, Flattened[number]["Type"][Tag]>]: never },
6375
- OrElse extends (
6376
- value: Exclude<Members[number]["Type"], { readonly [K in Tag]: keyof Cases }>
6377
- ) => any
6378
- >(
6379
- value: Members[number]["Type"],
6380
- cases: Cases,
6381
- orElse: OrElse
6382
- ): MatchOrElseResult<Cases, OrElse>
6383
- <
6384
- Cases extends
6385
- & { [M in Flattened[number] as M["Type"][Tag]]+?: (value: M["Type"]) => any }
6386
- & { [K in Exclude<keyof Cases, Flattened[number]["Type"][Tag]>]: never },
6387
- OrElse extends (
6388
- value: Exclude<Members[number]["Type"], { readonly [K in Tag]: keyof Cases }>
6389
- ) => any
6390
- >(
6391
- cases: Cases,
6392
- orElse: OrElse
6393
- ): (value: Members[number]["Type"]) => MatchOrElseResult<Cases, OrElse>
6394
- }
6389
+ readonly match: TaggedUnionMatch<
6390
+ { readonly [M in Flattened[number] as M["Type"][Tag]]: M },
6391
+ Members[number]["Type"]
6392
+ >
6393
+ readonly matchOrElse: TaggedUnionMatchOrElse<
6394
+ { readonly [M in Flattened[number] as M["Type"][Tag]]: M },
6395
+ Members[number]["Type"],
6396
+ Tag
6397
+ >
6395
6398
  }
6396
6399
  /**
6397
6400
  * Type-level representation returned by {@link toTaggedUnion}.
@@ -6541,26 +6544,8 @@ export interface TaggedUnion<Cases extends Record<string, Constraint>> extends
6541
6544
  keys: ReadonlyArray<Keys>
6542
6545
  ) => (value: Cases[keyof Cases]["Type"]) => value is Extract<Cases[keyof Cases]["Type"], { _tag: Keys }>
6543
6546
  readonly guards: { [K in keyof Cases]: (u: unknown) => u is Cases[K]["Type"] }
6544
- readonly match: {
6545
- <Output>(
6546
- cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
6547
- ): (value: Cases[keyof Cases]["Type"]) => Output
6548
- <Output>(
6549
- value: Cases[keyof Cases]["Type"],
6550
- cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
6551
- ): Output
6552
- }
6553
- readonly matchOrElse: {
6554
- <Output>(
6555
- value: Cases[keyof Cases]["Type"],
6556
- cases: { [K in keyof Cases]?: (value: Cases[K]["Type"]) => Output },
6557
- orElse: (value: Cases[keyof Cases]["Type"]) => Output
6558
- ): Output
6559
- <Output>(
6560
- cases: { [K in keyof Cases]?: (value: Cases[K]["Type"]) => Output },
6561
- orElse: (value: Cases[keyof Cases]["Type"]) => Output
6562
- ): (value: Cases[keyof Cases]["Type"]) => Output
6563
- }
6547
+ readonly match: TaggedUnionMatch<Cases, Cases[keyof Cases]["Type"]>
6548
+ readonly matchOrElse: TaggedUnionMatchOrElse<Cases, Cases[keyof Cases]["Type"], "_tag">
6564
6549
  }
6565
6550
  /**
6566
6551
  * Builds a discriminated union from a record of field sets, one per variant.
@@ -7120,6 +7105,51 @@ export function isULID(annotations?: Annotations.Filter) {
7120
7105
  }
7121
7106
  )
7122
7107
  }
7108
+
7109
+ // oxlint-disable-next-line no-control-regex
7110
+ const ASCII_REGEXP = /^[\x00-\x7F]*$/u
7111
+ /**
7112
+ * Validates that a string contains only ASCII characters.
7113
+ *
7114
+ * **When to use**
7115
+ *
7116
+ * Use when a value must stay within the 7-bit ASCII range, for example
7117
+ * identifiers, protocol tokens, or data sent to systems that reject
7118
+ * non-ASCII input.
7119
+ *
7120
+ * **Details**
7121
+ *
7122
+ * This check accepts strings whose characters are all in the range `U+0000`
7123
+ * to `U+007F`, including control characters and the empty string.
7124
+ *
7125
+ * JSON Schema:
7126
+ *
7127
+ * This check corresponds to a `pattern` constraint in JSON Schema that matches
7128
+ * ASCII-only strings.
7129
+ *
7130
+ * Arbitrary:
7131
+ *
7132
+ * During arbitrary generation, this applies a `patterns`
7133
+ * constraint to ensure generated strings match the ASCII pattern.
7134
+ *
7135
+ * @stability unstable
7136
+ * @category validation
7137
+ * @since 4.0.6
7138
+ */
7139
+ export function isAscii(annotations?: Annotations.Filter) {
7140
+ return isPattern(
7141
+ ASCII_REGEXP,
7142
+ {
7143
+ expected: "an ASCII string",
7144
+ representation: {
7145
+ id: "effect/schema/isAscii",
7146
+ payload: null
7147
+ },
7148
+ toCode: () => ({ runtime: "Schema.isAscii()" }),
7149
+ ...annotations
7150
+ }
7151
+ )
7152
+ }
7123
7153
  /**
7124
7154
  * Validates that a string is valid Base64 encoded data.
7125
7155
  *
@@ -13711,6 +13741,33 @@ const durationFromMillis: SchemaTransformation.Transformation<Duration_.Duration
13711
13741
  decode: (i) => Duration_.millis(i),
13712
13742
  encode: (a) => Duration_.toMillis(a)
13713
13743
  })
13744
+ const durationFromIsoString: SchemaTransformation.Transformation<Duration_.Duration, string> = SchemaTransformation
13745
+ .transformEffect<Duration_.Duration, string>({
13746
+ decode: (s, options) =>
13747
+ Option_.match(Duration_.fromIso(s), {
13748
+ onNone: () =>
13749
+ Effect.fail(
13750
+ new SchemaIssue.InvalidValue(
13751
+ { expected: "an ISO 8601 duration without years or months" },
13752
+ s,
13753
+ options
13754
+ )
13755
+ ),
13756
+ onSome: Effect.succeed
13757
+ }),
13758
+ encode: (a, options) =>
13759
+ Option_.match(Duration_.formatIso(a), {
13760
+ onNone: () =>
13761
+ Effect.fail(
13762
+ new SchemaIssue.InvalidValue(
13763
+ { expected: "a finite Duration" },
13764
+ a,
13765
+ options
13766
+ )
13767
+ ),
13768
+ onSome: Effect.succeed
13769
+ })
13770
+ })
13714
13771
  /**
13715
13772
  * Type-level representation of {@link Duration}.
13716
13773
  *
@@ -13886,6 +13943,42 @@ export interface DurationFromMillis extends decodeTo<Duration, Number> {
13886
13943
  export const DurationFromMillis: DurationFromMillis = Number.pipe(
13887
13944
  decodeTo(Duration, durationFromMillis)
13888
13945
  )
13946
+ /**
13947
+ * Type-level representation of {@link DurationFromIsoString}.
13948
+ *
13949
+ * @stability stable
13950
+ * @category models
13951
+ * @since 4.1.0
13952
+ */
13953
+ export interface DurationFromIsoString extends decodeTo<Duration, String> {
13954
+ readonly "Rebuild": DurationFromIsoString
13955
+ }
13956
+ /**
13957
+ * Schema that decodes an ISO 8601 duration string into a `Duration`.
13958
+ *
13959
+ * **Details**
13960
+ *
13961
+ * Decoding:
13962
+ * - A string accepted by `Duration.fromIso` is decoded as a `Duration`, such
13963
+ * as `"PT1H30M"`, `"P1W2D"`, or `"-PT0.5S"`. Years and months are rejected
13964
+ * because they have no fixed length.
13965
+ *
13966
+ * Encoding:
13967
+ * - A finite `Duration` is encoded with `Duration.formatIso`, using days,
13968
+ * hours, minutes, and seconds. Encoding fails for `Duration.infinity` and
13969
+ * `Duration.negativeInfinity`.
13970
+ *
13971
+ * @see {@link DurationFromString} for the `"5 seconds"` string format
13972
+ *
13973
+ * @stability stable
13974
+ * @category schemas
13975
+ * @since 4.1.0
13976
+ */
13977
+ export const DurationFromIsoString: DurationFromIsoString = String.annotate({
13978
+ expected: "an ISO 8601 duration string that will be decoded as a Duration"
13979
+ }).pipe(
13980
+ decodeTo(Duration, durationFromIsoString)
13981
+ )
13889
13982
 
13890
13983
  // -----------------------------------------------------------------------------
13891
13984
  // DNS schemas
@@ -14307,6 +14400,1040 @@ export const DnsRecord: DnsRecord = Union([
14307
14400
  DnsTxtRecord
14308
14401
  ]).annotate({ identifier: "DnsRecord" })
14309
14402
 
14403
+ // -----------------------------------------------------------------------------
14404
+ // Crypto key schemas
14405
+ // -----------------------------------------------------------------------------
14406
+
14407
+ // Match operation parameters rather than object identity. RSA modulus length
14408
+ // affects generation only, so it is ignored here as on import.
14409
+ interface CryptoAlgorithm {
14410
+ readonly _tag?: string
14411
+ readonly name: string
14412
+ readonly hash?: { readonly name: string }
14413
+ readonly modulusLength?: number
14414
+ readonly saltLength?: number
14415
+ }
14416
+
14417
+ const cryptoAlgorithmEquals = (self: CryptoAlgorithm, that: CryptoAlgorithm): boolean =>
14418
+ self === that ||
14419
+ (self.name === that.name && self.hash?.name === that.hash?.name && self.saltLength === that.saltLength)
14420
+
14421
+ const cryptoDigestCode = (hash: { readonly name: string }) => `Digest.${hash.name.toLowerCase().replace("-", "")}`
14422
+
14423
+ const cryptoAlgorithmCode = (family: string, algorithm: CryptoAlgorithm): string => {
14424
+ if (algorithm.modulusLength === undefined || algorithm.hash === undefined || algorithm._tag === undefined) {
14425
+ const code = `${family}.${algorithm.name}`
14426
+ return algorithm.hash === undefined ? code : `{ ...${code}, hash: ${cryptoDigestCode(algorithm.hash)} }`
14427
+ }
14428
+ const factory = algorithm._tag.charAt(0).toLowerCase() + algorithm._tag.slice(1)
14429
+ const saltLength = algorithm.saltLength === undefined ? "" : `, saltLength: ${algorithm.saltLength}`
14430
+ return `${family}.${factory}({ hash: ${
14431
+ cryptoDigestCode(algorithm.hash)
14432
+ }, modulusLength: ${algorithm.modulusLength}${saltLength} })`
14433
+ }
14434
+
14435
+ const cryptoAlgorithmPayload = (algorithm: CryptoAlgorithm): Json => {
14436
+ const payload: { [key: string]: Json } = { name: algorithm.name }
14437
+ if (algorithm.hash !== undefined) payload.hash = algorithm.hash.name
14438
+ if (algorithm.modulusLength !== undefined) payload.modulusLength = algorithm.modulusLength
14439
+ if (algorithm.saltLength !== undefined) payload.saltLength = algorithm.saltLength
14440
+ return payload
14441
+ }
14442
+
14443
+ const declareCryptoKey = <K extends { readonly algorithm: CryptoAlgorithm }>(
14444
+ name: string,
14445
+ family: string,
14446
+ type: string,
14447
+ is: (u: unknown) => boolean,
14448
+ algorithm: CryptoAlgorithm
14449
+ ): declare<K> => {
14450
+ const code = cryptoAlgorithmCode(family, algorithm)
14451
+ const forbidden = SchemaGetter.forbidden<never, unknown>(() =>
14452
+ `Cannot serialize ${family}.${type} values as JSON, use Schema.${name}FromFormat to read and write keys`
14453
+ )
14454
+ return declare<K>(
14455
+ (u): u is K => is(u) && cryptoAlgorithmEquals((u as K).algorithm, algorithm),
14456
+ {
14457
+ expected: `${family}.${type} for ${algorithm.name}`,
14458
+ representation: { id: `effect/crypto/${name}`, payload: cryptoAlgorithmPayload(algorithm) },
14459
+ toCode: () => ({
14460
+ runtime: `Schema.${name}(${code})`,
14461
+ Type: `${family}.${type}`,
14462
+ importDeclarations: [
14463
+ `import * as ${family} from "effect/crypto/${family}"`,
14464
+ ...(code.includes("Digest.") ? [`import * as Digest from "effect/crypto/Digest"`] : [])
14465
+ ]
14466
+ }),
14467
+ toCodecJson: () => link<K>()(Unknown, { decode: forbidden, encode: forbidden }),
14468
+ // Keys have no Arbitrary: linking to `Never` makes derivation fail.
14469
+ toCodecArbitrary: () => link<K>()(Never, { decode: forbidden, encode: forbidden }),
14470
+ toFormatter: () => (key) => globalThis.String(key),
14471
+ toEquivalence: () => (self, that) => self === that
14472
+ }
14473
+ )
14474
+ }
14475
+
14476
+ const cryptoIssue = (error: CryptoError_.CryptoError, input: unknown, options: SchemaAST.ParseOptions) =>
14477
+ new SchemaIssue.InvalidValue({ message: error.message, cause: error }, input, options)
14478
+
14479
+ const cryptoForbiddenEncode = (name: string, key: unknown, options: SchemaAST.ParseOptions) =>
14480
+ Effect.fail(
14481
+ new SchemaIssue.Forbidden(
14482
+ { message: `Schema.${name} only decodes, pass { allowEncode: true } to encode the key` },
14483
+ key,
14484
+ options
14485
+ )
14486
+ )
14487
+
14488
+ type CryptoKeyOptions = { readonly allowEncode?: boolean | undefined }
14489
+
14490
+ const cryptoKeyFromBytes = <To extends Codec<any>>(
14491
+ name: string,
14492
+ to: To,
14493
+ fromBytes: (bytes: globalThis.Uint8Array) => Effect.Effect<To["Type"], CryptoError_.CryptoError>,
14494
+ toBytes: ((key: To["Type"]) => Effect.Effect<globalThis.Uint8Array, CryptoError_.CryptoError>) | undefined
14495
+ ): decodeTo<To, Uint8Array> =>
14496
+ Uint8Array.pipe(decodeTo(
14497
+ to,
14498
+ SchemaTransformation.transformEffect({
14499
+ decode: (bytes, options) => Effect.mapError(fromBytes(bytes), (error) => cryptoIssue(error, bytes, options)),
14500
+ encode: (key, options) =>
14501
+ toBytes === undefined
14502
+ ? cryptoForbiddenEncode(name, key, options)
14503
+ : Effect.mapError(toBytes(key), (error) => cryptoIssue(error, key, options))
14504
+ })
14505
+ ))
14506
+
14507
+ const CryptoJsonWebKeyMember = optionalKey(String)
14508
+
14509
+ // The JWK members of RFC 7517 and RFC 7518 that `KeyFormat` reads and writes.
14510
+ // Other members are dropped.
14511
+ const CryptoJsonWebKey = Struct({
14512
+ kty: CryptoJsonWebKeyMember,
14513
+ crv: CryptoJsonWebKeyMember,
14514
+ alg: CryptoJsonWebKeyMember,
14515
+ use: CryptoJsonWebKeyMember,
14516
+ key_ops: optionalKey(ArraySchema(String)),
14517
+ ext: optionalKey(Boolean),
14518
+ k: CryptoJsonWebKeyMember,
14519
+ x: CryptoJsonWebKeyMember,
14520
+ y: CryptoJsonWebKeyMember,
14521
+ d: CryptoJsonWebKeyMember,
14522
+ n: CryptoJsonWebKeyMember,
14523
+ e: CryptoJsonWebKeyMember,
14524
+ p: CryptoJsonWebKeyMember,
14525
+ q: CryptoJsonWebKeyMember,
14526
+ dp: CryptoJsonWebKeyMember,
14527
+ dq: CryptoJsonWebKeyMember,
14528
+ qi: CryptoJsonWebKeyMember,
14529
+ oth: optionalKey(ArraySchema(Struct({
14530
+ r: CryptoJsonWebKeyMember,
14531
+ d: CryptoJsonWebKeyMember,
14532
+ t: CryptoJsonWebKeyMember
14533
+ })))
14534
+ }) as unknown as Codec<JsonWebKey>
14535
+
14536
+ const cryptoFormatData = <R extends KeyFormat_.Role, Data>(format: KeyFormat_.Format<R, "decode", Data>): Codec<Data> =>
14537
+ (format._tag === "jwk" ? CryptoJsonWebKey : format.pem ? String : Uint8Array) as Codec<any>
14538
+
14539
+ const cryptoKeyFromFormat = <To extends Codec<any>, R extends KeyFormat_.Role, Data>(
14540
+ name: string,
14541
+ to: To,
14542
+ format: KeyFormat_.Format<R, "decode", Data>,
14543
+ decode: (data: Data) => Effect.Effect<To["Type"], CryptoError_.CryptoError>,
14544
+ canEncode: boolean
14545
+ ): decodeTo<To, Codec<Data>> => {
14546
+ // PKCS#1 and SEC1 are read only.
14547
+ const writable = canEncode && format._tag !== "pkcs1" && format._tag !== "sec1"
14548
+ return cryptoFormatData(format).pipe(decodeTo(
14549
+ to,
14550
+ SchemaTransformation.transformEffect<To["Type"], Data>({
14551
+ decode: (data, options) =>
14552
+ // Secret JWK decoding is synchronous, but all format schemas are async-only.
14553
+ Effect.flatMap(Effect.promise(() => Promise.resolve()), () =>
14554
+ Effect.mapError(decode(data), (error) => cryptoIssue(error, data, options))),
14555
+ encode: (key, options) =>
14556
+ writable
14557
+ ? Effect.mapError(
14558
+ KeyFormat_.encode(format as any, key as KeyFormat_.Key) as Effect.Effect<Data, CryptoError_.CryptoError>,
14559
+ (error) => cryptoIssue(error, key, options)
14560
+ )
14561
+ : cryptoForbiddenEncode(name, key, options)
14562
+ })
14563
+ ))
14564
+ }
14565
+
14566
+ /**
14567
+ * Type-level representation of {@link MacKey}.
14568
+ *
14569
+ * @stability unstable
14570
+ * @category models
14571
+ * @since 4.0.0
14572
+ */
14573
+ export interface MacKey<A extends Mac_.Algorithm = Mac_.Algorithm> extends declare<Mac_.Key<A>> {
14574
+ readonly "Rebuild": MacKey<A>
14575
+ }
14576
+
14577
+ /**
14578
+ * Schema for live `Mac.Key` values of an algorithm.
14579
+ *
14580
+ * **Details**
14581
+ *
14582
+ * Decoding checks the key's algorithm and returns the key itself. The key has
14583
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
14584
+ * {@link MacKeyFromFormat} or {@link MacKeyFromBytes} to read and write keys.
14585
+ * Keys display redacted, compare by reference, and have no `Arbitrary`.
14586
+ *
14587
+ * @stability unstable
14588
+ * @category crypto
14589
+ * @since 4.0.0
14590
+ */
14591
+ export const MacKey = <A extends Mac_.Algorithm>(algorithm: A): MacKey<A> =>
14592
+ declareCryptoKey<Mac_.Key<A>>("MacKey", "Mac", "Key", Mac_.isKey, algorithm)
14593
+
14594
+ /**
14595
+ * Schema that decodes raw key bytes into a `Mac.Key`.
14596
+ *
14597
+ * **Details**
14598
+ *
14599
+ * Decoding runs `Mac.key`, which is synchronous, so the schema works with
14600
+ * `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
14601
+ * `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
14602
+ * Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
14603
+ *
14604
+ * **Example** (Reading an HMAC key from the environment)
14605
+ *
14606
+ * ```ts import.meta.vitest
14607
+ * import { Config, ConfigProvider, Effect, Schema } from "effect"
14608
+ * import { Mac } from "effect/crypto"
14609
+ *
14610
+ * const config = Config.schema(Schema.MacKeyFromBytes(Mac.hmacSha256), "HMAC_KEY")
14611
+ * const provider = ConfigProvider.fromEnv({ env: { HMAC_KEY: "A".repeat(43) + "=" } })
14612
+ * const key = await Effect.runPromise(Effect.provide(config, ConfigProvider.layer(provider)))
14613
+ * key.algorithm.name // => "hmacSha256"
14614
+ * ```
14615
+ *
14616
+ * @stability unstable
14617
+ * @category crypto
14618
+ * @since 4.0.0
14619
+ */
14620
+ export const MacKeyFromBytes = <A extends Mac_.Algorithm>(
14621
+ algorithm: A,
14622
+ options?: CryptoKeyOptions
14623
+ ): decodeTo<MacKey<A>, Uint8Array> =>
14624
+ cryptoKeyFromBytes(
14625
+ "MacKeyFromBytes",
14626
+ MacKey(algorithm),
14627
+ (bytes) => Mac_.key(algorithm, bytes),
14628
+ options?.allowEncode === true ? Mac_.toBytes : undefined
14629
+ )
14630
+
14631
+ /**
14632
+ * Schema that decodes a `Mac.Key` from a JWK with `KeyFormat.decodeSecret`.
14633
+ *
14634
+ * **Details**
14635
+ *
14636
+ * Decoding returns an Effect, so use the async decoding functions:
14637
+ * `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
14638
+ * whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
14639
+ * `allowEncode` is `true`.
14640
+ *
14641
+ * @stability unstable
14642
+ * @category crypto
14643
+ * @since 4.0.0
14644
+ */
14645
+ export const MacKeyFromFormat = <A extends Mac_.Algorithm, Data>(
14646
+ format: KeyFormat_.Format<"secret", "decode", Data>,
14647
+ algorithm: A,
14648
+ options?: CryptoKeyOptions
14649
+ ): decodeTo<MacKey<A>, Codec<Data>> =>
14650
+ cryptoKeyFromFormat(
14651
+ "MacKeyFromFormat",
14652
+ MacKey(algorithm),
14653
+ format,
14654
+ (data) => KeyFormat_.decodeSecret(format, algorithm, data) as Effect.Effect<Mac_.Key<A>, CryptoError_.CryptoError>,
14655
+ options?.allowEncode === true
14656
+ )
14657
+
14658
+ /**
14659
+ * Type-level representation of {@link AeadKey}.
14660
+ *
14661
+ * @stability unstable
14662
+ * @category models
14663
+ * @since 4.0.0
14664
+ */
14665
+ export interface AeadKey<A extends Aead_.Algorithm = Aead_.Algorithm> extends declare<Aead_.Key<A>> {
14666
+ readonly "Rebuild": AeadKey<A>
14667
+ }
14668
+
14669
+ /**
14670
+ * Schema for live `Aead.Key` values of an algorithm.
14671
+ *
14672
+ * **Details**
14673
+ *
14674
+ * Decoding checks the key's algorithm and returns the key itself. The key has
14675
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
14676
+ * {@link AeadKeyFromFormat} or {@link AeadKeyFromBytes} to read and write
14677
+ * keys. Keys display redacted, compare by reference, and have no `Arbitrary`.
14678
+ *
14679
+ * @stability unstable
14680
+ * @category crypto
14681
+ * @since 4.0.0
14682
+ */
14683
+ export const AeadKey = <A extends Aead_.Algorithm>(algorithm: A): AeadKey<A> =>
14684
+ declareCryptoKey<Aead_.Key<A>>("AeadKey", "Aead", "Key", Aead_.isKey, algorithm)
14685
+
14686
+ /**
14687
+ * Schema that decodes raw key bytes into an `Aead.Key`.
14688
+ *
14689
+ * **Details**
14690
+ *
14691
+ * Decoding runs `Aead.key`, which is synchronous, so the schema works with
14692
+ * `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
14693
+ * `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
14694
+ * Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
14695
+ *
14696
+ * @stability unstable
14697
+ * @category crypto
14698
+ * @since 4.0.0
14699
+ */
14700
+ export const AeadKeyFromBytes = <A extends Aead_.Algorithm>(
14701
+ algorithm: A,
14702
+ options?: CryptoKeyOptions
14703
+ ): decodeTo<AeadKey<A>, Uint8Array> =>
14704
+ cryptoKeyFromBytes(
14705
+ "AeadKeyFromBytes",
14706
+ AeadKey(algorithm),
14707
+ (bytes) => Aead_.key(algorithm, bytes),
14708
+ options?.allowEncode === true ? Aead_.toBytes : undefined
14709
+ )
14710
+
14711
+ /**
14712
+ * Schema that decodes an `Aead.Key` from a JWK with `KeyFormat.decodeSecret`.
14713
+ *
14714
+ * **Details**
14715
+ *
14716
+ * Decoding returns an Effect, so use the async decoding functions:
14717
+ * `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
14718
+ * whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
14719
+ * `allowEncode` is `true`.
14720
+ *
14721
+ * @stability unstable
14722
+ * @category crypto
14723
+ * @since 4.0.0
14724
+ */
14725
+ export const AeadKeyFromFormat = <A extends Aead_.Algorithm, Data>(
14726
+ format: KeyFormat_.Format<"secret", "decode", Data>,
14727
+ algorithm: A,
14728
+ options?: CryptoKeyOptions
14729
+ ): decodeTo<AeadKey<A>, Codec<Data>> =>
14730
+ cryptoKeyFromFormat(
14731
+ "AeadKeyFromFormat",
14732
+ AeadKey(algorithm),
14733
+ format,
14734
+ (data) => KeyFormat_.decodeSecret(format, algorithm, data) as Effect.Effect<Aead_.Key<A>, CryptoError_.CryptoError>,
14735
+ options?.allowEncode === true
14736
+ )
14737
+
14738
+ /**
14739
+ * Type-level representation of {@link CipherKey}.
14740
+ *
14741
+ * @stability unstable
14742
+ * @category models
14743
+ * @since 4.0.0
14744
+ */
14745
+ export interface CipherKey<A extends Cipher_.Algorithm = Cipher_.Algorithm> extends declare<Cipher_.Key<A>> {
14746
+ readonly "Rebuild": CipherKey<A>
14747
+ }
14748
+
14749
+ /**
14750
+ * Schema for live `Cipher.Key` values of an algorithm.
14751
+ *
14752
+ * **Details**
14753
+ *
14754
+ * Decoding checks the key's algorithm and returns the key itself. The key has
14755
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
14756
+ * {@link CipherKeyFromFormat} or {@link CipherKeyFromBytes} to read and
14757
+ * write keys. Keys display redacted, compare by reference, and have no
14758
+ * `Arbitrary`.
14759
+ *
14760
+ * @stability unstable
14761
+ * @category crypto
14762
+ * @since 4.0.0
14763
+ */
14764
+ export const CipherKey = <A extends Cipher_.Algorithm>(algorithm: A): CipherKey<A> =>
14765
+ declareCryptoKey<Cipher_.Key<A>>(
14766
+ "CipherKey",
14767
+ "Cipher",
14768
+ "Key",
14769
+ Cipher_.isKey,
14770
+ algorithm
14771
+ )
14772
+
14773
+ /**
14774
+ * Schema that decodes raw key bytes into a `Cipher.Key`.
14775
+ *
14776
+ * **Details**
14777
+ *
14778
+ * Decoding runs `Cipher.key`, which is synchronous, so the schema works with
14779
+ * `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
14780
+ * `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
14781
+ * Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
14782
+ *
14783
+ * @stability unstable
14784
+ * @category crypto
14785
+ * @since 4.0.0
14786
+ */
14787
+ export const CipherKeyFromBytes = <A extends Cipher_.Algorithm>(
14788
+ algorithm: A,
14789
+ options?: CryptoKeyOptions
14790
+ ): decodeTo<CipherKey<A>, Uint8Array> =>
14791
+ cryptoKeyFromBytes(
14792
+ "CipherKeyFromBytes",
14793
+ CipherKey(algorithm),
14794
+ (bytes) => Cipher_.key(algorithm, bytes),
14795
+ options?.allowEncode === true ? Cipher_.toBytes : undefined
14796
+ )
14797
+
14798
+ /**
14799
+ * Schema that decodes a `Cipher.Key` from a JWK with
14800
+ * `KeyFormat.decodeSecret`.
14801
+ *
14802
+ * **Details**
14803
+ *
14804
+ * Decoding returns an Effect, so use the async decoding functions:
14805
+ * `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
14806
+ * whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
14807
+ * `allowEncode` is `true`.
14808
+ *
14809
+ * @stability unstable
14810
+ * @category crypto
14811
+ * @since 4.0.0
14812
+ */
14813
+ export const CipherKeyFromFormat = <A extends Cipher_.Algorithm, Data>(
14814
+ format: KeyFormat_.Format<"secret", "decode", Data>,
14815
+ algorithm: A,
14816
+ options?: CryptoKeyOptions
14817
+ ): decodeTo<CipherKey<A>, Codec<Data>> =>
14818
+ cryptoKeyFromFormat(
14819
+ "CipherKeyFromFormat",
14820
+ CipherKey(algorithm),
14821
+ format,
14822
+ (data) =>
14823
+ KeyFormat_.decodeSecret(format, algorithm, data) as Effect.Effect<Cipher_.Key<A>, CryptoError_.CryptoError>,
14824
+ options?.allowEncode === true
14825
+ )
14826
+
14827
+ /**
14828
+ * Type-level representation of {@link SignaturePublicKey}.
14829
+ *
14830
+ * @stability unstable
14831
+ * @category models
14832
+ * @since 4.0.0
14833
+ */
14834
+ export interface SignaturePublicKey<A extends Signature_.Algorithm = Signature_.Algorithm>
14835
+ extends declare<Signature_.PublicKey<A>>
14836
+ {
14837
+ readonly "Rebuild": SignaturePublicKey<A>
14838
+ }
14839
+
14840
+ /**
14841
+ * Schema for live `Signature.PublicKey` values of an algorithm.
14842
+ *
14843
+ * **Details**
14844
+ *
14845
+ * Decoding checks the key's algorithm and returns the key itself. The key has
14846
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
14847
+ * {@link SignaturePublicKeyFromFormat} or {@link SignaturePublicKeyFromBytes}
14848
+ * to read and write keys. Keys compare by reference and have no `Arbitrary`.
14849
+ *
14850
+ * @stability unstable
14851
+ * @category crypto
14852
+ * @since 4.0.0
14853
+ */
14854
+ export const SignaturePublicKey = <A extends Signature_.Algorithm>(algorithm: A): SignaturePublicKey<A> =>
14855
+ declareCryptoKey<Signature_.PublicKey<A>>(
14856
+ "SignaturePublicKey",
14857
+ "Signature",
14858
+ "PublicKey",
14859
+ Signature_.isPublicKey,
14860
+ algorithm
14861
+ )
14862
+
14863
+ /**
14864
+ * Schema that decodes a raw public key into a `Signature.PublicKey`: 32 bytes
14865
+ * for Ed25519, or an uncompressed SEC1 point for ECDSA.
14866
+ *
14867
+ * **Details**
14868
+ *
14869
+ * Decoding runs `Signature.publicKey`, which is synchronous, so the schema
14870
+ * works with `Schema.decodeSync`. Under `Config.schema` the bytes are read as
14871
+ * base64. A `CryptoError` becomes an `InvalidValue` issue whose `cause` is
14872
+ * the error. RSA public keys have no raw form, so passing an RSA algorithm is
14873
+ * a type error.
14874
+ *
14875
+ * @stability unstable
14876
+ * @category crypto
14877
+ * @since 4.0.0
14878
+ */
14879
+ export const SignaturePublicKeyFromBytes = <
14880
+ A extends Signature_.Ed25519 | Signature_.Ecdsa
14881
+ >(algorithm: A): decodeTo<SignaturePublicKey<A>, Uint8Array> =>
14882
+ cryptoKeyFromBytes(
14883
+ "SignaturePublicKeyFromBytes",
14884
+ SignaturePublicKey(algorithm),
14885
+ (bytes) => Signature_.publicKey(algorithm, bytes),
14886
+ Signature_.toBytes
14887
+ )
14888
+
14889
+ /**
14890
+ * Schema that decodes a `Signature.PublicKey` with
14891
+ * `KeyFormat.decodePublic` and encodes it with `KeyFormat.encode`.
14892
+ *
14893
+ * **Details**
14894
+ *
14895
+ * The format must hold public keys: `KeyFormat.spki`, `KeyFormat.jwk`, or
14896
+ * `KeyFormat.pem(KeyFormat.spki)`. A format for another role is a type
14897
+ * error. Decoding runs the runtime's key import, so use the async decoding
14898
+ * functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
14899
+ * `InvalidValue` issue whose `cause` is the error.
14900
+ *
14901
+ * @stability unstable
14902
+ * @category crypto
14903
+ * @since 4.0.0
14904
+ */
14905
+ export const SignaturePublicKeyFromFormat = <A extends Signature_.Algorithm, Data>(
14906
+ format: KeyFormat_.Format<"public", "decode", Data>,
14907
+ algorithm: A
14908
+ ): decodeTo<SignaturePublicKey<A>, Codec<Data>> =>
14909
+ cryptoKeyFromFormat(
14910
+ "SignaturePublicKeyFromFormat",
14911
+ SignaturePublicKey(algorithm),
14912
+ format,
14913
+ (data) =>
14914
+ KeyFormat_.decodePublic(format, algorithm, data) as Effect.Effect<
14915
+ Signature_.PublicKey<A>,
14916
+ CryptoError_.CryptoError
14917
+ >,
14918
+ true
14919
+ )
14920
+
14921
+ /**
14922
+ * Type-level representation of {@link SignaturePrivateKey}.
14923
+ *
14924
+ * @stability unstable
14925
+ * @category models
14926
+ * @since 4.0.0
14927
+ */
14928
+ export interface SignaturePrivateKey<A extends Signature_.Algorithm = Signature_.Algorithm>
14929
+ extends declare<Signature_.PrivateKey<A>>
14930
+ {
14931
+ readonly "Rebuild": SignaturePrivateKey<A>
14932
+ }
14933
+
14934
+ /**
14935
+ * Schema for live `Signature.PrivateKey` values of an algorithm.
14936
+ *
14937
+ * **Details**
14938
+ *
14939
+ * Decoding checks the key's algorithm and returns the key itself. The key has
14940
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
14941
+ * {@link SignaturePrivateKeyFromFormat} or
14942
+ * {@link SignaturePrivateKeyFromBytes} to read and write keys. Keys display
14943
+ * redacted, compare by reference, and have no `Arbitrary`.
14944
+ *
14945
+ * @stability unstable
14946
+ * @category crypto
14947
+ * @since 4.0.0
14948
+ */
14949
+ export const SignaturePrivateKey = <A extends Signature_.Algorithm>(algorithm: A): SignaturePrivateKey<A> =>
14950
+ declareCryptoKey<Signature_.PrivateKey<A>>(
14951
+ "SignaturePrivateKey",
14952
+ "Signature",
14953
+ "PrivateKey",
14954
+ Signature_.isPrivateKey,
14955
+ algorithm
14956
+ )
14957
+
14958
+ /**
14959
+ * Schema that decodes an Ed25519 seed into a `Signature.PrivateKey`.
14960
+ *
14961
+ * **Details**
14962
+ *
14963
+ * Decoding runs `Signature.privateKey`, which is synchronous, so the schema
14964
+ * works with `Schema.decodeSync`. Under `Config.schema` the bytes are read as
14965
+ * base64. A `CryptoError` becomes an `InvalidValue` issue whose `cause` is
14966
+ * the error. ECDSA and RSA private keys have no raw form, so passing them is
14967
+ * a type error. Encoding fails with a `Forbidden` issue unless `allowEncode`
14968
+ * is `true`.
14969
+ *
14970
+ * @stability unstable
14971
+ * @category crypto
14972
+ * @since 4.0.0
14973
+ */
14974
+ export const SignaturePrivateKeyFromBytes = <
14975
+ A extends Signature_.Ed25519
14976
+ >(algorithm: A, options?: CryptoKeyOptions): decodeTo<SignaturePrivateKey<A>, Uint8Array> =>
14977
+ cryptoKeyFromBytes(
14978
+ "SignaturePrivateKeyFromBytes",
14979
+ SignaturePrivateKey(algorithm),
14980
+ (bytes) => Signature_.privateKey(algorithm, bytes),
14981
+ options?.allowEncode === true ? Signature_.toBytes : undefined
14982
+ )
14983
+
14984
+ /**
14985
+ * Schema that decodes a `Signature.PrivateKey` with
14986
+ * `KeyFormat.decodePrivate`.
14987
+ *
14988
+ * **Details**
14989
+ *
14990
+ * The format must hold private keys: `KeyFormat.pkcs8`, `KeyFormat.jwk`,
14991
+ * `KeyFormat.pkcs1`, `KeyFormat.sec1`, or their PEM forms. A format for
14992
+ * another role is a type error. Decoding runs the runtime's key import, so
14993
+ * use the async decoding functions: `Schema.decodeSync` throws. A
14994
+ * `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
14995
+ * Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`,
14996
+ * and always for the read-only PKCS#1 and SEC1 formats.
14997
+ *
14998
+ * @stability unstable
14999
+ * @category crypto
15000
+ * @since 4.0.0
15001
+ */
15002
+ export const SignaturePrivateKeyFromFormat = <A extends Signature_.Algorithm, Data>(
15003
+ format: KeyFormat_.Format<"private", "decode", Data>,
15004
+ algorithm: A,
15005
+ options?: CryptoKeyOptions
15006
+ ): decodeTo<SignaturePrivateKey<A>, Codec<Data>> =>
15007
+ cryptoKeyFromFormat(
15008
+ "SignaturePrivateKeyFromFormat",
15009
+ SignaturePrivateKey(algorithm),
15010
+ format,
15011
+ (data) =>
15012
+ KeyFormat_.decodePrivate(format, algorithm, data) as Effect.Effect<
15013
+ Signature_.PrivateKey<A>,
15014
+ CryptoError_.CryptoError
15015
+ >,
15016
+ options?.allowEncode === true
15017
+ )
15018
+
15019
+ /**
15020
+ * Type-level representation of {@link KeyAgreementPublicKey}.
15021
+ *
15022
+ * @stability unstable
15023
+ * @category models
15024
+ * @since 4.0.0
15025
+ */
15026
+ export interface KeyAgreementPublicKey<A extends KeyAgreement_.Algorithm = KeyAgreement_.Algorithm>
15027
+ extends declare<KeyAgreement_.PublicKey<A>>
15028
+ {
15029
+ readonly "Rebuild": KeyAgreementPublicKey<A>
15030
+ }
15031
+
15032
+ /**
15033
+ * Schema for live `KeyAgreement.PublicKey` values of an algorithm.
15034
+ *
15035
+ * **Details**
15036
+ *
15037
+ * Decoding checks the key's algorithm and returns the key itself. The key has
15038
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
15039
+ * {@link KeyAgreementPublicKeyFromFormat} or
15040
+ * {@link KeyAgreementPublicKeyFromBytes} to read and write keys. Keys compare
15041
+ * by reference and have no `Arbitrary`.
15042
+ *
15043
+ * @stability unstable
15044
+ * @category crypto
15045
+ * @since 4.0.0
15046
+ */
15047
+ export const KeyAgreementPublicKey = <A extends KeyAgreement_.Algorithm>(algorithm: A): KeyAgreementPublicKey<A> =>
15048
+ declareCryptoKey<KeyAgreement_.PublicKey<A>>(
15049
+ "KeyAgreementPublicKey",
15050
+ "KeyAgreement",
15051
+ "PublicKey",
15052
+ KeyAgreement_.isPublicKey,
15053
+ algorithm
15054
+ )
15055
+
15056
+ /**
15057
+ * Schema that decodes a raw public key into a `KeyAgreement.PublicKey`: 32
15058
+ * bytes for X25519, or an uncompressed SEC1 point for ECDH.
15059
+ *
15060
+ * **Details**
15061
+ *
15062
+ * Decoding runs `KeyAgreement.publicKey`, which is synchronous, so the schema
15063
+ * works with `Schema.decodeSync`. Under `Config.schema` the bytes are read as
15064
+ * base64. A `CryptoError` becomes an `InvalidValue` issue whose `cause` is
15065
+ * the error.
15066
+ *
15067
+ * @stability unstable
15068
+ * @category crypto
15069
+ * @since 4.0.0
15070
+ */
15071
+ export const KeyAgreementPublicKeyFromBytes = <A extends KeyAgreement_.Algorithm>(
15072
+ algorithm: A
15073
+ ): decodeTo<KeyAgreementPublicKey<A>, Uint8Array> =>
15074
+ cryptoKeyFromBytes(
15075
+ "KeyAgreementPublicKeyFromBytes",
15076
+ KeyAgreementPublicKey(algorithm),
15077
+ (bytes) => KeyAgreement_.publicKey(algorithm, bytes),
15078
+ KeyAgreement_.toBytes
15079
+ )
15080
+
15081
+ /**
15082
+ * Schema that decodes a `KeyAgreement.PublicKey` with
15083
+ * `KeyFormat.decodePublic` and encodes it with `KeyFormat.encode`.
15084
+ *
15085
+ * **Details**
15086
+ *
15087
+ * The format must hold public keys: `KeyFormat.spki`, `KeyFormat.jwk`, or
15088
+ * `KeyFormat.pem(KeyFormat.spki)`. A format for another role is a type
15089
+ * error. Decoding runs the runtime's key import, so use the async decoding
15090
+ * functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
15091
+ * `InvalidValue` issue whose `cause` is the error.
15092
+ *
15093
+ * @stability unstable
15094
+ * @category crypto
15095
+ * @since 4.0.0
15096
+ */
15097
+ export const KeyAgreementPublicKeyFromFormat = <A extends KeyAgreement_.Algorithm, Data>(
15098
+ format: KeyFormat_.Format<"public", "decode", Data>,
15099
+ algorithm: A
15100
+ ): decodeTo<KeyAgreementPublicKey<A>, Codec<Data>> =>
15101
+ cryptoKeyFromFormat(
15102
+ "KeyAgreementPublicKeyFromFormat",
15103
+ KeyAgreementPublicKey(algorithm),
15104
+ format,
15105
+ (data) =>
15106
+ KeyFormat_.decodePublic(format, algorithm, data) as Effect.Effect<
15107
+ KeyAgreement_.PublicKey<A>,
15108
+ CryptoError_.CryptoError
15109
+ >,
15110
+ true
15111
+ )
15112
+
15113
+ /**
15114
+ * Type-level representation of {@link KeyAgreementPrivateKey}.
15115
+ *
15116
+ * @stability unstable
15117
+ * @category models
15118
+ * @since 4.0.0
15119
+ */
15120
+ export interface KeyAgreementPrivateKey<A extends KeyAgreement_.Algorithm = KeyAgreement_.Algorithm>
15121
+ extends declare<KeyAgreement_.PrivateKey<A>>
15122
+ {
15123
+ readonly "Rebuild": KeyAgreementPrivateKey<A>
15124
+ }
15125
+
15126
+ /**
15127
+ * Schema for live `KeyAgreement.PrivateKey` values of an algorithm.
15128
+ *
15129
+ * **Details**
15130
+ *
15131
+ * Decoding checks the key's algorithm and returns the key itself. The key has
15132
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
15133
+ * {@link KeyAgreementPrivateKeyFromFormat} or
15134
+ * {@link KeyAgreementPrivateKeyFromBytes} to read and write keys. Keys
15135
+ * display redacted, compare by reference, and have no `Arbitrary`.
15136
+ *
15137
+ * @stability unstable
15138
+ * @category crypto
15139
+ * @since 4.0.0
15140
+ */
15141
+ export const KeyAgreementPrivateKey = <A extends KeyAgreement_.Algorithm>(
15142
+ algorithm: A
15143
+ ): KeyAgreementPrivateKey<A> =>
15144
+ declareCryptoKey<KeyAgreement_.PrivateKey<A>>(
15145
+ "KeyAgreementPrivateKey",
15146
+ "KeyAgreement",
15147
+ "PrivateKey",
15148
+ KeyAgreement_.isPrivateKey,
15149
+ algorithm
15150
+ )
15151
+
15152
+ /**
15153
+ * Schema that decodes an X25519 private key into a
15154
+ * `KeyAgreement.PrivateKey`.
15155
+ *
15156
+ * **Details**
15157
+ *
15158
+ * Decoding runs `KeyAgreement.privateKey`, which is synchronous, so the
15159
+ * schema works with `Schema.decodeSync`. Under `Config.schema` the bytes are
15160
+ * read as base64. A `CryptoError` becomes an `InvalidValue` issue whose
15161
+ * `cause` is the error. ECDH private keys have no raw form, so passing them
15162
+ * is a type error. Encoding fails with a `Forbidden` issue unless
15163
+ * `allowEncode` is `true`.
15164
+ *
15165
+ * @stability unstable
15166
+ * @category crypto
15167
+ * @since 4.0.0
15168
+ */
15169
+ export const KeyAgreementPrivateKeyFromBytes = <
15170
+ A extends KeyAgreement_.X25519
15171
+ >(algorithm: A, options?: CryptoKeyOptions): decodeTo<KeyAgreementPrivateKey<A>, Uint8Array> =>
15172
+ cryptoKeyFromBytes(
15173
+ "KeyAgreementPrivateKeyFromBytes",
15174
+ KeyAgreementPrivateKey(algorithm),
15175
+ (bytes) => KeyAgreement_.privateKey(algorithm, bytes),
15176
+ options?.allowEncode === true ? KeyAgreement_.toBytes : undefined
15177
+ )
15178
+
15179
+ /**
15180
+ * Schema that decodes a `KeyAgreement.PrivateKey` with
15181
+ * `KeyFormat.decodePrivate`.
15182
+ *
15183
+ * **Details**
15184
+ *
15185
+ * The format must hold private keys: `KeyFormat.pkcs8`, `KeyFormat.jwk`,
15186
+ * `KeyFormat.sec1`, or their PEM forms. A format for another role is a type
15187
+ * error. Decoding runs the runtime's key import, so use the async decoding
15188
+ * functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
15189
+ * `InvalidValue` issue whose `cause` is the error. Encoding fails with a
15190
+ * `Forbidden` issue unless `allowEncode` is `true`, and always for the
15191
+ * read-only PKCS#1 and SEC1 formats.
15192
+ *
15193
+ * @stability unstable
15194
+ * @category crypto
15195
+ * @since 4.0.0
15196
+ */
15197
+ export const KeyAgreementPrivateKeyFromFormat = <A extends KeyAgreement_.Algorithm, Data>(
15198
+ format: KeyFormat_.Format<"private", "decode", Data>,
15199
+ algorithm: A,
15200
+ options?: CryptoKeyOptions
15201
+ ): decodeTo<KeyAgreementPrivateKey<A>, Codec<Data>> =>
15202
+ cryptoKeyFromFormat(
15203
+ "KeyAgreementPrivateKeyFromFormat",
15204
+ KeyAgreementPrivateKey(algorithm),
15205
+ format,
15206
+ (data) =>
15207
+ KeyFormat_.decodePrivate(format, algorithm, data) as Effect.Effect<
15208
+ KeyAgreement_.PrivateKey<A>,
15209
+ CryptoError_.CryptoError
15210
+ >,
15211
+ options?.allowEncode === true
15212
+ )
15213
+
15214
+ /**
15215
+ * Type-level representation of {@link KeyWrapKey}.
15216
+ *
15217
+ * @stability unstable
15218
+ * @category models
15219
+ * @since 4.0.0
15220
+ */
15221
+ export interface KeyWrapKey<A extends KeyWrap_.AesKw = KeyWrap_.AesKw> extends declare<KeyWrap_.Key<A>> {
15222
+ readonly "Rebuild": KeyWrapKey<A>
15223
+ }
15224
+
15225
+ /**
15226
+ * Schema for live AES-KW `KeyWrap.Key` values of an algorithm.
15227
+ *
15228
+ * **Details**
15229
+ *
15230
+ * Decoding checks the key's algorithm and returns the key itself. The key has
15231
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
15232
+ * {@link KeyWrapKeyFromFormat} or {@link KeyWrapKeyFromBytes} to read and
15233
+ * write keys. Keys display redacted, compare by reference, and have no
15234
+ * `Arbitrary`.
15235
+ *
15236
+ * @stability unstable
15237
+ * @category crypto
15238
+ * @since 4.0.0
15239
+ */
15240
+ export const KeyWrapKey = <A extends KeyWrap_.AesKw>(algorithm: A): KeyWrapKey<A> =>
15241
+ declareCryptoKey<KeyWrap_.Key<A>>("KeyWrapKey", "KeyWrap", "Key", KeyWrap_.isKey, algorithm)
15242
+
15243
+ /**
15244
+ * Schema that decodes raw key bytes into an AES-KW `KeyWrap.Key`.
15245
+ *
15246
+ * **Details**
15247
+ *
15248
+ * Decoding runs `KeyWrap.key`, which is synchronous, so the schema works with
15249
+ * `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
15250
+ * `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
15251
+ * Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
15252
+ *
15253
+ * @stability unstable
15254
+ * @category crypto
15255
+ * @since 4.0.0
15256
+ */
15257
+ export const KeyWrapKeyFromBytes = <A extends KeyWrap_.AesKw>(
15258
+ algorithm: A,
15259
+ options?: CryptoKeyOptions
15260
+ ): decodeTo<KeyWrapKey<A>, Uint8Array> =>
15261
+ cryptoKeyFromBytes(
15262
+ "KeyWrapKeyFromBytes",
15263
+ KeyWrapKey(algorithm),
15264
+ (bytes) => KeyWrap_.key(algorithm, bytes),
15265
+ options?.allowEncode === true ? KeyWrap_.toBytes : undefined
15266
+ )
15267
+
15268
+ /**
15269
+ * Schema that decodes an AES-KW `KeyWrap.Key` from a JWK with
15270
+ * `KeyFormat.decodeSecret`.
15271
+ *
15272
+ * **Details**
15273
+ *
15274
+ * Decoding returns an Effect, so use the async decoding functions:
15275
+ * `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
15276
+ * whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
15277
+ * `allowEncode` is `true`.
15278
+ *
15279
+ * @stability unstable
15280
+ * @category crypto
15281
+ * @since 4.0.0
15282
+ */
15283
+ export const KeyWrapKeyFromFormat = <A extends KeyWrap_.AesKw, Data>(
15284
+ format: KeyFormat_.Format<"secret", "decode", Data>,
15285
+ algorithm: A,
15286
+ options?: CryptoKeyOptions
15287
+ ): decodeTo<KeyWrapKey<A>, Codec<Data>> =>
15288
+ cryptoKeyFromFormat(
15289
+ "KeyWrapKeyFromFormat",
15290
+ KeyWrapKey(algorithm),
15291
+ format,
15292
+ (data) =>
15293
+ KeyFormat_.decodeSecret(format, algorithm, data) as Effect.Effect<KeyWrap_.Key<A>, CryptoError_.CryptoError>,
15294
+ options?.allowEncode === true
15295
+ )
15296
+
15297
+ /**
15298
+ * Type-level representation of {@link KeyWrapPublicKey}.
15299
+ *
15300
+ * @stability unstable
15301
+ * @category models
15302
+ * @since 4.0.0
15303
+ */
15304
+ export interface KeyWrapPublicKey<A extends KeyWrap_.RsaOaep = KeyWrap_.RsaOaep>
15305
+ extends declare<KeyWrap_.PublicKey<A>>
15306
+ {
15307
+ readonly "Rebuild": KeyWrapPublicKey<A>
15308
+ }
15309
+
15310
+ /**
15311
+ * Schema for live RSA-OAEP `KeyWrap.PublicKey` values of an algorithm.
15312
+ *
15313
+ * **Details**
15314
+ *
15315
+ * Decoding checks the key's algorithm and returns the key itself. The key has
15316
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
15317
+ * {@link KeyWrapPublicKeyFromFormat} to read and write keys. RSA-OAEP keys
15318
+ * have no raw form. Keys compare by reference and have no `Arbitrary`.
15319
+ *
15320
+ * @stability unstable
15321
+ * @category crypto
15322
+ * @since 4.0.0
15323
+ */
15324
+ export const KeyWrapPublicKey = <A extends KeyWrap_.RsaOaep>(algorithm: A): KeyWrapPublicKey<A> =>
15325
+ declareCryptoKey<KeyWrap_.PublicKey<A>>(
15326
+ "KeyWrapPublicKey",
15327
+ "KeyWrap",
15328
+ "PublicKey",
15329
+ KeyWrap_.isPublicKey,
15330
+ algorithm
15331
+ )
15332
+
15333
+ /**
15334
+ * Schema that decodes an RSA-OAEP `KeyWrap.PublicKey` with
15335
+ * `KeyFormat.decodePublic` and encodes it with `KeyFormat.encode`.
15336
+ *
15337
+ * **Details**
15338
+ *
15339
+ * The format must hold public keys: `KeyFormat.spki`, `KeyFormat.jwk`, or
15340
+ * `KeyFormat.pem(KeyFormat.spki)`. A format for another role is a type
15341
+ * error. Decoding runs the runtime's key import, so use the async decoding
15342
+ * functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
15343
+ * `InvalidValue` issue whose `cause` is the error.
15344
+ *
15345
+ * @stability unstable
15346
+ * @category crypto
15347
+ * @since 4.0.0
15348
+ */
15349
+ export const KeyWrapPublicKeyFromFormat = <A extends KeyWrap_.RsaOaep, Data>(
15350
+ format: KeyFormat_.Format<"public", "decode", Data>,
15351
+ algorithm: A
15352
+ ): decodeTo<KeyWrapPublicKey<A>, Codec<Data>> =>
15353
+ cryptoKeyFromFormat(
15354
+ "KeyWrapPublicKeyFromFormat",
15355
+ KeyWrapPublicKey(algorithm),
15356
+ format,
15357
+ (data) =>
15358
+ KeyFormat_.decodePublic(format, algorithm, data) as Effect.Effect<
15359
+ KeyWrap_.PublicKey<A>,
15360
+ CryptoError_.CryptoError
15361
+ >,
15362
+ true
15363
+ )
15364
+
15365
+ /**
15366
+ * Type-level representation of {@link KeyWrapPrivateKey}.
15367
+ *
15368
+ * @stability unstable
15369
+ * @category models
15370
+ * @since 4.0.0
15371
+ */
15372
+ export interface KeyWrapPrivateKey<A extends KeyWrap_.RsaOaep = KeyWrap_.RsaOaep>
15373
+ extends declare<KeyWrap_.PrivateKey<A>>
15374
+ {
15375
+ readonly "Rebuild": KeyWrapPrivateKey<A>
15376
+ }
15377
+
15378
+ /**
15379
+ * Schema for live RSA-OAEP `KeyWrap.PrivateKey` values of an algorithm.
15380
+ *
15381
+ * **Details**
15382
+ *
15383
+ * Decoding checks the key's algorithm and returns the key itself. The key has
15384
+ * no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
15385
+ * {@link KeyWrapPrivateKeyFromFormat} to read and write keys. RSA-OAEP keys
15386
+ * have no raw form. Keys display redacted, compare by reference, and have no
15387
+ * `Arbitrary`.
15388
+ *
15389
+ * @stability unstable
15390
+ * @category crypto
15391
+ * @since 4.0.0
15392
+ */
15393
+ export const KeyWrapPrivateKey = <A extends KeyWrap_.RsaOaep>(algorithm: A): KeyWrapPrivateKey<A> =>
15394
+ declareCryptoKey<KeyWrap_.PrivateKey<A>>(
15395
+ "KeyWrapPrivateKey",
15396
+ "KeyWrap",
15397
+ "PrivateKey",
15398
+ KeyWrap_.isPrivateKey,
15399
+ algorithm
15400
+ )
15401
+
15402
+ /**
15403
+ * Schema that decodes an RSA-OAEP `KeyWrap.PrivateKey` with
15404
+ * `KeyFormat.decodePrivate`.
15405
+ *
15406
+ * **Details**
15407
+ *
15408
+ * The format must hold private keys: `KeyFormat.pkcs8`, `KeyFormat.jwk`,
15409
+ * `KeyFormat.pkcs1`, or their PEM forms. A format for another role is a type
15410
+ * error. Decoding runs the runtime's key import, so use the async decoding
15411
+ * functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
15412
+ * `InvalidValue` issue whose `cause` is the error. Encoding fails with a
15413
+ * `Forbidden` issue unless `allowEncode` is `true`, and always for the
15414
+ * read-only PKCS#1 format.
15415
+ *
15416
+ * @stability unstable
15417
+ * @category crypto
15418
+ * @since 4.0.0
15419
+ */
15420
+ export const KeyWrapPrivateKeyFromFormat = <A extends KeyWrap_.RsaOaep, Data>(
15421
+ format: KeyFormat_.Format<"private", "decode", Data>,
15422
+ algorithm: A,
15423
+ options?: CryptoKeyOptions
15424
+ ): decodeTo<KeyWrapPrivateKey<A>, Codec<Data>> =>
15425
+ cryptoKeyFromFormat(
15426
+ "KeyWrapPrivateKeyFromFormat",
15427
+ KeyWrapPrivateKey(algorithm),
15428
+ format,
15429
+ (data) =>
15430
+ KeyFormat_.decodePrivate(format, algorithm, data) as Effect.Effect<
15431
+ KeyWrap_.PrivateKey<A>,
15432
+ CryptoError_.CryptoError
15433
+ >,
15434
+ options?.allowEncode === true
15435
+ )
15436
+
14310
15437
  // -----------------------------------------------------------------------------
14311
15438
  // Exit schemas
14312
15439
  // -----------------------------------------------------------------------------