effect 4.0.6 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (978) hide show
  1. package/README.md +1 -1
  2. package/dist/Arbitrary.d.ts +10 -2
  3. package/dist/Arbitrary.d.ts.map +1 -1
  4. package/dist/Arbitrary.js +2 -1
  5. package/dist/Arbitrary.js.map +1 -1
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +3 -0
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/Channel.d.ts +12 -6
  10. package/dist/Channel.d.ts.map +1 -1
  11. package/dist/Channel.js +30 -9
  12. package/dist/Channel.js.map +1 -1
  13. package/dist/Config.d.ts +7 -1
  14. package/dist/Config.d.ts.map +1 -1
  15. package/dist/Config.js.map +1 -1
  16. package/dist/Context.d.ts +18 -1
  17. package/dist/Context.d.ts.map +1 -1
  18. package/dist/Context.js +27 -8
  19. package/dist/Context.js.map +1 -1
  20. package/dist/Cron.d.ts +81 -11
  21. package/dist/Cron.d.ts.map +1 -1
  22. package/dist/Cron.js +101 -26
  23. package/dist/Cron.js.map +1 -1
  24. package/dist/Data.d.ts +54 -235
  25. package/dist/Data.d.ts.map +1 -1
  26. package/dist/Data.js.map +1 -1
  27. package/dist/Duration.d.ts +78 -0
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +123 -0
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +165 -8
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +12 -2
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Equal.d.ts.map +1 -1
  36. package/dist/Equal.js +8 -1
  37. package/dist/Equal.js.map +1 -1
  38. package/dist/Exit.d.ts +3 -3
  39. package/dist/Exit.d.ts.map +1 -1
  40. package/dist/Exit.js.map +1 -1
  41. package/dist/FileSystem.d.ts +59 -4
  42. package/dist/FileSystem.d.ts.map +1 -1
  43. package/dist/FileSystem.js +9 -2
  44. package/dist/FileSystem.js.map +1 -1
  45. package/dist/Formatter.d.ts.map +1 -1
  46. package/dist/Formatter.js +27 -13
  47. package/dist/Formatter.js.map +1 -1
  48. package/dist/Glob.d.ts +165 -0
  49. package/dist/Glob.d.ts.map +1 -0
  50. package/dist/Glob.js +127 -0
  51. package/dist/Glob.js.map +1 -0
  52. package/dist/Hash.d.ts.map +1 -1
  53. package/dist/Hash.js +4 -1
  54. package/dist/Hash.js.map +1 -1
  55. package/dist/JsonPatch.js +4 -0
  56. package/dist/JsonPatch.js.map +1 -1
  57. package/dist/JsonSchema.d.ts.map +1 -1
  58. package/dist/JsonSchema.js +13 -40
  59. package/dist/JsonSchema.js.map +1 -1
  60. package/dist/Match.d.ts +86 -0
  61. package/dist/Match.d.ts.map +1 -1
  62. package/dist/Match.js +72 -0
  63. package/dist/Match.js.map +1 -1
  64. package/dist/Metric.d.ts +3 -3
  65. package/dist/MutableList.d.ts +5 -2
  66. package/dist/MutableList.d.ts.map +1 -1
  67. package/dist/MutableList.js +7 -5
  68. package/dist/MutableList.js.map +1 -1
  69. package/dist/MutableRef.d.ts.map +1 -1
  70. package/dist/MutableRef.js +7 -0
  71. package/dist/MutableRef.js.map +1 -1
  72. package/dist/PartitionedSemaphore.d.ts +2 -1
  73. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  74. package/dist/PartitionedSemaphore.js +22 -12
  75. package/dist/PartitionedSemaphore.js.map +1 -1
  76. package/dist/Pool.d.ts +51 -0
  77. package/dist/Pool.d.ts.map +1 -1
  78. package/dist/Pool.js +136 -36
  79. package/dist/Pool.js.map +1 -1
  80. package/dist/PubSub.d.ts.map +1 -1
  81. package/dist/PubSub.js +5 -6
  82. package/dist/PubSub.js.map +1 -1
  83. package/dist/Random.d.ts.map +1 -1
  84. package/dist/Random.js +3 -3
  85. package/dist/Random.js.map +1 -1
  86. package/dist/RcMap.d.ts.map +1 -1
  87. package/dist/RcMap.js +8 -2
  88. package/dist/RcMap.js.map +1 -1
  89. package/dist/Ref.d.ts.map +1 -1
  90. package/dist/Ref.js +8 -0
  91. package/dist/Ref.js.map +1 -1
  92. package/dist/Schedule.d.ts +18 -1
  93. package/dist/Schedule.d.ts.map +1 -1
  94. package/dist/Schedule.js +8 -3
  95. package/dist/Schedule.js.map +1 -1
  96. package/dist/Schema.d.ts +690 -49
  97. package/dist/Schema.d.ts.map +1 -1
  98. package/dist/Schema.js +687 -28
  99. package/dist/Schema.js.map +1 -1
  100. package/dist/SchemaAST.d.ts +4 -2
  101. package/dist/SchemaAST.d.ts.map +1 -1
  102. package/dist/SchemaAST.js +14 -17
  103. package/dist/SchemaAST.js.map +1 -1
  104. package/dist/SchemaGetter.d.ts +6 -1
  105. package/dist/SchemaGetter.d.ts.map +1 -1
  106. package/dist/SchemaGetter.js +22 -11
  107. package/dist/SchemaGetter.js.map +1 -1
  108. package/dist/SchemaParser.d.ts.map +1 -1
  109. package/dist/SchemaParser.js +48 -22
  110. package/dist/SchemaParser.js.map +1 -1
  111. package/dist/SchemaRepresentation.d.ts +33 -10
  112. package/dist/SchemaRepresentation.d.ts.map +1 -1
  113. package/dist/SchemaRepresentation.js +39 -13
  114. package/dist/SchemaRepresentation.js.map +1 -1
  115. package/dist/SchemaTransformation.d.ts +12 -4
  116. package/dist/SchemaTransformation.d.ts.map +1 -1
  117. package/dist/SchemaTransformation.js +15 -5
  118. package/dist/SchemaTransformation.js.map +1 -1
  119. package/dist/ScopedCache.d.ts.map +1 -1
  120. package/dist/ScopedCache.js +5 -7
  121. package/dist/ScopedCache.js.map +1 -1
  122. package/dist/Semaphore.d.ts +130 -0
  123. package/dist/Semaphore.d.ts.map +1 -1
  124. package/dist/Semaphore.js +94 -35
  125. package/dist/Semaphore.js.map +1 -1
  126. package/dist/Sink.d.ts.map +1 -1
  127. package/dist/Sink.js +7 -2
  128. package/dist/Sink.js.map +1 -1
  129. package/dist/Stream.d.ts +13 -4
  130. package/dist/Stream.d.ts.map +1 -1
  131. package/dist/Stream.js +31 -10
  132. package/dist/Stream.js.map +1 -1
  133. package/dist/String.d.ts +3 -0
  134. package/dist/String.d.ts.map +1 -1
  135. package/dist/String.js +3 -0
  136. package/dist/String.js.map +1 -1
  137. package/dist/Terminal.d.ts +18 -1
  138. package/dist/Terminal.d.ts.map +1 -1
  139. package/dist/Terminal.js +1 -1
  140. package/dist/Terminal.js.map +1 -1
  141. package/dist/Tracer.d.ts +11 -1
  142. package/dist/Tracer.d.ts.map +1 -1
  143. package/dist/Tracer.js +6 -1
  144. package/dist/Tracer.js.map +1 -1
  145. package/dist/ai/AiError.d.ts +43 -116
  146. package/dist/ai/AiError.d.ts.map +1 -1
  147. package/dist/ai/AiError.js +53 -72
  148. package/dist/ai/AiError.js.map +1 -1
  149. package/dist/ai/Decision.d.ts +196 -15
  150. package/dist/ai/Decision.d.ts.map +1 -1
  151. package/dist/ai/Decision.js +130 -0
  152. package/dist/ai/Decision.js.map +1 -1
  153. package/dist/ai/DecisionModel.d.ts +54 -13
  154. package/dist/ai/DecisionModel.d.ts.map +1 -1
  155. package/dist/ai/DecisionModel.js +123 -12
  156. package/dist/ai/DecisionModel.js.map +1 -1
  157. package/dist/ai/LanguageModel.d.ts.map +1 -1
  158. package/dist/ai/LanguageModel.js +9 -0
  159. package/dist/ai/LanguageModel.js.map +1 -1
  160. package/dist/ai/McpSchema.d.ts +110 -110
  161. package/dist/ai/McpSchema.d.ts.map +1 -1
  162. package/dist/ai/McpServer.d.ts +630 -29
  163. package/dist/ai/McpServer.d.ts.map +1 -1
  164. package/dist/ai/McpServer.js +583 -131
  165. package/dist/ai/McpServer.js.map +1 -1
  166. package/dist/ai/McpTest.d.ts +130 -0
  167. package/dist/ai/McpTest.d.ts.map +1 -0
  168. package/dist/ai/McpTest.js +237 -0
  169. package/dist/ai/McpTest.js.map +1 -0
  170. package/dist/ai/Prompt.d.ts +52 -0
  171. package/dist/ai/Prompt.d.ts.map +1 -1
  172. package/dist/ai/Prompt.js +38 -0
  173. package/dist/ai/Prompt.js.map +1 -1
  174. package/dist/ai/Response.d.ts +17 -28
  175. package/dist/ai/Response.d.ts.map +1 -1
  176. package/dist/ai/Response.js +5 -10
  177. package/dist/ai/Response.js.map +1 -1
  178. package/dist/ai/Tool.d.ts +43 -1
  179. package/dist/ai/Tool.d.ts.map +1 -1
  180. package/dist/ai/Tool.js +5 -2
  181. package/dist/ai/Tool.js.map +1 -1
  182. package/dist/ai/Toolkit.d.ts.map +1 -1
  183. package/dist/ai/Toolkit.js +8 -1
  184. package/dist/ai/Toolkit.js.map +1 -1
  185. package/dist/ai/index.d.ts +5 -0
  186. package/dist/ai/index.d.ts.map +1 -1
  187. package/dist/ai/index.js +5 -0
  188. package/dist/ai/index.js.map +1 -1
  189. package/dist/ai/internal/mcpCore.js +17 -12
  190. package/dist/ai/internal/mcpCore.js.map +1 -1
  191. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  192. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  193. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  194. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  195. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  196. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  197. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  198. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  199. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  200. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  201. package/dist/ai/internal/mcpProtocol.js +13 -0
  202. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  203. package/dist/ai/internal/mcpRuntime.js +5 -3
  204. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  205. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  206. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  207. package/dist/cli/Argument.d.ts +21 -0
  208. package/dist/cli/Argument.d.ts.map +1 -1
  209. package/dist/cli/Argument.js +7 -0
  210. package/dist/cli/Argument.js.map +1 -1
  211. package/dist/cli/CliError.d.ts +78 -0
  212. package/dist/cli/CliError.d.ts.map +1 -1
  213. package/dist/cli/CliError.js +65 -3
  214. package/dist/cli/CliError.js.map +1 -1
  215. package/dist/cli/CliOutput.d.ts +220 -7
  216. package/dist/cli/CliOutput.d.ts.map +1 -1
  217. package/dist/cli/CliOutput.js +156 -43
  218. package/dist/cli/CliOutput.js.map +1 -1
  219. package/dist/cli/Command.d.ts +47 -16
  220. package/dist/cli/Command.d.ts.map +1 -1
  221. package/dist/cli/Command.js +67 -29
  222. package/dist/cli/Command.js.map +1 -1
  223. package/dist/cli/Completions.d.ts +58 -0
  224. package/dist/cli/Completions.d.ts.map +1 -1
  225. package/dist/cli/Completions.js +49 -9
  226. package/dist/cli/Completions.js.map +1 -1
  227. package/dist/cli/Flag.d.ts +122 -0
  228. package/dist/cli/Flag.d.ts.map +1 -1
  229. package/dist/cli/Flag.js +42 -0
  230. package/dist/cli/Flag.js.map +1 -1
  231. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  232. package/dist/cli/GlobalFlag.js +15 -7
  233. package/dist/cli/GlobalFlag.js.map +1 -1
  234. package/dist/cli/HelpDoc.d.ts +15 -1
  235. package/dist/cli/HelpDoc.d.ts.map +1 -1
  236. package/dist/cli/Param.d.ts +15 -0
  237. package/dist/cli/Param.d.ts.map +1 -1
  238. package/dist/cli/Param.js +23 -2
  239. package/dist/cli/Param.js.map +1 -1
  240. package/dist/cli/Primitive.d.ts +14 -0
  241. package/dist/cli/Primitive.d.ts.map +1 -1
  242. package/dist/cli/Primitive.js +15 -1
  243. package/dist/cli/Primitive.js.map +1 -1
  244. package/dist/cli/Prompt.d.ts +1 -0
  245. package/dist/cli/Prompt.d.ts.map +1 -1
  246. package/dist/cli/Prompt.js +1 -0
  247. package/dist/cli/Prompt.js.map +1 -1
  248. package/dist/cli/TerminalCapabilities.d.ts +3 -2
  249. package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
  250. package/dist/cli/TerminalCapabilities.js +3 -1
  251. package/dist/cli/TerminalCapabilities.js.map +1 -1
  252. package/dist/cli/internal/completions/bash.js +73 -27
  253. package/dist/cli/internal/completions/bash.js.map +1 -1
  254. package/dist/cli/internal/help.d.ts.map +1 -1
  255. package/dist/cli/internal/help.js +17 -10
  256. package/dist/cli/internal/help.js.map +1 -1
  257. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  258. package/dist/cluster/ClusterWorkflowEngine.js +45 -10
  259. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  260. package/dist/cluster/MessageStorage.d.ts +23 -45
  261. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  262. package/dist/cluster/MessageStorage.js +6 -7
  263. package/dist/cluster/MessageStorage.js.map +1 -1
  264. package/dist/cluster/Sharding.d.ts.map +1 -1
  265. package/dist/cluster/Sharding.js +151 -49
  266. package/dist/cluster/Sharding.js.map +1 -1
  267. package/dist/cluster/ShardingConfig.d.ts +76 -0
  268. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  269. package/dist/cluster/ShardingConfig.js +4 -0
  270. package/dist/cluster/ShardingConfig.js.map +1 -1
  271. package/dist/cluster/SingleRunner.d.ts +3 -3
  272. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  273. package/dist/cluster/SingleRunner.js +1 -1
  274. package/dist/cluster/Snowflake.d.ts.map +1 -1
  275. package/dist/cluster/Snowflake.js +3 -7
  276. package/dist/cluster/Snowflake.js.map +1 -1
  277. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  278. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  279. package/dist/cluster/SqlMessageStorage.js +34 -7
  280. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  281. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  282. package/dist/cluster/SqlRunnerStorage.js +109 -46
  283. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  284. package/dist/cluster/internal/entityManager.js +54 -20
  285. package/dist/cluster/internal/entityManager.js.map +1 -1
  286. package/dist/crypto/Aead.d.ts +322 -0
  287. package/dist/crypto/Aead.d.ts.map +1 -0
  288. package/dist/crypto/Aead.js +331 -0
  289. package/dist/crypto/Aead.js.map +1 -0
  290. package/dist/crypto/Cipher.d.ts +235 -0
  291. package/dist/crypto/Cipher.d.ts.map +1 -0
  292. package/dist/crypto/Cipher.js +233 -0
  293. package/dist/crypto/Cipher.js.map +1 -0
  294. package/dist/crypto/CryptoError.d.ts +212 -0
  295. package/dist/crypto/CryptoError.d.ts.map +1 -0
  296. package/dist/crypto/CryptoError.js +202 -0
  297. package/dist/crypto/CryptoError.js.map +1 -0
  298. package/dist/crypto/Digest.d.ts +143 -0
  299. package/dist/crypto/Digest.d.ts.map +1 -0
  300. package/dist/crypto/Digest.js +146 -0
  301. package/dist/crypto/Digest.js.map +1 -0
  302. package/dist/crypto/Kdf.d.ts +220 -0
  303. package/dist/crypto/Kdf.d.ts.map +1 -0
  304. package/dist/crypto/Kdf.js +212 -0
  305. package/dist/crypto/Kdf.js.map +1 -0
  306. package/dist/crypto/KeyAgreement.d.ts +323 -0
  307. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  308. package/dist/crypto/KeyAgreement.js +303 -0
  309. package/dist/crypto/KeyAgreement.js.map +1 -0
  310. package/dist/crypto/KeyFormat.d.ts +309 -0
  311. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  312. package/dist/crypto/KeyFormat.js +556 -0
  313. package/dist/crypto/KeyFormat.js.map +1 -0
  314. package/dist/crypto/KeyWrap.d.ts +389 -0
  315. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  316. package/dist/crypto/KeyWrap.js +381 -0
  317. package/dist/crypto/KeyWrap.js.map +1 -0
  318. package/dist/crypto/Mac.d.ts +277 -0
  319. package/dist/crypto/Mac.d.ts.map +1 -0
  320. package/dist/crypto/Mac.js +288 -0
  321. package/dist/crypto/Mac.js.map +1 -0
  322. package/dist/crypto/SecureRandom.d.ts +340 -0
  323. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  324. package/dist/crypto/SecureRandom.js +257 -0
  325. package/dist/crypto/SecureRandom.js.map +1 -0
  326. package/dist/crypto/Signature.d.ts +448 -0
  327. package/dist/crypto/Signature.d.ts.map +1 -0
  328. package/dist/crypto/Signature.js +484 -0
  329. package/dist/crypto/Signature.js.map +1 -0
  330. package/dist/crypto/WebCrypto.d.ts +61 -0
  331. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  332. package/dist/crypto/WebCrypto.js +63 -0
  333. package/dist/crypto/WebCrypto.js.map +1 -0
  334. package/dist/crypto/index.d.ts +65 -0
  335. package/dist/crypto/index.d.ts.map +1 -0
  336. package/dist/crypto/index.js +66 -0
  337. package/dist/crypto/index.js.map +1 -0
  338. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  339. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  340. package/dist/crypto/internal/asymmetric.js +210 -0
  341. package/dist/crypto/internal/asymmetric.js.map +1 -0
  342. package/dist/crypto/internal/chacha.d.ts +46 -0
  343. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  344. package/dist/crypto/internal/chacha.js +885 -0
  345. package/dist/crypto/internal/chacha.js.map +1 -0
  346. package/dist/crypto/internal/der.d.ts +6 -0
  347. package/dist/crypto/internal/der.d.ts.map +1 -0
  348. package/dist/crypto/internal/der.js +86 -0
  349. package/dist/crypto/internal/der.js.map +1 -0
  350. package/dist/crypto/internal/digest.d.ts +2 -0
  351. package/dist/crypto/internal/digest.d.ts.map +1 -0
  352. package/dist/crypto/internal/digest.js +15 -0
  353. package/dist/crypto/internal/digest.js.map +1 -0
  354. package/dist/crypto/internal/key.d.ts +2 -0
  355. package/dist/crypto/internal/key.d.ts.map +1 -0
  356. package/dist/crypto/internal/key.js +170 -0
  357. package/dist/crypto/internal/key.js.map +1 -0
  358. package/dist/crypto/internal/md5.d.ts +39 -0
  359. package/dist/crypto/internal/md5.d.ts.map +1 -0
  360. package/dist/crypto/internal/md5.js +179 -0
  361. package/dist/crypto/internal/md5.js.map +1 -0
  362. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  363. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  364. package/dist/crypto/internal/webCrypto.js +111 -0
  365. package/dist/crypto/internal/webCrypto.js.map +1 -0
  366. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  367. package/dist/devtools/DevToolsClient.js +2 -0
  368. package/dist/devtools/DevToolsClient.js.map +1 -1
  369. package/dist/encoding/Base64.js +36 -0
  370. package/dist/encoding/Base64.js.map +1 -1
  371. package/dist/encoding/Base64Url.d.ts.map +1 -1
  372. package/dist/encoding/Base64Url.js +3 -2
  373. package/dist/encoding/Base64Url.js.map +1 -1
  374. package/dist/encoding/Csv.d.ts +608 -0
  375. package/dist/encoding/Csv.d.ts.map +1 -0
  376. package/dist/encoding/Csv.js +718 -0
  377. package/dist/encoding/Csv.js.map +1 -0
  378. package/dist/encoding/Hex.d.ts +3 -2
  379. package/dist/encoding/Hex.d.ts.map +1 -1
  380. package/dist/encoding/Hex.js +3 -2
  381. package/dist/encoding/Hex.js.map +1 -1
  382. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  383. package/dist/encoding/SchemaBinary.js +42 -4
  384. package/dist/encoding/SchemaBinary.js.map +1 -1
  385. package/dist/encoding/Sse.d.ts.map +1 -1
  386. package/dist/encoding/Sse.js +3 -3
  387. package/dist/encoding/Sse.js.map +1 -1
  388. package/dist/encoding/Toml.d.ts +17 -3
  389. package/dist/encoding/Toml.d.ts.map +1 -1
  390. package/dist/encoding/Toml.js +124 -31
  391. package/dist/encoding/Toml.js.map +1 -1
  392. package/dist/encoding/Yaml.d.ts +8 -1
  393. package/dist/encoding/Yaml.d.ts.map +1 -1
  394. package/dist/encoding/Yaml.js +54 -18
  395. package/dist/encoding/Yaml.js.map +1 -1
  396. package/dist/encoding/index.d.ts +5 -0
  397. package/dist/encoding/index.d.ts.map +1 -1
  398. package/dist/encoding/index.js +5 -0
  399. package/dist/encoding/index.js.map +1 -1
  400. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  401. package/dist/eventlog/EventJournal.js +6 -3
  402. package/dist/eventlog/EventJournal.js.map +1 -1
  403. package/dist/eventlog/EventLog.d.ts +119 -4
  404. package/dist/eventlog/EventLog.d.ts.map +1 -1
  405. package/dist/eventlog/EventLog.js +200 -12
  406. package/dist/eventlog/EventLog.js.map +1 -1
  407. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  408. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  409. package/dist/eventlog/EventLogEncryption.js +83 -64
  410. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  411. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  412. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  413. package/dist/eventlog/EventLogMessage.js +217 -1
  414. package/dist/eventlog/EventLogMessage.js.map +1 -1
  415. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  416. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  417. package/dist/eventlog/EventLogRemote.js +186 -16
  418. package/dist/eventlog/EventLogRemote.js.map +1 -1
  419. package/dist/eventlog/EventLogServer.d.ts +3 -0
  420. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  421. package/dist/eventlog/EventLogServer.js +18 -10
  422. package/dist/eventlog/EventLogServer.js.map +1 -1
  423. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  424. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  425. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  426. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  427. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  428. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  429. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  430. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  431. package/dist/eventlog/EventRow.d.ts +4 -0
  432. package/dist/eventlog/EventRow.d.ts.map +1 -1
  433. package/dist/eventlog/EventRow.js +12 -2
  434. package/dist/eventlog/EventRow.js.map +1 -1
  435. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  436. package/dist/eventlog/SqlEventJournal.js +47 -27
  437. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  438. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  439. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  441. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  443. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  444. package/dist/eventlog/internal/batches.d.ts +12 -0
  445. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  446. package/dist/eventlog/internal/batches.js +26 -0
  447. package/dist/eventlog/internal/batches.js.map +1 -0
  448. package/dist/eventlog/internal/compaction.d.ts +38 -0
  449. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  450. package/dist/eventlog/internal/compaction.js +33 -0
  451. package/dist/eventlog/internal/compaction.js.map +1 -0
  452. package/dist/eventlog/internal/conflicts.d.ts +0 -1
  453. package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
  454. package/dist/eventlog/internal/conflicts.js +0 -3
  455. package/dist/eventlog/internal/conflicts.js.map +1 -1
  456. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  457. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  458. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  459. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  460. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  461. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  462. package/dist/http/Cookies.d.ts +172 -0
  463. package/dist/http/Cookies.d.ts.map +1 -1
  464. package/dist/http/Cookies.js +153 -10
  465. package/dist/http/Cookies.js.map +1 -1
  466. package/dist/http/FetchHttpClient.d.ts +26 -2
  467. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  468. package/dist/http/FetchHttpClient.js +78 -15
  469. package/dist/http/FetchHttpClient.js.map +1 -1
  470. package/dist/http/HttpClient.d.ts +502 -8
  471. package/dist/http/HttpClient.d.ts.map +1 -1
  472. package/dist/http/HttpClient.js +296 -12
  473. package/dist/http/HttpClient.js.map +1 -1
  474. package/dist/http/HttpClientError.d.ts +8 -1
  475. package/dist/http/HttpClientError.d.ts.map +1 -1
  476. package/dist/http/HttpClientError.js +37 -1
  477. package/dist/http/HttpClientError.js.map +1 -1
  478. package/dist/http/HttpClientRequest.d.ts +9 -5
  479. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  480. package/dist/http/HttpClientRequest.js +3 -4
  481. package/dist/http/HttpClientRequest.js.map +1 -1
  482. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  483. package/dist/http/HttpClientResponse.js +3 -2
  484. package/dist/http/HttpClientResponse.js.map +1 -1
  485. package/dist/http/HttpMethod.d.ts +7 -1
  486. package/dist/http/HttpMethod.d.ts.map +1 -1
  487. package/dist/http/HttpMethod.js +3 -8
  488. package/dist/http/HttpMethod.js.map +1 -1
  489. package/dist/http/HttpMiddleware.d.ts +1 -1
  490. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  491. package/dist/http/HttpMiddleware.js +14 -16
  492. package/dist/http/HttpMiddleware.js.map +1 -1
  493. package/dist/http/HttpRouter.d.ts.map +1 -1
  494. package/dist/http/HttpRouter.js +2 -1
  495. package/dist/http/HttpRouter.js.map +1 -1
  496. package/dist/http/HttpServerError.js +2 -2
  497. package/dist/http/HttpServerError.js.map +1 -1
  498. package/dist/http/HttpServerRequest.d.ts +11 -3
  499. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  500. package/dist/http/HttpServerRequest.js +77 -25
  501. package/dist/http/HttpServerRequest.js.map +1 -1
  502. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  503. package/dist/http/HttpServerResponse.js +3 -2
  504. package/dist/http/HttpServerResponse.js.map +1 -1
  505. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  506. package/dist/http/HttpStaticServer.js +48 -21
  507. package/dist/http/HttpStaticServer.js.map +1 -1
  508. package/dist/http/HttpTraceContext.d.ts +2 -1
  509. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  510. package/dist/http/HttpTraceContext.js +7 -5
  511. package/dist/http/HttpTraceContext.js.map +1 -1
  512. package/dist/http/MultipartParser/internal/contentType.js +3 -3
  513. package/dist/http/ProblemDetails.d.ts +96 -0
  514. package/dist/http/ProblemDetails.d.ts.map +1 -0
  515. package/dist/http/ProblemDetails.js +98 -0
  516. package/dist/http/ProblemDetails.js.map +1 -0
  517. package/dist/http/UrlParams.d.ts +3 -1
  518. package/dist/http/UrlParams.d.ts.map +1 -1
  519. package/dist/http/UrlParams.js +4 -2
  520. package/dist/http/UrlParams.js.map +1 -1
  521. package/dist/http/index.d.ts +5 -0
  522. package/dist/http/index.d.ts.map +1 -1
  523. package/dist/http/index.js +5 -0
  524. package/dist/http/index.js.map +1 -1
  525. package/dist/http/internal/compression.js +4 -5
  526. package/dist/http/internal/compression.js.map +1 -1
  527. package/dist/http/internal/decompression.js +6 -2
  528. package/dist/http/internal/decompression.js.map +1 -1
  529. package/dist/http/internal/httpBody.js +8 -1
  530. package/dist/http/internal/httpBody.js.map +1 -1
  531. package/dist/http/internal/urlParams.js +33 -0
  532. package/dist/http/internal/urlParams.js.map +1 -1
  533. package/dist/http-api/HttpApi.d.ts +3 -6
  534. package/dist/http-api/HttpApi.d.ts.map +1 -1
  535. package/dist/http-api/HttpApi.js +3 -6
  536. package/dist/http-api/HttpApi.js.map +1 -1
  537. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  538. package/dist/http-api/HttpApiBuilder.js +43 -13
  539. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  540. package/dist/http-api/HttpApiClient.d.ts +140 -7
  541. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  542. package/dist/http-api/HttpApiClient.js +193 -44
  543. package/dist/http-api/HttpApiClient.js.map +1 -1
  544. package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
  545. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  546. package/dist/http-api/HttpApiEndpoint.js +123 -32
  547. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  548. package/dist/http-api/HttpApiError.d.ts +185 -13
  549. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  550. package/dist/http-api/HttpApiError.js +128 -0
  551. package/dist/http-api/HttpApiError.js.map +1 -1
  552. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  553. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  554. package/dist/http-api/HttpApiMiddleware.js +85 -1
  555. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  556. package/dist/http-api/HttpApiSchema.d.ts +142 -33
  557. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  558. package/dist/http-api/HttpApiSchema.js +123 -59
  559. package/dist/http-api/HttpApiSchema.js.map +1 -1
  560. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiTest.js +3 -2
  562. package/dist/http-api/HttpApiTest.js.map +1 -1
  563. package/dist/http-api/OpenApi.d.ts.map +1 -1
  564. package/dist/http-api/OpenApi.js +25 -16
  565. package/dist/http-api/OpenApi.js.map +1 -1
  566. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  567. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  568. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  569. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  570. package/dist/index.d.ts +5 -5
  571. package/dist/index.d.ts.map +1 -1
  572. package/dist/index.js +5 -5
  573. package/dist/index.js.map +1 -1
  574. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  575. package/dist/internal/arbitrary/runner.js +120 -44
  576. package/dist/internal/arbitrary/runner.js.map +1 -1
  577. package/dist/internal/core.js +2 -0
  578. package/dist/internal/core.js.map +1 -1
  579. package/dist/internal/effect.js +46 -27
  580. package/dist/internal/effect.js.map +1 -1
  581. package/dist/internal/equal.js +14 -0
  582. package/dist/internal/equal.js.map +1 -1
  583. package/dist/internal/glob.d.ts +2 -0
  584. package/dist/internal/glob.d.ts.map +1 -0
  585. package/dist/internal/glob.js +630 -0
  586. package/dist/internal/glob.js.map +1 -0
  587. package/dist/internal/jsonSchema.d.ts +2 -0
  588. package/dist/internal/jsonSchema.d.ts.map +1 -0
  589. package/dist/internal/jsonSchema.js +28 -0
  590. package/dist/internal/jsonSchema.js.map +1 -0
  591. package/dist/internal/matcher.js +11 -1
  592. package/dist/internal/matcher.js.map +1 -1
  593. package/dist/internal/persistence.js +9 -0
  594. package/dist/internal/persistence.js.map +1 -1
  595. package/dist/internal/rcRef.js +4 -1
  596. package/dist/internal/rcRef.js.map +1 -1
  597. package/dist/internal/schema/compilerRegistry.js +4 -1
  598. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  599. package/dist/internal/schema/content.d.ts +2 -0
  600. package/dist/internal/schema/content.d.ts.map +1 -0
  601. package/dist/internal/schema/content.js +13 -0
  602. package/dist/internal/schema/content.js.map +1 -0
  603. package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
  604. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  605. package/dist/internal/schema/fromRepresentation.js +2 -1
  606. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  607. package/dist/internal/schema/standardSchema.js +8 -2
  608. package/dist/internal/schema/standardSchema.js.map +1 -1
  609. package/dist/internal/schema/toCodeDocument.js +9 -6
  610. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  611. package/dist/internal/schema/toCodec.js +21 -24
  612. package/dist/internal/schema/toCodec.js.map +1 -1
  613. package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
  614. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  615. package/dist/internal/schema/toRepresentation.js +107 -129
  616. package/dist/internal/schema/toRepresentation.js.map +1 -1
  617. package/dist/internal/sql.d.ts +2 -0
  618. package/dist/internal/sql.d.ts.map +1 -0
  619. package/dist/internal/sql.js +13 -0
  620. package/dist/internal/sql.js.map +1 -0
  621. package/dist/internal/trie.js +42 -13
  622. package/dist/internal/trie.js.map +1 -1
  623. package/dist/internal/ulid.js +41 -0
  624. package/dist/internal/ulid.js.map +1 -1
  625. package/dist/internal/uuid.js +52 -8
  626. package/dist/internal/uuid.js.map +1 -1
  627. package/dist/internal/version.js +1 -1
  628. package/dist/observability/Otlp.d.ts +15 -4
  629. package/dist/observability/Otlp.d.ts.map +1 -1
  630. package/dist/observability/Otlp.js +10 -0
  631. package/dist/observability/Otlp.js.map +1 -1
  632. package/dist/observability/OtlpProxy.d.ts +154 -0
  633. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  634. package/dist/observability/OtlpProxy.js +235 -0
  635. package/dist/observability/OtlpProxy.js.map +1 -0
  636. package/dist/observability/OtlpResource.d.ts +7 -0
  637. package/dist/observability/OtlpResource.d.ts.map +1 -1
  638. package/dist/observability/OtlpResource.js +11 -1
  639. package/dist/observability/OtlpResource.js.map +1 -1
  640. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  641. package/dist/observability/OtlpTracer.js +4 -0
  642. package/dist/observability/OtlpTracer.js.map +1 -1
  643. package/dist/observability/index.d.ts +5 -0
  644. package/dist/observability/index.d.ts.map +1 -1
  645. package/dist/observability/index.js +5 -0
  646. package/dist/observability/index.js.map +1 -1
  647. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  648. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  649. package/dist/persistence/CircuitBreaker.js +1165 -0
  650. package/dist/persistence/CircuitBreaker.js.map +1 -0
  651. package/dist/persistence/KeyValueStore.d.ts +47 -2
  652. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  653. package/dist/persistence/KeyValueStore.js +129 -18
  654. package/dist/persistence/KeyValueStore.js.map +1 -1
  655. package/dist/persistence/PersistedQueue.d.ts +9 -0
  656. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  657. package/dist/persistence/PersistedQueue.js +94 -52
  658. package/dist/persistence/PersistedQueue.js.map +1 -1
  659. package/dist/persistence/Persistence.d.ts +10 -4
  660. package/dist/persistence/Persistence.d.ts.map +1 -1
  661. package/dist/persistence/Persistence.js +18 -11
  662. package/dist/persistence/Persistence.js.map +1 -1
  663. package/dist/persistence/Redis.d.ts +78 -2
  664. package/dist/persistence/Redis.d.ts.map +1 -1
  665. package/dist/persistence/Redis.js +62 -7
  666. package/dist/persistence/Redis.js.map +1 -1
  667. package/dist/persistence/index.d.ts +5 -0
  668. package/dist/persistence/index.d.ts.map +1 -1
  669. package/dist/persistence/index.js +5 -0
  670. package/dist/persistence/index.js.map +1 -1
  671. package/dist/process/ChildProcess.d.ts +237 -71
  672. package/dist/process/ChildProcess.d.ts.map +1 -1
  673. package/dist/process/ChildProcess.js +56 -158
  674. package/dist/process/ChildProcess.js.map +1 -1
  675. package/dist/process/ChildProcessSpawner.d.ts +35 -0
  676. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  677. package/dist/process/ChildProcessSpawner.js +5 -2
  678. package/dist/process/ChildProcessSpawner.js.map +1 -1
  679. package/dist/process/CommandLine.d.ts +294 -0
  680. package/dist/process/CommandLine.d.ts.map +1 -0
  681. package/dist/process/CommandLine.js +481 -0
  682. package/dist/process/CommandLine.js.map +1 -0
  683. package/dist/process/index.d.ts +5 -0
  684. package/dist/process/index.d.ts.map +1 -1
  685. package/dist/process/index.js +5 -0
  686. package/dist/process/index.js.map +1 -1
  687. package/dist/reactivity/AsyncResult.d.ts +1 -1
  688. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  689. package/dist/reactivity/Atom.d.ts +2 -1
  690. package/dist/reactivity/Atom.d.ts.map +1 -1
  691. package/dist/reactivity/Atom.js +3 -4
  692. package/dist/reactivity/Atom.js.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js.map +1 -1
  694. package/dist/rpc/RpcClient.d.ts +16 -1
  695. package/dist/rpc/RpcClient.d.ts.map +1 -1
  696. package/dist/rpc/RpcClient.js +59 -24
  697. package/dist/rpc/RpcClient.js.map +1 -1
  698. package/dist/rpc/RpcMessage.d.ts +10 -1
  699. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  700. package/dist/rpc/RpcMessage.js +1 -0
  701. package/dist/rpc/RpcMessage.js.map +1 -1
  702. package/dist/rpc/RpcSerialization.d.ts +14 -0
  703. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  704. package/dist/rpc/RpcSerialization.js +26 -8
  705. package/dist/rpc/RpcSerialization.js.map +1 -1
  706. package/dist/rpc/RpcServer.d.ts +31 -0
  707. package/dist/rpc/RpcServer.d.ts.map +1 -1
  708. package/dist/rpc/RpcServer.js +139 -56
  709. package/dist/rpc/RpcServer.js.map +1 -1
  710. package/dist/rpc/RpcTest.d.ts +1 -0
  711. package/dist/rpc/RpcTest.d.ts.map +1 -1
  712. package/dist/rpc/RpcTest.js +1 -0
  713. package/dist/rpc/RpcTest.js.map +1 -1
  714. package/dist/schema/Model.d.ts +14 -0
  715. package/dist/schema/Model.d.ts.map +1 -1
  716. package/dist/schema/Model.js +18 -3
  717. package/dist/schema/Model.js.map +1 -1
  718. package/dist/sql/Migrator.d.ts +2 -20
  719. package/dist/sql/Migrator.d.ts.map +1 -1
  720. package/dist/sql/Migrator.js +13 -55
  721. package/dist/sql/Migrator.js.map +1 -1
  722. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  723. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  724. package/dist/sql/MigratorFileSystem.js +57 -0
  725. package/dist/sql/MigratorFileSystem.js.map +1 -0
  726. package/dist/sql/SqlClient.d.ts +9 -4
  727. package/dist/sql/SqlClient.d.ts.map +1 -1
  728. package/dist/sql/SqlClient.js +13 -10
  729. package/dist/sql/SqlClient.js.map +1 -1
  730. package/dist/sql/SqlResolver.d.ts +4 -0
  731. package/dist/sql/SqlResolver.d.ts.map +1 -1
  732. package/dist/sql/SqlResolver.js +18 -4
  733. package/dist/sql/SqlResolver.js.map +1 -1
  734. package/dist/sql/Statement.d.ts +27 -6
  735. package/dist/sql/Statement.d.ts.map +1 -1
  736. package/dist/sql/Statement.js +21 -15
  737. package/dist/sql/Statement.js.map +1 -1
  738. package/dist/sql/index.js +1 -1
  739. package/dist/testing/index.d.ts +0 -5
  740. package/dist/testing/index.d.ts.map +1 -1
  741. package/dist/testing/index.js +0 -5
  742. package/dist/testing/index.js.map +1 -1
  743. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  744. package/dist/workflow/DurableDeferred.js +21 -2
  745. package/dist/workflow/DurableDeferred.js.map +1 -1
  746. package/dist/workflow/internal/crypto.js +9 -8
  747. package/dist/workflow/internal/crypto.js.map +1 -1
  748. package/package.json +3 -1
  749. package/src/Arbitrary.ts +10 -2
  750. package/src/BigDecimal.ts +3 -0
  751. package/src/Channel.ts +64 -29
  752. package/src/Config.ts +7 -1
  753. package/src/Context.ts +34 -10
  754. package/src/Cron.ts +178 -29
  755. package/src/Data.ts +60 -265
  756. package/src/Duration.ts +140 -0
  757. package/src/Effect.ts +915 -86
  758. package/src/Equal.ts +8 -1
  759. package/src/Exit.ts +3 -3
  760. package/src/FileSystem.ts +65 -4
  761. package/src/Formatter.ts +28 -13
  762. package/src/Glob.ts +205 -0
  763. package/src/Hash.ts +4 -1
  764. package/src/JsonPatch.ts +4 -0
  765. package/src/JsonSchema.ts +12 -40
  766. package/src/Match.ts +127 -0
  767. package/src/Metric.ts +3 -3
  768. package/src/MutableList.ts +7 -5
  769. package/src/MutableRef.ts +8 -1
  770. package/src/PartitionedSemaphore.ts +24 -13
  771. package/src/Pool.ts +182 -52
  772. package/src/PubSub.ts +5 -6
  773. package/src/Random.ts +3 -3
  774. package/src/RcMap.ts +5 -1
  775. package/src/Ref.ts +8 -0
  776. package/src/Schedule.ts +27 -4
  777. package/src/Schema.ts +1237 -87
  778. package/src/SchemaAST.ts +20 -20
  779. package/src/SchemaGetter.ts +27 -11
  780. package/src/SchemaParser.ts +51 -18
  781. package/src/SchemaRepresentation.ts +50 -34
  782. package/src/SchemaTransformation.ts +17 -5
  783. package/src/ScopedCache.ts +5 -9
  784. package/src/Semaphore.ts +208 -40
  785. package/src/Sink.ts +15 -2
  786. package/src/Stream.ts +48 -22
  787. package/src/String.ts +3 -0
  788. package/src/Terminal.ts +19 -1
  789. package/src/Tracer.ts +15 -1
  790. package/src/ai/AiError.ts +56 -80
  791. package/src/ai/Decision.ts +257 -6
  792. package/src/ai/DecisionModel.ts +171 -28
  793. package/src/ai/LanguageModel.ts +9 -0
  794. package/src/ai/McpServer.ts +1283 -299
  795. package/src/ai/McpTest.ts +380 -0
  796. package/src/ai/Prompt.ts +65 -0
  797. package/src/ai/Response.ts +36 -31
  798. package/src/ai/Tool.ts +65 -10
  799. package/src/ai/Toolkit.ts +4 -1
  800. package/src/ai/index.ts +6 -0
  801. package/src/ai/internal/mcpCore.ts +78 -44
  802. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  803. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  804. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  805. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  806. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  807. package/src/ai/internal/mcpProtocol.ts +29 -0
  808. package/src/ai/internal/mcpRuntime.ts +9 -5
  809. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  810. package/src/cli/Argument.ts +21 -0
  811. package/src/cli/CliError.ts +90 -3
  812. package/src/cli/CliOutput.ts +300 -55
  813. package/src/cli/Command.ts +76 -41
  814. package/src/cli/Completions.ts +51 -0
  815. package/src/cli/Flag.ts +122 -0
  816. package/src/cli/GlobalFlag.ts +6 -7
  817. package/src/cli/HelpDoc.ts +18 -1
  818. package/src/cli/Param.ts +35 -6
  819. package/src/cli/Primitive.ts +16 -1
  820. package/src/cli/Prompt.ts +1 -0
  821. package/src/cli/TerminalCapabilities.ts +6 -3
  822. package/src/cli/internal/completions/bash.ts +79 -29
  823. package/src/cli/internal/help.ts +21 -9
  824. package/src/cluster/ClusterWorkflowEngine.ts +46 -16
  825. package/src/cluster/MessageStorage.ts +19 -14
  826. package/src/cluster/Sharding.ts +176 -47
  827. package/src/cluster/ShardingConfig.ts +43 -0
  828. package/src/cluster/SingleRunner.ts +3 -3
  829. package/src/cluster/Snowflake.ts +3 -7
  830. package/src/cluster/SqlMessageStorage.ts +49 -17
  831. package/src/cluster/SqlRunnerStorage.ts +143 -70
  832. package/src/cluster/internal/entityManager.ts +75 -22
  833. package/src/crypto/Aead.ts +517 -0
  834. package/src/crypto/Cipher.ts +326 -0
  835. package/src/crypto/CryptoError.ts +242 -0
  836. package/src/crypto/Digest.ts +167 -0
  837. package/src/crypto/Kdf.ts +315 -0
  838. package/src/crypto/KeyAgreement.ts +489 -0
  839. package/src/crypto/KeyFormat.ts +712 -0
  840. package/src/crypto/KeyWrap.ts +639 -0
  841. package/src/crypto/Mac.ts +386 -0
  842. package/src/crypto/SecureRandom.ts +459 -0
  843. package/src/crypto/Signature.ts +673 -0
  844. package/src/crypto/WebCrypto.ts +64 -0
  845. package/src/crypto/index.ts +78 -0
  846. package/src/crypto/internal/asymmetric.ts +329 -0
  847. package/src/crypto/internal/chacha.ts +1088 -0
  848. package/src/crypto/internal/der.ts +110 -0
  849. package/src/crypto/internal/digest.ts +16 -0
  850. package/src/crypto/internal/key.ts +235 -0
  851. package/src/crypto/internal/md5.ts +170 -0
  852. package/src/crypto/internal/webCrypto.ts +150 -0
  853. package/src/devtools/DevToolsClient.ts +2 -0
  854. package/src/encoding/Base64.ts +38 -0
  855. package/src/encoding/Base64Url.ts +5 -2
  856. package/src/encoding/Csv.ts +1298 -0
  857. package/src/encoding/Hex.ts +3 -2
  858. package/src/encoding/SchemaBinary.ts +40 -4
  859. package/src/encoding/Sse.ts +4 -3
  860. package/src/encoding/Toml.ts +117 -35
  861. package/src/encoding/Yaml.ts +61 -18
  862. package/src/encoding/index.ts +6 -0
  863. package/src/eventlog/EventJournal.ts +4 -3
  864. package/src/eventlog/EventLog.ts +340 -15
  865. package/src/eventlog/EventLogEncryption.ts +118 -110
  866. package/src/eventlog/EventLogMessage.ts +273 -1
  867. package/src/eventlog/EventLogRemote.ts +367 -23
  868. package/src/eventlog/EventLogServer.ts +23 -8
  869. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  870. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  871. package/src/eventlog/EventRow.ts +12 -3
  872. package/src/eventlog/SqlEventJournal.ts +68 -45
  873. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  874. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  875. package/src/eventlog/internal/batches.ts +30 -0
  876. package/src/eventlog/internal/compaction.ts +64 -0
  877. package/src/eventlog/internal/conflicts.ts +0 -4
  878. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  879. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  880. package/src/http/Cookies.ts +291 -12
  881. package/src/http/FetchHttpClient.ts +88 -16
  882. package/src/http/HttpClient.ts +636 -29
  883. package/src/http/HttpClientError.ts +35 -1
  884. package/src/http/HttpClientRequest.ts +21 -10
  885. package/src/http/HttpClientResponse.ts +3 -2
  886. package/src/http/HttpMethod.ts +10 -2
  887. package/src/http/HttpMiddleware.ts +15 -18
  888. package/src/http/HttpRouter.ts +2 -1
  889. package/src/http/HttpServerError.ts +2 -2
  890. package/src/http/HttpServerRequest.ts +101 -30
  891. package/src/http/HttpServerResponse.ts +3 -2
  892. package/src/http/HttpStaticServer.ts +51 -22
  893. package/src/http/HttpTraceContext.ts +7 -4
  894. package/src/http/MultipartParser/internal/contentType.ts +3 -3
  895. package/src/http/ProblemDetails.ts +149 -0
  896. package/src/http/UrlParams.ts +6 -1
  897. package/src/http/index.ts +6 -0
  898. package/src/http/internal/compression.ts +4 -5
  899. package/src/http/internal/decompression.ts +10 -4
  900. package/src/http/internal/httpBody.ts +10 -2
  901. package/src/http/internal/urlParams.ts +37 -0
  902. package/src/http-api/HttpApi.ts +3 -6
  903. package/src/http-api/HttpApiBuilder.ts +61 -19
  904. package/src/http-api/HttpApiClient.ts +284 -72
  905. package/src/http-api/HttpApiEndpoint.ts +135 -35
  906. package/src/http-api/HttpApiError.ts +250 -0
  907. package/src/http-api/HttpApiMiddleware.ts +95 -1
  908. package/src/http-api/HttpApiSchema.ts +236 -52
  909. package/src/http-api/HttpApiTest.ts +3 -2
  910. package/src/http-api/OpenApi.ts +20 -17
  911. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  912. package/src/index.ts +6 -6
  913. package/src/internal/arbitrary/runner.ts +133 -36
  914. package/src/internal/core.ts +2 -0
  915. package/src/internal/effect.ts +58 -34
  916. package/src/internal/equal.ts +17 -0
  917. package/src/internal/glob.ts +736 -0
  918. package/src/internal/jsonSchema.ts +27 -0
  919. package/src/internal/matcher.ts +18 -1
  920. package/src/internal/persistence.ts +11 -0
  921. package/src/internal/rcRef.ts +4 -1
  922. package/src/internal/schema/compilerRegistry.ts +6 -1
  923. package/src/internal/schema/content.ts +18 -0
  924. package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
  925. package/src/internal/schema/fromRepresentation.ts +2 -1
  926. package/src/internal/schema/standardSchema.ts +2 -2
  927. package/src/internal/schema/toCodeDocument.ts +11 -7
  928. package/src/internal/schema/toCodec.ts +26 -22
  929. package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
  930. package/src/internal/schema/toRepresentation.ts +122 -140
  931. package/src/internal/sql.ts +14 -0
  932. package/src/internal/trie.ts +43 -14
  933. package/src/internal/ulid.ts +44 -0
  934. package/src/internal/uuid.ts +57 -16
  935. package/src/internal/version.ts +1 -1
  936. package/src/observability/Otlp.ts +21 -4
  937. package/src/observability/OtlpProxy.ts +314 -0
  938. package/src/observability/OtlpResource.ts +9 -1
  939. package/src/observability/OtlpTracer.ts +4 -0
  940. package/src/observability/index.ts +6 -0
  941. package/src/persistence/CircuitBreaker.ts +1678 -0
  942. package/src/persistence/KeyValueStore.ts +219 -22
  943. package/src/persistence/PersistedQueue.ts +128 -59
  944. package/src/persistence/Persistence.ts +20 -13
  945. package/src/persistence/Redis.ts +129 -8
  946. package/src/persistence/index.ts +6 -0
  947. package/src/process/ChildProcess.ts +285 -264
  948. package/src/process/ChildProcessSpawner.ts +46 -2
  949. package/src/process/CommandLine.ts +630 -0
  950. package/src/process/index.ts +6 -0
  951. package/src/reactivity/AsyncResult.ts +1 -1
  952. package/src/reactivity/Atom.ts +5 -5
  953. package/src/reactivity/AtomRegistry.ts +1 -1
  954. package/src/rpc/RpcClient.ts +75 -36
  955. package/src/rpc/RpcMessage.ts +10 -1
  956. package/src/rpc/RpcSerialization.ts +35 -9
  957. package/src/rpc/RpcServer.ts +176 -63
  958. package/src/rpc/RpcTest.ts +3 -0
  959. package/src/schema/Model.ts +26 -3
  960. package/src/sql/Migrator.ts +15 -69
  961. package/src/sql/MigratorFileSystem.ts +71 -0
  962. package/src/sql/SqlClient.ts +13 -20
  963. package/src/sql/SqlResolver.ts +23 -9
  964. package/src/sql/Statement.ts +38 -9
  965. package/src/sql/index.ts +1 -1
  966. package/src/testing/index.ts +0 -6
  967. package/src/workflow/DurableDeferred.ts +23 -6
  968. package/src/workflow/internal/crypto.ts +15 -11
  969. package/dist/Crypto.d.ts +0 -244
  970. package/dist/Crypto.d.ts.map +0 -1
  971. package/dist/Crypto.js +0 -139
  972. package/dist/Crypto.js.map +0 -1
  973. package/dist/testing/TestCrypto.d.ts +0 -73
  974. package/dist/testing/TestCrypto.d.ts.map +0 -1
  975. package/dist/testing/TestCrypto.js +0 -87
  976. package/dist/testing/TestCrypto.js.map +0 -1
  977. package/src/Crypto.ts +0 -347
  978. package/src/testing/TestCrypto.ts +0 -94
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"
@@ -3983,11 +3991,18 @@ export interface $Record<Key extends Record.Key, Value extends Constraint> exten
3983
3991
  *
