effect 4.0.0-beta.0 → 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 (571) 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 +175 -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 +37 -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/cli/Prompt.js +2 -2
  213. package/dist/unstable/cli/Prompt.js.map +1 -1
  214. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  215. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  216. package/dist/unstable/cluster/ClusterCron.js +1 -1
  217. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  218. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  219. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  220. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  221. package/dist/unstable/cluster/Entity.d.ts +5 -4
  222. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  223. package/dist/unstable/cluster/Entity.js.map +1 -1
  224. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  225. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  226. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  227. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  228. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  229. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  230. package/dist/unstable/cluster/Message.d.ts +10 -10
  231. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  232. package/dist/unstable/cluster/MessageStorage.js +2 -1
  233. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  234. package/dist/unstable/cluster/Reply.d.ts +6 -6
  235. package/dist/unstable/cluster/Runner.d.ts +1 -1
  236. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  237. package/dist/unstable/cluster/Runners.js +4 -3
  238. package/dist/unstable/cluster/Runners.js.map +1 -1
  239. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  240. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  241. package/dist/unstable/cluster/Sharding.js +8 -6
  242. package/dist/unstable/cluster/Sharding.js.map +1 -1
  243. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  244. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  245. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  246. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  247. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  248. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  249. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  250. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  251. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  252. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  253. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  254. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  255. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  256. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  257. package/dist/unstable/encoding/Sse.d.ts +4 -4
  258. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  259. package/dist/unstable/encoding/Sse.js.map +1 -1
  260. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  261. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  262. package/dist/unstable/eventlog/EventLog.js +2 -1
  263. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  264. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  265. package/dist/unstable/http/Cookies.d.ts +3 -3
  266. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  267. package/dist/unstable/http/Cookies.js +2 -2
  268. package/dist/unstable/http/Cookies.js.map +1 -1
  269. package/dist/unstable/http/HttpBody.d.ts +17 -2
  270. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  271. package/dist/unstable/http/HttpBody.js +28 -1
  272. package/dist/unstable/http/HttpBody.js.map +1 -1
  273. package/dist/unstable/http/HttpClient.d.ts +11 -11
  274. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  275. package/dist/unstable/http/HttpClient.js +4 -4
  276. package/dist/unstable/http/HttpClient.js.map +1 -1
  277. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  278. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  279. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  280. package/dist/unstable/http/HttpClientRequest.js +15 -3
  281. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  282. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  283. package/dist/unstable/http/HttpEffect.js +18 -26
  284. package/dist/unstable/http/HttpEffect.js.map +1 -1
  285. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  286. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  287. package/dist/unstable/http/HttpMethod.js +3 -3
  288. package/dist/unstable/http/HttpMethod.js.map +1 -1
  289. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  290. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  291. package/dist/unstable/http/HttpMiddleware.js +4 -9
  292. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  293. package/dist/unstable/http/HttpServerError.d.ts +6 -6
  294. package/dist/unstable/http/HttpServerResponse.js +1 -1
  295. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  296. package/dist/unstable/http/Multipart.d.ts +3 -3
  297. package/dist/unstable/http/UrlParams.d.ts +14 -6
  298. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  299. package/dist/unstable/http/UrlParams.js +1 -1
  300. package/dist/unstable/http/UrlParams.js.map +1 -1
  301. package/dist/unstable/httpapi/HttpApiBuilder.js +5 -5
  302. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  303. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  304. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  305. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  306. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  307. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  308. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  309. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  310. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  311. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  312. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  313. package/dist/unstable/httpapi/OpenApi.js +18 -16
  314. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  315. package/dist/unstable/observability/Otlp.d.ts +12 -12
  316. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  317. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  318. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  319. package/dist/unstable/observability/OtlpExporter.js +1 -1
  320. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  321. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  322. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  323. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  324. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  325. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  326. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  327. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  328. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  329. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  330. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  331. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  332. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  333. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  334. package/dist/unstable/persistence/PersistedCache.js +2 -1
  335. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  336. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  337. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  338. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  339. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  340. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  341. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  342. package/dist/unstable/persistence/Persistence.js +2 -2
  343. package/dist/unstable/persistence/Persistence.js.map +1 -1
  344. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  345. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  346. package/dist/unstable/persistence/RateLimiter.js +1 -1
  347. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  348. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  349. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  350. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  351. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  352. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  353. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  354. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  355. package/dist/unstable/reactivity/Atom.js +15 -12
  356. package/dist/unstable/reactivity/Atom.js.map +1 -1
  357. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  358. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  359. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  360. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  361. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  362. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  363. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  364. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  365. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  366. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  367. package/dist/unstable/reactivity/Hydration.js +76 -0
  368. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  369. package/dist/unstable/reactivity/index.d.ts +4 -0
  370. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  371. package/dist/unstable/reactivity/index.js +4 -0
  372. package/dist/unstable/reactivity/index.js.map +1 -1
  373. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  374. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  375. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  376. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  377. package/dist/unstable/rpc/RpcClient.js +6 -13
  378. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  379. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  380. package/dist/unstable/rpc/RpcServer.js +5 -3
  381. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  382. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  383. package/dist/unstable/rpc/Utils.js +2 -1
  384. package/dist/unstable/rpc/Utils.js.map +1 -1
  385. package/dist/unstable/schema/Model.d.ts +4 -4
  386. package/dist/unstable/schema/Model.d.ts.map +1 -1
  387. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  388. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  389. package/dist/unstable/schema/VariantSchema.js +13 -2
  390. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  391. package/dist/unstable/socket/Socket.d.ts +4 -4
  392. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  393. package/dist/unstable/socket/Socket.js +3 -2
  394. package/dist/unstable/socket/Socket.js.map +1 -1
  395. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  396. package/dist/unstable/sql/Migrator.d.ts +1 -1
  397. package/dist/unstable/sql/SqlError.d.ts +2 -2
  398. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  399. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  400. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  401. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  402. package/dist/unstable/sql/SqlSchema.js +24 -3
  403. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  404. package/dist/unstable/sql/Statement.js +0 -1
  405. package/dist/unstable/sql/Statement.js.map +1 -1
  406. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  407. package/dist/unstable/workers/Worker.js +2 -1
  408. package/dist/unstable/workers/Worker.js.map +1 -1
  409. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  410. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  411. package/dist/unstable/workflow/DurableClock.js +3 -3
  412. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  413. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  414. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  415. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  416. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
  417. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  418. package/dist/unstable/workflow/WorkflowEngine.js +2 -1
  419. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  420. package/package.json +2 -2
  421. package/src/Cache.ts +3 -3
  422. package/src/Cause.ts +1 -1
  423. package/src/Channel.ts +6 -4
  424. package/src/Combiner.ts +280 -13
  425. package/src/Config.ts +3 -3
  426. package/src/Data.ts +538 -374
  427. package/src/DateTime.ts +24 -164
  428. package/src/Duration.ts +15 -15
  429. package/src/Effect.ts +202 -261
  430. package/src/Encoding.ts +879 -0
  431. package/src/Equal.ts +278 -111
  432. package/src/FileSystem.ts +7 -8
  433. package/src/Filter.ts +48 -1
  434. package/src/Formatter.ts +253 -51
  435. package/src/Graph.ts +8 -5
  436. package/src/JsonSchema.ts +383 -10
  437. package/src/Latch.ts +112 -0
  438. package/src/LayerMap.ts +5 -5
  439. package/src/LogLevel.ts +31 -0
  440. package/src/Logger.ts +5 -5
  441. package/src/Metric.ts +4 -4
  442. package/src/Optic.ts +948 -19
  443. package/src/Pipeable.ts +32 -1
  444. package/src/PlatformError.ts +5 -5
  445. package/src/Pool.ts +13 -11
  446. package/src/PubSub.ts +10 -9
  447. package/src/Random.ts +33 -14
  448. package/src/RcMap.ts +5 -5
  449. package/src/RcRef.ts +1 -1
  450. package/src/Reducer.ts +166 -7
  451. package/src/Request.ts +3 -2
  452. package/src/RequestResolver.ts +9 -29
  453. package/src/Result.ts +13 -0
  454. package/src/Schedule.ts +279 -140
  455. package/src/Schema.ts +575 -113
  456. package/src/SchemaGetter.ts +12 -14
  457. package/src/SchemaRepresentation.ts +43 -24
  458. package/src/SchemaTransformation.ts +104 -0
  459. package/src/ScopedCache.ts +3 -3
  460. package/src/Semaphore.ts +356 -0
  461. package/src/Stream.ts +43 -42
  462. package/src/Struct.ts +26 -0
  463. package/src/SubscriptionRef.ts +3 -2
  464. package/src/SynchronizedRef.ts +3 -2
  465. package/src/Types.ts +12 -2
  466. package/src/index.ts +502 -20
  467. package/src/internal/core.ts +12 -5
  468. package/src/internal/dateTime.ts +9 -30
  469. package/src/internal/effect.ts +70 -37
  470. package/src/internal/random.ts +20 -0
  471. package/src/internal/rcRef.ts +4 -3
  472. package/src/testing/TestClock.ts +13 -11
  473. package/src/testing/TestSchema.ts +8 -8
  474. package/src/unstable/ai/AiError.ts +2 -2
  475. package/src/unstable/ai/Chat.ts +12 -11
  476. package/src/unstable/ai/LanguageModel.ts +3 -3
  477. package/src/unstable/ai/McpServer.ts +2 -2
  478. package/src/unstable/ai/Prompt.ts +37 -37
  479. package/src/unstable/ai/Response.ts +25 -25
  480. package/src/unstable/cli/Prompt.ts +2 -2
  481. package/src/unstable/cluster/ClusterCron.ts +2 -2
  482. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  483. package/src/unstable/cluster/Entity.ts +7 -6
  484. package/src/unstable/cluster/EntityResource.ts +4 -4
  485. package/src/unstable/cluster/Envelope.ts +1 -1
  486. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  487. package/src/unstable/cluster/MessageStorage.ts +3 -5
  488. package/src/unstable/cluster/Runners.ts +6 -5
  489. package/src/unstable/cluster/Sharding.ts +11 -9
  490. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  491. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  492. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  493. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  494. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  495. package/src/unstable/encoding/Sse.ts +2 -4
  496. package/src/unstable/eventlog/EventLog.ts +2 -1
  497. package/src/unstable/http/Cookies.ts +3 -3
  498. package/src/unstable/http/HttpBody.ts +42 -1
  499. package/src/unstable/http/HttpClient.ts +19 -19
  500. package/src/unstable/http/HttpClientRequest.ts +38 -13
  501. package/src/unstable/http/HttpEffect.ts +17 -25
  502. package/src/unstable/http/HttpMethod.ts +16 -4
  503. package/src/unstable/http/HttpMiddleware.ts +5 -10
  504. package/src/unstable/http/HttpServerResponse.ts +1 -1
  505. package/src/unstable/http/Multipart.ts +2 -2
  506. package/src/unstable/http/UrlParams.ts +20 -5
  507. package/src/unstable/httpapi/HttpApiBuilder.ts +5 -5
  508. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  509. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  510. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  511. package/src/unstable/httpapi/OpenApi.ts +18 -16
  512. package/src/unstable/observability/Otlp.ts +12 -12
  513. package/src/unstable/observability/OtlpExporter.ts +3 -3
  514. package/src/unstable/observability/OtlpLogger.ts +4 -4
  515. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  516. package/src/unstable/observability/OtlpTracer.ts +4 -4
  517. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  518. package/src/unstable/persistence/Persistable.ts +2 -2
  519. package/src/unstable/persistence/PersistedCache.ts +20 -9
  520. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  521. package/src/unstable/persistence/Persistence.ts +3 -3
  522. package/src/unstable/persistence/RateLimiter.ts +4 -4
  523. package/src/unstable/process/ChildProcess.ts +2 -2
  524. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  525. package/src/unstable/reactivity/Atom.ts +20 -18
  526. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  527. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  528. package/src/unstable/reactivity/Hydration.ts +112 -0
  529. package/src/unstable/reactivity/index.ts +5 -0
  530. package/src/unstable/rpc/Rpc.ts +3 -3
  531. package/src/unstable/rpc/RpcClient.ts +12 -54
  532. package/src/unstable/rpc/RpcServer.ts +6 -4
  533. package/src/unstable/rpc/Utils.ts +2 -1
  534. package/src/unstable/schema/VariantSchema.ts +36 -7
  535. package/src/unstable/socket/Socket.ts +7 -6
  536. package/src/unstable/sql/SqlModel.ts +2 -2
  537. package/src/unstable/sql/SqlSchema.ts +62 -13
  538. package/src/unstable/sql/Statement.ts +0 -1
  539. package/src/unstable/workers/Worker.ts +2 -1
  540. package/src/unstable/workflow/DurableClock.ts +8 -8
  541. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  542. package/src/unstable/workflow/WorkflowEngine.ts +3 -2
  543. package/dist/PartitionedSemaphore.d.ts +0 -52
  544. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  545. package/dist/PartitionedSemaphore.js.map +0 -1
  546. package/dist/encoding/Base64.d.ts +0 -67
  547. package/dist/encoding/Base64.d.ts.map +0 -1
  548. package/dist/encoding/Base64.js +0 -146
  549. package/dist/encoding/Base64.js.map +0 -1
  550. package/dist/encoding/Base64Url.d.ts +0 -60
  551. package/dist/encoding/Base64Url.d.ts.map +0 -1
  552. package/dist/encoding/Base64Url.js +0 -89
  553. package/dist/encoding/Base64Url.js.map +0 -1
  554. package/dist/encoding/EncodingError.d.ts +0 -31
  555. package/dist/encoding/EncodingError.d.ts.map +0 -1
  556. package/dist/encoding/EncodingError.js +0 -22
  557. package/dist/encoding/EncodingError.js.map +0 -1
  558. package/dist/encoding/Hex.d.ts +0 -61
  559. package/dist/encoding/Hex.d.ts.map +0 -1
  560. package/dist/encoding/Hex.js +0 -115
  561. package/dist/encoding/Hex.js.map +0 -1
  562. package/dist/encoding/index.d.ts +0 -26
  563. package/dist/encoding/index.d.ts.map +0 -1
  564. package/dist/encoding/index.js +0 -27
  565. package/dist/encoding/index.js.map +0 -1
  566. package/src/PartitionedSemaphore.ts +0 -182
  567. package/src/encoding/Base64.ts +0 -366
  568. package/src/encoding/Base64Url.ts +0 -104
  569. package/src/encoding/EncodingError.ts +0 -35
  570. package/src/encoding/Hex.ts +0 -390
  571. package/src/encoding/index.ts +0 -31
