effect 4.0.0-beta.6 → 4.0.0-beta.7

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 (273) 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/Config.d.ts +2 -2
  6. package/dist/Config.js +3 -3
  7. package/dist/Config.js.map +1 -1
  8. package/dist/DateTime.d.ts +23 -161
  9. package/dist/DateTime.d.ts.map +1 -1
  10. package/dist/DateTime.js +6 -51
  11. package/dist/DateTime.js.map +1 -1
  12. package/dist/Duration.d.ts +12 -12
  13. package/dist/Duration.d.ts.map +1 -1
  14. package/dist/Duration.js +12 -12
  15. package/dist/Duration.js.map +1 -1
  16. package/dist/Effect.d.ts +13 -13
  17. package/dist/Effect.d.ts.map +1 -1
  18. package/dist/Effect.js +1 -1
  19. package/dist/Effect.js.map +1 -1
  20. package/dist/Formatter.d.ts +131 -47
  21. package/dist/Formatter.d.ts.map +1 -1
  22. package/dist/Formatter.js +228 -50
  23. package/dist/Formatter.js.map +1 -1
  24. package/dist/JsonSchema.d.ts +299 -10
  25. package/dist/JsonSchema.d.ts.map +1 -1
  26. package/dist/JsonSchema.js +323 -4
  27. package/dist/JsonSchema.js.map +1 -1
  28. package/dist/LayerMap.d.ts +4 -4
  29. package/dist/LayerMap.d.ts.map +1 -1
  30. package/dist/LogLevel.d.ts +27 -0
  31. package/dist/LogLevel.d.ts.map +1 -1
  32. package/dist/LogLevel.js +28 -100
  33. package/dist/LogLevel.js.map +1 -1
  34. package/dist/Logger.d.ts +4 -4
  35. package/dist/Logger.d.ts.map +1 -1
  36. package/dist/Metric.d.ts +2 -2
  37. package/dist/Metric.d.ts.map +1 -1
  38. package/dist/Metric.js +1 -1
  39. package/dist/Metric.js.map +1 -1
  40. package/dist/Pool.d.ts +1 -1
  41. package/dist/Pool.d.ts.map +1 -1
  42. package/dist/Pool.js +1 -1
  43. package/dist/Pool.js.map +1 -1
  44. package/dist/Random.d.ts +1 -1
  45. package/dist/Random.d.ts.map +1 -1
  46. package/dist/Random.js +3 -12
  47. package/dist/Random.js.map +1 -1
  48. package/dist/RcMap.d.ts +2 -2
  49. package/dist/RcMap.d.ts.map +1 -1
  50. package/dist/RcMap.js +1 -1
  51. package/dist/RcMap.js.map +1 -1
  52. package/dist/RcRef.d.ts +1 -1
  53. package/dist/RcRef.d.ts.map +1 -1
  54. package/dist/RequestResolver.d.ts +6 -6
  55. package/dist/RequestResolver.d.ts.map +1 -1
  56. package/dist/RequestResolver.js.map +1 -1
  57. package/dist/Schedule.d.ts +20 -11
  58. package/dist/Schedule.d.ts.map +1 -1
  59. package/dist/Schedule.js +23 -9
  60. package/dist/Schedule.js.map +1 -1
  61. package/dist/Schema.d.ts +4 -4
  62. package/dist/Schema.d.ts.map +1 -1
  63. package/dist/ScopedCache.d.ts +2 -2
  64. package/dist/ScopedCache.d.ts.map +1 -1
  65. package/dist/ScopedCache.js +1 -1
  66. package/dist/ScopedCache.js.map +1 -1
  67. package/dist/Stream.d.ts +19 -19
  68. package/dist/Stream.d.ts.map +1 -1
  69. package/dist/Stream.js +3 -3
  70. package/dist/Stream.js.map +1 -1
  71. package/dist/index.d.ts +134 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +134 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/internal/dateTime.js +3 -11
  76. package/dist/internal/dateTime.js.map +1 -1
  77. package/dist/internal/effect.js +2 -2
  78. package/dist/internal/effect.js.map +1 -1
  79. package/dist/internal/random.d.ts +2 -0
  80. package/dist/internal/random.d.ts.map +1 -0
  81. package/dist/internal/random.js +13 -0
  82. package/dist/internal/random.js.map +1 -0
  83. package/dist/internal/rcRef.js +1 -1
  84. package/dist/internal/rcRef.js.map +1 -1
  85. package/dist/testing/TestClock.d.ts +4 -4
  86. package/dist/testing/TestClock.d.ts.map +1 -1
  87. package/dist/testing/TestClock.js +1 -1
  88. package/dist/testing/TestClock.js.map +1 -1
  89. package/dist/testing/TestSchema.d.ts +6 -6
  90. package/dist/testing/TestSchema.d.ts.map +1 -1
  91. package/dist/unstable/ai/AiError.d.ts +10 -10
  92. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  93. package/dist/unstable/ai/Chat.d.ts +3 -3
  94. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  95. package/dist/unstable/ai/Chat.js +2 -2
  96. package/dist/unstable/ai/Chat.js.map +1 -1
  97. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  98. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  99. package/dist/unstable/ai/McpServer.d.ts +1 -1
  100. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  101. package/dist/unstable/ai/McpServer.js.map +1 -1
  102. package/dist/unstable/ai/Prompt.d.ts +17 -17
  103. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  104. package/dist/unstable/ai/Response.d.ts +23 -23
  105. package/dist/unstable/ai/Response.d.ts.map +1 -1
  106. package/dist/unstable/ai/Response.js +1 -1
  107. package/dist/unstable/ai/Response.js.map +1 -1
  108. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  109. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  110. package/dist/unstable/cluster/ClusterCron.js +1 -1
  111. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  112. package/dist/unstable/cluster/Entity.d.ts +3 -3
  113. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  114. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  115. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  116. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  117. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  118. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  119. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  120. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  121. package/dist/unstable/cluster/Sharding.js +1 -1
  122. package/dist/unstable/cluster/Sharding.js.map +1 -1
  123. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  124. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  125. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  126. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  127. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  128. package/dist/unstable/cluster/internal/entityManager.js +1 -1
  129. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  130. package/dist/unstable/encoding/Sse.d.ts +2 -2
  131. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  132. package/dist/unstable/encoding/Sse.js.map +1 -1
  133. package/dist/unstable/http/Cookies.d.ts +1 -1
  134. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  135. package/dist/unstable/http/Cookies.js +2 -2
  136. package/dist/unstable/http/Cookies.js.map +1 -1
  137. package/dist/unstable/http/HttpClient.d.ts +4 -4
  138. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  139. package/dist/unstable/http/HttpClientRequest.d.ts +11 -11
  140. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  141. package/dist/unstable/http/HttpClientRequest.js +8 -1
  142. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  143. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  144. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  145. package/dist/unstable/http/HttpMethod.js +3 -3
  146. package/dist/unstable/http/HttpMethod.js.map +1 -1
  147. package/dist/unstable/observability/Otlp.d.ts +12 -12
  148. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  149. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  150. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  151. package/dist/unstable/observability/OtlpExporter.js +1 -1
  152. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  153. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  154. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  155. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  156. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  157. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  158. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  159. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  160. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  161. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  162. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  163. package/dist/unstable/persistence/PersistedQueue.js +6 -6
  164. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  165. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  166. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  167. package/dist/unstable/persistence/Persistence.js +2 -2
  168. package/dist/unstable/persistence/Persistence.js.map +1 -1
  169. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  170. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  171. package/dist/unstable/persistence/RateLimiter.js +1 -1
  172. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  173. package/dist/unstable/process/ChildProcess.d.ts +1 -1
  174. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  175. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  176. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  177. package/dist/unstable/reactivity/Atom.js +3 -3
  178. package/dist/unstable/reactivity/Atom.js.map +1 -1
  179. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  180. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  181. package/dist/unstable/reactivity/AtomHttpApi.js +1 -1
  182. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  183. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  184. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  185. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  186. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  187. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  188. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  189. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  190. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  191. package/dist/unstable/rpc/RpcClient.js +3 -11
  192. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  193. package/dist/unstable/socket/Socket.d.ts +4 -4
  194. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  195. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  196. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  197. package/dist/unstable/sql/SqlModel.js +3 -3
  198. package/dist/unstable/sql/SqlModel.js.map +1 -1
  199. package/dist/unstable/sql/SqlSchema.d.ts +16 -5
  200. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  201. package/dist/unstable/sql/SqlSchema.js +17 -7
  202. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  203. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  204. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  205. package/dist/unstable/workflow/DurableClock.js +3 -3
  206. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  207. package/package.json +1 -1
  208. package/src/Cache.ts +3 -3
  209. package/src/Config.ts +3 -3
  210. package/src/DateTime.ts +24 -164
  211. package/src/Duration.ts +15 -15
  212. package/src/Effect.ts +15 -15
  213. package/src/Formatter.ts +252 -50
  214. package/src/JsonSchema.ts +383 -10
  215. package/src/LayerMap.ts +5 -5
  216. package/src/LogLevel.ts +31 -0
  217. package/src/Logger.ts +5 -5
  218. package/src/Metric.ts +4 -4
  219. package/src/Pool.ts +4 -4
  220. package/src/Random.ts +5 -14
  221. package/src/RcMap.ts +5 -5
  222. package/src/RcRef.ts +1 -1
  223. package/src/RequestResolver.ts +9 -9
  224. package/src/Schedule.ts +44 -25
  225. package/src/Schema.ts +4 -4
  226. package/src/ScopedCache.ts +3 -3
  227. package/src/Stream.ts +34 -34
  228. package/src/index.ts +134 -0
  229. package/src/internal/dateTime.ts +9 -30
  230. package/src/internal/effect.ts +21 -21
  231. package/src/internal/random.ts +20 -0
  232. package/src/internal/rcRef.ts +2 -2
  233. package/src/testing/TestClock.ts +5 -5
  234. package/src/testing/TestSchema.ts +8 -8
  235. package/src/unstable/ai/AiError.ts +1 -1
  236. package/src/unstable/ai/Chat.ts +10 -10
  237. package/src/unstable/ai/LanguageModel.ts +3 -3
  238. package/src/unstable/ai/McpServer.ts +2 -2
  239. package/src/unstable/ai/Prompt.ts +17 -17
  240. package/src/unstable/ai/Response.ts +23 -23
  241. package/src/unstable/cluster/ClusterCron.ts +2 -2
  242. package/src/unstable/cluster/Entity.ts +5 -5
  243. package/src/unstable/cluster/EntityResource.ts +4 -4
  244. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  245. package/src/unstable/cluster/MessageStorage.ts +1 -4
  246. package/src/unstable/cluster/Sharding.ts +3 -3
  247. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  248. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  249. package/src/unstable/cluster/internal/entityManager.ts +3 -3
  250. package/src/unstable/encoding/Sse.ts +2 -4
  251. package/src/unstable/http/Cookies.ts +3 -3
  252. package/src/unstable/http/HttpClient.ts +4 -4
  253. package/src/unstable/http/HttpClientRequest.ts +15 -11
  254. package/src/unstable/http/HttpMethod.ts +16 -4
  255. package/src/unstable/observability/Otlp.ts +12 -12
  256. package/src/unstable/observability/OtlpExporter.ts +3 -3
  257. package/src/unstable/observability/OtlpLogger.ts +4 -4
  258. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  259. package/src/unstable/observability/OtlpTracer.ts +4 -4
  260. package/src/unstable/persistence/Persistable.ts +2 -2
  261. package/src/unstable/persistence/PersistedQueue.ts +18 -18
  262. package/src/unstable/persistence/Persistence.ts +3 -3
  263. package/src/unstable/persistence/RateLimiter.ts +4 -4
  264. package/src/unstable/process/ChildProcess.ts +1 -1
  265. package/src/unstable/reactivity/Atom.ts +13 -13
  266. package/src/unstable/reactivity/AtomHttpApi.ts +3 -3
  267. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  268. package/src/unstable/rpc/Rpc.ts +3 -3
  269. package/src/unstable/rpc/RpcClient.ts +8 -51
  270. package/src/unstable/socket/Socket.ts +4 -4
  271. package/src/unstable/sql/SqlModel.ts +5 -5
  272. package/src/unstable/sql/SqlSchema.ts +41 -25
  273. package/src/unstable/workflow/DurableClock.ts +8 -8
