@clayroach/effect 3.19.14-source-capture.6 → 3.19.14-source-capture.8
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/cjs/Utils.js +1 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/package.json +1 -1
- package/src/Arbitrary.ts +0 -1101
- package/src/Array.ts +0 -3589
- package/src/BigDecimal.ts +0 -1349
- package/src/BigInt.ts +0 -643
- package/src/Boolean.ts +0 -287
- package/src/Brand.ts +0 -360
- package/src/Cache.ts +0 -281
- package/src/Cause.ts +0 -1555
- package/src/Channel.ts +0 -2355
- package/src/ChildExecutorDecision.ts +0 -146
- package/src/Chunk.ts +0 -1495
- package/src/Clock.ts +0 -111
- package/src/Config.ts +0 -542
- package/src/ConfigError.ts +0 -270
- package/src/ConfigProvider.ts +0 -333
- package/src/ConfigProviderPathPatch.ts +0 -100
- package/src/Console.ts +0 -226
- package/src/Context.ts +0 -585
- package/src/Cron.ts +0 -706
- package/src/Data.ts +0 -596
- package/src/DateTime.ts +0 -1686
- package/src/DefaultServices.ts +0 -34
- package/src/Deferred.ts +0 -301
- package/src/Differ.ts +0 -450
- package/src/Duration.ts +0 -1000
- package/src/Effect.ts +0 -14839
- package/src/Effectable.ts +0 -107
- package/src/Either.ts +0 -1040
- package/src/Encoding.ts +0 -195
- package/src/Equal.ts +0 -98
- package/src/Equivalence.ts +0 -235
- package/src/ExecutionPlan.ts +0 -308
- package/src/ExecutionStrategy.ts +0 -119
- package/src/Exit.ts +0 -467
- package/src/FastCheck.ts +0 -9
- package/src/Fiber.ts +0 -744
- package/src/FiberHandle.ts +0 -540
- package/src/FiberId.ts +0 -195
- package/src/FiberMap.ts +0 -656
- package/src/FiberRef.ts +0 -431
- package/src/FiberRefs.ts +0 -204
- package/src/FiberRefsPatch.ts +0 -105
- package/src/FiberSet.ts +0 -491
- package/src/FiberStatus.ts +0 -108
- package/src/Function.ts +0 -1222
- package/src/GlobalValue.ts +0 -53
- package/src/Graph.ts +0 -3732
- package/src/GroupBy.ts +0 -103
- package/src/HKT.ts +0 -45
- package/src/Hash.ts +0 -195
- package/src/HashMap.ts +0 -519
- package/src/HashRing.ts +0 -317
- package/src/HashSet.ts +0 -2346
- package/src/Inspectable.ts +0 -287
- package/src/Iterable.ts +0 -1119
- package/src/JSONSchema.ts +0 -1044
- package/src/KeyedPool.ts +0 -167
- package/src/Layer.ts +0 -1251
- package/src/LayerMap.ts +0 -436
- package/src/List.ts +0 -977
- package/src/LogLevel.ts +0 -285
- package/src/LogSpan.ts +0 -25
- package/src/Logger.ts +0 -702
- package/src/Mailbox.ts +0 -268
- package/src/ManagedRuntime.ts +0 -180
- package/src/Match.ts +0 -1477
- package/src/MergeDecision.ts +0 -95
- package/src/MergeState.ts +0 -172
- package/src/MergeStrategy.ts +0 -107
- package/src/Metric.ts +0 -780
- package/src/MetricBoundaries.ts +0 -69
- package/src/MetricHook.ts +0 -151
- package/src/MetricKey.ts +0 -224
- package/src/MetricKeyType.ts +0 -262
- package/src/MetricLabel.ts +0 -47
- package/src/MetricPair.ts +0 -71
- package/src/MetricPolling.ts +0 -148
- package/src/MetricRegistry.ts +0 -48
- package/src/MetricState.ts +0 -257
- package/src/Micro.ts +0 -4405
- package/src/ModuleVersion.ts +0 -18
- package/src/MutableHashMap.ts +0 -411
- package/src/MutableHashSet.ts +0 -706
- package/src/MutableList.ts +0 -297
- package/src/MutableQueue.ts +0 -227
- package/src/MutableRef.ts +0 -202
- package/src/NonEmptyIterable.ts +0 -32
- package/src/Number.ts +0 -1071
- package/src/Option.ts +0 -2170
- package/src/Order.ts +0 -373
- package/src/Ordering.ts +0 -111
- package/src/ParseResult.ts +0 -2031
- package/src/PartitionedSemaphore.ts +0 -200
- package/src/Pipeable.ts +0 -566
- package/src/Pool.ts +0 -204
- package/src/Predicate.ts +0 -1405
- package/src/Pretty.ts +0 -205
- package/src/PrimaryKey.ts +0 -23
- package/src/PubSub.ts +0 -182
- package/src/Queue.ts +0 -644
- package/src/Random.ts +0 -204
- package/src/RateLimiter.ts +0 -138
- package/src/RcMap.ts +0 -141
- package/src/RcRef.ts +0 -122
- package/src/Readable.ts +0 -93
- package/src/Record.ts +0 -1274
- package/src/RedBlackTree.ts +0 -421
- package/src/Redacted.ts +0 -144
- package/src/Ref.ts +0 -180
- package/src/RegExp.ts +0 -38
- package/src/Reloadable.ts +0 -127
- package/src/Request.ts +0 -347
- package/src/RequestBlock.ts +0 -118
- package/src/RequestResolver.ts +0 -366
- package/src/Resource.ts +0 -119
- package/src/Runtime.ts +0 -383
- package/src/RuntimeFlags.ts +0 -368
- package/src/RuntimeFlagsPatch.ts +0 -183
- package/src/STM.ts +0 -2045
- package/src/Schedule.ts +0 -2219
- package/src/ScheduleDecision.ts +0 -62
- package/src/ScheduleInterval.ts +0 -151
- package/src/ScheduleIntervals.ts +0 -122
- package/src/Scheduler.ts +0 -353
- package/src/Schema.ts +0 -10914
- package/src/SchemaAST.ts +0 -3043
- package/src/Scope.ts +0 -204
- package/src/ScopedCache.ts +0 -151
- package/src/ScopedRef.ts +0 -117
- package/src/Secret.ts +0 -88
- package/src/SingleProducerAsyncInput.ts +0 -67
- package/src/Sink.ts +0 -1461
- package/src/SortedMap.ts +0 -287
- package/src/SortedSet.ts +0 -390
- package/src/Stream.ts +0 -6468
- package/src/StreamEmit.ts +0 -136
- package/src/StreamHaltStrategy.ts +0 -123
- package/src/Streamable.ts +0 -45
- package/src/String.ts +0 -778
- package/src/Struct.ts +0 -243
- package/src/Subscribable.ts +0 -100
- package/src/SubscriptionRef.ts +0 -298
- package/src/Supervisor.ts +0 -240
- package/src/Symbol.ts +0 -29
- package/src/SynchronizedRef.ts +0 -270
- package/src/TArray.ts +0 -495
- package/src/TDeferred.ts +0 -100
- package/src/TMap.ts +0 -515
- package/src/TPriorityQueue.ts +0 -223
- package/src/TPubSub.ts +0 -200
- package/src/TQueue.ts +0 -432
- package/src/TRandom.ts +0 -129
- package/src/TReentrantLock.ts +0 -224
- package/src/TRef.ts +0 -178
- package/src/TSemaphore.ts +0 -129
- package/src/TSet.ts +0 -365
- package/src/TSubscriptionRef.ts +0 -192
- package/src/Take.ts +0 -258
- package/src/TestAnnotation.ts +0 -158
- package/src/TestAnnotationMap.ts +0 -119
- package/src/TestAnnotations.ts +0 -117
- package/src/TestClock.ts +0 -556
- package/src/TestConfig.ts +0 -47
- package/src/TestContext.ts +0 -36
- package/src/TestLive.ts +0 -53
- package/src/TestServices.ts +0 -390
- package/src/TestSized.ts +0 -55
- package/src/Tracer.ts +0 -198
- package/src/Trie.ts +0 -840
- package/src/Tuple.ts +0 -305
- package/src/Types.ts +0 -353
- package/src/Unify.ts +0 -113
- package/src/UpstreamPullRequest.ts +0 -117
- package/src/UpstreamPullStrategy.ts +0 -121
- package/src/Utils.ts +0 -809
- package/src/index.ts +0 -1561
- package/src/internal/array.ts +0 -8
- package/src/internal/blockedRequests.ts +0 -520
- package/src/internal/cache.ts +0 -733
- package/src/internal/cause.ts +0 -1050
- package/src/internal/channel/channelExecutor.ts +0 -1200
- package/src/internal/channel/channelState.ts +0 -134
- package/src/internal/channel/childExecutorDecision.ts +0 -96
- package/src/internal/channel/continuation.ts +0 -200
- package/src/internal/channel/mergeDecision.ts +0 -113
- package/src/internal/channel/mergeState.ts +0 -120
- package/src/internal/channel/mergeStrategy.ts +0 -72
- package/src/internal/channel/singleProducerAsyncInput.ts +0 -259
- package/src/internal/channel/subexecutor.ts +0 -229
- package/src/internal/channel/upstreamPullRequest.ts +0 -84
- package/src/internal/channel/upstreamPullStrategy.ts +0 -87
- package/src/internal/channel.ts +0 -2603
- package/src/internal/clock.ts +0 -95
- package/src/internal/completedRequestMap.ts +0 -9
- package/src/internal/concurrency.ts +0 -54
- package/src/internal/config.ts +0 -716
- package/src/internal/configError.ts +0 -304
- package/src/internal/configProvider/pathPatch.ts +0 -97
- package/src/internal/configProvider.ts +0 -799
- package/src/internal/console.ts +0 -153
- package/src/internal/context.ts +0 -337
- package/src/internal/core-effect.ts +0 -2293
- package/src/internal/core-stream.ts +0 -998
- package/src/internal/core.ts +0 -3273
- package/src/internal/data.ts +0 -36
- package/src/internal/dataSource.ts +0 -327
- package/src/internal/dateTime.ts +0 -1277
- package/src/internal/defaultServices/console.ts +0 -100
- package/src/internal/defaultServices.ts +0 -163
- package/src/internal/deferred.ts +0 -46
- package/src/internal/differ/chunkPatch.ts +0 -211
- package/src/internal/differ/contextPatch.ts +0 -232
- package/src/internal/differ/hashMapPatch.ts +0 -220
- package/src/internal/differ/hashSetPatch.ts +0 -176
- package/src/internal/differ/orPatch.ts +0 -311
- package/src/internal/differ/readonlyArrayPatch.ts +0 -210
- package/src/internal/differ.ts +0 -200
- package/src/internal/doNotation.ts +0 -80
- package/src/internal/effect/circular.ts +0 -905
- package/src/internal/effectable.ts +0 -131
- package/src/internal/either.ts +0 -110
- package/src/internal/encoding/base64.ts +0 -286
- package/src/internal/encoding/base64Url.ts +0 -29
- package/src/internal/encoding/common.ts +0 -51
- package/src/internal/encoding/hex.ts +0 -315
- package/src/internal/errors.ts +0 -7
- package/src/internal/executionPlan.ts +0 -114
- package/src/internal/executionStrategy.ts +0 -74
- package/src/internal/fiber.ts +0 -388
- package/src/internal/fiberId.ts +0 -267
- package/src/internal/fiberMessage.ts +0 -82
- package/src/internal/fiberRefs/patch.ts +0 -144
- package/src/internal/fiberRefs.ts +0 -297
- package/src/internal/fiberRuntime.ts +0 -3915
- package/src/internal/fiberScope.ts +0 -71
- package/src/internal/fiberStatus.ts +0 -119
- package/src/internal/groupBy.ts +0 -530
- package/src/internal/hashMap/array.ts +0 -49
- package/src/internal/hashMap/bitwise.ts +0 -32
- package/src/internal/hashMap/config.ts +0 -14
- package/src/internal/hashMap/keySet.ts +0 -8
- package/src/internal/hashMap/node.ts +0 -391
- package/src/internal/hashMap.ts +0 -586
- package/src/internal/hashSet.ts +0 -323
- package/src/internal/keyedPool.ts +0 -244
- package/src/internal/layer/circular.ts +0 -228
- package/src/internal/layer.ts +0 -1487
- package/src/internal/logSpan.ts +0 -20
- package/src/internal/logger-circular.ts +0 -24
- package/src/internal/logger.ts +0 -485
- package/src/internal/mailbox.ts +0 -561
- package/src/internal/managedRuntime/circular.ts +0 -6
- package/src/internal/managedRuntime.ts +0 -134
- package/src/internal/matcher.ts +0 -652
- package/src/internal/metric/boundaries.ts +0 -75
- package/src/internal/metric/hook.ts +0 -483
- package/src/internal/metric/key.ts +0 -167
- package/src/internal/metric/keyType.ts +0 -238
- package/src/internal/metric/label.ts +0 -41
- package/src/internal/metric/pair.ts +0 -48
- package/src/internal/metric/polling.ts +0 -149
- package/src/internal/metric/registry.ts +0 -187
- package/src/internal/metric/state.ts +0 -290
- package/src/internal/metric.ts +0 -577
- package/src/internal/opCodes/cause.ts +0 -35
- package/src/internal/opCodes/channel.ts +0 -83
- package/src/internal/opCodes/channelChildExecutorDecision.ts +0 -17
- package/src/internal/opCodes/channelMergeDecision.ts +0 -11
- package/src/internal/opCodes/channelMergeState.ts +0 -17
- package/src/internal/opCodes/channelMergeStrategy.ts +0 -11
- package/src/internal/opCodes/channelState.ts +0 -23
- package/src/internal/opCodes/channelUpstreamPullRequest.ts +0 -11
- package/src/internal/opCodes/channelUpstreamPullStrategy.ts +0 -11
- package/src/internal/opCodes/config.ts +0 -65
- package/src/internal/opCodes/configError.ts +0 -35
- package/src/internal/opCodes/continuation.ts +0 -11
- package/src/internal/opCodes/deferred.ts +0 -11
- package/src/internal/opCodes/effect.ts +0 -89
- package/src/internal/opCodes/layer.ts +0 -59
- package/src/internal/opCodes/streamHaltStrategy.ts +0 -23
- package/src/internal/option.ts +0 -80
- package/src/internal/pool.ts +0 -432
- package/src/internal/pubsub.ts +0 -1762
- package/src/internal/query.ts +0 -204
- package/src/internal/queue.ts +0 -766
- package/src/internal/random.ts +0 -161
- package/src/internal/rateLimiter.ts +0 -93
- package/src/internal/rcMap.ts +0 -285
- package/src/internal/rcRef.ts +0 -192
- package/src/internal/redBlackTree/iterator.ts +0 -200
- package/src/internal/redBlackTree/node.ts +0 -68
- package/src/internal/redBlackTree.ts +0 -1245
- package/src/internal/redacted.ts +0 -73
- package/src/internal/ref.ts +0 -171
- package/src/internal/reloadable.ts +0 -140
- package/src/internal/request.ts +0 -177
- package/src/internal/resource.ts +0 -76
- package/src/internal/ringBuffer.ts +0 -68
- package/src/internal/runtime.ts +0 -558
- package/src/internal/runtimeFlags.ts +0 -188
- package/src/internal/runtimeFlagsPatch.ts +0 -103
- package/src/internal/schedule/decision.ts +0 -47
- package/src/internal/schedule/interval.ts +0 -101
- package/src/internal/schedule/intervals.ts +0 -180
- package/src/internal/schedule.ts +0 -2199
- package/src/internal/schema/errors.ts +0 -191
- package/src/internal/schema/schemaId.ts +0 -106
- package/src/internal/schema/util.ts +0 -50
- package/src/internal/scopedCache.ts +0 -644
- package/src/internal/scopedRef.ts +0 -118
- package/src/internal/secret.ts +0 -89
- package/src/internal/singleShotGen.ts +0 -35
- package/src/internal/sink.ts +0 -2120
- package/src/internal/stack.ts +0 -10
- package/src/internal/stm/core.ts +0 -817
- package/src/internal/stm/entry.ts +0 -59
- package/src/internal/stm/journal.ts +0 -123
- package/src/internal/stm/opCodes/stm.ts +0 -71
- package/src/internal/stm/opCodes/stmState.ts +0 -17
- package/src/internal/stm/opCodes/strategy.ts +0 -17
- package/src/internal/stm/opCodes/tExit.ts +0 -29
- package/src/internal/stm/opCodes/tryCommit.ts +0 -11
- package/src/internal/stm/stm.ts +0 -1453
- package/src/internal/stm/stmState.ts +0 -136
- package/src/internal/stm/tArray.ts +0 -550
- package/src/internal/stm/tDeferred.ts +0 -81
- package/src/internal/stm/tExit.ts +0 -190
- package/src/internal/stm/tMap.ts +0 -824
- package/src/internal/stm/tPriorityQueue.ts +0 -267
- package/src/internal/stm/tPubSub.ts +0 -551
- package/src/internal/stm/tQueue.ts +0 -393
- package/src/internal/stm/tRandom.ts +0 -140
- package/src/internal/stm/tReentrantLock.ts +0 -352
- package/src/internal/stm/tRef.ts +0 -195
- package/src/internal/stm/tSemaphore.ts +0 -113
- package/src/internal/stm/tSet.ts +0 -259
- package/src/internal/stm/tSubscriptionRef.ts +0 -286
- package/src/internal/stm/tryCommit.ts +0 -34
- package/src/internal/stm/txnId.ts +0 -14
- package/src/internal/stm/versioned.ts +0 -4
- package/src/internal/stream/debounceState.ts +0 -57
- package/src/internal/stream/emit.ts +0 -123
- package/src/internal/stream/haltStrategy.ts +0 -94
- package/src/internal/stream/handoff.ts +0 -187
- package/src/internal/stream/handoffSignal.ts +0 -59
- package/src/internal/stream/pull.ts +0 -34
- package/src/internal/stream/sinkEndReason.ts +0 -30
- package/src/internal/stream/zipAllState.ts +0 -88
- package/src/internal/stream/zipChunksState.ts +0 -56
- package/src/internal/stream.ts +0 -8801
- package/src/internal/string-utils.ts +0 -107
- package/src/internal/subscriptionRef.ts +0 -138
- package/src/internal/supervisor/patch.ts +0 -190
- package/src/internal/supervisor.ts +0 -303
- package/src/internal/synchronizedRef.ts +0 -114
- package/src/internal/take.ts +0 -199
- package/src/internal/testing/sleep.ts +0 -27
- package/src/internal/testing/suspendedWarningData.ts +0 -85
- package/src/internal/testing/warningData.ts +0 -94
- package/src/internal/tracer.ts +0 -293
- package/src/internal/trie.ts +0 -722
- package/src/internal/version.ts +0 -7
package/src/ExecutionPlan.ts
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 3.16.0
|
|
3
|
-
* @experimental
|
|
4
|
-
*/
|
|
5
|
-
import type { NonEmptyReadonlyArray } from "./Array.js"
|
|
6
|
-
import type * as Context from "./Context.js"
|
|
7
|
-
import * as Effect from "./Effect.js"
|
|
8
|
-
import * as internal from "./internal/executionPlan.js"
|
|
9
|
-
import * as Layer from "./Layer.js"
|
|
10
|
-
import type { Pipeable } from "./Pipeable.js"
|
|
11
|
-
import { pipeArguments } from "./Pipeable.js"
|
|
12
|
-
import type * as Schedule from "./Schedule.js"
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @since 3.16.0
|
|
16
|
-
* @category Symbols
|
|
17
|
-
* @experimental
|
|
18
|
-
*/
|
|
19
|
-
export const TypeId: unique symbol = internal.TypeId
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @since 3.16.0
|
|
23
|
-
* @category Symbols
|
|
24
|
-
* @experimental
|
|
25
|
-
*/
|
|
26
|
-
export type TypeId = typeof TypeId
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @since 3.16.0
|
|
30
|
-
* @category Guards
|
|
31
|
-
* @experimental
|
|
32
|
-
*/
|
|
33
|
-
export const isExecutionPlan: (u: unknown) => u is ExecutionPlan<any> = internal.isExecutionPlan
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* A `ExecutionPlan` can be used with `Effect.withExecutionPlan` or `Stream.withExecutionPlan`, allowing you to provide different resources for each step of execution until the effect succeeds or the plan is exhausted.
|
|
37
|
-
*
|
|
38
|
-
* ```ts
|
|
39
|
-
* import type { LanguageModel } from "@effect/ai"
|
|
40
|
-
* import type { Layer } from "effect"
|
|
41
|
-
* import { Effect, ExecutionPlan, Schedule } from "effect"
|
|
42
|
-
*
|
|
43
|
-
* declare const layerBad: Layer.Layer<LanguageModel.LanguageModel>
|
|
44
|
-
* declare const layerGood: Layer.Layer<LanguageModel.LanguageModel>
|
|
45
|
-
*
|
|
46
|
-
* const ThePlan = ExecutionPlan.make(
|
|
47
|
-
* {
|
|
48
|
-
* // First try with the bad layer 2 times with a 3 second delay between attempts
|
|
49
|
-
* provide: layerBad,
|
|
50
|
-
* attempts: 2,
|
|
51
|
-
* schedule: Schedule.spaced(3000)
|
|
52
|
-
* },
|
|
53
|
-
* // Then try with the bad layer 3 times with a 1 second delay between attempts
|
|
54
|
-
* {
|
|
55
|
-
* provide: layerBad,
|
|
56
|
-
* attempts: 3,
|
|
57
|
-
* schedule: Schedule.spaced(1000)
|
|
58
|
-
* },
|
|
59
|
-
* // Finally try with the good layer.
|
|
60
|
-
* //
|
|
61
|
-
* // If `attempts` is omitted, the plan will only attempt once, unless a schedule is provided.
|
|
62
|
-
* {
|
|
63
|
-
* provide: layerGood
|
|
64
|
-
* }
|
|
65
|
-
* )
|
|
66
|
-
*
|
|
67
|
-
* declare const effect: Effect.Effect<
|
|
68
|
-
* void,
|
|
69
|
-
* never,
|
|
70
|
-
* LanguageModel.LanguageModel
|
|
71
|
-
* >
|
|
72
|
-
* const withPlan: Effect.Effect<void> = Effect.withExecutionPlan(effect, ThePlan)
|
|
73
|
-
* ```
|
|
74
|
-
*
|
|
75
|
-
* @since 3.16.0
|
|
76
|
-
* @category Models
|
|
77
|
-
* @experimental
|
|
78
|
-
*/
|
|
79
|
-
export interface ExecutionPlan<
|
|
80
|
-
Types extends {
|
|
81
|
-
provides: any
|
|
82
|
-
input: any
|
|
83
|
-
error: any
|
|
84
|
-
requirements: any
|
|
85
|
-
}
|
|
86
|
-
> extends Pipeable {
|
|
87
|
-
readonly [TypeId]: TypeId
|
|
88
|
-
readonly steps: NonEmptyReadonlyArray<{
|
|
89
|
-
readonly provide:
|
|
90
|
-
| Context.Context<Types["provides"]>
|
|
91
|
-
| Layer.Layer<Types["provides"], Types["error"], Types["requirements"]>
|
|
92
|
-
readonly attempts?: number | undefined
|
|
93
|
-
readonly while?:
|
|
94
|
-
| ((input: Types["input"]) => Effect.Effect<boolean, Types["error"], Types["requirements"]>)
|
|
95
|
-
| undefined
|
|
96
|
-
readonly schedule?: Schedule.Schedule<any, Types["input"], Types["requirements"]> | undefined
|
|
97
|
-
}>
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Returns an equivalent `ExecutionPlan` with the requirements satisfied,
|
|
101
|
-
* using the current context.
|
|
102
|
-
*/
|
|
103
|
-
readonly withRequirements: Effect.Effect<
|
|
104
|
-
ExecutionPlan<{
|
|
105
|
-
provides: Types["provides"]
|
|
106
|
-
input: Types["input"]
|
|
107
|
-
error: Types["error"]
|
|
108
|
-
requirements: never
|
|
109
|
-
}>,
|
|
110
|
-
never,
|
|
111
|
-
Types["requirements"]
|
|
112
|
-
>
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* @since 3.16.0
|
|
117
|
-
* @experimental
|
|
118
|
-
*/
|
|
119
|
-
export type TypesBase = {
|
|
120
|
-
provides: any
|
|
121
|
-
input: any
|
|
122
|
-
error: any
|
|
123
|
-
requirements: any
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Create an `ExecutionPlan`, which can be used with `Effect.withExecutionPlan` or `Stream.withExecutionPlan`, allowing you to provide different resources for each step of execution until the effect succeeds or the plan is exhausted.
|
|
128
|
-
*
|
|
129
|
-
* ```ts
|
|
130
|
-
* import type { LanguageModel } from "@effect/ai"
|
|
131
|
-
* import type { Layer } from "effect"
|
|
132
|
-
* import { Effect, ExecutionPlan, Schedule } from "effect"
|
|
133
|
-
*
|
|
134
|
-
* declare const layerBad: Layer.Layer<LanguageModel.LanguageModel>
|
|
135
|
-
* declare const layerGood: Layer.Layer<LanguageModel.LanguageModel>
|
|
136
|
-
*
|
|
137
|
-
* const ThePlan = ExecutionPlan.make(
|
|
138
|
-
* {
|
|
139
|
-
* // First try with the bad layer 2 times with a 3 second delay between attempts
|
|
140
|
-
* provide: layerBad,
|
|
141
|
-
* attempts: 2,
|
|
142
|
-
* schedule: Schedule.spaced(3000)
|
|
143
|
-
* },
|
|
144
|
-
* // Then try with the bad layer 3 times with a 1 second delay between attempts
|
|
145
|
-
* {
|
|
146
|
-
* provide: layerBad,
|
|
147
|
-
* attempts: 3,
|
|
148
|
-
* schedule: Schedule.spaced(1000)
|
|
149
|
-
* },
|
|
150
|
-
* // Finally try with the good layer.
|
|
151
|
-
* //
|
|
152
|
-
* // If `attempts` is omitted, the plan will only attempt once, unless a schedule is provided.
|
|
153
|
-
* {
|
|
154
|
-
* provide: layerGood
|
|
155
|
-
* }
|
|
156
|
-
* )
|
|
157
|
-
*
|
|
158
|
-
* declare const effect: Effect.Effect<
|
|
159
|
-
* void,
|
|
160
|
-
* never,
|
|
161
|
-
* LanguageModel.LanguageModel
|
|
162
|
-
* >
|
|
163
|
-
* const withPlan: Effect.Effect<void> = Effect.withExecutionPlan(effect, ThePlan)
|
|
164
|
-
* ```
|
|
165
|
-
*
|
|
166
|
-
* @since 3.16.0
|
|
167
|
-
* @category Constructors
|
|
168
|
-
* @experimental
|
|
169
|
-
*/
|
|
170
|
-
export const make = <const Steps extends NonEmptyReadonlyArray<make.Step>>(
|
|
171
|
-
...steps: Steps & { [K in keyof Steps]: make.Step }
|
|
172
|
-
): ExecutionPlan<{
|
|
173
|
-
provides: make.StepProvides<Steps>
|
|
174
|
-
input: make.StepInput<Steps>
|
|
175
|
-
error:
|
|
176
|
-
| (Steps[number]["provide"] extends Context.Context<infer _P> | Layer.Layer<infer _P, infer E, infer _R> ? E
|
|
177
|
-
: never)
|
|
178
|
-
| (Steps[number]["while"] extends (input: infer _I) => Effect.Effect<infer _A, infer _E, infer _R> ? _E : never)
|
|
179
|
-
requirements:
|
|
180
|
-
| (Steps[number]["provide"] extends Layer.Layer<infer _A, infer _E, infer R> ? R : never)
|
|
181
|
-
| (Steps[number]["while"] extends (input: infer _I) => Effect.Effect<infer _A, infer _E, infer R> ? R : never)
|
|
182
|
-
| (Steps[number]["schedule"] extends Schedule.Schedule<infer _O, infer _I, infer R> ? R : never)
|
|
183
|
-
}> =>
|
|
184
|
-
makeProto(steps.map((options, i) => {
|
|
185
|
-
if (options.attempts && options.attempts < 1) {
|
|
186
|
-
throw new Error(`ExecutionPlan.make: step[${i}].attempts must be greater than 0`)
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
schedule: options.schedule,
|
|
190
|
-
attempts: options.attempts,
|
|
191
|
-
while: options.while
|
|
192
|
-
? (input: any) =>
|
|
193
|
-
Effect.suspend(() => {
|
|
194
|
-
const result = options.while!(input)
|
|
195
|
-
return typeof result === "boolean" ? Effect.succeed(result) : result
|
|
196
|
-
})
|
|
197
|
-
: undefined,
|
|
198
|
-
provide: options.provide
|
|
199
|
-
}
|
|
200
|
-
}) as any)
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* @since 3.16.0
|
|
204
|
-
* @experimental
|
|
205
|
-
*/
|
|
206
|
-
export declare namespace make {
|
|
207
|
-
/**
|
|
208
|
-
* @since 3.16.0
|
|
209
|
-
* @experimental
|
|
210
|
-
*/
|
|
211
|
-
export type Step = {
|
|
212
|
-
readonly provide: Context.Context<any> | Context.Context<never> | Layer.Layer.Any
|
|
213
|
-
readonly attempts?: number | undefined
|
|
214
|
-
readonly while?: ((input: any) => boolean | Effect.Effect<boolean, any, any>) | undefined
|
|
215
|
-
readonly schedule?: Schedule.Schedule<any, any, any> | undefined
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* @since 3.16.1
|
|
220
|
-
* @experimental
|
|
221
|
-
*/
|
|
222
|
-
export type StepProvides<Steps extends ReadonlyArray<any>, Out = unknown> = Steps extends
|
|
223
|
-
readonly [infer Step, ...infer Rest] ? StepProvides<
|
|
224
|
-
Rest,
|
|
225
|
-
& Out
|
|
226
|
-
& (
|
|
227
|
-
(Step extends { readonly provide: Context.Context<infer P> | Layer.Layer<infer P, infer _E, infer _R> } ? P
|
|
228
|
-
: unknown)
|
|
229
|
-
)
|
|
230
|
-
> :
|
|
231
|
-
Out
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* @since 3.16.1
|
|
235
|
-
* @experimental
|
|
236
|
-
*/
|
|
237
|
-
export type PlanProvides<Plans extends ReadonlyArray<any>, Out = unknown> = Plans extends
|
|
238
|
-
readonly [infer Plan, ...infer Rest] ?
|
|
239
|
-
PlanProvides<Rest, Out & (Plan extends ExecutionPlan<infer T> ? T["provides"] : unknown)> :
|
|
240
|
-
Out
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* @since 3.16.0
|
|
244
|
-
* @experimental
|
|
245
|
-
*/
|
|
246
|
-
export type StepInput<Steps extends ReadonlyArray<any>, Out = unknown> = Steps extends
|
|
247
|
-
readonly [infer Step, ...infer Rest] ? StepInput<
|
|
248
|
-
Rest,
|
|
249
|
-
& Out
|
|
250
|
-
& (
|
|
251
|
-
& (Step extends { readonly while: (input: infer I) => infer _ } ? I : unknown)
|
|
252
|
-
& (Step extends { readonly schedule: Schedule.Schedule<infer _O, infer I, infer _R> } ? I : unknown)
|
|
253
|
-
)
|
|
254
|
-
> :
|
|
255
|
-
Out
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* @since 3.16.0
|
|
259
|
-
* @experimental
|
|
260
|
-
*/
|
|
261
|
-
export type PlanInput<Plans extends ReadonlyArray<any>, Out = unknown> = Plans extends
|
|
262
|
-
readonly [infer Plan, ...infer Rest] ?
|
|
263
|
-
PlanInput<Rest, Out & (Plan extends ExecutionPlan<infer T> ? T["input"] : unknown)> :
|
|
264
|
-
Out
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
const Proto: Omit<ExecutionPlan<any>, "steps"> = {
|
|
268
|
-
[TypeId]: TypeId,
|
|
269
|
-
get withRequirements() {
|
|
270
|
-
const self = this as any as ExecutionPlan<any>
|
|
271
|
-
return Effect.contextWith((context: Context.Context<any>) =>
|
|
272
|
-
makeProto(self.steps.map((step) => ({
|
|
273
|
-
...step,
|
|
274
|
-
provide: Layer.isLayer(step.provide) ? Layer.provide(step.provide, Layer.succeedContext(context)) : step.provide
|
|
275
|
-
})) as any)
|
|
276
|
-
)
|
|
277
|
-
},
|
|
278
|
-
pipe() {
|
|
279
|
-
return pipeArguments(this, arguments)
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
const makeProto = <Provides, In, PlanE, PlanR>(
|
|
284
|
-
steps: ExecutionPlan<{
|
|
285
|
-
provides: Provides
|
|
286
|
-
input: In
|
|
287
|
-
error: PlanE
|
|
288
|
-
requirements: PlanR
|
|
289
|
-
}>["steps"]
|
|
290
|
-
) => {
|
|
291
|
-
const self = Object.create(Proto)
|
|
292
|
-
self.steps = steps
|
|
293
|
-
return self
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* @since 3.16.0
|
|
298
|
-
* @category Combining
|
|
299
|
-
* @experimental
|
|
300
|
-
*/
|
|
301
|
-
export const merge = <const Plans extends NonEmptyReadonlyArray<ExecutionPlan<any>>>(
|
|
302
|
-
...plans: Plans
|
|
303
|
-
): ExecutionPlan<{
|
|
304
|
-
provides: make.PlanProvides<Plans>
|
|
305
|
-
input: make.PlanInput<Plans>
|
|
306
|
-
error: Plans[number] extends ExecutionPlan<infer T> ? T["error"] : never
|
|
307
|
-
requirements: Plans[number] extends ExecutionPlan<infer T> ? T["requirements"] : never
|
|
308
|
-
}> => makeProto(plans.flatMap((plan) => plan.steps) as any)
|
package/src/ExecutionStrategy.ts
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 2.0.0
|
|
3
|
-
*/
|
|
4
|
-
import type { LazyArg } from "./Function.js"
|
|
5
|
-
import * as internal from "./internal/executionStrategy.js"
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Describes a strategy for evaluating multiple effects, potentially in
|
|
9
|
-
* parallel.
|
|
10
|
-
*
|
|
11
|
-
* There are 3 possible execution strategies: `Sequential`, `Parallel`,
|
|
12
|
-
* `ParallelN`.
|
|
13
|
-
*
|
|
14
|
-
* @since 2.0.0
|
|
15
|
-
* @category models
|
|
16
|
-
*/
|
|
17
|
-
export type ExecutionStrategy = Sequential | Parallel | ParallelN
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Execute effects sequentially.
|
|
21
|
-
*
|
|
22
|
-
* @since 2.0.0
|
|
23
|
-
* @category models
|
|
24
|
-
*/
|
|
25
|
-
export interface Sequential {
|
|
26
|
-
readonly _tag: "Sequential"
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Execute effects in parallel.
|
|
31
|
-
*
|
|
32
|
-
* @since 2.0.0
|
|
33
|
-
* @category models
|
|
34
|
-
*/
|
|
35
|
-
export interface Parallel {
|
|
36
|
-
readonly _tag: "Parallel"
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Execute effects in parallel, up to the specified number of concurrent fibers.
|
|
41
|
-
*
|
|
42
|
-
* @since 2.0.0
|
|
43
|
-
* @category models
|
|
44
|
-
*/
|
|
45
|
-
export interface ParallelN {
|
|
46
|
-
readonly _tag: "ParallelN"
|
|
47
|
-
readonly parallelism: number
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Execute effects sequentially.
|
|
52
|
-
*
|
|
53
|
-
* @since 2.0.0
|
|
54
|
-
* @category constructors
|
|
55
|
-
*/
|
|
56
|
-
export const sequential: ExecutionStrategy = internal.sequential
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Execute effects in parallel.
|
|
60
|
-
*
|
|
61
|
-
* @since 2.0.0
|
|
62
|
-
* @category constructors
|
|
63
|
-
*/
|
|
64
|
-
export const parallel: ExecutionStrategy = internal.parallel
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Execute effects in parallel, up to the specified number of concurrent fibers.
|
|
68
|
-
*
|
|
69
|
-
* @since 2.0.0
|
|
70
|
-
* @category constructors
|
|
71
|
-
*/
|
|
72
|
-
export const parallelN: (parallelism: number) => ExecutionStrategy = internal.parallelN
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Returns `true` if the specified `ExecutionStrategy` is an instance of
|
|
76
|
-
* `Sequential`, `false` otherwise.
|
|
77
|
-
*
|
|
78
|
-
* @since 2.0.0
|
|
79
|
-
* @category refinements
|
|
80
|
-
*/
|
|
81
|
-
export const isSequential: (self: ExecutionStrategy) => self is Sequential = internal.isSequential
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Returns `true` if the specified `ExecutionStrategy` is an instance of
|
|
85
|
-
* `Sequential`, `false` otherwise.
|
|
86
|
-
*
|
|
87
|
-
* @since 2.0.0
|
|
88
|
-
* @category refinements
|
|
89
|
-
*/
|
|
90
|
-
export const isParallel: (self: ExecutionStrategy) => self is Parallel = internal.isParallel
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Returns `true` if the specified `ExecutionStrategy` is an instance of
|
|
94
|
-
* `Sequential`, `false` otherwise.
|
|
95
|
-
*
|
|
96
|
-
* @since 2.0.0
|
|
97
|
-
* @category refinements
|
|
98
|
-
*/
|
|
99
|
-
export const isParallelN: (self: ExecutionStrategy) => self is ParallelN = internal.isParallelN
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Folds over the specified `ExecutionStrategy` using the provided case
|
|
103
|
-
* functions.
|
|
104
|
-
*
|
|
105
|
-
* @since 2.0.0
|
|
106
|
-
* @category folding
|
|
107
|
-
*/
|
|
108
|
-
export const match: {
|
|
109
|
-
<A>(options: {
|
|
110
|
-
readonly onSequential: LazyArg<A>
|
|
111
|
-
readonly onParallel: LazyArg<A>
|
|
112
|
-
readonly onParallelN: (n: number) => A
|
|
113
|
-
}): (self: ExecutionStrategy) => A
|
|
114
|
-
<A>(self: ExecutionStrategy, options: {
|
|
115
|
-
readonly onSequential: LazyArg<A>
|
|
116
|
-
readonly onParallel: LazyArg<A>
|
|
117
|
-
readonly onParallelN: (n: number) => A
|
|
118
|
-
}): A
|
|
119
|
-
} = internal.match
|