@@ -4,7 +4,6 @@
4
4
  import * as Arr from "../../Array.ts"
5
5
  import type { Brand } from "../../Brand.ts"
6
6
  import type { Effect } from "../../Effect.ts"
7
- import { format } from "../../Formatter.ts"
8
7
  import { type Pipeable, pipeArguments } from "../../Pipeable.ts"
9
8
  import * as Predicate from "../../Predicate.ts"
10
9
  import * as Schema from "../../Schema.ts"
@@ -71,9 +70,9 @@ export interface HttpApiEndpoint<
71
70
  readonly name: Name
72
71
  readonly path: Path
73
72
  readonly method: Method
74
- readonly params: Schema.Struct.Fields | undefined
75
- readonly query: Schema.Struct.Fields | undefined
76
- readonly headers: Schema.Struct.Fields | undefined
73
+ readonly params: Schema.Top | undefined
74
+ readonly query: Schema.Top | undefined
75
+ readonly headers: Schema.Top | undefined
77
76
  readonly payload: PayloadMap
78
77
  readonly success: ReadonlySet<Schema.Top>
79
78
  readonly error: ReadonlySet<Schema.Top>
@@ -156,21 +155,6 @@ export interface HttpApiEndpoint<
156
155
  >
157
156
  }
158
157
 