@@ -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
  /**
@@ -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))
@@ -103,7 +103,7 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
103
103
  | ReadonlyArray<unknown>
104
104
  | ReadonlyRecord<string, ReadonlyArray<unknown>>
105
105
  | undefined
106
- readonly timeToLive?: Duration.DurationInput | undefined
106
+ readonly timeToLive?: Duration.Input | undefined
107
107
  }
108
108
  >
109
109
  : never
@@ -223,7 +223,7 @@ export const Service = <Self>() =>
223
223
  readonly headers?: any
224
224
  readonly withResponse?: boolean
225
225
  readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
226
- readonly timeToLive?: Duration.DurationInput | undefined
226
+ readonly timeToLive?: Duration.Input | undefined
227
227
  }
228
228
  ) =>
229
229
  queryFamily({
@@ -236,7 +236,7 @@ export const Service = <Self>() =>
236
236
  withResponse: request.withResponse ?? false,
237
237
  reactivityKeys: request.reactivityKeys,
238
238
  timeToLive: request.timeToLive
239
- ? Duration.fromDurationInputUnsafe(request.timeToLive)
239
+ ? Duration.fromInputUnsafe(request.timeToLive)
240
240
  : undefined
241
241
  })) as any
242
242
 
@@ -71,7 +71,7 @@ export interface AtomRpcClient<Self, Id extends string, Rpcs extends Rpc.Any, E>
71
71
  | ReadonlyArray<unknown>
72
72
  | ReadonlyRecord<string, ReadonlyArray<unknown>>
73
73
  | undefined
74
- readonly timeToLive?: Duration.DurationInput | undefined
74
+ readonly timeToLive?: Duration.Input | undefined
75
75
  }
76
76
  ) => Rpc.ExtractTag<Rpcs, Tag> extends Rpc.Rpc<
77
77
  infer _Tag,
@@ -208,7 +208,7 @@ export const Service = <Self>() =>
208
208
  | ReadonlyArray<unknown>
209
209
  | ReadonlyRecord<string, ReadonlyArray<unknown>>
210
210
  | undefined
211
- readonly timeToLive?: Duration.DurationInput | undefined
211
+ readonly timeToLive?: Duration.Input | undefined
212
212
  }
213
213
  ) =>
214
214
  queryFamily({
@@ -219,7 +219,7 @@ export const Service = <Self>() =>
219
219
  : undefined,
220
220
  reactivityKeys: options?.reactivityKeys,
221
221
  timeToLive: options?.timeToLive
222
- ? Duration.fromDurationInputUnsafe(options.timeToLive)
222
+ ? Duration.fromInputUnsafe(options.timeToLive)
223
223
  : undefined
224
224
  }) as any
225
225
 
@@ -61,7 +61,7 @@ export interface Rpc<
61
61
  readonly payloadSchema: Payload
62
62
  readonly successSchema: Success
63
63
  readonly errorSchema: Error
64
- readonly defectSchema: DefectSchema
64
+ readonly defectSchema: Schema.Top
65
65
  readonly annotations: ServiceMap.ServiceMap<never>
66
66
  readonly middlewares: ReadonlySet<Middleware>
67
67
  readonly "~requires": Requires
@@ -183,7 +183,7 @@ export interface AnyWithProps extends Pipeable {
183
183
  readonly payloadSchema: Schema.Top
184
184
  readonly successSchema: Schema.Top
185
185
  readonly errorSchema: Schema.Top
186
- readonly defectSchema: DefectSchema
186
+ readonly defectSchema: Schema.Top
187
187
  readonly annotations: ServiceMap.ServiceMap<never>
188
188
  readonly middlewares: ReadonlySet<RpcMiddleware.AnyServiceWithProps>
189
189
  readonly "~requires": any
@@ -696,7 +696,7 @@ const makeProto = <
696
696
  readonly payloadSchema: Payload
697
697
  readonly successSchema: Success
698
698
  readonly errorSchema: Error
699
- readonly defectSchema: DefectSchema
699
+ readonly defectSchema: Schema.Top
700
700
  readonly annotations: ServiceMap.ServiceMap<never>
701
701
  readonly middlewares: ReadonlySet<Middleware>
702
702
  }): Rpc<Tag, Payload, Success, Error, Middleware, Requires> => {
@@ -21,7 +21,6 @@ import * as ServiceMap from "../../ServiceMap.ts"
21
21
  import * as Stream from "../../Stream.ts"
22
22
  import type * as Struct from "../../Struct.ts"
23
23
  import type { Span } from "../../Tracer.ts"
24
- import type { Mutable } from "../../Types.ts"
25
24
  import * as Headers from "../http/Headers.ts"
26
25
  import * as HttpBody from "../http/HttpBody.ts"
27
26
  import * as HttpClient from "../http/HttpClient.ts"
@@ -46,16 +45,7 @@ import { withRun } from "./Utils.ts"
46
45
  * @since 4.0.0
47
46
  * @category client
48
47
  */
