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
@@ -28,13 +28,13 @@ export const layer = (options: {
28
28
  readonly headers?: Headers.Input | undefined
29
29
  readonly maxBatchSize?: number | undefined
30
30
  readonly tracerContext?: (<X>(primitive: Tracer.EffectPrimitive<X>, span: Tracer.AnySpan) => X) | undefined
31
- readonly loggerExportInterval?: Duration.DurationInput | undefined
31
+ readonly loggerExportInterval?: Duration.Input | undefined
32
32
  readonly loggerExcludeLogSpans?: boolean | undefined
33
33
  readonly loggerMergeWithExisting?: boolean | undefined
34
- readonly metricsExportInterval?: Duration.DurationInput | undefined
34
+ readonly metricsExportInterval?: Duration.Input | undefined
35
35
  readonly metricsTemporality?: AggregationTemporality | undefined
36
- readonly tracerExportInterval?: Duration.DurationInput | undefined
37
- readonly shutdownTimeout?: Duration.DurationInput | undefined
36
+ readonly tracerExportInterval?: Duration.Input | undefined
37
+ readonly shutdownTimeout?: Duration.Input | undefined
38
38
  }): Layer.Layer<never, never, HttpClient.HttpClient | OtlpSerialization.OtlpSerialization> => {
39
39
  const base = HttpClientRequest.get(options.baseUrl)
40
40
  const url = (path: string) => HttpClientRequest.appendUrl(base, path).url
@@ -83,13 +83,13 @@ export const layerJson: (options: {
83
83
  readonly headers?: Headers.Input | undefined
84
84
  readonly maxBatchSize?: number | undefined
85
85
  readonly tracerContext?: (<X>(primitive: Tracer.EffectPrimitive<X>, span: Tracer.AnySpan) => X) | undefined
86
- readonly loggerExportInterval?: Duration.DurationInput | undefined
86
+ readonly loggerExportInterval?: Duration.Input | undefined
87
87
  readonly loggerExcludeLogSpans?: boolean | undefined
88
88
  readonly loggerMergeWithExisting?: boolean | undefined
89
- readonly metricsExportInterval?: Duration.DurationInput | undefined
89
+ readonly metricsExportInterval?: Duration.Input | undefined
90
90
  readonly metricsTemporality?: AggregationTemporality | undefined
91
- readonly tracerExportInterval?: Duration.DurationInput | undefined
92
- readonly shutdownTimeout?: Duration.DurationInput | undefined
91
+ readonly tracerExportInterval?: Duration.Input | undefined
92
+ readonly shutdownTimeout?: Duration.Input | undefined
93
93
  }) => Layer.Layer<never, never, HttpClient.HttpClient> = flow(layer, Layer.provide(OtlpSerialization.layerJson))
94
94
 
95
95
  /**
@@ -106,11 +106,11 @@ export const layerProtobuf: (options: {
106
106
  readonly headers?: Headers.Input | undefined
107
107
  readonly maxBatchSize?: number | undefined
108
108
  readonly tracerContext?: (<X>(primitive: Tracer.EffectPrimitive<X>, span: Tracer.AnySpan) => X) | undefined
109
- readonly loggerExportInterval?: Duration.DurationInput | undefined
109
+ readonly loggerExportInterval?: Duration.Input | undefined
110
110
  readonly loggerExcludeLogSpans?: boolean | undefined
111
111
  readonly loggerMergeWithExisting?: boolean | undefined
112
- readonly metricsExportInterval?: Duration.DurationInput | undefined
112
+ readonly metricsExportInterval?: Duration.Input | undefined
113
113
  readonly metricsTemporality?: AggregationTemporality | undefined
114
- readonly tracerExportInterval?: Duration.DurationInput | undefined
115
- readonly shutdownTimeout?: Duration.DurationInput | undefined
114
+ readonly tracerExportInterval?: Duration.Input | undefined
115
+ readonly shutdownTimeout?: Duration.Input | undefined
116
116
  }) => Layer.Layer<never, never, HttpClient.HttpClient> = flow(layer, Layer.provide(OtlpSerialization.layerProtobuf))
@@ -40,10 +40,10 @@ export const make: (
40
40
  readonly url: string
41
41
  readonly headers: Headers.Input | undefined
42
42
  readonly label: string
43
- readonly exportInterval: Duration.DurationInput
43
+ readonly exportInterval: Duration.Input
44
44
  readonly maxBatchSize: number | "disabled"
45
45
  readonly body: (data: Array<any>) => HttpBody
46
- readonly shutdownTimeout: Duration.DurationInput
46
+ readonly shutdownTimeout: Duration.Input
47
47
  }
48
48
  ) => Effect.Effect<
49
49
  { readonly push: (data: unknown) => void },
@@ -54,7 +54,7 @@ export const make: (
54
54
  const clock = ServiceMap.get(services, Clock)
55
55
  const scope = ServiceMap.get(services, Scope.Scope)
56
56
  const runFork = Effect.runForkWith(services)
57
- const exportInterval = Duration.max(Duration.fromDurationInputUnsafe(options.exportInterval), Duration.zero)
57
+ const exportInterval = Duration.max(Duration.fromInputUnsafe(options.exportInterval), Duration.zero)
58
58
  let disabledUntil: number | undefined = undefined
59
59
 
60
60
  const client = HttpClient.filterStatusOk(ServiceMap.get(services, HttpClient.HttpClient)).pipe(
@@ -30,9 +30,9 @@ export const make: (
30
30
  readonly attributes?: Record<string, unknown>
31
31
  } | undefined
32
32
  readonly headers?: Headers.Input | undefined
33
- readonly exportInterval?: Duration.DurationInput | undefined
33
+ readonly exportInterval?: Duration.Input | undefined
34
34
  readonly maxBatchSize?: number | undefined
35
- readonly shutdownTimeout?: Duration.DurationInput | undefined
35
+ readonly shutdownTimeout?: Duration.Input | undefined
36
36
  readonly excludeLogSpans?: boolean | undefined
37
37
  }
38
38
  ) => Effect.Effect<
@@ -85,9 +85,9 @@ export const layer = (options: {
85
85
  readonly attributes?: Record<string, unknown>
86
86
  } | undefined
87
87
  readonly headers?: Headers.Input | undefined
88
- readonly exportInterval?: Duration.DurationInput | undefined
88
+ readonly exportInterval?: Duration.Input | undefined
89
89
  readonly maxBatchSize?: number | undefined
90
- readonly shutdownTimeout?: Duration.DurationInput | undefined
90
+ readonly shutdownTimeout?: Duration.Input | undefined
91
91
  readonly excludeLogSpans?: boolean | undefined
92
92
  readonly mergeWithExisting?: boolean | undefined
93
93
  }): Layer.Layer<never, never, HttpClient.HttpClient | OtlpSerialization> =>
@@ -60,8 +60,8 @@ export const make: (options: {
60
60
  readonly attributes?: Record<string, unknown>
61
61
  } | undefined
62
62
  readonly headers?: Headers.Input | undefined
63
- readonly exportInterval?: Duration.DurationInput | undefined
64
- readonly shutdownTimeout?: Duration.DurationInput | undefined
63
+ readonly exportInterval?: Duration.Input | undefined
64
+ readonly shutdownTimeout?: Duration.Input | undefined
65
65
  readonly temporality?: AggregationTemporality | undefined
66
66
  }) => Effect.Effect<
67
67
  void,
@@ -440,8 +440,8 @@ export const layer = (options: {
440
440
  readonly attributes?: Record<string, unknown>
441
441
  } | undefined
442
442
  readonly headers?: Headers.Input | undefined
443
- readonly exportInterval?: Duration.DurationInput | undefined
444
- readonly shutdownTimeout?: Duration.DurationInput | undefined
443
+ readonly exportInterval?: Duration.Input | undefined
444
+ readonly shutdownTimeout?: Duration.Input | undefined
445
445
  readonly temporality?: AggregationTemporality | undefined
446
446
  }): Layer.Layer<never, never, HttpClient.HttpClient | OtlpSerialization> => Layer.effectDiscard(make(options))
447
447
 
@@ -32,10 +32,10 @@ export const make: (
32
32
  readonly attributes?: Record<string, unknown>
33
33
  } | undefined
34
34
  readonly headers?: Headers.Input | undefined
35
- readonly exportInterval?: Duration.DurationInput | undefined
35
+ readonly exportInterval?: Duration.Input | undefined
36
36
  readonly maxBatchSize?: number | undefined
37
37
  readonly context?: (<X>(primitive: Tracer.EffectPrimitive<X>, span: Tracer.AnySpan) => X) | undefined
38
- readonly shutdownTimeout?: Duration.DurationInput | undefined
38
+ readonly shutdownTimeout?: Duration.Input | undefined
39
39
  }
40
40
  ) => Effect.Effect<
41
41
  Tracer.Tracer,
@@ -109,10 +109,10 @@ export const layer: (options: {
109
109
  readonly attributes?: Record<string, unknown>
110
110
  } | undefined
111
111
  readonly headers?: Headers.Input | undefined
112
- readonly exportInterval?: Duration.DurationInput | undefined
112
+ readonly exportInterval?: Duration.Input | undefined
113
113
  readonly maxBatchSize?: number | undefined
114
114
  readonly context?: (<X>(primitive: Tracer.EffectPrimitive<X>, span: Tracer.AnySpan) => X) | undefined
115
- readonly shutdownTimeout?: Duration.DurationInput | undefined
115
+ readonly shutdownTimeout?: Duration.Input | undefined
116
116
  }) => Layer.Layer<never, never, OtlpSerialization | HttpClient.HttpClient> = flow(make, Layer.effect(Tracer.Tracer))
117
117
 
118
118
  // internal
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import * as Data from "../../Data.ts"
5
5
  import * as Effect from "../../Effect.ts"
6
- import * as Base64 from "../../encoding/Base64.ts"
6
+ import * as Encoding from "../../Encoding.ts"
7
7
  import * as FileSystem from "../../FileSystem.ts"
8
8
  import { dual, identity, type LazyArg } from "../../Function.ts"
9
9
  import * as Layer from "../../Layer.ts"
@@ -225,7 +225,7 @@ export const makeStringOnly = (
225
225
  getUint8Array: (key) =>
226
226
  options.get(key).pipe(
227
227
  Effect.map(UndefinedOr.map((value) =>
228
- Result.match(Base64.decode(value), {
228
+ Result.match(Encoding.decodeBase64(value), {
229
229
  onFailure: () => encoder.encode(value),
230
230
  onSuccess: identity
231
231
  })
@@ -234,7 +234,7 @@ export const makeStringOnly = (
234
234
  set: (key, value) =>
235
235
  typeof value === "string"
236
236
  ? options.set(key, value)
237
- : Effect.suspend(() => options.set(key, Base64.encode(value)))
237
+ : Effect.suspend(() => options.set(key, Encoding.encodeBase64(value)))
238
238
  })
239
239
  }
240
240
 
@@ -276,7 +276,7 @@ export const layerMemory: Layer.Layer<KeyValueStore> = Layer.sync(KeyValueStore)
276
276
  get: (key: string) =>
277
277
  Effect.sync(() => {
278
278
  const value = store.get(key)
279
- return value === undefined ? undefined : typeof value === "string" ? value : Base64.encode(value)
279
+ return value === undefined ? undefined : typeof value === "string" ? value : Encoding.encodeBase64(value)
280
280
  }),
281
281
  getUint8Array: (key: string) =>
282
282
  Effect.sync(() => {
@@ -312,7 +312,7 @@ export const layerFileSystem = (
312
312
  fs.readFileString(keyPath(key)),
313
313
  "PlatformError",
314
314
  (cause) =>
315
- cause.reason._tag === "SystemError" && cause.reason.kind === "NotFound" ? Effect.undefined : Effect.fail(
315
+ cause.reason._tag === "NotFound" ? Effect.undefined : Effect.fail(
316
316
  new KeyValueStoreError({
317
317
  method: "get",
318
318
  key,
@@ -326,7 +326,7 @@ export const layerFileSystem = (
326
326
  fs.readFile(keyPath(key)),
327
327
  "PlatformError",
328
328
  (cause) =>
329
- cause.reason._tag === "SystemError" && cause.reason.kind === "NotFound" ? Effect.undefined : Effect.fail(
329
+ cause.reason._tag === "NotFound" ? Effect.undefined : Effect.fail(
330
330
  new KeyValueStoreError({
331
331
  method: "getUint8Array",
332
332
  key,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @since 4.0.0
3
3
  */
4
- import type { DurationInput } from "../../Duration.ts"
4
+ import type * as Duration from "../../Duration.ts"
5
5
  import type * as Effect from "../../Effect.ts"
6
6
  import type * as Exit from "../../Exit.ts"
7
7
  import * as PrimaryKey from "../../PrimaryKey.ts"
@@ -87,7 +87,7 @@ export type Services<A extends Any> =
87
87
  * @since 4.0.0
88
88
  * @category Models
89
89
  */
90
- export type TimeToLiveFn<K extends Any> = (exit: Exit.Exit<Success<K>, Error<K>>, request: K) => DurationInput
90
+ export type TimeToLiveFn<K extends Any> = (exit: Exit.Exit<Success<K>, Error<K>>, request: K) => Duration.Input
91
91
 
92
92
  /**
93
93
  * @since 4.0.0
@@ -17,18 +17,18 @@ const TypeId = "~effect/persistence/PersistedCache" as const
17
17
  * @since 4.0.0
18
18
  * @category Models
19
19
  */
20
- export interface PersistedCache<K extends Persistable.Any> {
20
+ export interface PersistedCache<K extends Persistable.Any, out R = never> {
21
21
  readonly [TypeId]: typeof TypeId
22
22
  readonly inMemory: Cache.Cache<
23
23
  K,
24
24
  Persistable.Success<K>,
25
25
  Persistable.Error<K> | Persistence.PersistenceError | Schema.SchemaError,
26
- Persistable.Services<K>
26
+ Persistable.Services<K> | R
27
27
  >
28
28
  readonly get: (key: K) => Effect.Effect<
29
29
  Persistable.Success<K>,
30
30
  Persistable.Error<K> | Persistence.PersistenceError | Schema.SchemaError,
31
- Persistable.Services<K>
31
+ Persistable.Services<K> | R
32
32
  >
33
33
  readonly invalidate: (key: K) => Effect.Effect<void, Persistence.PersistenceError>
34
34
  }
@@ -37,22 +37,32 @@ export interface PersistedCache<K extends Persistable.Any> {
37
37
  * @since 4.0.0
38
38
  * @category Constructors
39
39
  */
40
- export const make: <K extends Persistable.Any, R>(options: {
40
+ export const make: <
41
+ K extends Persistable.Any,
42
+ R = never,
43
+ ServiceMode extends "lookup" | "construction" = never
44
+ >(options: {
41
45
  readonly storeId: string
42
46
  readonly lookup: (key: K) => Effect.Effect<Persistable.Success<K>, Persistable.Error<K>, R>
43
47
  readonly timeToLive: Persistable.TimeToLiveFn<K>
44
48
  readonly inMemoryCapacity?: number | undefined
45
49
  readonly inMemoryTTL?: Persistable.TimeToLiveFn<K> | undefined
50
+ readonly requireServicesAt?: ServiceMode | undefined
46
51
  }) => Effect.Effect<
47
- PersistedCache<K>,
52
+ PersistedCache<K, "lookup" extends ServiceMode ? R : never>,
48
53
  never,
49
- R | Persistence.Persistence | Scope.Scope
50
- > = Effect.fnUntraced(function*<K extends Persistable.Any, R>(options: {
54
+ ("lookup" extends ServiceMode ? never : R) | Persistence.Persistence | Scope.Scope
55
+ > = Effect.fnUntraced(function*<
56
+ K extends Persistable.Any,
57
+ R = never,
58
+ ServiceMode extends "lookup" | "construction" = never
59
+ >(options: {
51
60
  readonly storeId: string
52
61
  readonly lookup: (key: K) => Effect.Effect<Persistable.Success<K>, Persistable.Error<K>, R>
53
62
  readonly timeToLive: Persistable.TimeToLiveFn<K>
54
63
  readonly inMemoryCapacity?: number | undefined
55
64
  readonly inMemoryTTL?: Persistable.TimeToLiveFn<K> | undefined
65
+ readonly requireServicesAt?: ServiceMode | undefined
56
66
  }) {
57
67
  const store = yield* (yield* Persistence.Persistence).make({
58
68
  storeId: options.storeId,
@@ -69,9 +79,10 @@ export const make: <K extends Persistable.Any, R>(options: {
69
79
  return yield* result
70
80
  }),
71
81
  timeToLive: options.inMemoryTTL ?? constant(Duration.seconds(10)),
72
- capacity: options.inMemoryCapacity ?? 1024
82
+ capacity: options.inMemoryCapacity ?? 1024,
83
+ requireServicesAt: options.requireServicesAt
73
84
  })
74
- return identity<PersistedCache<K>>({
85
+ return identity<PersistedCache<K, "lookup" extends ServiceMode ? R : never>>({
75
86
  [TypeId]: TypeId,
76
87
  inMemory,
77
88
  get: (key) => Cache.get(inMemory, key),
@@ -9,6 +9,7 @@ import * as Effect from "../../Effect.ts"
9
9
  import * as Exit from "../../Exit.ts"
10
10
  import { flow } from "../../Function.ts"
11
11
  import * as Iterable from "../../Iterable.ts"
12
+ import * as Latch from "../../Latch.ts"
12
13
  import * as Layer from "../../Layer.ts"
13
14
  import * as MutableRef from "../../MutableRef.ts"
14
15
  import * as Queue from "../../Queue.ts"
@@ -235,14 +236,14 @@ export const layerStoreMemory: Layer.Layer<
235
236
  }
236
237
  const ids = new Set<string>()
237
238
  const queues = new Map<string, {
238
- latch: Effect.Latch
239
+ latch: Latch.Latch
239
240
  items: Set<Entry>
240
241
  }>()
241
242
  const getOrCreateQueue = (name: string) => {
242
243
  let queue = queues.get(name)
243
244
  if (!queue) {
244
245
  queue = {
245
- latch: Effect.makeLatchUnsafe(false),
246
+ latch: Latch.makeUnsafe(false),
246
247
  items: new Set()
247
248
  }
248
249
  queues.set(name, queue)
@@ -294,26 +295,26 @@ export const layerStoreMemory: Layer.Layer<
294
295
  export const makeStoreRedis = Effect.fnUntraced(function*(
295
296
  options?: {
296
297
  readonly prefix?: string | undefined
297
- readonly pollInterval?: Duration.DurationInput | undefined
298
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
299
- readonly lockExpiration?: Duration.DurationInput | undefined
298
+ readonly pollInterval?: Duration.Input | undefined
299
+ readonly lockRefreshInterval?: Duration.Input | undefined
300
+ readonly lockExpiration?: Duration.Input | undefined
300
301
  }
301
302
  ) {
302
303
  const redis = yield* Redis.Redis
303
304
 
304
305
  const pollInterval = Duration.max(
305
- options?.pollInterval ? Duration.fromDurationInputUnsafe(options.pollInterval) : Duration.seconds(1),
306
+ options?.pollInterval ? Duration.fromInputUnsafe(options.pollInterval) : Duration.seconds(1),
306
307
  Duration.millis(1)
307
308
  )
308
309
  const lockRefreshMillis = Math.max(
309
310
  options?.lockRefreshInterval
310
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.lockRefreshInterval))
311
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.lockRefreshInterval))
311
312
  : 30_000,
312
313
  1
313
314
  )
314
315
  const lockExpirationMillis = Math.max(
315
316
  options?.lockExpiration
316
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.lockExpiration))
317
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.lockExpiration))
317
318
  : 90_000,
318
319
  1
319
320
  )
@@ -345,8 +346,8 @@ export const makeStoreRedis = Effect.fnUntraced(function*(
345
346
  const pendingKey = keyPending(name)
346
347
  const queue = yield* Queue.make<Element>()
347
348
  const takers = MutableRef.make(0)
348
- const pollLatch = Effect.makeLatchUnsafe()
349
- const takenLatch = Effect.makeLatchUnsafe()
349
+ const pollLatch = Latch.makeUnsafe()
350
+ const takenLatch = Latch.makeUnsafe()
350
351
 
351
352
  yield* Effect.addFinalizer(() =>
352
353
  Effect.orDie(
@@ -653,9 +654,9 @@ end
653
654
  export const layerStoreRedis: (
654
655
  options?: {
655
656
  readonly prefix?: string | undefined
656
- readonly pollInterval?: Duration.DurationInput | undefined
657
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
658
- readonly lockExpiration?: Duration.DurationInput | undefined
657
+ readonly pollInterval?: Duration.Input | undefined
658
+ readonly lockRefreshInterval?: Duration.Input | undefined
659
+ readonly lockExpiration?: Duration.Input | undefined
659
660
  } | undefined
660
661
  ) => Layer.Layer<
661
662
  PersistedQueueStore,
@@ -670,9 +671,9 @@ export const layerStoreRedis: (
670
671
  export const makeStoreSql: (
671
672
  options?: {
672
673
  readonly tableName?: string | undefined
673
- readonly pollInterval?: Duration.DurationInput | undefined
674
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
675
- readonly lockExpiration?: Duration.DurationInput | undefined
674
+ readonly pollInterval?: Duration.Input | undefined
675
+ readonly lockRefreshInterval?: Duration.Input | undefined
676
+ readonly lockExpiration?: Duration.Input | undefined
676
677
  } | undefined
677
678
  ) => Effect.Effect<
678
679
  PersistedQueueStore["Service"],
@@ -683,15 +684,15 @@ export const makeStoreSql: (
683
684
  const tableName = options?.tableName ?? "effect_queue"
684
685
  const tableNameSql = sql(tableName)
685
686
  const pollInterval = Duration.max(
686
- options?.pollInterval ? Duration.fromDurationInputUnsafe(options.pollInterval) : Duration.millis(1000),
687
+ options?.pollInterval ? Duration.fromInputUnsafe(options.pollInterval) : Duration.millis(1000),
687
688
  Duration.millis(1)
688
689
  )
689
690
  const lockRefreshInterval = Duration.max(
690
- options?.lockRefreshInterval ? Duration.fromDurationInputUnsafe(options.lockRefreshInterval) : Duration.seconds(30),
691
+ options?.lockRefreshInterval ? Duration.fromInputUnsafe(options.lockRefreshInterval) : Duration.seconds(30),
691
692
  Duration.millis(1)
692
693
  )
693
694
  const lockExpiration = Duration.max(
694
- options?.lockExpiration ? Duration.fromDurationInputUnsafe(options.lockExpiration) : Duration.minutes(2),
695
+ options?.lockExpiration ? Duration.fromInputUnsafe(options.lockExpiration) : Duration.minutes(2),
695
696
  Duration.millis(1)
696
697
  )
697
698
  const lockExpirationSql = sql.literal(Math.ceil(Duration.toSeconds(lockExpiration)).toString())
@@ -930,8 +931,8 @@ export const makeStoreSql: (
930
931
  lookup: Effect.fnUntraced(function*({ maxAttempts, name }: QueueKey) {
931
932
  const queue = yield* Queue.make<Element>()
932
933
  const takers = MutableRef.make(0)
933
- const pollLatch = Effect.makeLatchUnsafe()
934
- const takenLatch = Effect.makeLatchUnsafe()
934
+ const pollLatch = Latch.makeUnsafe()
935
+ const takenLatch = Latch.makeUnsafe()
935
936
 
936
937
  yield* Effect.addFinalizer(() =>
937
938
  Effect.flatMap(Queue.clear(queue), (elements) => {
@@ -1098,9 +1099,9 @@ class QueueKey extends Data.Class<{
1098
1099
  export const layerStoreSql: (
1099
1100
  options?: {
1100
1101
  readonly tableName?: string | undefined
1101
- readonly pollInterval?: Duration.DurationInput | undefined
1102
- readonly lockRefreshInterval?: Duration.DurationInput | undefined
1103
- readonly lockExpiration?: Duration.DurationInput | undefined
1102
+ readonly pollInterval?: Duration.Input | undefined
1103
+ readonly lockRefreshInterval?: Duration.Input | undefined
1104
+ readonly lockExpiration?: Duration.Input | undefined
1104
1105
  } | undefined
1105
1106
  ) => Layer.Layer<
1106
1107
  PersistedQueueStore,
@@ -42,7 +42,7 @@ export class PersistenceError extends Schema.ErrorClass(ErrorTypeId)({
42
42
  export class Persistence extends ServiceMap.Service<Persistence, {
43
43
  readonly make: (options: {
44
44
  readonly storeId: string
45
- readonly timeToLive?: (exit: Exit.Exit<unknown, unknown>, key: Persistable.Any) => Duration.DurationInput
45
+ readonly timeToLive?: (exit: Exit.Exit<unknown, unknown>, key: Persistable.Any) => Duration.Input
46
46
  }) => Effect.Effect<PersistenceStore, never, Scope.Scope>
47
47
  }>()("effect/persistence/Persistence") {}
48
48
 
@@ -169,7 +169,7 @@ export const layer = Layer.effect(Persistence)(Effect.gen(function*() {
169
169
  return out
170
170
  }),
171
171
  set(key, value) {
172
- const ttl = Duration.fromDurationInputUnsafe(timeToLive(value, key))
172
+ const ttl = Duration.fromInputUnsafe(timeToLive(value, key))
173
173
  if (Duration.isZero(ttl) || Duration.isNegative(ttl)) return Effect.void
174
174
  return Persistable.serializeExit(key, value).pipe(
175
175
  Effect.flatMap((encoded) =>
@@ -180,7 +180,7 @@ export const layer = Layer.effect(Persistence)(Effect.gen(function*() {
180
180
  setMany: Effect.fnUntraced(function*(entries) {
181
181
  const encodedEntries = Arr.empty<readonly [string, object, Duration.Duration | undefined]>()
182
182
  for (const [key, value] of entries) {
183
- const ttl = Duration.fromDurationInputUnsafe(timeToLive(value, key))
183
+ const ttl = Duration.fromInputUnsafe(timeToLive(value, key))
184
184
  if (Duration.isZero(ttl) || Duration.isNegative(ttl)) continue
185
185
  const encoded = Persistable.serializeExit(key, value)
186
186
  const exit = Exit.isExit(encoded)
@@ -32,7 +32,7 @@ export interface RateLimiter {
32
32
  readonly consume: (options: {
33
33
  readonly algorithm?: "fixed-window" | "token-bucket" | undefined
34
34
  readonly onExceeded?: "delay" | "fail" | undefined
35
- readonly window: Duration.DurationInput
35
+ readonly window: Duration.Input
36
36
  readonly limit: number
37
37
  readonly key: string
38
38
  readonly tokens?: number | undefined
@@ -62,7 +62,7 @@ export const make: Effect.Effect<
62
62
  const tokens = options.tokens ?? 1
63
63
  const onExceeded = options.onExceeded ?? "fail"
64
64
  const algorithm = options.algorithm ?? "fixed-window"
65
- const window = Duration.max(Duration.fromDurationInputUnsafe(options.window), Duration.millis(1))
65
+ const window = Duration.max(Duration.fromInputUnsafe(options.window), Duration.millis(1))
66
66
  const windowMillis = Duration.toMillis(window)
67
67
  const refillRate = Duration.divideUnsafe(window, options.limit)
68
68
  const refillRateMillis = Duration.toMillis(refillRate)
@@ -222,7 +222,7 @@ export const makeWithRateLimiter: Effect.Effect<
222
222
  ((options: {
223
223
  readonly algorithm?: "fixed-window" | "token-bucket" | undefined
224
224
  readonly onExceeded?: "delay" | "fail" | undefined
225
- readonly window: Duration.DurationInput
225
+ readonly window: Duration.Input
226
226
  readonly limit: number
227
227
  readonly key: string
228
228
  readonly tokens?: number | undefined
@@ -266,7 +266,7 @@ export const makeWithRateLimiter: Effect.Effect<
266
266
  export const makeSleep: Effect.Effect<
267
267
  ((options: {
268
268
  readonly algorithm?: "fixed-window" | "token-bucket" | undefined
269
- readonly window: Duration.DurationInput
269
+ readonly window: Duration.Input
270
270
  readonly limit: number
271
271
  readonly key: string
272
272
  readonly tokens?: number | undefined
@@ -283,7 +283,7 @@ export interface KillOptions {
283
283
  * Defaults to `undefined`, which means that no timeout will be enforced by
284
284
  * default.
285
285
  */
286
- readonly forceKillAfter?: Duration.DurationInput | undefined
286
+ readonly forceKillAfter?: Duration.Input | undefined
287
287
  }
288
288
 
289
289
  /**
@@ -414,7 +414,7 @@ export interface CommandOptions extends KillOptions {
414
414
  * the value of `globalThis.process.env`, prioritizing the values in `env`
415
415
  * when conflicts exist.
416
416
  */
417
- readonly env?: Record<string, string> | undefined
417
+ readonly env?: Record<string, string | undefined> | undefined
418
418
  /**
419
419
  * If set to `true`, the child process uses both the values in `env` as well
420
420
  * as the values in `globalThis.process.env`, prioritizing the values in `env`
@@ -76,10 +76,16 @@ export interface ChildProcessHandle {
76
76
  readonly stdin: Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>
77
77
  /**
78
78
  * The standard output stream for the child process.
79
+ *
80
+ * Note: Using alongside `all` may cause interleaving of output and unexpected
81
+ * results.
79
82
  */
80
83
  readonly stdout: Stream.Stream<Uint8Array, PlatformError.PlatformError>
81
84
  /**
82
85
  * The standard error stream for the child process.
86
+ *
87
+ * Note: Using alongside `all` may cause interleaving of output and unexpected
88
+ * results.
83
89
  */
84
90
  readonly stderr: Stream.Stream<Uint8Array, PlatformError.PlatformError>
85
91
  /**
@@ -169,25 +169,25 @@ export const setIdleTTL: {
169
169
  * @since 4.0.0
170
170
  * @category combinators
171
171
  */
172
- (duration: Duration.DurationInput): <A extends Atom<any>>(self: A) => A
172
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => A
173
173
  /**
174
174
  * @since 4.0.0
175
175
  * @category combinators
176
176
  */
177
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput): A
177
+ <A extends Atom<any>>(self: A, duration: Duration.Input): A
178
178
  } = dual<
179
179
  /**
180
180
  * @since 4.0.0
181
181
  * @category combinators
182
182
  */
183
- (duration: Duration.DurationInput) => <A extends Atom<any>>(self: A) => A,
183
+ (duration: Duration.Input) => <A extends Atom<any>>(self: A) => A,
184
184
  /**
185
185
  * @since 4.0.0
186
186
  * @category combinators
187
187
  */
188
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput) => A
188
+ <A extends Atom<any>>(self: A, duration: Duration.Input) => A
189
189
  >(2, (self, durationInput) => {
190
- const duration = Duration.fromDurationInputUnsafe(durationInput)
190
+ const duration = Duration.fromInputUnsafe(durationInput)
191
191
  const isFinite = Duration.isFinite(duration)
192
192
  return Object.assign(Object.create(Object.getPrototypeOf(self)), {
193
193
  ...self,
@@ -1684,16 +1684,16 @@ export const debounce: {
1684
1684
  * @since 4.0.0
1685
1685
  * @category combinators
1686
1686
  */
1687
- (duration: Duration.DurationInput): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1687
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1688
1688
  /**
1689
1689
  * @since 4.0.0
1690
1690
  * @category combinators
1691
1691
  */
1692
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput): WithoutSerializable<A>
1692
+ <A extends Atom<any>>(self: A, duration: Duration.Input): WithoutSerializable<A>
1693
1693
  } = dual(
1694
1694
  2,
1695
- <A>(self: Atom<A>, duration: Duration.DurationInput): Atom<A> => {
1696
- const millis = Duration.toMillis(Duration.fromDurationInputUnsafe(duration))
1695
+ <A>(self: Atom<A>, duration: Duration.Input): Atom<A> => {
1696
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
1697
1697
  return transform(self, function(get) {
1698
1698
  let timeout: number | undefined
1699
1699
  let value = get.once(self)
@@ -1729,7 +1729,7 @@ export const withRefresh: {
1729
1729
  * @since 4.0.0
1730
1730
  * @category combinators
1731
1731
  */
1732
- (duration: Duration.DurationInput): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1732
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1733
1733
  /**
1734
1734
  * Ensures that the value of the atom is refreshed at most once per specified
1735
1735
  * duration.
@@ -1737,11 +1737,11 @@ export const withRefresh: {
1737
1737
  * @since 4.0.0
1738
1738
  * @category combinators
1739
1739
  */
1740
- <A extends Atom<any>>(self: A, duration: Duration.DurationInput): WithoutSerializable<A>
1740
+ <A extends Atom<any>>(self: A, duration: Duration.Input): WithoutSerializable<A>
1741
1741
  } = dual(
1742
1742
  2,
1743
- <A>(self: Atom<A>, duration: Duration.DurationInput): Atom<A> => {
1744
- const millis = Duration.toMillis(Duration.fromDurationInputUnsafe(duration))
1743
+ <A>(self: Atom<A>, duration: Duration.Input): Atom<A> => {
1744
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
1745
1745
  return transform(self, function(get) {
1746
1746
  const handle = setTimeout(() => get.refresh(self), millis) as any
1747
1747
  get.addFinalizer(() => clearTimeout(handle))
@@ -2291,16 +2291,18 @@ export const serializable: {
2291
2291
  } = dual(2, <R extends Atom<any>, A, I>(self: R, options: {
2292
2292
  readonly key: string
2293
2293
  readonly schema: Schema.Codec<A, I>
2294
- }): R & Serializable<any> =>
2295
- Object.assign(Object.create(Object.getPrototypeOf(self)), {
2294
+ }): R & Serializable<any> => {
2295
+ const codecJson = Schema.toCodecJson(options.schema)
2296
+ return Object.assign(Object.create(Object.getPrototypeOf(self)), {
2296
2297
  ...self,
2297
2298
  label: self.label ?? [options.key, new Error().stack?.split("\n")[5] ?? ""],
2298
2299
  [SerializableTypeId]: {
2299
2300
  key: options.key,
2300
- encode: Schema.encodeSync(options.schema),
2301
- decode: Schema.decodeSync(options.schema)
2301
+ encode: Schema.encodeSync(codecJson),
2302
+ decode: Schema.decodeSync(codecJson)
2302
2303
  }
2303
- }))
2304
+ })
2305
+ })
2304
2306
 
2305
2307
  /**
2306
2308
  * @since 4.0.0