159
- /** @internal */
160
- export function getParamsSchema(endpoint: AnyWithProps): Schema.Top | undefined {
161
- return endpoint.params ? Schema.Struct(endpoint.params) : undefined
162
- }
163
-
164
- /** @internal */
165
- export function getQuerySchema(endpoint: AnyWithProps): Schema.Top | undefined {
166
- return endpoint.query ? Schema.Struct(endpoint.query) : undefined
167
- }
168
-
169
- /** @internal */
170
- export function getHeadersSchema(endpoint: AnyWithProps): Schema.Top | undefined {
171
- return endpoint.headers ? Schema.Struct(endpoint.headers) : undefined
172
- }
173
-
174
158
  /** @internal */
175
159
  export function getPayloadSchemas(endpoint: AnyWithProps): Array<Schema.Top> {
176
160
  const result: Array<Schema.Top> = []
@@ -830,9 +814,9 @@ function makeProto<
830
814
  readonly name: Name
831
815
  readonly path: Path
832
816
  readonly method: Method
833
- readonly params: Schema.Struct.Fields | undefined
834
- readonly query: Schema.Struct.Fields | undefined
835
- readonly headers: Schema.Struct.Fields | undefined
817
+ readonly params: Schema.Top | undefined
818
+ readonly query: Schema.Top | undefined
819
+ readonly headers: Schema.Top | undefined
836
820
  readonly payload: PayloadMap
837
821
  readonly success: ReadonlySet<Schema.Top>
838
822
  readonly error: ReadonlySet<Schema.Top>
@@ -855,32 +839,28 @@ function makeProto<
855
839
  }
