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
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlHeaders.d.ts","sourceRoot":"","sources":["../../src/internal/graphqlHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAItC,eAAO,MAAM,aAAa,+HAKzB,CAAA"}
1
+ {"version":3,"file":"graphqlHeaders.d.ts","sourceRoot":"","sources":["../../src/internal/graphqlHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAItC,eAAO,MAAM,aAAa,+HAKzB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAAW,MAAM,GAAG,SAAS,OAAO,MAAM,KAAG,QAAQ,CAAC,QAAQ,GAAG,SAI5F,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import * as Headers from "../http/Headers.js";
2
+ import * as Result from "../Result.js";
2
3
  import * as Schema from "../Schema.js";
3
4
  import * as SchemaGetter from "../SchemaGetter.js";
4
5
  // Keep headers branded at runtime while encoding only their string entries.
@@ -8,4 +9,14 @@ export const HeadersSchema = /*#__PURE__*/Schema.Record(Schema.String, Schema.St
8
9
  ...headers
9
10
  }))
10
11
  }));
12
+ /**
13
+ * Parses a `Retry-After` header value, either whole seconds or an HTTP date,
14
+ * into a `Duration` measured from `now` (epoch milliseconds). Anything else,
15
+ * such as `1.5` or `-1`, yields `undefined`.
16
+ */
17
+ export const parseRetryAfter = (value, now) => {
18
+ if (value === undefined) return undefined;
19
+ const retryAfter = Headers.parseRetryAfter(value);
20
+ return Result.isSuccess(retryAfter) ? Headers.retryAfterDelay(retryAfter.success, now) : undefined;
21
+ };
11
22
  //# sourceMappingURL=graphqlHeaders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlHeaders.js","names":[],"sources":["../../src/internal/graphqlHeaders.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB;AAC7C,OAAO,KAAK,MAAM,MAAM,cAAc;AACtC,OAAO,KAAK,YAAY,MAAM,oBAAoB;AAElD;AACA,OAAO,MAAM,aAAa,gBAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,cAC3E,MAAM,CAAC,QAAQ,cAAC,MAAM,CAAC,OAAO,CAAkB,OAAO,CAAC,SAAS,CAAC,EAAE;EAClE,MAAM,eAAE,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;EACjD,MAAM,eAAE,YAAY,CAAC,SAAS,CAAE,OAAO,KAAM;IAAE,GAAG;EAAO,CAAE,CAAC;CAC7D,CAAC,CACH","ignoreList":[]}
