effect 4.1.0 → 4.1.2

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 (445) hide show
  1. package/README.md +30 -0
  2. package/THIRD_PARTY_NOTICES.md +62 -0
  3. package/ai-docs/package.json +2 -2
  4. package/dist/BigDecimal.d.ts +139 -7
  5. package/dist/BigDecimal.d.ts.map +1 -1
  6. package/dist/BigDecimal.js +83 -14
  7. package/dist/BigDecimal.js.map +1 -1
  8. package/dist/ByteSize.d.ts.map +1 -1
  9. package/dist/ByteSize.js +27 -14
  10. package/dist/ByteSize.js.map +1 -1
  11. package/dist/Equal.d.ts +2 -2
  12. package/dist/Equal.d.ts.map +1 -1
  13. package/dist/Equal.js +3 -3
  14. package/dist/Equal.js.map +1 -1
  15. package/dist/Hash.d.ts +3 -2
  16. package/dist/Hash.d.ts.map +1 -1
  17. package/dist/Hash.js +5 -4
  18. package/dist/Hash.js.map +1 -1
  19. package/dist/Iterable.d.ts.map +1 -1
  20. package/dist/Iterable.js +38 -32
  21. package/dist/Iterable.js.map +1 -1
  22. package/dist/JsonSchema.d.ts.map +1 -1
  23. package/dist/JsonSchema.js +27 -6
  24. package/dist/JsonSchema.js.map +1 -1
  25. package/dist/MutableRef.d.ts.map +1 -1
  26. package/dist/MutableRef.js +0 -7
  27. package/dist/MutableRef.js.map +1 -1
  28. package/dist/Path.d.ts.map +1 -1
  29. package/dist/Path.js +5 -1
  30. package/dist/Path.js.map +1 -1
  31. package/dist/Pool.d.ts.map +1 -1
  32. package/dist/Pool.js +2 -1
  33. package/dist/Pool.js.map +1 -1
  34. package/dist/Ref.d.ts.map +1 -1
  35. package/dist/Ref.js +0 -8
  36. package/dist/Ref.js.map +1 -1
  37. package/dist/Schedule.d.ts.map +1 -1
  38. package/dist/Schedule.js +8 -3
  39. package/dist/Schedule.js.map +1 -1
  40. package/dist/Schema.d.ts +2 -1
  41. package/dist/Schema.d.ts.map +1 -1
  42. package/dist/Schema.js +2 -1
  43. package/dist/Schema.js.map +1 -1
  44. package/dist/SchemaRepresentation.d.ts +4 -2
  45. package/dist/SchemaRepresentation.d.ts.map +1 -1
  46. package/dist/SchemaRepresentation.js +4 -2
  47. package/dist/SchemaRepresentation.js.map +1 -1
  48. package/dist/SchemaTransformation.d.ts +2 -2
  49. package/dist/SchemaTransformation.js +2 -2
  50. package/dist/Stream.d.ts.map +1 -1
  51. package/dist/Stream.js +6 -5
  52. package/dist/Stream.js.map +1 -1
  53. package/dist/ai/McpClient.d.ts +171 -19
  54. package/dist/ai/McpClient.d.ts.map +1 -1
  55. package/dist/ai/McpClient.js +277 -66
  56. package/dist/ai/McpClient.js.map +1 -1
  57. package/dist/ai/McpSchema.d.ts +108 -0
  58. package/dist/ai/McpSchema.d.ts.map +1 -1
  59. package/dist/ai/McpSchema.js +99 -0
  60. package/dist/ai/McpSchema.js.map +1 -1
  61. package/dist/ai/McpServer.d.ts +120 -6
  62. package/dist/ai/McpServer.d.ts.map +1 -1
  63. package/dist/ai/McpServer.js +258 -49
  64. package/dist/ai/McpServer.js.map +1 -1
  65. package/dist/ai/Prompt.d.ts.map +1 -1
  66. package/dist/ai/Prompt.js +20 -11
  67. package/dist/ai/Prompt.js.map +1 -1
  68. package/dist/ai/Tool.d.ts.map +1 -1
  69. package/dist/ai/Tool.js +5 -7
  70. package/dist/ai/Tool.js.map +1 -1
  71. package/dist/ai/internal/mcpCore.js +72 -3
  72. package/dist/ai/internal/mcpCore.js.map +1 -1
  73. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +3 -1
  74. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  75. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +3 -1
  76. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  77. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +3 -1
  78. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  79. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +3 -1
  80. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  81. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +44 -8
  82. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  83. package/dist/ai/internal/mcpProtocol.js +12 -0
  84. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  85. package/dist/ai/internal/mcpRuntime.js +3 -3
  86. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  87. package/dist/ai/internal/mcpSkills.d.ts +2 -0
  88. package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
  89. package/dist/ai/internal/mcpSkills.js +428 -0
  90. package/dist/ai/internal/mcpSkills.js.map +1 -0
  91. package/dist/ai/internal/structured-output.js +11 -2
  92. package/dist/ai/internal/structured-output.js.map +1 -1
  93. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  94. package/dist/cluster/ClusterWorkflowEngine.js +30 -11
  95. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  96. package/dist/cluster/Entity.d.ts +26 -0
  97. package/dist/cluster/Entity.d.ts.map +1 -1
  98. package/dist/cluster/Entity.js.map +1 -1
  99. package/dist/cluster/MessageStorage.d.ts +6 -6
  100. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  101. package/dist/cluster/MessageStorage.js +1 -3
  102. package/dist/cluster/MessageStorage.js.map +1 -1
  103. package/dist/cluster/Reply.d.ts +1 -1
  104. package/dist/cluster/Reply.d.ts.map +1 -1
  105. package/dist/cluster/Reply.js.map +1 -1
  106. package/dist/cluster/Runners.d.ts.map +1 -1
  107. package/dist/cluster/Runners.js +13 -2
  108. package/dist/cluster/Runners.js.map +1 -1
  109. package/dist/cluster/Sharding.d.ts +13 -0
  110. package/dist/cluster/Sharding.d.ts.map +1 -1
  111. package/dist/cluster/Sharding.js +4 -1
  112. package/dist/cluster/Sharding.js.map +1 -1
  113. package/dist/cluster/internal/clusterAbandon.d.ts.map +1 -1
  114. package/dist/cluster/internal/clusterAbandon.js +6 -4
  115. package/dist/cluster/internal/clusterAbandon.js.map +1 -1
  116. package/dist/cluster/internal/entityManager.js +63 -11
  117. package/dist/cluster/internal/entityManager.js.map +1 -1
  118. package/dist/cluster/internal/transactionNotifications.d.ts +5 -0
  119. package/dist/cluster/internal/transactionNotifications.d.ts.map +1 -0
  120. package/dist/cluster/internal/transactionNotifications.js +5 -0
  121. package/dist/cluster/internal/transactionNotifications.js.map +1 -0
  122. package/dist/crypto/Aead.d.ts +2 -1
  123. package/dist/crypto/Aead.d.ts.map +1 -1
  124. package/dist/crypto/Aead.js +2 -2
  125. package/dist/crypto/Aead.js.map +1 -1
  126. package/dist/crypto/Cipher.d.ts +2 -1
  127. package/dist/crypto/Cipher.d.ts.map +1 -1
  128. package/dist/crypto/Cipher.js +2 -2
  129. package/dist/crypto/Cipher.js.map +1 -1
  130. package/dist/crypto/KeyAgreement.d.ts +3 -2
  131. package/dist/crypto/KeyAgreement.d.ts.map +1 -1
  132. package/dist/crypto/KeyAgreement.js +2 -2
  133. package/dist/crypto/KeyAgreement.js.map +1 -1
  134. package/dist/crypto/KeyFormat.d.ts +33 -1
  135. package/dist/crypto/KeyFormat.d.ts.map +1 -1
  136. package/dist/crypto/KeyFormat.js.map +1 -1
  137. package/dist/crypto/KeyWrap.d.ts +4 -3
  138. package/dist/crypto/KeyWrap.d.ts.map +1 -1
  139. package/dist/crypto/KeyWrap.js +2 -2
  140. package/dist/crypto/KeyWrap.js.map +1 -1
  141. package/dist/crypto/Mac.d.ts +2 -1
  142. package/dist/crypto/Mac.d.ts.map +1 -1
  143. package/dist/crypto/Mac.js +2 -2
  144. package/dist/crypto/Mac.js.map +1 -1
  145. package/dist/crypto/Signature.d.ts +3 -2
  146. package/dist/crypto/Signature.d.ts.map +1 -1
  147. package/dist/crypto/Signature.js +2 -2
  148. package/dist/crypto/Signature.js.map +1 -1
  149. package/dist/crypto/WebCrypto.d.ts +19 -0
  150. package/dist/crypto/WebCrypto.d.ts.map +1 -1
  151. package/dist/crypto/WebCrypto.js.map +1 -1
  152. package/dist/crypto/internal/asymmetric.js.map +1 -1
  153. package/dist/crypto/internal/key.js +3 -2
  154. package/dist/crypto/internal/key.js.map +1 -1
  155. package/dist/encoding/Base64Url.d.ts.map +1 -1
  156. package/dist/encoding/Base64Url.js +26 -3
  157. package/dist/encoding/Base64Url.js.map +1 -1
  158. package/dist/encoding/Json5.d.ts +44 -0
  159. package/dist/encoding/Json5.d.ts.map +1 -0
  160. package/dist/encoding/Json5.js +56 -0
  161. package/dist/encoding/Json5.js.map +1 -0
  162. package/dist/encoding/Jsonc.d.ts +47 -0
  163. package/dist/encoding/Jsonc.d.ts.map +1 -0
  164. package/dist/encoding/Jsonc.js +120 -0
  165. package/dist/encoding/Jsonc.js.map +1 -0
  166. package/dist/encoding/Ndjson.d.ts +5 -4
  167. package/dist/encoding/Ndjson.d.ts.map +1 -1
  168. package/dist/encoding/Ndjson.js +6 -5
  169. package/dist/encoding/Ndjson.js.map +1 -1
  170. package/dist/encoding/SchemaBinary.d.ts +94 -0
  171. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  172. package/dist/encoding/SchemaBinary.js +219 -6
  173. package/dist/encoding/SchemaBinary.js.map +1 -1
  174. package/dist/encoding/Sse.d.ts +3 -1
  175. package/dist/encoding/Sse.d.ts.map +1 -1
  176. package/dist/encoding/Sse.js +5 -3
  177. package/dist/encoding/Sse.js.map +1 -1
  178. package/dist/encoding/index.d.ts +10 -0
  179. package/dist/encoding/index.d.ts.map +1 -1
  180. package/dist/encoding/index.js +10 -0
  181. package/dist/encoding/index.js.map +1 -1
  182. package/dist/eventlog/EventLog.d.ts +7 -0
  183. package/dist/eventlog/EventLog.d.ts.map +1 -1
  184. package/dist/eventlog/EventLog.js +7 -0
  185. package/dist/eventlog/EventLog.js.map +1 -1
  186. package/dist/eventlog/EventLogServer.d.ts +7 -1
  187. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  188. package/dist/eventlog/EventLogServer.js +55 -24
  189. package/dist/eventlog/EventLogServer.js.map +1 -1
  190. package/dist/eventlog/EventLogServerEncrypted.d.ts +10 -0
  191. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  192. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  193. package/dist/eventlog/EventLogServerUnencrypted.d.ts +17 -0
  194. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  195. package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
  196. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  197. package/dist/eventlog/EventLogSessionAuth.d.ts +21 -0
  198. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  199. package/dist/eventlog/EventLogSessionAuth.js +22 -0
  200. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  201. package/dist/graphql/GraphQLClient.d.ts +3 -1
  202. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  203. package/dist/graphql/GraphQLClient.js.map +1 -1
  204. package/dist/graphql/GraphQLClientError.d.ts +14 -9
  205. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  206. package/dist/graphql/GraphQLClientError.js +14 -21
  207. package/dist/graphql/GraphQLClientError.js.map +1 -1
  208. package/dist/graphql/GraphQLProtocol.d.ts +12 -3
  209. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  210. package/dist/graphql/GraphQLProtocol.js +4 -1
  211. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  212. package/dist/http/HttpClient.d.ts +204 -16
  213. package/dist/http/HttpClient.d.ts.map +1 -1
  214. package/dist/http/HttpClient.js +93 -13
  215. package/dist/http/HttpClient.js.map +1 -1
  216. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  217. package/dist/http/HttpServerRequest.js +38 -22
  218. package/dist/http/HttpServerRequest.js.map +1 -1
  219. package/dist/http/internal/mimeTypes.d.ts +4 -1
  220. package/dist/http/internal/mimeTypes.d.ts.map +1 -1
  221. package/dist/http/internal/mimeTypes.js +4 -1
  222. package/dist/http/internal/mimeTypes.js.map +1 -1
  223. package/dist/http-api/HttpApiSchema.js +1 -1
  224. package/dist/http-api/HttpApiSchema.js.map +1 -1
  225. package/dist/internal/dateTime.js +66 -27
  226. package/dist/internal/dateTime.js.map +1 -1
  227. package/dist/internal/effect.js +10 -0
  228. package/dist/internal/effect.js.map +1 -1
  229. package/dist/internal/glob.js +234 -56
  230. package/dist/internal/glob.js.map +1 -1
  231. package/dist/internal/graphql.js +21 -7
  232. package/dist/internal/graphql.js.map +1 -1
  233. package/dist/internal/graphqlHeaders.d.ts +7 -0
  234. package/dist/internal/graphqlHeaders.d.ts.map +1 -1
  235. package/dist/internal/graphqlHeaders.js +11 -0
  236. package/dist/internal/graphqlHeaders.js.map +1 -1
  237. package/dist/internal/jsonParser.d.ts +5 -0
  238. package/dist/internal/jsonParser.d.ts.map +1 -0
  239. package/dist/internal/jsonParser.js +280 -0
  240. package/dist/internal/jsonParser.js.map +1 -0
  241. package/dist/internal/persistence.js +8 -1
  242. package/dist/internal/persistence.js.map +1 -1
  243. package/dist/internal/request.js +29 -42
  244. package/dist/internal/request.js.map +1 -1
  245. package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
  246. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  247. package/dist/internal/sql.js +16 -0
  248. package/dist/internal/sql.js.map +1 -1
  249. package/dist/internal/version.js +1 -1
  250. package/dist/jose/JoseError.d.ts +285 -0
  251. package/dist/jose/JoseError.d.ts.map +1 -0
  252. package/dist/jose/JoseError.js +269 -0
  253. package/dist/jose/JoseError.js.map +1 -0
  254. package/dist/jose/Jwe.d.ts +128 -0
  255. package/dist/jose/Jwe.d.ts.map +1 -0
  256. package/dist/jose/Jwe.js +134 -0
  257. package/dist/jose/Jwe.js.map +1 -0
  258. package/dist/jose/Jwk.d.ts +597 -0
  259. package/dist/jose/Jwk.d.ts.map +1 -0
  260. package/dist/jose/Jwk.js +503 -0
  261. package/dist/jose/Jwk.js.map +1 -0
  262. package/dist/jose/Jwks.d.ts +236 -0
  263. package/dist/jose/Jwks.d.ts.map +1 -0
  264. package/dist/jose/Jwks.js +306 -0
  265. package/dist/jose/Jwks.js.map +1 -0
  266. package/dist/jose/Jws.d.ts +177 -0
  267. package/dist/jose/Jws.d.ts.map +1 -0
  268. package/dist/jose/Jws.js +183 -0
  269. package/dist/jose/Jws.js.map +1 -0
  270. package/dist/jose/Jwt.d.ts +270 -0
  271. package/dist/jose/Jwt.d.ts.map +1 -0
  272. package/dist/jose/Jwt.js +293 -0
  273. package/dist/jose/Jwt.js.map +1 -0
  274. package/dist/jose/index.d.ts +51 -0
  275. package/dist/jose/index.d.ts.map +1 -0
  276. package/dist/jose/index.js +52 -0
  277. package/dist/jose/index.js.map +1 -0
  278. package/dist/jose/internal/compact.d.ts +2 -0
  279. package/dist/jose/internal/compact.d.ts.map +1 -0
  280. package/dist/jose/internal/compact.js +179 -0
  281. package/dist/jose/internal/compact.js.map +1 -0
  282. package/dist/net/Host.d.ts.map +1 -1
  283. package/dist/net/Host.js +5 -10
  284. package/dist/net/Host.js.map +1 -1
  285. package/dist/observability/OtlpExporter.d.ts +4 -0
  286. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  287. package/dist/observability/OtlpExporter.js +40 -12
  288. package/dist/observability/OtlpExporter.js.map +1 -1
  289. package/dist/observability/OtlpSerialization.d.ts +1 -1
  290. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  291. package/dist/observability/OtlpSerialization.js +10 -4
  292. package/dist/observability/OtlpSerialization.js.map +1 -1
  293. package/dist/observability/internal/otlpProtobuf.js +3 -3
  294. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  295. package/dist/observability/internal/protobuf.js +6 -0
  296. package/dist/observability/internal/protobuf.js.map +1 -1
  297. package/dist/persistence/CircuitBreaker.d.ts +98 -38
  298. package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
  299. package/dist/persistence/CircuitBreaker.js +67 -29
  300. package/dist/persistence/CircuitBreaker.js.map +1 -1
  301. package/dist/persistence/RateLimiter.d.ts +15 -0
  302. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  303. package/dist/persistence/RateLimiter.js +76 -16
  304. package/dist/persistence/RateLimiter.js.map +1 -1
  305. package/dist/persistence/index.d.ts +1 -1
  306. package/dist/persistence/index.js +1 -1
  307. package/dist/reactivity/AtomRegistry.js +17 -7
  308. package/dist/reactivity/AtomRegistry.js.map +1 -1
  309. package/dist/rpc/Rpc.d.ts +1 -1
  310. package/dist/rpc/Rpc.d.ts.map +1 -1
  311. package/dist/rpc/Rpc.js.map +1 -1
  312. package/dist/rpc/RpcClient.d.ts +14 -2
  313. package/dist/rpc/RpcClient.d.ts.map +1 -1
  314. package/dist/rpc/RpcClient.js +38 -21
  315. package/dist/rpc/RpcClient.js.map +1 -1
  316. package/dist/rpc/RpcMessage.d.ts +3 -2
  317. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  318. package/dist/rpc/RpcMessage.js.map +1 -1
  319. package/dist/rpc/RpcServer.d.ts.map +1 -1
  320. package/dist/rpc/RpcServer.js +10 -1
  321. package/dist/rpc/RpcServer.js.map +1 -1
  322. package/dist/sql/Migrator.d.ts +9 -1
  323. package/dist/sql/Migrator.d.ts.map +1 -1
  324. package/dist/sql/Migrator.js +18 -6
  325. package/dist/sql/Migrator.js.map +1 -1
  326. package/dist/sql/SqlClient.d.ts +46 -3
  327. package/dist/sql/SqlClient.d.ts.map +1 -1
  328. package/dist/sql/SqlClient.js +40 -15
  329. package/dist/sql/SqlClient.js.map +1 -1
  330. package/dist/sql/Statement.d.ts +46 -3
  331. package/dist/sql/Statement.d.ts.map +1 -1
  332. package/dist/sql/Statement.js +32 -26
  333. package/dist/sql/Statement.js.map +1 -1
  334. package/dist/workflow/Workflow.d.ts +4 -0
  335. package/dist/workflow/Workflow.d.ts.map +1 -1
  336. package/dist/workflow/Workflow.js.map +1 -1
  337. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  338. package/dist/workflow/WorkflowEngine.js +5 -0
  339. package/dist/workflow/WorkflowEngine.js.map +1 -1
  340. package/package.json +7 -3
  341. package/src/BigDecimal.ts +170 -16
  342. package/src/ByteSize.ts +29 -14
  343. package/src/Equal.ts +3 -3
  344. package/src/Hash.ts +5 -4
  345. package/src/Iterable.ts +28 -19
  346. package/src/JsonSchema.ts +45 -7
  347. package/src/MutableRef.ts +1 -8
  348. package/src/Path.ts +6 -1
  349. package/src/Pool.ts +2 -1
  350. package/src/Ref.ts +0 -8
  351. package/src/Schedule.ts +8 -6
  352. package/src/Schema.ts +3 -2
  353. package/src/SchemaRepresentation.ts +4 -2
  354. package/src/SchemaTransformation.ts +2 -2
  355. package/src/Stream.ts +6 -5
  356. package/src/ai/McpClient.ts +488 -91
  357. package/src/ai/McpSchema.ts +119 -0
  358. package/src/ai/McpServer.ts +302 -56
  359. package/src/ai/Prompt.ts +16 -11
  360. package/src/ai/Tool.ts +5 -10
  361. package/src/ai/internal/mcpCore.ts +165 -12
  362. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +3 -1
  363. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +3 -1
  364. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -1
  365. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -1
  366. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +42 -9
  367. package/src/ai/internal/mcpProtocol.ts +15 -0
  368. package/src/ai/internal/mcpRuntime.ts +6 -3
  369. package/src/ai/internal/mcpSkills.ts +480 -0
  370. package/src/ai/internal/structured-output.ts +10 -4
  371. package/src/cluster/ClusterWorkflowEngine.ts +48 -33
  372. package/src/cluster/Entity.ts +52 -0
  373. package/src/cluster/MessageStorage.ts +3 -6
  374. package/src/cluster/Reply.ts +1 -1
  375. package/src/cluster/Runners.ts +16 -2
  376. package/src/cluster/Sharding.ts +17 -1
  377. package/src/cluster/internal/clusterAbandon.ts +7 -7
  378. package/src/cluster/internal/entityManager.ts +89 -15
  379. package/src/cluster/internal/transactionNotifications.ts +7 -0
  380. package/src/crypto/Aead.ts +3 -3
  381. package/src/crypto/Cipher.ts +3 -3
  382. package/src/crypto/KeyAgreement.ts +4 -4
  383. package/src/crypto/KeyFormat.ts +30 -1
  384. package/src/crypto/KeyWrap.ts +6 -6
  385. package/src/crypto/Mac.ts +3 -3
  386. package/src/crypto/Signature.ts +4 -4
  387. package/src/crypto/WebCrypto.ts +20 -0
  388. package/src/crypto/internal/asymmetric.ts +2 -1
  389. package/src/crypto/internal/key.ts +12 -5
  390. package/src/encoding/Base64Url.ts +27 -3
  391. package/src/encoding/Json5.ts +59 -0
  392. package/src/encoding/Jsonc.ts +126 -0
  393. package/src/encoding/Ndjson.ts +6 -5
  394. package/src/encoding/SchemaBinary.ts +228 -7
  395. package/src/encoding/Sse.ts +5 -3
  396. package/src/encoding/index.ts +12 -0
  397. package/src/eventlog/EventLog.ts +7 -0
  398. package/src/eventlog/EventLogServer.ts +67 -24
  399. package/src/eventlog/EventLogServerEncrypted.ts +5 -0
  400. package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
  401. package/src/eventlog/EventLogSessionAuth.ts +26 -0
  402. package/src/graphql/GraphQLClient.ts +3 -1
  403. package/src/graphql/GraphQLClientError.ts +15 -22
  404. package/src/graphql/GraphQLProtocol.ts +12 -3
  405. package/src/http/HttpClient.ts +244 -33
  406. package/src/http/HttpServerRequest.ts +61 -23
  407. package/src/http/internal/mimeTypes.ts +4 -1
  408. package/src/http-api/HttpApiSchema.ts +1 -1
  409. package/src/internal/dateTime.ts +80 -27
  410. package/src/internal/effect.ts +6 -0
  411. package/src/internal/glob.ts +279 -63
  412. package/src/internal/graphql.ts +27 -9
  413. package/src/internal/graphqlHeaders.ts +13 -0
  414. package/src/internal/jsonParser.ts +307 -0
  415. package/src/internal/persistence.ts +9 -1
  416. package/src/internal/request.ts +51 -58
  417. package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
  418. package/src/internal/sql.ts +25 -0
  419. package/src/internal/version.ts +1 -1
  420. package/src/jose/JoseError.ts +329 -0
  421. package/src/jose/Jwe.ts +196 -0
  422. package/src/jose/Jwk.ts +777 -0
  423. package/src/jose/Jwks.ts +418 -0
  424. package/src/jose/Jws.ts +312 -0
  425. package/src/jose/Jwt.ts +493 -0
  426. package/src/jose/index.ts +58 -0
  427. package/src/jose/internal/compact.ts +195 -0
  428. package/src/net/Host.ts +5 -10
  429. package/src/observability/OtlpExporter.ts +42 -18
  430. package/src/observability/OtlpSerialization.ts +13 -5
  431. package/src/observability/internal/otlpProtobuf.ts +6 -6
  432. package/src/observability/internal/protobuf.ts +10 -0
  433. package/src/persistence/CircuitBreaker.ts +113 -48
  434. package/src/persistence/RateLimiter.ts +97 -19
  435. package/src/persistence/index.ts +1 -1
  436. package/src/reactivity/AtomRegistry.ts +19 -8
  437. package/src/rpc/Rpc.ts +3 -1
  438. package/src/rpc/RpcClient.ts +44 -24
  439. package/src/rpc/RpcMessage.ts +3 -2
  440. package/src/rpc/RpcServer.ts +12 -1
  441. package/src/sql/Migrator.ts +35 -18
  442. package/src/sql/SqlClient.ts +91 -22
  443. package/src/sql/Statement.ts +60 -35
  444. package/src/workflow/Workflow.ts +4 -0
  445. package/src/workflow/WorkflowEngine.ts +5 -0