856
840
 
857
841
  /**
858
- * Params come from the router as `string` (optional params as `undefined`) and
859
- * must be encodable back into the URL path.
860
- *
861
- * We accept "struct fields" (`Record<string, Codec<...>>`) so we can both enforce
862
- * `Encoded` = `string | undefined` per field and reliably generate OpenAPI
863
- * `in: path` parameters by iterating object properties.
864
- *
865
842
  * @since 4.0.0
866
843
  * @category constraints
867
844
  */
868
- export type ParamsConstraint = Record<string, Schema.Encoder<string | undefined, unknown>>
845
+ export type ParamsConstraint =
846
+ | Record<string, Schema.Encoder<string | undefined, unknown>>
847
+ | Schema.Encoder<Record<string, string | undefined>, unknown>
869
848
 
870
849
  /**
871
- * URL search params can be repeated, so fields may encode to `string` or
872
- * `ReadonlyArray<string>` (or be missing).
873
- *
874
- * Kept as "struct fields" so OpenAPI can safely expand properties into
875
- * `in: query` parameters.
876
- *
877
850
  * @since 4.0.0
878
851
  * @category constraints
879
852
  */
880
- export type QuerySchemaConstraint = Record<
881
- string,
882
- Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>
883
- >
853
+ export type HeadersConstraint =
854
+ | Record<string, Schema.Encoder<string | undefined, unknown>>
855
+ | Schema.Encoder<Record<string, string | undefined>, unknown>
856
+
857
+ /**
858
+ * @since 4.0.0
859
+ * @category constraints
860
+ */
861
+ export type QueryConstraint =
862
+ | Record<string, Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>>
863
+ | Schema.Encoder<Record<string, string | ReadonlyArray<string> | undefined>, unknown>
884
864
 
