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.
- package/dist/Cache.d.ts +2 -2
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +1 -1
- package/dist/Cache.js.map +1 -1
- package/dist/Config.d.ts +2 -2
- package/dist/Config.js +3 -3
- package/dist/Config.js.map +1 -1
- package/dist/DateTime.d.ts +23 -161
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +6 -51
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +12 -12
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +12 -12
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +13 -13
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1 -1
- package/dist/Effect.js.map +1 -1
- package/dist/Formatter.d.ts +131 -47
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +228 -50
- package/dist/Formatter.js.map +1 -1
- package/dist/JsonSchema.d.ts +299 -10
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +323 -4
- package/dist/JsonSchema.js.map +1 -1
- package/dist/LayerMap.d.ts +4 -4
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LogLevel.d.ts +27 -0
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +28 -100
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +4 -4
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Metric.d.ts +2 -2
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +1 -1
- package/dist/Metric.js.map +1 -1
- package/dist/Pool.d.ts +1 -1
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +1 -1
- package/dist/Pool.js.map +1 -1
- package/dist/Random.d.ts +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +3 -12
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +2 -2
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +1 -1
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +1 -1
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/RequestResolver.d.ts +6 -6
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Schedule.d.ts +20 -11
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +23 -9
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +4 -4
- package/dist/Schema.d.ts.map +1 -1
- package/dist/ScopedCache.d.ts +2 -2
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Stream.d.ts +19 -19
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +3 -3
- package/dist/Stream.js.map +1 -1
- package/dist/index.d.ts +134 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +134 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/dateTime.js +3 -11
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +2 -2
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/random.d.ts +2 -0
- package/dist/internal/random.d.ts.map +1 -0
- package/dist/internal/random.js +13 -0
- package/dist/internal/random.js.map +1 -0
- package/dist/internal/rcRef.js +1 -1
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/testing/TestClock.d.ts +4 -4
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +1 -1
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +6 -6
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +10 -10
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +3 -3
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +2 -2
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +2 -2
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +1 -1
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +17 -17
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Response.d.ts +23 -23
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +1 -1
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +3 -3
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +1 -1
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +1 -1
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/encoding/Sse.d.ts +2 -2
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/http/Cookies.d.ts +1 -1
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +2 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +4 -4
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts +11 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +8 -1
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +4 -4
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +3 -3
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/observability/Otlp.d.ts +12 -12
- package/dist/unstable/observability/Otlp.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +1 -1
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +2 -2
- package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +6 -6
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +1 -1
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +2 -2
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +1 -1
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +1 -1
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +6 -6
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +3 -3
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +1 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +2 -2
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +5 -26
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +3 -11
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +4 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlModel.js +3 -3
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.d.ts +16 -5
- package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.js +17 -7
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +3 -3
- package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableClock.js +3 -3
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/package.json +1 -1
- package/src/Cache.ts +3 -3
- package/src/Config.ts +3 -3
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +15 -15
- package/src/Effect.ts +15 -15
- package/src/Formatter.ts +252 -50
- package/src/JsonSchema.ts +383 -10
- package/src/LayerMap.ts +5 -5
- package/src/LogLevel.ts +31 -0
- package/src/Logger.ts +5 -5
- package/src/Metric.ts +4 -4
- package/src/Pool.ts +4 -4
- package/src/Random.ts +5 -14
- package/src/RcMap.ts +5 -5
- package/src/RcRef.ts +1 -1
- package/src/RequestResolver.ts +9 -9
- package/src/Schedule.ts +44 -25
- package/src/Schema.ts +4 -4
- package/src/ScopedCache.ts +3 -3
- package/src/Stream.ts +34 -34
- package/src/index.ts +134 -0
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +21 -21
- package/src/internal/random.ts +20 -0
- package/src/internal/rcRef.ts +2 -2
- package/src/testing/TestClock.ts +5 -5
- package/src/testing/TestSchema.ts +8 -8
- package/src/unstable/ai/AiError.ts +1 -1
- package/src/unstable/ai/Chat.ts +10 -10
- package/src/unstable/ai/LanguageModel.ts +3 -3
- package/src/unstable/ai/McpServer.ts +2 -2
- package/src/unstable/ai/Prompt.ts +17 -17
- package/src/unstable/ai/Response.ts +23 -23
- package/src/unstable/cluster/ClusterCron.ts +2 -2
- package/src/unstable/cluster/Entity.ts +5 -5
- package/src/unstable/cluster/EntityResource.ts +4 -4
- package/src/unstable/cluster/K8sHttpClient.ts +1 -1
- package/src/unstable/cluster/MessageStorage.ts +1 -4
- package/src/unstable/cluster/Sharding.ts +3 -3
- package/src/unstable/cluster/ShardingConfig.ts +10 -11
- package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
- package/src/unstable/cluster/internal/entityManager.ts +3 -3
- package/src/unstable/encoding/Sse.ts +2 -4
- package/src/unstable/http/Cookies.ts +3 -3
- package/src/unstable/http/HttpClient.ts +4 -4
- package/src/unstable/http/HttpClientRequest.ts +15 -11
- package/src/unstable/http/HttpMethod.ts +16 -4
- package/src/unstable/observability/Otlp.ts +12 -12
- package/src/unstable/observability/OtlpExporter.ts +3 -3
- package/src/unstable/observability/OtlpLogger.ts +4 -4
- package/src/unstable/observability/OtlpMetrics.ts +4 -4
- package/src/unstable/observability/OtlpTracer.ts +4 -4
- package/src/unstable/persistence/Persistable.ts +2 -2
- package/src/unstable/persistence/PersistedQueue.ts +18 -18
- package/src/unstable/persistence/Persistence.ts +3 -3
- package/src/unstable/persistence/RateLimiter.ts +4 -4
- package/src/unstable/process/ChildProcess.ts +1 -1
- package/src/unstable/reactivity/Atom.ts +13 -13
- package/src/unstable/reactivity/AtomHttpApi.ts +3 -3
- package/src/unstable/reactivity/AtomRpc.ts +3 -3
- package/src/unstable/rpc/Rpc.ts +3 -3
- package/src/unstable/rpc/RpcClient.ts +8 -51
- package/src/unstable/socket/Socket.ts +4 -4
- package/src/unstable/sql/SqlModel.ts +5 -5
- package/src/unstable/sql/SqlSchema.ts +41 -25
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
188
|
+
<A extends Atom<any>>(self: A, duration: Duration.Input) => A
|
|
189
189
|
>(2, (self, durationInput) => {
|
|
190
|
-
const duration = Duration.
|
|
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.
|
|
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.
|
|
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.
|
|
1696
|
-
const millis = Duration.toMillis(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.
|
|
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.
|
|
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.
|
|
1744
|
-
const millis = Duration.toMillis(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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
222
|
+
? Duration.fromInputUnsafe(options.timeToLive)
|
|
223
223
|
: undefined
|
|
224
224
|
}) as any
|
|
225
225
|
|
package/src/unstable/rpc/Rpc.ts
CHANGED
|
@@ -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:
|
|
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:
|
|
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:
|
|
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
|
|
70
|
-
|
|
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
|
-
|
|
619
|
-
|
|
620
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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 {
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
Schema.SchemaError,
|
|
108
|
+
Res["Type"],
|
|
109
|
+
Schema.SchemaError | Cause.NoSuchElementError,
|
|
94
110
|
Req["EncodingServices"] | Res["DecodingServices"]
|
|
95
|
-
> => Arr.isReadonlyArrayNonEmpty(arr) ?
|
|
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
|
|
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
|
|
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
|
|
140
|
+
Option.Option<Res["Type"]>,
|
|
141
|
+
Schema.SchemaError,
|
|
126
142
|
Req["EncodingServices"] | Res["DecodingServices"]
|
|
127
|
-
> => Arr.isReadonlyArrayNonEmpty(arr) ? decode(arr[0]) : Effect.
|
|
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.
|
|
31
|
+
readonly duration: Duration.Input
|
|
32
32
|
}): DurableClock => ({
|
|
33
33
|
[TypeId]: TypeId,
|
|
34
34
|
name: options.name,
|
|
35
|
-
duration: 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.
|
|
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.
|
|
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.
|
|
73
|
-
readonly inMemoryThreshold?: Duration.
|
|
72
|
+
readonly duration: Duration.Input
|
|
73
|
+
readonly inMemoryThreshold?: Duration.Input | undefined
|
|
74
74
|
}) {
|
|
75
|
-
const duration = 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.
|
|
81
|
+
? Duration.fromInputUnsafe(options.inMemoryThreshold)
|
|
82
82
|
: defaultInMemoryThreshold
|
|
83
83
|
|
|
84
84
|
if (Duration.isLessThanOrEqualTo(duration, inMemoryThreshold)) {
|