@@ -0,0 +1,269 @@
1
+ /**
2
+ * The `JoseError` returned by the `effect/jose` modules, and the reasons it
3
+ * carries.
4
+ *
5
+ * Every failure is one `JoseError` whose `reason` says what went wrong. Reasons
6
+ * for configuration, transport, and key-import problems carry a `description`
7
+ * and, when there is one, a `cause`. Reasons for failed authentication carry
8
+ * nothing: they never describe tokens, claims, plaintext, or key material.
9
+ *
10
+ * **Gotchas**
11
+ *
12
+ * Map the error before it reaches a client, for example
13
+ * `SignatureVerificationFailed` to a 401. Sending verification detail to
14
+ * clients is how oracles leak.
15
+ *
16
+ * @stability unstable
17
+ * @since 4.1.1
18
+ */
19
+ import * as Data from "../Data.js";
20
+ import * as Predicate from "../Predicate.js";
21
+ const TypeId = "~effect/jose/JoseError";
22
+ const ReasonTypeId = "~effect/jose/JoseError/Reason";
23
+ /**
24
+ * Reason for a malformed compact serialization, protected header, or payload,
25
+ * or for header parameters that are not supported, such as `crit`.
26
+ *
27
+ * @stability unstable
28
+ * @category errors
29
+ * @since 4.1.1
30
+ */
31
+ export class InvalidToken extends /*#__PURE__*/Data.TaggedError("InvalidToken") {
32
+ /**
33
+ * Marks this value as a `JoseError` reason for runtime guards.
34
+ *
35
+ * @since 4.1.1
36
+ */
37
+ [ReasonTypeId] = ReasonTypeId;
38
+ get message() {
39
+ return this.description;
40
+ }
41
+ }
42
+ /**
43
+ * Reason for key material that cannot be imported, or that does not fit the
44
+ * selected algorithm or operation.
45
+ *
46
+ * @stability unstable
47
+ * @category errors
48
+ * @since 4.1.1
49
+ */
50
+ export class InvalidKey extends /*#__PURE__*/Data.TaggedError("InvalidKey") {
51
+ /**
52
+ * Marks this value as a `JoseError` reason for runtime guards.
53
+ *
54
+ * @since 4.1.1
55
+ */
56
+ [ReasonTypeId] = ReasonTypeId;
57
+ get message() {
58
+ return this.description;
59
+ }
60
+ }
61
+ /**
62
+ * Reason for an option or configuration value that the operation rejects
63
+ * before doing any work, such as a non-HTTPS key-set URL.
64
+ *
65
+ * @stability unstable
66
+ * @category errors
67
+ * @since 4.1.1
68
+ */
69
+ export class InvalidArgument extends /*#__PURE__*/Data.TaggedError("InvalidArgument") {
70
+ /**
71
+ * Marks this value as a `JoseError` reason for runtime guards.
72
+ *
73
+ * @since 4.1.1
74
+ */
75
+ [ReasonTypeId] = ReasonTypeId;
76
+ get message() {
77
+ return this.description;
78
+ }
79
+ }
80
+ /**
81
+ * Reason for a token whose protected `alg` is not the key's algorithm or is
82
+ * outside the allowlist.
83
+ *
84
+ * @stability unstable
85
+ * @category errors
86
+ * @since 4.1.1
87
+ */
88
+ export class AlgorithmNotAllowed extends /*#__PURE__*/Data.TaggedError("AlgorithmNotAllowed") {
89
+ /**
90
+ * Marks this value as a `JoseError` reason for runtime guards.
91
+ *
92
+ * @since 4.1.1
93
+ */
94
+ [ReasonTypeId] = ReasonTypeId;
95
+ get message() {
96
+ return "The token algorithm is not allowed";
97
+ }
98
+ }
99
+ /**
100
+ * Reason for a signature that does not authenticate the token.
101
+ *
102
+ * @stability unstable
103
+ * @category errors
104
+ * @since 4.1.1
105
+ */
106
+ export class SignatureVerificationFailed extends /*#__PURE__*/Data.TaggedError("SignatureVerificationFailed") {
107
+ /**
108
+ * Marks this value as a `JoseError` reason for runtime guards.
109
+ *
110
+ * @since 4.1.1
111
+ */
112
+ [ReasonTypeId] = ReasonTypeId;
113
+ get message() {
114
+ return "Could not verify the signature";
115
+ }
116
+ }
117
+ /**
118
+ * Reason for ciphertext that fails authenticated decryption.
119
+ *
120
+ * @stability unstable
121
+ * @category errors
122
+ * @since 4.1.1
123
+ */
124
+ export class DecryptionFailed extends /*#__PURE__*/Data.TaggedError("DecryptionFailed") {
125
+ /**
126
+ * Marks this value as a `JoseError` reason for runtime guards.
127
+ *
128
+ * @since 4.1.1
129
+ */
130
+ [ReasonTypeId] = ReasonTypeId;
131
+ get message() {
132
+ return "Could not decrypt the token";
133
+ }
134
+ }
135
+ /**
136
+ * Reason for a key set with no key matching the algorithm and key id.
137
+ *
138
+ * @stability unstable
139
+ * @category errors
140
+ * @since 4.1.1
141
+ */
142
+ export class KeyNotFound extends /*#__PURE__*/Data.TaggedError("KeyNotFound") {
143
+ /**
144
+ * Marks this value as a `JoseError` reason for runtime guards.
145
+ *
146
+ * @since 4.1.1
147
+ */
148
+ [ReasonTypeId] = ReasonTypeId;
149
+ get message() {
150
+ return "No key matches the algorithm and key id";
151
+ }
152
+ }
153
+ /**
154
+ * Reason for a key set with more than one key matching the algorithm and key
155
+ * id.
156
+ *
157
+ * @stability unstable
158
+ * @category errors
159
+ * @since 4.1.1
160
+ */
161
+ export class AmbiguousKey extends /*#__PURE__*/Data.TaggedError("AmbiguousKey") {
162
+ /**
163
+ * Marks this value as a `JoseError` reason for runtime guards.
164
+ *
165
+ * @since 4.1.1
166
+ */
167
+ [ReasonTypeId] = ReasonTypeId;
168
+ get message() {
169
+ return "More than one key matches the algorithm and key id";
170
+ }
171
+ }
172
+ /**
173
+ * Reason for a remote key set that cannot be fetched or read, is cooling down
174
+ * after a failed refresh, or belongs to a closed layer.
175
+ *
176
+ * @stability unstable
177
+ * @category errors
178
+ * @since 4.1.1
179
+ */
180
+ export class KeySetUnavailable extends /*#__PURE__*/Data.TaggedError("KeySetUnavailable") {
181
+ /**
182
+ * Marks this value as a `JoseError` reason for runtime guards.
183
+ *
184
+ * @since 4.1.1
185
+ */
186
+ [ReasonTypeId] = ReasonTypeId;
187
+ get message() {
188
+ return this.description;
189
+ }
190
+ }
191
+ /**
192
+ * Reason for a registered claim or `typ` header that is missing, malformed,
193
+ * different from the expected value, or outside its validity window.
194
+ *
195
+ * @stability unstable
196
+ * @category errors
197
+ * @since 4.1.1
198
+ */
199
+ export class ClaimValidationFailed extends /*#__PURE__*/Data.TaggedError("ClaimValidationFailed") {
200
+ /**
201
+ * Marks this value as a `JoseError` reason for runtime guards.
202
+ *
203
+ * @since 4.1.1
204
+ */
205
+ [ReasonTypeId] = ReasonTypeId;
206
+ get message() {
207
+ return `The ${this.claim} claim failed validation: ${this.reason}`;
208
+ }
209
+ }
210
+ /**
211
+ * Error returned by the `effect/jose` modules.
212
+ *
213
+ * **Example** (Rejecting a token with a bad signature)
214
+ *
215
+ * ```ts import.meta.vitest
216
+ * import { Effect } from "effect"
217
+ * import { JoseError } from "effect/jose"
218
+ *
219
+ * const verify = Effect.fail(
220
+ * new JoseError.JoseError({ reason: new JoseError.SignatureVerificationFailed() })
221
+ * )
222
+ *
223
+ * const program = verify.pipe(
224
+ * Effect.catchReason("JoseError", "SignatureVerificationFailed", () => Effect.succeed("rejected"))
225
+ * )
226
+ *
227
+ * await Effect.runPromise(program) // => "rejected"
228
+ * ```
229
+ *
230
+ * @see {@link isJoseError} for narrowing unknown values
231
+ *
232
+ * @stability unstable
233
+ * @category errors
234
+ * @since 4.1.1
235
+ */
236
+ export class JoseError extends /*#__PURE__*/Data.TaggedError("JoseError") {
237
+ /**
238
+ * Marks this value as a `JoseError` for runtime guards.
239
+ *
240
+ * @since 4.1.1
241
+ */
242
+ [TypeId] = TypeId;
243
+ /**
244
+ * The reason's cause, when it has one.
245
+ *
246
+ * @since 4.1.1
247
+ */
248
+ cause = "cause" in this.reason ? this.reason.cause : undefined;
249
+ get message() {
250
+ return this.reason.message;
251
+ }
252
+ }
253
+ /**
254
+ * Checks whether a value is a `JoseError`.
255
+ *
256
+ * @stability unstable
257
+ * @category guards
258
+ * @since 4.1.1
259
+ */
260
+ export const isJoseError = u => Predicate.hasProperty(u, TypeId);
261
+ /**
262
+ * Checks whether a value is one of the reasons carried by `JoseError`.
263
+ *
264
+ * @stability unstable
265
+ * @category guards
266
+ * @since 4.1.1
267
+ */
268
+ export const isJoseErrorReason = u => Predicate.hasProperty(u, ReasonTypeId);
269
+ //# sourceMappingURL=JoseError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JoseError.js","names":[],"sources":["../../src/jose/JoseError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Compact JSON Web Encryption with a shared key: `dir` key management and
3
+ * A256GCM content encryption.
4
+ *
5
+ * The protected header is authenticated as additional data, so changing it
6
+ * fails decryption. Headers with `crit` or `zip` are rejected.
7
+ *
8
+ * Bound untrusted token length before decryption; this module does not impose
9
+ * a token-size limit.
10
+ *
11
+ * @stability unstable
12
+ * @since 4.1.1
13
+ */
14
+ import * as Aead from "../crypto/Aead.ts";
15
+ import * as SecureRandom from "../crypto/SecureRandom.ts";
16
+ import * as Effect from "../Effect.ts";
17
+ import * as Redacted from "../Redacted.ts";
18
+ import * as Schema from "../Schema.ts";
19
+ import * as JoseError from "./JoseError.ts";
20
+ import type { SecretKey } from "./Jwk.ts";
21
+ /**
22
+ * Schema for a JWE protected header, including additional JSON-valued
23
+ * parameters.
24
+ *
25
+ * @stability unstable
26
+ * @category schemas
27
+ * @since 4.1.1
28
+ */
29
+ export declare const ProtectedHeader: Schema.StructWithRest<Schema.Struct<{
30
+ readonly alg: Schema.Literal<"dir">;
31
+ readonly enc: Schema.Literal<"A256GCM">;
32
+ readonly kid: Schema.optionalKey<Schema.String>;
33
+ readonly typ: Schema.optionalKey<Schema.String>;
34
+ readonly cty: Schema.optionalKey<Schema.String>;
35
+ }>, readonly [Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>]>;
36
+ /**
37
+ * A JWE protected header. It is authenticated only after decryption succeeds.
38
+ *
39
+ * @stability unstable
40
+ * @category models
41
+ * @since 4.1.1
42
+ */
43
+ export type ProtectedHeader = typeof ProtectedHeader.Type;
44
+ /**
45
+ * Standard header parameters to protect. Encryption also accepts additional
46
+ * JSON-valued parameters. `alg` and `enc` are fixed and `kid` defaults to the
47
+ * key's.
48
+ *
49
+ * @stability unstable
50
+ * @category models
51
+ * @since 4.1.1
52
+ */
53
+ export interface Header {
54
+ readonly alg?: never;
55
+ readonly enc?: never;
56
+ readonly crit?: never;
57
+ readonly zip?: never;
58
+ readonly kid?: string | undefined;
59
+ readonly typ?: string | undefined;
60
+ readonly cty?: string | undefined;
61
+ }
62
+ /**
63
+ * The protected header, plaintext, and key used to decrypt a JWE.
64
+ *
65
+ * @stability unstable
66
+ * @category models
67
+ * @since 4.1.1
68
+ */
69
+ export interface Decrypted {
70
+ readonly protectedHeader: ProtectedHeader;
71
+ readonly plaintext: Uint8Array;
72
+ readonly key: SecretKey<"dir">;
73
+ }
74
+ /**
75
+ * Encrypts plaintext as a compact JWE with a random 96-bit IV.
76
+ *
77
+ * **Example** (Encrypting and decrypting a message)
78
+ *
79
+ * ```ts import.meta.vitest
80
+ * import { Effect, Layer, Redacted } from "effect"
81
+ * import { Aead, SecureRandom } from "effect/crypto"
82
+ * import { Jwe, Jwk } from "effect/jose"
83
+ *
84
+ * const layer = Aead.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
85
+ *
86
+ * const plaintext = await Effect.runPromise(Effect.gen(function*() {
87
+ * // Fixed public example material; generate application secrets securely.
88
+ * const key = yield* Jwk.importSecret(
89
+ * Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
90
+ * "dir"
91
+ * )
92
+ * const token = yield* Jwe.encrypt(new TextEncoder().encode("private message"), key)
93
+ * const decrypted = yield* Jwe.decrypt(token, key)
94
+ * return new TextDecoder().decode(decrypted.plaintext)
95
+ * }).pipe(Effect.provide(layer)))
96
+ * plaintext // => "private message"
97
+ * ```
98
+ *
99
+ * @see {@link decrypt}
100
+ *
101
+ * @stability unstable
102
+ * @category cryptography
103
+ * @since 4.1.1
104
+ */
105
+ export declare const encrypt: <H extends object & { readonly [P in keyof H]: Schema.Json | undefined; } = Header>(plaintext: Uint8Array<ArrayBufferLike>, key: SecretKey<"dir">, header?: (Header & H) | undefined) => Effect.Effect<Redacted.Redacted<string>, JoseError.JoseError, Aead.Aead | SecureRandom.SecureRandom>;
106
+ /**
107
+ * Decrypts a compact `dir`/A256GCM JWE and authenticates its protected
108
+ * header.
109
+ *
110
+ * **Details**
111
+ *
112
+ * Accepts a key or an effectful resolver for key rotation. The token's
113
+ * structure and supported header parameters are checked before the resolver
114
+ * runs. Resolver failures and service requirements are preserved.
115
+ *
116
+ * **Gotchas**
117
+ *
118
+ * The resolver receives an unauthenticated header and must use it only for
119
+ * key selection.
120
+ *
121
+ * @see {@link encrypt}
122
+ *
123
+ * @stability unstable
124
+ * @category cryptography
125
+ * @since 4.1.1
126
+ */
127
+ export declare const decrypt: <E = never, R = never>(token: string | Redacted.Redacted<string>, key: SecretKey<"dir"> | ((header: ProtectedHeader) => Effect.Effect<SecretKey<"dir">, E, R>)) => Effect.Effect<Decrypted, E | JoseError.JoseError, R | Aead.Aead>;
128
+ //# sourceMappingURL=Jwe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Jwe.d.ts","sourceRoot":"","sources":["../../src/jose/Jwe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAUtC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;mGAS3B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEzD;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;CAC/B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,OAAO,GAClB,CAAC,SAAS,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,GAAE,oNAgBvE,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,GAA+B,CAAC,UAAU,CAAC,uFAE3B,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sEA2B3F,CAAA"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Compact JSON Web Encryption with a shared key: `dir` key management and
3
+ * A256GCM content encryption.
4
+ *
5
+ * The protected header is authenticated as additional data, so changing it
6
+ * fails decryption. Headers with `crit` or `zip` are rejected.
7
+ *
8
+ * Bound untrusted token length before decryption; this module does not impose
9
+ * a token-size limit.
10
+ *
11
+ * @stability unstable
12
+ * @since 4.1.1
13
+ */
14
+ import * as Aead from "../crypto/Aead.js";
15
+ import * as SecureRandom from "../crypto/SecureRandom.js";
16
+ import * as Effect from "../Effect.js";
17
+ import * as Base64Url from "../encoding/Base64Url.js";
18
+ import * as Redacted from "../Redacted.js";
19
+ import * as Schema from "../Schema.js";
20
+ import { cryptoFailure, decodeHeader, decodeSegment, encodeHeader, invalidToken, split, utf8 } from "./internal/compact.js";
21
+ import * as JoseError from "./JoseError.js";
22
+ /**
23
+ * Schema for a JWE protected header, including additional JSON-valued
24
+ * parameters.
25
+ *
26
+ * @stability unstable
27
+ * @category schemas
28
+ * @since 4.1.1
29
+ */
30
+ export const ProtectedHeader = /*#__PURE__*/Schema.StructWithRest(/*#__PURE__*/Schema.Struct({
31
+ alg: /*#__PURE__*/Schema.Literal("dir"),
32
+ enc: /*#__PURE__*/Schema.Literal("A256GCM"),
33
+ kid: /*#__PURE__*/Schema.optionalKey(Schema.String),
34
+ typ: /*#__PURE__*/Schema.optionalKey(Schema.String),
35
+ cty: /*#__PURE__*/Schema.optionalKey(Schema.String)
36
+ }), [/*#__PURE__*/Schema.Record(Schema.String, Schema.Json)]);
37
+ const tagLength = 16;
38
+ const decodeProtectedHeader = /*#__PURE__*/Schema.decodeUnknownOption(ProtectedHeader);
39
+ /**
40
+ * Encrypts plaintext as a compact JWE with a random 96-bit IV.
41
+ *
42
+ * **Example** (Encrypting and decrypting a message)
43
+ *
44
+ * ```ts import.meta.vitest
45
+ * import { Effect, Layer, Redacted } from "effect"
46
+ * import { Aead, SecureRandom } from "effect/crypto"
47
+ * import { Jwe, Jwk } from "effect/jose"
48
+ *
49
+ * const layer = Aead.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
50
+ *
51
+ * const plaintext = await Effect.runPromise(Effect.gen(function*() {
52
+ * // Fixed public example material; generate application secrets securely.
53
+ * const key = yield* Jwk.importSecret(
54
+ * Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
55
+ * "dir"
56
+ * )
57
+ * const token = yield* Jwe.encrypt(new TextEncoder().encode("private message"), key)
58
+ * const decrypted = yield* Jwe.decrypt(token, key)
59
+ * return new TextDecoder().decode(decrypted.plaintext)
60
+ * }).pipe(Effect.provide(layer)))
61
+ * plaintext // => "private message"
62
+ * ```
63
+ *
64
+ * @see {@link decrypt}
65
+ *
66
+ * @stability unstable
67
+ * @category cryptography
68
+ * @since 4.1.1
69
+ */
70
+ export const encrypt = /*#__PURE__*/Effect.fnUntraced(function* (plaintext, key, header) {
71
+ const protectedHeader = yield* encodeHeader({
72
+ alg: "dir",
73
+ enc: "A256GCM"
74
+ }, key.kid, header, ["crit", "zip"]);
75
+ const random = yield* SecureRandom.SecureRandom;
76
+ const aead = yield* Aead.Aead;
77
+ const nonce = yield* random.randomBytes(Aead.aes256Gcm.nonceLength);
78
+ const sealed = yield* aead.encrypt(key.key, plaintext, {
79
+ nonce,
80
+ aad: utf8(protectedHeader)
81
+ }).pipe(Effect.mapError(cryptoFailure("Could not encrypt with the key")));
82
+ const ciphertext = Base64Url.encode(sealed.subarray(0, -tagLength));
83
+ const tag = Base64Url.encode(sealed.subarray(-tagLength));
84
+ return Redacted.make(`${protectedHeader}..${Base64Url.encode(nonce)}.${ciphertext}.${tag}`);
85
+ });
86
+ /**
87
+ * Decrypts a compact `dir`/A256GCM JWE and authenticates its protected
88
+ * header.
89
+ *
90
+ * **Details**
91
+ *
92
+ * Accepts a key or an effectful resolver for key rotation. The token's
93
+ * structure and supported header parameters are checked before the resolver
94
+ * runs. Resolver failures and service requirements are preserved.
95
+ *
96
+ * **Gotchas**
97
+ *
98
+ * The resolver receives an unauthenticated header and must use it only for
99
+ * key selection.
100
+ *
101
+ * @see {@link encrypt}
102
+ *
103
+ * @stability unstable
104
+ * @category cryptography
105
+ * @since 4.1.1
106
+ */
107
+ export const decrypt = /*#__PURE__*/Effect.fnUntraced(function* (token, key) {
108
+ const [header, encryptedKey, iv, ciphertext, tag] = yield* split(token, 5);
109
+ if (encryptedKey !== "") return yield* invalidToken("A dir token must have an empty encrypted key");
110
+ const protectedHeader = yield* decodeHeader(header, decodeProtectedHeader, ["crit", "zip"]);
111
+ const nonce = decodeSegment(iv);
112
+ const data = decodeSegment(ciphertext);
113
+ const authTag = decodeSegment(tag);
114
+ if (nonce === undefined || data === undefined || authTag === undefined || nonce.length !== Aead.aes256Gcm.nonceLength || authTag.length !== tagLength) {
115
+ return yield* invalidToken("The IV, ciphertext, or tag is malformed");
116
+ }
117
+ const resolvedKey = typeof key === "function" ? yield* key(protectedHeader) : key;
118
+ const sealed = new Uint8Array(data.length + tagLength);
119
+ sealed.set(data);
120
+ sealed.set(authTag, data.length);
121
+ const aead = yield* Aead.Aead;
122
+ const plaintext = yield* aead.decrypt(resolvedKey.key, sealed, {
123
+ nonce,
124
+ aad: utf8(header)
125
+ }).pipe(Effect.mapError(error => error.reason._tag === "DecryptionFailed" ? new JoseError.JoseError({
126
+ reason: new JoseError.DecryptionFailed()
127
+ }) : cryptoFailure("Could not decrypt with the key")(error)));
128
+ return {
129
+ protectedHeader,
130
+ plaintext,
131
+ key: resolvedKey
132
+ };
133
+ });
134
+ //# sourceMappingURL=Jwe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Jwe.js","names":[],"sources":["../../src/jose/Jwe.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}