885
865
  /**
886
866
  * Payload schema depends on the HTTP method:
@@ -893,34 +873,23 @@ export type QuerySchemaConstraint = Record<
893
873
  * @since 4.0.0
894
874
  * @category constraints
895
875
  */
896
- export type PayloadSchemaConstraint<Method extends HttpMethod> = Method extends HttpMethod.NoBody ? Record<
876
+ export type PayloadConstraint<Method extends HttpMethod> = Method extends HttpMethod.NoBody ? Record<
897
877
  string,
898
878
  Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>
899
879
  > :
900
- SuccessSchemaConstraint
901
-
902
- /**
903
- * HTTP headers are string-valued (or missing).
904
- *
905
- * Kept as "struct fields" so OpenAPI can safely expand properties into
906
- * `in: header` parameters.
907
- *
908
- * @since 4.0.0
909
- * @category constraints
910
- */
911
- export type HeadersSchemaConstraint = Record<string, Schema.Encoder<string | undefined, unknown>>
880
+ SuccessConstraint
912
881
 
913
882
  /**
914
883
  * @since 4.0.0
915
884
  * @category constraints
916
885
  */
917
- export type SuccessSchemaConstraint = Schema.Top | ReadonlyArray<Schema.Top>
886
+ export type SuccessConstraint = Schema.Top | ReadonlyArray<Schema.Top>
918
887
 
919
888
  /**
920
889
  * @since 4.0.0
921
890
  * @category constraints
922
891
  */
923
- export type ErrorSchemaConstraint = Schema.Top | ReadonlyArray<Schema.Top>
892
+ export type ErrorConstraint = Schema.Top | ReadonlyArray<Schema.Top>
924
893
 
