effect 4.0.0-beta.100 → 4.0.0-beta.102

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 (502) hide show
  1. package/dist/Array.d.ts.map +1 -1
  2. package/dist/Array.js +81 -5
  3. package/dist/Array.js.map +1 -1
  4. package/dist/Channel.d.ts.map +1 -1
  5. package/dist/Channel.js +27 -9
  6. package/dist/Channel.js.map +1 -1
  7. package/dist/Config.d.ts +1 -1
  8. package/dist/Config.d.ts.map +1 -1
  9. package/dist/Config.js +6 -5
  10. package/dist/Config.js.map +1 -1
  11. package/dist/ConfigProvider.js +7 -7
  12. package/dist/ConfigProvider.js.map +1 -1
  13. package/dist/Data.d.ts.map +1 -1
  14. package/dist/Data.js +2 -1
  15. package/dist/Data.js.map +1 -1
  16. package/dist/Effect.d.ts +61 -100
  17. package/dist/Effect.d.ts.map +1 -1
  18. package/dist/Effect.js +66 -39
  19. package/dist/Effect.js.map +1 -1
  20. package/dist/FiberHandle.d.ts.map +1 -1
  21. package/dist/FiberHandle.js +3 -2
  22. package/dist/FiberHandle.js.map +1 -1
  23. package/dist/Iterable.d.ts.map +1 -1
  24. package/dist/Iterable.js +2 -1
  25. package/dist/Iterable.js.map +1 -1
  26. package/dist/JsonPatch.d.ts.map +1 -1
  27. package/dist/JsonPatch.js +4 -3
  28. package/dist/JsonPatch.js.map +1 -1
  29. package/dist/JsonSchema.d.ts.map +1 -1
  30. package/dist/JsonSchema.js +9 -11
  31. package/dist/JsonSchema.js.map +1 -1
  32. package/dist/Logger.d.ts.map +1 -1
  33. package/dist/Logger.js +3 -2
  34. package/dist/Logger.js.map +1 -1
  35. package/dist/ManagedRuntime.d.ts +9 -0
  36. package/dist/ManagedRuntime.d.ts.map +1 -1
  37. package/dist/ManagedRuntime.js +3 -0
  38. package/dist/ManagedRuntime.js.map +1 -1
  39. package/dist/Metric.d.ts.map +1 -1
  40. package/dist/Metric.js +4 -3
  41. package/dist/Metric.js.map +1 -1
  42. package/dist/MutableList.d.ts.map +1 -1
  43. package/dist/MutableList.js +4 -0
  44. package/dist/MutableList.js.map +1 -1
  45. package/dist/Optic.d.ts.map +1 -1
  46. package/dist/Optic.js +5 -4
  47. package/dist/Optic.js.map +1 -1
  48. package/dist/Option.d.ts.map +1 -1
  49. package/dist/Option.js +2 -1
  50. package/dist/Option.js.map +1 -1
  51. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  52. package/dist/PartitionedSemaphore.js +1 -4
  53. package/dist/PartitionedSemaphore.js.map +1 -1
  54. package/dist/Record.d.ts +93 -1
  55. package/dist/Record.d.ts.map +1 -1
  56. package/dist/Record.js +57 -19
  57. package/dist/Record.js.map +1 -1
  58. package/dist/References.d.ts +0 -45
  59. package/dist/References.d.ts.map +1 -1
  60. package/dist/References.js +0 -45
  61. package/dist/References.js.map +1 -1
  62. package/dist/Request.d.ts.map +1 -1
  63. package/dist/Request.js +9 -6
  64. package/dist/Request.js.map +1 -1
  65. package/dist/Result.d.ts.map +1 -1
  66. package/dist/Result.js +2 -1
  67. package/dist/Result.js.map +1 -1
  68. package/dist/Schema.d.ts +1269 -496
  69. package/dist/Schema.d.ts.map +1 -1
  70. package/dist/Schema.js +2308 -614
  71. package/dist/Schema.js.map +1 -1
  72. package/dist/SchemaAST.d.ts +2 -2
  73. package/dist/SchemaAST.d.ts.map +1 -1
  74. package/dist/SchemaAST.js +189 -130
  75. package/dist/SchemaAST.js.map +1 -1
  76. package/dist/SchemaError.js +1 -1
  77. package/dist/SchemaError.js.map +1 -1
  78. package/dist/SchemaGetter.d.ts +13 -11
  79. package/dist/SchemaGetter.d.ts.map +1 -1
  80. package/dist/SchemaGetter.js +34 -24
  81. package/dist/SchemaGetter.js.map +1 -1
  82. package/dist/SchemaIssue.js +1 -1
  83. package/dist/SchemaIssue.js.map +1 -1
  84. package/dist/SchemaParser.d.ts.map +1 -1
  85. package/dist/SchemaParser.js +1 -12
  86. package/dist/SchemaParser.js.map +1 -1
  87. package/dist/SchemaRepresentation.d.ts +403 -1504
  88. package/dist/SchemaRepresentation.d.ts.map +1 -1
  89. package/dist/SchemaRepresentation.js +294 -2852
  90. package/dist/SchemaRepresentation.js.map +1 -1
  91. package/dist/SchemaTransformation.d.ts +2 -2
  92. package/dist/SchemaTransformation.js +3 -3
  93. package/dist/SchemaTransformation.js.map +1 -1
  94. package/dist/Semaphore.d.ts +5 -3
  95. package/dist/Semaphore.d.ts.map +1 -1
  96. package/dist/Semaphore.js.map +1 -1
  97. package/dist/Stream.d.ts +15 -9
  98. package/dist/Stream.d.ts.map +1 -1
  99. package/dist/Stream.js +46 -16
  100. package/dist/Stream.js.map +1 -1
  101. package/dist/Struct.d.ts.map +1 -1
  102. package/dist/Struct.js +5 -4
  103. package/dist/Struct.js.map +1 -1
  104. package/dist/Types.d.ts +1 -3
  105. package/dist/Types.d.ts.map +1 -1
  106. package/dist/index.d.ts +0 -4
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +0 -4
  109. package/dist/index.js.map +1 -1
  110. package/dist/internal/core.js +3 -2
  111. package/dist/internal/core.js.map +1 -1
  112. package/dist/internal/effect.js +119 -53
  113. package/dist/internal/effect.js.map +1 -1
  114. package/dist/internal/matcher.js +1 -1
  115. package/dist/internal/matcher.js.map +1 -1
  116. package/dist/internal/record.d.ts +0 -3
  117. package/dist/internal/record.d.ts.map +1 -1
  118. package/dist/internal/record.js +10 -5
  119. package/dist/internal/record.js.map +1 -1
  120. package/dist/internal/references.js +0 -4
  121. package/dist/internal/references.js.map +1 -1
  122. package/dist/internal/schema/annotations.js +12 -0
  123. package/dist/internal/schema/annotations.js.map +1 -1
  124. package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
  125. package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
  126. package/dist/internal/schema/fromJsonSchemaDocument.js +743 -0
  127. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
  128. package/dist/internal/schema/fromRepresentation.d.ts +2 -0
  129. package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
  130. package/dist/internal/schema/fromRepresentation.js +252 -0
  131. package/dist/internal/schema/fromRepresentation.js.map +1 -0
  132. package/dist/internal/schema/schema.js +28 -40
  133. package/dist/internal/schema/schema.js.map +1 -1
  134. package/dist/internal/schema/{arbitrary.d.ts → toArbitrary.d.ts} +1 -1
  135. package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
  136. package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -9
  137. package/dist/internal/schema/toArbitrary.js.map +1 -0
  138. package/dist/internal/schema/toCodeDocument.d.ts +2 -0
  139. package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
  140. package/dist/internal/schema/toCodeDocument.js +438 -0
  141. package/dist/internal/schema/toCodeDocument.js.map +1 -0
  142. package/dist/internal/schema/toEquivalence.d.ts +2 -0
  143. package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
  144. package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
  145. package/dist/internal/schema/toEquivalence.js.map +1 -0
  146. package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
  147. package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
  148. package/dist/internal/schema/toJsonSchemaDocument.js +466 -0
  149. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
  150. package/dist/internal/schema/toRepresentation.d.ts +2 -0
  151. package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
  152. package/dist/internal/schema/toRepresentation.js +369 -0
  153. package/dist/internal/schema/toRepresentation.js.map +1 -0
  154. package/dist/internal/stackTraceLimit.js +3 -6
  155. package/dist/internal/stackTraceLimit.js.map +1 -1
  156. package/dist/testing/TestClock.js +4 -1
  157. package/dist/testing/TestClock.js.map +1 -1
  158. package/dist/unstable/ai/AiError.d.ts +26 -26
  159. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  160. package/dist/unstable/ai/AiError.js +5 -4
  161. package/dist/unstable/ai/AiError.js.map +1 -1
  162. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +21 -6
  163. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  164. package/dist/unstable/ai/AnthropicStructuredOutput.js +86 -316
  165. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  166. package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
  167. package/dist/unstable/ai/EmbeddingModel.js +1 -1
  168. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  169. package/dist/unstable/ai/LanguageModel.d.ts +4 -1
  170. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  171. package/dist/unstable/ai/LanguageModel.js +19 -17
  172. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  173. package/dist/unstable/ai/McpSchema.d.ts +197 -197
  174. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  175. package/dist/unstable/ai/McpSchema.js +13 -13
  176. package/dist/unstable/ai/McpSchema.js.map +1 -1
  177. package/dist/unstable/ai/McpServer.d.ts +4 -4
  178. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  179. package/dist/unstable/ai/McpServer.js +116 -49
  180. package/dist/unstable/ai/McpServer.js.map +1 -1
  181. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +32 -10
  182. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  183. package/dist/unstable/ai/OpenAiStructuredOutput.js +193 -377
  184. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  185. package/dist/unstable/ai/Response.d.ts +19 -19
  186. package/dist/unstable/ai/Response.d.ts.map +1 -1
  187. package/dist/unstable/ai/Response.js +14 -14
  188. package/dist/unstable/ai/Response.js.map +1 -1
  189. package/dist/unstable/ai/Tool.d.ts +4 -0
  190. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  191. package/dist/unstable/ai/Tool.js +11 -3
  192. package/dist/unstable/ai/Tool.js.map +1 -1
  193. package/dist/unstable/ai/Toolkit.d.ts +9 -1
  194. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  195. package/dist/unstable/ai/Toolkit.js +14 -10
  196. package/dist/unstable/ai/Toolkit.js.map +1 -1
  197. package/dist/unstable/ai/internal/codec-transformer.js +15 -12
  198. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  199. package/dist/unstable/ai/internal/structured-output.d.ts +2 -0
  200. package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
  201. package/dist/unstable/ai/internal/structured-output.js +316 -0
  202. package/dist/unstable/ai/internal/structured-output.js.map +1 -0
  203. package/dist/unstable/cli/CliError.d.ts +40 -2
  204. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  205. package/dist/unstable/cli/CliError.js +45 -6
  206. package/dist/unstable/cli/CliError.js.map +1 -1
  207. package/dist/unstable/cli/Command.js +14 -5
  208. package/dist/unstable/cli/Command.js.map +1 -1
  209. package/dist/unstable/cli/Param.js +3 -3
  210. package/dist/unstable/cli/Param.js.map +1 -1
  211. package/dist/unstable/cli/Primitive.js +1 -1
  212. package/dist/unstable/cli/Primitive.js.map +1 -1
  213. package/dist/unstable/cli/internal/command.d.ts +3 -1
  214. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  215. package/dist/unstable/cli/internal/command.js +11 -4
  216. package/dist/unstable/cli/internal/command.js.map +1 -1
  217. package/dist/unstable/cli/internal/config.d.ts +0 -48
  218. package/dist/unstable/cli/internal/config.d.ts.map +1 -1
  219. package/dist/unstable/cli/internal/config.js +8 -10
  220. package/dist/unstable/cli/internal/config.js.map +1 -1
  221. package/dist/unstable/cluster/ClusterWorkflowEngine.js +1 -1
  222. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  223. package/dist/unstable/cluster/Entity.js +1 -1
  224. package/dist/unstable/cluster/Entity.js.map +1 -1
  225. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  226. package/dist/unstable/cluster/Envelope.js +2 -1
  227. package/dist/unstable/cluster/Envelope.js.map +1 -1
  228. package/dist/unstable/cluster/Reply.js +1 -1
  229. package/dist/unstable/cluster/Reply.js.map +1 -1
  230. package/dist/unstable/cluster/Runner.d.ts +1 -1
  231. package/dist/unstable/cluster/Runner.js +1 -1
  232. package/dist/unstable/cluster/Runner.js.map +1 -1
  233. package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
  234. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  235. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  236. package/dist/unstable/cluster/ShardId.js +1 -1
  237. package/dist/unstable/cluster/ShardId.js.map +1 -1
  238. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  239. package/dist/unstable/cluster/Sharding.js +125 -24
  240. package/dist/unstable/cluster/Sharding.js.map +1 -1
  241. package/dist/unstable/cluster/ShardingConfig.d.ts +10 -2
  242. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  243. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  244. package/dist/unstable/cluster/SingleRunner.d.ts +4 -2
  245. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  246. package/dist/unstable/cluster/SingleRunner.js +2 -1
  247. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  248. package/dist/unstable/cluster/SqlMessageStorage.d.ts +7 -4
  249. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  250. package/dist/unstable/cluster/SqlMessageStorage.js +55 -24
  251. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  252. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  253. package/dist/unstable/cluster/SqlRunnerStorage.js +109 -62
  254. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  255. package/dist/unstable/cluster/internal/entityManager.js +19 -7
  256. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  257. package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
  258. package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
  259. package/dist/unstable/cluster/internal/shardLock.js +4 -0
  260. package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
  261. package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
  262. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  263. package/dist/unstable/devtools/DevToolsSchema.js +8 -5
  264. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  265. package/dist/unstable/eventlog/EventJournal.d.ts +1 -1
  266. package/dist/unstable/eventlog/EventJournal.js +1 -1
  267. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  268. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  269. package/dist/unstable/eventlog/EventLog.js +15 -11
  270. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  271. package/dist/unstable/eventlog/EventLogEncryption.d.ts +1 -1
  272. package/dist/unstable/eventlog/EventLogEncryption.js +1 -1
  273. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  274. package/dist/unstable/eventlog/EventLogMessage.d.ts +26 -26
  275. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  276. package/dist/unstable/eventlog/EventLogMessage.js +8 -3
  277. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  278. package/dist/unstable/eventlog/EventLogRemote.d.ts +1 -1
  279. package/dist/unstable/eventlog/SqlEventJournal.js +2 -2
  280. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  281. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
  282. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  283. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
  284. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  285. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  286. package/dist/unstable/http/Cookies.js +24 -22
  287. package/dist/unstable/http/Cookies.js.map +1 -1
  288. package/dist/unstable/http/Headers.js +8 -8
  289. package/dist/unstable/http/Headers.js.map +1 -1
  290. package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
  291. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  292. package/dist/unstable/http/HttpClientRequest.js +14 -0
  293. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  294. package/dist/unstable/http/HttpRouter.d.ts +2 -2
  295. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  296. package/dist/unstable/http/HttpRouter.js.map +1 -1
  297. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  298. package/dist/unstable/http/HttpServerRequest.js +5 -4
  299. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  300. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  301. package/dist/unstable/http/Multipart.js +17 -15
  302. package/dist/unstable/http/Multipart.js.map +1 -1
  303. package/dist/unstable/http/Template.js +1 -1
  304. package/dist/unstable/http/Template.js.map +1 -1
  305. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  306. package/dist/unstable/http/UrlParams.js +17 -14
  307. package/dist/unstable/http/UrlParams.js.map +1 -1
  308. package/dist/unstable/httpapi/HttpApi.js +3 -3
  309. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  310. package/dist/unstable/httpapi/HttpApiClient.js +5 -5
  311. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  312. package/dist/unstable/httpapi/HttpApiGroup.js +1 -1
  313. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  314. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  315. package/dist/unstable/httpapi/OpenApi.js +37 -24
  316. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  317. package/dist/unstable/observability/OtlpExporter.d.ts +72 -1
  318. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  319. package/dist/unstable/observability/OtlpExporter.js +69 -4
  320. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  321. package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
  322. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  323. package/dist/unstable/observability/OtlpLogger.js +2 -2
  324. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  325. package/dist/unstable/observability/OtlpMetrics.d.ts +7 -3
  326. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  327. package/dist/unstable/observability/OtlpMetrics.js +5 -2
  328. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  329. package/dist/unstable/observability/OtlpTracer.d.ts +4 -3
  330. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  331. package/dist/unstable/observability/OtlpTracer.js +2 -2
  332. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  333. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  334. package/dist/unstable/persistence/Persistable.js +2 -1
  335. package/dist/unstable/persistence/Persistable.js.map +1 -1
  336. package/dist/unstable/persistence/RateLimiter.d.ts +2 -2
  337. package/dist/unstable/persistence/RateLimiter.js +2 -2
  338. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  339. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  340. package/dist/unstable/persistence/Redis.js +2 -2
  341. package/dist/unstable/persistence/Redis.js.map +1 -1
  342. package/dist/unstable/process/ChildProcessSpawner.js +3 -1
  343. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  344. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  345. package/dist/unstable/reactivity/AsyncResult.js +4 -3
  346. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  347. package/dist/unstable/reactivity/Atom.d.ts +83 -0
  348. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  349. package/dist/unstable/reactivity/Atom.js +31 -0
  350. package/dist/unstable/reactivity/Atom.js.map +1 -1
  351. package/dist/unstable/reactivity/AtomRegistry.js +1 -1
  352. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  353. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  354. package/dist/unstable/rpc/RpcClient.js +2 -1
  355. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  356. package/dist/unstable/schema/VariantSchema.d.ts +1 -2
  357. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  358. package/dist/unstable/schema/VariantSchema.js +13 -10
  359. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  360. package/dist/unstable/socket/Socket.d.ts +1 -1
  361. package/dist/unstable/socket/Socket.js +1 -1
  362. package/dist/unstable/socket/Socket.js.map +1 -1
  363. package/dist/unstable/sql/SqlError.d.ts +2 -2
  364. package/dist/unstable/sql/SqlError.js +2 -2
  365. package/dist/unstable/sql/SqlError.js.map +1 -1
  366. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  367. package/dist/unstable/sql/Statement.js +7 -6
  368. package/dist/unstable/sql/Statement.js.map +1 -1
  369. package/package.json +1 -1
  370. package/src/Array.ts +86 -25
  371. package/src/Channel.ts +32 -14
  372. package/src/Config.ts +6 -5
  373. package/src/ConfigProvider.ts +7 -7
  374. package/src/Data.ts +3 -2
  375. package/src/Effect.ts +70 -116
  376. package/src/FiberHandle.ts +3 -2
  377. package/src/Iterable.ts +2 -1
  378. package/src/JsonPatch.ts +4 -3
  379. package/src/JsonSchema.ts +9 -11
  380. package/src/Logger.ts +3 -2
  381. package/src/ManagedRuntime.ts +13 -0
  382. package/src/Metric.ts +4 -3
  383. package/src/MutableList.ts +4 -0
  384. package/src/Optic.ts +5 -4
  385. package/src/Option.ts +2 -1
  386. package/src/PartitionedSemaphore.ts +1 -4
  387. package/src/Record.ts +119 -22
  388. package/src/References.ts +0 -46
  389. package/src/Request.ts +5 -7
  390. package/src/Result.ts +2 -1
  391. package/src/Schema.ts +2538 -987
  392. package/src/SchemaAST.ts +228 -149
  393. package/src/SchemaError.ts +1 -1
  394. package/src/SchemaGetter.ts +36 -29
  395. package/src/SchemaIssue.ts +1 -1
  396. package/src/SchemaParser.ts +1 -25
  397. package/src/SchemaRepresentation.ts +697 -3398
  398. package/src/SchemaTransformation.ts +3 -3
  399. package/src/Semaphore.ts +5 -3
  400. package/src/Stream.ts +63 -19
  401. package/src/Struct.ts +5 -4
  402. package/src/Types.ts +1 -3
  403. package/src/index.ts +0 -5
  404. package/src/internal/core.ts +4 -3
  405. package/src/internal/effect.ts +132 -70
  406. package/src/internal/matcher.ts +1 -1
  407. package/src/internal/record.ts +11 -7
  408. package/src/internal/references.ts +0 -5
  409. package/src/internal/schema/annotations.ts +44 -0
  410. package/src/internal/schema/fromJsonSchemaDocument.ts +957 -0
  411. package/src/internal/schema/fromRepresentation.ts +345 -0
  412. package/src/internal/schema/schema.ts +45 -46
  413. package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +8 -10
  414. package/src/internal/schema/toCodeDocument.ts +572 -0
  415. package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
  416. package/src/internal/schema/toJsonSchemaDocument.ts +475 -0
  417. package/src/internal/schema/toRepresentation.ts +401 -0
  418. package/src/internal/stackTraceLimit.ts +3 -7
  419. package/src/testing/TestClock.ts +1 -1
  420. package/src/unstable/ai/AiError.ts +5 -4
  421. package/src/unstable/ai/AnthropicStructuredOutput.ts +102 -333
  422. package/src/unstable/ai/EmbeddingModel.ts +1 -1
  423. package/src/unstable/ai/LanguageModel.ts +30 -28
  424. package/src/unstable/ai/McpSchema.ts +15 -15
  425. package/src/unstable/ai/McpServer.ts +172 -56
  426. package/src/unstable/ai/OpenAiStructuredOutput.ts +230 -395
  427. package/src/unstable/ai/Response.ts +24 -24
  428. package/src/unstable/ai/Tool.ts +22 -4
  429. package/src/unstable/ai/Toolkit.ts +19 -7
  430. package/src/unstable/ai/internal/codec-transformer.ts +13 -7
  431. package/src/unstable/ai/internal/structured-output.ts +458 -0
  432. package/src/unstable/cli/CliError.ts +51 -5
  433. package/src/unstable/cli/Command.ts +4 -4
  434. package/src/unstable/cli/Param.ts +3 -3
  435. package/src/unstable/cli/Primitive.ts +1 -1
  436. package/src/unstable/cli/internal/command.ts +13 -5
  437. package/src/unstable/cli/internal/config.ts +8 -10
  438. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -3
  439. package/src/unstable/cluster/Entity.ts +1 -1
  440. package/src/unstable/cluster/Envelope.ts +2 -1
  441. package/src/unstable/cluster/Reply.ts +1 -1
  442. package/src/unstable/cluster/Runner.ts +1 -1
  443. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  444. package/src/unstable/cluster/ShardId.ts +1 -1
  445. package/src/unstable/cluster/Sharding.ts +161 -34
  446. package/src/unstable/cluster/ShardingConfig.ts +5 -1
  447. package/src/unstable/cluster/SingleRunner.ts +4 -2
  448. package/src/unstable/cluster/SqlMessageStorage.ts +83 -35
  449. package/src/unstable/cluster/SqlRunnerStorage.ts +186 -116
  450. package/src/unstable/cluster/internal/entityManager.ts +31 -10
  451. package/src/unstable/cluster/internal/shardLock.ts +9 -0
  452. package/src/unstable/devtools/DevToolsSchema.ts +10 -5
  453. package/src/unstable/eventlog/EventJournal.ts +1 -1
  454. package/src/unstable/eventlog/EventLog.ts +21 -11
  455. package/src/unstable/eventlog/EventLogEncryption.ts +1 -1
  456. package/src/unstable/eventlog/EventLogMessage.ts +10 -3
  457. package/src/unstable/eventlog/SqlEventJournal.ts +2 -2
  458. package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
  459. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
  460. package/src/unstable/http/Cookies.ts +29 -24
  461. package/src/unstable/http/Headers.ts +8 -8
  462. package/src/unstable/http/HttpClientRequest.ts +57 -0
  463. package/src/unstable/http/HttpRouter.ts +6 -3
  464. package/src/unstable/http/HttpServerRequest.ts +5 -4
  465. package/src/unstable/http/Multipart.ts +16 -13
  466. package/src/unstable/http/Template.ts +1 -1
  467. package/src/unstable/http/UrlParams.ts +17 -14
  468. package/src/unstable/httpapi/HttpApi.ts +3 -3
  469. package/src/unstable/httpapi/HttpApiClient.ts +5 -5
  470. package/src/unstable/httpapi/HttpApiGroup.ts +1 -1
  471. package/src/unstable/httpapi/OpenApi.ts +52 -28
  472. package/src/unstable/observability/OtlpExporter.ts +109 -5
  473. package/src/unstable/observability/OtlpLogger.ts +5 -5
  474. package/src/unstable/observability/OtlpMetrics.ts +8 -4
  475. package/src/unstable/observability/OtlpTracer.ts +8 -4
  476. package/src/unstable/persistence/Persistable.ts +3 -2
  477. package/src/unstable/persistence/RateLimiter.ts +2 -2
  478. package/src/unstable/persistence/Redis.ts +2 -2
  479. package/src/unstable/process/ChildProcessSpawner.ts +1 -1
  480. package/src/unstable/reactivity/AsyncResult.ts +4 -3
  481. package/src/unstable/reactivity/Atom.ts +92 -0
  482. package/src/unstable/reactivity/AtomRegistry.ts +1 -1
  483. package/src/unstable/rpc/RpcClient.ts +2 -1
  484. package/src/unstable/schema/VariantSchema.ts +14 -24
  485. package/src/unstable/socket/Socket.ts +1 -1
  486. package/src/unstable/sql/SqlError.ts +2 -2
  487. package/src/unstable/sql/Statement.ts +7 -6
  488. package/dist/SchemaUtils.d.ts +0 -28
  489. package/dist/SchemaUtils.d.ts.map +0 -1
  490. package/dist/SchemaUtils.js +0 -45
  491. package/dist/SchemaUtils.js.map +0 -1
  492. package/dist/internal/schema/arbitrary.d.ts.map +0 -1
  493. package/dist/internal/schema/arbitrary.js.map +0 -1
  494. package/dist/internal/schema/equivalence.d.ts +0 -2
  495. package/dist/internal/schema/equivalence.d.ts.map +0 -1
  496. package/dist/internal/schema/equivalence.js.map +0 -1
  497. package/dist/internal/schema/representation.d.ts +0 -2
  498. package/dist/internal/schema/representation.d.ts.map +0 -1
  499. package/dist/internal/schema/representation.js +0 -865
  500. package/dist/internal/schema/representation.js.map +0 -1
  501. package/src/SchemaUtils.ts +0 -51
  502. package/src/internal/schema/representation.ts +0 -795