3984
3992
  * **Gotchas**
3985
3993
  *
3994
+ * Dynamic records reject value schemas wrapped with {@link optionalKey} or
3995
+ * {@link optional}. Index signatures already allow keys to be absent; use
3996
+ * {@link UndefinedOr} when existing entries may contain `undefined`. Optional
3997
+ * value schemas remain valid for finite literal keys, which become declared
3998
+ * properties.
3999
+ *
3986
4000
  * When decoded or encoded key transformations produce the same property key,
3987
4001
  * sequential parsing applies selected own properties in selection order, so
3988
4002
  * the later selected property overwrites the earlier value. Dynamic key
3989
- * selection always examines own properties. Finite literal keys are declared
3990
- * fields and may therefore be inherited. Output key order is not guaranteed.
4003
+ * selection always examines own properties. Finite literal and enum keys are
4004
+ * declared fields and may therefore be inherited. Output key order is not
4005
+ * guaranteed.
3991
4006
  *
3992
4007
  * **Example** (Defining a string-keyed record of numbers)
3993
4008
  *
@@ -6322,9 +6337,35 @@ type Flatten<Schemas> = Schemas extends readonly [infer Head, ...infer Tail]
6322
6337
  type MatchCasesResult<Cases> = {
6323
6338
  [K in keyof Cases]-?: NonNullable<Cases[K]> extends (...args: Array<any>) => infer R ? R : never
6324
6339
  }[keyof Cases]