925
894
  /**
926
895
  * @since 4.0.0
@@ -931,11 +900,11 @@ export const make = <Method extends HttpMethod>(method: Method) =>
931
900
  const Name extends string,
932
901
  const Path extends HttpRouter.PathInput,
933
902
  Params extends ParamsConstraint = never,
934
- Query extends QuerySchemaConstraint = never,
935
- Payload extends PayloadSchemaConstraint<Method> = never,
936
- Headers extends HeadersSchemaConstraint = never,
937
- const Success extends SuccessSchemaConstraint = HttpApiSchema.NoContent,
938
- const Error extends ErrorSchemaConstraint = never
903
+ Query extends QueryConstraint = never,
904
+ Payload extends PayloadConstraint<Method> = never,
905
+ Headers extends HeadersConstraint = never,
906
+ const Success extends SuccessConstraint = HttpApiSchema.NoContent,
907
+ const Error extends ErrorConstraint = never
939
908
  >(
940
909
  name: Name,
941
910
  path: Path,
@@ -964,8 +933,8 @@ export const make = <Method extends HttpMethod>(method: Method) =>
964
933
  name,
965
934
  path,
966
935
  method,
967
- params: options?.params,
968
- query: options?.query,
936
+ params: getParams(options?.params),
937
+ query: getQuery(options?.query),
969
938
  headers: getHeaders(options?.headers),
970
939
  payload: getPayload(options?.payload),
971
940
  success: getSuccess(options?.success),
@@ -975,17 +944,23 @@ export const make = <Method extends HttpMethod>(method: Method) =>
975
944
  })
976
945
  }
977
946
 
947
+ function getParams(params: ParamsConstraint | undefined): Schema.Top | undefined {
948
+ if (params === undefined) return undefined
949
+ if (Schema.isSchema(params)) return params
950
+ return Schema.Struct(params)
951
+ }
952
+
953
+ function getQuery(query: QueryConstraint | undefined): Schema.Top | undefined {
954
+ if (query === undefined) return undefined
955
+ if (Schema.isSchema(query)) return query
956
+ return Schema.Struct(query)
957
+ }
958
+
978
959
  // all keys should be lowercase
979
- function getHeaders(headers: Schema.Struct.Fields | undefined): Schema.Struct.Fields | undefined {
980
- if (headers !== undefined) {
981
- for (const key of Object.keys(headers)) {
982
- const lowerKey = key.toLowerCase()
983
- if (key !== lowerKey) {
984
- throw new Error(`Header keys must be lowercase, got ${format(key)} (use ${format(lowerKey)})`)
985
- }
986
- }
987
- return headers
988
- }
960
+ function getHeaders(headers: HeadersConstraint | undefined): Schema.Top | undefined {
961
+ if (headers === undefined) return undefined
962
+ if (Schema.isSchema(headers)) return headers
963
+ return Schema.Struct(headers)
989
964
  }
990
965
 
991
966
  function getPayload(
@@ -98,6 +98,12 @@ export type ScalarConfig = {
98
98
  * Default: `false`
99
99
  */
100
100
  defaultOpenAllTags?: boolean
101
+ /**
102
+ * Whether to display the operation ID in the operation reference.
103
+ *
104
+ * Default: `false`
105
+ */
106
+ showOperationId?: boolean
101
107
  }
102
108
 
103
109
  type ScalarSource =
@@ -362,20 +362,23 @@ export function fromApi<Id extends string, Groups extends HttpApiGroup.Any>(
362
362
  }
363
363
  }
364
364
 
365
- function processParameters(fields: Schema.Struct.Fields | undefined, i: OpenAPISpecParameter["in"]) {
366
- if (fields) {
367
- for (const [name, field] of Object.entries(fields)) {
368
- op.parameters.push({
369
- name: String(name),
370
- in: i,
371
- schema: {},
372
- required: i === "path" || !AST.isOptional(field.ast)
373
- })
374
- pathOps.push({
375
- _tag: "parameter",
376
- ast: AST.toEncoded(field.ast),
377
- path: ["paths", path, method, "parameters", String(op.parameters.length - 1), "schema"]
378
- })
365
+ function processParameters(schema: Schema.Top | undefined, i: OpenAPISpecParameter["in"]) {
366
+ if (schema) {
367
+ const ast = AST.toEncoded(schema.ast)
368
+ if (AST.isObjects(ast)) {
369
+ for (const ps of ast.propertySignatures) {
370
+ op.parameters.push({
371
+ name: String(ps.name),
372
+ in: i,
373
+ schema: {},
374
+ required: i === "path" || !AST.isOptional(ps.type)
375
+ })
376
+ pathOps.push({
377
+ _tag: "parameter",
378
+ ast: ps.type,
379
+ path: ["paths", path, method, "parameters", String(op.parameters.length - 1), "schema"]
380
+ })
381
+ }
379
382
  }
380
383
  }
381
384
  }
@@ -421,8 +424,7 @@ export function fromApi<Id extends string, Groups extends HttpApiGroup.Any>(
421
424
  processParameters(endpoint.params, "path")
422
425
  if (!hasBody && endpoint.payload.size === 1) {
423
426
  const entry = endpoint.payload.values().next().value!
424
- const schema = entry.schemas[0] as Schema.Struct<Schema.Struct.Fields>
425
- processParameters(schema.fields, "query")
427
+ processParameters(entry.schemas[0], "query")
426
428
  }
427
429
  processParameters(endpoint.headers, "header")
428
430
  processParameters(endpoint.query, "query")
@@ -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),