effect 4.0.0-beta.1 → 4.0.0-beta.10

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 (568) hide show
  1. package/dist/Cache.d.ts +2 -2
  2. package/dist/Cache.d.ts.map +1 -1
  3. package/dist/Cache.js +1 -1
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/Cause.d.ts +1 -1
  6. package/dist/Cause.d.ts.map +1 -1
  7. package/dist/Channel.d.ts.map +1 -1
  8. package/dist/Channel.js +6 -4
  9. package/dist/Channel.js.map +1 -1
  10. package/dist/Combiner.d.ts +280 -13
  11. package/dist/Combiner.d.ts.map +1 -1
  12. package/dist/Combiner.js +198 -7
  13. package/dist/Combiner.js.map +1 -1
  14. package/dist/Config.d.ts +3 -3
  15. package/dist/Config.js +3 -3
  16. package/dist/Config.js.map +1 -1
  17. package/dist/ConfigProvider.d.ts +1 -1
  18. package/dist/Cron.d.ts +1 -1
  19. package/dist/Data.d.ts +534 -365
  20. package/dist/Data.d.ts.map +1 -1
  21. package/dist/Data.js +132 -79
  22. package/dist/Data.js.map +1 -1
  23. package/dist/DateTime.d.ts +23 -161
  24. package/dist/DateTime.d.ts.map +1 -1
  25. package/dist/DateTime.js +6 -51
  26. package/dist/DateTime.js.map +1 -1
  27. package/dist/Duration.d.ts +12 -12
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +12 -12
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +125 -240
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +73 -119
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Encoding.d.ts +194 -0
  36. package/dist/Encoding.d.ts.map +1 -0
  37. package/dist/Encoding.js +352 -0
  38. package/dist/Encoding.js.map +1 -0
  39. package/dist/Equal.d.ts +276 -109
  40. package/dist/Equal.d.ts.map +1 -1
  41. package/dist/Equal.js +124 -48
  42. package/dist/Equal.js.map +1 -1
  43. package/dist/FileSystem.d.ts +1 -1
  44. package/dist/FileSystem.d.ts.map +1 -1
  45. package/dist/FileSystem.js +5 -5
  46. package/dist/FileSystem.js.map +1 -1
  47. package/dist/Filter.d.ts +30 -1
  48. package/dist/Filter.d.ts.map +1 -1
  49. package/dist/Filter.js +15 -0
  50. package/dist/Filter.js.map +1 -1
  51. package/dist/Formatter.d.ts +131 -47
  52. package/dist/Formatter.d.ts.map +1 -1
  53. package/dist/Formatter.js +229 -51
  54. package/dist/Formatter.js.map +1 -1
  55. package/dist/Graph.d.ts +1 -1
  56. package/dist/Graph.d.ts.map +1 -1
  57. package/dist/Graph.js +2 -2
  58. package/dist/Graph.js.map +1 -1
  59. package/dist/JsonSchema.d.ts +299 -10
  60. package/dist/JsonSchema.d.ts.map +1 -1
  61. package/dist/JsonSchema.js +323 -4
  62. package/dist/JsonSchema.js.map +1 -1
  63. package/dist/Latch.d.ts +109 -0
  64. package/dist/Latch.d.ts.map +1 -0
  65. package/dist/Latch.js +72 -0
  66. package/dist/Latch.js.map +1 -0
  67. package/dist/LayerMap.d.ts +4 -4
  68. package/dist/LayerMap.d.ts.map +1 -1
  69. package/dist/LogLevel.d.ts +27 -0
  70. package/dist/LogLevel.d.ts.map +1 -1
  71. package/dist/LogLevel.js +28 -100
  72. package/dist/LogLevel.js.map +1 -1
  73. package/dist/Logger.d.ts +4 -4
  74. package/dist/Logger.d.ts.map +1 -1
  75. package/dist/Metric.d.ts +2 -2
  76. package/dist/Metric.d.ts.map +1 -1
  77. package/dist/Metric.js +1 -1
  78. package/dist/Metric.js.map +1 -1
  79. package/dist/Optic.d.ts +947 -18
  80. package/dist/Optic.d.ts.map +1 -1
  81. package/dist/Optic.js +454 -5
  82. package/dist/Optic.js.map +1 -1
  83. package/dist/Pipeable.d.ts +17 -0
  84. package/dist/Pipeable.d.ts.map +1 -1
  85. package/dist/Pipeable.js +19 -1
  86. package/dist/Pipeable.js.map +1 -1
  87. package/dist/PlatformError.d.ts +10 -9
  88. package/dist/PlatformError.d.ts.map +1 -1
  89. package/dist/PlatformError.js +2 -2
  90. package/dist/PlatformError.js.map +1 -1
  91. package/dist/Pool.d.ts +6 -4
  92. package/dist/Pool.d.ts.map +1 -1
  93. package/dist/Pool.js +7 -5
  94. package/dist/Pool.js.map +1 -1
  95. package/dist/PubSub.d.ts +3 -2
  96. package/dist/PubSub.d.ts.map +1 -1
  97. package/dist/PubSub.js +3 -2
  98. package/dist/PubSub.js.map +1 -1
  99. package/dist/Random.d.ts +18 -1
  100. package/dist/Random.d.ts.map +1 -1
  101. package/dist/Random.js +29 -12
  102. package/dist/Random.js.map +1 -1
  103. package/dist/RcMap.d.ts +2 -2
  104. package/dist/RcMap.d.ts.map +1 -1
  105. package/dist/RcMap.js +1 -1
  106. package/dist/RcMap.js.map +1 -1
  107. package/dist/RcRef.d.ts +1 -1
  108. package/dist/RcRef.d.ts.map +1 -1
  109. package/dist/Reducer.d.ts +166 -7
  110. package/dist/Reducer.d.ts.map +1 -1
  111. package/dist/Reducer.js +135 -1
  112. package/dist/Reducer.js.map +1 -1
  113. package/dist/Request.d.ts +1 -1
  114. package/dist/Request.d.ts.map +1 -1
  115. package/dist/Request.js +2 -1
  116. package/dist/Request.js.map +1 -1
  117. package/dist/RequestResolver.d.ts +6 -26
  118. package/dist/RequestResolver.d.ts.map +1 -1
  119. package/dist/RequestResolver.js +0 -20
  120. package/dist/RequestResolver.js.map +1 -1
  121. package/dist/Result.d.ts +12 -0
  122. package/dist/Result.d.ts.map +1 -1
  123. package/dist/Result.js +12 -0
  124. package/dist/Result.js.map +1 -1
  125. package/dist/Schedule.d.ts +33 -14
  126. package/dist/Schedule.d.ts.map +1 -1
  127. package/dist/Schedule.js +65 -24
  128. package/dist/Schedule.js.map +1 -1
  129. package/dist/Schema.d.ts +199 -49
  130. package/dist/Schema.d.ts.map +1 -1
  131. package/dist/Schema.js +386 -72
  132. package/dist/Schema.js.map +1 -1
  133. package/dist/SchemaGetter.d.ts +2 -2
  134. package/dist/SchemaGetter.d.ts.map +1 -1
  135. package/dist/SchemaGetter.js +12 -14
  136. package/dist/SchemaGetter.js.map +1 -1
  137. package/dist/SchemaRepresentation.d.ts +44 -43
  138. package/dist/SchemaRepresentation.d.ts.map +1 -1
  139. package/dist/SchemaRepresentation.js +43 -24
  140. package/dist/SchemaRepresentation.js.map +1 -1
  141. package/dist/SchemaTransformation.d.ts +37 -0
  142. package/dist/SchemaTransformation.d.ts.map +1 -1
  143. package/dist/SchemaTransformation.js +80 -0
  144. package/dist/SchemaTransformation.js.map +1 -1
  145. package/dist/ScopedCache.d.ts +2 -2
  146. package/dist/ScopedCache.d.ts.map +1 -1
  147. package/dist/ScopedCache.js +1 -1
  148. package/dist/ScopedCache.js.map +1 -1
  149. package/dist/Semaphore.d.ts +211 -0
  150. package/dist/Semaphore.d.ts.map +1 -0
  151. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  152. package/dist/Semaphore.js.map +1 -0
  153. package/dist/Stream.d.ts +19 -19
  154. package/dist/Stream.d.ts.map +1 -1
  155. package/dist/Stream.js +12 -11
  156. package/dist/Stream.js.map +1 -1
  157. package/dist/Struct.d.ts +16 -0
  158. package/dist/Struct.d.ts.map +1 -1
  159. package/dist/Struct.js +22 -0
  160. package/dist/Struct.js.map +1 -1
  161. package/dist/SubscriptionRef.d.ts +2 -1
  162. package/dist/SubscriptionRef.d.ts.map +1 -1
  163. package/dist/SubscriptionRef.js +2 -1
  164. package/dist/SubscriptionRef.js.map +1 -1
  165. package/dist/SynchronizedRef.d.ts +2 -1
  166. package/dist/SynchronizedRef.d.ts.map +1 -1
  167. package/dist/SynchronizedRef.js +2 -1
  168. package/dist/SynchronizedRef.js.map +1 -1
  169. package/dist/Types.d.ts +14 -6
  170. package/dist/Types.d.ts.map +1 -1
  171. package/dist/index.d.ts +499 -19
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +499 -19
  174. package/dist/index.js.map +1 -1
  175. package/dist/internal/core.js +11 -3
  176. package/dist/internal/core.js.map +1 -1
  177. package/dist/internal/dateTime.js +3 -11
  178. package/dist/internal/dateTime.js.map +1 -1
  179. package/dist/internal/effect.js +31 -22
  180. package/dist/internal/effect.js.map +1 -1
  181. package/dist/internal/random.d.ts +2 -0
  182. package/dist/internal/random.d.ts.map +1 -0
  183. package/dist/internal/random.js +13 -0
  184. package/dist/internal/random.js.map +1 -0
  185. package/dist/internal/rcRef.js +3 -2
  186. package/dist/internal/rcRef.js.map +1 -1
  187. package/dist/testing/TestClock.d.ts +7 -6
  188. package/dist/testing/TestClock.d.ts.map +1 -1
  189. package/dist/testing/TestClock.js +6 -4
  190. package/dist/testing/TestClock.js.map +1 -1
  191. package/dist/testing/TestSchema.d.ts +6 -6
  192. package/dist/testing/TestSchema.d.ts.map +1 -1
  193. package/dist/unstable/ai/AiError.d.ts +48 -48
  194. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  195. package/dist/unstable/ai/Chat.d.ts +3 -3
  196. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  197. package/dist/unstable/ai/Chat.js +4 -3
  198. package/dist/unstable/ai/Chat.js.map +1 -1
  199. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  200. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  201. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  202. package/dist/unstable/ai/McpServer.d.ts +1 -1
  203. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  204. package/dist/unstable/ai/McpServer.js.map +1 -1
  205. package/dist/unstable/ai/Prompt.d.ts +20 -20
  206. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  207. package/dist/unstable/ai/Response.d.ts +26 -26
  208. package/dist/unstable/ai/Response.d.ts.map +1 -1
  209. package/dist/unstable/ai/Response.js +1 -1
  210. package/dist/unstable/ai/Response.js.map +1 -1
  211. package/dist/unstable/cli/CliError.d.ts +5 -5
  212. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  213. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  214. package/dist/unstable/cluster/ClusterCron.js +1 -1
  215. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  216. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  217. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  218. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  219. package/dist/unstable/cluster/Entity.d.ts +5 -4
  220. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  221. package/dist/unstable/cluster/Entity.js.map +1 -1
  222. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  223. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  224. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  225. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  226. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  227. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  228. package/dist/unstable/cluster/Message.d.ts +10 -10
  229. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  230. package/dist/unstable/cluster/MessageStorage.js +2 -1
  231. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  232. package/dist/unstable/cluster/Reply.d.ts +6 -6
  233. package/dist/unstable/cluster/Runner.d.ts +1 -1
  234. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  235. package/dist/unstable/cluster/Runners.js +4 -3
  236. package/dist/unstable/cluster/Runners.js.map +1 -1
  237. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  238. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  239. package/dist/unstable/cluster/Sharding.js +8 -6
  240. package/dist/unstable/cluster/Sharding.js.map +1 -1
  241. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  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/SqlRunnerStorage.js +1 -1
  245. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  246. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  247. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  248. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  249. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  250. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  251. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  252. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  253. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  254. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  255. package/dist/unstable/encoding/Sse.d.ts +4 -4
  256. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  257. package/dist/unstable/encoding/Sse.js.map +1 -1
  258. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  259. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  260. package/dist/unstable/eventlog/EventLog.js +2 -1
  261. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  262. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  263. package/dist/unstable/http/Cookies.d.ts +3 -3
  264. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  265. package/dist/unstable/http/Cookies.js +2 -2
  266. package/dist/unstable/http/Cookies.js.map +1 -1
  267. package/dist/unstable/http/HttpBody.d.ts +17 -2
  268. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  269. package/dist/unstable/http/HttpBody.js +28 -1
  270. package/dist/unstable/http/HttpBody.js.map +1 -1
  271. package/dist/unstable/http/HttpClient.d.ts +11 -11
  272. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  273. package/dist/unstable/http/HttpClient.js +4 -4
  274. package/dist/unstable/http/HttpClient.js.map +1 -1
  275. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  276. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  277. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  278. package/dist/unstable/http/HttpClientRequest.js +15 -3
  279. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  280. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  281. package/dist/unstable/http/HttpEffect.js +18 -26
  282. package/dist/unstable/http/HttpEffect.js.map +1 -1
  283. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  284. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  285. package/dist/unstable/http/HttpMethod.js +3 -3
  286. package/dist/unstable/http/HttpMethod.js.map +1 -1
  287. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  288. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  289. package/dist/unstable/http/HttpMiddleware.js +4 -9
  290. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  291. package/dist/unstable/http/HttpServerError.d.ts +6 -6
  292. package/dist/unstable/http/HttpServerResponse.js +1 -1
  293. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  294. package/dist/unstable/http/Multipart.d.ts +3 -3
  295. package/dist/unstable/http/UrlParams.d.ts +14 -6
  296. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  297. package/dist/unstable/http/UrlParams.js +1 -1
  298. package/dist/unstable/http/UrlParams.js.map +1 -1
  299. package/dist/unstable/httpapi/HttpApiBuilder.js +5 -5
  300. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  301. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  302. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  303. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  304. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  305. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  306. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  307. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  308. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  309. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  310. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  311. package/dist/unstable/httpapi/OpenApi.js +18 -16
  312. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  313. package/dist/unstable/observability/Otlp.d.ts +12 -12
  314. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  315. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  316. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  317. package/dist/unstable/observability/OtlpExporter.js +1 -1
  318. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  319. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  320. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  321. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  322. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  323. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  324. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  325. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  326. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  327. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  328. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  329. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  330. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  331. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  332. package/dist/unstable/persistence/PersistedCache.js +2 -1
  333. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  334. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  335. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  336. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  337. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  338. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  339. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  340. package/dist/unstable/persistence/Persistence.js +2 -2
  341. package/dist/unstable/persistence/Persistence.js.map +1 -1
  342. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  343. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  344. package/dist/unstable/persistence/RateLimiter.js +1 -1
  345. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  346. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  347. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  348. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  349. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  350. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  351. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  352. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  353. package/dist/unstable/reactivity/Atom.js +15 -12
  354. package/dist/unstable/reactivity/Atom.js.map +1 -1
  355. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  356. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  357. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  358. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  359. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  360. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  361. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  362. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  363. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  364. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  365. package/dist/unstable/reactivity/Hydration.js +76 -0
  366. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  367. package/dist/unstable/reactivity/index.d.ts +4 -0
  368. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  369. package/dist/unstable/reactivity/index.js +4 -0
  370. package/dist/unstable/reactivity/index.js.map +1 -1
  371. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  372. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  373. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  374. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  375. package/dist/unstable/rpc/RpcClient.js +6 -13
  376. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  377. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  378. package/dist/unstable/rpc/RpcServer.js +5 -3
  379. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  380. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  381. package/dist/unstable/rpc/Utils.js +2 -1
  382. package/dist/unstable/rpc/Utils.js.map +1 -1
  383. package/dist/unstable/schema/Model.d.ts +4 -4
  384. package/dist/unstable/schema/Model.d.ts.map +1 -1
  385. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  386. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  387. package/dist/unstable/schema/VariantSchema.js +13 -2
  388. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  389. package/dist/unstable/socket/Socket.d.ts +4 -4
  390. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  391. package/dist/unstable/socket/Socket.js +3 -2
  392. package/dist/unstable/socket/Socket.js.map +1 -1
  393. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  394. package/dist/unstable/sql/Migrator.d.ts +1 -1
  395. package/dist/unstable/sql/SqlError.d.ts +2 -2
  396. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  397. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  398. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  399. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  400. package/dist/unstable/sql/SqlSchema.js +24 -3
  401. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  402. package/dist/unstable/sql/Statement.js +0 -1
  403. package/dist/unstable/sql/Statement.js.map +1 -1
  404. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  405. package/dist/unstable/workers/Worker.js +2 -1
  406. package/dist/unstable/workers/Worker.js.map +1 -1
  407. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  408. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  409. package/dist/unstable/workflow/DurableClock.js +3 -3
  410. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  411. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  412. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  413. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  414. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
  415. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  416. package/dist/unstable/workflow/WorkflowEngine.js +2 -1
  417. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  418. package/package.json +2 -2
  419. package/src/Cache.ts +3 -3
  420. package/src/Cause.ts +1 -1
  421. package/src/Channel.ts +6 -4
  422. package/src/Combiner.ts +280 -13
  423. package/src/Config.ts +3 -3
  424. package/src/Data.ts +538 -374
  425. package/src/DateTime.ts +24 -164
  426. package/src/Duration.ts +15 -15
  427. package/src/Effect.ts +143 -261
  428. package/src/Encoding.ts +879 -0
  429. package/src/Equal.ts +278 -111
  430. package/src/FileSystem.ts +7 -8
  431. package/src/Filter.ts +48 -1
  432. package/src/Formatter.ts +253 -51
  433. package/src/Graph.ts +8 -5
  434. package/src/JsonSchema.ts +383 -10
  435. package/src/Latch.ts +112 -0
  436. package/src/LayerMap.ts +5 -5
  437. package/src/LogLevel.ts +31 -0
  438. package/src/Logger.ts +5 -5
  439. package/src/Metric.ts +4 -4
  440. package/src/Optic.ts +948 -19
  441. package/src/Pipeable.ts +32 -1
  442. package/src/PlatformError.ts +5 -5
  443. package/src/Pool.ts +13 -11
  444. package/src/PubSub.ts +10 -9
  445. package/src/Random.ts +33 -14
  446. package/src/RcMap.ts +5 -5
  447. package/src/RcRef.ts +1 -1
  448. package/src/Reducer.ts +166 -7
  449. package/src/Request.ts +3 -2
  450. package/src/RequestResolver.ts +9 -29
  451. package/src/Result.ts +13 -0
  452. package/src/Schedule.ts +279 -140
  453. package/src/Schema.ts +575 -113
  454. package/src/SchemaGetter.ts +12 -14
  455. package/src/SchemaRepresentation.ts +43 -24
  456. package/src/SchemaTransformation.ts +104 -0
  457. package/src/ScopedCache.ts +3 -3
  458. package/src/Semaphore.ts +356 -0
  459. package/src/Stream.ts +43 -42
  460. package/src/Struct.ts +26 -0
  461. package/src/SubscriptionRef.ts +3 -2
  462. package/src/SynchronizedRef.ts +3 -2
  463. package/src/Types.ts +12 -2
  464. package/src/index.ts +502 -20
  465. package/src/internal/core.ts +12 -5
  466. package/src/internal/dateTime.ts +9 -30
  467. package/src/internal/effect.ts +57 -37
  468. package/src/internal/random.ts +20 -0
  469. package/src/internal/rcRef.ts +4 -3
  470. package/src/testing/TestClock.ts +13 -11
  471. package/src/testing/TestSchema.ts +8 -8
  472. package/src/unstable/ai/AiError.ts +2 -2
  473. package/src/unstable/ai/Chat.ts +12 -11
  474. package/src/unstable/ai/LanguageModel.ts +3 -3
  475. package/src/unstable/ai/McpServer.ts +2 -2
  476. package/src/unstable/ai/Prompt.ts +37 -37
  477. package/src/unstable/ai/Response.ts +25 -25
  478. package/src/unstable/cluster/ClusterCron.ts +2 -2
  479. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  480. package/src/unstable/cluster/Entity.ts +7 -6
  481. package/src/unstable/cluster/EntityResource.ts +4 -4
  482. package/src/unstable/cluster/Envelope.ts +1 -1
  483. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  484. package/src/unstable/cluster/MessageStorage.ts +3 -5
  485. package/src/unstable/cluster/Runners.ts +6 -5
  486. package/src/unstable/cluster/Sharding.ts +11 -9
  487. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  488. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  489. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  490. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  491. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  492. package/src/unstable/encoding/Sse.ts +2 -4
  493. package/src/unstable/eventlog/EventLog.ts +2 -1
  494. package/src/unstable/http/Cookies.ts +3 -3
  495. package/src/unstable/http/HttpBody.ts +42 -1
  496. package/src/unstable/http/HttpClient.ts +19 -19
  497. package/src/unstable/http/HttpClientRequest.ts +38 -13
  498. package/src/unstable/http/HttpEffect.ts +17 -25
  499. package/src/unstable/http/HttpMethod.ts +16 -4
  500. package/src/unstable/http/HttpMiddleware.ts +5 -10
  501. package/src/unstable/http/HttpServerResponse.ts +1 -1
  502. package/src/unstable/http/Multipart.ts +2 -2
  503. package/src/unstable/http/UrlParams.ts +20 -5
  504. package/src/unstable/httpapi/HttpApiBuilder.ts +5 -5
  505. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  506. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  507. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  508. package/src/unstable/httpapi/OpenApi.ts +18 -16
  509. package/src/unstable/observability/Otlp.ts +12 -12
  510. package/src/unstable/observability/OtlpExporter.ts +3 -3
  511. package/src/unstable/observability/OtlpLogger.ts +4 -4
  512. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  513. package/src/unstable/observability/OtlpTracer.ts +4 -4
  514. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  515. package/src/unstable/persistence/Persistable.ts +2 -2
  516. package/src/unstable/persistence/PersistedCache.ts +20 -9
  517. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  518. package/src/unstable/persistence/Persistence.ts +3 -3
  519. package/src/unstable/persistence/RateLimiter.ts +4 -4
  520. package/src/unstable/process/ChildProcess.ts +2 -2
  521. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  522. package/src/unstable/reactivity/Atom.ts +20 -18
  523. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  524. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  525. package/src/unstable/reactivity/Hydration.ts +112 -0
  526. package/src/unstable/reactivity/index.ts +5 -0
  527. package/src/unstable/rpc/Rpc.ts +3 -3
  528. package/src/unstable/rpc/RpcClient.ts +12 -54
  529. package/src/unstable/rpc/RpcServer.ts +6 -4
  530. package/src/unstable/rpc/Utils.ts +2 -1
  531. package/src/unstable/schema/VariantSchema.ts +36 -7
  532. package/src/unstable/socket/Socket.ts +7 -6
  533. package/src/unstable/sql/SqlModel.ts +2 -2
  534. package/src/unstable/sql/SqlSchema.ts +62 -13
  535. package/src/unstable/sql/Statement.ts +0 -1
  536. package/src/unstable/workers/Worker.ts +2 -1
  537. package/src/unstable/workflow/DurableClock.ts +8 -8
  538. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  539. package/src/unstable/workflow/WorkflowEngine.ts +3 -2
  540. package/dist/PartitionedSemaphore.d.ts +0 -52
  541. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  542. package/dist/PartitionedSemaphore.js.map +0 -1
  543. package/dist/encoding/Base64.d.ts +0 -67
  544. package/dist/encoding/Base64.d.ts.map +0 -1
  545. package/dist/encoding/Base64.js +0 -146
  546. package/dist/encoding/Base64.js.map +0 -1
  547. package/dist/encoding/Base64Url.d.ts +0 -60
  548. package/dist/encoding/Base64Url.d.ts.map +0 -1
  549. package/dist/encoding/Base64Url.js +0 -89
  550. package/dist/encoding/Base64Url.js.map +0 -1
  551. package/dist/encoding/EncodingError.d.ts +0 -31
  552. package/dist/encoding/EncodingError.d.ts.map +0 -1
  553. package/dist/encoding/EncodingError.js +0 -22
  554. package/dist/encoding/EncodingError.js.map +0 -1
  555. package/dist/encoding/Hex.d.ts +0 -61
  556. package/dist/encoding/Hex.d.ts.map +0 -1
  557. package/dist/encoding/Hex.js +0 -115
  558. package/dist/encoding/Hex.js.map +0 -1
  559. package/dist/encoding/index.d.ts +0 -26
  560. package/dist/encoding/index.d.ts.map +0 -1
  561. package/dist/encoding/index.js +0 -27
  562. package/dist/encoding/index.js.map +0 -1
  563. package/src/PartitionedSemaphore.ts +0 -182
  564. package/src/encoding/Base64.ts +0 -366
  565. package/src/encoding/Base64Url.ts +0 -104
  566. package/src/encoding/EncodingError.ts +0 -35
  567. package/src/encoding/Hex.ts +0 -390
  568. package/src/encoding/index.ts +0 -31