6325
- type MatchOrElseResult<Cases, OrElse extends (...args: Array<any>) => any> = Unify<
6326
- MatchCasesResult<Cases> | ReturnType<OrElse>
6340
+ type MatchOrElseResult<Cases, OrElse> = Unify<
6341
+ MatchCasesResult<Cases> | (OrElse extends (...args: Array<any>) => infer R ? R : never)
6327
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
+ }
6328
6369
  type TaggedUnionUtils<
6329
6370
  Tag extends PropertyKey,
6330
6371
  Members extends ReadonlyArray<Constraint & { readonly Type: { readonly [K in Tag]: PropertyKey } }>,
@@ -6345,46 +6386,15 @@ type TaggedUnionUtils<
6345
6386
  keys: ReadonlyArray<Keys>
6346
6387
  ) => (value: Members[number]["Type"]) => value is Extract<Members[number]["Type"], { readonly [K in Tag]: Keys }>
6347
6388
  readonly guards: { [M in Flattened[number] as M["Type"][Tag]]: (u: unknown) => u is M["Type"] }
6348
- readonly match: {
6349
- <
6350
- Cases extends { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => any }
6351
- >(
6352
- value: Members[number]["Type"],
6353
- cases: Cases
6354
- ): Cases[keyof Cases] extends (value: any) => infer R ? Unify<R>
6355
- : never
6356
- <
6357
- Cases extends { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => any }
6358
- >(
6359
- cases: Cases
6360
- ): (value: Members[number]["Type"]) => Cases[keyof Cases] extends (value: any) => infer R ? Unify<R>
6361
- : never
6362
- }
6363
- readonly matchOrElse: {
6364
- <
6365
- Cases extends
6366
- & { [M in Flattened[number] as M["Type"][Tag]]+?: (value: M["Type"]) => any }
6367
- & { [K in Exclude<keyof Cases, Flattened[number]["Type"][Tag]>]: never },
6368
- OrElse extends (
6369
- value: Exclude<Members[number]["Type"], { readonly [K in Tag]: keyof Cases }>
6370
- ) => any
6371
- >(
6372
- value: Members[number]["Type"],
6373
- cases: Cases,
6374
- orElse: OrElse
6375
- ): MatchOrElseResult<Cases, OrElse>
6376
- <
6377
- Cases extends
6378
- & { [M in Flattened[number] as M["Type"][Tag]]+?: (value: M["Type"]) => any }
6379
- & { [K in Exclude<keyof Cases, Flattened[number]["Type"][Tag]>]: never },
6380
- OrElse extends (
6381
- value: Exclude<Members[number]["Type"], { readonly [K in Tag]: keyof Cases }>
6382
- ) => any
6383
- >(
6384
- cases: Cases,
6385
- orElse: OrElse
6386
- ): (value: Members[number]["Type"]) => MatchOrElseResult<Cases, OrElse>
6387
- }
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
+ >
6388
6398
  }