49
- export type RpcClient<Rpcs extends Rpc.Any, E = never> = Struct.Simplify<
50
- & RpcClient.From<RpcClient.NonPrefixed<Rpcs>, E, "">
51
- & {
52
- readonly [CurrentPrefix in RpcClient.Prefixes<Rpcs>]: RpcClient.From<
53
- RpcClient.Prefixed<Rpcs, CurrentPrefix>,
54
- E,
55
- CurrentPrefix
56
- >
57
- }
58
- >
48
+ export type RpcClient<Rpcs extends Rpc.Any, E = never> = Struct.Simplify<RpcClient.From<Rpcs, E>>
59
49
 
60
50
  /**
61
51
  * @since 4.0.0
@@ -66,34 +56,8 @@ export declare namespace RpcClient {
66
56
  * @since 4.0.0
67
57
  * @category client
68
58
  */
69
- export type Prefixes<Rpcs extends Rpc.Any> = Rpcs["_tag"] extends infer Tag
70
- ? Tag extends `${infer Prefix}.${string}` ? Prefix : never
71
- : never
72
-
73
- /**
74
- * @since 4.0.0
75
- * @category client
76
- */
77
- export type NonPrefixed<Rpcs extends Rpc.Any> = Exclude<Rpcs, { readonly _tag: `${string}.${string}` }>
78
-
79
- /**
80
- * @since 4.0.0
81
- * @category client
82
- */
83
- export type Prefixed<Rpcs extends Rpc.Any, Prefix extends string> = Extract<
84
- Rpcs,
85
- { readonly _tag: `${Prefix}.${string}` }
86
- >
87
-
88
- /**
89
- * @since 4.0.0
90
- * @category client
91
- */
92
- export type From<Rpcs extends Rpc.Any, E = never, Prefix extends string = ""> = {
93
- readonly [
94
- Current in Rpcs as Current["_tag"] extends `${Prefix}.${infer Method}` ? Method
95
- : Current["_tag"]
96
- ]: <
59
+ export type From<Rpcs extends Rpc.Any, E = never> = {
60
+ readonly [Current in Rpcs as Current["_tag"]]: <
97
61
  const AsQueue extends boolean = false,
98
62
  const Discard = false
99
63
  >(
@@ -615,16 +579,9 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
615
579
  }
616
580
  } else {
617
581
  client = {}
618
- for (const rpc of group.requests.values()) {
619
- const dot = rpc._tag.indexOf(".")
620
- const prefix = dot === -1 ? undefined : rpc._tag.slice(0, dot)
621
- if (prefix !== undefined && !(prefix in client)) {
622
- ;(client as any)[prefix] = {} as Mutable<RpcClient.Prefixed<Rpcs, typeof prefix>>
623
- }
624
- const target = prefix !== undefined ? (client as any)[prefix] : client
625
- const tag = prefix !== undefined ? rpc._tag.slice(dot + 1) : rpc._tag
626
- target[tag] = onRequest(rpc as any)
627
- }
582
+ group.requests.forEach((rpc) => {
583
+ client[rpc._tag] = onRequest(rpc as any)
584
+ })
628
585
  }
629
586
 
630
587
  return { client, write } as const
@@ -1119,7 +1076,7 @@ export const makeProtocolWorker = (
1119
1076
  readonly maxSize: number
1120
1077
  readonly concurrency?: number | undefined
1121
1078
  readonly targetUtilization?: number | undefined
1122
- readonly timeToLive: Duration.DurationInput
1079
+ readonly timeToLive: Duration.Input
1123
1080
  }
1124
1081
  ): Effect.Effect<
