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
@@ -14,6 +14,9 @@
14
14
  * a failed one reopens it. An interrupted or `Ignored` probe frees the slot.
15
15
  * - The backoff count survives a close. It resets once the circuit has stayed
16
16
  * closed as long as it was last open.
17
+ * - Calls that must always run pass `onRejection: "allow"`. The circuit
18
+ * records them when it would admit them, and runs them unrecorded when it
19
+ * would refuse them, as in "Recording calls that must always run" below.
17
20
  *
18
21
  * The breaker never waits. Retry rejections outside it, as in "Retrying
19
22
  * rejections" below. Put `Effect.retry` and `Effect.timeout` inside it, so it
@@ -118,8 +121,38 @@
118
121
  * await Effect.runPromise(program) // => 42
119
122
  * ```
120
123
  *
124
+ * **Example** (Recording calls that must always run)
125
+ *
126
+ * The write runs even while the circuit is open, and its failures still open
127
+ * the circuit for the reads that share the key.
128
+ *
129
+ * ```ts import.meta.vitest
130
+ * import { Data, Effect } from "effect"
131
+ * import { CircuitBreaker } from "effect/persistence"
132
+ *
133
+ * class LedgerError extends Data.TaggedError("LedgerError") {}
134
+ *
135
+ * const program = Effect.gen(function*() {
136
+ * const breaker = yield* CircuitBreaker.make({
137
+ * tripPolicy: CircuitBreaker.consecutive(1),
138
+ * openDuration: "30 seconds"
139
+ * })
140
+ * const write = Effect.fail(new LedgerError()).pipe(
141
+ * breaker.execute({ key: "ledger", onRejection: "allow" })
142
+ * )
143
+ *
144
+ * // The first failed write opens the circuit, and the second still runs.
145
+ * yield* Effect.flip(write)
146
+ * const error = yield* Effect.flip(write)
147
+ * const state = yield* breaker.state("ledger")
148
+ * return [error._tag, state._tag]
149
+ * }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
150
+ *
151
+ * await Effect.runPromise(program) // => ["LedgerError", "Open"]
152
+ * ```
153
+ *
121
154
  * @stability experimental
122
- * @since 4.0.6
155
+ * @since 4.0.7
123
156
  */
124
157
  import * as Cause from "../Cause.js";
125
158
  import * as Clock from "../Clock.js";
@@ -143,7 +176,7 @@ import * as Redis from "./Redis.js";
143
176
  *
144
177
  * @stability experimental
145
178
  * @category type IDs
146
- * @since 4.0.6
179
+ * @since 4.0.7
147
180
  */
148
181
  export const TypeId = "~effect/persistence/CircuitBreaker";
149
182
  /**
@@ -184,7 +217,7 @@ export const TypeId = "~effect/persistence/CircuitBreaker";
184
217
  *
185
218
  * @stability experimental
186
219
  * @category services
187
- * @since 4.0.6
220
+ * @since 4.0.7
188
221
  */
189
222
  export const CircuitBreaker = /*#__PURE__*/Context.Service(TypeId);
190
223
  /**
@@ -230,7 +263,7 @@ export const CircuitBreaker = /*#__PURE__*/Context.Service(TypeId);
230
263
  *
231
264
  * @stability experimental
232
265
  * @category constructors
233
- * @since 4.0.6
266
+ * @since 4.0.7
234
267
  */
235
268
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
236
269
  const store = yield* CircuitBreakerStore;
@@ -248,21 +281,24 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
248
281
  const openFor = (outcome, admission) => outcome._tag === "Ignored" || outcome._tag === "Success" && (admission.probe || options.tripPolicy._tag === "Consecutive") ? Effect.succeed(Duration.zero) : Effect.map(openDurationFor(admission.consecutiveOpenings + 1), delay => outcome._tag === "Failure" && outcome.retryAfter !== undefined ? Duration.max(delay, Duration.min(outcome.retryAfter, maxOpenDuration)) : delay);
249
282
  const execute = (self, {
250
283
  classify,
251
- key
284
+ key,
285
+ onRejection
252
286
  }) => Effect.uninterruptibleMask(restore => Effect.scopedWith(Effect.fnUntraced(function* (admitScope) {
253
287
  const admitted = yield* Effect.exit(Scope.provide(store.admit(key), admitScope));
254
288
  if (Exit.isFailure(admitted)) {
255
289
  const error = Cause.findErrorOption(admitted.cause);
256
- if (onStoreError === "fail" || error._tag === "None" || error.value.reason._tag !== "CircuitBreakerStoreError") {
257
- return yield* Effect.failCause(admitted.cause);
290
+ if (error._tag === "None") return yield* Effect.failCause(admitted.cause);
291
+ if (error.value.reason._tag !== "CircuitBreakerStoreError") {
292
+ return onRejection === "allow" && !Cause.hasDies(admitted.cause) ? yield* restore(self) : yield* Effect.failCause(admitted.cause);
258
293
  }
294
+ if (onStoreError === "fail") return yield* Effect.failCause(admitted.cause);
259
295
  yield* reportUnhandled("CircuitBreaker store unavailable, running the call unrecorded", admitted.cause);
260
296
  return yield* restore(self);
261
297
  }
262
298
  const admission = admitted.value;
263
299
  yield* publish(admission.transition);
264
300
  const exit = yield* Effect.exit(restore(self));
265
- const classified = yield* classifyExit(exit, classify, restore);
301
+ const classified = yield* classifyExit(exit, admission.probe, classify, restore);
266
302
  const outcome = Exit.isSuccess(classified) ? classified.value : ignored;
267
303
  yield* store.record({
268
304
  key,
@@ -290,7 +326,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
290
326
  *
291
327
  * @stability experimental
292
328
  * @category layers
293
- * @since 4.0.6
329
+ * @since 4.0.7
294
330
  */
295
331
  export const layer = options => Layer.effect(CircuitBreaker, make(options));
296
332
  // Reports an error that has no caller to receive it at `UnhandledLogLevel`, as
@@ -301,7 +337,7 @@ const reportUnhandled = (message, cause) => Effect.withFiber(fiber => {
301
337
  const level = fiber.getRef(UnhandledLogLevel);
302
338
  return level === undefined ? Effect.void : Effect.logWithLevel(level)(message, cause);
303
339
  });
304
- const classifyExit = (exit, classify, restore) => {
340
+ const classifyExit = (exit, probe, classify, restore) => {
305
341
  if (Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)) {
306
342
  return Effect.succeed(Exit.succeed(ignored));
307
343
  }
@@ -309,7 +345,9 @@ const classifyExit = (exit, classify, restore) => {
309
345
  return Effect.succeed(Exit.succeed(Exit.isSuccess(exit) ? success : failure()));
310
346
  }
311
347
  return Effect.exit(restore(Effect.suspend(() => {
312
- const outcome = classify(exit);
348
+ const outcome = classify(exit, {
349
+ probe
350
+ });
313
351
  return Effect.isEffect(outcome) ? outcome : Effect.succeed(outcome);
314
352
  })));
315
353
  };
@@ -342,7 +380,7 @@ const makeOpenDuration = openDuration => {
342
380
  *
343
381
  * @stability experimental
344
382
  * @category constructors
345
- * @since 4.0.6
383
+ * @since 4.0.7
346
384
  */
347
385
  export const consecutive = failures => {
348
386
  if (!Number.isInteger(failures) || failures < 1) {
@@ -371,7 +409,7 @@ export const consecutive = failures => {
371
409
  *
372
410
  * @stability experimental
373
411
  * @category constructors
374
- * @since 4.0.6
412
+ * @since 4.0.7
375
413
  */
376
414
  export const rate = options => {
377
415
  const threshold = options.threshold ?? 0.5;
@@ -398,7 +436,7 @@ export const rate = options => {
398
436
  *
399
437
  * @stability experimental
400
438
  * @category constructors
401
- * @since 4.0.6
439
+ * @since 4.0.7
402
440
  */
403
441
  export const success = {
404
442
  _tag: "Success"
@@ -408,7 +446,7 @@ export const success = {
408
446
  *
409
447
  * @stability experimental
410
448
  * @category constructors
411
- * @since 4.0.6
449
+ * @since 4.0.7
412
450
  */
413
451
  export const ignored = {
414
452
  _tag: "Ignored"
@@ -424,7 +462,7 @@ export const ignored = {
424
462
  *
425
463
  * @stability experimental
426
464
  * @category constructors
427
- * @since 4.0.6
465
+ * @since 4.0.7
428
466
  */
429
467
  export const failure = options => ({
430
468
  _tag: "Failure",
@@ -435,7 +473,7 @@ export const failure = options => ({
435
473
  *
436
474
  * @stability experimental
437
475
  * @category errors
438
- * @since 4.0.6
476
+ * @since 4.0.7
439
477
  */
440
478
  export class CircuitOpen extends /*#__PURE__*/Schema.Error("effect/persistence/CircuitBreaker/CircuitOpen")({
441
479
  _tag: /*#__PURE__*/Schema.tag("CircuitOpen"),
@@ -446,7 +484,7 @@ export class CircuitOpen extends /*#__PURE__*/Schema.Error("effect/persistence/C
446
484
  * Public message used when an Open circuit rejects a call.
447
485
  *
448
486
  * @stability experimental
449
- * @since 4.0.6
487
+ * @since 4.0.7
450
488
  */
451
489
  get message() {
452
490
  return `Circuit open`;
@@ -457,7 +495,7 @@ export class CircuitOpen extends /*#__PURE__*/Schema.Error("effect/persistence/C
457
495
  *
458
496
  * @stability experimental
459
497
  * @category errors
460
- * @since 4.0.6
498
+ * @since 4.0.7
461
499
  */
462
500
  export class CircuitHalfOpen extends /*#__PURE__*/Schema.Error("effect/persistence/CircuitBreaker/CircuitHalfOpen")({
463
501
  _tag: /*#__PURE__*/Schema.tag("CircuitHalfOpen"),
@@ -467,7 +505,7 @@ export class CircuitHalfOpen extends /*#__PURE__*/Schema.Error("effect/persisten
467
505
  * Public message used when a HalfOpen circuit rejects a call.
468
506
  *
469
507
  * @stability experimental
470
- * @since 4.0.6
508
+ * @since 4.0.7
471
509
  */
472
510
  get message() {
473
511
  return `Circuit half-open`;
@@ -478,7 +516,7 @@ export class CircuitHalfOpen extends /*#__PURE__*/Schema.Error("effect/persisten
478
516
  *
479
517
  * @stability experimental
480
518
  * @category errors
481
- * @since 4.0.6
519
+ * @since 4.0.7
482
520
  */
483
521
  export class CircuitBreakerStoreError extends /*#__PURE__*/Schema.Error("effect/persistence/CircuitBreaker/CircuitBreakerStoreError")({
484
522
  _tag: /*#__PURE__*/Schema.tag("CircuitBreakerStoreError"),
@@ -490,7 +528,7 @@ export class CircuitBreakerStoreError extends /*#__PURE__*/Schema.Error("effect/
490
528
  *
491
529
  * @stability experimental
492
530
  * @category errors
493
- * @since 4.0.6
531
+ * @since 4.0.7
494
532
  */
495
533
  export const CircuitBreakerErrorReason = /*#__PURE__*/Schema.Union([CircuitOpen, CircuitHalfOpen, CircuitBreakerStoreError]);
496
534
  /**
@@ -498,7 +536,7 @@ export const CircuitBreakerErrorReason = /*#__PURE__*/Schema.Union([CircuitOpen,
498
536
  *
499
537
  * @stability experimental
500
538
  * @category type IDs
501
- * @since 4.0.6
539
+ * @since 4.0.7
502
540
  */
503
541
  export const ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerError";
504
542
  /**
@@ -507,7 +545,7 @@ export const ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerErr
507
545
  *
508
546
  * @stability experimental
509
547
  * @category errors
510
- * @since 4.0.6
548
+ * @since 4.0.7
511
549
  */
512
550
  export class CircuitBreakerError extends /*#__PURE__*/Schema.Error(ErrorTypeId)({
513
551
  _tag: /*#__PURE__*/Schema.tag("CircuitBreakerError"),
@@ -528,7 +566,7 @@ export class CircuitBreakerError extends /*#__PURE__*/Schema.Error(ErrorTypeId)(
528
566
  * Marks this value as a circuit breaker error for runtime guards.
529
567
  *
530
568
  * @stability experimental
531
- * @since 4.0.6
569
+ * @since 4.0.7
532
570
  */
533
571
  [ErrorTypeId] = ErrorTypeId;
534
572
  get message() {
@@ -555,7 +593,7 @@ export class CircuitBreakerError extends /*#__PURE__*/Schema.Error(ErrorTypeId)(
555
593
  *
556
594
  * @stability experimental
557
595
  * @category services
558
- * @since 4.0.6
596
+ * @since 4.0.7
559
597
  */
560
598
  export class CircuitBreakerStore extends /*#__PURE__*/Context.Service()("effect/persistence/CircuitBreaker/CircuitBreakerStore") {}
561
599
  /**
@@ -570,7 +608,7 @@ export class CircuitBreakerStore extends /*#__PURE__*/Context.Service()("effect/
570
608
  *
571
609
  * @stability experimental
572
610
  * @category layers
573
- * @since 4.0.6
611
+ * @since 4.0.7
574
612
  */
575
613
  export const layerStoreMemory = options => Layer.sync(CircuitBreakerStore, () => {
576
614
  const idleTimeToLive = Duration.toMillis(Duration.fromInputUnsafe(options?.idleTimeToLive ?? "1 hour"));
@@ -798,7 +836,7 @@ export const layerStoreMemory = options => Layer.sync(CircuitBreakerStore, () =>
798
836
  *
799
837
  * @stability experimental
800
838
  * @category layers
801
- * @since 4.0.6
839
+ * @since 4.0.7
802
840
  */
803
841
  export const layerStoreRedis = options => Layer.effect(CircuitBreakerStore, makeStoreRedis(options));
804
842
  /**
@@ -811,7 +849,7 @@ export const layerStoreRedis = options => Layer.effect(CircuitBreakerStore, make
811
849
  *
812
850
  * @stability experimental
813
851
  * @category layers
814
- * @since 4.0.6
852
+ * @since 4.0.7
815
853
  */
816
854
  export const layerStoreRedisConfig = options => Layer.effect(CircuitBreakerStore, Effect.flatMap(Config.unwrap(options), makeStoreRedis));
817
855
  const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options) {
@@ -1 +1 @@
1
- {"version":3,"file":"CircuitBreaker.js","names":[],"sources":["../../src/persistence/CircuitBreaker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CircuitBreaker.js","names":[],"sources":["../../src/persistence/CircuitBreaker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -76,6 +76,9 @@ export declare const RateLimiter: Context.Service<RateLimiter, RateLimiter>;
76
76
  * The limiter supports fixed-window and token-bucket algorithms and either
77
77
  * fails or returns a delay when a limit is exceeded.
78
78
  *
79
+ * A nonpositive `limit` admits no positive token requests: fail mode rejects
80
+ * them and delay mode returns an infinite delay without touching the store.
81
+ *
79
82
  * @stability unstable
80
83
  * @category constructors
81
84
  * @since 4.0.0
@@ -469,6 +472,11 @@ export declare class RateLimiterStore extends RateLimiterStore_base {
469
472
  /**
470
473
  * Provides a process-local in-memory `RateLimiterStore`.
471
474
  *
475
+ * **Details**
476
+ *
477
+ * Entries expire once their state is indistinguishable from an unseen key, and
478
+ * a background sweep scoped to the layer removes expired entries periodically.
479
+ *
472
480
  * @stability unstable
473
481
  * @category layers
474
482
  * @since 4.0.0
@@ -478,6 +486,13 @@ export declare const layerStoreMemory: Layer.Layer<RateLimiterStore>;
478
486
  * Creates a Redis-backed `RateLimiterStore` using Lua scripts and the
479
487
  * configured key prefix.
480
488
  *
489
+ * **Details**
490
+ *
491
+ * State for a rate-limit key is stored under `<prefix><key>`, with
492
+ * `<prefix><key>:refill` holding token-bucket refill times and
493
+ * `<prefix><key>:adaptive` holding adaptive state. `%` and `:` in the key are
494
+ * percent-encoded so different keys never share Redis state.
495
+ *
481
496
  * @stability unstable
482
497
  * @category constructors
483
498
  * @since 4.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/persistence/RateLimiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/persistence/RateLimiter.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,9 @@ import * as Context from "../Context.js";
16
16
  import * as Duration from "../Duration.js";
17
17
  import * as Effect from "../Effect.js";
18
18
  import { flow, identity } from "../Function.js";
19
+ import { escapeKeySegment } from "../internal/persistence.js";
19
20
  import * as Layer from "../Layer.js";
21
+ import * as Schedule from "../Schedule.js";
20
22
  import * as Schema from "../Schema.js";
21
23
  import * as Redis from "./Redis.js";
22
24
  /**
@@ -48,6 +50,9 @@ export const RateLimiter = /*#__PURE__*/Context.Service(TypeId);
48
50
  * The limiter supports fixed-window and token-bucket algorithms and either
49
51
  * fails or returns a delay when a limit is exceeded.
50
52
  *
53
+ * A nonpositive `limit` admits no positive token requests: fail mode rejects
54
+ * them and delay mode returns an infinite delay without touching the store.
55
+ *
51
56
  * @stability unstable
52
57
  * @category constructors
53
58
  * @since 4.0.0
@@ -64,9 +69,8 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
64
69
  const algorithm = options.algorithm ?? "fixed-window";
65
70
  const window = Duration.max(Duration.fromInputUnsafe(options.window), Duration.millis(1));
66
71
  const windowMillis = Duration.toMillis(window);
67
- const refillRate = Duration.divideUnsafe(window, options.limit);
68
- const refillRateMillis = Duration.toMillis(refillRate);
69
- if (onExceeded === "fail" && tokens > options.limit) {
72
+ const exceeded = tokens > options.limit;
73
+ if (onExceeded === "fail" && exceeded) {
70
74
  return Effect.fail(new RateLimiterError({
71
75
  reason: new RateLimitExceeded({
72
76
  key: options.key,
@@ -76,6 +80,17 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
76
80
  })
77
81
  }));
78
82
  }
83
+ // A nonpositive limit never refills, so skip the store and its infinite refill rate.
84
+ if (options.limit <= 0) {
85
+ return Effect.succeed({
86
+ delay: exceeded ? Duration.infinity : Duration.zero,
87
+ limit: options.limit,
88
+ remaining: options.limit - tokens,
89
+ resetAfter: exceeded ? Duration.infinity : Duration.zero
90
+ });
91
+ }
92
+ const refillRate = Duration.divideUnsafe(window, options.limit);
93
+ const refillRateMillis = Duration.toMillis(refillRate);
79
94
  if (algorithm === "fixed-window") {
80
95
  return Effect.flatMap(store.fixedWindow({
81
96
  key: options.key,
@@ -318,14 +333,15 @@ const clampAdaptiveDurationMillis = millis => {
318
333
  if (Number.isNaN(millis) || millis <= 0) return 1;
319
334
  return Math.min(millis, adaptiveStateMaxWindowMillis);
320
335
  };
336
+ const memoryStoreSweepInterval = /*#__PURE__*/Duration.minutes(1);
321
337
  /**
322
- * Provides a process-local in-memory `RateLimiterStore`.
338
+ * Creates a process-local `RateLimiterStore`. Every entry expires once its
339
+ * state is indistinguishable from a missing key, and a background sweep tied to
340
+ * the scope removes expired entries, so an idle store drains to empty.
323
341
  *
324
- * @stability unstable
325
- * @category layers
326
- * @since 4.0.0
342
+ * @internal
327
343
  */
328
- export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () => {
344
+ export const makeMemoryStore = /*#__PURE__*/Effect.gen(function* () {
329
345
  const fixedCounters = new Map();
330
346
  const tokenBuckets = new Map();
331
347
  const adaptiveStates = new Map();
@@ -341,7 +357,7 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
341
357
  const cooldownExpiresAt = cooldownUntil => cooldownUntil + adaptiveStateTtlGraceMillis;
342
358
  const learningExpiresAt = (now, fallbackWindow) => now + Duration.toMillis(fallbackWindow) + adaptiveStateTtlGraceMillis;
343
359
  const learnedExpiresAt = (now, learnedWindowMillis) => now + learnedWindowMillis + adaptiveStateTtlGraceMillis;
344
- return RateLimiterStore.of({
360
+ const store = RateLimiterStore.of({
345
361
  fixedWindow: options => Effect.clockWith(clock => Effect.sync(() => {
346
362
  const refillRateMillis = Duration.toMillis(options.refillRate);
347
363
  const now = clock.currentTimeMillisUnsafe();
@@ -353,7 +369,7 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
353
369
  };
354
370
  fixedCounters.set(options.key, counter);
355
371
  }
356
- if (options.limit && counter.count + options.tokens > options.limit) {
372
+ if (options.limit !== undefined && counter.count + options.tokens > options.limit) {
357
373
  return [counter.count + options.tokens, counter.expiresAt - now];
358
374
  }
359
375
  counter.count += options.tokens;
@@ -364,10 +380,11 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
364
380
  const refillRateMillis = Duration.toMillis(options.refillRate);
365
381
  const now = clock.currentTimeMillisUnsafe();
366
382
  let bucket = tokenBuckets.get(options.key);
367
- if (!bucket) {
383
+ if (!bucket || bucket.expiresAt <= now) {
368
384
  bucket = {
369
385
  tokens: options.limit,
370
- lastRefill: now
386
+ lastRefill: now,
387
+ expiresAt: now
371
388
  };
372
389
  tokenBuckets.set(options.key, bucket);
373
390
  }
@@ -383,6 +400,8 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
383
400
  if (options.allowOverflow || newTokenCount >= 0) {
384
401
  bucket.tokens = newTokenCount;
385
402
  }
403
+ // The bucket is indistinguishable from a fresh one once fully refilled
404
+ bucket.expiresAt = bucket.lastRefill + Math.ceil(options.limit - bucket.tokens) * refillRateMillis;
386
405
  return [newTokenCount, Math.max(0, now - bucket.lastRefill)];
387
406
  })),
388
407
  adaptiveConsume: options => Effect.clockWith(clock => Effect.sync(() => {
@@ -506,11 +525,48 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
506
525
  }
507
526
  }))
508
527
  });
528
+ const sweep = Effect.clockWith(clock => Effect.sync(() => {
529
+ const now = clock.currentTimeMillisUnsafe();
530
+ for (const map of [fixedCounters, tokenBuckets, adaptiveStates]) {
531
+ for (const [key, entry] of map) {
532
+ if (entry.expiresAt <= now) {
533
+ map.delete(key);
534
+ }
535
+ }
536
+ }
537
+ }));
538
+ yield* sweep.pipe(Effect.repeat(Schedule.spaced(memoryStoreSweepInterval)), Effect.forkScoped);
539
+ return {
540
+ store,
541
+ get size() {
542
+ return fixedCounters.size + tokenBuckets.size + adaptiveStates.size;
543
+ }
544
+ };
509
545
  });
546
+ /**
547
+ * Provides a process-local in-memory `RateLimiterStore`.
548
+ *
549
+ * **Details**
550
+ *
551
+ * Entries expire once their state is indistinguishable from an unseen key, and
552
+ * a background sweep scoped to the layer removes expired entries periodically.
553
+ *
554
+ * @stability unstable
555
+ * @category layers
556
+ * @since 4.0.0
557
+ */
558
+ export const layerStoreMemory = /*#__PURE__*/Layer.effect(RateLimiterStore)(/*#__PURE__*/Effect.map(makeMemoryStore, memory => memory.store));
510
559
  /**
511
560
  * Creates a Redis-backed `RateLimiterStore` using Lua scripts and the
512
561
  * configured key prefix.
513
562
  *
563
+ * **Details**
564
+ *
565
+ * State for a rate-limit key is stored under `<prefix><key>`, with
566
+ * `<prefix><key>:refill` holding token-bucket refill times and
567
+ * `<prefix><key>:adaptive` holding adaptive state. `%` and `:` in the key are
568
+ * percent-encoded so different keys never share Redis state.
569
+ *
514
570
  * @stability unstable
515
571
  * @category constructors
516
572
  * @since 4.0.0
@@ -518,13 +574,14 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
518
574
  export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options) {
519
575
  const prefix = options?.prefix ?? "ratelimiter:";
520
576
  const redis = yield* Redis.Redis;
577
+ const redisKey = key => `${prefix}${escapeKeySegment(key)}`;
521
578
  const fixedWindow = redis.eval(fixedWindowScript);
522
579
  const tokenBucket = redis.eval(tokenBucketScript);
523
580
  const adaptiveConsume = redis.eval(adaptiveConsumeScript);
524
581
  const adaptiveFeedback = redis.eval(adaptiveFeedbackScript);
525
582
  return RateLimiterStore.of({
526
583
  fixedWindow(options) {
527
- const key = `${prefix}${options.key}`;
584
+ const key = redisKey(options.key);
528
585
  const refillMillis = Duration.toMillis(options.refillRate);
529
586
  return Effect.mapError(Effect.map(fixedWindow(key, options.tokens, refillMillis, options.limit), ([currentTokens, nextPttl]) => [Number(currentTokens), nextPttl]), cause => new RateLimiterError({
530
587
  reason: new RateLimitStoreError({
@@ -534,7 +591,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
534
591
  }));
535
592
  },
536
593
  tokenBucket(options) {
537
- const key = `${prefix}${options.key}`;
594
+ const key = redisKey(options.key);
538
595
  const lastRefillKey = `${key}:refill`;
539
596
  const refillMillis = Duration.toMillis(options.refillRate);
540
597
  return Effect.clockWith(clock => Effect.mapError(Effect.map(tokenBucket(key, lastRefillKey, options.tokens, refillMillis, options.limit, clock.currentTimeMillisUnsafe(), options.allowOverflow ? 1 : 0), ([remaining, elapsedMillis]) => [Number(remaining), Number(elapsedMillis)]), cause => new RateLimiterError({
@@ -545,7 +602,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
545
602
  })));
546
603
  },
547
604
  adaptiveConsume(options) {
548
- const key = `${prefix}${options.key}:adaptive`;
605
+ const key = `${redisKey(options.key)}:adaptive`;
549
606
  return Effect.map(Effect.mapError(adaptiveConsume(key, options.tokens, Duration.toMillis(options.fallbackWindow), adaptiveStateTtlGraceMillis), cause => new RateLimiterError({
550
607
  reason: new RateLimitStoreError({
551
608
  message: `Failed to execute adaptiveConsume rate limiting command`,
@@ -560,7 +617,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
560
617
  adaptiveFeedback(options) {
561
618
  if (options.status !== 429 || options.retryAfter === undefined) return Effect.void;
562
619
  const retryAfterMillis = clampAdaptiveDurationMillis(Duration.toMillis(options.retryAfter));
563
- const key = `${prefix}${options.key}:adaptive`;
620
+ const key = `${redisKey(options.key)}:adaptive`;
564
621
  return Effect.asVoid(Effect.mapError(adaptiveFeedback(key, options.epoch, options.tokens, retryAfterMillis, adaptiveStateTtlGraceMillis, adaptiveStateMaxWindowMillis), cause => new RateLimiterError({
565
622
  reason: new RateLimitStoreError({
566
623
  message: `Failed to execute adaptiveFeedback rate limiting command`,
@@ -580,6 +637,9 @@ local limit = tonumber(ARGV[3])
580
637
  local current = tonumber(redis.call("GET", key))
581
638
 
582
639
  if not current then
640
+ if limit and tokens > limit then
641
+ return { string.format("%.17g", tokens), 0 }
642
+ end
583
643
  local nextpttl = math.max(1, math.ceil(refillms * tokens))
584
644
  redis.call("SET", key, tokens, "PX", nextpttl)
585
645
  return { string.format("%.17g", tokens), nextpttl }