6389
6399
  /**
6390
6400
  * Type-level representation returned by {@link toTaggedUnion}.
@@ -6534,26 +6544,8 @@ export interface TaggedUnion<Cases extends Record<string, Constraint>> extends
6534
6544
  keys: ReadonlyArray<Keys>
6535
6545
  ) => (value: Cases[keyof Cases]["Type"]) => value is Extract<Cases[keyof Cases]["Type"], { _tag: Keys }>
6536
6546
  readonly guards: { [K in keyof Cases]: (u: unknown) => u is Cases[K]["Type"] }
6537
- readonly match: {
6538
- <Output>(
6539
- cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
6540
- ): (value: Cases[keyof Cases]["Type"]) => Output
6541
- <Output>(
6542
- value: Cases[keyof Cases]["Type"],
6543
- cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
6544
- ): Output
6545
- }
6546
- readonly matchOrElse: {
6547
- <Output>(
6548
- value: Cases[keyof Cases]["Type"],
6549
- cases: { [K in keyof Cases]?: (value: Cases[K]["Type"]) => Output },
6550
- orElse: (value: Cases[keyof Cases]["Type"]) => Output
6551
- ): Output
6552
- <Output>(
6553
- cases: { [K in keyof Cases]?: (value: Cases[K]["Type"]) => Output },
6554
- orElse: (value: Cases[keyof Cases]["Type"]) => Output
6555
- ): (value: Cases[keyof Cases]["Type"]) => Output
6556
- }
6547
+ readonly match: TaggedUnionMatch<Cases, Cases[keyof Cases]["Type"]>
6548
+ readonly matchOrElse: TaggedUnionMatchOrElse<Cases, Cases[keyof Cases]["Type"], "_tag">
6557
6549
  }
6558
6550
  /**
6559
6551
  * Builds a discriminated union from a record of field sets, one per variant.
@@ -6737,9 +6729,8 @@ export function link<T>() {
6737
6729
  * )
6738
6730
  *
6739
6731
  * const result = Schema.decodeUnknownResult(schema)({ password: "123456", confirmPassword: "1234567" })
6740
- * if (Result.isFailure(result) && result.failure.issue._tag === "Filter" && result.failure.issue.issue._tag === "Pointer") {
6741
- * result.failure.issue.issue.path // => ["password"]
6742
- * }
6732
+ * const message = Result.isFailure(result) ? result.failure.message : ""
6733
+ * message // => "password and confirmPassword must match\n at [\"password\"]"
6743
6734
  * ```
6744
6735
  *
6745
6736
  * **Example** (Reporting multiple failures at once)
@@ -6759,9 +6750,8 @@ export function link<T>() {
6759
6750
  * )
6760
6751
  *
6761
6752
  * const result = Schema.decodeUnknownResult(schema)({ a: 1, b: 0, c: 0 })
6762
- * if (Result.isFailure(result) && result.failure.issue._tag === "Filter" && result.failure.issue.issue._tag === "Composite") {
6763
- * result.failure.issue.issue.issues.map((issue) => issue._tag === "Pointer" ? issue.path : []) // => [["b"], ["c"]]
6764
- * }
6753
+ * const message = Result.isFailure(result) ? result.failure.message : ""
6754
+ * message // => "b must be greater than 0\n at [\"b\"]\nc must be greater than 0\n at [\"c\"]"
6765
6755
  * ```
6766
6756
  *
6767
6757
  * @stability stable
@@ -6904,8 +6894,8 @@ export function isPattern(
6904
6894
  const flags = regExp.flags
6905
6895
  const canExport = /^[dg]*uy?$/.test(flags)
6906
6896
  const runtimeRegExp = flags === ""
6907
- ? `new RegExp(${format(source)})`
6908
- : `new RegExp(${format(source)}, ${format(flags)})`
6897
+ ? `new globalThis.RegExp(${format(source)})`
6898
+ : `new globalThis.RegExp(${format(source)}, ${format(flags)})`
6909
6899
  return SchemaAST.isPattern(regExp, {
6910
6900
  toJsonSchema: () => canExport ? { pattern: flags.endsWith("y") ? `^(?:${source})` : source } : [{}, true],
6911
6901
  toCode: () => ({ runtime: `Schema.isPattern(${runtimeRegExp})` }),
@@ -7037,7 +7027,7 @@ export function isUUID(version?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8, annotations?: An
7037
7027
  )
7038
7028
  }
7039
7029
 
7040
- const GUID_REGEXP = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/
7030
+ const GUID_REGEXP = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/u
7041
7031
  /**
7042
7032
  * Validates that a string has the GUID / UUID textual shape.
7043
7033
  *
@@ -7072,18 +7062,22 @@ export function isGUID(annotations?: Annotations.Filter) {
7072
7062
  id: "effect/schema/isGUID",
7073
7063
  payload: null
7074
7064
  },
7075
- toJsonSchema: () => ({ pattern: GUID_REGEXP.source }),
7076
7065
  toCode: () => ({ runtime: "Schema.isGUID()" }),
7077
7066
  ...annotations
7078
7067
  }
7079
7068
  )
7080
7069
  }
7070
+
7071
+ const ULID_REGEXP = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/u
7081
7072
  /**
7082
7073
  * Validates that a string is a valid ULID (Universally Unique Lexicographically
7083
7074
  * Sortable Identifier).
7084
7075
  *
7085
7076
  * **Details**
7086
7077
  *
7078
+ * Accepts uppercase and lowercase characters. The first character must be
7079
+ * between `0` and `7` so the value fits in 128 bits.
7080
+ *
7087
7081
  * JSON Schema:
7088
7082
  *
7089
7083
  * This check corresponds to a `pattern` constraint in JSON Schema that matches
@@ -7099,20 +7093,63 @@ export function isGUID(annotations?: Annotations.Filter) {
7099
7093
  * @since 4.0.0
7100
7094
  */
