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,503 @@
1
+ /**
2
+ * JSON Web Keys and the algorithm-bound keys the other `effect/jose` modules
3
+ * use.
4
+ *
5
+ * A key is imported for one algorithm and keeps it: a JWS or JWE operation
6
+ * takes its algorithm from the key, so a token cannot pick another one. The
7
+ * imported key wraps an `effect/crypto` key object, which redacts itself when
8
+ * printed and caches its native key.
9
+ *
10
+ * Importing honours the JWK's `alg`, `use`, and `key_ops` members, and
11
+ * rejects RSA keys shorter than 2048 bits.
12
+ *
13
+ * @stability unstable
14
+ * @since 4.1.1
15
+ */
16
+ import * as Aead from "../crypto/Aead.js";
17
+ import * as Digest from "../crypto/Digest.js";
18
+ import * as KeyFormat from "../crypto/KeyFormat.js";
19
+ import * as Mac from "../crypto/Mac.js";
20
+ import * as SecureRandom from "../crypto/SecureRandom.js";
21
+ import * as Signature from "../crypto/Signature.js";
22
+ import * as Effect from "../Effect.js";
23
+ import * as Base64Url from "../encoding/Base64Url.js";
24
+ import * as Redacted from "../Redacted.js";
25
+ import * as Schema from "../Schema.js";
26
+ import { cryptoFailure, decodeSegment, hasPrivateMembers, invalidArgument, invalidKey, isCanonicalSegment, noPrivateMembers, publicKeyFailure, utf8 } from "./internal/compact.js";
27
+ /**
28
+ * Schema for RSA, RSA-PSS, and ECDSA signatures with SHA-256, SHA-384, or
29
+ * SHA-512, and EdDSA signatures with Ed25519.
30
+ *
31
+ * @stability unstable
32
+ * @category schemas
33
+ * @since 4.1.1
34
+ */
35
+ export const AsymmetricAlgorithm = /*#__PURE__*/Schema.Literals(["RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512", "EdDSA"]);
36
+ /**
37
+ * Schema for the JWS algorithms: HS256, HS384, HS512, and the asymmetric
38
+ * algorithms.
39
+ *
40
+ * @stability unstable
41
+ * @category schemas
42
+ * @since 4.1.1
43
+ */
44
+ export const Algorithm = /*#__PURE__*/Schema.Literals(["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512", "EdDSA"]);
45
+ const metadata = {
46
+ kid: /*#__PURE__*/Schema.optionalKey(Schema.String),
47
+ alg: /*#__PURE__*/Schema.optionalKey(Schema.String),
48
+ use: /*#__PURE__*/Schema.optionalKey(Schema.String),
49
+ key_ops: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.Array(Schema.String))
50
+ };
51
+ const base64url = /*#__PURE__*/Schema.String.check(/*#__PURE__*/Schema.makeFilter(isCanonicalSegment, {
52
+ expected: "a canonical base64url encoded string"
53
+ }));
54
+ const rsa = {
55
+ ...metadata,
56
+ kty: /*#__PURE__*/Schema.Literal("RSA"),
57
+ n: base64url,
58
+ e: base64url
59
+ };
60
+ const ec = {
61
+ ...metadata,
62
+ kty: /*#__PURE__*/Schema.Literal("EC"),
63
+ crv: /*#__PURE__*/Schema.Literals(["P-256", "P-384", "P-521"]),
64
+ x: base64url,
65
+ y: base64url
66
+ };
67
+ const okp = {
68
+ ...metadata,
69
+ kty: /*#__PURE__*/Schema.Literal("OKP"),
70
+ crv: /*#__PURE__*/Schema.Literal("Ed25519"),
71
+ x: base64url
72
+ };
73
+ /**
74
+ * Schema for an RSA, P-256, P-384, P-521, or Ed25519 public JWK. Private and symmetric
75
+ * members, including RSA factors, are rejected.
76
+ *
77
+ * @stability unstable
78
+ * @category schemas
79
+ * @since 4.1.1
80
+ */
81
+ export const PublicJwk = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.Struct({
82
+ ...rsa,
83
+ ...noPrivateMembers
84
+ }), /*#__PURE__*/Schema.Struct({
85
+ ...ec,
86
+ ...noPrivateMembers
87
+ }), /*#__PURE__*/Schema.Struct({
88
+ ...okp,
89
+ ...noPrivateMembers
90
+ })]);
91
+ /**
92
+ * Schema for an RSA, P-256, P-384, P-521, or Ed25519 private JWK. RSA keys need their CRT
93
+ * members and cannot have more than two primes.
94
+ *
95
+ * @stability unstable
96
+ * @category schemas
97
+ * @since 4.1.1
98
+ */
99
+ export const PrivateJwk = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.Struct({
100
+ ...rsa,
101
+ d: base64url,
102
+ p: base64url,
103
+ q: base64url,
104
+ dp: base64url,
105
+ dq: base64url,
106
+ qi: base64url,
107
+ oth: /*#__PURE__*/Schema.optionalKey(Schema.Never)
108
+ }), /*#__PURE__*/Schema.Struct({
109
+ ...ec,
110
+ d: base64url
111
+ }), /*#__PURE__*/Schema.Struct({
112
+ ...okp,
113
+ d: base64url
114
+ })]);
115
+ /**
116
+ * Schema for an octet-sequence JWK.
117
+ *
118
+ * @stability unstable
119
+ * @category schemas
120
+ * @since 4.1.1
121
+ */
122
+ export const SecretJwk = /*#__PURE__*/Schema.Struct({
123
+ ...metadata,
124
+ kty: /*#__PURE__*/Schema.Literal("oct"),
125
+ k: Schema.String
126
+ });
127
+ const signatureAlgorithm = (algorithm, modulusLength = 2048) => {
128
+ switch (algorithm) {
129
+ case "RS256":
130
+ return Signature.rsaPkcs1v15({
131
+ hash: Digest.sha256,
132
+ modulusLength
133
+ });
134
+ case "RS384":
135
+ return Signature.rsaPkcs1v15({
136
+ hash: Digest.sha384,
137
+ modulusLength
138
+ });
139
+ case "RS512":
140
+ return Signature.rsaPkcs1v15({
141
+ hash: Digest.sha512,
142
+ modulusLength
143
+ });
144
+ case "PS256":
145
+ return Signature.rsaPss({
146
+ hash: Digest.sha256,
147
+ modulusLength
148
+ });
149
+ case "PS384":
150
+ return Signature.rsaPss({
151
+ hash: Digest.sha384,
152
+ modulusLength
153
+ });
154
+ case "PS512":
155
+ return Signature.rsaPss({
156
+ hash: Digest.sha512,
157
+ modulusLength
158
+ });
159
+ case "ES256":
160
+ return Signature.ecdsaP256;
161
+ case "ES384":
162
+ return Signature.ecdsaP384;
163
+ case "ES512":
164
+ return Signature.ecdsaP521;
165
+ case "EdDSA":
166
+ return Signature.ed25519;
167
+ }
168
+ };
169
+ const hmacAlgorithms = {
170
+ HS256: Mac.hmacSha256,
171
+ HS384: Mac.hmacSha384,
172
+ HS512: Mac.hmacSha512
173
+ };
174
+ const secretKeyLength = algorithm => algorithm === "dir" ? 32 : hmacAlgorithms[algorithm].hash.outputLength;
175
+ // `key_ops` must allow every operation in `operations`; symmetric keys perform both.
176
+ const checkMetadata = (jwk, algorithm, use, operations) => {
177
+ if (jwk.alg !== undefined && jwk.alg !== algorithm) {
178
+ return invalidKey(`The JWK is for ${jwk.alg}, not ${algorithm}`);
179
+ }
180
+ if (jwk.use !== undefined && jwk.use !== use) {
181
+ return invalidKey(`The JWK use is ${jwk.use}, not ${use}`);
182
+ }
183
+ if (jwk.key_ops !== undefined && !operations.every(operation => jwk.key_ops.includes(operation))) {
184
+ return invalidKey(`The JWK key_ops must allow ${operations.join(" and ")}`);
185
+ }
186
+ return Effect.void;
187
+ };
188
+ // Checked on the imported key, whose algorithm carries the actual modulus.
189
+ const checkModulus = key => (key.algorithm._tag === "RsaPss" || key.algorithm._tag === "RsaPkcs1v15") && key.algorithm.modulusLength < 2048 ? invalidKey("RSA keys must have at least 2048 bits") : Effect.void;
190
+ // KeyFormat handles only key members; JOSE metadata is handled here.
191
+ const jsonWebKey = jwk => jwk;
192
+ const isPublicJwk = /*#__PURE__*/Schema.is(PublicJwk);
193
+ const isPrivateJwk = /*#__PURE__*/Schema.is(PrivateJwk);
194
+ const exportJwk = (key, algorithm, kid) => KeyFormat.encode(KeyFormat.jwk, key).pipe(Effect.mapBoth({
195
+ onFailure: cryptoFailure("Could not export the key"),
196
+ onSuccess: jwk => ({
197
+ ...jwk,
198
+ ...(kid === undefined ? {} : {
199
+ kid
200
+ }),
201
+ alg: algorithm,
202
+ use: "sig"
203
+ })
204
+ }));
205
+ /**
206
+ * Generates a key pair for an asymmetric algorithm and returns it as JWKs.
207
+ *
208
+ * @see {@link importPrivate} for preparing the private JWK for signing
209
+ * @see {@link importPublic} for preparing the public JWK for verification
210
+ *
211
+ * @stability unstable
212
+ * @category constructors
213
+ * @since 4.1.1
214
+ */
215
+ export const generateKeyPair = /*#__PURE__*/Effect.fnUntraced(function* (options) {
216
+ const {
217
+ algorithm,
218
+ kid,
219
+ modulusLength
220
+ } = options;
221
+ if (modulusLength !== undefined && (!Number.isSafeInteger(modulusLength) || modulusLength < 2048)) {
222
+ return yield* invalidArgument("modulusLength must be an integer of at least 2048");
223
+ }
224
+ const signature = yield* Signature.Signature;
225
+ const pair = yield* signature.generateKeyPair(signatureAlgorithm(algorithm, modulusLength)).pipe(Effect.mapError(cryptoFailure(`Could not generate a ${algorithm} key pair`)));
226
+ const publicJwk = yield* exportJwk(pair.publicKey, algorithm, kid);
227
+ const privateJwk = yield* exportJwk(pair.privateKey, algorithm, kid);
228
+ return {
229
+ publicKey: publicJwk,
230
+ privateKey: Redacted.make(privateJwk)
231
+ };
232
+ });
233
+ /**
234
+ * Generates a redacted secret JWK carrying its `alg`, `use`, and optional `kid`.
235
+ *
236
+ * **Details**
237
+ *
238
+ * HMAC keys contain 32, 48, or 64 random bytes for HS256, HS384, or HS512.
239
+ * Direct A256GCM keys contain 32 bytes and use `enc` instead of `sig`.
240
+ *
241
+ * @see {@link importSecret} for preparing the JWK for use
242
+ * @see {@link generateKeyPair} for asymmetric keys
243
+ *
244
+ * @stability unstable
245
+ * @category constructors
246
+ * @since 4.1.1
247
+ */
248
+ export const generateSecret = (algorithm, options) => Effect.map(SecureRandom.SecureRandom.use(random => random.randomBytes(secretKeyLength(algorithm))), bytes => Redacted.make({
249
+ kty: "oct",
250
+ k: Base64Url.encode(bytes),
251
+ alg: algorithm,
252
+ use: algorithm === "dir" ? "enc" : "sig",
253
+ ...(options?.kid === undefined ? {} : {
254
+ kid: options.kid
255
+ })
256
+ }));
257
+ /**
258
+ * Imports a public JWK for an asymmetric algorithm.
259
+ *
260
+ * **Details**
261
+ *
262
+ * The key's family and curve must fit the algorithm, and any `alg`, `use`, or
263
+ * `key_ops` member must allow verification with it. Private members are
264
+ * rejected. To import untrusted JSON, decode it with {@link PublicJwk} first.
265
+ *
266
+ * @see {@link importPrivate}
267
+ * @see {@link exportPublic}
268
+ *
269
+ * @stability unstable
270
+ * @category constructors
271
+ * @since 4.1.1
272
+ */
273
+ export const importPublic = /*#__PURE__*/Effect.fnUntraced(function* (jwk, algorithm) {
274
+ if (hasPrivateMembers(jwk)) return yield* invalidKey("A public JWK cannot contain private members");
275
+ yield* checkMetadata(jwk, algorithm, "sig", ["verify"]);
276
+ if (!isPublicJwk(jwk)) return yield* invalidKey("Expected a public JWK with base64url key members");
277
+ const key = yield* KeyFormat.decodePublic(KeyFormat.jwk, signatureAlgorithm(algorithm), jsonWebKey(jwk)).pipe(Effect.mapError(publicKeyFailure));
278
+ yield* checkModulus(key);
279
+ return {
280
+ _tag: "PublicKey",
281
+ algorithm,
282
+ kid: jwk.kid,
283
+ jwk,
284
+ key
285
+ };
286
+ });
287
+ /**
288
+ * Imports a private JWK for an asymmetric algorithm.
289
+ *
290
+ * @see {@link importPkcs8} for importing DER or PEM keys
291
+ * @see {@link exportPrivate}
292
+ *
293
+ * @stability unstable
294
+ * @category constructors
295
+ * @since 4.1.1
296
+ */
297
+ export const importPrivate = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm) {
298
+ const jwk = Redacted.value(input);
299
+ yield* checkMetadata(jwk, algorithm, "sig", ["sign"]);
300
+ if (!isPrivateJwk(jwk)) return yield* invalidKey("Expected a private JWK with base64url key members");
301
+ const key = yield* KeyFormat.decodePrivate(KeyFormat.jwk, signatureAlgorithm(algorithm), jsonWebKey(jwk)).pipe(Effect.mapError(cryptoFailure(`Could not import the private JWK for ${algorithm}`)));
302
+ yield* checkModulus(key);
303
+ return {
304
+ _tag: "PrivateKey",
305
+ algorithm,
306
+ kid: jwk.kid,
307
+ key
308
+ };
309
+ });
310
+ /**
311
+ * Imports an SPKI public key from DER bytes or PEM text for an asymmetric algorithm.
312
+ *
313
+ * @see {@link importPublic} for importing JWK-encoded keys
314
+ * @see {@link exportSpki}
315
+ *
316
+ * @stability unstable
317
+ * @category constructors
318
+ * @since 4.1.1
319
+ */
320
+ export const importSpki = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm, options) {
321
+ const key = yield* KeyFormat.decodePublic(typeof input === "string" ? KeyFormat.pem(KeyFormat.spki) : KeyFormat.spki, signatureAlgorithm(algorithm), input).pipe(Effect.mapError(publicKeyFailure));
322
+ yield* checkModulus(key);
323
+ const jwk = yield* exportJwk(key, algorithm, options?.kid);
324
+ return {
325
+ _tag: "PublicKey",
326
+ algorithm,
327
+ kid: options?.kid,
328
+ jwk: jwk,
329
+ key
330
+ };
331
+ });
332
+ /**
333
+ * Imports a redacted PKCS#8 private key from DER bytes or PEM text for an asymmetric algorithm.
334
+ *
335
+ * @see {@link importPrivate} for importing JWK-encoded keys
336
+ * @see {@link exportPkcs8}
337
+ *
338
+ * @stability unstable
339
+ * @category constructors
340
+ * @since 4.1.1
341
+ */
342
+ export const importPkcs8 = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm, options) {
343
+ const data = Redacted.value(input);
344
+ const key = yield* KeyFormat.decodePrivate(typeof data === "string" ? KeyFormat.pem(KeyFormat.pkcs8) : KeyFormat.pkcs8, signatureAlgorithm(algorithm), data).pipe(Effect.mapError(cryptoFailure(`Could not import the PKCS#8 key for ${algorithm}`)));
345
+ yield* checkModulus(key);
346
+ return {
347
+ _tag: "PrivateKey",
348
+ algorithm,
349
+ kid: options?.kid,
350
+ key
351
+ };
352
+ });
353
+ /**
354
+ * Imports an octet JWK for HMAC signatures or for direct A256GCM encryption.
355
+ *
356
+ * **Details**
357
+ *
358
+ * HS256, HS384, and HS512 keys need at least 32, 48, and 64 bytes respectively;
359
+ * `dir` keys need exactly 32. Any `alg`,
360
+ * `use`, or `key_ops` member must allow the algorithm; `key_ops` must allow
361
+ * both of its operations.
362
+ *
363
+ * **Example** (Importing an HS256 key)
364
+ *
365
+ * ```ts import.meta.vitest
366
+ * import { Effect, Redacted } from "effect"
367
+ * import { Jwk } from "effect/jose"
368
+ *
369
+ * // Fixed public example material; generate application secrets securely.
370
+ * const secret = Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const)
371
+ * const key = await Effect.runPromise(Jwk.importSecret(secret, "HS256"))
372
+ * key.algorithm // => "HS256"
373
+ * ```
374
+ *
375
+ * @see {@link generateSecret}
376
+ *
377
+ * @stability unstable
378
+ * @category constructors
379
+ * @since 4.1.1
380
+ */
381
+ export const importSecret = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm) {
382
+ const jwk = Redacted.value(input);
383
+ if (algorithm !== "dir") {
384
+ yield* checkMetadata(jwk, algorithm, "sig", ["sign", "verify"]);
385
+ } else {
386
+ yield* checkMetadata(jwk, algorithm, "enc", ["encrypt", "decrypt"]);
387
+ }
388
+ const bytes = jwk.kty === "oct" ? decodeSegment(jwk.k) : undefined;
389
+ if (bytes === undefined) return yield* invalidKey("Expected an oct JWK with a base64url k member");
390
+ const length = secretKeyLength(algorithm);
391
+ if (algorithm === "dir" ? bytes.length !== length : bytes.length < length) {
392
+ return yield* invalidKey(algorithm === "dir" ? "dir keys must have exactly 32 bytes" : `${algorithm} keys must have at least ${length} bytes`);
393
+ }
394
+ const failure = cryptoFailure(`Could not import the ${algorithm} key`);
395
+ const key = algorithm !== "dir" ? yield* Effect.mapError(Mac.key(hmacAlgorithms[algorithm], bytes), failure) : yield* Effect.mapError(Aead.key(Aead.aes256Gcm, bytes), failure);
396
+ return {
397
+ _tag: "SecretKey",
398
+ algorithm,
399
+ kid: jwk.kid,
400
+ key
401
+ };
402
+ });
403
+ /**
404
+ * Exports a public key as a JWK carrying its `alg`, `kid`, and `use: "sig"`.
405
+ *
406
+ * @see {@link importPublic}
407
+ * @see {@link exportPrivate}
408
+ *
409
+ * @stability unstable
410
+ * @category encoding
411
+ * @since 4.1.1
412
+ */
413
+ export const exportPublic = key => Effect.map(exportJwk(key.key, key.algorithm, key.kid), jwk => jwk);
414
+ /**
415
+ * Exports a private key as a JWK carrying its `alg`, `kid`, and `use: "sig"`.
416
+ *
417
+ * @see {@link importPrivate}
418
+ *
419
+ * @stability unstable
420
+ * @category encoding
421
+ * @since 4.1.1
422
+ */
423
+ export const exportPrivate = key => Effect.map(exportJwk(key.key, key.algorithm, key.kid), jwk => Redacted.make(jwk));
424
+ export function exportSpki(key, options) {
425
+ return KeyFormat.encode(options?.format === "pem" ? KeyFormat.pem(KeyFormat.spki) : KeyFormat.spki, key.key).pipe(Effect.mapError(cryptoFailure("Could not export the SPKI key")));
426
+ }
427
+ export function exportPkcs8(key, options) {
428
+ return KeyFormat.encode(options?.format === "pem" ? KeyFormat.pem(KeyFormat.pkcs8) : KeyFormat.pkcs8, key.key).pipe(Effect.mapBoth({
429
+ onFailure: cryptoFailure("Could not export the PKCS#8 key"),
430
+ onSuccess: Redacted.make
431
+ }));
432
+ }
433
+ /**
434
+ * Computes an RFC 7638 JWK thumbprint, encoded as unpadded base64url.
435
+ *
436
+ * **Details**
437
+ *
438
+ * Uses SHA-256 by default; SHA-384 and SHA-512 are also supported. Only required
439
+ * key members are hashed, so metadata does not affect the result. Asymmetric
440
+ * private keys have the same thumbprint as their public keys. A secret key's
441
+ * thumbprint is a hash of the secret, so treat it as sensitive.
442
+ *
443
+ * @see {@link thumbprintUri}
444
+ *
445
+ * @stability unstable
446
+ * @category cryptography
447
+ * @since 4.1.1
448
+ */
449
+ export const thumbprint = /*#__PURE__*/Effect.fnUntraced(function* (input, hash = Digest.sha256) {
450
+ if (hash.name !== "SHA-256" && hash.name !== "SHA-384" && hash.name !== "SHA-512") {
451
+ return yield* invalidArgument("JWK thumbprints require SHA-256, SHA-384, or SHA-512");
452
+ }
453
+ const jwk = jsonWebKey(Redacted.isRedacted(input) ? Redacted.value(input) : "kty" in input ? input : yield* KeyFormat.encode(KeyFormat.jwk, input.key).pipe(Effect.mapError(cryptoFailure("Could not export the key for a thumbprint"))));
454
+ let required;
455
+ switch (jwk.kty) {
456
+ case "RSA":
457
+ required = {
458
+ e: jwk.e,
459
+ kty: jwk.kty,
460
+ n: jwk.n
461
+ };
462
+ break;
463
+ case "EC":
464
+ required = {
465
+ crv: jwk.crv,
466
+ kty: jwk.kty,
467
+ x: jwk.x,
468
+ y: jwk.y
469
+ };
470
+ break;
471
+ case "OKP":
472
+ required = {
473
+ crv: jwk.crv,
474
+ kty: jwk.kty,
475
+ x: jwk.x
476
+ };
477
+ break;
478
+ case "oct":
479
+ required = {
480
+ k: jwk.k,
481
+ kty: jwk.kty
482
+ };
483
+ break;
484
+ default:
485
+ return yield* invalidKey("Unsupported JWK key type for a thumbprint");
486
+ }
487
+ if (Object.values(required).some(value => typeof value !== "string" || value.length === 0) || (required.kty === "oct" ? !isCanonicalSegment(required.k) : !isPublicJwk(required))) {
488
+ return yield* invalidKey("Expected a JWK with canonical base64url key members");
489
+ }
490
+ const digest = yield* Digest.Digest;
491
+ return Base64Url.encode(yield* digest.digest(hash, utf8(JSON.stringify(required))));
492
+ });
493
+ /**
494
+ * Computes an RFC 9278 JWK thumbprint URI using SHA-256 by default.
495
+ *
496
+ * @see {@link thumbprint} for supported inputs and hashes
497
+ *
498
+ * @stability unstable
499
+ * @category cryptography
500
+ * @since 4.1.1
501
+ */
502
+ export const thumbprintUri = (input, hash = Digest.sha256) => Effect.map(thumbprint(input, hash), value => `urn:ietf:params:oauth:jwk-thumbprint:${hash.name.toLowerCase()}:${value}`);
503
+ //# sourceMappingURL=Jwk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Jwk.js","names":[],"sources":["../../src/jose/Jwk.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}