1
+ {"version":3,"file":"graphqlHeaders.js","names":[],"sources":["../../src/internal/graphqlHeaders.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB;AAC7C,OAAO,KAAK,MAAM,MAAM,cAAc;AACtC,OAAO,KAAK,MAAM,MAAM,cAAc;AACtC,OAAO,KAAK,YAAY,MAAM,oBAAoB;AAElD;AACA,OAAO,MAAM,aAAa,gBAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,cAC3E,MAAM,CAAC,QAAQ,cAAC,MAAM,CAAC,OAAO,CAAkB,OAAO,CAAC,SAAS,CAAC,EAAE;EAClE,MAAM,eAAE,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;EACjD,MAAM,eAAE,YAAY,CAAC,SAAS,CAAE,OAAO,KAAM;IAAE,GAAG;EAAO,CAAE,CAAC;CAC7D,CAAC,CACH;AAED;;;;;AAKA,OAAO,MAAM,eAAe,GAAG,CAAC,KAAyB,EAAE,GAAW,KAAmC;EACvG,IAAI,KAAK,KAAK,SAAS,EAAE,OAAO,SAAS;EACzC,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;EACjD,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACpG,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ type Format = "JSON5" | "JSONC";
2
+ export declare const syntaxError: (text: string, at: number, format: Format) => SyntaxError;
3
+ export declare const parse: (text: string, format: Format) => unknown;
4
+ export {};
5
+ //# sourceMappingURL=jsonParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonParser.d.ts","sourceRoot":"","sources":["../../src/internal/jsonParser.ts"],"names":[],"mappings":"AA0BA,KAAK,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAE/B,eAAO,MAAM,WAAW,SAAU,MAAM,MAAM,MAAM,UAAU,MAAM,KAAG,WAMtE,CAAA;AAgBD,eAAO,MAAM,KAAK,SAAU,MAAM,UAAU,MAAM,KAAG,OAgQpD,CAAA"}
@@ -0,0 +1,280 @@
1
+ const json5Space = /(?:[\t\n\v\f\r \u00A0\u2028\u2029\uFEFF\p{Zs}]|\/\/[^\n\r\u2028\u2029]*|\/\*[^]*?\*\/)*/uy;
2
+ const idStart = /[$_\p{ID_Start}]/u;
3
+ const idPart = /[$\u200C\u200D\p{ID_Continue}]/u;
4
+ const idName = /[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*/uy;
5
+ const hexDigits = /[\da-fA-F]*/y;
6
+ const isDigit = code => code >= 0x30 && code <= 0x39;
7
+ const isAsciiIdPart = code => code >= 0x61 && code <= 0x7a || code >= 0x41 && code <= 0x5a || isDigit(code) || code === 0x5f || code === 0x24;
8
+ const jsoncSpace = /(?:[ \t\r\n]|\/\/[^\r\n]*|\/\*[^]*?\*\/)*/uy;
9
+ const jsonNumber = /-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/y;
10
+ // The escapes JSON and JSON5 share, indexed by the character after the backslash.
11
+ // A null prototype keeps absent entries from resolving to inherited properties.
12
+ const escapes = /*#__PURE__*/Object.create(null);
13
+ for (const [escape, value] of ["\"\"", "\\\\", "//", "b\b", "f\f", "n\n", "r\r", "t\t"]) {
14
+ escapes[/*#__PURE__*/escape.charCodeAt(0)] = value;
15
+ }
16
+ // Runs of string content that need no further inspection.
17
+ const json5Double = /[^"\\\n\r]*/y;
18
+ const json5Single = /[^'\\\n\r]*/y;
19
+ // JSON forbids unescaped U+0000 through U+001F.
20
+ // oxlint-disable-next-line no-control-regex
21
+ const jsonDouble = /[^"\\\x00-\x1f]*/y;
22
+ export const syntaxError = (text, at, format) => {
23
+ const json5 = format === "JSON5";
24
+ const lines = text.slice(0, at).split(json5 ? /\r\n|[\n\r\u2028\u2029]/ : /\r\n|[\n\r]/);
25
+ return new SyntaxError(`Invalid ${json5 ? "JSON5" : "JSONC"} at line ${lines.length}, column ${lines[lines.length - 1].length + 1}`);
26
+ };
27
+ const set = (object, key, value) => {
28
+ // Members are own data properties, as with JSON.parse. Assignment creates one unless
29
+ // the key is inherited (`__proto__`, `constructor`, added accessors, ...), where it
30
+ // could run a setter or throw, so inherited keys are defined directly.
31
+ if (key in Object.prototype) {
32
+ Object.defineProperty(object, key, {
33
+ value,
34
+ writable: true,
35
+ enumerable: true,
36
+ configurable: true
37
+ });
38
+ } else object[key] = value;
39
+ };
40
+ // JSONC only uses the strict mode to locate errors after JSON.parse fails.
41
+ export const parse = (text, format) => {
42
+ const json5 = format === "JSON5";
43
+ const space = json5 ? json5Space : jsoncSpace;
44
+ // JSON strings forbid raw characters below U+0020; JSON5 strings only forbid line breaks.
45
+ const plainFloor = json5 ? 0 : 0x20;
46
+ let i = 0;
47
+ const fail = at => {
48
+ throw syntaxError(text, at, format);
49
+ };
50
+ /** Skips whitespace and comments, rejecting a `/` that starts neither. */
51
+ const skip = () => {
52
+ // ASCII whitespace dominates formatted documents; the pattern handles the rest.
53
+ let code = text.charCodeAt(i);
54
+ while (code === 0x20 || code === 0x0a || code === 0x0d || code === 0x09) code = text.charCodeAt(++i);
55
+ if (code > 0x20 && code !== 0x2f && code < 0xa0) return;
56
+ space.lastIndex = i;
57
+ space.test(text);
58
+ i = space.lastIndex;
59
+ if (text.charCodeAt(i) === 0x2f) {
60
+ fail(text.charAt(i + 1) === "*" ? text.length : i + 1);
61
+ }
62
+ };
63
+ /** Advances past a sticky pattern at `i`, returning the matched length. */
64
+ const run = pattern => {
65
+ pattern.lastIndex = i;
66
+ const length = pattern.test(text) ? pattern.lastIndex - i : 0;
67
+ i += length;
68
+ return length;
69
+ };
70
+ const word = (literal, result) => {
71
+ if (!text.startsWith(literal, i)) {
72
+ let at = i;
73
+ while (text.charAt(at) === literal[at - i]) at++;
74
+ fail(at);
75
+ }
76
+ i += literal.length;
77
+ return result;
78
+ };
79
+ const hex = count => {
80
+ let value = 0;
81
+ for (const end = i + count; i < end; i++) {
82
+ const code = text.charCodeAt(i);
83
+ const lower = code | 0x20;
84
+ if (isDigit(code)) value = value * 16 + code - 0x30;else if (lower >= 0x61 && lower <= 0x66) value = value * 16 + lower - 0x57;else fail(i);
85
+ }
86
+ return String.fromCharCode(value);
87
+ };
88
+ const number = () => {
89
+ if (!json5) {
90
+ const start = i;
91
+ if (run(jsonNumber) === 0) fail(i);
92
+ return Number(text.slice(start, i));
93
+ }
94
+ let code = text.charCodeAt(i);
95
+ let sign = 1;
96
+ if (code === 0x2b || code === 0x2d) {
97
+ if (code === 0x2d) sign = -1;
98
+ code = text.charCodeAt(++i);
99
+ }
100
+ const start = i;
101
+ if (code === 0x49) return word("Infinity", sign * Infinity);
102
+ if (code === 0x4e) return word("NaN", NaN);
103
+ if (code === 0x30 && (text.charCodeAt(i + 1) | 0x20) === 0x78) {
104
+ i += 2;
105
+ if (run(hexDigits) === 0) fail(i);
106
+ return sign * Number(text.slice(start, i));
107
+ }
108
+ // Integers below 2^53 are accumulated directly; anything else goes through Number.
109
+ let integer = 0;
110
+ if (code === 0x30) code = text.charCodeAt(++i);else if (isDigit(code)) {
111
+ do {
112
+ integer = integer * 10 + code - 0x30;
113
+ code = text.charCodeAt(++i);
114
+ } while (isDigit(code));
115
+ } else if (code !== 0x2e) fail(i);
116
+ if (code !== 0x2e && code !== 0x65 && code !== 0x45 && i - start < 16) return sign * integer;
117
+ if (code === 0x2e) {
118
+ const fraction = ++i;
119
+ while (isDigit(text.charCodeAt(i))) i++;
120
+ // A leading decimal point needs digits after it; a trailing one does not.
121
+ if (i === fraction && fraction === start + 1) fail(i);
122
+ code = text.charCodeAt(i);
123
+ }
124
+ if (code === 0x65 || code === 0x45) {
125
+ code = text.charCodeAt(++i);
126
+ if (code === 0x2b || code === 0x2d) i++;
127
+ const exponent = i;
128
+ while (isDigit(text.charCodeAt(i))) i++;
129
+ if (i === exponent) fail(i);
130
+ }
131
+ return sign * Number(text.slice(start, i));
132
+ };
133
+ const string = quote => {
134
+ const plain = quote === 0x27 ? json5Single : json5 ? json5Double : jsonDouble;
135
+ let result = "";
136
+ for (i++;;) {
137
+ // Plain content runs until the quote, an escape, a line break, a control character
138
+ // JSON forbids, or the end of input, where `code` is NaN and fails the last test.
139
+ const start = i;
140
+ let code = text.charCodeAt(i);
141
+ // Short runs are cheaper to scan by hand; long runs are handed to the pattern.
142
+ const handoff = i + 24;
143
+ while (code !== quote && code !== 0x5c && code !== 0x0a && code !== 0x0d && code >= plainFloor) {
144
+ if (++i === handoff) {
145
+ run(plain);
146
+ code = text.charCodeAt(i);
147
+ break;
148
+ }
149
+ code = text.charCodeAt(i);
150
+ }
151
+ result += text.slice(start, i);
152
+ i++;
153
+ if (code === quote) return result;
154
+ // Anything else that stops a plain run is an escape or a forbidden character.
155
+ if (code !== 0x5c) fail(i - 1);
156
+ const escape = text.charCodeAt(i++);
157
+ const simple = escapes[escape];
158
+ if (simple !== undefined) result += simple;else if (escape === 0x75) result += hex(4);else if (!json5 || i > text.length || escape >= 0x31 && escape <= 0x39) fail(i - 1);else if (escape === 0x76) result += "\v";else if (escape === 0x78) result += hex(2);else if (escape === 0x30) {
159
+ if (isDigit(text.charCodeAt(i))) fail(i);
160
+ result += "\0";
161
+ } else if (escape === 0x0d) {
162
+ // A CR LF line continuation contributes nothing, like a single line terminator.
163
+ if (text.charCodeAt(i) === 0x0a) i++;
164
+ } else if (escape !== 0x0a && escape !== 0x2028 && escape !== 0x2029) result += text[i - 1];
165
+ }
166
+ };
167
+ const identifier = () => {
168
+ const start = i;
169
+ let code = text.charCodeAt(i);
170
+ if (isAsciiIdPart(code) && !isDigit(code)) {
171
+ do code = text.charCodeAt(++i); while (isAsciiIdPart(code));
172
+ // Past an ASCII name, only an escape or a non-ASCII character can continue it.
173
+ if (code !== 0x5c && !(code >= 0x80)) return text.slice(start, i);
174
+ i = start;
175
+ }
176
+ run(idName);
177
+ let name = text.slice(start, i);
178
+ if (name !== "" && text.charAt(i) !== "\\") return name;
179
+ // Escapes are validated one code point at a time.
180
+ for (;;) {
181
+ const at = i;
182
+ const valid = name === "" ? idStart : idPart;
183
+ let c = String.fromCodePoint(text.codePointAt(i) ?? 0);
184
+ if (c === "\\") {
185
+ if (text.charAt(i + 1) !== "u") fail(i + 1);
186
+ i += 2;
187
+ c = hex(4);
188
+ if (!valid.test(c)) fail(at);
189
+ } else if (i < text.length && valid.test(c)) i += c.length;else if (name === "") fail(i);else return name;
190
+ name += c;
191
+ }
192
+ };
193
+ const stack = [];
194
+ /**
195
+ * Reads a value at `i`, which must already be past any whitespace. Opening a
196
+ * collection returns `undefined`; the collection is completed later.
197
+ */
198
+ const value = () => {
199
+ const code = text.charCodeAt(i);
200
+ switch (code) {
201
+ case 0x7b:
202
+ stack.push({
203
+ object: true,
204
+ value: {},
205
+ key: "",
206
+ first: true
207
+ });
208
+ i++;
209
+ return undefined;
210
+ case 0x5b:
211
+ stack.push({
212
+ object: false,
213
+ value: [],
214
+ first: true
215
+ });
216
+ i++;
217
+ return undefined;
218
+ case 0x22:
219
+ return string(0x22);
220
+ case 0x27:
221
+ return json5 ? string(0x27) : fail(i);
222
+ case 0x6e:
223
+ return word("null", null);
224
+ case 0x74:
225
+ return word("true", true);
226
+ case 0x66:
227
+ return word("false", false);
228
+ case 0x2b:
229
+ case 0x2d:
230
+ case 0x2e:
231
+ case 0x49:
232
+ case 0x4e:
233
+ return number();
234
+ }
235
+ return isDigit(code) ? number() : fail(i);
236
+ };
237
+ /** After a member: consumes a comma unless the collection ends. */
238
+ const separated = close => {
239
+ skip();
240
+ const code = text.charCodeAt(i);
241
+ if (code === close) return;
242
+ if (code !== 0x2c) fail(i);
243
+ i++;
244
+ skip();
245
+ if (!json5 && text.charCodeAt(i) === close) fail(i);
246
+ };
247
+ skip();
248
+ let result = value();
249
+ // An explicit stack keeps deep nesting off the call stack.
250
+ while (stack.length > 0) {
251
+ const frame = stack[stack.length - 1];
252
+ const close = frame.object ? 0x7d : 0x5d;
253
+ if (frame.first) skip();else separated(close);
254
+ if (text.charCodeAt(i) === close) {
255
+ stack.pop();
256
+ i++;
257
+ const parent = stack[stack.length - 1];
258
+ if (parent === undefined) result = frame.value;else if (parent.object) set(parent.value, parent.key, frame.value);else parent.value.push(frame.value);
259
+ continue;
260
+ }
261
+ frame.first = false;
262
+ if (!frame.object) {
263
+ const item = value();
264
+ if (item !== undefined) frame.value.push(item);
265
+ } else {
266
+ const quote = text.charCodeAt(i);
267
+ if (!json5 && quote !== 0x22) fail(i);
268
+ const key = quote === 0x22 || quote === 0x27 ? string(quote) : identifier();
269
+ skip();
270
+ if (text.charCodeAt(i++) !== 0x3a) fail(i - 1);
271
+ skip();
272
+ const item = value();
273
+ if (item === undefined) frame.key = key;else set(frame.value, key, item);
274
+ }
275
+ }
276
+ skip();
277
+ if (i < text.length) fail(i);
278
+ return result;
279
+ };
280
+ //# sourceMappingURL=jsonParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonParser.js","names":[],"sources":["../../src/internal/jsonParser.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,19 @@
1
1
  /** @internal */
2
2
  export const sqlCleanupBatchSize = 1000;
3
+ /**
4
+ * Percent-encodes `%` and `:` so the result contains no `:` and distinct inputs
5
+ * stay distinct.
6
+ *
7
+ * @internal
8
+ */
9
+ export const escapeKeySegment = segment => segment.replace(/%/g, "%25").replace(/:/g, "%3A");
3
10
  /**
4
11
  * Key prefix for a persistence store. The store id is escaped so the namespace
5
12
  * always ends at its first `:`, and distinct store / key pairs never collide.
6
13
  *
7
14
  * @internal
8
15
  */
9
- export const storeNamespace = storeId => `${storeId.replace(/%/g, "%25").replace(/:/g, "%3A")}:`;
16
+ export const storeNamespace = storeId => `${escapeKeySegment(storeId)}:`;
10
17
  /** @internal */
11
18
  export const escapeRedisGlob = pattern => pattern.replace(/[\\*?[\]]/g, "\\$&");
12
19
  //# sourceMappingURL=persistence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","names":[],"sources":["../../src/internal/persistence.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,OAAO,MAAM,mBAAmB,GAAG,IAAI;AAEvC;;;;;;AAMA,OAAO,MAAM,cAAc,GAAI,OAAe,IAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;AAElH;AACA,OAAO,MAAM,eAAe,GAAI,OAAe,IAAa,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"persistence.js","names":[],"sources":["../../src/internal/persistence.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,OAAO,MAAM,mBAAmB,GAAG,IAAI;AAEvC;;;;;;AAMA,OAAO,MAAM,gBAAgB,GAAI,OAAe,IAAa,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAE9G;;;;;;AAMA,OAAO,MAAM,cAAc,GAAI,OAAe,IAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG;AAE1F;AACA,OAAO,MAAM,eAAe,GAAI,OAAe,IAAa,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC","ignoreList":[]}
@@ -41,8 +41,34 @@ const makeBatchMap = resolver => {
41
41
  delete: key => MutableHashMap.remove(map, key)
42
42
  };
43
43
  };
44
- const batchPool = [];
45
44
  const pendingBatches = /*#__PURE__*/new WeakMap();
45
+ // Batches are built outside `addEntry` so their callbacks do not share a closure
46
+ // context with per-request entries, which would keep completed requests alive.
47
+ const makeBatch = (key, context, resolver, map) => {
48
+ const batch = {
49
+ key,
50
+ context,
51
+ resolver,
52
+ map,
53
+ entrySet: new Set(),
54
+ entries: new Set(),
55
+ delayEffect: effect.flatMap(withFiber(delayFiber => {
56
+ // Reentrant delay callbacks may fill the batch and interrupt this fiber.
57
+ batch.fiber = delayFiber;
58
+ return batch.resolver.delay;
59
+ }), _ => runBatch(batch)),
60
+ run: effect.onExit(effect.suspend(() => batch.resolver.runAll(Array.from(batch.entries), batch.key)), exit => {
61
+ for (const entry of batch.entrySet) {
62
+ entry.completeUnsafe(exit._tag === "Success" ? exitDie(new Error("Effect.request: RequestResolver did not complete request", {
63
+ cause: entry.request
64
+ })) : exit);
65
+ }
66
+ batch.entries.clear();
67
+ return effect.void;
68
+ })
69
+ };
70
+ return batch;
71
+ };
46
72
  const addEntry = (resolver, request, resume, fiber) => {
47
73
  let batchMap = pendingBatches.get(resolver);
48
74
  if (!batchMap) {
@@ -70,46 +96,7 @@ const addEntry = (resolver, request, resume, fiber) => {
70
96
  batch = batchMap.get(key);
71
97
  const isNewBatch = batch === undefined;
72
98
  if (!batch) {
73
- if (batchPool.length > 0) {
74
- batch = batchPool.pop();
75
- batch.key = key;
76
- batch.context = fiber.context;
77
- batch.resolver = resolver;
78
- batch.map = batchMap;
79
- } else {
80
- const newBatch = {
81
- key,
82
- context: fiber.context,
83
- resolver,
84
- map: batchMap,
85
- entrySet: new Set(),
86
- entries: new Set(),
87
- delayEffect: effect.flatMap(withFiber(delayFiber => {
88
- // Reentrant delay callbacks may fill the batch and interrupt this fiber.
89
- newBatch.fiber = delayFiber;
90
- return newBatch.resolver.delay;
91
- }), _ => runBatch(newBatch)),
92
- run: effect.onExit(effect.suspend(() => newBatch.resolver.runAll(Array.from(newBatch.entries), newBatch.key)), exit => {
93
- for (const entry of newBatch.entrySet) {
94
- entry.completeUnsafe(exit._tag === "Success" ? exitDie(new Error("Effect.request: RequestResolver did not complete request", {
95
- cause: entry.request
96
- })) : exit);
97
- }
98
- newBatch.entries.clear();
99
- if (batchPool.length < 128) {
100
- newBatch.entrySet.clear();
101
- newBatch.key = undefined;
102
- newBatch.context = undefined;
103
- newBatch.fiber = undefined;
104
- newBatch.resolver = undefined;
105
- newBatch.map = undefined;
106
- batchPool.push(newBatch);
107
- }
108
- return effect.void;
109
- })
110
- };
111
- batch = newBatch;
112
- }
99
+ batch = makeBatch(key, fiber.context, resolver, batchMap);
113
100
  batchMap.set(key, batch);
114
101
  }
115
102
  batch.entrySet.add(entry);
@@ -118,7 +105,7 @@ const addEntry = (resolver, request, resume, fiber) => {
118
105
  const delayFiber = effect.runForkWith(fiber.context)(batch.delayEffect, {
119
106
  scheduler: fiber.cache.scheduler
120
107
  });
121
- // A synchronous delay may have already run and recycled this batch.
108
+ // A synchronous delay may have already run this batch.
122
109
  if (completed || batchMap.get(key) !== batch) return entry;
123
110
  batch.fiber = delayFiber;
124
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","names":[],"sources":["../../src/internal/request.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"request.js","names":[],"sources":["../../src/internal/request.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -471,7 +471,8 @@ export function fromJsonSchemaMultiDocument(document, options, singleRoot = fals
471
471
  return out;
472
472
  }
473
473
  case "Union":
474
- return representation.types.length > 1 || representation.types.some(hasChoices);
474
+ // Finite primitive literal sets intersect without expansion, so they can be duplicated across branches.
475
+ return !isLiteralSet(representation) && (representation.types.length > 1 || representation.types.some(hasChoices));
475
476
  case "Arrays":
476
477
  return representation.elements.some(element => hasChoices(element.type)) || representation.rest.some(hasChoices);
477
478
  case "Objects":
@@ -496,14 +497,14 @@ export function fromJsonSchemaMultiDocument(document, options, singleRoot = fals
496
497
  if (representation._tag !== "Literal") return undefined;
497
498
  return representation.literal;
498
499
  }
500
+ function isLiteralSet(union) {
501
+ return (union.options?.mode ?? "anyOf") === "anyOf" && union.types.every(type => literalValue(type) !== undefined);
502
+ }
499
503
  function intersectLiteralUnions(left, right, path) {
500
- if ((left.options?.mode ?? "anyOf") !== "anyOf" || (right.options?.mode ?? "anyOf") !== "anyOf") {
501
- return undefined;
502
- }
504
+ if (!isLiteralSet(left) || !isLiteralSet(right)) return undefined;
503
505
  const rightByValue = new Map();
504
506
  for (const representation of right.types) {
505
507
  const value = literalValue(representation);
506
- if (value === undefined) return undefined;
507
508
  const previous = rightByValue.get(value);
508
509
  rightByValue.set(value, {
509
510
  ...representation,
@@ -512,9 +513,7 @@ export function fromJsonSchemaMultiDocument(document, options, singleRoot = fals
512
513
  }
513
514
  const types = [];
514
515
  for (const representation of left.types) {
515
- const value = literalValue(representation);
516
- if (value === undefined) return undefined;
517
- const match = rightByValue.get(value);
516
+ const match = rightByValue.get(literalValue(representation));
518
517
  if (match !== undefined) types.push(intersect(representation, annotate(match, right), path));
519
518
  }
520
519
  return makeUnion(left, types);