7101
7095
  export function isULID(annotations?: Annotations.Filter) {
7102
- const regExp = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/
7103
7096
  return isPattern(
7104
- regExp,
7097
+ ULID_REGEXP,
7105
7098
  {
7106
7099
  representation: {
7107
7100
  id: "effect/schema/isULID",
7108
7101
  payload: null
7109
7102
  },
7110
- toJsonSchema: () => ({ pattern: regExp.source }),
7111
7103
  toCode: () => ({ runtime: "Schema.isULID()" }),
7112
7104
  ...annotations
7113
7105
  }
7114
7106
  )
7115
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
+ }
7116
7153
  /**
7117
7154
  * Validates that a string is valid Base64 encoded data.
7118
7155
  *
@@ -7392,16 +7429,18 @@ const CAPITALIZED_PATTERN = "^(?:[^a-z][\\s\\S]*)?$"
7392
7429
  * @since 4.0.0
7393
7430
  */
7394
7431
  export function isCapitalized(annotations?: Annotations.Filter) {
7395
- const regExp = new globalThis.RegExp(CAPITALIZED_PATTERN)
7396
7432
  return makeFilter(
7397
- (s: string) => s.charAt(0).toUpperCase() === s.charAt(0),
7433
+ (s: string) => {
7434
+ const [first = ""] = s
7435
+ return first.toUpperCase() === first
7436
+ },
7398
7437
  {
7399
7438
  expected: "a string with the first character in uppercase",
7400
7439
  representation: {
7401
7440
  id: "effect/schema/isCapitalized",
7402
7441
  payload: null
7403
7442
  },
7404
- toJsonSchema: () => [{ pattern: regExp.source }, true],
7443
+ toJsonSchema: () => [{ pattern: CAPITALIZED_PATTERN }, true],
7405
7444
  toCode: () => ({ runtime: "Schema.isCapitalized()" }),
7406
7445
  arbitraryConstraint: {
7407
7446
  patterns: [{ source: CAPITALIZED_PATTERN, flags: "" }]
@@ -7426,16 +7465,18 @@ const UNCAPITALIZED_PATTERN = "^(?:[^A-Z][\\s\\S]*)?$"
7426
7465
  * @since 4.0.0
7427
7466
  */
7428
7467
  export function isUncapitalized(annotations?: Annotations.Filter) {
7429
- const regExp = new globalThis.RegExp(UNCAPITALIZED_PATTERN)
7430
7468
  return makeFilter(
7431
- (s: string) => s.charAt(0).toLowerCase() === s.charAt(0),
7469
+ (s: string) => {
7470
+ const [first = ""] = s
7471
+ return first.toLowerCase() === first
7472
+ },
7432
7473
  {
7433
7474
  expected: "a string with the first character in lowercase",
7434
7475
  representation: {
7435
7476
  id: "effect/schema/isUncapitalized",
7436
7477
  payload: null
7437
7478
  },
7438
- toJsonSchema: () => [{ pattern: regExp.source }, true],
7479
+ toJsonSchema: () => [{ pattern: UNCAPITALIZED_PATTERN }, true],
7439
7480
  toCode: () => ({ runtime: "Schema.isUncapitalized()" }),
7440
7481
  arbitraryConstraint: {
7441
7482
  patterns: [{ source: UNCAPITALIZED_PATTERN, flags: "" }]
@@ -8064,7 +8105,7 @@ function encodeDatePayload(date: globalThis.Date): string {
8064
8105
  }
8065
8106
 
8066
8107
  function formatDateRuntime(date: globalThis.Date): string {
8067
- return `new Date(${format(date.getTime())})`
8108
+ return `new globalThis.Date(${format(date.getTime())})`
8068
8109
  }
8069
8110
  /**
8070
8111
  * Validates that a Date is greater than the specified value (exclusive).
@@ -9799,8 +9840,7 @@ export interface fromJsonString<S extends Constraint> extends decodeTo<S, String
9799
9840
  }
9800
9841
 
9801
9842
  const JsonString = String.annotate({
9802
- expected: "a string that will be decoded as JSON",
9803
- contentMediaType: "application/json"
9843
+ expected: "a string that will be decoded as JSON"
9804
9844
  })
9805
9845
  /**
9806
9846
  * Returns a schema that decodes a JSON string and then decodes the parsed value
@@ -13701,6 +13741,33 @@ const durationFromMillis: SchemaTransformation.Transformation<Duration_.Duration
13701
13741
  decode: (i) => Duration_.millis(i),
13702
13742
  encode: (a) => Duration_.toMillis(a)
13703
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
+ })
13704
13771
  /**
13705
13772
  * Type-level representation of {@link Duration}.
13706
13773
  *
@@ -13876,6 +13943,42 @@ export interface DurationFromMillis extends decodeTo<Duration, Number> {
13876
13943
  export const DurationFromMillis: DurationFromMillis = Number.pipe(
13877
13944
  decodeTo(Duration, durationFromMillis)
13878
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
+ )
13879
13982
 
13880
13983
  // -----------------------------------------------------------------------------
13881
13984
  // DNS schemas
@@ -14297,6 +14400,1040 @@ export const DnsRecord: DnsRecord = Union([
14297
14400
  DnsTxtRecord
14298
14401
  ]).annotate({ identifier: "DnsRecord" })
14299
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
+
14300
15437
  // -----------------------------------------------------------------------------
14301
15438
  // Exit schemas
14302
15439
  // -----------------------------------------------------------------------------
@@ -16268,7 +17405,12 @@ function makeClass<
16268
17405
  return getClassSchema(this).rebuild(ast)
16269
17406
  }
16270
17407
  static make(input: S["~type.make.in"], options?: MakeOptions): Self {
16271
- return SchemaParser.make(getClassSchema(this) as any)(input ?? {}, options) as Self
17408
+ return SchemaParser.makeClassSync(
17409
+ SchemaAST.toType(getClassSchema(this).ast),
17410
+ input ?? {},
17411
+ options,
17412
+ (fields) => makeClassTrusted(this, fields)
17413
+ )
16272
17414
  }
16273
17415
  static makeOption(input: S["~type.make.in"], options?: MakeOptions): Option_.Option<Self> {
16274
17416
  return SchemaParser.makeOption(getClassSchema(this) as any)(input ?? {}, options) as any
@@ -16417,6 +17559,10 @@ function isStruct(schema: Struct.Fields | Struct<Struct.Fields>): schema is Stru
16417
17559
  *
16418
17560
  * **Gotchas**
16419
17561
  *
17562
+ * To subclass a `Schema.Class`, use `Base.extend<Self>(...)`, even when only
17563
+ * adding methods or getters. Pass `{}` for the fields when none are added.
17564
+ * Plain `class Child extends Base` is unsupported.
17565
+ *
16420
17566
  * Passing `disableChecks: true` skips filters and checks, not parsing of types
16421
17567
  * and structure. Wrong types and shapes are still rejected, and constructor
16422
17568
  * defaults still apply.
@@ -16490,6 +17636,10 @@ export const Class: {
16490
17636
  *
16491
17637
  * **Gotchas**
16492
17638
  *
17639
+ * To subclass a `Schema.Class`, use `Base.extend<Self>(...)`, even when only
17640
+ * adding methods or getters. Pass `{}` for the fields when none are added.
17641
+ * Plain `class Child extends Base` is unsupported.
17642
+ *
16493
17643
  * Passing `disableChecks: true` skips filters and checks, not parsing of types
16494
17644
  * and structure. Wrong types and shapes are still rejected, and constructor
16495
17645
  * defaults still apply.