1125
1082
  Protocol["Service"],
@@ -1267,7 +1224,7 @@ export const layerProtocolWorker: (
1267
1224
  readonly maxSize: number
1268
1225
  readonly concurrency?: number | undefined
1269
1226
  readonly targetUtilization?: number | undefined
1270
- readonly timeToLive: Duration.DurationInput
1227
+ readonly timeToLive: Duration.Input
1271
1228
  }
1272
1229
  ) => Layer.Layer<
1273
1230
  Protocol,
@@ -5,7 +5,7 @@ import type { NonEmptyReadonlyArray } from "../../Array.ts"
5
5
  import type * as Cause from "../../Cause.ts"
6
6
  import * as Channel from "../../Channel.ts"
7
7
  import * as Deferred from "../../Deferred.ts"
8
- import type { DurationInput } from "../../Duration.ts"
8
+ import type * as Duration from "../../Duration.ts"
9
9
  import * as Effect from "../../Effect.ts"
10
10
  import * as Exit from "../../Exit.ts"
11
11
  import * as FiberSet from "../../FiberSet.ts"
@@ -423,7 +423,7 @@ export const layerWebSocketConstructorGlobal: Layer.Layer<WebSocketConstructor>
423
423
  */
424
424
  export const makeWebSocket = (url: string | Effect.Effect<string>, options?: {
425
425
  readonly closeCodeIsError?: ((code: number) => boolean) | undefined
426
- readonly openTimeout?: DurationInput | undefined
426
+ readonly openTimeout?: Duration.Input | undefined
427
427
  readonly protocols?: string | Array<string> | undefined
428
428
  }): Effect.Effect<Socket, never, WebSocketConstructor> =>