@@ -12,7 +12,6 @@ import * as Inspectable from "../Inspectable.ts"
12
12
  import * as order from "../Order.ts"
13
13
  import { pipeArguments } from "../Pipeable.ts"
14
14
  import * as Predicate from "../Predicate.ts"
15
- import * as Result from "../Result.ts"
16
15
  import type { Mutable } from "../Types.ts"
17
16
  import * as UndefinedOr from "../UndefinedOr.ts"
18
17
  import * as effect from "./effect.ts"
@@ -467,32 +466,12 @@ export const setZoneNamedUnsafe: {
467
466
 
468
467
  /** @internal */
469
468
  export const distance: {
470
- (other: DateTime.DateTime): (self: DateTime.DateTime) => number
471
- (self: DateTime.DateTime, other: DateTime.DateTime): number
472
- } = dual(2, (self: DateTime.DateTime, other: DateTime.DateTime): number => toEpochMillis(other) - toEpochMillis(self))
473
-
474
- /** @internal */
475
- export const distanceDurationResult: {
476
- (other: DateTime.DateTime): (self: DateTime.DateTime) => Result.Result<Duration.Duration, Duration.Duration>
477
- (self: DateTime.DateTime, other: DateTime.DateTime): Result.Result<Duration.Duration, Duration.Duration>
478
- } = dual(
479
- 2,
480
- (self: DateTime.DateTime, other: DateTime.DateTime): Result.Result<Duration.Duration, Duration.Duration> => {
481
- const diffMillis = distance(self, other)
482
- return diffMillis > 0
483
- ? Result.succeed(Duration.millis(diffMillis))
484
- : Result.fail(Duration.millis(-diffMillis))
485
- }
486
- )
487
-
488
- /** @internal */
489
- export const distanceDuration: {
490
469
  (other: DateTime.DateTime): (self: DateTime.DateTime) => Duration.Duration
491
470
  (self: DateTime.DateTime, other: DateTime.DateTime): Duration.Duration
492
471
  } = dual(
493
472
  2,
494
473
  (self: DateTime.DateTime, other: DateTime.DateTime): Duration.Duration =>
495
- Duration.millis(Math.abs(distance(self, other)))
474
+ Duration.millis(toEpochMillis(other) - toEpochMillis(self))
496
475
  )
497
476
 
498
477
  /** @internal */
@@ -911,22 +890,22 @@ export const match: {
911
890
 
912
891
  /** @internal */
913
892
  export const addDuration: {
914
- (duration: Duration.DurationInput): <A extends DateTime.DateTime>(self: A) => A
915
- <A extends DateTime.DateTime>(self: A, duration: Duration.DurationInput): A
893
+ (duration: Duration.Input): <A extends DateTime.DateTime>(self: A) => A
894
+ <A extends DateTime.DateTime>(self: A, duration: Duration.Input): A
916
895
  } = dual(
917
896
  2,
918
- (self: DateTime.DateTime, duration: Duration.DurationInput): DateTime.DateTime =>
919
- mapEpochMillis(self, (millis) => millis + Duration.toMillis(Duration.fromDurationInputUnsafe(duration)))
897
+ (self: DateTime.DateTime, duration: Duration.Input): DateTime.DateTime =>
898
+ mapEpochMillis(self, (millis) => millis + Duration.toMillis(Duration.fromInputUnsafe(duration)))
920
899
  )
921
900
 
922
901
  /** @internal */
923
902
  export const subtractDuration: {
924
- (duration: Duration.DurationInput): <A extends DateTime.DateTime>(self: A) => A
925
- <A extends DateTime.DateTime>(self: A, duration: Duration.DurationInput): A
903
+ (duration: Duration.Input): <A extends DateTime.DateTime>(self: A) => A
904
+ <A extends DateTime.DateTime>(self: A, duration: Duration.Input): A
926
905
  } = dual(
927
906
  2,
928
- (self: DateTime.DateTime, duration: Duration.DurationInput): DateTime.DateTime =>
929
- mapEpochMillis(self, (millis) => millis - Duration.toMillis(Duration.fromDurationInputUnsafe(duration)))
907
+ (self: DateTime.DateTime, duration: Duration.Input): DateTime.DateTime =>
908
+ mapEpochMillis(self, (millis) => millis - Duration.toMillis(Duration.fromInputUnsafe(duration)))
930
909
  )
931
910
 
932
911
  const addMillis = (date: Date, amount: number): void => {
@@ -14,6 +14,7 @@ import { constant, constFalse, constTrue, constUndefined, constVoid, dual, ident
14
14
  import * as Hash from "../Hash.ts"
15
15
  import { toJson, toStringUnknown } from "../Inspectable.ts"
16
16
  import * as Iterable from "../Iterable.ts"
17
+ import type * as _Latch from "../Latch.ts"
17
18
  import type * as Logger from "../Logger.ts"
18
19
  import type * as LogLevel from "../LogLevel.ts"
19
20
  import type * as Metric from "../Metric.ts"
@@ -81,6 +82,7 @@ import {
81
82
  isEffect,
82
83
  isFailReason,
83
84
  isInterruptReason,
85
+ isNoSuchElementError,
84
86
  makePrimitive,
85
87
  makePrimitiveProto,
86
88
  NoSuchElementError,
@@ -783,6 +785,7 @@ export const fiberJoinAll = <A extends Iterable<Fiber.Fiber<any, any>>>(self: A)
783
785
  > =>
784
786
  callback((resume) => {
785
787
  const fibers = Array.from(self)
788
+ if (fibers.length === 0) return resume(succeed(Arr.empty() as any))
786
789
  const out = new Array<any>(fibers.length) as Arr.NonEmptyArray<any>
787
790
  const cancels = Arr.empty<() => void>()
788
791
  let done = 0
@@ -2440,6 +2443,18 @@ export const catch_: {
2440
2443
  ): Effect.Effect<A | B, E2, R | R2> => catchCauseIf(self, findError as any, (e: any) => f(e)) as any
2441
2444
  )
2442
2445
 
2446
+ /** @internal */
2447
+ export const catchNoSuchElement = <A, E, R>(
2448
+ self: Effect.Effect<A, E, R>
2449
+ ): Effect.Effect<Option.Option<A>, Exclude<E, Cause.NoSuchElementError>, R> =>
2450
+ matchEffect(self, {
2451
+ onFailure: (error) =>
2452
+ isNoSuchElementError(error)
2453
+ ? succeedNone
2454
+ : fail(error as Exclude<E, Cause.NoSuchElementError>),
2455
+ onSuccess: succeedSome
2456
+ })
2457
+
2443
2458
  /** @internal */
2444
2459
  export const catchDefect: {
2445
2460
  <E, B, E2, R2>(
@@ -3390,24 +3405,24 @@ export const isSuccess: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect
3390
3405
  /** @internal */
3391
3406
  export const delay: {
3392
3407
  (
3393
- duration: Duration.DurationInput
3408
+ duration: Duration.Input
3394
3409
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
3395
3410
  <A, E, R>(
3396
3411
  self: Effect.Effect<A, E, R>,
3397
- duration: Duration.DurationInput
3412
+ duration: Duration.Input
3398
3413
  ): Effect.Effect<A, E, R>
3399
3414
  } = dual(
3400
3415
  2,
3401
3416
  <A, E, R>(
3402
3417
  self: Effect.Effect<A, E, R>,
3403
- duration: Duration.DurationInput
3418
+ duration: Duration.Input
3404
3419
  ): Effect.Effect<A, E, R> => andThen(sleep(duration), self)
3405
3420
  )
3406
3421
 
3407
3422
  /** @internal */
3408
3423
  export const timeoutOrElse: {
3409
3424
  <A2, E2, R2>(options: {
3410
- readonly duration: Duration.DurationInput
3425
+ readonly duration: Duration.Input
3411
3426
  readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
3412
3427
  }): <A, E, R>(
3413
3428
  self: Effect.Effect<A, E, R>
@@ -3415,7 +3430,7 @@ export const timeoutOrElse: {
3415
3430
  <A, E, R, A2, E2, R2>(
3416
3431
  self: Effect.Effect<A, E, R>,
3417
3432
  options: {
3418
- readonly duration: Duration.DurationInput
3433
+ readonly duration: Duration.Input
3419
3434
  readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
3420
3435
  }
3421
3436
  ): Effect.Effect<A | A2, E | E2, R | R2>
@@ -3424,7 +3439,7 @@ export const timeoutOrElse: {
3424
3439
  <A, E, R, A2, E2, R2>(
3425
3440
  self: Effect.Effect<A, E, R>,
3426
3441
  options: {
3427
- readonly duration: Duration.DurationInput
3442
+ readonly duration: Duration.Input
3428
3443
  readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
3429
3444
  }
3430
3445
  ): Effect.Effect<A | A2, E | E2, R | R2> =>
@@ -3437,19 +3452,19 @@ export const timeoutOrElse: {
3437
3452
  /** @internal */
3438
3453
  export const timeout: {
3439
3454
  (
3440
- duration: Duration.DurationInput
3455
+ duration: Duration.Input
3441
3456
  ): <A, E, R>(
3442
3457
  self: Effect.Effect<A, E, R>
3443
3458
  ) => Effect.Effect<A, E | Cause.TimeoutError, R>
3444
3459
  <A, E, R>(
3445
3460
  self: Effect.Effect<A, E, R>,
3446
- duration: Duration.DurationInput
3461
+ duration: Duration.Input
3447
3462
  ): Effect.Effect<A, E | Cause.TimeoutError, R>
3448
3463
  } = dual(
3449
3464
  2,
3450
3465
  <A, E, R>(
3451
3466
  self: Effect.Effect<A, E, R>,
3452
- duration: Duration.DurationInput
3467
+ duration: Duration.Input
3453
3468
  ): Effect.Effect<A, E | TimeoutError, R> =>
3454
3469
  timeoutOrElse(self, {
3455
3470
  duration,
@@ -3460,19 +3475,19 @@ export const timeout: {
3460
3475
  /** @internal */
3461
3476
  export const timeoutOption: {
3462
3477
  (
3463
- duration: Duration.DurationInput
3478
+ duration: Duration.Input
3464
3479
  ): <A, E, R>(
3465
3480
  self: Effect.Effect<A, E, R>
3466
3481
  ) => Effect.Effect<Option.Option<A>, E, R>
3467
3482
  <A, E, R>(
3468
3483
  self: Effect.Effect<A, E, R>,
3469
- duration: Duration.DurationInput
3484
+ duration: Duration.Input
3470
3485
  ): Effect.Effect<Option.Option<A>, E, R>
3471
3486
  } = dual(
3472
3487
  2,
3473
3488
  <A, E, R>(
3474
3489
  self: Effect.Effect<A, E, R>,
3475
- duration: Duration.DurationInput
3490
+ duration: Duration.Input
3476
3491
  ): Effect.Effect<Option.Option<A>, E, R> =>
3477
3492
  raceFirst(
3478
3493
  asSome(self),
@@ -3860,19 +3875,19 @@ export const acquireUseRelease = <Resource, E, R, A, E2, R2, E3, R3>(
3860
3875
 
3861
3876
  /** @internal */
3862
3877
  export const cachedInvalidateWithTTL: {
3863
- (timeToLive: Duration.DurationInput): <A, E, R>(
3878
+ (timeToLive: Duration.Input): <A, E, R>(
3864
3879
  self: Effect.Effect<A, E, R>
3865
3880
  ) => Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]>
3866
3881
  <A, E, R>(
3867
3882
  self: Effect.Effect<A, E, R>,
3868
- timeToLive: Duration.DurationInput
3883
+ timeToLive: Duration.Input
3869
3884
  ): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]>
3870
3885
  } = dual(2, <A, E, R>(
3871
3886
  self: Effect.Effect<A, E, R>,
3872
- ttl: Duration.DurationInput
3887
+ ttl: Duration.Input
3873
3888
  ): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]> =>
3874
3889
  sync(() => {
3875
- const ttlMillis = Duration.toMillis(Duration.fromDurationInputUnsafe(ttl))
3890
+ const ttlMillis = Duration.toMillis(Duration.fromInputUnsafe(ttl))
3876
3891
  const isFinite = Number.isFinite(ttlMillis)
3877
3892
  const latch = makeLatchUnsafe(false)
3878
3893
  let expiresAt = 0
@@ -3905,17 +3920,17 @@ export const cachedInvalidateWithTTL: {
3905
3920
  /** @internal */
3906
3921
  export const cachedWithTTL: {
3907
3922
  (
3908
- timeToLive: Duration.DurationInput
3923
+ timeToLive: Duration.Input
3909
3924
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Effect.Effect<A, E, R>>
3910
3925
  <A, E, R>(
3911
3926
  self: Effect.Effect<A, E, R>,
3912
- timeToLive: Duration.DurationInput
3927
+ timeToLive: Duration.Input
3913
3928
  ): Effect.Effect<Effect.Effect<A, E, R>>
3914
3929
  } = dual(
3915
3930
  2,
3916
3931
  <A, E, R>(
3917
3932
  self: Effect.Effect<A, E, R>,
3918
- timeToLive: Duration.DurationInput
3933
+ timeToLive: Duration.Input
3919
3934
  ): Effect.Effect<Effect.Effect<A, E, R>> => map(cachedInvalidateWithTTL(self, timeToLive), (tuple) => tuple[0])
3920
3935
  )
3921
3936
 
@@ -4759,25 +4774,27 @@ class Semaphore {
4759
4774
  return this.permits - this.taken
4760
4775
  }
4761
4776
 
4762
- readonly take = (n: number): Effect.Effect<number> =>
4763
- callback<number>((resume) => {
4777
+ readonly take = (n: number): Effect.Effect<number> => {
4778
+ const take: Effect.Effect<number> = suspend(() => {
4764
4779
  if (this.free < n) {
4765
- const observer = () => {
4766
- if (this.free < n) {
4767
- return
4780
+ return callback((resume) => {
4781
+ if (this.free >= n) return resume(take)
4782
+ const observer = () => {
4783
+ if (this.free < n) return
4784
+ this.waiters.delete(observer)
4785
+ resume(take)
4768
4786
  }
4769
- this.waiters.delete(observer)
4770
- this.taken += n
4771
- resume(succeed(n))
4772
- }
4773
- this.waiters.add(observer)
4774
- return sync(() => {
4775
- this.waiters.delete(observer)
4787
+ this.waiters.add(observer)
4788
+ return sync(() => {
4789
+ this.waiters.delete(observer)
4790
+ })
4776
4791
  })
4777
4792
  }
4778
4793
  this.taken += n
4779
- return resume(succeed(n))
4794
+ return succeed(n)
4780
4795
  })
4796
+ return take
4797
+ }
4781
4798
 
4782
4799
  updateTakenUnsafe(fiber: Fiber.Fiber<any, any>, f: (n: number) => number): Effect.Effect<number> {
4783
4800
  this.taken = f(this.taken)
@@ -4815,7 +4832,10 @@ class Semaphore {
4815
4832
 
4816
4833
  readonly withPermits = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
4817
4834
  uninterruptibleMask((restore) =>
4818
- flatMap(restore(this.take(n)), (permits) => ensuring(restore(self), this.release(permits)))
4835
+ flatMap(
4836
+ restore(this.take(n)),
4837
+ (permits) => onExitPrimitive(restore(self), () => this.release(permits), true)
4838
+ )
4819
4839
  )
4820
4840
 
4821
4841
  readonly withPermit = this.withPermits(1)
@@ -4841,7 +4861,7 @@ export const makeSemaphore = (permits: number) => sync(() => makeSemaphoreUnsafe
4841
4861
  const succeedTrue = succeed(true)
4842
4862
  const succeedFalse = succeed(false)
4843
4863
 
4844
- class Latch implements Effect.Latch {
4864
+ class Latch implements _Latch.Latch {
4845
4865
  waiters: Array<(_: Effect.Effect<void>) => void> = []
4846
4866
  scheduled = false
4847
4867
  private isOpen: boolean
@@ -4901,7 +4921,7 @@ class Latch implements Effect.Latch {
4901
4921
  }
4902
4922
 
4903
4923
  /** @internal */
4904
- export const makeLatchUnsafe = (open?: boolean | undefined): Effect.Latch => new Latch(open ?? false)
4924
+ export const makeLatchUnsafe = (open?: boolean | undefined): _Latch.Latch => new Latch(open ?? false)
4905
4925
 
4906
4926
  /** @internal */
4907
4927
  export const makeLatch = (open?: boolean | undefined) => sync(() => makeLatchUnsafe(open))
@@ -5331,8 +5351,8 @@ export const clockWith = <A, E, R>(f: (clock: Clock.Clock) => Effect.Effect<A, E
5331
5351
  withFiber((fiber) => f(fiber.getRef(ClockRef)))
5332
5352
 
5333
5353
  /** @internal */
5334
- export const sleep = (duration: Duration.DurationInput): Effect.Effect<void> =>
5335
- clockWith((clock) => clock.sleep(Duration.fromDurationInputUnsafe(duration)))
5354
+ export const sleep = (duration: Duration.Input): Effect.Effect<void> =>
5355
+ clockWith((clock) => clock.sleep(Duration.fromInputUnsafe(duration)))
5336
5356
 
5337
5357
  /** @internal */
5338
5358
  export const currentTimeMillis: Effect.Effect<number> = clockWith((clock) => clock.currentTimeMillis)
@@ -0,0 +1,20 @@
1
+ import * as ServiceMap from "../ServiceMap.ts"
2
+
3
+ /** @internal */
4
+ export interface Random {
5
+ nextIntUnsafe(): number
6
+ nextDoubleUnsafe(): number
7
+ }
8
+
9
+ /** @internal */
10
+ export const Random: ServiceMap.Reference<Random> = ServiceMap.Reference<Random>("effect/Random", {
11
+ defaultValue: () => ({
12
+ nextIntUnsafe() {
13
+ return Math.floor(Math.random() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) +
14
+ Number.MIN_SAFE_INTEGER
15
+ },
16
+ nextDoubleUnsafe() {
17
+ return Math.random()
18
+ }
19
+ })
20
+ })
@@ -6,6 +6,7 @@ import { identity } from "../Function.ts"
6
6
  import { pipeArguments } from "../Pipeable.ts"
7
7
  import type * as RcRef from "../RcRef.ts"
8
8
  import * as Scope from "../Scope.ts"
9
+ import * as Semaphore from "../Semaphore.ts"
9
10
  import * as ServiceMap from "../ServiceMap.ts"
10
11
 
11
12
  const TypeId = "~effect/RcRef"
@@ -47,7 +48,7 @@ class RcRefImpl<A, E> implements RcRef.RcRef<A, E> {
47
48
  }
48
49
 
49
50
  state: State<A> = stateEmpty
50
- readonly semaphore = Effect.makeSemaphoreUnsafe(1)
51
+ readonly semaphore = Semaphore.makeUnsafe(1)
51
52
  readonly acquire: Effect.Effect<A, E>
52
53
  readonly services: ServiceMap.ServiceMap<never>
53
54
  readonly scope: Scope.Scope
@@ -69,7 +70,7 @@ class RcRefImpl<A, E> implements RcRef.RcRef<A, E> {
69
70
  /** @internal */
70
71
  export const make = <A, E, R>(options: {
71
72
  readonly acquire: Effect.Effect<A, E, R>
72
- readonly idleTimeToLive?: Duration.DurationInput | undefined
73
+ readonly idleTimeToLive?: Duration.Input | undefined
73
74
  }) =>
74
75
  Effect.withFiber<RcRef.RcRef<A, E>, never, R | Scope.Scope>((fiber) => {
75
76
  const services = fiber.services as ServiceMap.ServiceMap<R | Scope.Scope>
@@ -78,7 +79,7 @@ export const make = <A, E, R>(options: {
78
79
  options.acquire as Effect.Effect<A, E>,
79
80
  services,
80
81
  scope,
81
- options.idleTimeToLive ? Duration.fromDurationInputUnsafe(options.idleTimeToLive) : undefined
82
+ options.idleTimeToLive ? Duration.fromInputUnsafe(options.idleTimeToLive) : undefined
82
83
  )
83
84
  return Effect.as(
84
85
  Scope.addFinalizerExit(scope, () => {
@@ -8,8 +8,10 @@ import * as Duration from "../Duration.ts"
8
8
  import * as Effect from "../Effect.ts"
9
9
  import * as Fiber from "../Fiber.ts"
10
10
  import { flow } from "../Function.ts"
11
+ import * as Latch from "../Latch.ts"
11
12
  import * as Layer from "../Layer.ts"
12
13
  import * as Order from "../Order.ts"
14
+ import * as Semaphore from "../Semaphore.ts"
13
15
 
14
16
  /**
15
17
  * A `TestClock` simplifies deterministically and efficiently testing effects
@@ -79,7 +81,7 @@ export interface TestClock extends Clock.Clock {
79
81
  * that were scheduled to occur on or before the new time will be run in
80
82
  * order.
81
83
  */
82
- adjust(duration: Duration.DurationInput): Effect.Effect<void>
84
+ adjust(duration: Duration.Input): Effect.Effect<void>
83
85
  /**
84
86
  * Sets the current clock time to the specified `timestamp`. Any effects that
85
87
  * were scheduled to occur on or before the new time will be run in order.
@@ -139,7 +141,7 @@ export declare namespace TestClock {
139
141
  * The amount of time to wait before displaying a warning message when a
140
142
  * test is using time but is not advancing the `TestClock`.
141
143
  */
142
- readonly warningDelay?: Duration.DurationInput
144
+ readonly warningDelay?: Duration.Input
143
145
  }
144
146
 
145
147
  /**
@@ -155,7 +157,7 @@ export declare namespace TestClock {
155
157
  * const timestamp = testClock.currentTimeMillisUnsafe()
156
158
  * console.log(timestamp) // Current test time
157
159
  *
158
- * // Internal state structure: { timestamp: number, sleeps: Array<[number, Effect.Latch]> }
160
+ * // Internal state structure: { timestamp: number, sleeps: Array<[number, Latch.Latch]> }
159
161
  * })
160
162
  * ```
161
163
  *
@@ -164,7 +166,7 @@ export declare namespace TestClock {
164
166
  */
165
167
  export interface State {
166
168
  readonly timestamp: number
167
- readonly sleeps: ReadonlyArray<[number, Effect.Latch]>
169
+ readonly sleeps: ReadonlyArray<[number, Latch.Latch]>
168
170
  }
169
171
  }
170
172
 
@@ -220,10 +222,10 @@ export const make = Effect.fnUntraced(function*(
220
222
  const sleeps: Array<{
221
223
  readonly sequence: number
222
224
  readonly timestamp: number
223
- readonly latch: Effect.Latch
225
+ readonly latch: Latch.Latch
224
226
  }> = []
225
227
  const liveClock = yield* Clock.clockWith(Effect.succeed)
226
- const warningSemaphore = yield* Effect.makeSemaphore(1)
228
+ const warningSemaphore = yield* Semaphore.make(1)
227
229
 
228
230
  let currentTimestamp: number = new Date(0).getTime()
229
231
  let warningState: WarningState = WarningState.Start()
@@ -292,7 +294,7 @@ export const make = Effect.fnUntraced(function*(
292
294
  const millis = Duration.toMillis(duration)
293
295
  const end = currentTimestamp + millis
294
296
  if (end <= currentTimestamp) return
295
- const latch = Effect.makeLatchUnsafe()
297
+ const latch = Latch.makeUnsafe()
296
298
  sleeps.push({
297
299
  sequence: sequence++,
298
300
  timestamp: end,
@@ -303,7 +305,7 @@ export const make = Effect.fnUntraced(function*(
303
305
  yield* latch.await
304
306
  })
305
307
 
306
- const runSemaphore = yield* Effect.makeSemaphore(1)
308
+ const runSemaphore = yield* Semaphore.make(1)
307
309
  const run = Effect.fnUntraced(function*(step: (currentTimestamp: number) => number) {
308
310
  yield* Fiber.await(yield* Effect.forkScoped(Effect.yieldNow))
309
311
  const endTimestamp = step(currentTimestamp)
@@ -317,8 +319,8 @@ export const make = Effect.fnUntraced(function*(
317
319
  currentTimestamp = endTimestamp
318
320
  }, runSemaphore.withPermits(1))
319
321
 
320
- function adjust(duration: Duration.DurationInput) {
321
- const millis = Duration.toMillis(Duration.fromDurationInputUnsafe(duration))
322
+ function adjust(duration: Duration.Input) {
323
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
322
324
  return warningDone.pipe(Effect.andThen(run((timestamp) => timestamp + millis)))
323
325
  }
324
326
 
@@ -429,7 +431,7 @@ export const testClockWith = <A, E, R>(
429
431
  * @since 2.0.0
430
432
  * @category utils
431
433
  */
432
- export const adjust = (duration: Duration.DurationInput): Effect.Effect<void> =>
434
+ export const adjust = (duration: Duration.Input): Effect.Effect<void> =>
433
435
  testClockWith((testClock) => testClock.adjust(duration))
434
436
 
435
437
  /**
@@ -156,16 +156,16 @@ export class Decoding<S extends Schema.Top> {
156
156
  /**
157
157
  * Asserts that decoding succeeds with the expected value.
158
158
  */
159
- async succeed<S extends Schema.Codec<unknown, unknown, never, unknown>>(
159
+ async succeed<S extends Schema.Decoder<unknown, never>>(
160
160
  this: Decoding<S>,
161
161
  input: unknown
162
162
  ): Promise<void>
163
- async succeed<S extends Schema.Codec<unknown, unknown, never, unknown>>(
163
+ async succeed<S extends Schema.Decoder<unknown, never>>(
164
164
  this: Decoding<S>,
165
165
  input: unknown,
166
166
  expected: S["Type"]
167
167
  ): Promise<void>
168
- async succeed<S extends Schema.Codec<unknown, unknown, never, unknown>>(
168
+ async succeed<S extends Schema.Decoder<unknown, never>>(
169
169
  this: Decoding<S>,
170
170
  input: unknown,
171
171
  expected?: S["Type"]
@@ -182,7 +182,7 @@ export class Decoding<S extends Schema.Top> {
182
182
  /**
183
183
  * Asserts that decoding fails with the expected error message.
184
184
  */
185
- async fail<S extends Schema.Codec<unknown, unknown, never, unknown>>(
185
+ async fail<S extends Schema.Decoder<unknown, never>>(
186
186
  this: Decoding<S>,
187
187
  input: unknown,
188
188
  message: string
@@ -232,16 +232,16 @@ class Encoding<S extends Schema.Top> {
232
232
  /**
233
233
  * Asserts that encoding succeeds with the expected value.
234
234
  */
235
- async succeed<S extends Schema.Codec<unknown, unknown, unknown, never>>(
235
+ async succeed<S extends Schema.Encoder<unknown, never>>(
236
236
  this: Encoding<S>,
237
237
  input: unknown
238
238
  ): Promise<void>
239
- async succeed<S extends Schema.Codec<unknown, unknown, unknown, never>>(
239
+ async succeed<S extends Schema.Encoder<unknown, never>>(
240
240
  this: Encoding<S>,
241
241
  input: unknown,
242
242
  expected: S["Encoded"]
243
243
  ): Promise<void>
244
- async succeed<S extends Schema.Codec<unknown, unknown, unknown, never>>(
244
+ async succeed<S extends Schema.Encoder<unknown, never>>(
245
245
  this: Encoding<S>,
246
246
  input: unknown,
247
247
  expected?: S["Encoded"]
@@ -258,7 +258,7 @@ class Encoding<S extends Schema.Top> {
258
258
  /**
259
259
  * Asserts that encoding fails with the expected error message.
260
260
  */
261
- async fail<S extends Schema.Codec<unknown, unknown, unknown, never>>(
261
+ async fail<S extends Schema.Encoder<unknown, never>>(
262
262
  this: Encoding<S>,
263
263
  input: unknown,
264
264
  message: string
@@ -247,9 +247,9 @@ export class NetworkError extends Schema.ErrorClass<NetworkError>(
247
247
  * @since 1.0.0
248
248
  * @category schemas
249
249
  */
250
- export const ProviderMetadata: Schema.Record$<
250
+ export const ProviderMetadata: Schema.$Record<
251
251
  Schema.String,
252
- Schema.NullOr<Schema.Codec<Schema.MutableJson, Schema.MutableJson, never, never>>
252
+ Schema.NullOr<Schema.Codec<Schema.MutableJson>>
253
253
  > = Schema.Record(Schema.String, Schema.NullOr(Schema.MutableJson))
254
254
 
255
255
  /**
@@ -53,6 +53,7 @@ import * as Option from "../../Option.ts"
53
53
  import * as Predicate from "../../Predicate.ts"
54
54
  import * as Ref from "../../Ref.ts"
55
55
  import * as Schema from "../../Schema.ts"
56
+ import * as Semaphore from "../../Semaphore.ts"
56
57
  import * as ServiceMap from "../../ServiceMap.ts"
57
58
  import * as Stream from "../../Stream.ts"
58
59
  import type { NoExcessProperties } from "../../Types.ts"
@@ -276,7 +277,7 @@ export interface Service {
276
277
  */
277
278
  readonly generateObject: <
278
279
  ObjectEncoded extends Record<string, any>,
279
- ObjectSchema extends Schema.Codec<any, ObjectEncoded, any, any>,
280
+ ObjectSchema extends Schema.Encoder<ObjectEncoded, unknown>,
280
281
  Options extends NoExcessProperties<LanguageModel.GenerateObjectOptions<any, ObjectSchema>, Options>,
281
282
  Tools extends Record<string, Tool.Any> = {}
282
283
  >(options: Options & LanguageModel.GenerateObjectOptions<Tools, ObjectSchema>) => Effect.Effect<
@@ -325,7 +326,7 @@ const encodeHistoryJson = Schema.encodeUnknownEffect(Schema.fromJsonString(Promp
325
326
  export const empty: Effect.Effect<Service> = Effect.gen(function*() {
326
327
  const history = yield* Ref.make(Prompt.empty)
327
328
  const services = yield* Effect.services<never>()
328
- const semaphore = yield* Effect.makeSemaphore(1)
329
+ const semaphore = yield* Semaphore.make(1)
329
330
 
330
331
  const provideContext = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
331
332
  Effect.updateServices(effect, (existing) => ServiceMap.merge(services, existing))
@@ -627,7 +628,7 @@ export declare namespace Persistence {
627
628
  * the persistence store, a `ChatNotFoundError` will be returned.
628
629
  */
629
630
  readonly get: (chatId: string, options?: {
630
- readonly timeToLive?: Duration.DurationInput | undefined
631
+ readonly timeToLive?: Duration.Input | undefined
631
632
  }) => Effect.Effect<Persisted, ChatNotFoundError | PersistenceError>
632
633
 
633
634
  /**
@@ -637,7 +638,7 @@ export declare namespace Persistence {
637
638
  * returned.
638
639
  */
639
640
  readonly getOrCreate: (chatId: string, options?: {
640
- readonly timeToLive?: Duration.DurationInput | undefined
641
+ readonly timeToLive?: Duration.Input | undefined
641
642
  }) => Effect.Effect<Persisted, AiError.AiError | PersistenceError>
642
643
  }
643
644
  }
@@ -680,7 +681,7 @@ export const makePersisted = Effect.fnUntraced(function*(options: {
680
681
  const store = yield* persistence.make(options.storeId)
681
682
 
682
683
  const toPersisted = Effect.fnUntraced(
683
- function*(chatId: string, chat: Service, ttl: Duration.DurationInput | undefined) {
684
+ function*(chatId: string, chat: Service, ttl: Duration.Input | undefined) {
684
685
  const idGenerator = yield* Effect.serviceOption(IdGenerator.IdGenerator).pipe(
685
686
  Effect.map(Option.getOrElse(() => IdGenerator.defaultIdGenerator))
686
687
  )
@@ -712,7 +713,7 @@ export const makePersisted = Effect.fnUntraced(function*(options: {
712
713
  yield* Ref.set(chat.history, history)
713
714
  // Export the chat history
714
715
  const exported = yield* Effect.orDie(chat.export)
715
- const timeToLive = Predicate.isNotUndefined(ttl) ? Duration.fromDurationInput(ttl) : undefined
716
+ const timeToLive = Predicate.isNotUndefined(ttl) ? Duration.fromInput(ttl) : undefined
716
717
  // Save the chat to the backing store
717
718
  yield* store.set(chatId, exported as object, timeToLive)
718
719
  }
@@ -748,13 +749,13 @@ export const makePersisted = Effect.fnUntraced(function*(options: {
748
749
  )
749
750
 
750
751
  const createChat = Effect.fnUntraced(
751
- function*(chatId: string, ttl: Duration.DurationInput | undefined) {
752
+ function*(chatId: string, ttl: Duration.Input | undefined) {
752
753
  // Create an empty chat
753
754
  const chat = yield* empty
754
755
  // Export the chat history
755
756
  const history = yield* Effect.orDie(chat.export)
756
757
  // Save the history for the newly created chat
757
- const timeToLive = Predicate.isNotUndefined(ttl) ? Duration.fromDurationInput(ttl) : undefined
758
+ const timeToLive = Predicate.isNotUndefined(ttl) ? Duration.fromInput(ttl) : undefined
758
759
  yield* store.set(chatId, history as object, timeToLive)
759
760
  // Convert the chat to a persisted chat
760
761
  return yield* toPersisted(chatId, chat, ttl)
@@ -762,7 +763,7 @@ export const makePersisted = Effect.fnUntraced(function*(options: {
762
763
  )
763
764
 
764
765
  const getChat = Effect.fnUntraced(
765
- function*(chatId: string, ttl: Duration.DurationInput | undefined) {
766
+ function*(chatId: string, ttl: Duration.Input | undefined) {
766
767
  // Create an empty chat
767
768
  const chat = yield* empty
768
769
  // Attempt to retrieve the previous history from the store
@@ -783,7 +784,7 @@ export const makePersisted = Effect.fnUntraced(function*(options: {
783
784
 
784
785
  const get = Effect.fnUntraced(
785
786
  function*(chatId: string, options?: {
786
- readonly timeToLive?: Duration.DurationInput | undefined
787
+ readonly timeToLive?: Duration.Input | undefined
787
788
  }) {
788
789
  return yield* getChat(chatId, options?.timeToLive)
789
790
  },
@@ -795,7 +796,7 @@ export const makePersisted = Effect.fnUntraced(function*(options: {
795
796
 
796
797
  const getOrCreate = Effect.fnUntraced(
797
798
  function*(chatId: string, options?: {
798
- readonly timeToLive?: Duration.DurationInput | undefined
799
+ readonly timeToLive?: Duration.Input | undefined
799
800
  }) {
800
801
  return yield* getChat(chatId, options?.timeToLive).pipe(
801
802
  Effect.catchTag("ChatNotFoundError", () => createChat(chatId, options?.timeToLive))