@@ -56,7 +56,9 @@ export interface EntityManager {
56
56
  }) => boolean
57
57
  readonly clearProcessed: () => void
58
58
 
59
- readonly interruptShard: (shardId: ShardId) => Effect.Effect<void>
59
+ readonly interruptShard: (shardId: ShardId, options?: {
60
+ readonly force?: boolean
61
+ }) => Effect.Effect<void>
60
62
 
61
63
  readonly activeEntityCount: Effect.Effect<number>
62
64
  }
@@ -117,7 +119,10 @@ export const make = Effect.fnUntraced(function*<
117
119
  entityRpcs.set(KeepAliveRpc._tag, KeepAliveRpc as any)
118
120
 
119
121
  const activeServers = new Map<EntityId, EntityState>()
120
- const serverCloseLatches = new Map<EntityAddress, Latch.Latch>()
122
+ const serverCloseLatches = new Map<EntityAddress, {
123
+ readonly closed: Latch.Latch
124
+ readonly force: Latch.Latch
125
+ }>()
121
126
  const processedRequestIds = new Set<Snowflake.Snowflake>()
122
127
 
123
128
  const entities: ResourceMap<
@@ -132,12 +137,16 @@ export const make = Effect.fnUntraced(function*<
132
137
  const scope = yield* Effect.scope
133
138
  const endLatch = Latch.makeUnsafe()
134
139
  const keepAliveLatch = Latch.makeUnsafe()
140
+ const closeLatches = {
141
+ closed: Latch.makeUnsafe(),
142
+ force: Latch.makeUnsafe()
143
+ }
135
144
 
136
145
  // on shutdown, reset the storage for the entity
137
146
  yield* Scope.addFinalizerExit(
138
147
  scope,
139
148
  () => {
140
- serverCloseLatches.get(address)?.openUnsafe()
149
+ serverCloseLatches.get(address)?.closed.openUnsafe()
141
150
  serverCloseLatches.delete(address)
142
151
  return Effect.void
143
152
  }
@@ -373,14 +382,19 @@ export const make = Effect.fnUntraced(function*<
373
382
  scope,
374
383
  Effect.withFiber((fiber) => {
375
384
  activeServers.delete(address.entityId)
376
- serverCloseLatches.set(address, Latch.makeUnsafe())
377
385
  internalInterruptors.add(fiber.id)
378
- return state.write(0, { _tag: "Eof" }).pipe(
379
- Effect.andThen(Effect.interruptible(endLatch.await)),
380
- Effect.timeoutOption(config.entityTerminationTimeout)
386
+ return Effect.raceFirst(
387
+ state.write(0, { _tag: "Eof" }).pipe(
388
+ Effect.andThen(endLatch.await),
389
+ Effect.timeoutOption(config.entityTerminationTimeout),
390
+ Effect.interruptible
391
+ ),
392
+ Effect.interruptible(closeLatches.force.await)
381
393
  )
382
394
  })
383
395
  )
396
+ // Do not make shard interruption wait for an entity that is still building.
397
+ serverCloseLatches.set(address, closeLatches)
384
398
  activeServers.set(address.entityId, state)
385
399
 
386
400
  return state
@@ -537,17 +551,24 @@ export const make = Effect.fnUntraced(function*<
537
551
  const runFork = Effect.runForkWith(context)
538
552
 
539
553
  return identity<EntityManager>({
540
- interruptShard: (shardId: ShardId) =>
554
+ interruptShard: (shardId: ShardId, options) =>
541
555
  Effect.suspend(function loop(): Effect.Effect<void> {
542
556
  const fibers = Arr.empty<Fiber.Fiber<void>>()
557
+ if (options?.force === true) {
558
+ serverCloseLatches.forEach((latches, address) => {
559
+ if (shardId[Equal.symbol](address.shardId)) {
560
+ latches.force.openUnsafe()
561
+ }
562
+ })
563
+ }
543
564
  activeServers.forEach((state) => {
544
565
  if (shardId[Equal.symbol](state.address.shardId)) {
545
566
  fibers.push(runFork(entities.removeIgnore(state.address)))
546
567
  }
547
568
  })
548
- serverCloseLatches.forEach((latch, address) => {
569
+ serverCloseLatches.forEach((latches, address) => {
549
570
  if (shardId[Equal.symbol](address.shardId)) {
550
- fibers.push(runFork(latch.await))
571
+ fibers.push(runFork(latches.closed.await))
551
572
  }
552
573
  })
553
574
  if (fibers.length === 0) return Effect.void
@@ -0,0 +1,9 @@
1
+ import * as Duration from "../../../Duration.ts"
2
+ import type { ShardingConfig } from "../ShardingConfig.ts"
3
+
4
+ /** @internal */
5
+ export const effectiveInterval = (config: ShardingConfig["Service"]): Duration.Duration =>
6
+ Duration.min(
7
+ Duration.fromInputUnsafe(config.shardLockRefreshInterval),
8
+ Duration.divideUnsafe(Duration.fromInputUnsafe(config.shardLockExpiration), 3)
9
+ )
@@ -311,7 +311,7 @@ export type Counter = Schema.Schema.Type<typeof Counter>
311
311
  export const Frequency = metric(
312
312
  "Frequency",
313
313
  Schema.Struct({
314
- occurrences: Schema.ReadonlyMap(Schema.String, Schema.Number)
314
+ occurrences: Schema.ReadonlyMap(Schema.String, Schema.Natural)
315
315
  })
316
316
  )
317
317
 
@@ -370,8 +370,8 @@ export type Gauge = Schema.Schema.Type<typeof Gauge>
370
370
  export const Histogram = metric(
371
371
  "Histogram",
372
372
  Schema.Struct({
373
- buckets: Schema.Array(Schema.Tuple([Schema.Number, Schema.Number])),
374
- count: Schema.Number,
373
+ buckets: Schema.Array(Schema.Tuple([Schema.Number, Schema.Natural])),
374
+ count: Schema.Natural,
375
375
  min: Schema.Number,
376
376
  max: Schema.Number,
377
377
  sum: Schema.Number
@@ -405,8 +405,13 @@ export type Histogram = Schema.Schema.Type<typeof Histogram>
405
405
  export const Summary = metric(
406
406
  "Summary",
407
407
  Schema.Struct({
408
- quantiles: Schema.Array(Schema.Tuple([Schema.Number, Schema.UndefinedOr(Schema.Number)])),
409
- count: Schema.Number,
408
+ quantiles: Schema.Array(
409
+ Schema.Tuple([
410
+ Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 })),
411
+ Schema.UndefinedOr(Schema.Number)
412
+ ])
413
+ ),
414
+ count: Schema.Natural,
410
415
  min: Schema.Number,
411
416
  max: Schema.Number,
412
417
  sum: Schema.Number
@@ -345,7 +345,7 @@ export class Entry extends Schema.Class<Entry>("effect/eventlog/EventJournal/Ent
345
345
  * @since 4.0.0
346
346
  */
347
347
  export class RemoteEntry extends Schema.Class<RemoteEntry>("effect/eventlog/EventJournal/RemoteEntry")({
348
- remoteSequence: Schema.Number,
348
+ remoteSequence: Schema.Natural,
349
349
  entry: Entry
350
350
  }) {}
351
351
 
@@ -13,6 +13,7 @@ import * as Context from "../../Context.ts"
13
13
  import * as Effect from "../../Effect.ts"
14
14
  import * as FiberMap from "../../FiberMap.ts"
15
15
  import { constant, identity } from "../../Function.ts"
16
+ import * as InternalRecord from "../../internal/record.ts"
16
17
  import * as Layer from "../../Layer.ts"
17
18
  import type { Pipeable } from "../../Pipeable.ts"
18
19
  import { pipeArguments } from "../../Pipeable.ts"
@@ -159,7 +160,9 @@ export const layerRegistry = Layer.effect(
159
160
  },
160
161
  registerReactivity: (keys) =>
161
162
  Effect.sync(() => {
162
- Object.assign(reactivityKeys, keys)
163
+ for (const [key, value] of Object.entries(keys)) {
164
+ InternalRecord.assignProperty(reactivityKeys, key, value)
165
+ }
163
166
  }),
164
167
  reactivityKeys
165
168
  })
@@ -498,7 +501,7 @@ const handlersProto = {
498
501
  handlers: {
499
502
  ...this.handlers,
500
503
  [tag]: {
501
- event: this.group.events[tag],
504
+ event: Object.hasOwn(this.group.events, tag) ? this.group.events[tag] : undefined!,
502
505
  context: this.context,
503
506
  handler
504
507
  }
@@ -547,7 +550,7 @@ export const group = <Events extends Event.Any, Return>(
547
550
  const handlers = Effect.isEffect(result)
548
551
  ? (yield* (result as unknown as Effect.Effect<Handlers<any>>))
549
552
  : (result as unknown as Handlers<any>)
550
- for (const tag in handlers.handlers) {
553
+ for (const tag of Object.keys(handlers.handlers)) {
551
554
  registry.registerHandlerUnsafe({ event: tag, handler: handlers.handlers[tag] })
552
555
  }
553
556
  })
@@ -584,7 +587,7 @@ export const groupCompaction = <Events extends Event.Any, R>(
584
587
  yield* registry.registerCompaction({
585
588
  events: Object.keys(group.events),
586
589
  effect: Effect.fnUntraced(function*({ entries, write }): Effect.fn.Return<void> {
587
- const isEventTag = (tag: string): tag is Event.Tag<Events> => tag in group.events
590
+ const isEventTag = (tag: string): tag is Event.Tag<Events> => Object.hasOwn(group.events, tag)
588
591
  const decodePayload = <Tag extends Event.Tag<Events>>(tag: Tag, payload: Uint8Array) =>
589
592
  Schema.decodeUnknownEffect(group.events[tag].payloadMsgPack)(payload).pipe(
590
593
  Effect.updateContext((input) => Context.merge(services, input)),
@@ -595,7 +598,7 @@ export const groupCompaction = <Events extends Event.Any, R>(
595
598
  tag: Tag,
596
599
  payload: Event.PayloadWithTag<Events, Tag>
597
600
  ): Effect.fn.Return<void, never, Event.PayloadSchemaWithTag<Events, Tag>["EncodingServices"]> {
598
- const event = group.events[tag]
601
+ const event = Object.hasOwn(group.events, tag) ? group.events[tag] : undefined!
599
602
  const entry = new Entry({
600
603
  id: makeEntryIdUnsafe({ msecs: timestamp }),
601
604
  event: tag,
@@ -674,8 +677,8 @@ export const groupReactivity = <Events extends Event.Any>(
674
677
  yield* registry.registerReactivity(keys as Record.ReadonlyRecord<string, ReadonlyArray<string>>)
675
678
  return
676
679
  }
677
- const obj: Record<string, ReadonlyArray<string>> = {}
678
- for (const tag in group.events) {
680
+ const obj: Record<string, ReadonlyArray<string>> = Object.create(null)
681
+ for (const tag of Object.keys(group.events)) {
679
682
  obj[tag] = keys
680
683
  }
681
684
  yield* registry.registerReactivity(obj)
@@ -741,7 +744,9 @@ export const makeReplayFromRemote = (options: {
741
744
  Effect.asVoid
742
745
  ) as any
743
746
 
744
- const keys = options.reactivityKeys[entry.event]
747
+ const keys = Object.hasOwn(options.reactivityKeys, entry.event)
748
+ ? options.reactivityKeys[entry.event]
749
+ : undefined
745
750
  if (keys) {
746
751
  for (const key of keys) {
747
752
  options.reactivity.invalidateUnsafe({
@@ -780,7 +785,9 @@ const make = Effect.gen(function*() {
780
785
  const invalidateReactivityEntries = (entries: ReadonlyArray<Entry>) =>
781
786
  Effect.sync(() => {
782
787
  for (const entry of entries) {
783
- const keys = registry.reactivityKeys[entry.event]
788
+ const keys = Object.hasOwn(registry.reactivityKeys, entry.event)
789
+ ? registry.reactivityKeys[entry.event]
790
+ : undefined
784
791
  if (!keys) {
785
792
  continue
786
793
  }
@@ -903,8 +910,11 @@ const make = Effect.gen(function*() {
903
910
  Effect.updateContext((input) => Context.merge(handler.context, input)),
904
911
  Effect.provideService(Identity, identity),
905
912
  Effect.tap(() => {
906
- if (registry.reactivityKeys[entry.event]) {
907
- for (const key of registry.reactivityKeys[entry.event]) {
913
+ const keys = Object.hasOwn(registry.reactivityKeys, entry.event)
914
+ ? registry.reactivityKeys[entry.event]
915
+ : undefined
916
+ if (keys) {
917
+ for (const key of keys) {
908
918
  reactivity.invalidateUnsafe({
909
919
  [key]: [entry.primaryKey]
910
920
  })
@@ -46,7 +46,7 @@ export interface EncryptedRemoteEntry extends Schema.Schema.Type<typeof Encrypte
46
46
  * @since 4.0.0
47
47
  */
48
48
  export const EncryptedRemoteEntry = Schema.Struct({
49
- sequence: Schema.Number,
49
+ sequence: Schema.Natural,
50
50
  iv: Transferable.Uint8Array,
51
51
  entryId: EntryId,
52
52
  encryptedEntry: Transferable.Uint8Array
@@ -163,8 +163,12 @@ export class SingleMessage
163
163
  */
164
164
  export class ChunkedMessage
165
165
  extends Schema.TaggedClass<ChunkedMessage>("effect/eventlog/EventLogRemote/ChunkedMessage")("Chunked", {
166
- id: Schema.Number,
167
- part: Schema.Tuple([Schema.Number, Schema.Number]),
166
+ id: Schema.Int,
167
+ part: Schema.Tuple([Schema.Natural, Schema.Natural]).check(
168
+ Schema.makeFilter(([index, total]) => index < total, {
169
+ expected: "a chunk part with an index less than its total"
170
+ })
171
+ ),
168
172
  data: Transferable.Uint8Array
169
173
  })
170
174
  {
@@ -221,6 +225,9 @@ export class ChunkedMessage
221
225
  }
222
226
  map.set(part.id, entry)
223
227
  }
228
+ if (entry.parts[index] !== undefined) {
229
+ return
230
+ }
224
231
  entry.parts[index] = part.data
225
232
  entry.count++
226
233
  entry.bytes += part.data.byteLength
@@ -324,7 +331,7 @@ export class ChangesRpc extends Rpc.make("EventLog.Changes", {
324
331
  payload: {
325
332
  publicKey: Schema.String,
326
333
  storeId: StoreId,
327
- startSequence: Schema.Number
334
+ startSequence: Schema.Natural
328
335
  },
329
336
  success: Schema.Union([SingleMessage, ChunkedMessage]),
330
337
  error: EventLogProtocolError,
@@ -319,7 +319,7 @@ const EntryRow = Schema.Struct({
319
319
  event: Schema.String,
320
320
  primary_key: Schema.String,
321
321
  payload: Schema.Uint8Array,
322
- timestamp: Schema.Number
322
+ timestamp: Schema.Int
323
323
  })
324
324
 
325
325
  const EntryRowArray = Schema.Array(EntryRow)
@@ -345,7 +345,7 @@ const toEntryRow = (entry: EventJournal.Entry): EntryRow => ({
345
345
  const RemoteRow = Schema.Struct({
346
346
  remote_id: EventJournal.RemoteId,
347
347
  entry_id: EventJournal.EntryId,
348
- sequence: Schema.Number
348
+ sequence: Schema.Natural
349
349
  })
350
350
 
351
351
  const RemoteRowArray = Schema.Array(RemoteRow)
@@ -269,7 +269,7 @@ export const makeStorage = (options?: {
269
269
  }).pipe(withTracerDisabled)
270
270
 
271
271
  const EncryptedRemoteEntrySql = Schema.Struct({
272
- sequence: Schema.Number,
272
+ sequence: Schema.Natural,
273
273
  iv: Schema.Uint8Array,
274
274
  entry_id: EntryId,
275
275
  encrypted_entry: Schema.Uint8Array
@@ -461,17 +461,20 @@ const EntrySql = Schema.Struct({
461
461
 
462
462
  type EntrySql = Schema.Schema.Type<typeof EntrySql>
463
463
 
464
- const SqlNumber = Schema.Union([Schema.Number, Schema.NumberFromString])
464
+ const SqlNatural = Schema.Union([
465
+ Schema.Natural,
466
+ Schema.FiniteFromString.check(Schema.isInt(), Schema.isGreaterThanOrEqualTo(0))
467
+ ])
465
468
 
466
469
  const RemoteEntrySql = Schema.Struct({
467
470
  ...EntrySql.fields,
468
- sequence: SqlNumber
471
+ sequence: SqlNatural
469
472
  })
470
473
 
471
474
  type RemoteEntrySql = Schema.Schema.Type<typeof RemoteEntrySql>
472
475
 
473
476
  const StoreSequenceSql = Schema.Struct({
474
- next_sequence: SqlNumber
477
+ next_sequence: SqlNatural
475
478
  })
476
479
 
477
480
  const SessionAuthBindingSql = Schema.Struct({
@@ -13,6 +13,7 @@ import * as Data from "../../Data.ts"
13
13
  import * as Duration from "../../Duration.ts"
14
14
  import { dual } from "../../Function.ts"
15
15
  import * as Inspectable from "../../Inspectable.ts"
16
+ import * as InternalRecord from "../../internal/record.ts"
16
17
  import * as Option from "../../Option.ts"
17
18
  import { type Pipeable, pipeArguments } from "../../Pipeable.ts"
18
19
  import * as Predicate from "../../Predicate.ts"
@@ -65,15 +66,15 @@ export interface CookiesSchema extends Schema.declare<Cookies, Record.ReadonlyRe
65
66
  export const CookiesSchema: CookiesSchema = Schema.declare(
66
67
  isCookies,
67
68
  {
68
- typeConstructor: {
69
- _tag: "effect/http/Cookies"
70
- },
71
- generation: {
72
- runtime: `Cookies.CookiesSchema`,
73
- Type: `Cookies.Cookies`,
74
- Encoded: `typeof Cookies.CookiesSchema["Encoded"]`,
75
- importDeclaration: `import * as Cookies from "effect/unstable/http/Cookies"`
69
+ representation: {
70
+ id: "effect/http/Cookies",
71
+ payload: null
76
72
  },
73
+ toCode: () => ({
74
+ runtime: "Cookies.CookiesSchema",
75
+ Type: "Cookies.Cookies",
76
+ importDeclarations: [`import * as Cookies from "effect/unstable/http/Cookies"`]
77
+ }),
77
78
  expected: "Cookies",
78
79
  toCodecJson: () =>
79
80
  Schema.link<Cookies>()(
@@ -146,14 +147,15 @@ export interface CookieSchema extends Schema.declare<Cookie> {}
146
147
  export const CookieSchema: CookieSchema = Schema.declare(
147
148
  isCookie,
148
149
  {
149
- typeConstructor: {
150
- _tag: "effect/http/Cookie"
151
- },
152
- generation: {
153
- runtime: `Cookies.CookieSchema`,
154
- Type: `Cookies.Cookie`,
155
- importDeclaration: `import * as Cookie from "effect/unstable/http/Cookies"`
150
+ representation: {
151
+ id: "effect/http/Cookie",
152
+ payload: null
156
153
  },
154
+ toCode: () => ({
155
+ runtime: "Cookies.CookieSchema",
156
+ Type: "Cookies.Cookie",
157
+ importDeclarations: [`import * as Cookies from "effect/unstable/http/Cookies"`]
158
+ }),
157
159
  expected: "Cookie"
158
160
  }
159
161
  )
@@ -251,7 +253,7 @@ export const fromReadonlyRecord = (cookies: Record.ReadonlyRecord<string, Cookie
251
253
  export const fromIterable = (cookies: Iterable<Cookie>): Cookies => {
252
254
  const record: Record<string, Cookie> = {}
253
255
  for (const cookie of cookies) {
254
- record[cookie.name] = cookie
256
+ InternalRecord.assignProperty(record, cookie.name, cookie)
255
257
  }
256
258
  return fromReadonlyRecord(record)
257
259
  }
@@ -550,7 +552,7 @@ export const setAllCookie: {
550
552
  } = dual(2, (self: Cookies, cookies: Iterable<Cookie>) => {
551
553
  const record = { ...self.cookies }
552
554
  for (const cookie of cookies) {
553
- record[cookie.name] = cookie
555
+ InternalRecord.assignProperty(record, cookie.name, cookie)
554
556
  }
555
557
  return fromReadonlyRecord(record)
556
558
  })
@@ -628,7 +630,8 @@ export const get: {
628
630
  (self: Cookies, name: string): Option.Option<Cookie>
629
631
  } = dual(
630
632
  (args) => isCookies(args[0]),
631
- (self: Cookies, name: string): Option.Option<Cookie> => Option.fromUndefinedOr(self.cookies[name])
633
+ (self: Cookies, name: string): Option.Option<Cookie> =>
634
+ Option.fromUndefinedOr(Object.hasOwn(self.cookies, name) ? self.cookies[name] : undefined)
632
635
  )
633
636
 
634
637
  /**
@@ -888,7 +891,7 @@ export const setAll: {
888
891
  if (Result.isFailure(result)) {
889
892
  return result as Result.Failure<never, CookiesError>
890
893
  }
891
- record[name] = result.success
894
+ InternalRecord.assignProperty(record, name, result.success)
892
895
  }
893
896
  return Result.succeed(fromReadonlyRecord(record))
894
897
  }
@@ -1028,7 +1031,7 @@ export const toRecord = (self: Cookies): Record<string, string> => {
1028
1031
  const cookies = Object.values(self.cookies)
1029
1032
  for (let index = 0; index < cookies.length; index++) {
1030
1033
  const cookie = cookies[index]
1031
- record[cookie.name] = cookie.value
1034
+ InternalRecord.assignProperty(record, cookie.name, cookie.value)
1032
1035
  }
1033
1036
  return record
1034
1037
  }
@@ -1089,14 +1092,16 @@ export function parseHeader(header: string): Record<string, string> {
1089
1092
  }
1090
1093
 
1091
1094
  const key = header.substring(pos, eqIdx++).trim()
1092
- if (result[key] === undefined) {
1095
+ if (!Object.hasOwn(result, key)) {
1093
1096
  const val = header.charCodeAt(eqIdx) === 0x22
1094
1097
  ? header.substring(eqIdx + 1, terminatorPos - 1).trim()
1095
1098
  : header.substring(eqIdx, terminatorPos).trim()
1096
1099
 
1097
- result[key] = !(val.indexOf("%") === -1)
1098
- ? tryDecodeURIComponent(val)
1099
- : val
1100
+ InternalRecord.assignProperty(
1101
+ result,
1102
+ key,
1103
+ !(val.indexOf("%") === -1) ? tryDecodeURIComponent(val) : val
1104
+ )
1100
1105
  }
1101
1106
 
1102
1107
  pos = terminatorPos + 1
@@ -130,15 +130,15 @@ export interface HeadersSchema extends Schema.declare<Headers, { readonly [x: st
130
130
  export const HeadersSchema: HeadersSchema = Schema.declare(
131
131
  isHeaders,
132
132
  {
133
- typeConstructor: {
134
- _tag: "effect/http/Headers"
135
- },
136
- generation: {
137
- runtime: `Headers.HeadersSchema`,
138
- Type: `Headers.Headers`,
139
- Encoded: `typeof Headers.HeadersSchema["Encoded"]`,
140
- importDeclaration: `import * as Headers from "effect/unstable/http/Headers"`
133
+ representation: {
134
+ id: "effect/http/Headers",
135
+ payload: null
141
136
  },
137
+ toCode: () => ({
138
+ runtime: "Headers.HeadersSchema",
139
+ Type: "Headers.Headers",
140
+ importDeclarations: [`import * as Headers from "effect/unstable/http/Headers"`]
141
+ }),
142
142
  expected: "Headers",
143
143
  toEquivalence: () => Equivalence,
144
144
  toCodec: () =>
@@ -375,6 +375,63 @@ export const setHeaders: {
375
375
  self.body
376
376
  ))
377
377
 
378
+ /**
379
+ * Transforms the request headers with the provided function, returning a new request.
380
+ *
381
+ * @category combinators
382
+ * @since 4.0.0
383
+ */
384
+ export const updateHeaders: {
385
+ /**
386
+ * Transforms the request headers with the provided function, returning a new request.
387
+ *
388
+ * @category combinators
389
+ * @since 4.0.0
390
+ */
391
+ (f: (headers: Headers.Headers) => Headers.Headers): (self: HttpClientRequest) => HttpClientRequest
392
+ /**
393
+ * Transforms the request headers with the provided function, returning a new request.
394
+ *
395
+ * @category combinators
396
+ * @since 4.0.0
397
+ */
398
+ (self: HttpClientRequest, f: (headers: Headers.Headers) => Headers.Headers): HttpClientRequest
399
+ } = dual(2, (self: HttpClientRequest, f: (headers: Headers.Headers) => Headers.Headers): HttpClientRequest =>
400
+ makeWith(
401
+ self.method,
402
+ self.url,
403
+ self.urlParams,
404
+ self.hash,
405
+ f(self.headers),
406
+ self.body
407
+ ))
408
+
409
+ /**
410
+ * Removes a single request header by name, returning a new request.
411
+ *
412
+ * @category combinators
413
+ * @since 4.0.0
414
+ */
415
+ export const removeHeader: {
416
+ /**
417
+ * Removes a single request header by name, returning a new request.
418
+ *
419
+ * @category combinators
420
+ * @since 4.0.0
421
+ */
422
+ (key: string): (self: HttpClientRequest) => HttpClientRequest
423
+ /**
424
+ * Removes a single request header by name, returning a new request.
425
+ *
426
+ * @category combinators
427
+ * @since 4.0.0
428
+ */
429
+ (self: HttpClientRequest, key: string): HttpClientRequest
430
+ } = dual(
431
+ 2,
432
+ (self: HttpClientRequest, key: string): HttpClientRequest => updateHeaders(self, Headers.remove(key))
433
+ )
434
+
378
435
  /**
379
436
  * Sets the `Authorization` header using HTTP Basic authentication credentials.
380
437
  *
@@ -1362,12 +1362,15 @@ export const toWebHandler = <
1362
1362
  | Request.Only<"Requires", R>
1363
1363
  | Request.Only<"GlobalRequires", R>
1364
1364
  >
1365
- ) => Effect.Effect<HttpServerResponse.HttpServerResponse, HE, HR>
1365
+ ) => Effect.Effect<HttpServerResponse.HttpServerResponse, HE, HR | GlobalProvided>
1366
1366
  }
1367
1367
  ): {
1368
- readonly handler: [HR] extends [never]
1368
+ readonly handler: [Exclude<HR, GlobalProvided>] extends [never]
1369
1369
  ? ((request: globalThis.Request, context?: Context.Context<never> | undefined) => Promise<Response>)
1370
- : ((request: globalThis.Request, context: Context.Context<HR>) => Promise<Response>)
1370
+ : ((
1371
+ request: globalThis.Request,
1372
+ context: Context.Context<Exclude<HR, GlobalProvided>>
1373
+ ) => Promise<Response>)
1371
1374
  readonly dispose: () => Promise<void>
1372
1375
  } => {
1373
1376
  let middleware: any = options?.middleware
@@ -16,6 +16,7 @@ import * as Context from "../../Context.ts"
16
16
  import * as Effect from "../../Effect.ts"
17
17
  import type * as FileSystem from "../../FileSystem.ts"
18
18
  import * as Inspectable from "../../Inspectable.ts"
19
+ import * as InternalRecord from "../../internal/record.ts"
19
20
  import * as Option from "../../Option.ts"
20
21
  import type * as Path from "../../Path.ts"
21
22
  import type { ReadonlyRecord } from "../../Record.ts"
@@ -145,15 +146,15 @@ export class ParsedSearchParams extends Context.Service<
145
146
  export const searchParamsFromURL = (url: URL): ReadonlyRecord<string, string | Array<string>> => {
146
147
  const out: Record<string, string | Array<string>> = {}
147
148
  for (const [key, value] of url.searchParams.entries()) {
148
- const entry = out[key]
149
- if (entry !== undefined) {
149
+ if (Object.hasOwn(out, key)) {
150
+ const entry = out[key]
150
151
  if (Array.isArray(entry)) {
151
152
  entry.push(value)
152
153
  } else {
153
- out[key] = [entry, value]
154
+ InternalRecord.assignProperty(out, key, [entry, value])
154
155
  }
155
156
  } else {
156
- out[key] = value
157
+ InternalRecord.assignProperty(out, key, value)
157
158
  }
158
159
  }
159
160
  return out
@@ -276,6 +276,13 @@ export class MultipartError extends Data.TaggedError("MultipartError")<{
276
276
  */
277
277
  export interface PersistedFileSchema extends Schema.declare<PersistedFile> {}
278
278
 
279
+ const PersistedFileEncoded = Schema.Struct({
280
+ key: Schema.String,
281
+ name: Schema.String,
282
+ contentType: Schema.String.annotate({ contentEncoding: "binary" }),
283
+ path: Schema.String
284
+ })
285
+
279
286
  /**
280
287
  * Schema for persisted multipart files.
281
288
  *
@@ -290,23 +297,19 @@ export interface PersistedFileSchema extends Schema.declare<PersistedFile> {}
290
297
  export const PersistedFileSchema: PersistedFileSchema = Schema.declare(
291
298
  isPersistedFile,
292
299
  {
293
- typeConstructor: {
294
- _tag: "effect/http/PersistedFile"
295
- },
296
- generation: {
297
- runtime: `Multipart.PersistedFileSchema`,
298
- Type: `Multipart.PersistedFile`,
299
- importDeclaration: `import * as Multipart from "effect/unstable/http/Multipart"`
300
+ representation: {
301
+ id: "effect/http/PersistedFile",
302
+ payload: null
300
303
  },
304
+ toCode: () => ({
305
+ runtime: "Multipart.PersistedFileSchema",
306
+ Type: "Multipart.PersistedFile",
307
+ importDeclarations: [`import * as Multipart from "effect/unstable/http/Multipart"`]
308
+ }),
301
309
  expected: "PersistedFile",
302
310
  toCodecJson: () =>
303
311
  Schema.link<PersistedFile>()(
304
- Schema.Struct({
305
- key: Schema.String,
306
- name: Schema.String,
307
- contentType: Schema.String.annotate({ contentEncoding: "binary" }),
308
- path: Schema.String
309
- }),
312
+ PersistedFileEncoded,
310
313
  SchemaTransformation.transform({
311
314
  decode: ({ contentType, key, name, path }) => new PersistedFileImpl(key, name, contentType, path),
312
315
  encode: (file) => ({
@@ -154,7 +154,7 @@ export function make<A extends ReadonlyArray<Interpolated>>(
154
154
  values[index] = primitiveToString(value)
155
155
  })),
156
156
  {
157
- concurrency: "inherit",
157
+ concurrency: "unbounded",
158
158
  discard: true
159
159
  }
160
160
  ),