429
429
  fromWebSocket(
@@ -444,7 +444,7 @@ export const fromWebSocket = <RO>(
444
444
  acquire: Effect.Effect<globalThis.WebSocket, SocketError, RO>,
445
445
  options?: {
446
446
  readonly closeCodeIsError?: ((code: number) => boolean) | undefined
447
- readonly openTimeout?: DurationInput | undefined
447
+ readonly openTimeout?: Duration.Input | undefined
448
448
  } | undefined
449
449
  ): Effect.Effect<Socket, never, Exclude<RO, Scope.Scope>> =>
450
450
  Effect.withFiber((fiber) => {
@@ -619,7 +619,7 @@ export const layerWebSocket: (
619
619
  url: string | Effect.Effect<string>,
620
620
  options?: {
621
621
  readonly closeCodeIsError?: ((code: number) => boolean) | undefined
622
- readonly openTimeout?: DurationInput | undefined
622
+ readonly openTimeout?: Duration.Input | undefined
623
623
  readonly protocols?: string | Array<string> | undefined
624
624
  } | undefined
625
625
  ) => Layer.Layer<Socket, never, WebSocketConstructor> = flow(makeWebSocket, Layer.effect(Socket))
@@ -3,7 +3,7 @@
3
3
  * @category models
4
4
  */
5
5
  import type * as Cause from "../../Cause.ts"
6
- import type { DurationInput } from "../../Duration.ts"
6
+ import type { Input } from "../../Duration.ts"
7
7
  import * as Effect from "../../Effect.ts"
8
8
  import { identity } from "../../Function.ts"
9
9
  import * as RequestResolver from "../../RequestResolver.ts"
@@ -69,7 +69,7 @@ export const makeRepository = <
69
69
  const idSchema = Model.fields[options.idColumn] as Schema.Top
70
70
  const idColumn = options.idColumn as string
71
71
 
72
- const insertSchema = SqlSchema.single({
72
+ const insertSchema = SqlSchema.findOne({
73
73
  Request: Model.insert,
74
74
  Result: Model,
75
75
  execute: (request) =>
@@ -107,7 +107,7 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID(
107
107
  })
108
108
  ) as any
109
109
 
110
- const updateSchema = SqlSchema.single({
110
+ const updateSchema = SqlSchema.findOne({
111
111
  Request: Model.update,
112
112
  Result: Model,
113
113
  execute: (request: any) =>
@@ -159,7 +159,7 @@ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idCol
159
159
  })
160
160
  ) as any
161
161
 
162
- const findByIdSchema = SqlSchema.single({
162
+ const findByIdSchema = SqlSchema.findOne({
163
163
  Request: idSchema,
164
164
  Result: Model,
165
165
  execute: (id: any) => sql`select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
@@ -210,7 +210,7 @@ export const makeDataLoaders = <
210
210
  readonly tableName: string
211
211
  readonly spanPrefix: string
212
212
  readonly idColumn: Id
213
- readonly window: DurationInput
213
+ readonly window: Input
214
214
  readonly maxBatchSize?: number | undefined
215
215
  }
216
216
  ): Effect.Effect<
@@ -13,7 +13,7 @@ import * as Schema from "../../Schema.ts"
13
13
  * @since 4.0.0
14
14
  * @category constructor
15
15
  */
16
- export const findMany = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
16
+ export const findAll = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
17
17
  options: {
18
18
  readonly Request: Req
19
19
  readonly Result: Res
@@ -21,7 +21,30 @@ export const findMany = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
21
21
  }
22
22
  ) => {
23
23
  const encodeRequest = Schema.encodeEffect(options.Request)
24
- const decode = Schema.decodeUnknownEffect(Schema.Array(options.Result))
24
+ const decode = Schema.decodeUnknownEffect(Schema.mutable(Schema.Array(options.Result)))
25
+ return (
26
+ request: Req["Encoded"]
27
+ ): Effect.Effect<
28
+ Array<Res["Type"]>,
29
+ E | Schema.SchemaError | Cause.NoSuchElementError,
30
+ Req["EncodingServices"] | Res["DecodingServices"] | R
31
+ > => Effect.flatMap(Effect.flatMap(encodeRequest(request), options.execute), decode)
32
+ }
33
+
34
+ /**
35
+ * Run a sql query with a request schema and a result schema.
36
+ *
37
+ * @since 4.0.0
38
+ * @category constructor
39
+ */
40
+ export const findNonEmpty = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
41
+ options: {
42
+ readonly Request: Req
43
+ readonly Result: Res
44
+ readonly execute: (request: Req["Encoded"]) => Effect.Effect<ReadonlyArray<unknown>, E, R>
45
+ }
46
+ ) => {
47
+ const find = findAll(options)
25
48
  return (
26
49
  request: Req["Encoded"]
27
50
  ): Effect.Effect<
@@ -29,17 +52,10 @@ export const findMany = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
29
52
  E | Schema.SchemaError | Cause.NoSuchElementError,
30
53
  Req["EncodingServices"] | Res["DecodingServices"] | R
31
54
  > =>
32
- Effect.flatMap(
33
- Effect.flatMap(encodeRequest(request), options.execute),
34
- (results): Effect.Effect<
35
- Arr.NonEmptyArray<Res["Type"]>,
36
- Schema.SchemaError | Cause.NoSuchElementError,
37
- Req["EncodingServices"] | Res["DecodingServices"]
38
- > =>
39
- Arr.isReadonlyArrayNonEmpty(results)
40
- ? decode(results) as Effect.Effect<Arr.NonEmptyArray<Res["Type"]>, Schema.SchemaError>
41
- : Effect.fail(new Cause.NoSuchElementError())
42
- )
55
+ Effect.flatMap(find(request), (results) =>
56
+ Arr.isArrayNonEmpty(results)
57
+ ? Effect.succeed(results)
58
+ : Effect.fail(new Cause.NoSuchElementError()))
43
59
  }
44
60
 
45
61
  const void_ = <Req extends Schema.Top, E, R>(
@@ -65,7 +81,7 @@ export {
65
81
  }
66
82
 
67
83
  /**
68
- * Run a sql query with a request schema and a result schema and return the first result, if any.
84
+ * Run a sql query with a request schema and a result schema and return the first result.
69
85
  *
70
86
  * @since 4.0.0
71
87
  * @category constructor
@@ -82,17 +98,17 @@ export const findOne = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
82
98
  return (
83
99
  request: Req["Type"]
84
100
  ): Effect.Effect<
85
- Option.Option<Res["Type"]>,
86
- E | Schema.SchemaError,
101
+ Res["Type"],
102
+ E | Schema.SchemaError | Cause.NoSuchElementError,
87
103
  R | Req["EncodingServices"] | Res["DecodingServices"]
88
104
  > =>
89
105
  Effect.flatMap(
90
106
  Effect.flatMap(encodeRequest(request), options.execute),
91
107
  (arr): Effect.Effect<
92
- Option.Option<Res["Type"]>,
93
- Schema.SchemaError,
108
+ Res["Type"],
109
+ Schema.SchemaError | Cause.NoSuchElementError,
94
110
  Req["EncodingServices"] | Res["DecodingServices"]
95
- > => Arr.isReadonlyArrayNonEmpty(arr) ? Effect.asSome(decode(arr[0])) : Effect.succeedNone
111
+ > => Arr.isReadonlyArrayNonEmpty(arr) ? decode(arr[0]) : Effect.fail(new Cause.NoSuchElementError())
96
112
  )
97
113
  }
98
114
 
@@ -102,7 +118,7 @@ export const findOne = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
102
118
  * @since 4.0.0
103
119
  * @category constructor
104
120
  */
105
- export const single = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
121
+ export const findOneOption = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
106
122
  options: {
107
123
  readonly Request: Req
108
124
  readonly Result: Res
@@ -114,16 +130,16 @@ export const single = <Req extends Schema.Top, Res extends Schema.Top, E, R>(
114
130
  return (
115
131
  request: Req["Type"]
116
132
  ): Effect.Effect<
117
- Res["Type"],
118
- E | Schema.SchemaError | Cause.NoSuchElementError,
133
+ Option.Option<Res["Type"]>,
134
+ E | Schema.SchemaError,
119
135
  R | Req["EncodingServices"] | Res["DecodingServices"]
120
136
  > =>
121
137
  Effect.flatMap(
122
138
  Effect.flatMap(encodeRequest(request), options.execute),
123
139
  (arr): Effect.Effect<
124
- Res["Type"],
125
- Schema.SchemaError | Cause.NoSuchElementError,
140
+ Option.Option<Res["Type"]>,
141
+ Schema.SchemaError,
126
142
  Req["EncodingServices"] | Res["DecodingServices"]
127
- > => Arr.isReadonlyArrayNonEmpty(arr) ? decode(arr[0]) : Effect.fail(new Cause.NoSuchElementError())
143
+ > => Arr.isReadonlyArrayNonEmpty(arr) ? Effect.asSome(decode(arr[0])) : Effect.succeedNone
128
144
  )
129
145
  }
@@ -28,11 +28,11 @@ export interface DurableClock {
28
28
  */
29
29
  export const make = (options: {
30
30
  readonly name: string
31
- readonly duration: Duration.DurationInput
31
+ readonly duration: Duration.Input
32
32
  }): DurableClock => ({
33
33
  [TypeId]: TypeId,
34
34
  name: options.name,
35
- duration: Duration.fromDurationInputUnsafe(options.duration),
35
+ duration: Duration.fromInputUnsafe(options.duration),
36
36
  deferred: DurableDeferred.make(`DurableClock/${options.name}`)
37
37
  })
38
38
 
@@ -54,14 +54,14 @@ const InstanceTag = ServiceMap.Service<
54
54
  export const sleep: (
55
55
  options: {
56
56
  readonly name: string
57
- readonly duration: Duration.DurationInput
57
+ readonly duration: Duration.Input
58
58
  /**
59
59
  * If the duration is less than or equal to this threshold, the clock will
60
60
  * be executed in memory.
61
61
  *
62
62
  * Defaults to 60 seconds.
63
63
  */
64
- readonly inMemoryThreshold?: Duration.DurationInput | undefined
64
+ readonly inMemoryThreshold?: Duration.Input | undefined
65
65
  }
66
66
  ) => Effect.Effect<
67
67
  void,
@@ -69,16 +69,16 @@ export const sleep: (
69
69
  WorkflowEngine | WorkflowInstance
70
70
  > = Effect.fnUntraced(function*(options: {
71
71
  readonly name: string
72
- readonly duration: Duration.DurationInput
73
- readonly inMemoryThreshold?: Duration.DurationInput | undefined
72
+ readonly duration: Duration.Input
73
+ readonly inMemoryThreshold?: Duration.Input | undefined
74
74
  }) {
75
- const duration = Duration.fromDurationInputUnsafe(options.duration)
75
+ const duration = Duration.fromInputUnsafe(options.duration)
76
76
  if (Duration.isZero(duration)) {
77
77
  return
78
78
  }
79
79
 
80
80
  const inMemoryThreshold = options.inMemoryThreshold
81
- ? Duration.fromDurationInputUnsafe(options.inMemoryThreshold)
81
+ ? Duration.fromInputUnsafe(options.inMemoryThreshold)
82
82
  : defaultInMemoryThreshold
83
83
 
84
84
  if (Duration.isLessThanOrEqualTo(duration, inMemoryThreshold)) {